TCP 창 축척 옵션

TCP window scale option

TCP 스케일 옵션Transmission Control Protocol에서 허용된 수신 창 크기를 이전의 최대값인 65,535바이트 이상으로 늘리는 옵션이다. 이 TCP 옵션은 다른 여러 옵션과 함께 다음에 정의되어 있다. 롱팻 네트워크(LFN)를 취급하는 RFC7323.

TCP 창

TCP 통신의 처리량은 정체 창과 수신 창이라는 두 개의 창으로 제한된다. 정체 창은 네트워크의 용량(혼합 제어)을 초과하지 않으려고 하고, 수신 창은 데이터를 처리하는 수신기의 용량(흐름 제어)을 초과하지 않으려고 한다. 예를 들어 수신기가 매우 사용량이 많은 경우(예: 웹 서버) 수신기는 데이터에 의해 압도될 수 있다. 각 TCP 세그먼트는 수신 창의 현재 값을 포함한다. 예를 들어, 송신자가 바이트 4000을 인정하고 10000(바이트)의 수신 창을 지정하는 ack를 수신하는 경우, 혼잡 창이 허용하더라도 송신자는 바이트 14000 이후 패킷을 송신하지 않는다.

이론

대역폭 지연 제품(BDP)이 64KB[1] 이상일 때 효율적인 데이터 전송을 위해 TCP 창 스케일 옵션이 필요하다. 예를 들어, 1.5 Mbit/초의 T1 전송선이 513밀리초의 왕복 시간(RTT)을 가진 위성 링크에 사용되었을 경우, 대역폭 지연 제품은 , = script 1,비트 또는 약 96,187바이트가 된다. 최대 버퍼 크기 64KB를[1] 사용하면 버퍼를 이론상 최대 속도 1.5Mbit/초 또는 1.02Mbit/초의 68%(65,535 / 96,187)까지만 채울 수 있다.

By using the window scale option, the receive window size may be increased up to a maximum value of bytes. 헤더 옵션 필드에 2바이트 이동 카운트를 지정하여 이 작업을 수행한다. 진정한 수신 창 크기는 시프트 카운트의 값으로 이동된다. 최대 14의 값은 시프트 카운트 값에 사용할 수 있다. 이를 통해 단일 TCP 연결이 사용 가능한 모든 대역폭을 활용하여 1.5 Mbit/초 단위로 예제 위성 링크를 통해 데이터를 전송할 수 있다.

기본적으로, 한 번의 왕복 시간 내에 두 개 이하의 완전한 전송 창이 전송될 수 있다. 윈도우 스케일 옵션을 사용하면 단일 TCP 연결이 최대 1GB의 BDP(예: 왕복 시간 800ms의 10Gbit/s 링크)를 가진 LFN을 충분히 활용할 수 있다.

가능한 부작용

일부 방화벽은 TCP Window Scaling을 제대로 구현하지 않기 때문에 사용자의 인터넷 연결이 몇 분 동안 간헐적으로 오작동하다가 아무 이유 없이 다시 작동하기 시작하는 것처럼 보일 수 있다. 방화벽이 TCP 확장을 지원하지 않는 경우에도 문제가 있다.[2]

운영 체제 구성

창문들

TCP 창 스케일링은 Windows 2000 이후 Windows에서 구현된다.[3][4] Windows Vista/Server 2008 이상에서는 기본적으로 활성화되지만 필요한 경우 수동으로 끌 수 있다.[5] 윈도 비스타윈도 7은 64kB의 고정 기본 TCP 수신 버퍼를 가지고 있어, 「자동 조정」을 통해 최대 16MB까지 확장되어, 긴 지방 네트워크를 통한 수동 TCP 튜닝이 제한된다.[6]

리눅스

Linux 커널(2.6.8, 2004년 8월)은 기본적으로 TCP Window Scaling을 활성화했다. 구성 매개 변수는 /proc 파일 시스템에서 찾을 수 있으며 유사 파일을 참조하십시오. /ssh/sys/net/sys4/sys_swer_mem과 그 동료 /sys/sys/net/sys4/snet_rmem/sys/sys/net/ss4/snet_wmem(자세한 정보: man tcp, 섹션 sysctl).[7]

다음 명령을 실행하여 스케일링을 해제할 수 있다.

$sudo sysctl -w "net.synchron4.filename_filename_filename=0" 

재시작 후에도 변경사항을 유지하려면 /etc/sysctl.conf(또는 systemd 207 기준 /etc/sysctl.d/99-sysctl.conf)에 "net.ipv4.tcp_window_scaling=0" 줄을 포함하십시오.

FreeBSD, OpenBSD, NetBSD 및 Mac OS X

FreeBSD, OpenBSD, NetBSDMac OS X에 대한 기본 설정은 윈도우 스케일링(및 RFC 1323과 관련된 기타 기능)을 활성화하는 것이다.
상태를 확인하기 위해 사용자는 sysctl 명령을 통해 "net.inet.tcp.rfc1323" 변수의 값을 확인할 수 있다.

$sysctl net.inet.refc1323 

값이 1(출력 "")net.inet.tcp.rfc1323=1이면 스케일링이 활성화되고, 0은 "비활성화"를 의미한다. 활성화된 경우 다음 명령을 실행하여 해제할 수 있다.

$sudo sysctl -w net.inet.reason.rfc1323=0 

이 설정은 시스템 재시작 중에 손실된다. 부팅 시 설정되도록 하려면 /etc/sysctl.conf에 다음 줄을 추가하십시오. net.inet.tcp.rfc1323=0

그러나 macOS 10.14에서 이 명령은 오류를 제공한다.

sysctl: unknown oid 'net.inet.tcp.rfc1323' 

원천

  1. ^ a b 여기서 K, M, G, T는 1024의 힘을 바탕으로 한 이진 접두사를 말한다.
  2. ^ "Network connectivity may fail when you try to use Windows Vista behind a firewall device". Support.microsoft.com. Retrieved July 11, 2019.
  3. ^ "Description of Windows 2000 and Windows Server 2003 TCP Features". Support.microsoft.com. Retrieved July 11, 2019.
  4. ^ "TCP Receive Window Size and Window Scaling". Archived from the original on January 1, 2008.
  5. ^ "Network connectivity fails when you try to use Windows Vista behind a firewall device". Microsoft. July 8, 2009.
  6. ^ "MS Windows". Fasterdata.es.net. Retrieved July 11, 2019.
  7. ^ "/proc/sys/net/ipv4/* Variables".