클라이언트와 서버 간의 iperf 출력 차이

클라이언트와 서버 간의 iperf 출력 차이

지난 4시간 동안 iperf를 가지고 놀았는데 왜 클라이언트와 서버에서 결과가 다른지 이해할 수 없습니다.

클라이언트에서 다음 iperf 출력을 고려하세요.

iperf -c 91.121.112.163 -p 2222
------------------------------------------------------------
Client connecting to 91.121.112.163, TCP port 2222
TCP window size: 1.06 MByte (default)
------------------------------------------------------------
[  3] local 10.0.0.160 port 36726 connected with 91.121.112.163 port 2222
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-11.4 sec  1.88 MBytes  1.38 Mbits/sec

다음은 서버의 해당 출력입니다.

iperf -V -s -p 2222
------------------------------------------------------------
Server listening on TCP port 2222
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local ::ffff:91.121.112.163 port 2222 connected with ::ffff:86.209.154.156 port 36726
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-19.1 sec  1.88 MBytes   823 Kbits/sec

그렇다면 클라이언트는 1.38Mbits/sec로 업로드하지만 서버는 823kbits/sec로 수신하고 있습니까?

누군가 이러한 혼란스러운 결과에 대해 설명할 수 있습니까?

답변1

문제는 클라이언트가 아웃바운드 트래픽을 버퍼링한 장치와 통신하고 있다는 것입니다. 따라서 클라이언트는 서버가 실제로 마지막 데이터 블록을 수신하기 전에 통신이 완료되었다고 믿습니다. 나는 iperf에서 이것을 많이 발견했습니다. 서버의 초 단위 보고서는 클라이언트 보고서보다 훨씬 안정적입니다. 나는 또한첫 번째클라이언트의 두 번째는 항상 가장 높은 처리량입니다. 이는 경로를 따라 모든 장치의 버퍼를 채우는 것이라고 가정합니다. 다음은 7Mbps로 양방향으로 형성되는 링크를 테스트하는 클라이언트와 서버입니다.

------------------------------------------------------------
Client connecting to 204.22.22.104, TCP port 5001
TCP window size: 20.0 KByte (default)
------------------------------------------------------------
[  3] local 10.125.20.100 port 49248 connected with 204.22.22.104 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  1.12 MBytes  9.44 Mbits/sec
[  3]  1.0- 2.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  2.0- 3.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  3.0- 4.0 sec   896 KBytes  7.34 Mbits/sec
[  3]  4.0- 5.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  5.0- 6.0 sec   896 KBytes  7.34 Mbits/sec
[  3]  6.0- 7.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  7.0- 8.0 sec   896 KBytes  7.34 Mbits/sec
[  3]  8.0- 9.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  9.0-10.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  0.0-10.2 sec  8.38 MBytes  6.91 Mbits/sec
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 204.22.22.104 port 5001 connected with 10.125.20.100 port 49248
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 1.0 sec   828 KBytes  6.78 Mbits/sec
[  4]  1.0- 2.0 sec   764 KBytes  6.25 Mbits/sec
[  4]  2.0- 3.0 sec   857 KBytes  7.02 Mbits/sec
[  4]  3.0- 4.0 sec   815 KBytes  6.68 Mbits/sec
[  4]  4.0- 5.0 sec   811 KBytes  6.64 Mbits/sec
[  4]  5.0- 6.0 sec   814 KBytes  6.66 Mbits/sec
[  4]  6.0- 7.0 sec   815 KBytes  6.68 Mbits/sec
[  4]  7.0- 8.0 sec   814 KBytes  6.66 Mbits/sec
[  4]  8.0- 9.0 sec   812 KBytes  6.65 Mbits/sec
[  4]  9.0-10.0 sec   806 KBytes  6.60 Mbits/sec
[  4]  0.0-10.6 sec  8.38 MBytes  6.64 Mbits/sec

답변2

클라이언트로부터: (강조)

[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-**11.4** sec  1.88 MBytes  1.38 Mbits/sec

서버에서:

[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-**19.1** sec  1.88 MBytes   823 Kbits/sec

어떤 이유로 인해 서버는 테스트가 클라이언트보다 약 8초 더 오래 걸린다고 생각합니다. 이는 (서버 관점에서) 전체 대역폭을 823Kbps로 떨어뜨리기에 충분합니다.

관련 정보