Estressando a Rede com UDPCast!

Com exemplos explico como estressar sua rede interna e identificar problemas em placas de rede cabeadas ou mesmo no WiFi com o udpcast!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Seja pra descobrir qual a real saúde de uma placa de rede cabeada, ou mesmo se seu WiFi está de fato entregando a potência prometida, não existe tanta documentação na internet sobre como estressar uma rede e ver qual o máximo dela. Eu pessoalmente costumo baixar algo pesado na Steam e ver se o que o provedor prometeu e o que a placa entregou condizem.

E nas andanças pela internet, eu encontrei um programa simples pra Linux chamado UDPCast!

2. UDPCast

É um programa criado no protocolo UDP que transmite dados não seguramente na rede. Seu objetivo primário é fazer atualizações e/ou transmitir dados sob demanda facilmente na rede: 1 máquina transmite, as demais aceitam e recebem já nos diretórios especificados, sem usuários, senhas ou criptografia.

O udpcast funciona de forma bastante simples: Ele cria um pequeno servidor de arquivos/pastas, e transmite isso na rede o qual está localizado. A máquina alvo inicia o modo Cliente, que identifica automaticamente o broadcast do programa e aceita as requisições.

E em cima do que ele faz, usaremos o que sabemos sobre os Special Devicesjá abordados aqui na Linux Universe – para transmitir dados sem pesar discos ou RAM: O objetivo é pesar, estressar a rede!

Primeiramente, comecemos do começo.

2.1 Requisitos

Para o adequado teste de rede com o udpcast vamos precisar de 2 computadores. Pode ser 1 computador e 1 smartphone, desde que este smartphone esteja com root ativo, porque vamos precisar de permissões de leitura/escrita na pasta /dev, aonde os dispositivos residem.

O conceito chave no udpcast é que para testar a rede de uma máquina, ela precisa estar… numa rede. E nessa rede deve haver outra máquina que vai receber ou enviar os dados do teste. Portanto, é interessante que sejam de especificação semelhante.
Ou seja, se você quiser testar se seu WiFi 5Ghz do notebook está em capacidade total, a segunda máquina deve ter uma rede igualmente 5Ghz ou estar cabeada em Gigabit (/1000) para que a velocidade seja a maior possível.

Sintetizando, tenha uma máquina que será a cliente e uma máquina que será servidora. Para o funcionamento do udpcast, não precisa se preocupar quem é quem, o teste igualmente estressará as duas, levando-as ao limite*!

* É importante frisar que a máquina com a placa de rede mais lenta vai comandar a velocidade da rede. Ou seja, se uma rede for WiFi 5 Ghz até 100 mbs e o cabo é /1000 até 120 mbps, a velocidade máxima no teste será igual á do WiFi, de até 100mbps.

3. Instalação

Em seu sistema instale o pacote udpcast. Se for Ubuntu, Debian e derivados:

$ sudo apt install udpcast

Se for Fedora e derivados:

$ sudo dnf install udpcast

Se for CentOS e derivados:

$ sudo yum install udpcast

4. Iniciando

4.1 Servidor

Na primeira máquina, seja ela qual for das duas, inicie o udpcast assim (não precisa ser superusuário):

$ udp-sender --file=/dev/zero

Lembra sobre os Dispositivos Especiais? Vamos enviar o conteúdo de /dev/zero, ou seja, todo seu conteúdo! – E esse conteúdo é infinito, um dispositivo fictício preenchido com zeros. Apenas dê Enter e inicie o programa.

Exemplo de saída de comando:

Udp-sender 20120424
Using full duplex mode
Using mcast address 232.168.0.5
UDP sender for /dev/zero at 192.168.0.5 on enp4s0
Broadcasting control to 192.168.0.255

4.2 Cliente

Na segunda máquina, execute o mesmo udpcast, porém em modo cliente:

$ udp-receiver --file=/dev/null

Vamos receber o conteúdo do udpcast e despejá-lo diretamente em /dev/null, ou seja, o abismo do Linux! – E esse conteúdo é infinito, um dispositivo fictício que é nulo, sempre vazio. Apenas dê Enter e inicie o programa.

Haverá uma mensagem de confirmação! Pressione Enter novamente para iniciar a transferência.

OBS: SEMPRE execute primeiro o udp-sender e depois execute o udp-receiver. A ordem das máquinas não importa muito, mas é fundamental que o comando sender venha antes do receiver, para não haverem erros. Além disso, você deverá dar o Ok na máquina RECEIVER para que a transmissão comece.

5. Analisando

Uma vez iniciado o processo de transferência com o udpcast de /dev/zero de uma máquina para o /dev/null de outra, ambas estarão com a placa de rede sob estresse máximo. Observe, em cada máquina, que o uso de rede estará no limite dentro do proposto. Aqui utilizei o mate-system-monitor para verificar, mas você pode verificar com seu System Monitor preferido:

Imagem 1: Gráfico de transferência do meu udpcast. Houve uma oscilação, conforme pode-se observar, porém em 99% do tempo a rede esteve estável. Problemas no cabeamento ou no switch podem causar essas inconstâncias, portanto esteja atento ás possibilidades!

Imagem 2: Resumo da transferência feita com o UDPCast, +170 Gb de /dev/zero para /dev/null a 120 MB/S (rede /1000)

Algumas conclusões podem ser feitas aqui:

  • A transferência de zeros de uma máquina para outra normalmente não possui quaisquer empecilhos. Observe o volume de dados transmitidos se ele se mantém máximo o tempo todo! Se a placa de rede é /100, veja se passa dos 12mbps e se for /1000 se ela passa de 110 mbps. Se a placa possui intermitências no histórico de transferência, conforme a primeira imagem acima, observe se o hardware está mesmo íntegro e na dúvida, troque-o para certificar-se de não ser um problema mais sério, como um chipset da placa mãe com problemas.
  • Se houver quebra, lentidão na transmissão, pode ser que haja problemas com o driver da placa de rede ou, o mais provável, de ser um defeito de hardware. Troque a placa de rede e veja se a transmissão continua problemática ou fica íntegra.
  • Monitore o conteúdo dos logs com: $ journalctl -f
    Qualquer anomalia de hardware será exibida aí.
  • Para monitorar as velocidade do WiFi na rede interna, basta que as máquinas estejam no mesmo WiFi ou que a rede cabeada seja a mesma do WiFi. Isso vale de Notebooks a Celulares, desde que os smartphones estejam rooteados – Ou você terá sérios problemas recebendo a tonelada de pacotes de zeros numa pasta outra que não seja /dev/null!

Ao transmitir o udp broadcast, ele verifica todas as interfaces de rede disponíveis e faz a ligação com qualquer máquina cliente que execute o udpcast, identifique-a na rede e confirmando sua transferência.

5.1 Dicas

  • Atento ao Firewall do seu sistema!
    Ele pode estar habilitado e barrar os pacotes do UDPCast, o que vai causar erros de timeout na hora de fazer os testes.
  • Atento se você utiliza um roteador/wifi com função Switch: Ele pode estar com modo Firewall ligado, o que vai também barrar os pacotes do UDPCast causando erros de timeout.

Os testes que realizei foi numa rede simples, com um modem distribuindo DHCP, e máquinas conectadas no Switch. Quando realizei os testes em outra rede mesclada, com switch 8 portas + roteador wifi que também fez papel de switch, o UDPCast deu erros de timeout e não conseguiu transmitir os pacotes.

6. Encerrar

Para encerrar a transferência dê CTRL+C no terminal do servidor e também do cliente! Assim a conexão será totalmente encerrada.

7. Conclusão

Seja para encontrar problemas com um sinal de WiFi específico, ou mesmo descobrir se sua LAN está bastante otimizada para entregar internet após sair do Modem, o UDPCast com certeza é um método simples e eficiente de se fazer isso!

E você pode fazê-lo num LiveUSB de qualquer distro Linux que contenha esse pacote em seus repositórios. Assim, se você cometer qualquer besteira não correrá o risco de corromper seus dados e/ou seu sistema.

DICA: Se for utilizar o UDPCast para transmitir dados entre muitas máquinas, evite transferir dados sensíveis! Eles podem ser facilmente interceptados por man-in-the-middle. Para dados sensíveis opte por utilizar túneis SSH.

#UrbanCompassPony

Deixe um comentário