tcp - usar - jperf fr
Cómo iperf calcula las estadísticas de la red (2)
No soy un desarrollador de iperf, pero al buscar el código fuente, fue bastante fácil encontrar el lugar donde se copió el conteo de paquetes en el mensaje udp, busque packet_count aquí: https://github.com/esnet/iperf/ blob / master / src / iperf_udp.c
iperf es una gran herramienta para medir estadísticas de red, como pérdida, rendimiento, fluctuación de fase. Lo he usado mucho Pero, me pregunto cómo calcula esas estadísticas. Para el rendimiento, simplemente puede medir el número de bytes que recibió en un cierto período de tiempo; Para la fluctuación de fase, solo puede medir el tiempo de llegada del paquete. Pero, para la pérdida UDP, cómo puede calcular. Mi suposición es que construye su carga útil específicamente al insertar números de secuencia. Entonces, el servidor puede predecir qué paquetes se pierden. ¿Alguien sabe cuál es el contenido de la carga útil del paquete iperf?
La otra cosa es que, al final de la conexión, el cliente iperf (emisor) recibirá un informe del servidor (que tiene las estadísticas). ¿A qué número de puerto se envía este informe? Este informe usa TCP o UDP? No puedo capturarlo usando tcpdump.
Traté de buscar en línea para encontrar las respuestas a mis preguntas anteriores. Pero, solo puedo encontrar cómo usar iperf. Parece que ningún documento / sitio web explica cómo funciona iperf. ¿Alguien puede dar alguna idea o señalar algunos documentos?
Miré el código fuente y también tomé algunos tcpdumps para iperf3. Tengo la siguiente comprensión para iperf3.
En los paquetes iperf UDP, el remitente escribe una marca de tiempo y un número de secuencia (que el código fuente de iperf llama pcount) en la carga útil. Una vez que el receptor obtiene el paquete, extrae la marca de tiempo para la fluctuación de fase y el número de secuencia para el recuento de pérdida de paquetes.
El jitter se calcula mediante la comparación de la marca de tiempo y la hora actual para encontrar el retraso, D_actual, primero. Luego, encuentre | D_actual - D_previous | (la diferencia cancela la sincronización del reloj entre el emisor y el receptor) para contribuir a la inestabilidad.
La pérdida es solo para acumular la diferencia entre el recuento actual y el recuento esperado que se recibió previamente más uno.
No importa si es iperf udp (con la opción -u en el lado del cliente) o tcp, cuando iperf se inicia, se establecerá una conexión TCP de control. Esta conexión TCP de control se usa para intercambiar estadísticas del lado del cliente y del lado del servidor, que incluyen las utilidades de la CPU, la inestabilidad y la pérdida calculadas anteriormente, al final de la prueba.
Desde el registro de iperf2, no encuentro que controle la conexión TCP.