Dua tapak boleh saling mencapai dengan sempurna melalui unicast dan masih berkelakuan seolah-olah salah satunya tidak melihat pengumuman penemuan pencetak, strim IPTV atau denyutan jantung kelompok. Ini bukan terowong yang rosak; ini perbezaan antara destinasi dan kumpulan. Penghantaran multicast memerlukan model keahlian, keadaan penghantaran di sepanjang laluan dan antara muka yang bersedia membawa trafik, dan tiada satu pun datang daripada laluan unicast. Berjalan dari kumpulan aplikasi ke satu penerima yang berfungsi ialah laluan terpendek kepada jawapan.

Mulakan dengan kumpulan dan aplikasi

Tanya alamat kumpulan mana yang digunakan oleh aplikasi dan untuk apa trafik itu. Protokol penemuan yang mengumumkan perkhidmatan, suapan penstriman dan paket helo protokol penghalaan ialah tiga masalah berbeza dengan tiga jawapan berbeza yang boleh diterima. Alamat kumpulan itu sendiri memberitahu skop: alamat dalam blok kawalan rangkaian setempat tidak bertujuan dihantar keluar pautan oleh penghalaan biasa, dan aplikasi yang menggunakannya biasanya menganggap satu domain siaran. Suapan penstriman pada kumpulan berskop global ialah reka bentuk berbeza daripada protokol penemuan yang menjangka setiap peranti mendengar setiap pertanyaan, dan hanya yang kedua mengambil berat tentang saiz domain siaran.

Tentukan sama ada keperluan itu perkhidmatan atau mekanisme penemuan, kerana kedua-dua jawapan itu berbeza kos mengikut satu tertib magnitud. Satu meminta alamat yang tidak berubah; satu lagi meminta domain siaran yang diperluas merentas pautan kawasan luas berserta segala yang menyusul daripadanya.

Penemuan setempat sepatutnya berhenti

Multicast DNS seperti yang diterangkan dalam RFC 6762 direka di sekeliling satu pautan: pertanyaan pergi ke kumpulan tetap, jawapan dihantar ke kumpulan yang sama, dan protokol bergantung pada setiap peserta mendengar semua orang. Penghala tidak menghantar trafik itu secara lalai, dan itu keputusan reka bentuk, bukan kecuaian. Sempadan itu wujud supaya peranti di satu bangunan tidak boleh mengumumkan dirinya secara sambil lewa ke bangunan lain. Terowong yang kelihatan membaiki penemuan dengan membawa kumpulan ke merata-rata telah membuang sempadan itu untuk setiap aplikasi, bukan hanya untuk yang memerlukan bantuan.

Pengulang dan pemantul wujud, dan ia perkhidmatan sebenar dengan akibat sebenar: setiap nama yang diumumkan di satu tapak menjadi kelihatan di tapak lain, termasuk nama peranti yang mengenal pasti orang atau peralatan. Jika keperluan sebenar ialah agar perkhidmatan tertentu boleh ditemui, rekod perkhidmatan yang diterbitkan dalam DNS biasanya perubahan yang lebih kecil, dan ia mendedahkan satu nama dan bukannya aliran nama.

Tiga perkara yang diperlukan multicast berpenghalaan

Multicast berpenghalaan memerlukan tiga perkara yang berfungsi bersama: penerima yang menyertai kumpulan, penghala yang mengekalkan keadaan penghantaran untuknya, dan terowong yang menganggap alamat kumpulan sebagai trafik yang perlu dibawa. Terowong dengan dasar yang hanya menyenaraikan subnet unicast akan menggugurkan trafik kumpulan di sempadan penyulitan, dan itulah sebabnya gejala pertama selalunya senyap dan bukan ralat. Antara muka berasaskan laluan seperti terowong GRE atau VTI membawa apa yang dihantar oleh jadual penghalaan ke dalamnya, yang menjadikan kumpulan boleh dicapai sebaik sahaja keadaan multicast wujud.

Kebolehcapaian sumber ialah separuh kedua. Protokol penghalaan multicast seperti PIM membina pokok pengagihan dengan memeriksa bahawa laluan balik ke sumber ialah yang dijangka, jadi laluan unicast yang menunjuk ke tempat lain memecahkan pokok itu walaupun keahlian kumpulan betul. Memasang laluan untuk penerima tidak melakukan apa-apa untuk pemeriksaan itu, dan inilah kesilapan yang menghasilkan ping yang berfungsi dan strim yang gagal. Sahkan dahulu laluan balik sumber, kemudian tambah keahlian, dan hanya selepas itu lihat aplikasi.

ip maddr show dev tun0
ip mroute show
ss -gnu | grep 239.255.0.10
ip route get 10.20.5.20

Dua baris pertama menunjukkan kepada apa hos menyertai dan apa yang dihantar oleh kernel, baris ketiga menunjukkan keahlian aplikasi itu sendiri, dan yang terakhir laluan unicast yang akan digunakan oleh pemeriksaan laluan songsang. Membacanya bersama membezakan aplikasi yang tidak pernah menyertai daripada rangkaian yang tidak pernah menghantar.

Buktikan dengan satu sumber dan satu penerima

Sebelum menyentuh konfigurasi, sahkan bahawa aplikasi berfungsi pada satu segmen. Jika ia gagal secara setempat, penghalaan multicast bukan masalahnya dan tiada perubahan terowong akan membantu. Kemudian ulangi dengan satu penerima merentas terowong dan perhatikan paket di kedua-dua belah sempadan penyulitan.

tcpdump -ni tun0 -c 10 'ip multicast'
tcpdump -ni eth0 -c 10 'ip multicast and host 239.255.0.10'

Paket yang kelihatan di dalam terowong tetapi tiada di luarnya menunjuk kepada enkapsulasi atau dasar; paket yang kelihatan di kedua-dua belah tanpa kemajuan aplikasi menunjuk kepada keahlian penerima atau pengikatan aplikasi. Kekalkan tangkapan pendek dan ditapis, kerana tangkapan multicast yang luas pada segmen sibuk kebanyakannya hingar.

Pilih alamat perkhidmatan apabila hanya perkhidmatan diperlukan

Penemuan wujud untuk mencari sesuatu yang bergerak. Pelayan dengan nama stabil tidak memerlukan penemuan, dan alamat yang didokumenkan dalam DNS persendirian menjawab soalan sebenar pengguna tanpa memperluas domain siaran merentas pautan kawasan luas. Penaakulan yang sama terpakai kepada pencetak, perkakas dan perkhidmatan web dalaman. Nama dalam DNS boleh dicapai dari setiap tapak yang memerlukannya sambil tidak mengumumkan apa-apa kepada tapak yang tidak memerlukannya, dan ia terus berfungsi apabila peranti diganti dengan yang beralamat berbeza.

Apabila sesuatu protokol benar-benar memerlukan multicast, hadkannya kepada kumpulan dan tapak yang memerlukannya, dokumenkan sebabnya, dan semak semula keputusan itu apabila aplikasi berubah. Memperluas penemuan ke merata-rata mudah dilakukan sekali, dan sukar ditarik balik selepas setahun peranti yang bergantung padanya secara senyap.

Artikel berkaitan