disponibilidad comandos clusvcadm cluster alta c++ udp network-protocols

c++ - comandos - clusvcadm



Una implementación confiable de UDP (6)

Necesito una implementación de UDP que cumpla con los siguientes criterios:

  • Disponible en Linux y Mac (solo importan las últimas versiones)
  • Utilizable desde C ++
  • Paquetes de pedidos
  • Entrega de paquetes de garantías
  • No orientado a la conexión (como UDP)

NOTA: NO quiero usar TCP para esto. NOTA: Puede implementarse mediante cualquier API de socket, siempre que esté disponible en las dos plataformas y esté disponible para C ++.

EDITAR: He visto UDT, RUDP y SCTP. Estos parecen ser los principales contendientes. ¿Alguna idea?

EDITAR: UDT parece ser lo que estoy buscando. ¿El hecho de que se implementa en el espacio de usuario sobre los núcleos UDP va a ser un gran problema de rendimiento? ¿O las velocidades seguirán siendo más rápidas que TCP / STCP?

EDITAR (15/2/12): He encontrado una solución que usa TCP y un servidor de redirección central. El sistema permite que un cliente envíe datos al servidor a través de una conexión TCP siempre abierta, quien los transfiere al otro cliente correcto a lo largo de la conexión TCP del servidor al segundo.


Creo que quieres SCTP .


Es posible que esté buscando RTI-DDS . Hay una API de C ++ y una QoS que garantiza la entrega a través de UDP. No estoy seguro del soporte de Mac, pero puede preguntarlo en [email protected].


Parece que estás pidiendo algo como RUDP .

En cualquier caso, es muy complicado de implementar. No sé de nada que lo haga

También quería resaltar el hecho de que si esto no se hace en el kernel, el rendimiento se reduce drásticamente. En general, hacer cosas como el reensamblaje de paquetes, etc., en una aplicación requiere mucho más búfer o generará muchos más intentos si las velocidades de datos son lo suficientemente altas (lo que puede ser una cantidad de tráfico bastante modesta).


Descargo de responsabilidad: trabajo para una empresa que produce herramientas comerciales de transporte de datos UDP.

Hay muchas herramientas de transporte de datos UDP, incluyendo freeware y software comercial. El que elija dependerá de varios factores además de los que ya citó:

  • ¿Qué tipo de datos estás transportando? Archivos, secuencias de datos generadas por programas, mensajes cortos? Kilobytes, megabytes, gigabytes o terabytes? La mayoría de las soluciones UDP están enfocadas en archivos o grandes flujos de datos. Pocos también están optimizados para mensajes pequeños o de uso general.

  • ¿Cuál es su topología de red? ¿Cliente-servidor, punto a punto, servidor-a-servidor? Esto afectará los problemas del firewall y puede afectar el costo de las soluciones comerciales.

  • ¿En qué tipo de entorno de red esperas desplegar? Algunos protocolos de transporte basados ​​en UDP solo se adaptan a redes o redes muy rápidas en las cuales los usuarios finales son capaces de configurar la velocidad objetivo adecuada. Otros están optimizados para baja latencia y alta latencia (como el satélite). Algunos funcionan bien en cualquier entorno.

  • ¿Cuánto dinero estás dispuesto a gastar? Existen soluciones de código abierto y comerciales. Los precios entre las soluciones comerciales varían drásticamente y pueden depender de algunos de los factores anteriores.

  • ¿Cuánto apoyo necesitas? Algunas soluciones de código abierto tienen comunidades robustas a su alrededor, algunas están casi abandonadas. Asimismo, el nivel de soporte entre las soluciones comerciales varía.

Obviamente estoy tratando de caminar una línea fina para darte cosas que considerar sin promover mi propia compañía. Mis disculpas a todos si he caminado demasiado lejos a cada lado.


Esta serie de tutoriales puede ser de su interés.

Editar: Los enlaces para el siguiente tutorial se encuentran en la parte inferior de la página, y la publicación del UDP confiable es en realidad la tercera, pero la primera y la segunda son buenas lecturas también.


Esta es una vieja pregunta, pero vi que nadie respondió nada sobre UDT. Tengo algo de experiencia con eso, así que puedo compartirlos.

UDT funciona bastante bien. Básicamente, utilízalo como lo harías con un socket UDP y obtendrás todo lo que hayas incluido en él.

En cuanto a rendimiento, no he notado ningún problema. En realidad, tiene varios algoritmos para maximizar el rendimiento, y puede obtener resultados bastante sorprendentes (obtuve> 90 MB / s en una LAN Ethernet de 100 MB / s). Funciona bien sobre enlaces de latencia lenta / alta, también.

No es perfecto, por supuesto, y algunos escenarios de error no se manejan de la manera que me gustaría, pero, en su mayor parte, simplemente "lo enchufas" y estás bien.