Passa al contenuto principale

4.1. Extensions to the IP Module Interface (Estensioni all'interfaccia del modulo IP)

L'interfaccia del modulo IP verso i protocolli di livello superiore è estesa per consentire ai protocolli di richiedere la ricezione di tutti i datagrammi inviati a un particolare canale.

Subscribe ( socket, source-address, group-address, interface )

Unsubscribe ( socket, source-address, group-address, interface )

dove:

socket è come definito nella Sezione 2,

e, parafrasando [IGMPv3],

interface è l'identificatore locale di un'interfaccia di rete, usato per identificare l'interfaccia su cui deve essere abilitata o disabilitata la ricezione del canale identificato dalla coppia (source-address, group-address). Un valore speciale può essere usato per indicare l'interfaccia "predefinita". Se si desidera ricevere lo stesso canale su più interfacce, Subscribe deve essere invocato separatamente per ciascuna interfaccia.

Quella descritta sopra è un'interfaccia funzionale strettamente astratta: la funzionalità può essere fornita in modo specifico all'implementazione. Ad esempio, su un host che supporta la Multicast Source Filtering Application Programming Interface [MSFAPI], le interfacce Subscribe e Unsubscribe possono essere supportate tramite tale API. Quando un host è configurato per conoscere l'intervallo di indirizzi SSM, indipendentemente dal fatto che il meccanismo di configurazione sia manuale o basato su protocollo, il sistema operativo dell'host DOVREBBE restituire un errore a un'applicazione che effettua una richiesta non specifica della sorgente per ricevere multicast inviato a un indirizzo di destinazione SSM.

Gli host che non supportano queste interfacce del modulo IP, ad esempio host che supportano solo ASM, e i relativi protocolli sottostanti non possono aspettarsi di ricevere in modo affidabile traffico inviato su un canale SSM. Come descritto nella Sezione 5.2, i router non impostano stato di inoltro SSM né inoltrano datagrammi in risposta a richieste di join ASM.

Le implementazioni diffuse dell'interfaccia di ricezione dei pacchetti IP, ad esempio la chiamata di sistema recvfrom() in BSD Unix, non consentono a un ricevitore di determinare l'indirizzo di destinazione a cui è stato inviato un datagramma. Su un host con una tale implementazione, l'indirizzo di destinazione di un datagramma non può essere dedotto quando il socket che riceve il datagramma è iscritto a più canali. I sistemi operativi host DOVREBBERO fornire un modo per determinare sia l'indirizzo sorgente sia l'indirizzo di destinazione a cui è stato inviato un datagramma. Ad esempio, il sistema operativo Linux fornisce la destinazione di un pacchetto come parte della risposta alla chiamata di sistema recvmsg(). Finché questa capacità non è disponibile, le applicazioni possono essere costrette a usare meccanismi di livello superiore per identificare il canale a cui è stato inviato un datagramma.