Linux TCP의 창 스케일링 문제 해결


8

해외 서버 중 하나의 처리량을 개선하려고하는데 wireshark를 사용하여 서버와 가정용 컴퓨터 간의 전송을 모니터링 한 후 창 크기에 문제가 있다고 확신합니다.

ftp 전송의 경우 수신 창 크기는 14720입니다.

Window size value: 115
Calculated window size: 14720
Window size scaling factor: 128

보내기 창은 내가 설정 한 것과 같습니다.

Window size value: 65335
Calculated window size: 261340
Window size scaling factor: 4

rwindow를 어떻게 수정합니까? 내 서버에서 Linux tcp 설정을 살펴 보았으며 모든 것이 정상적으로 보입니다. 타임 스탬프가 켜져 있고, syncookies가 꺼져 있고, 크기 조절이 켜져 있고, 자루가 켜져 있으며, 입방체는 혼잡 제어 방법이며, 최대 수신 및 전송 창 크기는 3mb입니다. 기본 tcp_wmem 및 tcp_rmem 값을 변경하려고했지만 아무것도하지 않습니다.

편집하다:

서버에서 자동 조정 및 / 또는 창 크기 조정을 끄면 창은 기본적으로 MSS의 10 배인 14600으로 줄어 듭니다.

5337    4.268584    2.2.2.2 1.1.1.1 FTP 106 Response: 227 Entering Passive Mode (2,2,2,2,240,15).
5338    4.268640    1.1.1.1 2.2.2.2 TCP 74  59855 > 61455 [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=431721460 TSecr=0 WS=128
5364    4.300368    1.1.1.1 2.2.2.2 TCP 54  57609 > ftp [ACK] Seq=217 Ack=648 Win=15744 Len=0
5480    4.346856    2.2.2.2 1.1.1.1 TCP 66  61455 > 59855 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=128
5481    4.346867    1.1.1.1 2.2.2.2 TCP 54  59855 > 61455 [ACK] Seq=1 Ack=1 Win=14720 Len=0
5482    4.346893    1.1.1.1 2.2.2.2 FTP 70  Request: STOR 100mb.bin
5570    4.428061    2.2.2.2 1.1.1.1 FTP 109 Response: 150 Opening BINARY mode data connection for 100mb.bin
5571    4.428078    1.1.1.1 2.2.2.2 TCP 54  57609 > ftp [ACK] Seq=233 Ack=703 Win=15744 Len=0
5572    4.428155    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes
5573    4.428166    1.1.1.1 2.2.2.2 FTP-DATA    1514    FTP Data: 1460 bytes
5662    4.505384    2.2.2.2 1.1.1.1 TCP 60  61455 > 59855 [ACK] Seq=1 Ack=1461 Win=8832 Len=0
5663    4.505392    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes
5664    4.505421    2.2.2.2 1.1.1.1 TCP 60  61455 > 59855 [ACK] Seq=1 Ack=2921 Win=11776 Len=0
5665    4.505429    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes
5666    4.505535    2.2.2.2 1.1.1.1 TCP 60  61455 > 59855 [ACK] Seq=1 Ack=4381 Win=14720 Len=0
5667    4.505543    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes
5734    4.583769    2.2.2.2 1.1.1.1 TCP 60  61455 > 59855 [ACK] Seq=1 Ack=5841 Win=17536 Len=0
5735    4.583778    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes
5736    4.583781    2.2.2.2 1.1.1.1 TCP 60  61455 > 59855 [ACK] Seq=1 Ack=7301 Win=20480 Len=0
5737    4.583787    1.1.1.1 2.2.2.2 FTP-DATA    2974    FTP Data: 2920 bytes

전송 중에 창이 0으로 줄어드는 것을보고 있습니까? 한쪽이 창 가용성을 기다리는 동안 실제로 패킷 지연이 발생합니까? 커뮤니티에서 분석 할 수 있도록이를 확인한다고 생각되는 pcap (타임 스탬프 포함)을 게시 할 수 있으면 도움이됩니다.
다항식

창이 줄어들지 않습니다. 나는 패킷 지연이 창 크기가 커지지 않는다고 생각하지 않습니다.
시크릿 2

답변:


4

2.6.17 리눅스 커널부터 기본 스케일 팩터가 증가했습니다. 이것의 단점은 라우터 / 방화벽 등이있는 것입니다. TCP Window Scaling을 올바르게 처리하지 못하는 (rfc는 ~ 16 세입니다). 이러한 장치 중 하나를 통과해야하는 경우 창 크기 조정을 해제해야합니다. 그렇지 않으면 상황이 느려집니다.

Redhat / Redhat과 같은 시스템에서 "수정"은 다음과 같습니다.

  /bin/cat <<'EOT'>>/etc/sysctl.conf

  # Turn off the tcp_window_scaling
  net.ipv4.tcp_window_scaling = 0
  EOT

  /sbin/sysctl -p

나는 wireshark를 확인했고 서버는 14720의 창을 광고하고 있으므로 라우터 때문에 생각하지 않습니다. 모든 TCP 연결 에이 문제가있는 것 같습니다.
시크릿 2

0

흠. 좀 더 정보 좀 주 시겠어요? 같은 ...

TCP 릴리스 {Reno, Vegas 등} Trasfer 방향 {데스크탑-> 서버, 서버-> 데스크탑, 기타} 측정에 사용하고있는 것은 무엇입니까? iperf? 작살?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.