Portování vysílaných aplikací na IPv6

  • 31.5.2018
  • 2 minuty čtení
    • s
    • v
    • m

Tato část popisuje osvědčené postupy pro přenesení aplikace pro vysílání IPv6 na možnosti vícesměrového vysílání, které jsou k dispozici v systému Windows Sockets.

Porovnání IPv4 s IPv6

Nejvýznamnějším aspektem při přípravě portování aplikace pro vysílání IPv4 na IPv6 je následující: IPv6 nemá implementovaný koncept vysílání. Místo toho IPv6 používá multicast.

Multicast pro IPv6 může emulovat tradiční možnosti vysílání, které se vyskytují v IPv4. Nastavení volby zásuvky IPV6_ADD_MEMBERSHIP s adresou IPv6 nastavenou na adresu všech uzlů linkového oboru (FF02::1) je ekvivalentní vysílání na vysílacích adresách IPv4 pomocí volby zásuvky SO_BROADCAST. Tato adresa se někdy nazývá multicastová skupina všech uzlů. Pro aplikace, které jednoduše chtějí emulaci vysílání pro IPv6, je tento přístup provozně ekvivalentní. Jeden pozoruhodný rozdíl u protokolu IPv6 však spočívá v tom, že multicasty na adrese multicastové skupiny all-nodes nejsou ve výchozím nastavení přijímány (vysílání IPv4 jsou ve výchozím nastavení přijímána). Programátoři aplikací musí použít volbu socketu IPV6_ADD_MEMBERSHIP, aby umožnili příjem vícesměrového vysílání z libovolného zdroje, včetně adresy skupiny vícesměrového vysílání all-nodes.

Poznámka

V protokolu IPv6 je výběr rozhraní specifikován ve struktuře argumentů předávaných volbě socketu vícesměrového vysílání nebo IOCTL.

Pro bohatší, robustnější, selektivnější a lépe spravovatelné přenosy na více hostitelů by však vývojáři aplikací měli zvážit přechod na model vícesměrového vysílání.

Přechod na vícesměrové vysílání

Pomocí vícesměrového vysílání mohou programátoři aplikací selektivně vybrat konkrétní dvojici zdroj/skupina, což umožňuje model selektivního příjmu. Multicast Listener Discovery (MLD) v protokolu IPv6 a verze 3 protokolu IGMPv3 (Internet Group Management Protocol) v protokolu IPv4 podporují programování multicastingu. Kromě toho vícesměrové vysílání umožňuje aplikacím specificky blokovat (nebo odblokovat) odesílatele v rámci skupiny, což dále chrání aplikace před nepoctivými vysílači. Tato schopnost je k dispozici jak pro IPv4 (vyžaduje IGMPv3), tak pro IPv6 (vyžaduje MLDv2).

Pro programátory aplikací používající vícesměrové vysílání existují dva základní scénáře: ti, kteří přenášejí vysílací (nebo vícesměrové) aplikace IPv4 na IPv6, a ti, kteří vytvářejí nové vícesměrové aplikace IPv6.

Při portování stávajících aplikací existují dvě možnosti přechodu na vícesměrové vysílání IPv6: použití voleb soketu a použití IOCTL.

  • Použití voleb soketu je přístup založený na změnách, který umožňuje vývojářům měnit vlastnosti soketu podle potřeby (například blokovat nebo odblokovat odesílatele, přidat nový zdroj a podobně). Tento přístup je intuitivnější a je doporučován. Další informace o přístupu k programování vícesměrového vysílání založeném na změnách naleznete v části MLD a IGMP pomocí soketů systému Windows.
  • Použití knihoven IOCTL je přístup založený na konečném stavu, protože umožňuje vývojářům poskytnout plně nakonfigurovaný stav soketu, včetně seznamů zahrnutí a vyloučení, pomocí jednoho volání. Další informace o přístupu založeném na konečném stavu naleznete v části Programování vícesměrového vysílání založené na konečném stavu.

Pro ty, kteří vytvářejí nové aplikace vícesměrového vysílání IPv6, je doporučeným postupem použití voleb soketu, nikoliv použití IOCTL.

Existuje ještě jeden přístup k vytváření aplikací vícesměrového vysílání s protokolem IPv6, který zahrnuje použití funkce WSAJoinLeaf. Přestože použití funkce WSAJoinLeaf není doporučeným postupem, existují situace, které mohou její použití diktovat. Jednou z nevýhod použití možností soketu v systému Windows Server 2003 a starších je například to, že jsou specifické pro verzi IP. V těchto starších verzích systému Windows musí být pro IPv6 a IPv4 jiné možnosti soketů. V systému Windows Vista a novějších jsou podporovány nové možnosti soketů, které lze použít jak pro IPv4, tak pro IPv6. Funkce WSAJoinLeaf naproti tomu není závislá na verzi IP a protokolu, a proto může být užitečným přístupem při vytváření aplikace, která musí pracovat s více verzemi IP v systému Windows Server 2003 a starších. Použití funkce WSAJoinLeaf může být vhodnější v určitých situacích, kdy je vyžadována agnosticita protokolu a verze IP.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.