Bahwa Anda memiliki multicast melalui kotak Linux Anda dengan menggunakan perutean unicast adalah kombinasi dari beberapa keadaan yang beruntung.
Perutean multicast tidak sama dengan perutean unicast. Perutean unicast didasarkan pada wajah bahwa lalu lintas dikirim ke satu alamat, tetapi lalu lintas multicast dikirim ke alamat grup yang mewakili host yang ingin berlangganan ke grup multicast.
Host menggunakan IGMP untuk memberi tahu router multicast bahwa mereka ingin bergabung dengan grup multicast, dan router multicast kemudian akan mulai mengirim lalu lintas multicast untuk grup tersebut ke jaringan host yang memintanya.
Switch modern akan menggunakan IGMP Snooping untuk menentukan port switch mana yang hostnya meminta untuk bergabung dengan grup multicast tertentu, dan switch hanya akan mengirimkan lalu lintas untuk grup multicast tersebut ke port switch tempat host meminta untuk bergabung dengan grup multicast.
Linux, dengan sendirinya, tidak mendukung perutean multicast, dan Anda perlu menambahkan sesuatu ke perangkat Linux untuk mendukung perutean multicast. Lihat diagram di bawah ini:
Saat sumber multicast mulai mengirim lalu lintas multicast untuk grup multicast, switch mungkin belum melihat permintaan IGMP untuk bergabung dengan grup multicast, jadi lalu lintas multicast untuk grup tersebut tidak akan kemana-mana.
Saat salah satu PC di sakelar yang sama ingin bergabung dengan grup multicast, ia akan mengirim pesan Gabung IGMP, dan sakelar akan mengintipnya dan mengirim lalu lintas multicast ke port tempat PC yang meminta terhubung.
Jika PC di sisi lain router Linux ingin bergabung dengan grup multicast, itu kurang beruntung karena lalu lintas multicast tidak mengalir ke sisi Router Linux tersebut. Router Linux bahkan belum bergabung dengan grup multicast, sehingga switch tidak pernah mengirimkan lalu lintas multicast ke grup tersebut.
Saat Anda menjalankan perutean multicast pada perute, perute akan merespons permintaan IGMP host, dan sakelar akan mengetahui bahwa itu adalah perute multicast, dan akan mengirimkan lalu lintas multicast ke port sakelar tempat perute multicast terhubung. Sederhananya, router tidak akan mengirim lalu lintas multicast ke antarmuka lain kecuali ada penerima aktif di antarmuka lain (ini tergantung pada versi multicast, misalnya, PIM-DM akan mulai mengirim, tetapi mundur jika tidak ada permintaan IGMP yang terlihat) .
Dengan perutean multicast diaktifkan di router, PC yang terhubung ke antarmuka lain akan mengirim pesan Gabung IGMP, dan Router Linux akan mulai mengirimkan lalu lintas multicast untuk grup yang diminta ke antarmuka. Sakelar akan mengintip permintaan, dan ia akan mengirimkan lalu lintas multicast ke port sakelar tempat PC yang meminta untuk bergabung dengan grup multicast terhubung.
Ini menjadi lebih rumit jika Anda perlu merutekan melalui beberapa router. IGMP digunakan antara host dan router multicast lokal. PIM (atau beberapa protokol perutean multicast lainnya) digunakan di antara router multicast.
Ini semua mencegah lalu lintas multicast pergi ke tempat yang tidak diinginkan.
Ada add-on untuk Linux untuk membantunya menangani perutean IGMP dan multicast dengan benar.