Một khách hàng báo rằng tunnel kết nối được, ping trả lời, trang đăng nhập tải xong, rồi quá trình truyền đứng yên ở cùng một điểm trong mọi lần thử. Kiểu mẫu đó đã nói lên nhiều điều: khả năng tiếp cận hoạt động còn thông lượng bền vững thì không. Trước khi mở tường lửa, hãy xác định VPN có tham gia vào sự cố hay không. Đẩy TCP lớn qua cùng cổng mà không có tunnel trên đường đi; nếu nó cũng đứng, OpenVPN chưa từng liên quan.

Một khách pfSense dùng card mạng virtio có lý do rất chính đáng để hỏng đúng theo hình thức đó.

Gói nhỏ đi qua, TCP lớn bị treo

Bắt tay, trả lời DNS và echo ICMP đều nhỏ và thường đi qua. Truyền bền vững buộc khách phải phân đoạn, và chính đó là nơi đường offload bị hỏng lộ ra. Lỗi không nhất thiết phải đối xứng: lưu lượng ra có thể sạch trong khi lưu lượng vào bị rơi, hoặc ngược lại, nên người dùng có thể đăng nhập rồi đứng ở phản hồi lớn đầu tiên. Vì cùng một máy khách chạy được qua cổng khác, thành phần mới nhất bị đổ lỗi.

Vì vậy hãy thử cổng mà không có tunnel. Một lượt tải từ LAN sang WAN đủ lớn để chạy vài giây là đủ, và phải làm trước mọi thay đổi cài đặt để phép so sánh sau đó có ý nghĩa.

offload thực sự hứa hẹn điều gì

virtio là bán ảo hóa: máy chủ và khách chia sẻ công việc, máy chủ công bố khả năng checksum và phân đoạn và mong khách hoàn tất việc đã bắt đầu. Nếu ngăn xếp của khách không làm vậy, khung rời đi với checksum không đầy đủ hoặc bị máy chủ bỏ. Một E1000 được mô phỏng đưa ra mô hình đơn giản và chậm hơn, trong đó vấn đề biến mất mà không cần một thay đổi nào ở pfSense. Việc thương lượng khả năng diễn ra theo từng thiết bị, điều này giải thích vì sao một khách chạy hàng tháng còn bản song sinh được dựng lại hỏng ngay ngày đầu.

Tập hợp được thương lượng phụ thuộc vào phiên bản hypervisor và kiểu card mạng được chọn, không chỉ vào cấu hình bạn đã nhập.

Một hộp kiểm giữ lại virtio

Trong giao diện pfSense, đường Hệ thống rồi Nâng cao rồi Mạng có một hộp kiểm tên là Tắt offload checksum phần cứng. Khi chọn, khách tính checksum bằng phần mềm, điều này khớp với những gì ngăn xếp FreeBSD phía sau pfSense mong đợi ở một thiết bị bán ảo hóa. Hai tùy chọn liên quan trên cùng trang bao gồm offload phân đoạn TCP phần cứng và offload nhận lớn phần cứng. Hãy dùng chúng khi bắt tay thành công nhưng truyền lớn thì không.

Để card mạng là virtio trong khi thực hiện thay đổi. Chuyển sang E1000 đốt CPU ở mọi gói trong suốt vòng đời của VM và che giấu vấn đề cấu hình khỏi bất kỳ ai kế thừa máy chủ, đó là một sự đánh đổi tệ hơn một đường dữ liệu chậm hơn một chút nhưng dự đoán được.

Đo chi phí bạn vừa chấp nhận

Checksum bằng phần mềm chuyển công việc vào khách, nên hãy đo thông lượng sau đó thay vì cho rằng nó không tốn gì. Trên một VM nhỏ, cái giá là thật, nhưng nó hữu hình và ổn định, khác với mất mát âm thầm. So sánh bộ đếm lỗi giao diện và nhật ký nhân của khách trước và sau. Một hypervisor lọc cầu nối là lỗi riêng với bằng chứng khác, và không cờ offload nào chữa được nó.

Thay đổi một thứ mỗi lần thử và ghi lại đường menu, hộp bạn đã chọn và con số bạn đã đo. Bất kỳ ai đối mặt với khách được dựng lại tiếp theo sẽ muốn cả ba.

Các tường lửa khác dựa trên BSD cung cấp điều khiển tương đương trong cài đặt giao diện của riêng chúng, nên lập luận vẫn đúng ngay cả khi đường menu thì không.

Bài viết liên quan