นี่คือยูทิลิตี้บรรทัดคำสั่งและไลบรารีที่เขียนขึ้นเพื่อทดสอบโฟลว์การรับส่งข้อมูลแบบหลายผู้รับบนเครือข่าย และทดสอบความเครียดกับเครือข่ายและอุปกรณ์
ยูทิลิตี้นี้สามารถรบกวนสภาพแวดล้อม L2 ที่ไม่ได้กำหนดค่าไว้อย่างสมบูรณ์ ดังนั้นจึงขอใช้ความระมัดระวัง
mcast เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่สามารถส่งและรับทราฟฟิก UDP แบบหลายผู้รับหรือทั่วไป นอกจากนี้ยังอนุญาตให้จำลองการรวม IGMP ออก และการสืบค้น
หมายเหตุ: ปัจจุบันพัฒนาและทดสอบบน Mac OSX 10.13.3 พร้อม Go เวอร์ชัน 1.10 โปรแกรมควรทำงานได้บน Posix / Unix ใด ๆ แต่ขณะนี้ยังทำงานได้ไม่เต็มที่บน Windows อาจต้องใช้สิทธิ์ Superuser สำหรับฟังก์ชันบางอย่าง
พื้นที่เก็บข้อมูลนี้เป็นใบอนุญาตภายใต้ GPLv3 ดู LICENSE.md สำหรับรายละเอียด
ลิขสิทธิ์ (C) 2018 วิล สมิธ
โปรแกรมนี้เป็นซอฟต์แวร์เสรี: คุณสามารถแจกจ่ายซ้ำและ/หรือแก้ไขได้ภายใต้เงื่อนไขของ GNU General Public License ตามที่เผยแพร่โดย Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาต หรือ (ตามตัวเลือกของคุณ) เวอร์ชันที่ใหม่กว่า
โปรแกรมนี้เผยแพร่ด้วยความหวังว่าจะมีประโยชน์ แต่ไม่มีการรับประกันใดๆ โดยไม่มีการรับประกันโดยนัยถึงความสามารถในการซื้อขายหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะทั่วไปของ GNU สำหรับรายละเอียดเพิ่มเติม
คุณควรได้รับสำเนาของ GNU General Public License พร้อมกับโปรแกรมนี้ ถ้าไม่ โปรดดู http://www.gnu.org/licenses/
คุณต้องไปติดตั้งแล้ว หากคุณไม่หรือไม่แน่ใจ โปรดไปที่ https://golang.org/doc/install คุณต้องใช้งานระบบปฏิบัติการและเวอร์ชัน Go ที่ได้รับการสนับสนุนและทดสอบแล้ว
ติดตั้งโปรแกรมด้วย
go install github.com/individuwill/mcast
หรือดาวน์โหลดไบนารีที่สร้างไว้ล่วงหน้าจากรีลีส v0.1
เรียกใช้เครื่องรับบนคอมพิวเตอร์เครื่องหนึ่ง
mcast receive
เรียกใช้ผู้ส่งบนคอมพิวเตอร์เครื่องอื่น
mcast send
ต้องเปิดใช้งานการกำหนดเส้นทางแบบหลายผู้รับระหว่างโฮสต์
mcast ถูกขับเคลื่อนโดยคำสั่งย่อย คุณเรียกใช้ mcast เช่น:
mcast subcommand [-options...]
รายการคำสั่งย่อยคือ:
แต่ละคำสั่งย่อยจะมีชุดของตัวเลือกเพื่อควบคุมลักษณะการทำงานของคำสั่งย่อย คำสั่งหลายคำสั่งใช้ตัวเลือกที่คล้ายกัน และไวยากรณ์ของตัวเลือกจะเหมือนกันในกรณีนี้ ด้านล่างนี้คือคำอธิบายโดยละเอียดของแต่ละคำสั่งย่อยและตัวเลือกที่เกี่ยวข้อง
แสดงวิธีใช้และข้อความการใช้งานสำหรับแอปพลิเคชัน
mcast help [command]
วิธีใช้สำหรับคำสั่งย่อยเฉพาะสามารถแสดงได้โดยการระบุคำสั่งที่คุณต้องการความช่วยเหลือ
จะส่งการรับส่งข้อมูล UDP ไปยังที่อยู่ IP ที่ระบุ จะส่งอย่างต่อเนื่องแบบวนซ้ำตามช่วงเวลาที่กำหนดจนกว่าโปรแกรมจะยุติหรือส่งข้อความได้สูงสุด
mcast send [-options...]
ตัวเลือกคือ:
จะรับฟังการรับส่งข้อมูล UDP บนที่อยู่ IP ที่ระบุและพิมพ์เนื้อหาข้อความของข้อความ UDP ที่ได้รับหากเปิดใช้งานตัวเลือกนี้
mcast receive [-options...]
ตัวเลือกคือ:
ยังไม่ได้ดำเนินการ
ยังไม่ได้ดำเนินการ
ยังไม่ได้ดำเนินการ
ขณะนี้การทดสอบโค้ดพื้นฐานบางอย่างมีอยู่ในพื้นที่เก็บข้อมูล แต่จำเป็นต้องมีการครอบคลุมที่กว้างขวางกว่านี้มาก
คุณสามารถดำเนินการทดสอบด้วยตนเองโดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
มีไฟล์ Jenkins อยู่ในรูทของพื้นที่เก็บข้อมูลสำหรับการรันการทดสอบโดยอัตโนมัติ การคอมไพล์ข้ามระบบปฏิบัติการ 3 ระบบ และสร้างไฟล์ zip มี git-hook ใน repo ที่รัน on-commit นี้ และจะทำเครื่องหมายว่า commit นั้นผ่านหรือล้มเหลว
แผนคือการทดสอบโค้ดบนระบบปฏิบัติการทั้ง 3 และทดสอบปฏิสัมพันธ์ระหว่างการส่งและรับมัลติคาสต์ในเจนกินส์คลัสเตอร์
นอกจากนี้ยังมีแผนที่จะสร้างรีลีสใหม่พร้อมไบนารีโดยอัตโนมัติ เมื่อมีการแท็กคอมมิตไปยังมาสเตอร์ใหม่และผ่านการทดสอบ
ขณะนี้ดำเนินการทดสอบโค้ดเท่านั้น พวกมันถูกดำเนินการในสภาพแวดล้อม Linux ผ่านทางคอนเทนเนอร์นักเทียบท่า golang อย่างเป็นทางการ ไบนารีถูกเก็บไว้ใน Jenkins และต้องทำการเผยแพร่ด้วยตนเอง
ฉันเขียนโปรแกรมนี้เพื่อทดสอบฟังก์ชันการทำงานของมัลติคาสต์ในการออกแบบเครือข่ายของฉัน เนื่องจากฉันพบว่าไม่มีเครื่องมือสำหรับการทดสอบมัลติคาสต์ที่มีอยู่ ฉันต้องการไบนารีแบบพกพาขนาดเล็กที่สามารถคัดลอกไปยังโฮสต์ใดก็ได้เพื่อการทดสอบอย่างรวดเร็ว สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับสภาพแวดล้อมห้องปฏิบัติการเสมือน
ฉันยังจำเป็นต้องทดสอบและสามารถสังเกตพฤติกรรมการรับส่งข้อมูลในเครือข่ายไร้สายเพื่อทำความเข้าใจตัวเลือกการกำหนดค่าของผู้จำหน่ายที่นำไปสู่การกำหนดค่ามัลติคาสต์ที่แข็งแกร่งที่สุดสำหรับสภาพแวดล้อมไร้สาย ถึงจุดนี้ ด้วยชุดตัวเลือกที่ถูกต้องของโปรแกรมนี้ โฮสต์เดียวอาจทำให้เกิด DoS ไปยังเซกเมนต์ไร้สายทั้งหมด หากโครงสร้างพื้นฐานไร้สายไม่ได้รับการกำหนดค่าอย่างเหมาะสม หรือผู้จำหน่ายไม่มีความสามารถในการกำหนดค่าหรือควบคุมพฤติกรรมแบบมัลติคาสต์
ฉันใช้โอกาสนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับมัลติคาสต์และเขียนโค้ดใน Golang
ฉันใช้ชุด https://github.com/troglobit/mtools สำหรับการทดสอบโปรแกรมเบื้องต้นในขณะที่พัฒนา ชุดเครื่องมือนั้นเป็นแรงบันดาลใจสำหรับ mcast เช่นกัน ฉันเลือกที่จะไม่ขยาย mtools เนื่องจากฉันต้องการการทำงานพร้อมกันที่ง่ายดายและการคอมไพล์ข้ามแพลตฟอร์มที่ง่ายดายและไบนารีข้ามแพลตฟอร์ม
ต่อไปนี้เป็นเครื่องมืออื่นๆ ที่ฉันใช้หรือใช้สำหรับทดสอบฟังก์ชันการทำงานแบบหลายผู้รับ