Mọi hướng dẫn đều nói UDP nhanh hơn TCP cho OpenVPN, và lời khuyên đó là mặc định, không phải phép đo. Giao vận thay đổi cách gói tin được chuyển và điều gì xảy ra khi đường truyền làm rơi chúng, không phải cách đường hầm được mã hóa. Sau một cổng chặn hoặc proxy chỉ cho phép cổng 443, phương án chậm hơn lại là phương án kết nối được. Phần sau tách những gì giao thức làm khỏi những gì mạng truy cập của bạn cho phép.

Giao vận thực sự thay đổi điều gì

TCP cung cấp luồng byte đáng tin cậy, có thứ tự và gửi lại mọi thứ bị mất, như RFC 9293 quy định. UDP giao datagram cho mạng, và OpenVPN chạy lớp tin cậy riêng của nó trên socket đó. Đóng gói TCP trong TCP xếp chồng hai vòng khôi phục, nên một đoạn bị mất có thể giữ luồng bên trong lại cho đến khi gói truyền lại bên ngoài đến. Sự tương tác đó mới là lý lẽ thật cho UDP, và nó xuất hiện dưới dạng độ trễ chứ không phải thông lượng.

Tác động tăng theo mất mát và thời gian khứ hồi. Trên một đường nội bộ sạch, hai giao vận cảm thấy như nhau, vì vậy thử nghiệm trong phòng thí nghiệm hiếm khi tái hiện khiếu nại. Trên một liên kết di động tắc nghẽn, khác biệt lộ ra trong các phiên tương tác rất lâu trước khi một lần truyền lớn nhận ra điều gì.

Không điều nào trong số này chạm tới tính bí mật hay toàn vẹn. Bắt tay TLS và mật mã kênh dữ liệu giống nhau cho cả hai giao vận, nên chuyển đổi không thể cứu một bộ mật mã yếu.

Nơi TCP xứng đáng có chỗ

Mạng truy cập là lý do thông thường để chọn TCP. Khách sạn, sân bay hoặc mạng khách có thể cho phép cổng 443 ra ngoài và bỏ mọi thứ khác, và trình lắng nghe TCP trên cổng đó là hồ sơ duy nhất hoạt động. Đó là khả năng tiếp cận, không phải hiệu năng, và bản thân nó đã là lý do đủ tốt.

TCP cũng giúp khi đường truyền ổn định nhưng các hộp trung gian thù địch. Một số mạng đặt lại các luồng UDP dài hạn trong khi chịu được các phiên TCP trông giống lưu lượng web thông thường. Việc sự giống nhau đó thành công hay không là thuộc tính của mạng cụ thể, và không hướng dẫn nào có thể hứa điều đó cho mọi mạng. Hãy thử bên trong mạng thất bại trước khi đổ lỗi cho giao thức.

Đăng nhập bị từ chối không phải vấn đề giao vận. Tắt xác minh chứng chỉ để ép kết nối là một thay đổi khác với kết quả tệ hơn nhiều.

Giữ sẵn một hồ sơ TCP là thỏa hiệp thực tế. Hầu hết ứng dụng khách lưu cả hai và cho phép bạn chuyển khi mạng từ chối đường UDP, việc này không tốn gì cho đến khi bạn cần. Điều bạn không nên làm là phát hành hai hồ sơ trỏ tới các điểm cuối khác nhau, vì khi đó so sánh của bạn đo các máy chủ.

Kiểm tra trình lắng nghe bạn thực sự có

Trước khi so sánh hiệu năng, hãy xác nhận hai đầu đồng ý về giao vận và cổng. Đổi proto udp thành proto tcp trong tệp máy khách không tạo ra trình lắng nghe trên máy chủ. Máy chủ phải được cấu hình cho giao thức đó, và hồ sơ phải khớp với nó.

grep -E '^(proto|port|remote)' /etc/openvpn/server.conf
ss -lunp | grep openvpn
ss -ltnp | grep openvpn

grep in ra những gì máy chủ được bảo dùng, trong khi hai danh sách socket cho thấy nó gắn với gì. Trình lắng nghe UDP chỉ xuất hiện trong danh sách đầu và trình lắng nghe TCP chỉ trong danh sách thứ hai, nên dòng thiếu là cách nhanh nhất để tìm một hồ sơ chưa từng được áp dụng. So sánh cả cổng, vì hồ sơ TCP trên 1194 hành xử khác với hồ sơ trên 443 ở hầu hết mạng truy cập. Khởi động lại dịch vụ sau thay đổi và đọc dòng nhật ký báo cáo việc gắn kết.

Xác nhận phía máy khách rất rẻ: chạy kết nối với --verb 4 và đọc dòng giao vận trong nhật ký. Nếu máy khách nói UDP trong khi máy chủ lắng nghe TCP, bắt tay không bao giờ bắt đầu và không mức tinh chỉnh nào giúp được.

So sánh khối lượng công việc, không phải nhãn giao vận

Một so sánh công bằng giữ mọi thứ cố định trừ giao vận. Cùng thiết bị, cùng mạng truy cập, cùng máy đích, cùng ứng dụng và lý tưởng nhất là cùng máy chủ. Nếu hai hồ sơ trỏ tới các máy khác nhau, bạn cũng đang đo những máy đó.

Ghi lại ba kết quả mỗi lần chạy: đường hầm có được thiết lập không, có duy trì không và tác vụ có hoàn tất không. Các yêu cầu nhỏ chạy được trong khi truyền lớn bị kẹt chỉ ra kích thước gói và MTU, không phải giao vận. Việc kết nối lại lặp đi lặp lại chỉ ra đường truyền hoặc thời gian chờ của một hộp trung gian.

Giữ hồ sơ hoạt động trong điều kiện bạn thực sự gặp, và lưu hồ sơ kia. Lựa chọn thuộc về mạng, không thuộc về người, vì vậy mọi câu trả lời mặc định duy nhất đều sai ở đâu đó.

Bài viết liên quan