TCP 튜닝

TCP tuning

TCP 튜닝 기법은 고대역폭, 높은 대기시간 네트워크를 통한 TCP(Transmission Control Protocol) 연결의 네트워크 정체 회피 매개변수를 조정한다. 잘 튜닝된 네트워크는 경우에 따라 최대 10배까지 더 빠른 성능을 발휘할 수 있다.[2] 그러나 실제 결과를 이해하지 못한 채 맹목적으로 지시를 따르는 것은 수행에도 해를 끼칠 수 있다.

네트워크 및 시스템 특성

대역폭 지연 제품(BDP)

대역폭 지연 제품(BDP)은 TCP "경로"를 채우는 데 필요한 바이트 수를 나타내기 위해 주로 TCP와 함께 사용되는 용어로서, 송신기와 수신기 사이에 전송되는 최대 동시 비트 수와 동일하다.

고성능 네트워크는 매우 큰 BDP를 가지고 있다. 실제적인 예를 들어, 왕복 지연 시간(또는 왕복 시간, RTT) 0.5초와 10Gbit/s대역폭으로 정지 위성 링크를 통해 통신하는 두 개의 노드는 비행 중에 최대 0.5×10비트10 가질 수 있다. 즉, 5Gbit = 625MB의 승인되지 않은 데이터를 가질 수 있다. 위성 링크보다 훨씬 낮은 지연 시간을 가지고 있음에도 불구하고, 심지어 지상 섬유 링크도 링크 용량이 너무 크기 때문에 매우 높은 BDP를 가질 수 있다. 네트워크 속도가 느렸던 몇 년 전만 해도 최근에 설계된 운영 체제와 프로토콜은 달성 가능한 성능에 제한적으로 영향을 미치며 규모가 더 작은 BDP에 맞게 조정되었다.

버퍼

원래 TCP 구성은 저속 링크나 작은 RTT를 가진 링크에 적합한 최대 65,535 (64 KiB - 1)바이트의 TCP 수신크기 버퍼를 지원했다. 아래에 설명된 고성능 옵션에는 더 큰 버퍼가 필요하다.

버퍼링은 시스템의 지연을 처리하기 위해 고성능 네트워크 시스템 전반에 걸쳐 사용된다. 일반적으로 버퍼 크기는 언제든지 "이동 중" 데이터 양에 비례하여 확장될 필요가 있다. 네트워크 지연에 민감하지 않은 고성능 애플리케이션의 경우, 엔드 투 엔드 시스템에 중간 데이터 저장 지점을 넣어 대규모 엔드 투 엔드 버퍼링 지연을 인터셉트한 다음, 자동화되고 예약된 비 실시간 데이터 전송을 사용하여 데이터를 최종 엔드포인트로 가져올 수 있다.

TCP 속도 제한

단일 TCP 연결에 대해 달성 가능한 최대 처리량은 다른 요인에 의해 결정된다. 하나의 사소한 제한은 경로에서 가장 느린 링크의 최대 대역폭이다. 그러나 TCP 처리량에 대한 다른, 덜 분명한 제한도 있다. 비트 오류는 RTT뿐만 아니라 연결에 대한 제한을 만들 수 있다.

창 크기

컴퓨터 네트워킹에서 RWIN(TCP 수신 창)은 컴퓨터가 송신자를 인정하지 않고 받아들일 수 있는 데이터의 양이다. 보낸 사람이 보낸 첫 번째 패킷에 대한 승인을 받지 못한 경우, 전송은 중지되고 대기하며, 이 대기 시간이 일정 제한을 초과하면 재전송될 수도 있다. 이것이 TCP가 신뢰할 수 있는 데이터 전송을 달성하는 방법이다.

네트워크에 패킷 손실이 없더라도 윈도잉은 처리량을 제한할 수 있다. TCP는 승인을 기다리기 전에 데이터를 창 크기까지 전송하기 때문에 네트워크의 전체 대역폭이 항상 사용되는 것은 아닐 수 있다. 창 크기에 의한 한계는 다음과 같이 계산할 수 있다.

여기서 RWIN은 TCP 수신 창이고 RTT는 경로의 왕복 시간이다.

언제든지 TCP 수신측에서 광고하는 창은 이 연결을 위해 할당한 무료 수신 메모리의 양에 해당한다. 그렇지 않으면 공간 부족으로 인해 수신된 패킷을 떨어뜨릴 위험이 있다.

송신측도 수신측과 동일한 양의 메모리를 할당하여 양호한 성능을 발휘해야 한다. 왜냐하면, 데이터를 네트워크상에서 전송한 후에도, 재전송해야 할 경우에 대비하여 송신측에서는 데이터가 성공적으로 수신된 것으로 인정될 때까지 메모리에 보관해야 하기 때문이다. 수화기가 멀리 있으면, 답장은 도착하는 데 오랜 시간이 걸릴 것이다. 송신 메모리가 작으면 포화상태로 방출을 차단할 수 있다. 간단한 계산은 위에 주어진 수신 메모리 크기와 동일한 최적의 송신 메모리 크기를 제공한다.

패킷손실

네트워크에서 패킷 손실이 발생하면 연결에 추가 제한이 부과된다.[3] TCP 속도가 정체 회피 알고리즘에 의해 제한되었을 때 빛에서 중간까지의 패킷 손실의 경우, 한계는 공식에 따라 계산될 수 있다(Mathis, et al.).

여기서 MSS는 최대 세그먼트 크기, Ploss 패킷 손실의 확률이다. 패킷 손실이 너무 드물어서 TCP 창이 정기적으로 완전히 확장되면, 이 공식은 적용되지 않는다.

고성능을 위한 TCP 옵션

수년에 걸쳐 TCP에는 고속 고RT 링크("장기 Fat Networks" 또는 LFN")를 통해 성능을 향상시키기 위해 많은 확장이 이루어졌다.

TCP 타임스탬프(RFC 1323)는 이중 역할을 하는데, 32비트 시퀀스 번호 필드가 감싸져 있어 모호함을 피하고, RTT당 다중 손실이 발생할 경우 보다 정밀한 RTT 추정을 허용한다. 이러한 개선으로 TCP 창을 64kB 이상으로 늘리는 것이 타당해지며, 이는 윈도우 스케일링 옵션(RFC 1323)을 사용하여 할 수 있다.

TCP 선택적 승인 옵션(SACK, RFC 2018)은 TCP 수신기가 TCP 송신자에게 어떤 세그먼트가 손실되었는지 정확하게 알릴 수 있도록 한다. 이는 창당 다중 손실이 가능한 경우 높은 RTT 링크에서의 성능을 증가시킨다.

경로 MTU 검색은 네트워크 내 단편화의 필요성을 제거하여 패킷 손실 시 성능을 향상시킨다.

느린 연결 조정

기본 IP 대기열 길이는 1000이며 일반적으로 너무 크다. 속도가 20 Mbit/s이고 평균 패킷 크기가 750 바이트인 Wi-Fi 기지국을 상상해 보십시오. IP 대기열의 크기를 선택하십시오. IP 클라이언트를 통한 음성은 20ms마다 패킷을 전송할 수 있어야 한다. 그러면 전송 중인 예상 최대 패킷 수는 다음과 같을 것이다.

예상 버퍼 크기 = 20000000 * 0.020 / 8/750 = 66 

대기열 길이를 다음으로 제한하십시오.

ifconfig wlan0 MTU 1492 txqueuelen 100 

참고 항목

참조

  1. ^ W. 리처드 스티븐스, TCP/IP 일러스트레이티드, 제1권: 프로토콜, 애디슨 웨슬리, 1994, ISBN 0-201-63346-9.
  2. ^ "High Performance SSH/SCP - HPN-SSH". Psc.edu. Retrieved January 23, 2020.
  3. ^ "The Macroscopic Behavior of the TCP Congestion Avoidance Algorithm". Psc.edu. Archived from the original on May 11, 2012. Retrieved January 3, 2017.

외부 링크