terça-feira, 6 de julho de 2010

IPerf: Ferramenta para auxiliar na identificação de problemas na rede

-->Assim como o comando “ping”, o “Iperf” é uma ferramenta simples e muito eficiente para medir a largura de banda e a qualidade de um determinado link de rede. Para que os testes com o Iperf sejam bem sucedidos, é necessário que as duas pontas (tanto o cliente, quanto o servidor), estejam rodando o comando. Mesmo sendo um comando simples, é possível realizar diversos testes com ele, que ajudam um administrador a identificar problemas na rede, sendo compatível tanto com plataformas Unix/Linux como com Windows.
Note que afim de testar equipamentos de rede como hubs, routers ou switches, deve-se levar em consideração o processamento tanto do servidor, quanto do cliente. Ao fazer o teste entre dois pontos, é recomendável ligá-los primeiramente via cabo cross-over e rodar os testes. Dessa maneira, você terá um parâmetro de comparação quando conectá-los novamente a um dispositivo concentrador para efetuar os testes num ambiente real. Também é importante que a porta 5100 seja liberada no firewall (caso houver um).
A qualidade de um link pode ser medida da seguinte maneira:
 

- Latência (tempo de resposta ou RTT): pode ser medida através de um comando “ping”;
- Jitter (variação de latência): pode ser medida com o Iperf usando o protocolo UDP;

- Perda de datagramas: pode ser medida com o Iperf usando o protocolo UDP;

- Largura de banda: pode ser medida com o Iperf usando o protocolo TCP.


A diferença entre o TCP (Protocolo de Controle de Transmissão) e o UDP (Protocolo de Datagrama de Usuário) é que o TCP é um protocolo orientado a conexão, ou seja, usa mecanismos para verificar se o pacote foi corretamente entregue ao receptor; já o UDP é enviado sem qualquer tipo de checagem, e, pela mesma razão, é mais rápido que o TCP, apesar de não ter garantia de entrega.
Ao rodarmos o comando “iperf –help” a plataforma Windows, teremos a seguinte tela:

 

-->Alguns desses parâmetros da sintaxe são explicados a seguir.

Configuração padrão do Iperf: por padrão, o cliente usa a porta 5001 para conectar-se ao servidor, sendo que a largura de banda mostrada é a largura do cliente para o servidor e os testes são feitos com o protocolo TCP. Para usar o protocolo UDP usa-se a opção “-u” e para medir a largura de banda de modo bidirecional, usam-se as opções “-d” ou “-r” que serão vistas em seguida.

Servidor: iperf -s
 

 

Cliente: iperf –c 10.51.10.15

 
 
-->
No exemplo acima, o cliente 10.51.10.200 testou sua largura de banda com o servidor 10.51.10.15, resultando numa taxa de 93.8 Mbps (Mbits/sec).

Parâmetro “-f” (tipo de formato): ao utilizar o argumento –f podemos escolher o formato de saída do comando que são bits (b), bytes (B), kilobits (k), kilobytes (K), megabits (m), megabytes (M), gigabits (g) ou gigabytes (G). O padrão é que a largura de banda seja medida em bits, kilobits, etc e a quantidade de dados transferidos seja expresso em bytes, kylobytes, etc.

Servidor: iperf –s

Cliente: iperf –c 10.51.10.15 –fb


 

 
-->No exemplo acima o cliente 10.51.10.200 testou sua largura de banda com o servidor transmitindo 109551616 bytes (109551616 / 1024 / 1024 = 104 Mbytes) em 10 segundos, resultando numa largura de banda de 87639891 bits (87639891 / 1024 / 1024 = 83,57 Mbits).

Parâmetro “–r” (Medição Bi-direcional): com o uso desse parâmetro, o servidor se conecta de volta no cliente, permitindo que o teste seja medido bi-direcionalmente.

Servidor: iperf –s

Cliente: iperf –c 10.51.10.15 –r


 

-->No exemplo acima, o cliente 10.51.10.200 testou sua largura de banda com o servidor 10.51.10.15 que resultou em 93.3 Mbits/sec após transmitir 111MB em 10 segundos. Logo depois, o servidor testou sua largura de banda com o cliente, resultando numa taxa de 39.3 Mbits/sec. transmitindo 46.9 MB em 10 segundos. E nesse ponto você deve estar se perguntando: “Mas por que a ida (cliente -> servidor) foi mais rápida do que a volta (servidor -> cliente)?”. Boa pergunta, e quer saber qual a única diferença? No servidor eu estava rodando o Kaspersky Internet Security 2010 e no cliente, não tinha nenhuma suíte de segurança rodando. Absurdo não? Mas como comentei no início desse artigo, a carga de processamento dos pontos, influi bastante no resultado. Veja o mesmo teste, sem o antivírus ser carregado no servidor:


No exemplo acima, o cliente 10.51.10.200 testou sua largura de banda com o servidor 10.51.10.15 que resultou em 93.7 Mbits/sec após transmitir 112MB em 10 segundos. Logo depois, o servidor testou sua largura de banda com o cliente, resultando numa taxa de 84.5 Mbits/sec. transmitindo 101 MB em 10 segundos. Portanto fica a dica: para usuários do KIS 2010, é possível desabilitar a verificação de determinadas portas do computador, entrando no menu “Configurações” -> “Rede” -> “Monitorar somente as portas selecionadas” e remover as portas que não deseja que sejam verificadas. Desaconselho desabilitar a detecção dessas portas, mas caso na guerra entre “velocidade x segurança”, você seja do time da velocidade, eis como desabilitá-la ;o)
 


Só para título de conhecimento, eu sou do time da “segurança”, portanto volto a habilitar a verificação dessa porta ;o)

Parâmetro “-d” (Medição Bi-direcional simultânea): com o uso desse parâmetro, o servidor se conecta de volta no cliente, permitindo que o teste seja medido bi-direcionalmente e simultaneamente, aproximando mais de um comportamento full-duplex.

Servidor: iperf –s

Cliente: iperf –c 10.51.10.15 –d


 

No exemplo acima, o cliente 10.51.10.200 testou sua largura de banda com o servidor 10.51.10.15 simultaneamente.
Parâmetros “-p” (porta), “-t” (duração) e “-i” (intervalo): a porta de comunicação pode ser alterada com o parâmetro –p, caso seja necessário rodar o Iperf numa porta diferente da 5001. É importante que cliente e servidor tenham a mesma porta configurada no comando. Já o parâmetro “-t” especifica a duração do teste em segundos sendo que o padrão são 10 segundos. O parâmetro “-i” por sua vez, indica o intervalo em segundos entre a exibição dos relatórios de largura de banda.

Servidor: iperf –s –p 40000



 

-->Cliente: iperf –c 10.51.10.15 –p 40000 –t 15 –i 2

 
 
No exemplo acima, o cliente 10.51.10.200 testou sua largura de banda com o servidor 10.51.10.15 na porta 40000 por 15 segundos, atualizando informações a cada 2 segundos.

Parâmetros “-u” (protocolo UDP) e “-b” (configurações de largura de banda): através dos testes com o protocolo UDP, é possível obtermos informações sobre a perda de pacotes e o jitter da rede. Para um link de rede saudável, a perda de pacotes não pode ser maior do que 1% do tráfego da rede. Uma alta taxa de perda de pacotes, resultará numa quantidade grande de retransmissão de pacotes TCP, afetando gravemente a largura de banda. Já o jitter trata-se de uma variação de latência da rede, e não depende apenas da latência. É possível ter um bom tempo de resposta e um jitter muito baixo. O valor do jitter é especialmente importante nos links de rede que suportam VoIP, pois um jitter muito alto pode derrubar uma chamada. O argumento –b permite a alocação da largura de banda desejada.

Servidor: iperf –s –u –i 1

 

 Cliente: iperf –c 10.51.10.15 –u –b -10m

 

No exemplo acima o cliente 10.51.10.200 testou seu jitter e a perda de pacotes com o servidor 10.51.10.15. Note que o jitter não ocorreu “0.00ms” e que a taxa de perda de pacotes foi de 0,52%.

Baixe o IPerf e boas medições ;o)

Este artigo foi baseado no tutorial do Iperf do OpenManiak, disponível em http://openmaniak.com/iperf.php. Neste link é possível ver mais opções do Iperf, bem como conhecer o Jperf, que é um front-end em Java do Iperf.

O Iperf pode ser baixado em: http://www.noc.ucf.edu/Tools/Iperf/iperf.exe
-->
Related Posts Plugin for WordPress, Blogger...