소개
이 문서에서는 레이턴시가 높은 고속 네트워크와 관련된 문제를 설명합니다.지정된 조건에서 실제 대역폭 사용량을 계산하기 위해 BDP에서 공식을 파생합니다.
배경 정보
점점 더 많은 기업이 지리적으로 분산된 데이터 센터를 구축하고 고속 링크를 통해 데이터 센터를 상호 연결하는 프로세스를 진행하고 있습니다.대역폭을 더 잘 활용해야 할 필요성이 증가하고 있습니다.
BDP(Bandwidth-Delay Product)는 몇 년 동안 인터넷에 게시되었습니다.그러나 실제 사례는 없다.BDP 수식은 TCP 창 크기에 중점을 둡니다.거리를 기준으로 가능한 대역폭 사용량을 계산할 수 있는 방법이 없습니다.이 문서에서는 BDP에 대해 간략하게 설명하고 이슈 및 해결 방법을 보여 줍니다.이 문서에서는 지정된 조건에서 대역폭 사용량을 계산하는 수식을 도출합니다.
문제 개요
회사에는 두 개의 데이터 센터가 있습니다.회사에서 하나의 데이터 센터에서 다른 데이터 센터로 비즈니스 크리티컬 데이터를 백업합니다.백업 관리자가 네트워크 장애로 인해 백업 윈도우 내에서 백업을 완료할 수 없다고 보고했습니다.네트워크 관리자는 네트워크 속도 문제를 조사하도록 할당됩니다.다음과 같은 요소를 알고 있습니다.
- 이 두 데이터 센터는 1,000KM 떨어져 있습니다.
- 이러한 데이터 센터는 1Gbps 링크를 통해 상호 연결됩니다.
조사 결과, 다음과 같은 사실을 알게 되었습니다.
- 가용 대역폭이 충분합니다.
- 네트워크 하드웨어 또는 소프트웨어 문제가 없습니다.
- 백업 애플리케이션은 나머지 990Mbps 대역폭에도 약 10Mbps의 대역폭만 사용합니다.
- 백업 애플리케이션은 TCP를 사용하여 데이터를 전송합니다.
대역폭 지연 제품
백업 애플리케이션의 질문에 답하기 위해 10Mbps만 사용한다는 점에 대해 BDP(Bandwidth-Delay Product)를 도입했습니다.
BDP는 다음과 같은 내용을 담고 있습니다.
BDP(비트) = total_available_bandwidth(비트/초) x round_trip_time(초)
또는 RWIN/BDP는 일반적으로 바이트 단위이므로 레이턴시는 밀리초 단위로 측정됩니다.
BDP(바이트) = total_available_bandwidth(KBytes/sec) x round_trip_time(ms)
이는 TCP Window가 서버가 중지되고 수신된 패킷의 확인을 기다리는 동안 전송할 수 있는 데이터의 양을 결정하는 버퍼임을 의미합니다.처리량은 기본적으로 BDP에 의해 좌우됩니다.BDP(또는 RWIN)가 대기 시간 및 사용 가능한 대역폭의 제품보다 낮은 경우 클라이언트가 응답을 충분히 빠르게 보낼 수 없으므로 줄을 채울 수 없습니다.전송은 (RWIN / latency) 값을 초과할 수 없으므로 RWIN(TCP Window)은 maximum_available_bandwidth x maximum_expaiaded_delay에 맞게 충분히 커야 합니다.
위 공식으로파생된 대역폭 계산 수식은 다음과 같습니다.
대역폭 사용량(Kbps)=BDP(바이트)/RTT(ms) * 8
참고:이 공식은 이론상 최대 대역폭 사용량을 계산합니다.사용 가능한 메모리, NIC 드라이버, 로컬 NIC 속도, 캐시 또는 심지어 디스크 속도 등과 같은 여러 가지 요인이 있기 때문에 OS의 패킷 전송 시간을 고려하지 않습니다.따라서 TCP 창 크기가 클 경우 계산된 대역폭은 실제 대역폭보다 큽니다.TCP 창 크기가 매우 클 경우 편차도 커질 수 있습니다.
파생된 수식을 사용하면 아래 계산을 수행하여 백업 애플리케이션이 10Mbps만 사용할 수 있는 이유에 대한 질문에 답할 수 있습니다.
- 일반적으로 1000KM의 RTT는 ~15ms이므로 RTT=15ms
- 기본적으로 Windows 2003 운영 체제 Windows 크기는 17,520바이트입니다.따라서 BDP=17,520바이트
- 다음 숫자를 공식에 넣습니다.
대역폭 사용량(Kbps) = 17520/15*8.
결과는 9344Kbps 또는 9.344Mbps입니다.9.344Mbps + TCP 및 IP 헤더최종 결과는 ~10Mbps입니다.
다음을 확인합니다.
네트워크 관리자로서 귀하는 이론적으로 질문에 답변했습니다.이제 현실 세계에서 그 이론을 확인할 필요가 있다.
모든 네트워크 성능 테스트 툴을 사용하여 이론을 확인할 수 있습니다.iperf를 실행하여 문제 및 해결 방법을 시연하도록 결정했습니다.
다음은 랩 설정입니다.
- IP 주소가 10.10.1.1인 데이터 센터 1의 서버.
- IP 주소가 172.16.2.1인 데이터 센터 2의 클라이언트.
토폴로지는 다음과 같습니다.
다음 단계에 따라 확인하십시오.
- iperf3 -s -p 5001을 10.10.1.1에서 실행하여 서버로 지정하고 TCP 포트 5001에서 수신 대기합니다.
- 기본 TCP 창 크기 17,520바이트로 테스트하려면iperf3 -c 10.10.1.1 -i 1 -t 360 -w 17520 -p 5001을 172.16.2.1에서 실행하여 클라이언트로 만듭니다.이 명령은 iperf에게 포트 5001의 서버에 연결하도록 지시하고, 360초 동안 실행되며, TCP Windows 크기 17,520바이트의 대역폭 사용량을 1초마다 보고합니다.
- 사용자 지정된 TCP 창 크기(예: 6,553,500바이트)로 테스트하려면 iperf3 -c 10.10.1.1 -i 1 -t 360 -w 6553500 -p 501을 실행합니다.
기본 TCP 창 크기가 17,520바이트인 랩 테스트 결과입니다.대역폭 사용량이 ~10Mbps임을 확인할 수 있습니다.
C:\Tools>iperf3.exe -c 10.10.1.1 -t 360 -p 5001 -i 1 -w 17520
Connecting to host 10.10.1.1, port 5001
[ 4] local 172.16.2.1 port 49650 connected to 10.10.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 1.30 MBytes 10.9 Mbits/sec
[ 4] 1.00-2.02 sec 919 KBytes 7.41 Mbits/sec
[ 4] 2.02-3.02 sec 1.28 MBytes 10.7 Mbits/sec
[ 4] 3.02-4.02 sec 1.14 MBytes 9.59 Mbits/sec
[ 4] 4.02-5.01 sec 1.24 MBytes 10.4 Mbits/sec
[ 4] 5.01-6.01 sec 1.33 MBytes 11.3 Mbits/sec
[ 4] 6.01-7.01 sec 1.15 MBytes 9.65 Mbits/sec
[ 4] 7.01-8.01 sec 1.12 MBytes 9.36 Mbits/sec
[ 4] 8.01-9.01 sec 1.22 MBytes 10.3 Mbits/sec
[ 4] 9.01-10.01 sec 1.13 MBytes 9.49 Mbits/sec
[ 4] 10.01-11.01 sec 1.30 MBytes 10.8 Mbits/sec
[ 4] 11.01-12.01 sec 1.17 MBytes 9.84 Mbits/sec
[ 4] 12.01-13.01 sec 1.13 MBytes 9.48 Mbits/sec
[ 4] 13.01-14.01 sec 1.28 MBytes 10.7 Mbits/sec
[ 4] 14.01-15.01 sec 1.40 MBytes 11.8 Mbits/sec
[ 4] 15.01-16.01 sec 1.24 MBytes 10.4 Mbits/sec
[ 4] 16.01-17.01 sec 1.30 MBytes 10.9 Mbits/sec
[ 4] 17.01-18.01 sec 1.17 MBytes 9.78 Mbits/sec
TCP 윈도우 크기가 6,553,500바이트인 랩 테스트 결과입니다.대역폭 사용량이 ~200Mbps임을 확인할 수 있습니다.
C:\Tools>iperf3.exe -c 10.10.1.1 -t 360 -p 5001 -i 1 -w 6553500
Connecting to host 10.10.1.1, port 5001
[ 4] local 172.16.2.1 port 61492 connected to 10.10.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 29.1 MBytes 244 Mbits/sec
[ 4] 1.00-2.00 sec 25.4 MBytes 213 Mbits/sec
[ 4] 2.00-3.00 sec 26.9 MBytes 226 Mbits/sec
[ 4] 3.00-4.00 sec 18.2 MBytes 152 Mbits/sec
[ 4] 4.00-5.00 sec 25.8 MBytes 217 Mbits/sec
[ 4] 5.00-6.00 sec 28.8 MBytes 241 Mbits/sec
[ 4] 6.00-7.00 sec 26.1 MBytes 219 Mbits/sec
[ 4] 7.00-8.00 sec 21.1 MBytes 177 Mbits/sec
[ 4] 8.00-9.00 sec 22.5 MBytes 189 Mbits/sec
[ 4] 9.00-9.42 sec 9.54 MBytes 190 Mbits/sec
솔루션
소프트웨어 개발 관점에서 다중 스레딩을 통해 여러 동시 TCP 세션을 실행할 경우 대역폭 사용량이 개선될 수 있습니다.그러나 네트워크 또는 시스템 관리자가 소스 코드를 수정하는 것은 적합하지 않습니다.OS를 세부적으로 조정할 수 있습니다.
RFC1323은 고성능 TCP를 위한 여러 TCP 확장을 정의합니다. 여기에는 창 확장 옵션 및 선택적 ACK가 포함됩니다.기본 운영 체제에 의해 구현됩니다.그러나 기본적으로 일부 OS는 TCP/IP 스택을 지원하도록 기록되어 있더라도 이를 비활성화합니다.
- 이러한 OS는 기본적으로 RFC1323을 비활성화합니다.Windows 2000, Windows 2003, Windows XP 및 Linux(커널이 2.6.8 이전).
Microsoft Windows 시스템에서 문제가 발생하면 이 링크를 클릭하여 TCP를 세부적으로 튜닝하십시오. https://support.microsoft.com/en-au/kb/224829를 참조하십시오.
다른 OS의 경우, 구성 방법에 대한 공급업체 설명서를 참조하십시오.
- 이러한 OS는 기본적으로 RFC1323을 활성화합니다.Windows 2008 이상, Windows Vista 이상, Linux(커널 2.6.8 이상).이러한 기능을 개선하기 위해 패치를 적용해야 할 수 있습니다.경우에 따라 비활성화해야 합니다.비활성화하는 방법은 공급업체의 설명서를 참조하십시오.
- 일부 어플라이언스는 Microsoft Windows 2000, Windows 2003 또는 임베디드 운영 체제를 기반으로 구축됩니다.예: NAS, 의료 서비스 하드웨어RFC1323이 활성화되었는지 확인하려면 공급업체의 설명서를 참조하십시오.
두 위치 간의 왕복 시간(RTT)을 어떻게 알 수 있습니까?
일반적으로 RTT는 거리와 연결됩니다.아래 표에는 거리 및 관련 RTT가 나열되어 있습니다.또한 ping 테스트를 사용하여 일반 네트워크 조건에서 RTT에 대한 아이디어를 얻을 수도 있습니다.
거리(KM) |
RTT(ms) |
1,000 |
15 |
4,000 |
50 |
8,000 |
120 |
참고:위의 설명서는 실제 RTT 시간이 다를 수 있습니다.또한 레이턴시는 사용된 기술의 영향을 받습니다.예를 들어 3G 레이턴시는 거리에 관계없이 100ms가 될 수 있습니다.위성에도 마찬가지다.