Khắc phục sự cố mở rộng cửa sổ với Linux TCP


8

Tôi đang cố gắng cải thiện thông lượng của một trong các máy chủ của mình ở nước ngoài và sau khi theo dõi quá trình chuyển giữa máy chủ và máy tính ở nhà của tôi bằng wireshark, tôi khá chắc chắn rằng mình có vấn đề với kích thước cửa sổ.

Đối với chuyển khoản ftp, tôi nhận được kích thước cửa sổ nhận là 14720.

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

Cửa sổ gửi của tôi trông giống như những gì tôi đặt nó:

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

Vì vậy, làm thế nào để tôi sửa chữa cơn gió? Tôi đã trải qua các cài đặt tcp linux trên máy chủ của mình và mọi thứ dường như bình thường. Dấu thời gian được bật, syncookies tắt, mở rộng quy mô, bao tải được bật, khối là phương pháp kiểm soát tắc nghẽn, kích thước cửa sổ nhận và gửi tối đa là 3mb. Tôi đã thử thay đổi giá trị tcp_wmem và tcp_rmem mặc định nhưng không được gì.

BIÊN TẬP:

Khi tôi tắt chế độ tự động dò và / hoặc chia tỷ lệ cửa sổ trên máy chủ, cửa sổ co lại thành 14600, cơ bản là gấp 10 lần MSS.

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

Bạn có thấy cửa sổ co lại về 0 trong khi chuyển không? Bạn có thực sự thấy sự chậm trễ của gói trong khi một bên đang chờ cửa sổ sẵn sàng không? Sẽ hữu ích nếu bạn có thể đăng pcaps (với dấu thời gian) mà bạn nghĩ xác nhận điều này để cộng đồng có thể phân tích chúng.
đa thức

cửa sổ không co lại, tôi không nghĩ có sự chậm trễ gói chỉ là kích thước cửa sổ sẽ không tăng.
ẩn danh2

Câu trả lời:


4

Bắt đầu với kernel linux 2.6.17 (hoặc có abouts), hệ số tỷ lệ mặc định đã được tăng lên. Nhược điểm của điều này là dường như có bộ định tuyến / tường lửa / vv. không xử lý chính xác với TCP Window Scale (rfc chỉ ~ 16 tuổi). Nếu bạn phải đi qua một trong những thiết bị này thì bạn cần phải tắt tỷ lệ cửa sổ nếu không mọi thứ sẽ thực sự chậm.

Trên hệ thống Redhat / Redhat giống như "sửa chữa" là:

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

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

  /sbin/sysctl -p

Tôi đã kiểm tra wireshark và máy chủ đang quảng cáo một cửa sổ của 14720 vì vậy tôi không nghĩ đó là do bộ định tuyến. Tôi dường như có vấn đề này với TẤT CẢ các kết nối tcp.
incognito2

0

hừm Bạn có thể cho chúng tôi thêm một số thông tin? Nhu la ...

TCP phát hành {Reno, Vegas, v.v} Hướng trasfer {máy tính để bàn -> máy chủ, máy chủ-> máy tính để bàn, một cái gì khác} bạn đang sử dụng gì cho phép đo? iperf? harpoon?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.