5

Me gustaría un programa para determinar el TCP congestion control algorithm utilizado en una sesión TCP capturada.¿Hay un algoritmo para tomar las huellas digitales del algoritmo de control de congestión TCP utilizado en una sesión capturada?

Los estados Wikipedia artículo de referencia:

TCP New Reno es el algoritmo implementado más comúnmente , el apoyo SACO es muy común y es una extensión de Reno/Nueva Reno. La mayoría de los otros son propuestas que aún necesitan la evaluación . Comenzando con 2.6.8, el kernel de Linux cambió la implementación predeterminada de reno a BIC. La implementación predeterminada fue nuevamente cambiado a CUBIC en la versión 2.6.19 .

también:

Compuesto TCP es un Microsoft implementación de TCP que mantiene dos diferentes ventanas de congestión al mismo tiempo, con el objetivo de lograr un buen rendimiento en LFN mientras que no perjudique la equidad. Tiene implementado ampliamente con Microsoft Windows Vista y Windows Server 2008 y ha sido portado a versiones anteriores de Windows de Microsoft y Linux.

¿Cuáles serían algunas estrategias para determinar qué algoritmo CC está en uso (de un tercero que captura la sesión)?

actualización

This project ha construido una herramienta para hacer esto:

El Internet ha sido recientemente evolución de la congestión homogénea control de la congestión heterogénea control. Hace varios años, el tráfico de Internet fue controlada principalmente por el algoritmo TCP AIMD estándar , mientras que tráfico de Internet está ahora controlado por muchos de control de congestión diferente TCP algoritmos, como AIMD, BIC, cúbico, CTCP, HSTCP, HTCP, HYBLA, ILLINOIS, LP, STCP, VEGAS, VENO, WESTWOOD + y SÍ. Sin embargo, hay muy poco trabajo en en el estudio de rendimiento y estabilidad de Internet con control de congestión heterogéneo . Una razón fundamental de es la falta de la información de implementación de diferentes algoritmos TCP . Los objetivos de este proyecto son:

1) develop tools for identifying the TCP algorithms in the Internet, 
2) conduct large-scale TCP-algorithm measurements in the Internet. 

Respuesta

4

Hay muchos algoritmos más control de congestión que se menciona aquí, la parte superior de la cabeza de la lista incluye: rápido, escalable, HSTCP, HTCP, Bic, Cubic, Veno, Vegas.

También hay pequeñas variaciones de ellos debido a las correcciones de errores en las implementaciones reales y supongo que las implementaciones en diferentes sistemas operativos también se comportan ligeramente diferentes entre sí.

Pero si necesito intentar una idea sería estimar la RTT de la conexión, puede intentar ver el tiempo que tomó entre el tercer y el cuarto paquete, como el primero y el segundo los paquetes pueden estar contaminados por ARP y otros algoritmos de descubrimiento a lo largo de la ruta.

Después de que tengas una estimación para RTT podrías intentar refinarla en el camino, aunque no estoy muy seguro de cómo podrías hacerlo. Pero no necesita una especificación completa para el programa, solo ideas :-)

Con el RTT resuelto, puede tratar de poner los paquetes en contenedores RTT y contar el número de paquetes de datos en vuelo en cada contenedor. De esta forma, podrá "trazar" el tiempo estimado de cwnd estimado (número de paquetes en el contenedor) y probar algún patrón que coincida.

Una alternativa sería ir a lo largo del seguimiento y tratar de "ejecutar" en su cabeza los diferentes algoritmos de control de congestión y ver si la decisión en algún momento coincide con la decisión que habría tomado. Se requerirán algunos intervalos de indulgencia y precisión.

Esto definitivamente parece una tarea interesante y desafiante!

Cuestiones relacionadas