Domanda

Di recente sono venuto a conoscenza del fatto che esiste una distinzione tra multicast IP (che apparentemente non funziona così bene su Internet pubblico) e multicast delle applicazioni (che è apparentemente utilizzato in IRC e PSYC, per http://en.wikipedia.org/wiki/Multicast ).

Esiste un buon tutorial sull'implementazione del multicast a livello di applicazione?

Pensavo che il punto centrale del multicast fosse ridurre la larghezza di banda per i segmenti di rete comuni, quindi è difficile per me capire cosa fa il multicast a livello di applicazione.

È stato utile?

Soluzione

Lo scopo del multicast a livello IP è ridurre la larghezza di banda per i segmenti di rete comuni in cui molti utenti desiderano ricevere lo stesso traffico. Di solito è limitato a una particolare sottorete e un router IP non propaga il multicast oltre la sottorete. Questo viene fatto per motivi di scalabilità: non sarebbe una buona idea consentire a un host di originare pacchetti multicast che vengono propagati a tutti gli indirizzi IP su Internet.

Esistono diversi modi di pensare a "livello di applicazione" multicasting. Un approccio consiste nel costruire un albero multicast utilizzando i computer host che partecipano al multicast. L'algoritmo di Dijkstra potrebbe essere usato per fare questo (Wikipedia ne ha una descrizione ragionevole). Tuttavia, mantenere l'elenco dei computer partecipanti - e mantenere aggiornato l'albero - può essere una buona dose di lavoro se gli host si uniscono e lasciano la rete a un ritmo sostanziale. E probabilmente non hai una buona stima del costo del luppolo disponibile a livello di applicazione.

Un altro approccio da rivedere è l'algoritmo di flooding utilizzato nel protocollo di routing delle query della rete Gnutella. (Wikipedia ha anche una buona descrizione di questo.) Questo approccio allevia la necessità di costruire un albero multicast, ma ha il rovescio della medaglia di generare più traffico di rete. In effetti, MOLTO più traffico di rete, poiché il traffico aumenta con il quadrato del numero di nodi, ovvero O (n ** 2).

Altri suggerimenti

Un altro esempio di multicasting dell'applicazione è l'utilizzo di JGroups in Amazon EC2 o App Google Engine in quanto non supportano il multicast IP ma gli sviluppatori vogliono utilizzare la funzionalità multicast.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top