這是一個命令列實用程式和庫,旨在測試網路上的多播流量並對網路和設備進行壓力測試。
該實用程式能夠完全破壞未可靠配置的 L2 環境,因此請務必小心。
mcast 是一個命令列實用程序,能夠發送和接收多播或通用 UDP 流量。它還允許模擬 IGMP 加入、離開和查詢。
注意:目前在 Mac OSX 10.13.3 上使用 Go 版本 1.10 進行開發和測試。該程式應該可以在任何 Posix / Unix 上運行,但目前不能完全在 Windows 上運行。某些功能可能需要超級使用者權限。
該儲存庫是 GPLv3 下的授權。有關詳細信息,請參閱 LICENSE.md。
版權所有 (C) 2018 威爾史密斯
該程式是自由軟體:您可以根據自由軟體基金會發布的 GNU 通用公共授權(授權的第 3 版)或(由您選擇)任何更高版本的條款重新散佈和/或修改它。
分發此程序的目的是希望它有用,但不提供任何保證;甚至沒有適銷性或特定用途適用性的默示保證。有關更多詳細信息,請參閱 GNU 通用公共許可證。
您應該隨該程式一起收到 GNU 通用公共授權的副本。如果沒有,請參閱 http://www.gnu.org/licenses/。
你必須已經安裝了 go。如果您不知道,或不確定,請造訪 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]
可以透過指定您想要幫助的命令來顯示特定子命令的幫助。
將向指定的 IP 位址發送 UDP 流量。將以指定的時間間隔連續循環發送,直到程式終止或發送的訊息達到最大數量。
mcast send [-options...]
選項有:
如果啟用該選項,將偵聽指定 IP 位址上的 UDP 流量,並列印收到的 UDP 訊息的文字內容。
mcast receive [-options...]
選項有:
尚未實施
尚未實施
尚未實施
目前儲存庫中存在一些基本的程式碼測試,但需要更廣泛的覆蓋範圍。
您可以使用以下命令之一手動執行測試:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
儲存庫的根目錄中有一個 Jenkins 文件,用於自動執行測試、針對 3 個作業系統進行交叉編譯以及建立 zip 工件。儲存庫中有一個 git-hook 運行此提交,它將將該提交標記為通過或失敗。
計劃是在3個作業系統上測試程式碼,並測試jenkins叢集中發送和接收組播的互動。
還有一個計劃,當對 master 進行新的標記提交並通過測試時,自動建立帶有二進位檔案的新版本。
目前僅執行程式碼測試。它們透過官方的 golang docker 容器在 Linux 環境中執行。二進位檔案儲存在 Jenkins 中,必須手動發布。
我編寫這個程式是為了測試網頁設計中的多播功能,因為我發現缺乏用於測試多播的現有工具。我需要一個小型便攜式二進位文件,可以將其複製到任何主機以進行快速測試。這對於虛擬實驗室環境特別有用。
我還需要測試並能夠觀察無線網路中的流量行為,以了解供應商配置選項,從而為無線環境提供最強大的多播配置。到目前為止,透過該程式的正確選項集,如果無線基礎架構配置不正確或供應商不提供配置或控制多播行為的能力,則單一主機可能會對整個無線網段造成 DoS。
我藉此機會使用這個程式來了解有關多播的更多資訊並在 Golang 中進行一些編碼。
我在開發程式時使用 https://github.com/troglobit/mtools 套件進行程式的初步測試。該工具集也是 mcast 的靈感來源。我選擇不擴展 mtools,因為我想要輕鬆的並發性、輕鬆的交叉編譯和跨平台二進位。
以下是我使用或用於測試多播功能的其他一些工具