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 .

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.