Một giải pháp mới dựa trên eBPF đóng gói các gói tin TCP trong header UDP để vượt qua các middlebox mạng đã khơi mào các cuộc thảo luận về sự phát triển giao thức và các ứng dụng vượt qua kiểm duyệt tiềm năng. Kỹ thuật này giải quyết các vấn đề khi thiết bị mạng chặn hoặc sửa đổi các kết nối MPTCP , đặc biệt trên các mạng di động sử dụng Performance Enhancing Proxies .
QUIC so với TCP-in-UDP: Cuộc tranh luận giao thức lớn
Cộng đồng đang tích cực so sánh phương pháp này với multipath QUIC , đặt câu hỏi về giải pháp nào mang lại giá trị tốt hơn. Trong khi cả hai giao thức đều tạo đường hầm qua UDP để tránh sự can thiệp của middlebox, chúng phục vụ các mục đích khác nhau. TCP-in-UDP bảo tồn các triển khai TCP hiện có và cơ chế kiểm soát tắc nghẽn đã được thử nghiệm kỹ lưỡng, làm cho nó lý tưởng cho các hệ thống cũ cần tính tương thích.
TCP-in-UDP giữ lại logic đã được thử nghiệm kỹ lưỡng của TCP nhưng đóng gói nó để vượt qua middlebox—tuyệt vời cho các hệ thống cũ. QUIC là một bản viết lại hoàn toàn mới, tốt hơn cho các ứng dụng mới.
Tuy nhiên, những người chỉ trích chỉ ra rằng việc đóng gói TCP trong UDP về cơ bản loại bỏ lợi ích tương thích vì middlebox và hệ điều hành không còn nhận ra giao thức bên dưới. Điều này đặt ra câu hỏi về thời điểm mỗi phương pháp có ý nghĩa.
MPTCP: Multipath TCP, cho phép các kết nối sử dụng nhiều đường mạng đồng thời eBPF: Extended Berkeley Packet Filter, cho phép các chương trình tùy chỉnh chạy trong không gian kernel
So sánh Header của các Giao thức
Giao thức | Kích thước Header | Tính năng chính |
---|---|---|
UDP | 8 bytes | Đơn giản, không kết nối |
TCP | 20+ bytes | Hướng kết nối, đáng tin cậy |
TCP-in-UDP | 20+ bytes | Chức năng TCP trên nền tảng UDP |
Tiềm năng vượt qua kiểm duyệt không mong muốn
Mặc dù không phải là mục tiêu thiết kế chính, việc chuyển đổi TCP-in-UDP đã thu hút sự chú ý như một công cụ vượt qua kiểm duyệt tiềm năng. Việc chuyển đổi giao thức có thể đủ để tránh khớp mẫu được sử dụng bởi các tường lửa cơ bản, mặc dù các chuyên gia vẫn hoài nghi về hiệu quả của nó chống lại các hệ thống kiểm tra gói tin sâu tinh vi.
Sự thành công của kỹ thuật này phần lớn phụ thuộc vào năng lực của các hệ thống kiểm duyệt. Các môi trường doanh nghiệp với bộ lọc cơ bản có thể bị vượt qua, nhưng các hệ thống tiên tiến chỉ cho phép lưu lượng UDP cụ thể hoặc thực hiện phân tích lớp ứng dụng có thể sẽ chặn những nỗ lực như vậy.
Thách thức triển khai kỹ thuật
Giải pháp này đối mặt với một số trở ngại kỹ thuật làm nổi bật sự phức tạp của các ngăn xếp mạng hiện đại. Các tối ưu hóa phần cứng như Generic Receive Offload ( GRO ) và TCP Segmentation Offload ( TSO ) phải được vô hiệu hóa vì mỗi gói UDP chứa thông tin header cụ thể của TCP không thể dễ dàng hợp nhất.
Việc xử lý checksum tỏ ra đặc biệt thách thức, đòi hỏi sự kết hợp của các hook eBPF và các hành động Linux Traffic Control để cập nhật checksum đúng cách khi chuyển đổi giữa các giao thức. Việc triển khai cũng mất chức năng Urgent Pointer của TCP , mặc dù điều này hiếm khi ảnh hưởng đến hầu hết các ứng dụng.
Yêu cầu kỹ thuật
- Hỗ trợ eBPF cho thao tác gói tin
- Vô hiệu hóa tăng tốc phần cứng (GRO, TSO, GSO)
- Xử lý checksum tùy chỉnh thông qua TC ACT_CSUM
- Điều chỉnh MTU/MSS tiềm năng cho mạng di động
- Nhân Linux với hỗ trợ TC (Traffic Control)
IPv6 và tương lai của mạng
Cuộc thảo luận đã mở rộng đến sự phát triển mạng rộng hơn, với một số thành viên cộng đồng nhấn mạnh tiềm năng của IPv6 trong việc đơn giản hóa nhiều thách thức mạng hiện tại. IPv6 có thể giảm độ phức tạp của router và loại bỏ nhu cầu Network Address Translation ( NAT ), mặc dù việc giảm chi phí phần cứng có thể không ấn tượng như một số người hy vọng.
Cuộc tranh luận phản ánh những căng thẳng đang diễn ra giữa việc duy trì tính tương thích với cơ sở hạ tầng hiện có và việc áp dụng các giao thức sạch hơn, hiện đại hơn có thể giải quyết các vấn đề mạng cơ bản.
Phương pháp TCP-in-UDP này đại diện cho một bước khác trong sự phát triển liên tục của các giao thức internet, cân bằng nhu cầu tương thích thực tế với mong muốn vượt qua sự cứng nhắc mạng ngăn cản các công nghệ mới hơn hoạt động đúng cách.
Tham khảo: Introducing TCP-in-UDP solution