Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Je možné spojit několik internetových kanálů do jednoho? Kolem tohoto tématu koluje spousta mylných představ a mýtů, ani zkušení síťoví inženýři často nevědí, že je to možné. Ve většině případů je agregace odkazů chybně označována jako NAT balancing nebo failover. Ale skutečné shrnutí umožňuje spustit jediné TCP spojení současně přes všechny internetové kanály, například video vysílání, takže v případě přerušení některého z internetových kanálů nebude vysílání přerušeno.

Existují drahá komerční řešení pro vysílání videa, ale taková zařízení stojí hodně kilobacků. Článek popisuje konfiguraci bezplatného otevřeného balíčku OpenMPTCPRouter a zabývá se populárními mýty o sčítání kanálů.

Mýty o sčítání kanálů

Existuje mnoho domácích routerů, které podporují funkci Multi-WAN. Někdy tomu výrobci říkají sčítání kanálů, což není tak úplně pravda. Mnoho síťařů se domnívá, že kromě LACP a sčítání na vrstvě L2 neexistuje žádná další kanálová agregace. Často jsem slýchal, že je to obecně nemožné od lidí, kteří pracují v telekomunikacích. Pokusme se proto porozumět populárním mýtům.

Balancování na úrovni IP spojení

Jedná se o nejdostupnější a nejoblíbenější způsob, jak využívat několik internetových kanálů současně. Pro zjednodušení si představme, že máte tři ISP, z nichž každý vám poskytne skutečnou IP adresu ze své sítě. Všichni tito poskytovatelé jsou připojeni k routeru s podporou funkce Multi-WAN. Může to být OpenWRT s balíčkem mwan3, mikrotik, ubiquiti nebo jakýkoli jiný domácí router, protože tato možnost již není neobvyklá.

Pro simulaci situace si představte, že nám poskytovatelé poskytli následující adresy:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Tedy připojení ke vzdálenému serveru example.com prostřednictvím každého z poskytovatelů uvidí vzdálený server tři nezávislé zdrojové adresy IP klienta. Vyvažování umožňuje rozdělit zátěž mezi kanály a používat je všechny tři současně. Pro zjednodušení si představme, že zátěž rozdělíme mezi všechny kanály rovnoměrně. Výsledkem je, že když klient otevře web se třemi obrázky podmíněně, stáhne každý obrázek prostřednictvím samostatného poskytovatele. Na straně webu to vypadá jako připojení ze tří různých IP adres.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Při balancování na úrovni připojení prochází každé TCP spojení přes samostatného poskytovatele.

Tento režim vyvážení často způsobuje uživatelům problémy. Mnoho webů například napevno připojuje soubory cookie a tokeny na adresu IP klienta, a pokud se náhle změní, požadavek je vyřazen nebo se klient z webu odhlásí. To se často reprodukuje v systémech klient-banka a dalších webech s přísnými pravidly uživatelských relací. Zde je jednoduchý názorný příklad: hudební soubory na VK.com jsou dostupné pouze s platným klíčem relace, který je vázán na IP, a klienti využívající takové balancování často nepřehrají zvuk, protože požadavek neprošel přes poskytovatele, ke kterému relace je vázána.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Při stahování torrentů balancování na úrovni připojení sčítá šířku pásma všech kanálů

Takové vyvažování vám umožňuje získat součet rychlosti internetového kanálu při použití více připojení. Pokud má například každý ze tří poskytovatelů rychlost 100 megabitů, pak při stahování torrentů získáme 300 megabitů. Protože torrent otevírá spoustu spojení, která jsou distribuována mezi všechny poskytovatele a nakonec využívají celý kanál.

Je důležité si uvědomit, že jedno jediné TCP spojení půjde vždy pouze přes jednoho poskytovatele. Tzn., že pokud stáhneme jeden velký soubor přes HTTP, tak toto spojení proběhne přes jednoho z poskytovatelů a pokud se spojení s tímto poskytovatelem přeruší, tak se přeruší i stahování.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Jedno připojení bude vždy využívat pouze jeden internetový kanál

To platí i pro videovysílání. Pokud vysíláte streamované video na nějakém podmíněném Twitchi, pak vyvážení na úrovni IP připojení nepřinese žádnou zvláštní výhodu, protože video stream bude vysílán v rámci jednoho IP připojení. V tomto případě, pokud poskytovatel WAN 3 začne mít problémy s komunikací, jako je ztráta paketů nebo zpomalení, nebudete moci okamžitě přejít k jinému poskytovateli. Vysílání bude muset být zastaveno a znovu připojeno.

Skutečné sčítání kanálů

Reálný součet kanálů umožňuje spustit jedno připojení k podmíněnému Twitchi přes všechny poskytovatele najednou tak, že pokud některý z poskytovatelů přeruší, připojení nebude přerušeno. Jde o překvapivě obtížný problém, který stále nemá optimální řešení. Mnozí ani nevědí, že je to možné!

Z předchozích ilustrací si pamatujeme, že podmíněný Twitch server od nás může přijímat video stream pouze z jedné zdrojové IP adresy, což znamená, že musí být s námi vždy konstantní, bez ohledu na to, kteří poskytovatelé odpadli a kteří fungují. Abychom toho dosáhli, potřebujeme sumační server, který ukončí všechna naše spojení a sloučí je do jednoho.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Sumační server agreguje všechny kanály do jednoho tunelu. Všechna spojení pocházejí z adresy sumačního serveru

Toto schéma využívá všechny poskytovatele a deaktivace kteréhokoli z nich nezpůsobí ztrátu komunikace se serverem Twitch. Ve skutečnosti se jedná o speciální VPN tunel, pod jehož kapotou je několik internetových kanálů najednou. Hlavním úkolem takového schématu je získat nejkvalitnější komunikační kanál. Pokud problémy začnou u jednoho z poskytovatelů, ztráta paketů, zvýšení zpoždění, nemělo by to žádným způsobem ovlivnit kvalitu komunikace, protože zátěž bude automaticky distribuována přes jiné, lepší kanály, které jsou k dispozici.

Komerční řešení

Tento problém již dlouho trápí ty, kteří vysílají události živě a nemají přístup k vysoce kvalitnímu internetu. Pro takové úkoly existuje několik komerčních řešení, například Teradek vyrábí takové monstrózní routery, do kterých se vkládají balíčky USB modemů:

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Vysílací video router s funkcí sčítání kanálů

Taková zařízení mají obvykle schopnost zachytit video přes HDMI nebo SDI. Společně s routerem se prodává předplatné služby sčítání kanálů a také zpracování video streamu, jeho překódování a další přenos. Cena takových zařízení začíná od 2 XNUMX $ se sadou modemů plus samostatné předplatné služby.

Někdy to vypadá dost děsivě:

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Nastavení OpenMPTCPRouter

Protokol MP-TCP (MultiPath TCP) byl vynalezen pro možnost připojení k několika kanálům najednou. Například jeho podporuje iOS a může se současně připojit ke vzdálenému serveru přes WiFi a přes mobilní síť. Je důležité pochopit, že se nejedná o dvě samostatná TCP spojení, ale o jedno spojení vytvořené přes dva kanály najednou. Aby to fungovalo, vzdálený server musí také podporovat MPTCP.

OpenMPTCPRouter je projekt routeru s otevřeným zdrojovým kódem, který vám umožňuje skutečně sčítat kanály. Autoři uvádějí, že projekt je ve stavu alfa verze, ale již je možné jej používat. Skládá se ze dvou částí - sumačního serveru, který je umístěn na internetu a routeru, ke kterému je připojeno několik poskytovatelů internetu a samotných klientských zařízení: počítače, telefony. Vlastní router může být Raspberry Pi, některé WiFi routery nebo běžný počítač. Existují hotové sestavy pro různé platformy, což je velmi výhodné.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
Jak funguje OpenMPTCPRouter

Nastavení sumarizačního serveru

Sumační server je umístěn na internetu a ukončuje spojení ze všech kanálů klientského routeru do jednoho. IP adresa tohoto serveru bude externí adresou při přístupu k internetu přes OpenMPTCPRouter.

Pro tento úkol použijeme server VPS na Debianu 10.

Požadavky na sumační server:

  • MPTCP nefunguje na virtualizaci OpenVZ
  • Mělo by být možné nainstalovat si vlastní linuxové jádro

Server je nasazen provedením jednoho příkazu. Skript nainstaluje jádro s povoleným mptcp a všechny požadované balíčky. Instalační skripty jsou dostupné pro Ubuntu a Debian.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh

Výsledek úspěšné instalace serveru.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Uložíme si hesla, budeme je potřebovat ke konfiguraci klientského routeru a restartu. Je důležité mít na paměti, že po instalaci bude SSH dostupné na portu 65222. Po restartu se musíme ujistit, že nabootujeme s novým jádrem

uname -a 
Linux test-server.local 4.19.67-mptcp

Vedle čísla verze vidíme nápis mptcp, což znamená, že jádro bylo nainstalováno správně.

Nastavení klientského routeru

Na projektové místo Pro některé platformy, jako jsou Raspberry Pi, Banana Pi, routery Lynksys a virtuální stroje, jsou k dispozici hotové sestavení.
Tato část openmptcprouteru je založena na OpenWRT a používá LuCI jako rozhraní, známé každému, kdo se někdy setkal s OpenWRT. Distribuční sada váží asi 50 Mb!

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Jako testovací stolici použiji Raspberry Pi a několik USB modemů s různými operátory: MTS a Megafon. Jak zapsat obrázek na SD kartu, asi netřeba říkat.

Zpočátku je ethernetový port v Raspberry Pi nakonfigurován jako LAN se statickou IP adresou. 192.168.100.1. Abych si nepletl s dráty na stole, připojil jsem Raspberry Pi k přístupovému bodu WiFi a na WiFi adaptéru počítače nastavil statickou adresu 192.168.100.2. Server DHCP není ve výchozím nastavení povolen, takže je nutné použít statické adresy.

Nyní můžete přejít do webového rozhraní 192.168.100.1

Při prvním přihlášení vás systém požádá o nastavení hesla root, SSH bude dostupné se stejným heslem.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter
V nastavení LAN můžete nastavit požadovanou podsíť a povolit DHCP server.

Používám modemy, které jsou definovány jako USB ethernetová rozhraní se samostatným DHCP serverem, takže to vyžadovalo instalaci doplňkové balíčky. Postup je totožný s konfigurací modemů v běžném OpenWRT, takže se jím zde nebudu zabývat.

Dále je třeba nakonfigurovat rozhraní WAN. Zpočátku byla v systému vytvořena dvě virtuální rozhraní WAN1 a WAN2. Potřebují přiřadit fyzické zařízení, v mém případě jsou to názvy rozhraní USB modemu.

Abyste se nepletli v názvech rozhraní, doporučuji vám sledovat zprávy dmesg při připojení přes SSH.

Protože moje modemy samy fungují jako routery a samy mají DHCP server, musel jsem změnit nastavení jejich vnitřních síťových rozsahů a vypnout DHCP server, protože zpočátku oba modemy zadávají adresy ze stejné sítě a to způsobuje konflikt.

OpenMPTCPRouter vyžaduje, aby adresy rozhraní WAN byly statické, proto vymyslíme podsítě pro modemy a nakonfigurujeme je v nabídce systém → openmptcprouter → nastavení rozhraní. Zde je také nutné zadat IP adresu a klíč serveru získané během instalace sumačního serveru.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

V případě úspěšného nastavení by se na stavové stránce měl objevit podobný obrázek. Je vidět, že se routeru podařilo dosáhnout sumačního serveru a oba kanály fungují správně.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Výchozí režim je shadowsocks + mptcp. To je taková proxy, která do sebe zabalí všechna spojení. Zpočátku je nakonfigurován tak, aby zpracovával pouze TCP, ale můžete povolit i UDP.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Pokud na stavové stránce nejsou žádné chyby, lze nastavení považovat za dokončené.
U některých poskytovatelů může nastat situace, kdy je příznak mptcp zkrácen podél dopravní cesty, pak dojde k takové chybě:

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

V tomto případě můžete použít jiný režim provozu, bez použití MPTCP, více o tom zde.

Závěr

Projekt OpenMPTCPRouter je velmi zajímavý a důležitý, protože je možná jediným otevřeným komplexním řešením problému sčítání kanálů. Všechno ostatní je buď pevně uzavřené a proprietární, nebo jen samostatné moduly, se kterými si běžný člověk neporadí. V současné fázi vývoje je projekt ještě dost syrový, extrémně špatná dokumentace, spousta věcí prostě není popsána. Ale zároveň to pořád funguje. Doufám, že se to bude dál vyvíjet a dostaneme routery pro domácnost, které budou umět normálně kombinovat kanály hned z krabice.

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Sledujte našeho vývojáře na Instagramu

Reálné shrnutí internetových kanálů - OpenMPTCPRouter

Zdroj: www.habr.com

Přidat komentář