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.
Respuestas:
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.
fuente
Creo que en el hardware semi-sintonizado convencional deberías poder:
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.
fuente