Prowadzimy OpenVPN VPN przez łącze satelitarne BGAN, gdzie czasy ping wynoszą około 3 sekund. Używamy go w konfiguracji tun i działamy na systemie Linux (CentOS). Jest to przede wszystkim e-mail, który zostanie wysłany za pośrednictwem łącza, ale gdy tylko poczta zawiera duże załączniki, VPN wydaje się utknąć.
„Mogę pingować przez tunel, ale każda prawdziwa praca powoduje jego zablokowanie. Czy jest to problemem MTU?” pytanie w OpenVPN FAQ wydaje się dokładnie opisywać mój problem, ale wydaje się, że używanie mssfix
i fragment
nadal niewiele robi, aby poprawić sytuację.
Moim głównym testem jest skopiowanie pliku 2 MB przez VPN za pomocą scp . Skopiuje około 192 kilobajtów, a następnie zgłosi stan - zablokowany - . Jeśli poczekam kilka sekund, zacznie się kopiowanie, a następnie zatrzyma się ponownie po następnej kilku kilobajtach.
To przeciąganie występuje bez względu na to, czy ustawiłem opcje fragment
lub mssfix
w mojej konfiguracji OpenVPN (chociaż ustawienie fragment 1000
to wydawało się zmniejszać przeciąganie, ale go nie eliminowało). OpenVPN mtu-test
zgłosił 1542 jako rozmiar MTU.
Szukałem w internecie, aby uzyskać więcej porad, w jaki sposób i kiedy użyć mssfix
i fragment
, ale tylko znaleźć strony mówią same jak FAQ, i nie podając szczegółowe informacje, w jaki sposób i kiedy używać które parametry.
Moje pytania brzmią zatem:
- Kiedy używam
mssfix
ifragment
? - Czy używam
mssfix
iwfragment
połączeniu? - Jeśli
mssfix
ifragment
to rozwiązanie, jakie sątun-mtu
,link-mtu
imtu-disc
parametry?
Ponadto używam narzędzia iperf do mierzenia przepustowości. Bez sieci VPN stale mierzy rzędu 210 Kb / s.
Gdy używasz iperf przez VPN ( $ iperf -c remoteserver -t60 -i5
), zaczynałby się od 10 Kbit / s, a następnie stopniowo zwiększał się, aż zgłasza 1,2 Mb / s, a następnie wydaje się, że utknął w miejscu, gdy zgłasza 0 kbit / s dla wielu iteracji (I myślę, że 1,2 Mb / s może wynikać z buforowania OpenVPN itp.)
Czy iperf to najlepszy sposób pomiaru przepustowości?
Każda pomoc w tej sytuacji będzie bardzo mile widziana.
Odpowiedzi:
1542 jako MTU? Nigdy o tym nie słyszałem dla łącza WAN. Zwykle MTU to maksymalny ładunek, rozmiar pakietu ip minus nagłówek dla IP (20 bajtów) i ICMP (8 bajtów). Oznacza to, że MTU = 1500 dla tradycyjnej sieci Ethernet LAN. Ponadto większość sieci VPN wprowadza narzut związany z enkapsulacją pakietów. Typowa jednostka MTU VPN to 1400.
W nowoczesnych sieciach trudno jest w dowolnym momencie ustalić, jaka będzie MTU, ponieważ ścieżki wejścia i wyjścia mogą być różne, a także mogą się zmieniać z powodu automatycznego przekierowywania ścieżki. W przypadku takiej sieci bardziej efektywne może być ustawienie niskiej MTU na hostach znajdujących się po obu stronach łącza VPN, takich jak 576.
MSS (maksymalny rozmiar segmentu) to MTU minus nagłówki IP + TCP (40 bajtów). Jest to zwykle negocjowane przez stos sieci i zwykle nie ma takich samych problemów negocjacyjnych jak MTU, chyba że MTU jest błędne. (Negocjacja MTU jest zwykle utrudniona przez zablokowane routery ICMP lub czarnej dziury).
Pierwszą rzeczą, którą bym zrobił, to przechwycenie pakietu sieciowego po stronie wysyłającej i posortowanie wyświetlacza według rozmiaru ramki (może być konieczne dodanie tej kolumny w Wireshark). Powinieneś sprawdzić, czy nie wysyłasz żadnych ramek o zbyt dużych rozmiarach, jakich byś się spodziewał. Nie jest niczym niezwykłym, że współczesne karty sieciowe wysyłają ramki ponadgabarytowe, jeśli włączone są takie opcje, jak Duże wysyłanie odciążania lub Duże ramki. Widziałem ponad 30 000 ramek bajtowych, gdy te opcje są włączone.
źródło
Z ciekawości próbowałeś obniżyć MTU interfejsu sieciowego? Być może łącze satelitarne źle psuje fragmentację. Jako sprzeczną z intuicją notatkę, możesz spróbować openvpn przez TCP dla zmiany. Wiem, że powinno to zmniejszyć wydajność, ale jeśli nie masz kontroli nad fragmentacją wzdłuż linii, może ci to pomóc.
źródło
Kiedy używasz TCP, zwiększ rozmiar okna TCP; pomoże to w „liczbie pakietów w powietrzu”.
Minęło trochę czasu, odkąd musiałem grać z tymi rzeczami, ale oto jeden link znaleziony dla mnie w Google.
Po ponownym przeczytaniu twojego pytania widzę, że korzystasz z BGAN - rzuciłbym na to okiem (lub po prostu google: „spoofing BGAN”).
Jeśli chodzi o pomiar przepustowości, iperf jest całkiem przyzwoity, o ile używasz rozsądnych rozmiarów pakietów.
źródło
Myślę, że szczekasz na niewłaściwe drzewo. Za każdym razem, gdy miałem złe problemy z MTU, ruch zatrzymał się znacznie przed 192 KB. Myślę, że jest bardziej związany z niektórymi w oknie „w pakietach lotniczych”, albo w oknie TCP, a może w niektórych buforach w samym łączu nadawczym satelity.
Na pewno zrobić kilka przechwytuje długo pakietu (zarówno „wewnątrz” i „na zewnątrz” z VPN) i sprawdzić, czy dostajesz wszystkie
ACK
„sźródło