D-ITG (Distributed Internet Traffic Generator) es un generador de tráfico que permite medir anchos de banda e inyectar tráfico específico en la red.
Página oficial:
ttp://www.grid.unina.it/software/ITG/
A continuación de observa un ejemplo y las opciones disponibles.
1. Ejecutar el receptor.
./ITGRecv
2. Ejecutar el emisor.
./ITGSend -a 192.168.97.102 -l itgsend.log -T tcp -c 1500 -C 80000 -t 60000
Para intentar establecer un flujo TCP de 10Gbs sin fragmentar paquetes IP seleccionamos un payload de 1500 bytes y una tasa constante de 80000 paqutes por segundo.
Tabla aproximada
1500 bytes, 80000 pps == 1 Gbs
OPCIONES DE FLUJO
-m <métrica>:
owdm –> medición de un camino (requiere de sincronización externa mediante NTP o GPS).
rttm –> medición de ida y vuelta (no requiere de sincronización externa pero incluye otros retardos aparte del retardo de propagación)
-a <dirección destino>: destino del flujo. Si se omite se usa «localhost»
-rp <puerto destino>: puerto en destino. Si se omite se usa 8999.
-sp <puerto origen>: puerto en origen. Si se omite se deja al SO elegir uno.
-i <interfaz>: interfaz por la que enviar
-T <protocolo>: protocolo a usar (TCP, UDP, ICMP, SCTP DCCP)
-f <TTL>: se puede introducir como decimal o como hexadecimal si se antepone «0x»
-b <byte DS>: se introduce o en decimal o anteponiendo «0x» en hexadecimal, el campo Differenciated Services (IMPORTANTE: en Linux, para establecer el DS a un valor superior a 160 hacen falta privilegios de root).
-rk <señal_puerto_serie_receptor>: puede valer, en Linux, ttys0, ttys1, …, y lo que hace es instruir al receptor a que envíe una señal por el puerto serie especificado cada vez que reciba un paquete.
-sk <señal_puerto_serie_emisor>: es el equivalente al anterior para el emisor.
-s <semilla>: establece la semilla para el generador de números aleatorios. Por defecto se toma un valor aleatorio.
-D : desactiva el algoritmo de Nagle (que evita el envío de paquetes demasiado pequeños en TCP).
-t <duración>: duración en milisegundos.
-d <retardo>: tiempo de retardo hasta que se comienza a generar el flujo en milisegundos. Si se omite vale 0.
-p <tipo_payload>:
0 –> no se envía información en el payload
1 –> se envían sólo secuencias numéricas
2 –> se envía información estándar en el payload (por defecto)
-j <estrategia_throughput>:
0 –> se desactiva la estrategia utilizada para garantizar el throughput medio
1 –> se activa
OPCIONES DE LOG
-l <fichero_log>: genera el fichero de log. Si la métrica es owdm, por defecto no se genera en el emisor. Si la métrica es rttm, sí que se crea con el nombre de c
-x <fichero_log_receptor>: genera el fichero de logs en receptor con el nombre especificado. El nombre por defecto que se genera es itgrecv.log
-L <servidor_logs> <tipo_protocolo>: obliga a que los logs se realicen en un servidor corriendo el ITGLog. Las opciones que se le pasan son la dirección del servidor y el protocolo usado para los mensajes de log hacia el servidor de log, que pueden ser UDP y TCP.
-X <servidor_logs> <tipo_protocolo>: permite al receptor configurar remotamente un servidor de logs.
OPCIONES DE TIEMPO ENTRE SALIDAS (TEP) Y TAMAÑO DE PAYLOAD
-C <tiempo_entre_paquetes>: tiempo constante entre paquetes (paquetes por segundo)
-U <TEP_min> <TEP_max>: TEP según una uniforme entre TEP_min y TEP_max
-E <TEP_media>: TEP según una exponencial de media TEP_media
-V <TEP_posicion> <TEP_dispersión>: TEP según una distribución Pareto con pará¡metro de posición mínima TEP_posición y parámetro de dispersión TEP_dispersión
-Y <TEP_param_forma> <TEP_param_disp>: TEP según una distribución de Cauchy con parámetros de forma y dispersión los dados
-N <TEP_media> <TEP_desv_tip>: TEP según una gaussiana de media TEP_media y desviación típica TEP_desv_tip
-O <TEP_paquetes>: TEP según una distribución de Poisson de TEP_paquetes paquetes por segundo de promedio
-G <TEP_param_forma> <TEP_param_disp>: TEP según una distribución ganma
-W <TEP_param_forma> <TEP_param_disp>: TEP según una distribución Weibull
Si no se proporciona ninguna opción se asume un TEP constante de 1000 paquetes por segundo.
NOTA: También se puede establecer el tamaño de los paquetes según una distribución estadística. Las opciones son las mismas que para el TEP pero en minúsculas. Por ejemplo, si quisiéramos un tamaño entre paquetes según una gaussiana de media 2 y desviación típica 1 usaríamos «-n 2 1». Si no se proporciona ninguna opción de tamaño de paquete se asume un tamaño de paquete (tamaño del payload del paquete en realidad) de 512 bytes.
Es decir:
-C 10000
PROTOCOLOS
-x <codec>:
G.711.1 –> Codec G.711 con 1 muestra por paquete (por defecto)
G.711.2 –> Codec G.711 con 2 muestras por paquete
G.723.1 –> Codec G.723.1
G.729.2 –> Codec G.729 con 2 muestras por paquete
G.729.3 –> Codec G.729 con 3 muestras por paquete
-h <protocolo>:
RTP –> Real Time Protocol
CRTP –> RTP con compresión de cabeceras
-VAP –> Activa la supresión de silencios
NOTA: Especificar un protocolo de aplicación significa no poder seleccionar opciones de tiempo entre paquetes y tamaño del payload de los mismos.