2008-11-03 31 views
11

Có thể đạt tốc độ truyền dữ liệu tốt hơn với nhiều kết nối TCP song song trong môi trường có độ trễ cao (Internet công cộng với khoảng cách địa lý lớn giả định không có định hình lưu lượng cho mỗi kết nối hoặc công cụ tương tự) hoặc TCP có thể sử dụng toàn bộ băng thông ?TCP có thể đạt tốc độ truyền cao hơn với nhiều kết nối không?


TCP có gửi dữ liệu nhanh nhất có thể nếu người nhận không báo cáo tắc đệm với kích thước 0 cửa sổ? Vì vậy, nếu RTT là ví dụ như 60 giây nó không ảnh hưởng đến tỷ lệ ở tất cả? Có một số kích thước cửa sổ tối đa hoặc một cái gì đó khác hạn chế tỷ lệ?

Trả lời

15

Một lợi thế nhiều kết nối đồng thời có thể cung cấp cho bạn (tuân theo cùng một cảnh báo được đề cập bởi chim bồ câu và Brian) là bạn sẽ có thể khắc phục tốt hơn vấn đề có cửa sổ nhận TCP quá nhỏ.

Nguyên tắc này liên quan đến là bandwidth delay product. (Có một lời giải thích chi tiết hơn here).

Tóm tắt ngắn gọn: trong môi trường có độ trễ cao, băng thông cao, truyền thông tin cậy như TCP thường bị giới hạn bởi lượng dữ liệu đang bay tại bất kỳ thời điểm nào. Nhiều kết nối là một cách xung quanh điều này, vì sản phẩm trễ băng thông áp dụng cho từng kết nối riêng lẻ.

Cụ thể hơn, hãy xem xét những điều sau: bạn có băng thông đầu cuối 10^8 bit mỗi giây (10 megabit/giây) và độ trễ chuyến đi là 100ms (0,1 giây). Do đó, có thể có tới 10^7 bit (10 megabits = ~ 1.25 megabyte) dữ liệu được gửi trước khi sự thừa nhận của bit dữ liệu đầu tiên đã được trả lại cho người gửi.

Điều này sẽ khác nhau tùy thuộc vào ngăn xếp TCP của hệ điều hành của bạn, nhưng giá trị không phổ biến cho kích thước cửa sổ nhận TCP là 64Kbytes. Điều này rõ ràng là quá nhỏ để cho phép bạn tận dụng tối đa băng thông kết thúc; một khi 64kbytes (512kbit) dữ liệu đã được gửi đi, quá trình gửi của bạn sẽ chờ cập nhật cửa sổ từ người nhận cho biết rằng một số dữ liệu đã được tiêu thụ trước khi đưa thêm dữ liệu vào dây.

Việc mở nhiều phiên TCP được thực hiện bằng cách thực tế là mỗi phiên TCP sẽ có bộ đệm gửi/nhận riêng. Tất nhiên, trên internet rất khó để xác định băng thông đầu cuối có sẵn thực sự, do kích thước cửa sổ TCP, tranh chấp, v.v. Nếu bạn có thể cung cấp một số số liệu mẫu, chúng tôi có thể hỗ trợ nhiều hơn.

Tùy chọn khác bạn nên xem xét là thiết lập cửa sổ nhận lớn hơn khi bạn tạo ổ cắm của mình, trên toàn cầu bằng cách sử dụng cài đặt OS hoặc trên cơ sở mỗi socket sử dụng tùy chọn socket.

1

Có, nhưng không nhất thiết phải dễ thực hiện. Các CDN như akamai tuyên bố một phần hiệu suất của chúng bằng cách nén các gói lớn hơn bình thường sẽ được gửi bởi vì đường ống đáng tin cậy chuyên dụng của chúng. Khó để cung cấp chi tiết tốt hơn mà không cần biết nhiều hơn về đơn đăng ký của bạn.

+0

Ứng dụng của tôi đang chuyển dữ liệu một chiều mà không cần bất kỳ cuộc trò chuyện cấp ứng dụng nào. Chỉ cần đẩy dữ liệu vào ổ cắm từ xa. – JtR

+0

Tôi có lẽ đã ra khỏi ken ở đây nhưng nếu không quá khó, cách chắc chắn nhất là thiết lập bản dùng thử, imho. nó chắc chắn có vẻ như có tiềm năng ở đó, bởi vì nó là một cách. – dove

+0

Bạn đang tìm kiếm một ổ cắm đáng tin cậy (kết nối dựa trên)? Nếu không, có thể sử dụng UDP thay vì TCP có thể giúp đỡ? – AshtonKJ

7

Nếu bạn là người duy nhất trên liên kết, nó sẽ tăng chi phí và giảm tốc độ. Tuy nhiên, khi chia sẻ liên kết hoàn toàn bão hòa với người khác, đó là cách để chơi hệ thống và tăng tốc độ tổng thể của bạn (mỗi kết nối sẽ chậm hơn một kết nối, nhưng tổng hợp sẽ nhanh hơn vì bây giờ bạn có tỷ lệ phần trăm lớn hơn "khe thời gian" (thuật ngữ kỹ thuật là gì? Nó thoát khỏi tôi bây giờ) được phân bổ cho bạn).

+0

Điều gì về độ trễ? Làm thế nào nó ảnh hưởng đến tỷ lệ? Độ trễ có ảnh hưởng đến tốc độ nếu bộ đệm đủ lớn được sử dụng không? – JtR

+0

Phụ thuộc vào kích thước của cửa sổ TCP, bất kỳ bộ đệm nào kém quan trọng hơn nhiều. –

1

Muz's description of the issue là vị trí bật.

Hãy nhớ rằng việc tận dụng nó có thể phụ thuộc vào việc triển khai TCP trong hệ điều hành của bạn. Đặc biệt, để có kết quả tốt nhất, bạn muốn có một ngăn xếp TCP hỗ trợ tùy chọn Quy mô cửa sổ từ RFC 1323.

Hơn nữa, bạn có thể cần phải tinh chỉnh một số cài đặt OS để thực hiện công việc này. Trên Windows có cài đặt Đăng ký được gọi là mà bạn có thể cần phải điều chỉnh. Có một Điều khoản KB của Microsoft 224829: Description of Windows 2000 and Windows Server 2003 TCP Features mô tả cách thực hiện điều đó.

Các vấn đề liên quan