RETI INTERNET MULTIMEDIALI Multicast MULTICAST Introduzione Multicasting Nuove applicazioni possono richiedere l’uso di collegamenti di tipo puntomultipunto audio e video streaming in broadcast giochi in rete (Quake), etc. Il multicasting può essere implementato direttamente dalla sorgente anche su una rete che supporta solo unicast Multicasting Nel caso in cui la rete supporti il multicast è possibile inviare un solo pacchetto. Ethernet supporta il Multicast In Internet, poiché un gruppo Multicast può estendersi su molte reti fisiche, è necessario che alcuni nodi della rete svolgano un ruolo attivo (router in rosso nella figura) Funzionalità richieste Definizione del gruppo di destinatari Indirizzamento Definizione dell’albero di routing Multicasting La trasmissione di pacchetti IP multicast da parte dei nodi sorgente è del tutto simile alla trasmissione dei pacchetti IP unicast Solo l’indirizzo cambia rispetto alla trasmissione unicast Il recapito dei pacchetti IP multicast invece è molto diverso rispetto ai pacchetti unicast Unicast: il protocollo di routing deve individuare solo un percorso verso una specifica destinazione (rete o host) Multicast: il protocollo deve individuare un’insieme di percorsi (possibilmente non disgiunti) per raggiungere tutti gli hosts che vogliono ricevere uno specifico flusso di informazioni Multicasting I dispositivi che si occupano dell’inoltro dei pacchetti multicast sono chiamati mrouter (Multicast Router) L’algoritmo che implementa la funzionalità dei multicast router è integrata in un normale router e deve essere abilitata Il kernel linux supporta il multicast routing ma deve essere configurato L’algoritmo di inoltro è diverso rispetto a quello utilizzato per pacchetti unicast Indirizzi Multicast Per identificare un gruppo di ricevitori non è efficiente usare l’insieme dei loro indirizzi IP IP definisce la classe di indirizzi D per applicazioni multicast (utilizzabili solo come indirizzi destinazione, non come sorgente) Formato indirizzo IP di classe D 1110 Group Identifier (28 bit) da 224.0.0.0 a 239.255.255.255 Esistono due tipologie di indirizzi multicast Indirizzi noti: per servizi su Internet (routing) Gruppi multicast transitori: rimossi quando non vi sono più membri associati al gruppo Indirizzi Multicast Alcuni indirizzi multicast hanno un significato particolare L'indirizzo 224.0.0.0 è riservato e non viene assegnato a nessun gruppo L’indirizzo 224.0.0.1 è assegnato permanentemente al gruppo composto da tutti i sistemi (router e host) L’indirizzo 224.0.0.2 è assegnato permanentemente al gruppo composto da tutti i router Gli indirizzi restanti fino a 224.0.0.255 sono limitati all’uso su una singola rete (il pacchetto non deve essere inoltrato dai router che lo ricevono) Non esiste l'indirizzo globale di tutti gli host connessi ad Internet Indirizzi Multicast Gli indirizzi IP multicast vengono trasformati in indirizzi multicast di livello data-link Si ottimizza il processo di ricezione, perché il multicast MAC è filtrato direttamente dall’hardware della scheda di rete Ethernet fornisce un meccanismo di trasmissione multicast Il bit meno significativo dell’ottetto più significativo è usato per distinguere indirizzi unicat (0) da indirizzi multicast (1) 01-5E-00-00-00-01 Indirizzi Multicast Per tradurre un indirizzo IP multicast in un indirizzo Ethernet multicast si copiano i 23 bit meno significativi dell’indirizzo IP nei 23 bit meno significativi dell’indirizzo Ethernet che inizia con 01-00-5E 1110 x27 x26 x25 x24 x23 01-00-5E x22 x21 x20 x19 … x2 x1 x0 0x22 x21 x20 x19 … x2 x1 x0 Problemi della traduzione: Lo spazio di indirizzamento IP dedicato al multicast è esteso su 28 bit Solo 23 dei 28 bit vengono utilizzati nella traduzione Più indirizzi IP possono essere tradotti nello stesso indirizzo IP. In particolare 25 indirizzi IP corrispondono allo stesso MAC multicast E’ necessario eseguire il filtering anche a livello IP Gruppi Il multicast si basa sul concetto di host group (RFC 1122) Ogni host può aderire a o lasciare un host group dinamicamente Ogni host group è identificato da un indirizzo di destinazione di classe D I pacchetti vengono creati con IP destinazione uguale a quello dell’host group Ogni router deve inoltrare i pacchttetti sulle reti a lui connesse se su una di queste esiste un host che è associato all’host group indicado nell’indirizzo destinazione Gruppi Esistono due tipologie di gruppi (associati alle rispettive tipologie di indirizzi multicast) Permanente: ad esso è associato un indirizzo di classe D ben noto e assegnato a priori • Esiste anche se non vi sono membri associati • Esempio: indirizzi multicast utilizzati da alcuni protocolli di routing (RIP o OSPF) per il loro funzionamento Temporaneo: ad esso è assegnato un indirizzo di classe D dinamicamente • Esiste solo finche vi sono membri associati al gruppo • Viene rilasciato nel momento in cui non vi sono più membri Gruppi L’uso degli identificativi di gruppo riduce l’overhead, ma pone problemi: Come si istituisce un gruppo Come si aggiungono membri Come si controlla l’ingresso nel gruppo Chi conosce l’elenco dei membri Sono stati definiti diversi protocolli per risolvere tali problemi Internet Group Management Protocol (IGMP) Specifici router nella rete si preoccupano di gestire il servizio di multicast Il protocollo IGMP è usato per il colloquio tra gli host e i multicast router Ogni host colloquia con il multicast router sulla propria sottorete per la gestione dell’iscrizione ai gruppi IGMP Packet v1 0 3 Version 7 Type 15 Unused 32 IGMP Checksum Group Address Field Size Description Version 4 bit Versione del protocollo (posto a 1) Type 4 bit Tipo di messaggio IGMP Checksum 16 bit Codice di controllo di integrità del messaggio Group Address 32 bit Indirizzo multicast del gruppo a cui ci si vuole associare o che si vuole lasciare IGMP Packet v2 0 7 Type 15 Max Res. Time 32 IGMP Checksum Group Address Field Size Description Type 8 bit Tipo di messaggio Maximum Response Time 8 bit Massimo ritardo (misurato in decimi di secondo) prima di inviare una report di risposta IGMP Checksum 16 bit Codice di controllo di integrità del messaggio Group Address 32 bit Indirizzo multicast del gruppo a cui ci si vuole associare o che si vuole lasciare Gestione dei gruppi Periodicamente il router IGMP manda dei messaggi broadcast (224.0.0.1, “all systems on this subnet, hosts and routers”, per es. una LAN) Gli host rispondono con l’elenco dei gruppi in uso da qualche processo applicativo IGMP Message types Sent by Purpose membership query: general router membership query: specific router membership report host query multicast groups joined by attached hosts query if specific multicast group joined by attached hosts report host wants to join or is joined to given multicast group leave group host report leaving given multicast group Gestione dei gruppi Gli host rispondono alle query segnalando al multicast router tutti gli host group a cui appartengono Per la risposta si utilizzano gli identificativi dei gruppi multicast a cui l’host appartiene Il router abilitato invia periodicamente dei messaggi di query Se dopo un certo numero di tentativi non riceve alcun report per il determinato gruppo, si assume che non ci siano più membri Se un host ha appena aderito ad un gruppo multicast deve inviare immediatamente un report affinché sia in grado il prima possibile di ricevere i pacchetti indirizzati a quel gruppo Gestione dei gruppi Per limitare l’overhead di segnalazione causato dai messaggi scambiati periodicamente da multicast router e hosts sono state implementate diverse ottimizzazioni Quando un host riceve una query avvia un timer per ciascun gruppo a cui appartiene: ogni timer viene fatto partire da un valore casuale scelto tra 0 e D secondi allo scadere del timer si genera il report relativo Ogni host resta in ascolto e se sente un report con un indirizzo multicast corrispondente ad uno dei suoi, non genera un’altra risposta per quel multicast group (è indifferente, per un multicast router, sapere che sulla LAN ci sono 2 piuttosto che N receivers per quel gruppo) IGMP v2 vs IGMP v1 IGMP v2 estende la IGMP v1, mantentendo la compatibilità con gli host che hanno tale versione Specifica la modalità con cui si elegge il designated router Viene scelto quello con indirizzo IP più basso sull'interfaccia considerata In IGMP v.1 questa procedura viene demandata al protocollo di routing Messaggio Group-Specific Query Permette ad un router multicast di interrogare un ben specifico gruppo invece che tutti i gruppi presenti sulla LAN IGMP v2 vs IGMP v1 Messaggio Leave-Group Accelera le operazioni di eliminazione di un gruppo da una LAN Inviato al gruppo All-Routers da un host che intende lasciare un certo gruppo multicast, specificando l'indirizzo del gruppo che si vuole abbandonare Quando il router riceve un messaggio di questo tipo inizia ad inviare una serie di Group-Specific Query verso quel particolare gruppo di destinazione e se continua a non ricevere risposta elimina la entry relativa al gruppo sull'interfaccia interessata Velocizza le operazioni di pruning di alberi multicast inutili MULTICAST Protocolli di Routing Intra-Domain Multicast Routing Come inoltrare i pacchetti di un gruppo? Scopo dei protocolli di multicast routing è quello di costruire un albero (Steiner tree) degli instradamenti che consenta di inoltrare i pacchetti senza effettuare dei cicli I router che non hanno utenti del gruppo associati possono essere esclusi dall’albero Il problema è simile a quello che si incontra nei transparent bridge Steiner Tree problem: trovare l’albero che copre tutte le destinazioni avente il minimo costo possibile. (NP-Hard) Constrained Steiner Tree problem: trovare l’albero di costo minimo con vincoli sul massimo ritardo Quali alberi E’ possibile costruire un albero che serve a distribuire i pacchetti di tutte le sorgenti (group-shared) oppure un albero differente per ognuna delle sorgenti attive (sourcespecific) Group-shared Tree Source-Specific Tree Group-Shared Tree In linea teorica è possibile cercare l’albero di costo minimo (Problema NPHard) In realtà gli algoritmi (euristiche) cercano soluzioni sub-ottime Center-based approach: Viene eletto un router “centrale” (nell’esempio sotto, il router E) Vengono inviati dei messaggi di “join” in unicast verso il router centrale I messaggi tracciano dei rami dell’albero fino a che non raggiungono il centro o un altro router già associato all’albero Source-based Trees La costruzione dei source-based trees è di solito basata sull’albero dei cammini (unicast) minimi, costruibile dai router in modo analogo a quanto fatto con il routing unicast Reverse Path Forwarding (RPF): un router accetta un pacchetto multicast solo sull’interfaccia sulla quale il router invierebbe un messaggio unicast verso la sorgente del messaggio multicast ricevuto • I pacchetti in arrivo sul cammino minimo verso la sorgente sono inoltrati • Tutti gli altri sono scartati I pacchetti giungono anche a nodi senza host associati Source-based Trees: pruning Il problema dei pacchetti che arrivano a nodi non coinvolti nel gruppo può essere risolto con la tecnica detta di pruning I router che non hanno host associati al gruppo possono inviare dei messaggi di prune risalendo al contrario lungo l’albero Problemi: Avere informazioni sui router posti a valle (segnalazione opportuna) Consentire l’ingresso di nuovi utenti (messaggi di unprune o timer sull’informazione di prune) Reverse Path Forwarding Quando un router riceve un pacchetto multicast, lo invia su tutte le altre interfacce a patto che quella da cui è arrivato sia sul cammino più breve tra il router e la destinazione Migliora il Flooding, ma non viene generato alcun albero di instradamento Il pacchetto viene sempre distribuito su tutti i link Su alcuni link transitano più copie dello stesso pacchetto Bassa efficienza Funziona solo se la rete è simmetrica (calcola il costo del reverse path) I pacchetti vengono inoltrati su un link (collegamento LAN) anche se non ci sono host associati al gruppo multicast indicato nella destinazione del pacchetto Reverse Path Broadcasting Reverse Path Broadcasting è un evoluzione di Reverse Path Forwarding, in cui si costruisce un albero di distribuzione multicast (steiner tree) per ogni sorgente di traffico Protocollo di tipo Source-based Tree I pacchetti multicast vengono inoltrati solo sui rami appartenenti allo Steiner Tree I paccehtti vengono trasmessi solo sulle interfaccie che permettono di raggiungere le foglie dello Steiner Tree Reverse Path Broadcasting La costruzione dell’albero di distribuzione richiede che ogni multicast router conosca la sua posizione all’interno dell’albero stesso Vengono utilizzate due tipologie di interfacce di rete: Interfaccia padre: interfaccia a distanza minore verso la sorgente Interfaccia figlie: le altre interfacce del router I pacchetti ricevuti da un’interfaccia padre vengono sempre accettati ed eventualmente propagato I pacchetti ricevuti da un’interfaccia figlia vengono sempre scartati Reverse Path Broadcasting L’inoltro dei pacchetti multicast attraverso il meccanismo di Reverse Path Broadcasting richiede la selezione di una interfaccia figlia tra le tante che possono essere collegate su una LAN Solo il designated router ha diritto di propagare il pacchetto multicast ricevuto da un’intefaccia padre sull’intefaccia filglia Il designated router è quello ha distanza inferiore verso la sorgente In caso la distanza abbia costo uguale, viene selezionata l’interfaccia con IP più basso Reverse Path Broadcasting ha problemi simili a quelli introdotti da Reverse Path Forwarding Non esegue il pruning Si assume la rete simmetrica Truncated RPB Gli algoritmi descritti in precedenza lasciano agli host il compito di filtrare i pacchetti, occupando banda inutilmente Truncated RPB aggiunge il pruning allo schema di Reverse Path Broadcasting Gli host devono generare dei report per ottenere la membership a un gruppo L’albero di distribuzione dipende sia dalla sorgente (source based tree) sia dal gruppo multicast Il pacchetto multicast non viene propagato sulle LAN a cui non sono collegati host che appartengono al gruppo indicato nel pacchetto E necessario l’utilizzo di un protocollo di segnalazione tra router per segnalare la presenza di membri del gruppo sulla LAN Reverse Path Multicasting Il Truncated RPB non impedisce che su rami intermedi dell’albero di distribuzione vengano trasmessi pacchetti multicast non inoltrati sulle LAN dei livelli inferiori Il protocollo Reverse Path Multicast implementa il pruning anche sui rami intermedi dell’albero di distribuzione Vengono eliminate intere ramificazioni dell’albero su cui è inutile trasmettere traffico multicast (poiché non ci sono host ad esso interessati) Reverse Path Multicasting Il primo pacchetto inviato dalla sorgente viene inoltrato dai multicast router secondo l’algoritmo Truncated RPB Quando un pacchetto multicast raggiunge un router i cui link sono foglie dell’albero di distribuzione, ma prive di membri associati al gruppo indicato nel pacchetto, il router invia un messaggio di NoMembership-Report (NMR) al router padre Se il router padre riceve un messaggio NMR da tutti i suoi figli, genera un suo messaggio NMR e lo trasmette al suo router padre Il pruning inizia dalle foglie e si propaga verso la radice dell’albero di distribuzione Reverse Path Multicasting I messaggi di No-Membership-Report (NMR) hanno una validità limitata Quando scadono si utilizza nuovamente il protocollo di instradamento Truncated RPB Periodicamente la rete viene inondata di messaggi multicast Quando un nuovo membro si aggiunge a un gruppo, il router collegato alla LAN invia al router padre un messaggio Membership-Report Il router padre deve attivare istantaneamente il ramo dell’albero di distribuzione L’algoritmo di Reverse Path Multicasting ha una limitata scalabilità a causa della quantità di informazioni da mantenere in memoria Link State Multicast Routing Si basa sull’esistenza di un protocollo di routing unicast di tipo link state Ogni router conosce la topologia completa della rete grazie ai messaggi di routing (Link State Advertisement ) scambiati con gli altri dispositivi Ogni router può quindi calcolare l’albero di distribuzione per ogni sorgente e ogni destinazione potenziale Link State Multicast Routing Un nuovo Link State Advertisement (LSA) è utilizzato per annuciare l’esistenza di un nuovo membro (host) per uno specifico gruppo multicast Il messaggio LSA viene trasmesso in tutta la rete attraverso il flooding Ogni router che identifica di essere su un albero di distribuzione per la sorgente e il gruppo multicast indicati nel LSA, si attiva per trasmettere gli eventuali pacchetti di quel gruppo Link State Multicast Routing A causa della latenza necessaria alla distribuzione delle informazioni della topologia di rete e della successiva costruzione degli alberi di distribuzione Link State Multicasting introduce un elevato ritardo di trasmissione per il primo pacchetto della trasmissione multicast L’albero di distribuzione viene calcolato solo nell’istante in cui la sorgente inizia a trasmettere il primo pacchetto Il calcolo dell’albero è necessario al router per decidere su quali interfacce inoltrare i pacchetti multicast ricevuti Link State Multicast Routing Vantaggi Link State Multicast non necessita più di funzionalità di join e prune esplicite Svantaggi Link State Multicast richiede molte risorse (CPU e Memoria) per calcolare e memorizzare gli alberi di distribuzione Ad ogni sorgente è associato un albero di distribuzione Nella tabella di routing deve essere mantenuta una entry per ogni coppia sorgente-destinazione Poiché esistono destinazioni multiple per una sorgente è necessario memorizzare un entry separata per ognuna delle destinazioni associate alla sorgente Core Based Tree Core Based Tree (CBT) prevede la creazione di un unico albero di distribuzione multicast per un gruppo indipendente dalla sorgente che genera traffico La creazione dell’albero si basa su un router principale detto core router L’albero di distribuzione è gestito attraverso la tecnica hard-state Non è necessario inviare messaggi periodici per mantenere lo stato attivo nei router Core Based Tree La costruzione dell’albero di distribuzione richiede uno scambio di messaggi tra i router dell’albero di distribuzione Quando un router periferico (leaf router) riconosce che un host nella sua rete vuole agganciarsi al gruppo di multicast, invia un messaggio particolare (Join Reques) al core router Tutti i router che ricevono questo messaggio marcano l’interfaccia dalla quale il messaggio arriva come una interfaccia da usare per il forwarding dei pacchetti multicast per quel gruppo Nel caso in cui il messaggio raggiunga un router che fa già parte dell’albero (prima di raggiungere il core rotuer) la segnalazione si ferma, e all’albero precedente viene aggiunto un nuovo ramo Core Based Tree Trasmissione multicast in CBT Un membro del gruppo invia semplicemente il pacchetto in multicast Ogni router che riceve un pacchetto lo invia su tutte le interfacce appartenenti a quel gruppo di multicast tranne quella da cui il pacchetto è arrivato Vantaggi L’algoritmo ha una scalabilità migliore di quelli descritti in precedenza Svantaggi Il core-router è un single point of failure e la sua posizione influenza le performance dell’algoritmo I percorsi non sono ottimizzati (la scelta ottima richiede la soluzione di un problema NP-Hard) MULTICAST Protocolli di Routing Inter-Domain Distance Vector Multicast Routing Protocol (DVMRP, RFC 1075) E’ il più usato protocollo Reverse Path Forwarding Usa il Distance Vector per costruire l’albero dei cammini minimi Ogni router mantiene una lista di router dipendenti Un messaggio di pruning viene inviato solo se tutti i router in tale lista lo hanno già fatto E’ previsto un esplicito messaggio di unprune Le informazioni di pruning hanno un time-out MOSPF Estensione multicast di OSPF (protocollo Link State) Essendo un protocollo Link State, ogni router conosce la topologia completa della rete (link e relativi costi) I pacchetti multicast vengono trasmessi sui percorsi più brevi calcolati attraverso lo shortest path tree Adatto a bassa densità di gruppi multicast MOSPF Il percorso su cui sono instradati i pacchetti avviene On-Demand I router intermedi, nel momento in cui si ricevono il primo pacchetto destinato da una particolare sorgente verso un certo host group, creano uno shortest path tree che permette di instradare il pacchetto lungo i cammini più brevi verso tutte le direzioni indicate dall'indirizzo multicast L’algoritmo di routing deve aver raggiunto la stabilità (altrimenti i diversi router calcolano l’albero su informazioni diverse) Protocol Independent Multicast Protocol Independent Multicast (PIM) nn implementa meccanismi per il calcolo dei cammini minimi PIM calcola i cammini minimi utilizzando le informazioni fornite da un protocollo di routing unicast sottostante (sia esso Links State o Distance Vector) PIM può attraversare domini di routing unicast Protocol Independent Multicast Esistono due versioni diverse di PIM PIM-SM (PIM - Sparse Mode) • Derivato da CBT • Basso numero di stati (altamente scalabile) • Adatto a reti estese con pochi ricevitori sparsi PIM-DM (PIM - Dense Mode) • Adotta l’algoritmo RPM • Adatto a reti con ricevitori molto concentrati PIM-SM e PIM-DM non possono coesistere in uno stesso dominio di routing multicast Protocol Independent Multicast Implicit Join Protocol PIM-DM (come DVMRP): in mancanza di indicazioni esplicite, i pacchetti vengono inoltrati in una certa rete È necessario generare messaggi di “Prune” per interrompere il traffico multicast Explicit Join Protocol PIM-SM: in mancanza di indicazioni esplicite, i pacchetti non vengono inoltrati in una certa rete È necessario utilizzare messaggi di “Join” per attivare il traffico multicast PIM-SM Protocollo adatto a reti sparse Pochi gruppi multicast rispetto al numero di reti LAN Overhead minore rispetto alla versione Dense Mode Adattamento del meccanismo CBT Si basa sul concetto di albero di distribuzione Non viene mai utilizzato il flooding per ridurre l’overhead Maggiore ritardo di trasmissione per il primo pacchetto PIM-SM Tre entità principali Designated router (DR): si occupa di raccogliere le richieste degli host Rendez-vous point (RP): punto di raccolta dei pacchetti destinati ad un certo gruppo multicast (corrisponde al core router dell'algoritmo CBT) Bootstrap Router (BSR): si occupa di distribuire a tutto il dominio PIM-SM l’elenco dei RP Multicast in Internet Solo una piccolissima frazione dei ruoter di Internet sono multicast routers Cosa succede se nessuno dei router vicini ad un multicast router ha capacità di multicast? La tecnica in uso in MBone (Multicast Backbone) è il tunneling: