iperf3: Tutorial para medir a velocidade entre dois dispositivos LAN e WiFi

iperf3 é a versão mais recente do popular programa iperf para medir a largura de banda entre dois ou mais computadores em uma rede local ou na Internet. Esta nova versão do iperf3 não é compatível com o antigo iperf2, portanto, devemos atualizar o servidor e o cliente se quisermos usar este novo programa. Esta ferramenta permite ajustar vários parâmetros de uma forma muito avançada, relacionados com os protocolos TCP, UDP e SCTP, claro, é compatível com redes IPv4 e IPv6. O Iperf3 passou por um grande número de melhorias que permitem espremer ainda mais o desempenho real da rede local, portanto, é ideal para realizar testes de desempenho de equipamentos Multigigabit e até mesmo 10G. Quer saber como fazer o download e usá-lo para medir o desempenho?

Neste artigo usamos o iperf3 há muito tempo, para medir o desempenho que obtemos na LAN-LAN, LAN-WAN e Wi-fi 6 testes. Descobrimos que ele se comporta muito melhor do que iperf2 assim que ultrapassamos a velocidade de 1 Gbps, portanto, quando usamos roteadores, switches ou pontos de acesso WiFi 6, usamos este programa que nos dá uma medida mais precisa da velocidade que alcançamos .

iperf3

Neste tutorial vamos te ensinar como usar este programa muito interessante para medir a velocidade real entre dois computadores, independentemente de estarem conectados à LAN local ou à Internet, já que utilizando os protocolos TCP e UDP, podemos abrir uma porta no servidor para um ou mais clientes se comunicarem diretamente e verificar a velocidade real.

Recursos principais do Iperf3

iperf3 é um programa totalmente renovado, que nada tem a ver com iperf2, pois não são compatíveis entre si. iperf3 herda o melhor do iperf2 e incorpora novos recursos que nos permitem realizar medições em velocidades multigigabit sem problemas. Para cada teste que realizamos, ele nos informará da largura de banda de upload e download, perda de pacotes e outros parâmetros.

Em relação aos protocolos TCP e SCTP, é capaz de medir a largura de banda, reportar o tamanho da MTU (Unidade Máxima de Transferência) e do MSS (Tamanho Máximo do Segmento), além disso, também suporta configurar o tamanho da janela TCP através do socket amortecedor. Em relação ao UDP, o cliente pode criar diferentes fluxos de dados UDP, permite medir a perda de pacotes, jitter (delay jitter) e ainda suporta multicast. O cliente permite estabelecer várias conexões simultâneas com o servidor, além disso, o servidor é capaz de receber várias conexões simultâneas de várias fontes diferentes. Claro, podemos executá-lo por um certo tempo, ou definir uma certa quantidade de dados a enviar.

Outras características importantes do iperf3 são a capacidade de mostrar periodicamente o status da conexão, a largura de banda até o momento, o jitter, a perda de pacotes, etc. Também podemos fazer o servidor iperf funcionar como um daemon no sistema operacional. Outras novidades incorporadas são a possibilidade de ignorar o Slowstart TCP do próprio protocolo TCP, definir a largura de banda para UDP ou TCP, definir um rótulo de fluxo para IPv6, configurar o algoritmo de controle de congestionamento e a possibilidade de obter todas as informações no formato JSON, e podemos até realizar testes de leitura e escrita diretamente no disco rígido.

Este novo programa iperf3 é licenciado BSD, o que significa que é open source e multi-plataforma, é compatível com Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, sistemas operacionais Solaris e muitos outros.

Download e instalação do Iperf3

Este programa continua seu desenvolvimento, no site oficial Iperf3 você tem as versões mais recentes disponíveis para os diferentes sistemas operacionais. Depois de baixado, teremos que descompactar o arquivo ZIP e poderemos executá-lo, mas neste caso não temos uma interface gráfica ou um script executável, devemos executá-lo através da linha de comando, seja no Windows ou Linux / MacOS.

Executando iperf3 no Windows, Linux e macOS

Uma vez descompactado o ZIP baixado, entramos no prompt de comando (cmd) ou no terminal Linux, passamos com o comando “cd” pelos diferentes diretórios, e quando estamos no diretório iperf3, devemos executá-lo em modo servidor em um PC e em modo cliente em outro PC:

iperf3.exe ./iperf3

Claro que, ao executá-lo, teremos a ajuda do iperf, já que não colocamos nenhum argumento.

Operação e teste de primeira velocidade

O funcionamento do iperf3 é muito simples, a primeira coisa que devemos esclarecer é que se trata de um programa que se executa através da linha de comando, e temos diversos argumentos para configurar seu comportamento. Ao se deparar com um programa cliente-servidor, é necessário executar dois iperf3s, um em um PC como servidor e outro iperf como cliente para verificar a velocidade do cliente ao servidor.

Para inicializar o iperf3 no modo de servidor:

iperf3.exe -s ./iperf3 -s

Para iniciar o iperf3 no modo cliente com certas opções que explicaremos mais tarde:

iperf3.exe -c IP -P 50 -fg -t 5

Depois de sabermos como realizar um teste básico de desempenho com iperf3, vamos mostrar a você todas as opções disponíveis neste programa.

Opções gerais de configuração: para cliente e servidor

Os seguintes argumentos podem ser inseridos após a execução do próprio programa, como segue: “iperf3 -argumentos” e a ordem de inserção dos argumentos não importa.

  • -p porta: podemos escolher a porta a ser usada, TCP ou UDP, esta porta deve estar exatamente no servidor e em todos os clientes.
  • –Portar porta: esta opção permite especificar a porta do lado do cliente, apenas para iperf 3.1 ou superior.
  • -f formato: podemos escolher a unidade de medida que aparecerá quando vemos a velocidade.
    • k: Kbits
    • K: Kbytes/s
    • m: Mbits
    • M: MBytes/s
    • G: Gbps
    • G: GBytes/s
  • -i intervalo: intervalo de tempo medido em segundos onde iperf3 nos mostrará todas as informações sobre largura de banda, jitter e perda de pacotes. Por padrão, é 0.
  • -F nome do arquivo: no cliente é o arquivo lido e escrito na rede local, em vez de usar informações aleatórias. No servidor, é o que é lido da rede e gravado em um arquivo.
  • -B host: permite a ligação a uma placa de rede específica, ideal se tivermos várias interfaces.
  • -V: saída com todos os detalhes (detalhado)
  • -J: saída em formato JSON
  • –Arquivo de log: envia a saída para um arquivo de log (somente iperf 3.1)
  • –D: depurar
  • -v: versão do programa
  • -h: inicia a ajuda do programa

Opções de configuração apenas para servidor

Os seguintes argumentos podem ser inseridos após a execução do próprio programa, como segue: “iperf3 -argumentos” e a ordem de inserção dos argumentos não importa. Esses argumentos só podem ser usados ​​no servidor iperf3.

  • -s: inicia o iperf no modo servidor.
  • -D: inicia o programa em segundo plano como um daemon.
  • -I: grava um arquivo com o ID do processo, ideal para usar com -D (daemon).

Abaixo, você pode ver alguns exemplos.

Podemos executar o servidor iperf3 por padrão, ele usará automaticamente o protocolo TCP na porta 5201.

iperf3.exe -s

Podemos executar o servidor iperf3 com TCP e porta 5000 da seguinte maneira:

./iperf3 -s -p 5000

Opções de configuração exclusivas do cliente

Os seguintes argumentos podem ser inseridos após a execução do próprio programa, como segue: “iperf3 -argumentos” e a ordem de inserção dos argumentos não importa. Esses argumentos só podem ser usados ​​no cliente iperf3.

  • -c IP_address: inicia o iperf no modo cliente para se conectar a um servidor, devemos definir o endereço IP logo em seguida.
  • –Sctp - Use este protocolo SCTP em vez de TCP (padrão).
  • -u: usa o protocolo UDP em vez de TCP (padrão).
  • -b largura de banda: permite definir uma largura de banda em N bits / s, por padrão é 1 MB / s em UDP e ilimitada em TCP. Se usarmos o argumento -P para enviar vários fluxos de dados, essa largura de banda será aplicada a cada um deles.
  • -t time: em segundos para transmitir informações em velocidade máxima. Por padrão, são 10 segundos, mas podemos colocar o que quisermos.
  • -n número: número de dados a serem transmitidos, em vez de usar o tempo (-t) usamos dados.
  • -k pacotes: número de pacotes a transmitir, em vez de usar tempo (-t) ou dados (-n).
  • -l (L minúsculo): comprimento do buffer lido ou escrito.
  • -P número: número de fluxos de dados simultâneos, recomenda-se colocar 5 ou superior para espremer a rede ao máximo.
  • -R: o tráfego iperf normalmente vai do cliente para o servidor, se colocarmos este argumento, o tráfego irá do servidor para o cliente.
  • -w size: especifica o tamanho da janela TCP
  • -M mss: permite configurar o TCP MSS
  • -N: configura a opção TCP sem atraso.
  • -4: usamos redes IPv4.
  • -6: usamos redes IPv6.
  • -S: tipo de serviço para pacotes de saída.
  • Etiqueta -L: permite configurar a etiqueta de fluxo para redes IPv6.
  • -Z: usa o método de cópia zero, reduz bastante o uso da CPU pelo programa.
  • -O segundos: pula os primeiros X segundos do teste, para evitar problemas com a inicialização lenta do TCP e nos fornecer uma medição sem o burst no início.
  • -T título: permite que você coloque um título na frente de cada string
  • Algoritmo -C: permite configurar o algoritmo de congestionamento, apenas no Linux com iperf 3.0 e no FreeBSD com iperf 3.1

Abaixo, você pode ver alguns exemplos.

Podemos executar o cliente iperf3 com alguns argumentos muito interessantes:

iperf3.exe -c 192.168.1.10 -P 50 -p 5000 -fg -t 5

  • -c 192.168.1.10: funciona em modo cliente com o IP definido.
  • -P 50: enviamos um total de 50 conexões TCP
  • -p 5000: usamos a porta 5000, o padrão é 5201
  • -fg: mostramos a velocidade em Gbps
  • -t 5: iniciamos o teste por 5 segundos.

Como você viu, este programa iperf3 é muito simples porque nos permite executar um iperf com uma interface gráfica de usuário, sem a necessidade de inserir comandos e argumentos complicados.