Làm cách nào để cải thiện độ tin cậy của OpenVPN qua liên kết có độ trễ cao?


11

Chúng tôi đang chạy VPN OpenVPN qua liên kết vệ tinh BGAN trong đó thời gian ping khoảng 3 giây. Chúng tôi sử dụng nó trong một tun cấu hình, và chúng tôi đang chạy trên Linux (CentOS). Đây chủ yếu là email sẽ được gửi qua liên kết, nhưng ngay khi thư chứa tệp đính kèm lớn, VPN dường như bị đình trệ.

Các "Tôi có thể ping thông qua đường hầm, nhưng bất kỳ công việc thực tế làm cho nó bị khóa. Đây có phải là một vấn đề MTU?" câu hỏi trong Câu hỏi thường gặp về OpenVPN dường như mô tả chính xác vấn đề của tôi, nhưng sử dụng mssfixfragmentdường như vẫn không làm được gì nhiều để cải thiện tình hình.

Thử nghiệm chính của tôi là sao chép tệp 2MB qua VPN bằng scp . Nó sẽ sao chép khoảng 192 nghìn, và sau đó báo cáo trạng thái - bị đình trệ . Nếu tôi đợi một vài giây, nó sẽ bắt đầu sao chép lại, và sau đó bị đình trệ sau một vài kbyte khác.

Việc đình trệ này xảy ra cho dù tôi có đặt các tùy chọn fragmenthoặc mssfixcấu hình trong cấu hình OpenVPN của mình hay không (mặc dù cài đặt fragment 1000dường như làm giảm sự đình trệ, nhưng không loại bỏ nó). OpenVPN mtu-testđã báo cáo 1542 là kích thước MTU.

Tôi đã tìm kiếm trên internet để có thêm lời khuyên về cách sử dụng mssfixvà thời điểm sử dụng và fragment, nhưng tôi chỉ tìm thấy các trang có nội dung giống như Câu hỏi thường gặp và không cung cấp chi tiết về cách thức và thời điểm sử dụng tham số nào.

Câu hỏi của tôi là:

  • Khi nào tôi sử dụng mssfixfragment?
  • Tôi có sử dụng mssfixfragmentkết hợp không?
  • Nếu mssfixfragmentlà giải pháp, là những gì tun-mtu, link-mtumtu-disccác thông số cho?

Hơn nữa, tôi đã sử dụng công cụ iperf để đo băng thông. Không có VPN, nó liên tục đo theo thứ tự 210Kbit / giây.

Khi sử dụng iperf qua VPN ( $ iperf -c remoteserver -t60 -i5), nó sẽ bắt đầu với tốc độ 10Kbits / giây, sau đó tăng dần cho đến khi báo cáo 1,2Mbits / giây, và sau đó nó sẽ bị đình trệ, nơi nó báo cáo 0kbits / giây cho một số lần lặp (I nghĩ rằng 1,2Mbit / giây có thể là do một số bộ đệm OpenVPN hoặc như vậy)

iperf cách tốt nhất để đo băng thông?

Bất kỳ trợ giúp với tình huống này sẽ được đánh giá rất cao.


Hiện tại openvpn có sử dụng TCP hoặc UDP không?
pjc50

Nó hiện đang sử dụng UDP
iWerner

Cảm ơn bạn vì tất cả các câu trả lời, nhưng tôi đã phải tạm thời dừng lại vì đơn vị BGAN đã hết thời gian phát sóng. Tôi hy vọng sẽ cointinue sau ngày hôm nay. Tôi nên đề cập rằng chúng tôi muốn ở lại với UDP, vì sử dụng TCP sẽ tăng gấp đôi dữ liệu được gửi qua mạng (và do đó chi phí mà khách hàng của chúng tôi đã rất nhạy cảm)
iWerner

Câu trả lời:


5

1542 là một MTU? Chưa bao giờ nghe về điều đó cho một liên kết WAN. Thông thường, MTU là tải trọng tối đa, kích thước gói ip trừ đi tiêu đề cho IP (20 byte) và ICMP (8 byte). Điều đó có nghĩa là MTU = 1500 cho mạng LAN Ethernet truyền thống. Hơn nữa, hầu hết các VPN đều giới thiệu một chi phí chung cho việc đóng gói gói của họ. Một MTU VPN thông thường là 1400.

Trong các mạng hiện đại, rất khó để kết luận MTU sẽ là gì vào bất kỳ lúc nào, vì đường vào và đường ra có thể khác nhau và chúng cũng có thể thay đổi do định tuyến lại đường dẫn tự động. Đối với một mạng như thế này, có thể hiệu quả hơn khi đặt MTU ở mức thấp trên các máy chủ của bạn ở hai bên của liên kết VPN, chẳng hạn như 576.

MSS (kích thước phân đoạn tối đa) là MTU trừ đi các tiêu đề IP + TCP (40 byte). Điều này thường được đàm phán bởi ngăn xếp mạng và thường không có các vấn đề đàm phán giống như MTU, trừ khi MTU sai. (Đàm phán MTU thường bị suy yếu bởi các bộ định tuyến ICMP hoặc lỗ đen bị chặn).

Điều đầu tiên tôi sẽ làm là thực hiện một gói chụp mạng ở đầu gửi của bạn và sắp xếp màn hình theo kích thước khung hình (bạn có thể cần thêm cột này trong Wireshark). Bạn nên xác minh rằng bạn không gửi bất kỳ khung hình nào quá khổ, những gì bạn mong đợi chúng sẽ là. Không có gì lạ khi các card mạng hiện đại gửi các khung quá khổ nếu các tùy chọn như Large Send Offload hoặc Jumbo Frames được bật. Tôi đã thấy hơn 30.000 khung byte khi các tùy chọn này được bật.


+1 để chụp gói trước khi thay đổi bất cứ điều gì. ngay cả khi bạn không tìm thấy bất kỳ khung hình lớn nào, bạn có thể thấy các gói 'bình thường' bị phân mảnh ở đâu đó.
Javier

1
Theo mặc định, OpenVPN đặt MTU của thiết bị điều chỉnh thành 1500 (tương tự như MTU trên các thiết bị ethernet trên máy của chúng tôi). Tôi vẫn không chắc việc phân mảnh các gói VPN là tốt hay xấu. Các câu trả lời trong chủ đề này dường như ngụ ý rằng nó là xấu, trong khi các tài liệu tham khảo khác tôi tìm thấy trên web ngụ ý rằng nó là tốt.
iWerner

2
@iwerner: bạn đã thử xác định kích thước mtu bằng ping chưa? Nếu ICMP không bị tắt ở bất cứ đâu, bạn có thể sử dụng các mục sau trên windows: ping -f -l 1372 <Destination ip>. Tiếp tục giảm số lượng cho đến khi nó thành công. Trên linux, ping -s 1372 -M làm <đích ip>. FYI, Câu hỏi thường gặp về OpenVPN khuyên bạn nên sử dụng mssfix 1200, nhưng điều đó không giải quyết được nguyên nhân gốc rễ. Sử dụng các giải pháp VPN để phân đoạn luôn có tiềm năng đạt được hiệu quả. Nếu bạn có một thiết lập VPN lớn, bạn sẽ không thể sử dụng phân mảnh ở đầu tập trung trung tâm, chỉ có đầu văn phòng từ xa.
Greg Askew

2

Vì tò mò, bạn đã thử hạ MTU của giao diện mạng chưa? Có lẽ các liên kết vệ tinh vít lên phân mảnh xấu. Là một ghi chú phản trực quan, bạn có thể muốn thử openvpn qua TCP để thay đổi. Tôi biết nó sẽ làm giảm hiệu suất, nhưng nếu bạn không kiểm soát được sự phân mảnh dọc theo dòng thì nó có thể hỗ trợ bạn.


Tôi sẽ đề xuất điều ngược lại :) - trường hợp độ trễ cao này là trường hợp các vấn đề TCP-in-TCP xuất hiện và UDP sẽ tránh điều đó.
pjc50

Tôi đã giả sử rằng anh ta đang sử dụng cổng UDP mặc định cho openvpn, và do đó đã đề xuất điều ngược lại .. vâng, thông thường tôi đồng ý với bạn. Nhưng này, tất cả chúng ta đều biết rằng sysadmin là thử và sai, và thường là 'thử-làm-ngược-lại-xem-nếu-nó-hoạt động' :)
lorenzog

Cảm ơn. Hiện tại chúng tôi đang sử dụng UDP và thử TCP không bao giờ xảy ra với tôi. (Nếu tôi có nhiều đại diện hơn, tôi sẽ nâng cấp bạn)
iWerner

@iWerner: cảm ơn :) cũng vậy, hãy thử giảm MTU dần dần trên iface và xem khi nào nó dừng (nếu có).
lorenzog

2

Khi bạn sử dụng TCP, hãy tăng kích thước cửa sổ của TCP; điều này sẽ giúp với "số lượng gói trong không khí".

Đã được một thời gian kể từ khi tôi phải chơi với những thứ này, nhưng đây là một liên kết google tìm thấy cho tôi.

Sau khi tôi đọc lại câu hỏi của bạn, tôi thấy bạn đang chạy BGAN - Tôi sẽ có một cái nhìn tốt về điều này (hoặc chỉ cần google cho: "giả mạo BGAN").

Về đo lường băng thông, tôi đã thấy iperf khá tốt miễn là bạn đang sử dụng kích cỡ gói hợp lý.


Điều này thật thú vị - Nó đề cập rằng trình tăng tốc TCP có sẵn cho Redhat, trong khi những người inmarsat mà chúng tôi đã nói rằng nó chỉ có sẵn cho Windows và OS X (và đây thực sự là những gì trang web Inmarsat / BGAN nói)
iWerner

Họ có thể không có nó bây giờ; Tôi thấy ngày tài liệu là 07. Nếu bạn đẩy đủ mạnh và nói chuyện với đủ người; bạn có thể tìm thấy ai đó với một bản sao cũ của nó. Nói chung khi bạn gọi điện thoại trong bạn nhận được hỗ trợ cấp một. Tôi sẽ thử một số liên hệ của tôi nhưng không có gì đảm bảo.
Eddy

Tôi đã chạy xung quanh từ nhà cung cấp vệ tinh của chúng tôi; khó tìm được ai đó biết họ đang nói về cái gì Tôi sẽ tiếp tục cố gắng, trong lúc này đây là thứ cần thử: sourceforge.net/projects/pepsal Từ mô tả dự án, nó đang làm khá nhiều những gì phần mềm Inmarsat đang làm: PEPsal là một TCP trong suốt, đa lớp, tích hợp Proxy tăng cường hiệu suất phân chia kết nối thành hai phần, sử dụng các cải tiến TCP của Linux khi gửi dữ liệu và phần lớn cải thiện hiệu suất trong các liên kết với các đặc điểm khác nhau
Eddy

2

Tôi nghĩ rằng bạn có thể đang sủa sai cây. Bất cứ khi nào tôi gặp sự cố MTU sai, lưu lượng truy cập đã dừng trước 192KB. Tôi nghĩ rằng nó liên quan nhiều hơn đến một số trong cửa sổ "trong gói bay", hoặc cửa sổ TCP hoặc có thể một số bộ đệm trong chính đường lên vệ tinh.

Chắc chắn làm một số ảnh chụp gói dài (cả 'bên trong' và 'bên ngoài' của VPN) và xem nếu bạn đang nhận được tất cả các ACK's

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.