Multicast

Multicast

Si dara' in questa sezione una breve spiegazione su cosa e' il multicast.

E' una tecnica usata su reti TCP/IP, nata dalla necessita' di trasmettere dati (in particolare flussi multimediali real time, ad esempio per videoconferenze o streaming video come nel nostro caso) a diversi destinatari in rete, ma non a tutti.

Il concetto che va a soddisfare e' paragonabile a quello che fa una TV o una Radio, in questo senso: l' utente tramite essa si sintonizza sul canale che gli interessa e riceve solo quello e non gli altri e la stessa operazione la puo' fare chiunque e' “connesso” (o meglio esposto) alle onde inviate dalle stazioni trasmittenti.

Per prima cosa va detto che rappresenta un' evoluzione del protocollo IP originale che prevedeva solo comunicazioni host-to-host o unicast, con l'eccezione dell' uso dell'indirizzo IP riservato per il broadcast (255.255.255.255) che se utilizzato fa si che i datagrammi con questo indirizzo siano accettati dal livello IP di tutti gli host e quindi vengano trasmessi ai livelli superiori; tali pacchetti pero' genererebbero un carico enorme per internet se pervenissero a tutti gli host, per cui sono bloccati dai routers e quindi la trasmissione in broadcasting e' possibile solo all' interno di una stessa LAN.

Per estendere il paradigma della connessione unicast dell' IP, la Internet Engineering Task Force (IETF), tramite la Request For Comment (RFC) numero 1112, ha provveduto a definire una estensione dello IP, lo IP multicast, che si basa sempre sul principio che per poter trasmettere e ricevere datagrammi in Internet, � necessario disporre di indirizzi IP.

Alla tradizionale trasmissione unicast sono stati assegnati gli indirizzi delle classi A, B e C.

Per la trasmissione broadcast � rimasto l' indirizzo IP 255.255.255.255.

Alla trasmissione multicast ,la RFC 1112 assegna gli indirizzi della classe D, dal 224.0.0.0 al 239.255.255.255.

Si riporta la struttura delle classi di indirizzi IP:

Bit -> 0                           31            Address Range:

+-+----------------------------+

|0|       Class A Address      |       0.0.0.0 - 127.255.255.255

+-+----------------------------+

+-+-+--------------------------+

|1 0|     Class B Address      |     128.0.0.0 - 191.255.255.255

+-+-+--------------------------+

+-+-+-+------------------------+

|1 1 0|   Class C Address      |     192.0.0.0 - 223.255.255.255

+-+-+-+------------------------+

+-+-+-+-+----------------------+

--- |1 1 1 0|  MULTICAST Address   |     224.0.0.0 - 239.255.255.255

|    +-+-+-+-+----------------------+

|    +-+-+-+-+-+--------------------+

|    |1 1 1 1 0|     Reserved       |     240.0.0.0 - 247.255.255.255

|    +-+-+-+-+-+--------------------+

|

|

V

CLASSE D

Si nota che a seconda della classe sono fissi i primi bit per cui sono separati gli indirizzi di diverse classi e sono di valore crescente al crescere della classe.

Per la classe D rimangono a disposizoine 28 bit (essendo un indirizzo IP di 32 bit), corrispondenti ad 260 milioni di indirizzi multicast, che garantiscono ampie possibilit� di sviluppo alla tecnica multicast.

Ma vediamo come funziona una trasmissione.

Per prima cosa va detto che il protocollo di trasporto compatibile con l' idea alla base del Multicast e' lo UDP.

Quando si usa un IP multicast, si fa riferimento ad un gruppo di host, non ad uno singolo come nell' unicast o a tutti come nel broadcast; un gruppo dinamico nel numero ed individui, non formato cioe' da un insieme statico di host.

Ne fanno parte tutti quelli che hanno richiesto di aggregarsi ad esso e in un qualsiasi momento essi hanno la possibilita' di abbandonare tale gruppo.

Nella RFC 1112 sono indicati tre livelli di implementazione dello IP multicast:

Livello 0: IP tradizionale (un host con tale implementazione non pu� trasmettere datagrammi con indirizzo multicast, n� riceverli);

Livello 1: IP multicast solo in trasmissione (un host pu� trasmettere datagrammi ad uno o pi� gruppi, ma non pu� riceverli);

Livello 2: IP multicast sia in trasmissione che in ricezione (un host pu� trasmettere datagrammi ad uno o pi� gruppi e pu� ricevere datagrammi da uno o pi� gruppi).

Trasmettere datagrammi con un indirizzo multicast implica l'aggregarsi al gruppo associato a quell'indirizzo multicast.

Per aggregarsi (fare il “join”) ad un certo gruppo in ricezione , lo host abiliter� il livello IP a ricevere i datagrammi con il relativo indirizzo multicast; la disabilitazione a tale ricezione implica l'abbandono del gruppo multicast.

Anche per il multicast esistono indirizzi riservati (dalla RFC 1112 e altre RFC):

�        224.0.0.0 non e' usato da alcun gruppo;

�        224.0.0.1 e' il gruppo formato da tutti gli host della LAN (se si fa un ping su questo indirizzo rispondono tutti gli host abilitati al multicast, in quanto tali host fanno il join a tale gruppo allo start-up di tutte le proprie interfacce con capacita' multicast);

�        224.0.0.2 e' il gruppo di tutti i routers;

�        224.0.0.4 e' il gruppo di tutti i DVMRP routers, 224.0.0.5 degli OSPF routers, 224.0.013 dei PIM routers, ecc.

�        in generale il range 224.0.0.0-224.0.0.255 e' riservato a utilizzi locali (amministrazione e manutenzione) e i datagrammi con queste destinazioni non sono mai inoltrati dai multicast routers; analogamente il range 239.0.0.0-239.255.255.255 e' stato riservato.

Un accenno va fatto sul Time-To-Live (TTL) per i pacchetti multicast poiche' assume per essi un valore importante: infatti il routing multicast IP usa il campo TTL dell' header dei datagrammi IP per decidere quanto lontano dallo host mittente un dato pacchetto deve essere inoltrato; il TTL di default per il multicast e' uno, che ha come effetto che i pacchetti multicast giungono solo agli host della rete locale. Ricordiamo che il TTL e' un numero di un byte che viene decrementato di una unit� ad ogni passaggio attraverso un router e che prevede il non inoltro quando raggiunge il valore zero.

Diamo un breve spazio infine alla descrizione della rete multicast: infatti se per la trasmissione su rete locale non servono particolari accorgimenti tecnici (sulle reti locali appartenenti allo standard IEEE 802.2 e' prevista la trasmissione multicast con mappatura da indirizzo IP a fisico in base alla RFC 1112), vi sono problemi quando i datagrammi ne escono; per questo la solita RFC 1112 prevede che l' instradamento sia affidato a routers speciali detti Multicast router (M-router), mentre i routers tradizionali ignorano i pacchetti multicast e si occupano delle trasmissioni unicast. Gli M-router usano protocolli di routing apposititi per il calcolo dell'instradamento multicast, tra cui PIM (Protocol Indipendent Multicast) che consente di trovare dinamicamente la via migliore con due modalit�: traffico denso (PIM-DM) e traffico sparso (PIM-SM); altri protocolli sono DVMRP e MOSPF.

Si ricorre inoltre ad un protocollo a livello IP , lo “Internet Group Management Protocol” (IGMP) che si affianca al tradizionale protocollo di controllo dell'unicast, lo “Internet Control Message Protocol” (ICMP); tiene aggiornato lo M-router sui gruppi multicast presenti sulla relativa rete locale, tramite delle interrogazioni frequenti (circa ogni minuto) da parte dello stesso M-router agli host sulla loro appartenenza a gruppi multicast.

Esse sono realizzate con un datagramma IGMP di interrogazione (“Membership Query Message”) con indirizzo 224.0.0.1 (che identifica tutti gli host della LAN) a cui ogni host risponde con un IGMP di risposta (“Membership Report”), che contiene i gruppi a cui lo host � associato in quel momento ed ha un indirizzo multicast qualsiasi e che quindi viene ricevuto dallo M-router. Gli host pero' inviano immediatamente un Report ogni qual volta effettuano un join ad un gruppo multicast non presente in LAN per aggiornare subito lo M-router.

Il protocollo e' ovviamente usato anche tra gli M-routers, la cui interconnessione (affidata di solito alla rete gia' esistente) crea una nuova rete logica, detta Multicast BackBone (M-Bone), una rete gia' abbondantemente costituita soprattutto negli Stati Uniti.

Ecco una breve elenco dei vantaggi e degli svantaggi del multicast (in parte deducibili da quanto gia' letto):

VANTAGGI

�        Raggiungimento di piu' destinatari con elasticita' nella gestione del numero di tali utenti (con il join nel gruppo corrispondente ad un dato indirizzo IP multicast);

�        Minor banda di un numero di connessione unicast per raggiungere lo stesso numero di host (di parecchio poiche' in unicast si avrebbe una copia degli stessi dati per ogni destinatario, con una crescita lineare mentre in multicast viaggia in rete un solo flusso dati);

�        Il software e l'hardware per la gestione del multicast e' ormai facilmente reperibile.

SVANTAGGI

�       Inoltro non garantito dei pacchetti (per meccanismo best-effort che in UDP implica arrivo fuori ordine e possibile perdita dei pacchetti);

�       La non presenza di congestion-avoidance (sempre a causa dell'uso dello UDP);

�       Duplicazione dei pacchetti (a causa della presenza di pi� path tra server e client e dei transitori per il calcolo dell'instradamento nel routing multicast).