2010-06-18 13 views
21

Non sono sicuro di come affrontare al meglio il mio problema. Dispongo di un servizio con esecuzioni su una macchina remota con ricezione e elaborazione di pacchetti UDP. Voglio che il servizio sia in grado di inviare nuovamente questi pacchetti a chiunque capiti di volere (potrebbe essere nessuno, sarà tipicamente una macchina, ma potrebbe essere più)UDP Multicast su Internet?

Ho pensato che UDP Multicasting sarebbe l'ideale - il servizio può inviare al gruppo multicast e non importa quanti ricevitori si sono registrati, o anche se non ce ne sono.

Tuttavia, voglio essere in grado di accedere a questo tramite Internet e da ciò che ho raccolto questo è praticamente impossibile con UDP Multicasting. C'è un altro metodo che potrei usare per ottenere questo?

Se pertinente, sia il mio cliente che il servizio sono scritti in C#.

risposta

20

In generale ciò non è possibile poiché i pacchetti multicast non vengono instradati.

Esistono alcune tecniche per aggirare questo problema (DVMRP, MOSPF e altri) ma richiedono tutti che sia possibile configurare tutti i router tra il server e i client (o creare un tunnel). Ci sono reti backbone (Abilene, Mbone) con supporto multicast, ma quelle sono di maggior interesse per le università e così via. Internet normale del consumatore non ha multicast.

Sfortunatamente è necessaria la comunicazione punto-punto. Ma tu sei in buona compagnia, internet, radio e TV fanno tutti da punto a punto, trasmettendo gli stessi dati numerose volte. Abbastanza spreco di larghezza di banda.

+2

Mbone è stato spento molto tempo fa, IPv6 richiede multicast, alcuni ISP hanno IPv4 multicast per DVB come Germania e Regno Unito. –

+3

Molti servizi utilizzano UDP o PGM per il multicasting localmente. Se è necessario connettere altri, ad esempio un sito remoto su Internet, è possibile utilizzare un tunnel TCP, che ascolta l'UDP locale e indirizza il traffico verso l'altro lato dove viene ritrasmesso. Funziona perfettamente per connettere due uffici, ecc. Se hai bisogno di aiuto su UDP, ecco un tutorial: http://jarloo.com/code/networking/c-udp-multicasting-tutorial/ – Kelly

11

Il metodo preferito è utilizzare la sovrapposizione multicast, ovvero utilizzare collegamenti TCP tra peer e implementare la semantica multicast al di sopra di quella.

Molti router IPv4 non supportano il multicast o sono disabilitati, IPv6 è stato autorizzato a supportare la semantica multicast e broadcast sono stati rimossi.