Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Je možné spojiť niekoľko internetových kanálov do jedného? Okolo tejto témy koluje množstvo mylných predstáv a mýtov, dokonca ani skúsení sieťoví inžinieri často nevedia, že je to možné. Vo väčšine prípadov sa agregácia odkazov omylom nazýva vyvažovanie na úrovni NAT alebo núdzové prepnutie. Ale skutočné zhrnutie to umožňuje spustiť jedno TCP spojenie súčasne cez všetky internetové kanály, napríklad video vysielanie, takže v prípade prerušenia niektorého z internetových kanálov sa vysielanie nepreruší.

Existujú drahé komerčné riešenia pre video vysielanie, ale takéto zariadenia stoja veľa kilodolárov. Tento článok popisuje, ako nakonfigurovať bezplatný balík OpenMPTCPRouter s otvoreným zdrojovým kódom, a venuje sa populárnym mýtom o sčítavaní kanálov.

Mýty o sčítavaní kanálov

Existuje mnoho domácich smerovačov, ktoré podporujú funkciu Multi-WAN. Niekedy to výrobcovia nazývajú sčítanie kanálov, čo nie je úplne pravda. Mnoho networkerov verí, že okrem LACP a súčtu na úrovni L2, neexistuje žiadna iná kanálová agregácia. Často som od ľudí, ktorí pracujú v telekomunikáciách, počul, že je to vo všeobecnosti nemožné. Preto sa pokúsme pochopiť populárne mýty.

Vyvažovanie na úrovni pripojenia IP

Toto je najdostupnejší a najpopulárnejší spôsob využitia viacerých internetových kanálov súčasne. Pre zjednodušenie si predstavme, že máte troch poskytovateľov internetu, z ktorých každý vám poskytne skutočnú IP adresu zo svojej siete. Všetci títo poskytovatelia sú pripojení k smerovaču, ktorý podporuje funkciu Multi-WAN. Môže to byť OpenWRT s balíkom mwan3, mikrotik, ubiquiti alebo akýkoľvek iný domáci router, pretože takáto možnosť už nie je nezvyčajná.

Na simuláciu situácie si predstavme, že nám poskytovatelia poskytli nasledujúce adresy:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

To znamená pripojenie k vzdialenému serveru example.com Prostredníctvom každého z poskytovateľov uvidí vzdialený server troch nezávislých zdrojových IP klientov. Vyvažovanie vám umožňuje rozdeliť záťaž medzi kanály a použiť všetky tri súčasne. Pre jednoduchosť si predstavme, že záťaž rozdelíme rovnomerne medzi všetky kanály. Výsledkom je, že keď klient otvorí stránku s tromi obrázkami, stiahne každý obrázok prostredníctvom samostatného poskytovateľa. Na strane webu to vyzerá ako pripojenia z troch rôznych IP adries.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Pri balancovaní na úrovni pripojenia prechádza každé TCP pripojenie cez samostatného poskytovateľa.

Tento režim vyváženia často spôsobuje používateľom problémy. Mnoho stránok napríklad striktne viaže súbory cookie a tokeny s IP adresou klienta a ak sa náhle zmení, žiadosť sa zamietne alebo sa klient odhlási zo stránky. Toto sa často reprodukuje v systémoch klient-banka a iných stránkach s prísnymi pravidlami relácie používateľa. Tu je jednoduchý názorný príklad: hudobné súbory na VK.com sú dostupné len s platným kľúčom relácie, ktorý je viazaný na IP a klienti využívajúci takéto vyvažovanie často neprehrávajú zvuk, pretože požiadavka neprešla cez poskytovateľa, ktorému relácia je viazaná.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Pri sťahovaní torrentov vyrovnávanie úrovne pripojenia zhŕňa šírku pásma všetkých kanálov

Toto vyváženie vám umožňuje získať súčet rýchlosti internetového kanála pri použití viacerých pripojení. Napríklad, ak má každý z troch poskytovateľov rýchlosť 100 megabitov, potom pri sťahovaní torrentov dostaneme 300 megabitov. Pretože torrent otvára veľa spojení, ktoré sú distribuované medzi všetkých poskytovateľov a nakoniec využívajú celý kanál.

Je dôležité pochopiť, že jedno jediné TCP spojenie pôjde vždy len cez jedného poskytovateľa. To znamená, že ak stiahneme jeden veľký súbor cez HTTP, tak toto spojenie prebehne cez niektorého z poskytovateľov a ak sa spojenie s týmto poskytovateľom preruší, preruší sa aj sťahovanie.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Jedno pripojenie bude vždy využívať iba jeden internetový kanál

To platí aj pre video vysielanie. Ak vysielate streamované video na nejaký druh podmieneného Twitchu, potom vyváženie na úrovni pripojení IP neprinesie žiadnu zvláštnu výhodu, pretože stream videa bude vysielaný v rámci jedného pripojenia IP. V tomto prípade, ak poskytovateľ WAN 3 začne mať problémy s komunikáciou, ako je strata paketov alebo znížená rýchlosť, nebudete môcť okamžite prejsť k inému poskytovateľovi. Vysielanie bude potrebné zastaviť a znova pripojiť.

Skutočný súčet kanálov

Reálne sčítanie kanálov umožňuje spustiť jedno pripojenie na podmienený Twitch cez všetkých poskytovateľov naraz tak, že ak sa niektorý z poskytovateľov pokazí, pripojenie sa nepreruší. Ide o prekvapivo zložitý problém, ktorý stále nemá optimálne riešenie. Veľa ľudí ani nevie, že je to možné!

Z predchádzajúcich ilustrácií si pamätáme, že podmienený server Twitch môže od nás prijímať video stream iba z jednej zdrojovej IP adresy, čo znamená, že musí byť pre nás vždy konštantný, bez ohľadu na to, ktorí poskytovatelia odpadli a ktorí fungujú. Aby sme to dosiahli, potrebujeme sumačný server, ktorý ukončí všetky naše spojenia a spojí ich do jedného.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Sumačný server agreguje všetky kanály do jedného tunela. Všetky pripojenia pochádzajú z adresy sčítacieho servera

V tejto schéme sa používajú všetci poskytovatelia a zakázanie ktoréhokoľvek z nich nespôsobí stratu komunikácie so serverom Twitch. V podstate ide o špeciálny VPN tunel, pod kapotou ktorého je niekoľko internetových kanálov naraz. Hlavnou úlohou takejto schémy je získať najkvalitnejší komunikačný kanál. Ak jeden z poskytovateľov začne mať problémy, stratu paketov, zvýšené oneskorenia, nemalo by to žiadnym spôsobom ovplyvniť kvalitu komunikácie, pretože záťaž sa automaticky rozloží na iné, lepšie dostupné kanály.

Komerčné riešenia

Tento problém dlhodobo trápi tých, ktorí vysielajú priame prenosy a nemajú prístup ku kvalitnému internetu. Na takéto úlohy existuje viacero komerčných riešení, napríklad firma Teradek vyrába takéto monštruózne routery, do ktorých sa vkladajú balíčky USB modemov:

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Smerovač pre video vysielanie s funkciou sčítania kanálov

Takéto zariadenia majú zvyčajne zabudovanú schopnosť zachytávať video signály cez HDMI alebo SDI. Spolu so smerovačom sa predáva predplatné služby sčítania kanálov, ako aj spracovanie toku videa, jeho prekódovanie a ďalšie prenášanie. Cena takýchto zariadení začína od 2 XNUMX $ so súpravou modemov plus samostatné predplatné služby.

Niekedy to vyzerá dosť strašidelne:

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Nastavenie OpenMPTCPRouter

protokol MP-TCP (MultiPath TCP) bol vynájdený, aby sa mohol pripojiť cez niekoľko kanálov naraz. Napríklad jeho podporuje iOS a môže sa súčasne pripojiť k vzdialenému serveru cez WiFi a cez mobilnú sieť. Je dôležité pochopiť, že nejde o dve samostatné TCP spojenia, ale skôr o jedno spojenie vytvorené cez dva kanály naraz. Aby to fungovalo, vzdialený server musí tiež podporovať MPTCP.

OpenMPTCPRouter je projekt smerovača s otvoreným zdrojovým kódom, ktorý umožňuje skutočnú sumarizáciu kanálov. Autori uvádzajú, že projekt je v stave alfa verzie, no už sa dá použiť. Skladá sa z dvoch častí - sumovacieho servera, ktorý je umiestnený na internete a smerovača, ku ktorému je pripojených niekoľko poskytovateľov internetu a samotné klientske zariadenia: počítače, telefóny. Vlastným routerom môže byť Raspberry Pi, niektoré WiFi routery alebo bežný počítač. Existujú hotové zostavy pre rôzne platformy, čo je veľmi výhodné.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
Ako funguje OpenMPTCPRouter

Nastavenie súhrnného servera

Sumačný server je umiestnený na internete a ukončuje spojenia zo všetkých kanálov klientskeho smerovača do jedného. IP adresa tohto servera bude externou adresou pri prístupe na internet cez OpenMPTCPRouter.

Na túto úlohu použijeme server VPS na Debiane 10.

Požiadavky na súhrnný server:

  • MPTCP nefunguje na virtualizácii OpenVZ
  • Malo by byť možné nainštalovať si vlastné jadro Linuxu

Server je nasadený vykonaním jedného príkazu. Skript nainštaluje jadro s podporou mptcp a všetky potrebné balíky. Inštalačné skripty sú dostupné pre Ubuntu a Debian.

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

Výsledok úspešnej inštalácie servera.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Uložíme heslá, budeme ich potrebovať na konfiguráciu klientskeho smerovača a reštart. Je dôležité mať na pamäti, že po inštalácii bude SSH dostupné na porte 65222. Po reštarte sa musíme uistiť, že sme zaviedli nové jadro

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

Vedľa čísla verzie vidíme nápis mptcp, čo znamená, že jadro bolo nainštalované správne.

Nastavenie klientskeho smerovača

Na webová stránka projektu hotové zostavy sú dostupné pre niektoré platformy, ako napríklad Raspberry Pi, Banana Pi, smerovače Lynksys a virtuálne stroje.
Táto časť openmptcprouter je založená na OpenWRT s použitím LuCI ako rozhrania, ktoré pozná každý, kto sa niekedy stretol s OpenWRT. Distribúcia váži asi 50 MB!

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Ako testovaciu stolicu použijem Raspberry Pi a niekoľko USB modemov s rôznymi operátormi: MTS a Megafon. Myslím, že vám nemusím hovoriť, ako zapísať obrázok na kartu SD.

Ethernetový port v Raspberry Pi je spočiatku nakonfigurovaný ako lan so statickou IP adresou 192.168.100.1. Aby som sa nehrabal s drôtmi na stole, pripojil som Raspberry Pi k prístupovému bodu WiFi a nastavil som WiFi adaptér počítača na statickú adresu. 192.168.100.2. Server DHCP nie je v predvolenom nastavení povolený, takže musíte použiť statické adresy.

Teraz sa môžete prihlásiť do webového rozhrania 192.168.100.1

Pri prvom prihlásení vás systém požiada o nastavenie rootovského hesla; SSH bude dostupné s rovnakým heslom.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter
V nastaveniach siete LAN môžete nastaviť požadovanú podsieť a povoliť server DHCP.

Používam modemy, ktoré sú definované ako USB Ethernet rozhrania so samostatným DHCP serverom, takže si to vyžadovalo inštaláciu doplnkové balíčky. Postup je identický ako pri nastavovaní modemov v bežnom OpenWRT, preto ho tu nebudem rozoberať.

Ďalej musíte nakonfigurovať rozhrania WAN. Spočiatku systém vytvoril dve virtuálne rozhrania WAN1 a WAN2. Treba im priradiť fyzické zariadenie, v mojom prípade ide o názvy rozhraní USB modemu.

Aby ste sa vyhli zámene s názvami rozhraní, odporúčam počas pripojenia cez SSH prezerať správy dmesg.

Keďže moje modemy samotné fungujú ako smerovače a samy majú DHCP server, musel som zmeniť nastavenia ich interných sieťových rozsahov a zakázať DHCP server, pretože spočiatku oba modemy vydávajú adresy z rovnakej siete, čo spôsobuje konflikt.

OpenMPTCPRouter vyžaduje, aby boli adresy rozhrania WAN statické, preto vymyslíme podsiete pre modemy a nakonfigurujeme ich v ponuke systém → openmptcprouter → nastavenia rozhrania. Tu musíte zadať IP adresu a kľúč servera, ktorý ste získali počas inštalácie sumačného servera.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Ak je nastavenie úspešné, na stavovej stránke by sa mal objaviť podobný obrázok. Je vidieť, že smerovač dokázal dosiahnuť sumačný server a oba kanály fungujú normálne.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Predvolený režim je shadowsocks + mptcp. Toto je proxy server, ktorý do seba zabalí všetky pripojenia. Pôvodne je nakonfigurovaný tak, aby spracovával iba TCP, ale možno povoliť aj UDP.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Ak na stavovej stránke nie sú žiadne chyby, nastavenie možno považovať za dokončené.
U niektorých poskytovateľov môže nastať situácia, keď je príznak mptcp odrezaný pozdĺž dopravnej cesty, potom sa zobrazí nasledujúca chyba:

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

V tomto prípade môžete použiť iný prevádzkový režim bez použitia MPTCP, viac o tom tu.

Záver

Projekt OpenMPTCPRouter je veľmi zaujímavý a dôležitý, pretože je možno jediným otvoreným komplexným riešením problému sčítania kanálov. Všetko ostatné je buď pevne uzavreté a proprietárne, alebo jednoducho oddelené moduly, ktorým bežný človek nerozumie. V súčasnom štádiu rozpracovanosti je projekt ešte dosť hrubý, dokumentácia extrémne slabá, veľa vecí jednoducho nie je popísaných. Ale zároveň to stále funguje. Dúfam, že sa bude ďalej rozvíjať a dostaneme routery pre domácnosť, ktoré budú schopné správne kombinovať kanály hneď po vybalení.

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Sledujte nášho vývojára na Instagrame

Skutočné zhrnutie internetových kanálov - OpenMPTCPRouter

Zdroj: hab.com

Pridať komentár