Dwie linie internetowe mogą uczynić VPN bardziej dostępnym, a niektórym obciążeniom dać większą prędkość, ale to mechanizm decyduje, która z tych rzeczy nastąpi. Router z dwiema trasami domyślnymi nie jest połączony, a tunel przenoszący tysiące wewnętrznych połączeń nadal jest jednym zewnętrznym przepływem. Nazwanie obietnicy jako pierwszej to różnica między projektem a kosztownym rozczarowaniem. Tabela poniżej rozdziela opcje według tego, czego każda wymaga na drugim końcu i co utrata łącza robi z transferem.

Trzy obietnice, a tylko jedna potrzebuje partnera

Przełączanie przy awarii utrzymuje ścieżkę dostępną, gdy preferowane łącze znika. Równoważenie według skrótu przepływu rozkłada niezależne przepływy na oba łącza wysyłania. Łączenie jednego przepływu pozwala jednemu transferowi używać obu łączy naraz. To różne produkty o różnych wymaganiach, i tylko ostatni potrzebuje współpracy czegoś spoza twojego routera.

MechanismFar-end requirementEffect on one transferWhat breaks under a link loss
Packet-spraying overlayA cooperating endpoint that reassembles the streamPackets can spread across both linksReordering and buffering on the surviving path; its own recovery logic decides what continues
MPTCP subflowsA peer or proxy that accepts subflowsSubflows can share one connectionSurviving subflows continue if the peer keeps them alive
Flow-hash balancingNothing new; the existing tunnel endpoint is enoughOne outer flow still follows one linkFlows hashed onto the dead link move; established sessions break
Link failoverNothing newOne path at a time; the second link sits idleThe session stalls or restarts on the other link

Nic w tej tabeli nie jest powodem, by kupować drugą linię. Robi ona coś innego: nie pozwala oceniać projektu przełączania tak, jakby to było łączenie.

Dlaczego tunel wygląda dla routera jak jeden przepływ

Router równoważący obciążenie haszuje adresy źródła i celu wraz z portami, a następnie wysyła cały przepływ tam, gdzie wskazuje skrót. Tunel VPN jest z punktu widzenia routera jednym takim przepływem, cokolwiek działa w jego wnętrzu. Połączenia wewnętrzne nigdy nie docierają do decyzji o skrócie, ponieważ nagłówek zewnętrzny już wyznaczył ścieżkę. Dlatego drugie łącze wysyłania może podwoić całkowitą przepustowość dla wielu użytkowników i niczego nie zmienić w dużym transferze jednego użytkownika.

Dwa osobne tunele mogą dać dwóch kandydatów, ale nadal potrzebują świadomej polityki, która przydziela ruch i utrzymuje odpowiedzi na ścieżce, którą szło żądanie. Routing asymetryczny jest zwykłym skutkiem pominięcia tego kroku. Minimum to polityka, która nazywa przepływ, preferowane łącze i łącze zapasowe.

Łączenie Ethernet nie przechodzi przez niepowiązanych dostawców, ponieważ drugi koniec musi uczestniczyć w protokole agregacji. Łączenie przez dwóch dostawców internetu to projekt badawczy, o ile nie istnieje współpracujący punkt końcowy.

Czego wielościeżkowy TCP wymaga na obu końcach

Dokumentacja Linuksa dotycząca Multipath TCP opisuje kilka podprzepływów należących do jednego połączenia. Obsługa jądra na jednym końcu sama niczego nie zmienia, bo druga strona też musi przyjąć te podprzepływy. Serwer proxy po drugiej stronie to inne częste rozwiązanie, i staje się komponentem z własną przepustowością i dostępnością, które trzeba zaplanować. Ta sama logika wyklucza łatwą odpowiedź dla WireGuard, którego transportem jest UDP: MPTCP rozwija podprzepływy TCP i nie może zagregować tego tunelu bez czegoś jeszcze w projekcie.

Sprawdź, czy funkcja jądra jest włączona, zanim zaczniesz wokół niej projektować, bo wiele dystrybucji dostarcza ją wyłączoną. Te trzy polecenia odpowiadają na to w minutę.

sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show

Wybieraj według obciążenia, nie według broszury

Jeśli obciążeniem jest wiele niezależnych sesji, równoważenie według skrótu przepływu może dodać przepustowość bez współpracy na drugim końcu. Jeśli to jeden duży transfer, pomoże tylko projekt agregacji, a ten projekt potrzebuje współpracującego partnera. Jeśli wymaganiem jest, by praca trwała dalej, gdy łącze umiera, odpowiedzią jest przełączanie, a przepustowość jednego transferu nie ma znaczenia.

Zapisz wymaganie w jednym zdaniu z czasownikiem: jedna kopia zapasowa kończy się dwa razy szybciej, albo zerwane łącze nie kończy sesji. Niejasne cele dają projekty, których nikt nie może przyjąć ani odrzucić. Potem zdecyduj, czym może być drugi koniec, bo najtańsza opcja to często ta, która niczego tam nie wymaga. To ograniczenie usuwa większość twierdzeń z broszury jeszcze przed pierwszym spotkaniem.

Trzymaj trzy obietnice osobno w dokumencie wymagań. Projekt, który twierdzi, że spełnia wszystkie trzy, zwykle dostarcza jedną i po cichu zakłada pozostałe. Następna sekcja sprawdza, która jest rzeczywiście dostarczana.

Przetestuj jeden transfer i wiele, potem wyrwij łącze

Porównaj jeden ciągły transfer z kilkoma równoległymi transferami do tego samego celu, i zapisz straty, opóźnienie i wykorzystanie każdego łącza. Zysk tylko przy równoległych sesjach wskazuje na rozkład przepływów, a nie na agregację jednego przepływu. Przetestuj oddzielnie utratę jednego łącza wysyłania, bo przepustowość przy działających obu łączach nic nie mówi o przełączaniu dla ustanowionej sesji. Zapisz trasę, gniazdo i liczniki retransmisji przed każdym testem i po nim.

ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5

Gdy pojedynczy transfer nadal używa jednego łącza wysyłania, projekt robi dokładnie to, co sugeruje skrót przepływu. Gdy równoległe transfery rozkładają się na oba, równoważenie działa, a agregacja nie. Zapisz, którą z trzech obietnic projekt naprawdę spełnia, a następna rozmowa o przepustowości zacznie się od dowodów, nie od twierdzenia dostawcy.

Powiązane artykuły