# Multicast

Con il termine multicast, nelle reti di calcolatori, si indica la distribuzione simultanea di informazione verso un gruppo di destinatari, cioè la possibilità di trasmettere la medesima informazione a più dispositivi finali, senza dover indirizzare questi ultimi singolarmente e senza avere, quindi, la necessità di duplicare per ciascuno di essi l'informazione da diffondere.

## Descrizione
### Terminologia

Il termine viene utilizzato anche per indicare:
* un pacchetto inviato con tale modalità (frame o datagramma multicast a livello 2 ISO/OSI; pacchetto multicast a livello 3 ISO/OSI);
* un indirizzo che si riferisce a un gruppo di destinatari (indirizzo Multicast: in IPv4 indirizzi da 224.0.0.0 a 239.255.255.255 (classe D) e in IPv6 indirizzi che iniziano con ff (ff00::/8).
In alternativa alla modalità di trasmissione multicast si hanno le modalità:
* Broadcast: invio a tutti gli host di una rete;
* Anycast: invio ad un host qualunque di un gruppo, normalmente il più vicino;
* Unicast: invio ad un solo e determinato host.
(Attenzione: l'invio multicast funziona solo da un host a molti, cioè un pacchetto o un frame non può avere come mittente un indirizzo multicast.)

### Caratteristiche

I computer che vogliono ricevere le "trasmissioni" del gruppo multicast si devono registrare per quel gruppo con qualche meccanismo, e la rete si occuperà di consegnare i pacchetti multicast a tutti quelli che si sono registrati. Spesso non c'è modo di controllare né chi trasmette su un gruppo multicast, né quali computer possono ricevere, se non in modo piuttosto grossolano.
Il servizio di multicast è stato pensato per esempio per permettere la diffusione efficiente di programmi multimediali su una rete di calcolatori; viene anche utilizzato per funzioni di gestione della rete (per risolvere problemi come "trova tutti i computer su una sottorete che implementano la funzione X o che hanno bisogno della funzione Y"); oppure per raggiungere un gruppo di routers.
Per la natura del servizio di rete multicast, risulta molto difficile usare protocolli di trasporto orientati alla connessione come TCP, per cui si usano protocolli senza connessione come UDP.

### Implementazioni

Il multicast può essere implementato a livello LAN o WAN:
* LAN: a livello 2 ISO/OSI (vedi lo standard ethernet) una serie di indirizzi MAC è riservata all'uso multicast; a livello 3 ISO/OSI si utilizzano gli indirizzi IP riservati al multicast di classe D (IPv4) o gli indirizzi ff00::/8 (IPv6). I pacchetti inviati da un host in una rete locale sono trattati dagli hub/switch come se fossero broadcast, ovvero sono ritrasmessi a tutti i computer collegati alla LAN. Se un host fa parte di un gruppo multicast, la scheda di rete, che riceve il pacchetto, lo passa al sistema operativo, il quale a sua volta lo passa al processo interessato; altrimenti lo elimina. Quindi tutto il traffico multicast viene fisicamente inviato a tutti i computer collegati alla rete LAN (è un broadcast fisico), solo gli hosts interessati tratterranno ed elaboreranno il frame.
* WAN: come per le LAN il calcolatore sorgente invia una sola copia dell'informazione (indipendentemente dal numero di destinatari), ma qui particolari protocolli di routing devono individuare dove sono localizzati tutti gli hosts che vogliono ricevere quella trasmissione e trasmettere il flusso solo sulle reti interessate. Saranno gli M-Router (Multicast Router) che, utilizzando protocolli multicast, moltiplicheranno l'informazione quando necessario sulle n reti interessate.
Il protocollo IGMP (Internet Group Management Protocol) viene usato dai computer per richiedere di essere iscritti ad un gruppo multicast, ed esistono appositi protocolli, basati su algoritmi di routing per il traffico multicast:
* protocolli intra-domain: DVMRP (Distance Vector Multicast Routing Protocol), MOSPF (Multicast Open Shortest Path First), PIM (Protocol Independent Multicast)
* protocolli inter-domain: BGMP (Border Gateway Multicast Protocol).
Internet: il servizio multicast è implementato solo parzialmente perché le problematiche sono complesse e perché le funzionalità di routing multicast inter-domain, cioè i protocolli che le regolano, devono essere disponibili in tutti i router.