Tuyệt đối đừng dùng datagram.
TCP vs UDP
- Khi phát triển ứng dụng Internet, bạn phải chọn giữa TCP và UDP.
- TCP: đảm bảo truyền dữ liệu đáng tin cậy.
- UDP: cung cấp truyền dữ liệu không đáng tin cậy.
- Trường hợp thật sự cần truyền không đáng tin cậy là rất hiếm.
Thuộc tính
- Kỹ nghệ phần mềm được xây dựng trên nhiều tầng trừu tượng.
- Mỗi tầng cung cấp những thuộc tính nhất định để nhà phát triển không phải xây lại mọi thứ từ đầu.
- Nhà phát triển phải chọn sẽ sử dụng tầng nào.
"Không đáng tin cậy"
- Trong một cuộc họp thiết kế giao thức video thời gian thực, đã có ý kiến cho rằng SUBSCRIBE nên là không đáng tin cậy.
- Nhưng thứ thực sự cần là tính kịp thời.
- Với video thời gian thực, điều quan trọng là ưu tiên chuyển dữ liệu mới nhất.
Datagram
- Datagram (gói IP) là đơn vị dữ liệu được truyền từ địa chỉ nguồn đến địa chỉ đích.
- Datagram có thể bị mất hoặc bị đảo thứ tự.
- Lý do dùng datagram là vì khi mạng nghẽn, bỏ gói thường là lựa chọn tốt hơn.
Hàng đợi trên Internet
- Khi mạng bị tắc nghẽn, việc làm rơi gói là điều phổ biến.
- Đưa gói vào hàng đợi để gửi sau có thể gây ra vấn đề bufferbloat.
- Bufferbloat khiến mọi gói dồn trong hàng đợi và làm tổn hại tính kịp thời.
Bạn, nhà phát triển ứng dụng
- Nếu trực tiếp dùng UDP, bạn có thể gặp nhiều vấn đề.
- Nếu tự xây dựng giao thức truyền tải của riêng mình trên UDP, bạn sẽ phải triển khai truyền lại, kiểm soát tắc nghẽn, v.v.
- Sử dụng thư viện QUIC là lựa chọn tốt hơn.
Tính kịp thời
- Có thể dùng QUIC để đạt được tính kịp thời.
- Làm trống bộ đệm: phát hiện hàng đợi thông qua kiểm soát tắc nghẽn và giảm tốc độ truyền.
- Chia dữ liệu thành các stream: mỗi stream được truyền độc lập.
- Ưu tiên stream: chuyển các stream quan trọng trước.
Bảo vệ datagram
- QUIC và MoQ đều hỗ trợ datagram.
- Việc hỗ trợ datagram rất quan trọng để cho phép thử nghiệm.
- Tuy nhiên, việc dùng datagram có thể là một cái bẫy.
Kết luận
- Không nên thiết kế ứng dụng dựa trên datagram.
- Thay vì tạo thêm một giao thức video khác trên UDP, tốt hơn là tham gia Media over QUIC.
Ý kiến của GN⁺
- Tầm quan trọng của tính kịp thời: trong các ứng dụng thời gian thực, tính kịp thời của dữ liệu là cực kỳ quan trọng. UDP có thể phù hợp hơn TCP, nhưng cần thêm các cân nhắc như kiểm soát tắc nghẽn.
- Ưu điểm của QUIC: QUIC khắc phục nhược điểm của UDP mà vẫn mang lại hiệu năng cao. Đặc biệt phù hợp với truyền phát video thời gian thực.
- Vấn đề bufferbloat: xếp gói vào hàng đợi khi mạng tắc nghẽn có thể làm hại tính kịp thời. Cần kiểm soát tắc nghẽn để tránh điều này.
- Giới hạn của datagram: datagram phù hợp cho truyền tải thời gian thực, nhưng khi cần độ tin cậy và đảm bảo thứ tự, các giao thức như QUIC là lựa chọn tốt hơn.
- Tầm quan trọng của việc chọn công nghệ: cần chọn giao thức truyền tải phù hợp với yêu cầu của ứng dụng. Lựa chọn sai có thể dẫn đến suy giảm hiệu năng và làm xấu trải nghiệm người dùng.
1 bình luận
Ý kiến Hacker News