Porteren van Broadcast-toepassingen naar IPv6

  • 05/31/2018
  • 2 minuten om te lezen
    • s
    • v
    • m

Dit gedeelte beschrijft de beste werkwijzen voor het overzetten van een IPv6 broadcast-toepassing naar de multicast-mogelijkheden die beschikbaar zijn met Windows Sockets.

Vergelijking van IPv4 met IPv6

De belangrijkste overweging bij de voorbereiding van het overzetten van een IPv4-zendtoepassing naar IPv6 is deze: IPv6 heeft geen geïmplementeerd concept van broadcast. In plaats daarvan gebruikt IPv6 multicast.

Multicast voor IPv6 kan de traditionele broadcast-mogelijkheden van IPv4 emuleren. Het instellen van de IPV6_ADD_MEMBERSHIP socket-optie met het IPv6-adres ingesteld op het link-local scope all nodes adres (FF02::1) is gelijkwaardig aan het broadcasten op IPv4 broadcast-adressen met behulp van de SO_BROADCAST socket-optie. Dit adres wordt soms de all-nodes multicast groep genoemd. Voor toepassingen die eenvoudigweg broadcast emulatie voor IPv6 willen, is die aanpak operationeel gelijkwaardig. Een opmerkelijk verschil met IPv6 is echter dat multicasts op het all-nodes multicast groepsadres niet standaard worden ontvangen (IPv4 broadcasts worden standaard wel ontvangen). Applicatieprogrammeurs moeten de IPV6_ADD_MEMBERSHIP socket-optie gebruiken om multicast-ontvangst van elke bron mogelijk te maken, inclusief het all-nodes multicast-groepsadres.

Note

In IPv6 wordt de interfaceselectie gespecificeerd in de argumentstructuur die wordt doorgegeven aan de multicast socket-optie of IOCTL.

Maar voor rijkere, robuustere, selectievere en beter beheersbare transmissies naar meerdere hosts zouden applicatie-ontwikkelaars moeten overwegen over te stappen op een multicast-model.

Overstappen op Multicast

Met multicast kunnen applicatie-programmeurs selectief een bepaald bron/groep-paar kiezen, waardoor een selectief ontvangstmodel mogelijk wordt. Multicast Listener Discovery (MLD) op IPv6 en versie 3 van het Internet Group Management Protocol (IGMPv3) op IPv4 ondersteunen de multicast-programmering. Bovendien stelt multicast toepassingen in staat om specifiek afzenders binnen een groep te blokkeren (of deblokkeren), waardoor toepassingen verder worden beschermd tegen malafide omroepen. Deze mogelijkheid is beschikbaar voor zowel IPv4 (vereist IGMPv3) als IPv6 (vereist MLDv2).

Er zijn twee primaire scenario’s voor applicatieprogrammeurs die multicast gebruiken: diegenen die IPv4 broadcast (of multicast) applicaties overzetten naar IPv6, en diegenen die nieuwe IPv6 multicast applicaties creëren.

Voor het overzetten van bestaande toepassingen zijn er twee opties om over te gaan op IPv6 multicast: het gebruik van socket-opties en het gebruik van IOCTL’s.

  • Het gebruik van socket-opties is een op verandering gebaseerde aanpak, die ontwikkelaars in staat stelt om de socket-eigenschappen naar behoefte te wijzigen (zoals het blokkeren of deblokkeren van een afzender, het toevoegen van een nieuwe bron, enzovoort). Deze aanpak is meer intuïtief en de aanbevolen aanpak. Voor meer informatie over de op verandering gebaseerde aanpak van multicast programmeren, zie MLD en IGMP met behulp van Windows Sockets.
  • Het gebruik van IOCTL’s is een op final-state gebaseerde aanpak, omdat het ontwikkelaars in staat stelt om een volledig geconfigureerde socket toestand, inclusief inclusie en exclusie lijsten, met één oproep te leveren. Voor meer informatie over de op final-state gebaseerde aanpak, zie Final-State-Based Multicast Programming.

Voor degenen die nieuwe IPv6 multicast-toepassingen maken, wordt aanbevolen om socket-opties te gebruiken in plaats van IOCTL’s.

Er is nog een andere aanpak voor het maken van multicast-toepassingen met IPv6, en dat houdt in dat de WSAJoinLeaf-functie moet worden gebruikt. Hoewel het gebruik van de WSAJoinLeaf-functie niet wordt aanbevolen, zijn er situaties die het gebruik ervan kunnen voorschrijven. Een nadeel van het gebruik van socketopties op Windows Server 2003 en eerder is bijvoorbeeld dat ze IP-versiespecifiek zijn. Op deze oudere versies van Windows moeten verschillende socketopties zijn voor IPv6 en IPv4. Op Windows Vista en later worden nieuwe socket opties ondersteund die zowel met IPv4 als IPv6 gebruikt kunnen worden. De WSAJoinLeaf functie daarentegen is IP versie en protocol agnostisch, en daarom kan het een nuttige aanpak zijn voor het bouwen van een applicatie die moet werken met meerdere IP versies op Windows Server 2003 en eerder. Het gebruik van de WSAJoinLeaf functie kan meer geschikt zijn in bepaalde situaties waar protocol en IP-versie agnosticisme is vereist.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.