2010-06-18 11 views
21

No estoy seguro de cuál es la mejor manera de abordar mi problema. Tengo un servicio con ejecuciones en una máquina remota que recibe y procesa paquetes UDP. Quiero que el servicio pueda volver a enviar estos paquetes a cualquiera que los quiera (puede ser nadie, normalmente será una máquina, pero puede ser más)Multidifusión UDP a través de Internet?

Pensé que la multidifusión UDP sería ideal - el servicio puede enviar al grupo de multidifusión y no importa cuántos receptores se hayan registrado, o incluso si no hay ninguno.

Sin embargo, quiero poder acceder a esto a través de Internet y, por lo que veo, es casi imposible con la multidifusión UDP. ¿Hay algún otro método que pueda usar para lograr esto?

Si corresponde, tanto mi cliente como el servicio están escritos en C#.

Respuesta

20

En general, esto no es posible ya que los paquetes de multidifusión no se enrutan.

Existen algunas técnicas para evitar esto (DVMRP, MOSPF y otros), pero todas requieren que pueda configurar todos los enrutadores entre su servidor y los clientes (o crear un túnel). Existen redes troncales (Abilene, Mbone) con soporte de multidifusión, pero aquellas son de mayor interés para las universidades y tal. El Internet del consumidor normal no tiene multidifusión.

Desafortunadamente necesita comunicación punto a punto. Pero usted está en buena compañía, internet, radio y televisión hacen punto a punto, transmitiendo los mismos datos en numerosas ocasiones. Todo un desperdicio de ancho de banda.

+2

Mbone se apagó hace mucho tiempo, IPv6 exige multidifusión, algunos ISP tienen multidifusión IPv4 para DVB como Alemania y el Reino Unido. –

+3

Muchos servicios usan UDP o PGM para la multidifusión localmente. Si necesita conectar otros, como un sitio remoto a través de Internet, puede usar un túnel TCP, que escucha el UDP local y enruta el tráfico al otro lado donde se retransmite. Esto funciona muy bien para conectar dos oficinas, etc. Si necesita ayuda con el UDP, aquí hay un tutorial: http://jarloo.com/code/networking/c-udp-multicasting-tutorial/ – Kelly

11

El método preferido es utilizar multidifusión superpuesta, es decir, usar enlaces TCP entre iguales e implementar la semántica de multidifusión por encima de eso.

Muchos enrutadores IPv4 no son compatibles con la multidifusión o lo tienen deshabilitado, IPv6 tiene la obligación de admitir multidifusión y se han eliminado la semántica de transmisión.

Cuestiones relacionadas