Nhược điểm nào có thể xảy ra khi thiết lập một (rất) initcwnd lớn cho các kết nối băng thông cao?


9

Tôi đã thử nghiệm các tham số TCP trong Linux (với kernel 3.5). Về cơ bản liên quan đến kết nối này:

Máy chủ: Gigabit đường lên trong trung tâm dữ liệu, băng thông thực tế (do chia sẻ đường lên) là khoảng 70 MB / s khi được kiểm tra từ trung tâm dữ liệu khác.

Khách hàng: Gigabit cục bộ kết nối với sợi 200mbit. Tìm nạp tệp thử nghiệm thực sự đạt được 20 MB / s.

Độ trễ: Khoảng 50ms khứ hồi.

Máy chủ từ xa được sử dụng làm máy chủ tệp cho các tệp trong phạm vi từ 10 đến 100mb. Tôi nhận thấy rằng việc sử dụng initcwnd 10 thời gian truyền cho các tệp này bị ảnh hưởng nặng nề bởi TCP khởi động chậm, mất 3,5 giây để tải 10mb (tốc độ tối đa đạt: 3,3 MB / giây) vì nó bắt đầu chậm và sau đó tăng tốc. được hoàn thành trước khi đạt được tốc độ tối đa. Mục tiêu của tôi là điều chỉnh thời gian tải tối thiểu của các tệp đó (vì vậy không phải thông lượng thô cao nhất hoặc độ trễ tròn thấp nhất, tôi sẵn sàng hy sinh cả hai nếu điều đó làm giảm thời gian thực sự để tải tệp)

Vì vậy, tôi đã thử một phép tính đơn giản để xác định initcwnd lý tưởng là gì, bỏ qua mọi kết nối khác và tác động có thể có đến người khác. Sản phẩm trễ băng thông là 200 Mbit / s * 50ms = 10 Mbit hoặc 1.310.720 byte. Xem xét rằng initcwnd được đặt theo đơn vị MSS và giả sử MSS có khoảng 1400 byte, điều này sẽ yêu cầu cài đặt: 1.310.720 / 1400 = 936

Giá trị này rất xa so với mặc định (10 * MSS trong Linux, 64kb trong Windows), vì vậy không nên đặt nó như thế này. Nhược điểm dự kiến ​​của việc cấu hình nó như thế này là gì? Ví dụ:

  • Nó sẽ ảnh hưởng đến những người dùng khác của cùng một mạng?
  • Nó có thể tạo ra tắc nghẽn không thể chấp nhận cho các kết nối khác?
  • Bộ đệm bộ định tuyến lũ ở đâu đó trên đường dẫn?
  • Tăng tác động của việc mất gói nhỏ?

1
Bạn có thể xác nhận rằng bạn đang nói megabyte / s khi bạn nói 70 MB/svà không nói megabits không? Chỉ cần tìm kiếm để làm rõ.
Andy Shinn

Có, megabyte / s không phải megabits.
Tomas

Nếu tôi là bạn, tôi sẽ thử nhân nó lên 2 lần (10, 20, 40, 80, ...) và xem cách nó cải thiện thời gian tải xuống thông thường của bạn
mvp

Câu trả lời:


1

Nhược điểm dự kiến ​​của việc cấu hình nó như thế này là gì? Ví dụ:

Will it affect other users of the same network?

Thay đổi initcwnd sẽ ảnh hưởng đến:

  • Người dùng của máy chủ với các cài đặt thay đổi
  • NẾU những người dùng phù hợp với lộ trình thay đổi cài đặt được cấu hình trên.
Could it create unacceptable congestion for other connections?

Chắc chắn rồi.

Flood router-buffers somewhere on the path?

Không liên quan, nhưng trừ khi chúng là bộ định tuyến của bạn, tôi sẽ tập trung vào các vấn đề gần gũi hơn với bạn.

Increase the impact of small amounts of packet-loss?

Chắc chắn, nó có thể làm điều này.

Kết quả cuối cùng là điều này sẽ làm tăng chi phí mất gói, cả cố ý và vô ý. Máy chủ của bạn đơn giản hơn với DOS bởi bất kỳ ai có khả năng hoàn thành bắt tay 3 bước (số lượng dữ liệu đáng kể cho đầu tư thấp (lượng dữ liệu) trong).

Nó cũng sẽ tăng khả năng một loạt các gói đó sẽ cần được truyền lại vì một trong những gói đầu tiên trong cụm sẽ bị mất.


Ok, vì vậy, để tóm tắt: Đối với một máy chủ riêng với initcwnd chỉ được đặt cho các tuyến chính xác, đó là một cải tiến tốt cho tính tương tác cho người dùng.
Tomas

0

Tôi không nghĩ rằng tôi hoàn toàn hiểu những gì bạn đang yêu cầu vì vậy đây là một nỗ lực để đáp ứng:

Trước hết, những gì bạn đang cố gắng chỉ có ý nghĩa ở bên gửi chứ không phải bên nhận. Tức là bạn cần thay đổi máy chủ tập tin chứ không phải người nhận. Giả sử đó là những gì bạn đang làm:

Thay đổi initcwnd thành (ví dụ) 10 có nghĩa là 10 gói sẽ biến mất ngay lập tức. Nếu tất cả chúng đạt được mục tiêu của bạn, bạn có thể sẽ có một cửa sổ lớn hơn nhiều trong RTT đầu tiên vì khởi động chậm (mức tăng cwnd theo cấp số nhân). Tuy nhiên, khi mất gói, cwnd sẽ giảm một nửa và vì bạn đang bùng nổ với 10 gói, bạn sẽ có một lượng truyền lại đáng kể để bạn có thể gặp nhiều vấn đề hơn bạn nghĩ.

Nếu bạn muốn thử một cái gì đó mạnh mẽ hơn và bằng cách nào đó "thô lỗ" với người dùng Internet khác, thay vào đó bạn có thể thay đổi thuật toán kiểm soát tắc nghẽn ở phía máy chủ. Các thuật toán khác nhau xử lý cwnd theo một cách khác nhau. Hãy nhớ rằng điều này sẽ ảnh hưởng đến tất cả người dùng trừ khi phần mềm phía máy chủ của bạn thay đổi mỗi kết nối này (điều mà tôi rất nghi ngờ). Lợi ích ở đây là thuật toán sẽ có hiệu lực ngay cả sau khi mất gói trong khi initcwnd sẽ không đóng vai trò nhiều.

/ Proc / sys / net / ipv4 / tcp_congestion_control là nơi bạn thay đổi thuật toán điều khiển tắc nghẽn.

FWIW cho các RTT nhỏ như vậy (50ms) và đối với các tệp trung bình hoặc lớn, initcwnd không nên ảnh hưởng nhiều đến tốc độ trung bình của bạn. Nếu không có mất gói thì cwnd sẽ tăng gấp đôi ở mỗi RTT. Với RTT = 50ms trên một ống mỡ, bạn sẽ phù hợp với 20 RTT trong giây đầu tiên, nghĩa là với initcwnd = 2 bạn sẽ kết thúc với cwnd = 2 * 2 ^ 20 sau 1 giây, tôi đặt cược nhiều hơn bạn có thể xử lý ;-)

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.