2010-06-18 9 views
21

Je ne suis pas sûr de la meilleure façon d'aborder mon problème. J'ai un service avec des exécutions sur une machine distante avec des paquets UDP de réception et de traitement. Je veux que le service puisse renvoyer ces paquets à n'importe qui qui les voudrait (pourrait ne être personne, sera typiquement une machine, mais peut être plus)UDP Multicast sur internet?

Je pensais que la multidiffusion UDP serait idéale - le service peut envoyer au groupe de multidiffusion et peu importe le nombre de récepteurs enregistrés, ou même s'il n'y en a aucun. Cependant, je veux être en mesure d'accéder à cela sur Internet et d'après ce que je comprends c'est presque impossible avec UDP Multicasting. Y a-t-il une autre méthode que je pourrais utiliser pour y parvenir?

Le cas échéant, mon client et mon service sont écrits en C#.

Répondre

20

En général, cela n'est pas possible car les paquets de multidiffusion ne sont pas routés.

Il existe certaines techniques pour contourner ce problème (DVMRP, MOSPF et autres), mais elles exigent toutes que vous puissiez configurer tous les routeurs entre votre serveur et les clients (ou créer un tunnel). Il existe des réseaux dorsaux (Abilene, Mbone) avec un support de multidiffusion, mais ceux-ci présentent le plus d'intérêt pour les universités et autres. L'internet du consommateur normal n'a pas de multidiffusion.

Malheureusement, vous avez besoin d'une communication point-à-point. Mais vous êtes en bonne compagnie, Internet, la radio et la télévision font du point à point, en transmettant les mêmes données plusieurs fois. Tout un gaspillage de bande passante.

+2

Mbone a été éteint il y a longtemps, IPv6 mandat de multidiffusion, certains FAI ont IPv4 multicast pour la DVB comme l'Allemagne et le Royaume-Uni. –

+3

De nombreux services utilisent UDP ou PGM pour la multidiffusion locale. Si vous devez connecter d'autres sites, tels qu'un site distant sur Internet, vous pouvez utiliser un tunnel TCP, qui écoute le protocole UDP local et achemine le trafic vers l'autre côté où il est retransmis. Cela fonctionne très bien pour connecter deux bureaux etc. Si vous avez besoin d'aide sur l'UDP, voici un tutoriel: http://jarloo.com/code/networking/c-udp-multicasting-tutorial/ – Kelly

11

La méthode préférée consiste à utiliser la multidiffusion de superposition, c'est-à-dire à utiliser des liaisons TCP entre des homologues et à mettre en œuvre une sémantique de multidiffusion supérieure à celle-ci.

De nombreux routeurs IPv4 ne prennent pas en charge la multidiffusion ou la désactivent, IPv6 est mandaté pour prendre en charge la multidiffusion et la sémantique de diffusion a été supprimée.