En el siguiente anexo se indica como instalar y generar tráfico entre dos máquinas utilizando la herramienta iperf para el análisis técnico Cisco ASR1002 Router.
Iperf de su definición de la Wikipedia:
Iperf es una herramienta que se utiliza para hacer pruebas en redes informáticas. El funcionamiento habitual es crear flujos de datos TCP y UDP y medir el rendimiento de la red. Iperf fue desarrollado por el Distributed Applications Support Team (DAST) en el National Laboratory for Applied Network Research (NLANR) y está escrito en C++.
Básicamente Iperf necesita de 2 elementos para poder realizar las pruebas. En un extremo un equipo que realiza las funciones de servidor y en el otro extremo un equipo que realiza las funciones de cliente. El equipo cliente es el encargado de generar el tráfico hacia el servidor. En la versión 3 de iperf se ha deshabilitado la función de crear tráfico bidireccional por lo que para crear tráfico full dúplex hay que crear varias instancias de cliente servidor en puertos distintos.
Windows 7
Instalación
Para instalar iperf hay que descargarse la versión de nuestro sistema operativo desde la siguiente WEB. En este caso se ha descargado la versión 3.
https://iperf.fr/iperf-download.php
Una vez descargado el archivo lo descomprimimos por ejemplo en c:/
Nota: iperf3 no es compatible con las versiones anteriores
Ejecución como servidor
Para ejecutar iperf como servidor hay que abrir una ventana de cmd e ir al directorio donde hemos descomprimido iperf. En el caso del ejemplo los pasos son los siguientes:
– cd c:/
– cd iperf
– cd iperf-3.1.3-win64
Una vez ubicados en la carpeta correcta para ejecutar el servidor como
– iperf3.exe -s -p 5301
• • -s: indica que iperf trabaja como servidor
• • – p: puerto en el que el servidor está esperando el tráfico
Ejecución como cliente
Para ejecutar iperf como cliente hay que abrir una nueva ventana de cmd e ir al directorio donde hemos descomprimido iperf. En el caso del ejemplo los pasos son los siguientes:
– cd c:/
– cd iperf
– cd iperf-3.1.3-win64
Una vez ubicados en la carpeta correcta para ejecutar el servidor como
– iperf3.exe -c 10.42.0.2 -t 86400 -i 1 -b 10G -p 5300
• -c: indica que iperf trabaja como servidor
• 10.42.0.2: ip del servidor que está esperando conexión
• -t: tiempo durante el cual el equipo va a estar generando tráfico
• -b: tráfico objetivo que se quiere alcanzar. En el caso de ejemplo 10 Gbps
• -p: puerto que el servidor está esperando las conexiones
Ubuntu Server
Instalación
Para instalar iperf en Ubuntu server hay que ejecutar el siguiente comando en el terminal
apt-get install iperf3
Una vez instalado la ejecución de comandos es simular a Windows 7
Ejecución como servidor
Para ejecutar iperf como servidor hay que ejecutar el siguiente comando desde el terminal
– iperf -s -p 5301
• • -s: indica que iperf trabaja como servidor
• • – p: puerto en el que el servidor está esperando el tráfico
Ejecución como cliente
Para ejecutar iperf como cliente hay que abrir una nueva sesión de terminal y ejecutar el siguiente comando
– iperf3 -c 10.42.0.2 -t 86400 -i 1 -b 10G -p 5300
• -c: indica que iperf trabaja como servidor
• 10.42.0.2: ip del servidor que está esperando conexión
• -t: tiempo durante el cual el equipo va a estar generando tráfico
• -b: tráfico objetivo que se quiere alcanzar. En el caso de ejemplo 10 Gbps
• -p: puerto que el servidor está esperando las conexiones
Resultados y comentarios del análisis técnico Cisco ASR1002 Router
Si la configuración en ambos extremos ha sido correcta se puede ver algo parecido a esto en el terminal
root@kickseed:/home/usuario# iperf3 -s -p 5302
———————————————————–
Server listening on 5302
———————————————————–
Accepted connection from 10.42.0.2, port 63705
[ 5] local 10.101.100.41 port 5302 connected to 10.42.0.2 port 63706
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 15.2 MBytes 127 Mbits/sec
[ 5] 1.00-2.00 sec 18.9 MBytes 159 Mbits/sec
[ 5] 2.00-3.00 sec 19.1 MBytes 160 Mbits/sec
[ 5] 3.00-4.00 sec 19.8 MBytes 166 Mbits/sec
[ 5] 4.00-5.00 sec 19.6 MBytes 164 Mbits/sec
[ 5] 5.00-6.00 sec 19.5 MBytes 164 Mbits/sec
[ 5] 6.00-7.00 sec 21.4 MBytes 180 Mbits/sec
[ 5] 7.00-8.00 sec 21.4 MBytes 179 Mbits/sec
[ 5] 8.00-9.00 sec 21.7 MBytes 182 Mbits/sec
[ 5] 9.00-10.00 sec 21.7 MBytes 182 Mbits/sec
[ 5] 10.00-11.00 sec 21.6 MBytes 181 Mbits/sec
[ 5] 11.00-12.00 sec 21.2 MBytes 178 Mbits/sec
[ 5] 12.00-13.00 sec 21.4 MBytes 180 Mbits/sec
[ 5] 13.00-14.00 sec 20.8 MBytes 175 Mbits/sec
Es importante destacar que es posible que se tenga que generar más de un flujo en ambos sentidos para poder alcanzar las velocidades objetivo de los enlaces. Esto puede ser debido a varios factores como son el propio iperf o los dispositivos que forman parte de la comunicación. El motivo por el cual ocurre esto queda fuera del alcance de este documento
Opciones iperf
A continuación, se enumeran todas las posibles opciones que ofrece iperf
Usage: iperf [-s|-c host] [options]
iperf [-h|–help] [-v|–version]
Server or Client:
-p, –port # server port to listen on/connect to
-f, –format [kmgKMG] format to report: Kbits, Mbits, KBytes, MBytes
-i, –interval # seconds between periodic bandwidth reports
-F, –file name xmit/recv the specified file
-A, –affinity n/n,m set CPU affinity
-B, –bind bind to a specific interface
-V, –verbose more detailed output
-J, –json output in JSON format
–logfile f send output to a log file
-d, –debug emit debugging output
-v, –version show version information and quit
-h, –help show this message and quit
Server specific:
-s, –server run in server mode
-D, –daemon run the server as a daemon
-I, –pidfile file write PID file
-1, –one-off handle one client connection then exit
Client specific:
-c, –client run in client mode, connecting to
-u, –udp use UDP rather than TCP
-b, –bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited)
(default 1 Mbit/sec for UDP, unlimited for TCP)
(optional slash and packet count for burst mode)
-t, –time #time in seconds to transmit for (default 10 secs)
-n, –bytes #[KMG] number of bytes to transmit (instead of -t)
-k, –blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n)
-l, –len #[KMG] length of buffer to read or write
(default 128 KB for TCP, 8 KB for UDP)
–cport bind to a specific client port (TCP and UDP, default: ephemeral port)
-P, –parallel # number of parallel client streams to run
-R, –reverse run in reverse mode (server sends, client receives)
-w, –window #[KMG] set window size / socket buffer size
-C, –congestion set TCP congestion control algorithm (Linux and FreeBSD only)
-M, –set-mss # set TCP/SCTP maximum segment size (MTU – 40 bytes)
-N, –no-delay set TCP/SCTP no delay, disabling Nagle’s Algorithm
-4, –version4 only use IPv4
-6, –version6 only use IPv6
-S, –tos N set the IP ‘type of service’
-L, –flowlabel N set the IPv6 flow label (only supported on Linux)
-Z, –zerocopy use a ‘zero copy’ method of sending data
-O, –omit N omit the first n seconds
-T, –title str prefix every output line with this string
–get-server-output get results from server
–udp-counters-64bit use 64-bit counters in UDP test packets
–no-fq-socket-pacing disable fair-queuing based socket pacing
(Linux only)
[KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga-
Para el entorno de pruebas diseñado pueden utilizarse como receptor/generador de tráfico cualquier PC y sistema operativo además de servidores de las series HP DL360, DL380 de las generaciones G6, G7, G8 o superiores o de las series de DELL R410, R510, R620. Además este entorno de pruebas es valido para realizar pruebas sobre los distintos routers de la serie ASR1000 (ASR1001, ASR1002, ASR1004, ASR1006, ASR1009, ASR1001-X etc…) o cualquier otro router de los distintos fabricantes como Cisco, Juniper etc…
Esperamos que este análisis os sirva de ayuda y abajo os facilitamos enlaces a la parte I y parte II.