Consulta ultrarrápida utilizando paquetes UDP

10

Estoy implementando un sistema en el que un dispositivo en una red consulta a una frecuencia muy alta (cientos o miles de consultas por segundo) mediante el envío de un pequeño paquete UDP con aproximadamente 8 bytes de datos. Esto lo recibe otra aplicación, tal vez en otro dispositivo, que realiza un procesamiento muy simple y envía el resultado de pocos bytes envuelto en otro paquete UDP.

Me gustaría saber qué tipo de tiempos de ida y vuelta son factibles con el hardware típico, donde los sistemas de comunicación tal vez estén conectados a través de Ethernet por cable a unos pocos metros de distancia, teniendo en cuenta los retrasos de propagación y transmisión, etc.

Otros pensamientos y sugerencias también son bienvenidos.

John Smith
fuente
2
podrías ver latencias en decenas o cientos de microsegundos ... definitivamente latencia de menos de milisegundos ... según tu descripción, parece que estás considerando un sistema de comercio financiero ... las latencias que solicitas dependen mucho de tu hw específico , y estás mucho mejor realizando pruebas que pidiendo consejo gratis
Mike Pennington
Muchas gracias por su respuesta. En realidad, no es para un sistema de comercio financiero en este caso. Solo quería una idea vaga de lo que era posible antes de comenzar la implementación, más como un estudio de factibilidad que otra cosa.
John Smith

Respuestas:

11

Un ejemplo, Juniper MX80 tiene un retraso de entrada-> salida de aproximadamente 8us, en el interruptor de corte de baja latencia puede ser <1us (quizás 0.7us). (¡Recuerde que el interruptor de corte no puede cortar el 100% del tiempo, solo cuando el puerto de salida está inactivo!)

1 km en fibra es aproximadamente 5us latencia (de nuevo, una sola dirección).

El retraso de serialización @ 10G para la carga útil de tamaño mínimo (46B) es de aproximadamente 67ns (0.067us), al aumentar la velocidad del enlace, disminuye el retraso de serialización.

El encabezado IP es 20B, el encabezado UDP es 8B, sus datos son 8B, por lo que solo tiene 36B de datos, lo que significa que su carga útil de Ethernet incluirá 10B de basura que DEBE enviar, es decir, si tiene algo que agregar a su carga útil, agréguelo, tiene 0 costo de latencia.

Espero que pueda extrapolar RTT a partir de estos, multiplicando el retraso del dispositivo por el recuento de dispositivos y agregando 5us por cada kilómetro de fibra y luego multiplique eso por 2.


No puedo resistirme a agregar algunas ideas sobre HFT.

De acuerdo con este volumen HFT reducido a la mitad entre 2009 y 2012. Lo que sugiere que las victorias fáciles se han ido. Me encantaría ver algún artículo científico o solo datos reales sobre la latencia HFT y su efecto en las ganancias. Sospecho que la latencia que afecta las ganancias comerciales es de otra magnitud que la latencia de la que estamos hablando en este momento. Un amigo mío que construye una red para uno de los intercambios más grandes parece pensar que es solo el cliente el que 'baja == mejor' sin comprender las escalas.
Puedo entender completamente cómo HFT fue útil cuando pocas personas lo hacían, cuando se podía observar el mercado A sin ver el cambio El mercado B sí lo ve y capitaliza. Algunos están hablando de usar la regulación para detener HFT al gravar cada operación y hacerla costosa para todos, no creo que sea necesaria, creo que la ventana de oportunidad ya se está cerrando.

ytti
fuente
Excelente respuesta y muy informativo, gracias. ¡Incluso algunos pensamientos personales sobre HFT!
John Smith
1
@JohnSmith, no se olvide de considerar el retraso introducido dentro de sus puntos finales (como el programador del sistema operativo o el procesamiento del kernel) ... esto puede contribuir significativamente al retraso que mencioné en un comentario anterior.
Mike Pennington el
Excelente punto sobre el uso del tamaño de paquete mínimo completo a un costo de latencia 0.
generalnetworkerror
1

Creo que en el hardware semi-sintonizado convencional deberías poder:

  1. Salga de su pila de red de host
  2. Su próxima pila de red
  3. Retroceda esa pila de red con su 'nuevo' paquete

En ~ 10 nosotros en 10gig. Si realmente bloquea las cosas, ese número puede ser significativamente menor.

Casi TODA la latencia que verá no proviene del hardware / cables de red, sino de sus sistemas host. Un interruptor de corte razonable (Arista, Gnodal, New Cisco, etc.) será sub 1us.

Comience por asegurarse de que los procesos que consumen los paquetes UDP están anclados al mismo núcleo que las interrupciones de su NIC. A partir de ahí, asegúrese de que la fusión en su NIC esté desactivada, y desde allí asegúrese de tener MSI-X y DCA.

Si eres más serio ... echa un vistazo a OpenOnload de SolarFlare. También tienen un gran conjunto de herramientas para probar / verificar el rendimiento.

radikalus
fuente