IP Multicast

Il multicast IP rientra nella categoria del piano dati non radice e del piano di controllo non radice. Tutte le applicazioni svolgono un ruolo foglia. Attualmente, la maggior parte delle implementazioni multicast IP usa un set di opzioni socket proposte da Steve Deering alla Internet Engineering Task Force (IETF). Sono quindi disponibili cinque operazioni:

  • IP_MULTICAST_TTL: imposta l'ambito della durata e dei controlli di una sessione multicast.
  • IP_MULTICAST_IF: determina l'interfaccia da usare per il multicast.
  • IP_ADD_MEMBERSHI : aggiunge una sessione multicast specificata.
  • IP_DROP_MEMBERSHIP: elimina una sessione multicast.
  • IP_MULTICAST_LOOP: controlla il loopback del traffico multicast.

L'impostazione della durata per un socket ip-multicast viene mappata direttamente all'uso del codice di comando SIO_MULTICAST_SCOPE per WSAIoctl.

Il metodo per determinare l'interfaccia IP da usare per il multicast consiste nell'usare un'opzione socket specifica per TCP/IP, come descritto nell'allegato Windows Sockets 2 Protocol-Specific. Le tre operazioni rimanenti sono trattate bene con la semantica Windows Sockets 2 descritta qui.

L'applicazione aprirà i socket con flag c_leaf/d_leaf in WSASocket. Userebbe WSAJoinLeaf per aggiungersi a un gruppo multicast nell'interfaccia predefinita designata per le operazioni multicast. Se il flag in WSAJoinLeaf indica che questo socket è solo un mittente, l'operazione di join è essenzialmente un no-op e non è necessario inviare messaggi IGMP. In caso contrario, un pacchetto IGMP viene inviato al router per indicare gli interessi nella ricezione di pacchetti inviati all'indirizzo multicast specificato. Poiché l'applicazione ha creato c_leaf/d_leaf socket speciali usati solo per l'esecuzione di multicast, la funzione closesocket standard verrebbe usata per uscire dalla sessione multicast. Il codice di comando SIO_MULTIPOINT_LOOPBACK per WSAIoctl fornisce un meccanismo di controllo generico per determinare se i dati inviati su un socket d_leaf in uno schema multipoint non radice possono essere ricevuti anche sullo stesso socket.

Nota

La versione Winsock dell'opzione IP_MULTICAST_LOOP è semanticamente diversa dalla versione UNIX dell'opzione IP_MULTICAST_LOOP:

 

  • In Winsock l'opzione IP_MULTICAST_LOOP si applica solo al percorso di ricezione.
  • Nella versione UNIX l'opzione IP_MULTICAST_LOOP si applica al percorso di invio.

Ad esempio, le applicazioni ON e OFF (che sono più facili da tenere traccia di X e Y) si uniscono allo stesso gruppo nella stessa interfaccia; application ON imposta l'opzione IP_MULTICAST_LOOP attivata, l'applicazione OFF imposta l'opzione IP_MULTICAST_LOOP disattivata. Se ON e OFF sono applicazioni Winsock, OFF può inviare a ON, ma ON non può essere inviato a OFF. Al contrario, se ON e OFF sono applicazioni UNIX, ON può inviare a OFF, ma OFF non può inviare a ON.