Me gustaría simular el retraso y la pérdida de paquetes para UDPy TCPen Linux para medir el rendimiento de una aplicación. ¿Hay una manera simple de hacer esto?
linux
tcp
throttling
George Stocker
fuente
fuente

Respuestas:
Netem aprovecha la funcionalidad ya integrada en Linux y las utilidades de espacio de usuario para simular redes. Esto es en realidad a lo que se refiere la respuesta de Mark, con un nombre diferente.
Los ejemplos en su página de inicio ya muestran cómo puede lograr lo que ha pedido:
Tenga en cuenta que debe usarlo
tc qdisc addsi no tiene reglas para esa interfaz otc qdisc changesi ya tiene reglas para esa interfaz. Intentar usartc qdisc changeen una interfaz sin reglas dará el errorRTNETLINK answers: No such file or directory.fuente
tc -p qdisc ls dev eth0habrá una lista de reglas definidas actuales, ytc qdisc del dev eth0 rootlos eliminaráPara los paquetes descartados, simplemente usaría iptables y el módulo estadístico .
Arriba caerá un paquete entrante con una probabilidad del 1%. Tenga cuidado, cualquier cosa por encima de 0.14 y la mayoría de sus conexiones tcp probablemente se bloqueará por completo.
Eche un vistazo a man iptables y busque "estadística" para obtener más información.
fuente
DROPen cuenta que en las conexiones de salida hace que lassend()operaciones regresen de forma bastante ridículaEPERM, en lugar de simplemente descartar paquetes (como debería).iptables -D INPUT -m statistic --mode random --probability 0.01 -j DROPUno de mis colegas usa tc para hacer esto. Consulte la página del manual para obtener más información. Puede ver un ejemplo de su uso aquí .
fuente
iptables (8) tiene un módulo de coincidencia estadística que se puede usar para hacer coincidir cada enésimo paquete. Para descartar este paquete, simplemente agregue -j DROP .
fuente
Este tutorial sobre simulaciones físicas de redes contiene una clase de C ++ en el código de muestra para simular la latencia y la pérdida de paquetes en una conexión UDP y puede ser una guía. Vea la latencia pública y las variables packetLoss de la clase Connection que se encuentran en el archivo Connection.h del código fuente descargable .
fuente
No lo he intentado yo mismo, pero esta página tiene una lista de módulos de complemento que se ejecutan en el sistema de filtrado IP integrado de Linux 'iptables'. Uno de los módulos se llama "enésimo" y le permite configurar una regla que eliminará una velocidad configurable de los paquetes. Podría ser un buen lugar para comenzar, al menos.
fuente
Puede probar http://snad.ncsl.nist.gov/nistnet/ Es un proyecto NIST bastante antiguo (última versión 2005), pero funciona para mí.
fuente
Una herramienta de inyección de fallas de red fácil de usar es Saboteur . Puede simular:
fuente
Una de las herramientas más utilizadas en la comunidad científica para ese fin es DummyNet . Una vez que haya instalado el
ipfwmódulo del núcleo, para introducir un retraso de propagación de 50 ms entre 2 máquinas, simplemente ejecute estos comandos:Para introducir también el 50% de las pérdidas de paquetes, debe ejecutar:
Aquí más detalles.
fuente