Ini adalah utilitas baris perintah dan pustaka yang ditulis untuk menguji arus lalu lintas multicast di jaringan, dan menguji stres jaringan dan perangkat.
Utilitas ini mampu sepenuhnya mengganggu lingkungan L2 yang tidak dikonfigurasi dengan kuat, jadi sangat disarankan untuk berhati-hati.
mcast adalah utilitas baris perintah yang mampu mengirim dan menerima lalu lintas multicast atau UDP generik. Ini juga memungkinkan simulasi penggabungan, keluar, dan kueri IGMP.
CATATAN: Saat ini dikembangkan dan diuji pada Mac OSX 10.13.3 dengan Go versi 1.10. Program ini seharusnya dapat bekerja pada Posix/Unix apa pun, tetapi saat ini tidak sepenuhnya berfungsi pada Windows. Hak pengguna super mungkin diperlukan untuk beberapa fungsi.
Repositori ini adalah lisensi di bawah GPLv3. Lihat LISENSI.md untuk detailnya.
Hak Cipta (C) 2018 Will Smith
Program ini adalah perangkat lunak bebas: Anda dapat mendistribusikan ulang dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU sebagaimana diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi tersebut, atau (sesuai pilihan Anda) versi yang lebih baru.
Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA JAMINAN APA PUN; bahkan tanpa jaminan tersirat mengenai KELAYAKAN UNTUK DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya.
Anda seharusnya sudah menerima salinan Lisensi Publik Umum GNU bersama dengan program ini. Jika tidak, lihat http://www.gnu.org/licenses/.
Anda harus sudah menginstal. Jika tidak, atau tidak yakin, kunjungi https://golang.org/doc/install. Anda juga harus menjalankan OS dan versi Go yang didukung dan diuji.
Instal program dengan
go install github.com/individuwill/mcast
Atau sebagai alternatif, unduh biner bawaan dari rilis v0.1
Jalankan receiver di satu komputer
mcast receive
Jalankan pengirim di komputer lain
mcast send
Perutean multicast harus diaktifkan antar host
mcast digerakkan oleh sub-perintah. Anda memanggil mcast seperti:
mcast subcommand [-options...]
Daftar subperintahnya adalah:
Setiap subperintah kemudian memiliki serangkaian opsi untuk mengontrol perilakunya. Banyak perintah yang berbagi opsi serupa, dan sintaks opsinya sama ketika hal ini terjadi. Di bawah ini adalah penjelasan rinci tentang setiap sub-perintah dan opsi terkaitnya.
Tampilkan bantuan dan pesan penggunaan untuk aplikasi
mcast help [command]
Bantuan untuk subperintah tertentu dapat ditampilkan dengan menentukan perintah yang Anda inginkan bantuannya.
Akan mengirimkan lalu lintas UDP ke alamat IP yang ditentukan. Akan dikirim terus menerus dalam satu putaran pada interval tertentu hingga program dihentikan atau jumlah pesan maksimal terkirim.
mcast send [-options...]
Pilihannya adalah:
Akan mendengarkan lalu lintas UDP pada alamat IP yang ditentukan dan mencetak konten teks dari pesan UDP yang diterima jika opsi ini diaktifkan.
mcast receive [-options...]
Pilihannya adalah:
Belum dilaksanakan
Belum dilaksanakan
Belum dilaksanakan
Beberapa pengujian kode dasar saat ini ada di repositori, tetapi diperlukan cakupan yang lebih luas.
Anda dapat menjalankan pengujian secara manual dengan salah satu perintah berikut:
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
Ada file Jenkins di root repositori untuk menjalankan pengujian secara otomatis, kompilasi silang untuk 3 sistem operasi, dan membuat artefak zip. Ada git-hook di repo yang menjalankan komit ini, dan itu akan menandai komit sebagai lulus atau gagal.
Rencananya adalah menguji kode tersebut pada 3 sistem operasi, dan menguji interaksi antara pengiriman dan penerimaan multicast di cluster jenkins.
Ada juga rencana untuk secara otomatis membuat rilis baru dengan binari ketika komitmen baru yang diberi tag ke master dibuat dan lulus pengujian.
Saat ini hanya pengujian kode yang dijalankan. Mereka dieksekusi di lingkungan linux melalui wadah buruh pelabuhan golang resmi. Biner disimpan di Jenkins, dan rilis manual harus dilakukan.
Saya menulis program ini untuk menguji fungsionalitas multicast dalam desain jaringan saya karena saya menemukan alat yang ada untuk menguji multicast kurang. Saya memerlukan biner portabel kecil yang dapat saya salin ke host mana pun untuk pengujian cepat. Hal ini sangat berguna untuk lingkungan laboratorium virtual.
Saya juga memiliki kebutuhan untuk menguji dan mengamati perilaku lalu lintas di jaringan nirkabel untuk memahami opsi konfigurasi vendor yang mengarah pada konfigurasi multicast paling kuat untuk lingkungan nirkabel. Sampai saat ini, dengan rangkaian pilihan yang tepat pada program ini, satu host dapat menyebabkan DoS ke seluruh segmen nirkabel jika infrastruktur nirkabel tidak dikonfigurasi dengan benar atau vendor tidak menyediakan kemampuan untuk mengkonfigurasi atau mengontrol perilaku multicast.
Saya mengambil kesempatan menggunakan program ini untuk mempelajari lebih lanjut tentang multicast dan melakukan beberapa coding di Golang.
Saya menggunakan suite https://github.com/troglobit/mtools untuk pengujian awal program sambil mengembangkannya. Perangkat itu juga menjadi inspirasi bagi mcast. Saya memilih untuk tidak memperluas mtools karena saya menginginkan konkurensi yang mudah dan kompilasi silang yang mudah serta binari lintas platform.
Berikut beberapa alat lain yang saya gunakan atau gunakan untuk menguji fungsionalitas multicast