Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Ali je mogoče več internetnih kanalov združiti v enega? Okoli te teme obstaja veliko napačnih predstav in mitov; tudi izkušeni omrežni inženirji pogosto ne vedo, da je to mogoče. V večini primerov se združevanje povezav napačno imenuje uravnoteženje na ravni NAT ali samodejni preklop. Toda pravo seštevanje dopušča hkrati vzpostavite eno samo povezavo TCP preko vseh internetnih kanalov, na primer video oddajanje, tako da v primeru prekinitve katerega od internetnih kanalov oddajanje ne bo prekinjeno.

Obstajajo drage komercialne rešitve za video oddajanje, vendar takšne naprave stanejo veliko tisoč dolarjev. Članek opisuje, kako konfigurirati brezplačen, odprtokodni paket OpenMPTCPRouter in obravnava priljubljene mite o seštevanju kanalov.

Miti o seštevanju kanalov

Obstaja veliko domačih usmerjevalnikov, ki podpirajo funkcijo Multi-WAN. Včasih proizvajalci imenujejo ta kanal seštevek, kar ni povsem res. Mnogi omrežniki verjamejo, da poleg LACP in seštevanja na ravni L2, ne obstaja nobeno drugo združevanje kanalov. Od ljudi, ki delajo v telekomih, sem pogosto slišal, da je to na splošno nemogoče. Zato poskusimo razumeti priljubljene mite.

Uravnoteženje na ravni IP povezave

To je najbolj dostopen in priljubljen način za uporabo več internetnih kanalov hkrati. Za poenostavitev si predstavljajmo, da imate tri internetne ponudnike, od katerih vam vsak posreduje pravi naslov IP iz svojega omrežja. Vsi ti ponudniki so povezani z usmerjevalnikom, ki podpira funkcijo Multi-WAN. To je lahko OpenWRT s paketom mwan3, mikrotik, ubiquiti ali kateri koli drug gospodinjski usmerjevalnik, saj takšna možnost ni več redka.

Za simulacijo situacije si predstavljajmo, da so nam ponudniki dali naslednje naslove:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Se pravi povezovanje z oddaljenim strežnikom example.com Prek vsakega od ponudnikov bo oddaljeni strežnik videl tri neodvisne izvorne odjemalce IP. Uravnoteženje vam omogoča, da obremenitev razdelite po kanalih in uporabite vse tri hkrati. Za poenostavitev si predstavljajmo, da obremenitev enakomerno porazdelimo med vse kanale. Posledično, ko stranka odpre spletno mesto s tremi slikami, vsako sliko prenese prek ločenega ponudnika. Na strani spletnega mesta je videti kot povezave s treh različnih IP-jev.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Pri uravnoteženju na ravni povezave poteka vsaka povezava TCP prek ločenega ponudnika.

Ta način uravnoteženja uporabnikom pogosto povzroča težave. Številna spletna mesta na primer strogo vežejo piškotke in žetone na odjemalčev naslov IP, in če se ta nenadoma spremeni, je zahteva zavrnjena ali pa je odjemalec odjavljen s spletnega mesta. To se pogosto ponavlja v sistemih stranka-banka in na drugih mestih s strogimi pravili uporabniške seje. Tukaj je preprost ilustrativen primer: glasbene datoteke na VK.com so na voljo samo z veljavnim ključem seje, ki je vezan na IP, in odjemalci, ki uporabljajo takšno uravnoteženje, pogosto ne predvajajo zvoka, ker zahteva ni šla prek ponudnika, do katerega seja je izenačena.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Pri nalaganju torrentov uravnoteženje ravni povezave sešteje pasovno širino vseh kanalov

To uravnoteženje vam omogoča, da dobite vsoto hitrosti internetnega kanala pri uporabi več povezav. Na primer, če ima vsak od treh ponudnikov hitrost 100 megabitov, bomo pri prenosu torrentov dobili 300 megabitov. Ker torrent odpre veliko povezav, ki se porazdelijo med vse ponudnike in na koncu izkoristijo celoten kanal.

Pomembno je razumeti, da bo ena sama povezava TCP vedno potekala prek samo enega ponudnika. Se pravi, če prenesemo eno veliko datoteko preko HTTP-ja, potem bo ta povezava vzpostavljena preko enega od ponudnikov, in če je povezava s tem ponudnikom prekinjena, bo tudi prenos prekinjen.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Ena povezava bo vedno uporabljala samo en internetni kanal

To velja tudi za video prenose. Če oddajate pretočni video na nekakšen pogojni Twitch, potem uravnoteženje na ravni IP povezav ne bo prineslo nobene posebne koristi, saj bo video tok oddajan znotraj ene IP povezave. V tem primeru, če ima ponudnik WAN 3 težave s komunikacijo, kot je izguba paketa ali zmanjšana hitrost, potem ne boste mogli takoj preklopiti na drugega ponudnika. Oddajo bo treba ustaviti in ponovno vzpostaviti povezavo.

Pravo seštevanje kanalov

Pravo seštevanje kanalov omogoča izvajanje ene povezave s pogojnim Twitchom prek vseh ponudnikov hkrati na tak način, da v primeru okvare katerega od ponudnikov povezava ne bo prekinjena. To je presenetljivo težak problem, ki še vedno nima optimalne rešitve. Marsikdo sploh ne ve, da je to mogoče!

Iz prejšnjih ilustracij se spomnimo, da lahko pogojni strežnik Twitch od nas sprejema video tok samo z enega izvornega naslova IP, kar pomeni, da mora biti za nas vedno konstanten, ne glede na to, kateri ponudniki so odpadli in kateri delujejo. Da bi to dosegli, potrebujemo strežnik za seštevanje, ki bo prekinil vse naše povezave in jih združil v eno.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Strežnik za seštevanje združi vse kanale v en tunel. Vse povezave izvirajo iz naslova seštevalnega strežnika

V tej shemi so uporabljeni vsi ponudniki in onemogočanje katerega koli od njih ne bo povzročilo izgube komunikacije s strežnikom Twitch. V bistvu je to poseben tunel VPN, pod pokrovom katerega je več internetnih kanalov hkrati. Glavna naloga takšne sheme je pridobiti komunikacijski kanal najvišje kakovosti. Če se pri enem od ponudnikov začnejo pojavljati težave, izguba paketov, povečane zamude, potem to nikakor ne bi smelo vplivati ​​na kakovost komunikacije, saj se bo obremenitev samodejno porazdelila na druge, boljše kanale, ki so na voljo.

Komercialne rešitve

Ta težava že dolgo skrbi tiste, ki prenašajo dogodke v živo in nimajo dostopa do kakovostnega interneta. Za tovrstna opravila obstaja več komercialnih rešitev, na primer podjetje Teradek izdeluje tako pošastne usmerjevalnike, v katere se vstavljajo paketi USB modemov:

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Usmerjevalnik za video oddajanje s funkcijo seštevanja kanalov

Takšne naprave imajo običajno vgrajeno možnost zajemanja video signalov prek HDMI ali SDI. Skupaj z usmerjevalnikom se prodaja naročnina na storitev seštevanja kanalov ter obdelava video toka, njegovo prekodiranje in nadaljnje posredovanje. Cena takšnih naprav se začne od 2 tisoč dolarjev s kompletom modemov in ločeno naročnino na storitev.

Včasih je videti precej strašljivo:

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Nastavitev OpenMPTCPRuterja

Protokol MP-TCP (MultiPath TCP) je bil izumljen, da se lahko poveže prek več kanalov hkrati. Na primer njegovo podpira iOS in se lahko istočasno poveže z oddaljenim strežnikom prek WiFi in prek mobilnega omrežja. Pomembno je razumeti, da to nista dve ločeni povezavi TCP, temveč ena povezava, vzpostavljena prek dveh kanalov hkrati. Da bi to delovalo, mora tudi oddaljeni strežnik podpirati MPTCP.

OpenMPTCPRuter je projekt usmerjevalnika odprtokodne programske opreme, ki omogoča resnično povzemanje kanalov. Avtorji navajajo, da je projekt v alfa različici, vendar ga je že mogoče uporabljati. Sestavljen je iz dveh delov - seštevalnega strežnika, ki se nahaja na internetu in usmerjevalnika, na katerega je povezanih več internetnih ponudnikov in samih odjemalskih naprav: računalnikov, telefonov. Usmerjevalnik po meri je lahko Raspberry Pi, nekateri WiFi usmerjevalniki ali navaden računalnik. Obstajajo že pripravljeni sklopi za različne platforme, kar je zelo priročno.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
Kako deluje OpenMPTCPROuter

Postavitev strežnika za povzemanje

Seštevalni strežnik se nahaja na internetu in prekine povezave iz vseh kanalov odjemalskega usmerjevalnika v enega. Naslov IP tega strežnika bo zunanji naslov pri dostopu do interneta prek OpenMPTCPRouterja.

Za to nalogo bomo uporabili strežnik VPS na Debianu 10.

Zahteve za strežnik za seštevanje:

  • MPTCP ne deluje pri virtualizaciji OpenVZ
  • Moralo bi biti mogoče namestiti lastno jedro Linuxa

Strežnik se razmesti z izvedbo enega ukaza. Skript bo namestil jedro s podporo za mptcp in vse potrebne pakete. Namestitveni skripti so na voljo za Ubuntu in Debian.

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

Rezultat uspešne namestitve strežnika.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Shranimo gesla, potrebovali jih bomo za konfiguracijo odjemalskega usmerjevalnika in znova zagnali. Pomembno je upoštevati, da bo po namestitvi SSH na voljo na vratih 65222. Po ponovnem zagonu se moramo prepričati, da smo zagnali novo jedro

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

Poleg številke različice vidimo napis mptcp, kar pomeni, da je bilo jedro pravilno nameščeno.

Nastavitev odjemalskega usmerjevalnika

Na stran projekta že pripravljene različice so na voljo za nekatere platforme, kot so Raspberry Pi, Banana Pi, usmerjevalniki Lynksys in virtualni stroji.
Ta del openmptcprouterja temelji na OpenWRT in uporablja LuCI kot vmesnik, ki ga poznajo vsi, ki so se kdaj srečali z OpenWRT. Distribucija tehta približno 50 MB!

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Kot testno mizo bom uporabil Raspberry Pi in več USB modemov z različnimi operaterji: MTS in Megafon. Mislim, da vam ni treba povedati, kako zapisati sliko na kartico SD.

Na začetku so vrata Ethernet v Raspberry Pi konfigurirana kot lan s statičnim naslovom IP 192.168.100.1. Da bi se izognil ubadanju z žicami na mizi, sem Raspberry Pi povezal z dostopno točko WiFi in računalniški adapter WiFi nastavil na statični naslov 192.168.100.2. Strežnik DHCP privzeto ni omogočen, zato morate uporabiti statične naslove.

Zdaj se lahko prijavite v spletni vmesnik 192.168.100.1

Ko se prvič prijavite, vas bo sistem pozval, da nastavite root geslo; SSH bo na voljo z istim geslom.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter
V nastavitvah LAN lahko nastavite želeno podomrežje in omogočite strežnik DHCP.

Uporabljam modeme, ki so definirani kot vmesniki USB Ethernet z ločenim strežnikom DHCP, zato je to zahtevalo namestitev dodatni paketi. Postopek je enak nastavitvi modemov v navadnem OpenWRT, zato ga tukaj ne bom pokrival.

Nato morate konfigurirati vmesnike WAN. Na začetku je sistem ustvaril dva virtualna vmesnika WAN1 in WAN2. Treba jim je dodeliti fizično napravo, v mojem primeru so to imena modemskih vmesnikov USB.

Da bi se izognili zmedi z imeni vmesnikov, priporočam ogled sporočil dmesg med povezovanjem prek SSH.

Ker moji modemi sami delujejo kot usmerjevalniki in imajo sami strežnik DHCP, sem moral spremeniti nastavitve njihovih notranjih omrežnih obsegov in onemogočiti strežnik DHCP, ker na začetku oba modema izdajata naslove iz istega omrežja, kar povzroči konflikt.

OpenMPTCPRouter zahteva, da so naslovi vmesnika WAN statični, zato si izmislimo podomrežja za modeme in jih konfiguriramo v sistemu → openmptcprouter → meni z nastavitvami vmesnika. Tukaj morate določiti naslov IP in ključ strežnika, pridobljen med namestitvijo strežnika za seštevanje.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Če je nastavitev uspešna, se mora na strani s stanjem prikazati podobna slika. Vidi se, da je usmerjevalnik uspel doseči strežnik za seštevanje in oba kanala delujeta normalno.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Privzeti način je shadowsocks + mptcp. To je proxy, ki vse povezave ovije vase. Prvotno je konfiguriran za obdelavo samo TCP, vendar je mogoče omogočiti tudi UDP.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Če na strani s stanjem ni napak, se lahko šteje, da je nastavitev končana.
Pri nekaterih ponudnikih lahko pride do situacije, ko je zastavica mptcp odrezana vzdolž prometne poti, nato pa se pojavi naslednja napaka:

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

V tem primeru lahko uporabite drug način delovanja, brez uporabe MPTCP, več o tem tukaj.

Zaključek

Projekt OpenMPTCPRouter je zelo zanimiv in pomemben, saj je morda edina odprta celovita rešitev problema seštevanja kanalov. Vse ostalo je bodisi tesno zaprto in lastniško bodisi le ločeni moduli, ki jih navaden človek ne razume. V trenutni fazi razvoja je projekt še precej surov, dokumentacija izjemno slaba, marsikaj preprosto ni opisanega. A hkrati še vedno deluje. Upam, da se bo še naprej razvijal in dobili bomo gospodinjske usmerjevalnike, ki bodo znali pravilno združevati kanale iz škatle.

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Sledite našemu razvijalcu na Instagramu

Pravo seštevanje internetnih kanalov - OpenMPTCPRuter

Vir: www.habr.com

Dodaj komentar