Para diagnosticar a diferença no tráfego de rede entre dois locais e nosso principal centro de servidores, estou usando o iperf para registrar a taxa de tráfego com o seguinte comando:
iperf -c <server ip> -F 500MB_Test_File.zip -n 500M -y C
Depois de observar as disparidades entre o upload e a taxa de download, eu queria usar a opção -d
e tropecei em um comportamento estranho: embora a transferência tenha passado do cliente para a direção do servidor, na outra direção ela congelou e não parece ser. Aqui está um teste que fiz, que mostra que ele não está conectado ao fato de eu estar usando um arquivo como fonte para a transferência de dados:
$ iperf -c <server IP> -d -i 1
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to <server ip>, TCP port 5001
TCP window size: 153 KByte (default)
------------------------------------------------------------
[ 5] local <local ip> port 35144 connected with <server ip> port 5001
[ 4] local <local ip> port 5001 connected with <server ip> port 39967
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 1.0 sec 9.75 MBytes 81.8 Mbits/sec
[ 4] 0.0- 1.0 sec 10.7 MBytes 89.3 Mbits/sec
[ 5] 1.0- 2.0 sec 10.9 MBytes 91.2 Mbits/sec
[ 4] 1.0- 2.0 sec 10.9 MBytes 91.3 Mbits/sec
[ 5] 2.0- 3.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 2.0- 3.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 3.0- 4.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 3.0- 4.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 4.0- 5.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 4.0- 5.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 5.0- 6.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 5.0- 6.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 6.0- 7.0 sec 10.9 MBytes 91.2 Mbits/sec
[ 4] 6.0- 7.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 7.0- 8.0 sec 11.2 MBytes 94.4 Mbits/sec
[ 4] 7.0- 8.0 sec 10.9 MBytes 91.4 Mbits/sec
[ 5] 8.0- 9.0 sec 11.1 MBytes 93.3 Mbits/sec
[ 5] 9.0-10.0 sec 11.1 MBytes 93.3 Mbits/sec
[ 5] 0.0-10.0 sec 109 MBytes 91.4 Mbits/sec
^C^C
Estou usando o iperf 2.0.5. Ambos os clientes e o servidor são máquinas linux, sendo o servidor virtual.
EDITAR
Depois de seguir a sugestão do MariusMatutiae , iniciei o servidor iperf na máquina cliente e tentei fazer a solicitação bidirecional da VM e aqui está o que eu recebi:
[host@centos ~]$ iperf -c <client_id> -d -i 1
bind failed: Address already in use
------------------------------------------------------------
Client connecting to <client_id>, TCP port 5001
TCP window size: 19.3 KByte (default)
------------------------------------------------------------
[ 4] local <server_id> port 40175 connected with <client_id> port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 11.6 MBytes 97.5 Mbits/sec
[ 4] 1.0- 2.0 sec 9.50 MBytes 79.7 Mbits/sec
[ 4] 2.0- 3.0 sec 10.6 MBytes 89.1 Mbits/sec
[ 4] 3.0- 4.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 4.0- 5.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 5.0- 6.0 sec 10.9 MBytes 91.2 Mbits/sec
[ 4] 6.0- 7.0 sec 11.0 MBytes 92.3 Mbits/sec
[ 4] 7.0- 8.0 sec 10.8 MBytes 90.2 Mbits/sec
[ 4] 8.0- 9.0 sec 8.38 MBytes 70.3 Mbits/sec
[ 4] 9.0-10.0 sec 9.75 MBytes 81.8 Mbits/sec
[ 4] 0.0-10.0 sec 105 MBytes 87.8 Mbits/sec
[host@centos ~]$
Eu pensei, ótimo, o comando para de si mesmo, mas eu só obtenho os resultados em uma direção. Isso é até que eu olhei para a máquina onde eu iniciei o servidor iPerf desta vez e vi isso:
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local <client_ip> port 5001 connected with <server_ip> port 40179
------------------------------------------------------------
Client connecting to <server_ip>, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 6] local <client_ip> port 36243 connected with <server_ip> port 5001
[ ID] Interval Transfer Bandwidth
[ 6] 0.0-10.0 sec 45.4 MBytes 38.0 Mbits/sec
[ 4] 0.0-10.2 sec 64.2 MBytes 52.8 Mbits/sec
Isso me fez pensar que talvez eu precise iniciar um servidor como daemon em ambos os lados da conexão para que o comando bidirecional funcione e, de fato, obtive resultados semelhantes, apenas exibindo o desempenho em um lado da transação, mas como tal eu não tenho como obter os dados de performance do outro lado: eu iniciei o daemon iperf com -D > iperflog
mas o log não parece estar preenchido ...
Supõe-se que seja assim, que um iperf deve estar rodando em ambas as máquinas para passar por uma solicitação bidirecional? A mensagem bind failed: Address already in use
que recebo quando inicio um cliente iperf e um servidor está executando em ambos os lados uma pista de onde pode estar o problema? Tenho a sensação de que o que estou fazendo não deveria ser o procedimento padrão ...