Tổng quan về Thuật toán Nagle cho Giao tiếp Mạng TCP

Mục lục:

Tổng quan về Thuật toán Nagle cho Giao tiếp Mạng TCP
Tổng quan về Thuật toán Nagle cho Giao tiếp Mạng TCP
Anonim

Thuật toán Nagle, được đặt theo tên của kỹ sư John Nagle, được thiết kế để giảm tắc nghẽn mạng do các sự cố gói nhỏ với các ứng dụng TCP. Việc triển khai UNIX bắt đầu sử dụng thuật toán Nagle vào những năm 1980 và nó vẫn là một tính năng tiêu chuẩn của TCP ngày nay.

Cách hoạt động của Thuật toán Nagle

Thuật toán Nagle xử lý dữ liệu ở phía gửi của các ứng dụng TCP bằng một phương pháp gọi là nagling. Nó phát hiện các thông điệp có kích thước nhỏ và tích lũy các thông điệp đó thành các gói TCP lớn hơn trước khi gửi dữ liệu qua dây. Quá trình này tránh tạo ra một số lượng lớn các gói tin nhỏ một cách không cần thiết.

Đặc tả kỹ thuật cho thuật toán Nagle được xuất bản vào năm 1984 với tên gọi RFC 896. Các quyết định về lượng dữ liệu cần tích lũy và thời gian chờ giữa các lần gửi là rất quan trọng đối với hiệu suất tổng thể của nó.

Lợi ích của Nagling

Nagling có thể sử dụng hiệu quả băng thông của kết nối mạng với chi phí tăng thêm độ trễ hoặc độ trễ. Một ví dụ được mô tả trong RFC 896 minh họa lợi ích băng thông tiềm năng và lý do tạo ra nó:

  • Nếu một ứng dụng TCP chặn các thao tác gõ phím trên bàn phím muốn giao tiếp từng ký tự đang được nhập với bộ nhận, nó có thể tạo ra một loạt thông báo, mỗi thông báo chứa 1 byte dữ liệu.
  • Trước khi các thư này có thể được gửi qua mạng, mỗi thư phải được đóng gói với thông tin tiêu đề TCP theo yêu cầu của TCP / IP. Mỗi tiêu đề có kích thước từ 20 đến 60 byte.
  • Không có gì khó hiểu, ứng dụng ví dụ này sẽ tạo ra các thông báo mạng bao gồm 95 phần trăm hoặc nhiều hơn thông tin tiêu đề (ít nhất 20 trong số 21 byte) và 5 phần trăm hoặc ít hơn dữ liệu thực tế từ bàn phím của người gửi. Sử dụng thuật toán Nagle, cùng một dữ liệu có thể được phân phối bằng cách sử dụng ít tin nhắn hơn, dẫn đến tiết kiệm băng thông lớn.

Ứng dụng kiểm soát việc sử dụng thuật toán Nagle của chúng với tùy chọn lập trình ổ cắm TCP_NODELA. Các hệ thống Windows, Linux và Java thường kích hoạt Nagle theo mặc định. Do đó, các ứng dụng được viết cho những môi trường đó cần chỉ định TCP_NODELAY để tắt thuật toán.

Image
Image

Hạn chế

Các ứng dụng yêu cầu phản hồi mạng nhanh, như cuộc gọi điện video và chơi trò chơi trực tuyến, có thể không hoạt động tốt khi Nagle được bật. Sự chậm trễ gây ra trong khi thuật toán mất thêm thời gian để tập hợp các phần dữ liệu nhỏ hơn có thể gây ra độ trễ đáng chú ý trên màn hình hoặc trong luồng âm thanh kỹ thuật số. Các ứng dụng như vậy thường vô hiệu hóa Nagle.

Thuật toán này ban đầu được phát triển vào thời điểm các mạng máy tính hỗ trợ băng thông ít hơn so với ngày nay. Ví dụ được mô tả ở trên dựa trên kinh nghiệm của John Nagle tại Ford Aerospace vào đầu những năm 1980, nơi mà việc đánh đổi sự chậm chạp, tải nặng và đường dài của Ford có ý nghĩa tốt. Ngày nay, ngày càng có ít tình huống mà các ứng dụng mạng có thể hưởng lợi từ thuật toán của anh ấy.

Thuật toán Nagle chỉ sử dụng được với TCP. Các giao thức khác, chẳng hạn như UDP, không hỗ trợ nó.

Đề xuất: