Pravi zbir internet kanala — OpenMPTCPRouter

Pravi zbir internet kanala — OpenMPTCPRouter

Može li se više internet kanala spojiti u jedan? Oko ove teme postoji mnogo zabluda i mitova, čak i iskusni mrežni inženjeri često nisu svesni da je to moguće. U većini slučajeva, spoj na kanale pogrešno nazivaju balansiranjem na nivou NAT-a ili failover-om. No, pravo sumiranje omogućava da se jedno jedino TCP povezivanje simultano koristi kroz sve internet kanale, na primer za video prenos, tako da se prenos ne prekida prilikom gubitka bilo kojeg od internet kanala.

Postoje skupa komercijalna rešenja za video prenose, ali takvi uređaji koštaju mnogo hiljada dolara. U tekstu se opisuje podešavanje besplatnog, otvorenog paketa OpenMPTCPRouter, razbija se popularne mitove o sumiranju kanala.

Mitovi o sumiranju kanala

Postoji mnogo potrošačkih rutera koji podržavaju funkciju Multi-WAN. Ponekad je proizvođači nazivaju sumiranjem kanala, što nije sasvim tačno. Mnogi mrežni stručnjaci veruju da osim LACP i sumiranja na L2 nivou, ne postoji drugo spajanje kanala. Često sam čuo da je to uopšte nemoguće od ljudi koji rade u telekomunikacijama. Zato hajde da raspravimo o popularnim mitovima.

Balansiranje na nivou IP povezivanja

To je najpristupačniji i najpopularniji način korišćenja više internet kanala simultano. Radi jednostavnosti, zamislimo da imate tri internet provajdera, svaki od njih vam dodeljuje stvarnu IP adresu iz svoje mreže. Svi ovi provajderi su priključeni na ruter koji podržava funkciju Multi-WAN. To može biti OpenWRT sa paketom mwan3, mikrotik, ubiquiti ili bilo koji drugi potrošački ruter, s obzirom na to da takva opcija više nije retkost.

Za modeliranje situacije, pretpostavimo da su provajderi dodelili ovakve adrese:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN3 — 33.33.33.33

Dakle, povezujući se na udaljeni server example.com Vsak od ponudnikov bo oddaljeni strežnik videl tri neodvisne IP naslove stranke. Obvladovanje prometa omogoča razdelitev obremenitve med kanali in hkratno uporabo vseh treh. Za enostavnost si predstavljajmo, da obremenitev delimo enakomerno med vse kanale. Tako, ko stranka odpre spletno mesto z recimo tremi slikami, vsako sliko naloži preko ločenega ponudnika. Na strani spletnega mesta to izgleda kot povezave s treh različnih IP-jev.

Pravi zbir internet kanala — OpenMPTCPRouter
Pri obvladovanju prometa na ravni povezav vsak TCP povezava poteka skozi ločenega ponudnika.

Tak način obvladovanja pogosto prinaša težave za uporabnike. Na primer, mnoge spletne strani strogo povezujejo piškotke in žetone z IP naslovom stranke, in če se ta nepričakovano spremeni, se zahteva zavrne ali pa uporabnika odjavimo s spletnega mesta. To se pogosto dogaja v sistemih internetnega bančništva in drugih spletnih mestih s strogimi pravili uporabniških sej. Tukaj je en preprost prikaz: glasbeni datoteki na VK.com sta dostopni le ob veljavni sešni ključe, ki je povezan z IP, in stranke, ki uporabljajo to obvladovanje, pogosto ne morejo predvajati avdio posnetkov, ker je zahteva šla ne skozi tistega ponudnika, s katerim je povezana seja.

Pravi zbir internet kanala — OpenMPTCPRouter
Pri prenosu torrentov obvladovanje prometa na ravni povezav sešteje pasovno širino vseh kanalov.

Takšno obvladovanje omogoča seštevanje hitrosti internetnega kanala pri uporabi več povezav. Na primer, če ima vsak od treh ponudnikov hitrost 100 Megabitov, bomo pri prenosu torrentov prejeli 300 Megabitov. Zato, ker torrent odpre več povezav, ki se razdelijo med vse ponudnike in na koncu izkoristijo vse kanale.

Pomembno je razumeti, da bo ena sama TCP povezava vedno šla le skozi enega ponudnika. To pomeni, da če prenosimo en velik datotek po HTTP, bo ta povezava vzpostavljena preko enega od ponudnikov, in če se povezava s tem ponudnikom prekine, se bo tudi prenos prekinil.

Pravi zbir internet kanala — OpenMPTCPRouter
Ena povezava vedno uporablja le en internetni kanal.

To je prav tako veljavno za video prenose. Če prenašate video na nekem hipotetičnem Twitchu, neuravnoteženost na ravni IP povezav ne bo prinesla nobene posebne koristi, saj se bo video prenos pretakal znotraj enega IP povezovanja. V tem primeru, če pride do težav z povezljivostjo pri WAN ponudniku, na primer izgube paketov ali zmanjšanja hitrosti, ne boste mogli takoj preklopiti na drugega ponudnika. Prenos boste morali ustaviti in se ponovno povezati.

Učinkovito združevanje kanalov

Pravo združevanje kanalov omogoča, da se eno povezavo do hipotetičnega Twicha takoj usmeri skozi vse ponudnike, tako da, če katerikoli od ponudnikov odpove, povezava ne bo prekinjena. To je presenetljivo zapletena naloga, ki še vedno nima optimalne rešitve. Mnogi niti ne vedo, da je to mogoče!

Iz prejšnjih ilustracij se spomnimo, da hipotetični strežnik Twitch lahko sprejme naš video tok le od enega izvornega IP naslova, kar pomeni, da mora biti ta vedno stalna, ne glede na to, kateri ponudniki so odpovedali, in kateri delujejo. Za dosego tega bomo potrebovali združevalni strežnik, ki bo zaključil vse naše povezave in jih združil v eno.

Pravi zbir internet kanala — OpenMPTCPRouter
Združevalni strežnik aglomerira vse kanale v en tunel. Vse povezave potekajo z naslova združevalnega strežnika.

V takšni shemi se uporabljajo vsi ponudniki, in izklop katerega koli izmed njih ne bo povzročil prekinitev povezave s strežnikom Twitch. V bistvu gre za poseben VPN tunel, pod pokrovom katerega je več internetnih kanalov. Glavna naloga takšne sheme je pridobiti čim bolj kakovostno povezavo. Če pride do težav na enem izmed ponudnikov, izgube paketov ali povečane latence, to ne sme vplivati na kakovost povezave, saj se bo obremenitev avtomatsko porazdelila po drugih, bolj kakovostnih kanalih, ki so na voljo.

Komercialne rešitve

To težavo že dolgo skrbi tiste, ki prenašajo dogodke v živo in nimajo dostopa do kakovostnega interneta. Za take naloge obstaja več komercialnih rešitev, na primer podjetje Teradek izdeluje takšne monstruozne usmerjevalnike, v katere se vstavljajo škatle USB modemov:

Pravi zbir internet kanala — OpenMPTCPRouter
Usmerjevalnik za video prenose z možnostjo agregacije kanalov

Takšna naprava običajno vključuje možnost zajema video signala preko HDMI ali SDI. Skupaj z usmerjevalnikom se proda naročnina na storitev agregacije kanalov ter obdelave videoprenašanja, njegovo prekodiranje in ponovno prenašanje. Cena takšnih naprav se začne pri 2000 $ s kompleti modemov, poleg tega je treba plačati še naročnino na storitev.

Včasih to izgleda dovolj zastrašujoče:

Pravi zbir internet kanala — OpenMPTCPRouter

Nastavljamo OpenMPTCPRouter

Protokol MP-TCP (MultiPath TCP) je bil zasnovan za možnost povezovanja preko več kanalov hkrati. Na primer, ga podpira iOS

in lahko hkrati poveže z oddaljenim strežnikom preko WiFi in prek mobilne mreže. Pomembno je razumeti, da to nista dve ločeni TCP povezavi, temveč ena sama povezava, vzpostavljena hkrati preko dveh kanalov. Da to deluje, mora tudi oddaljeni strežnik podpirati MPTCP. OpenMPTCPRouter

Pravi zbir internet kanala — OpenMPTCPRouter
je odprt projekt programske usmerjevalne naprave, ki dejansko omogoča agregacijo kanalov. Avtorji trdijo, da je projekt v alfa različici, a ga je možno že uporabljati. Sestavljen je iz dveh delov — agregacijskega strežnika, ki je lociran na internetu, in usmerjevalnika, na katerega se povezuje več internetnih ponudnikov in same odjemalske naprave: računalniki, telefoni. Kot uporabniški usmerjevalnik lahko deluje Raspberry Pi, nekateri WiFi usmerjevalniki ali navaden računalnik. Na voljo so že pripravljene zbirke za različne platforme, kar je zelo priročno.

Načelo delovanja OpenMPTCPRouter

Nastavitev agregacijskega strežnika

Agregacijski strežnik je lociran na internetu in končuje povezave iz vseh kanalov odjemalskega usmerjevalnika v eno. IP naslov tega strežnika bo zunanji naslov pri dostopu do interneta preko OpenMPTCPRouter.

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

  • Zahteve za agregacijski strežnik:
  • MPTCP ne deluje na OpenVZ virtualizaciji

Mora biti omogočena namestitev lastne različice jedra Linux

Strežnik se postavi z izvajanjem ene ukazne vrstice. Skripta bo namestila jedro z podporo za mptcp in vse potrebne pakete. Na voljo so namestitvene skripte za Ubuntu in Debian.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh Rese na uspešno namestitev strežnika.

Pravi zbir internet kanala — OpenMPTCPRouter

Shranjujemo gesla, potrebna nam bodo za nastavitev odjemalskega usmerjevalnika, in se znova zaženemo. Pomembno je imeti v mislih, da bo po namestitvi SSH dostopen na vratih 65222. Po ponovnem zagonu je treba preveriti, ali smo se zagnali z novo jedrom.

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

Ob številu različice vidimo oznako mptcp, kar pomeni, da se je jedro pravilno namestilo.

Nastavitev odjemalskega usmerjevalnika

Na na spletni strani projekta na voljo so pripravljene različice za nekatere platforme, na primer Raspberry Pi, Banana Pi, usmerjevalnike Lynksys in virtualne stroje.
Ta del openmptcprouter se temelji na OpenWRT, kot vmesnik pa se uporablja LuCI, znan vsem, ki so se kdaj srečali z OpenWRT. Distribucija ima velikost približno 50 MB!

Pravi zbir internet kanala — OpenMPTCPRouter

Kot testno okolje bom uporabljal Raspberry Pi in več USB-modemov z različnimi operaterji: MTS in MegaFon. Kako zapisati sliko na SD-kartico, mislim, da ni treba razlagati.

Sprva je Ethernet-port na Raspberry Pi nastavljen kot lan s statično IP-naslovo. 192.168.100.1. Da se ne bi ubadal s kabli na mizi, sem Raspberry Pi povezal na WiFi dostopno točko in nastavil statični naslov na WiFi-adapterju računalnika. 192.168.100.2. Privzeti DHCP-strežnik ni vklopljen, zato je treba uporabiti statične naslove.

Zdaj lahko dostopamo do spletnega vmesnika. 192.168.100.1

Pri prvem vstopu bo sistem zahteval, da nastavite geslo root, z istim geslom bo dostopen SSH.

Pravi zbir internet kanala — OpenMPTCPRouter
V nastavitvah LAN lahko določite želeno podnet in omogočite DHCP-strežnik.

Uporabljam modeme, ki se prepoznajo kot USB Ethernet vmesniki z ločenim DHCP-strežnikom, zato je bilo potrebno namestiti dodatne pakete.. Postopek je identičen nastavitvi modemov v običajnem OpenWRT, zato je ne bom obravnaval tukaj.

Naslednje je treba nastaviti WAN-vmesnike. V sistemu sta prvotno ustvarjena dva virtualna vmesnika WAN1 in WAN2. Dodeliti je treba fizično napravo, v mojem primeru sta to imeni vmesnikov USB-modemov.

Da se ne bi zmedli v imenih vmesnikov, priporočam, da pogledate sporočila dmesg, ko se povežete prek SSH.

Ker moji modemi sami delujejo kot usmerjevalniki in imajo svoj DHCP-strežnik, sem moral spremeniti nastavitve njihovih notranjih omrežnih razponov in onemogočiti DHCP-strežnik, ker prvotno oba modema dodeljujeta naslove iz istega omrežja, kar povzroča konflikt.

OpenMPTCPRouter zahteva, da so naslovi WAN-vmesnikov statični, zato izmišljujemo podmrežja za modeme in jih nastavljamo v meniju system → openmptcprouter → interface settings. Tu je treba navesti tudi IP-naslov in ključ strežnika, pridobljen v fazi namestitve agregatnega strežnika.

Pravi zbir internet kanala — OpenMPTCPRouter

V primeru uspešne nastavitve bi se na strani stanja morala prikazati podobna slika. Vidno je, da je usmerjevalnik uspel vzpostaviti povezavo z agregatnim strežnikom in oba kanala delujeta normalno.

Pravi zbir internet kanala — OpenMPTCPRouter

Privzeto je uporabljen način shadowsocks + mptcp. To je proxy, ki zavije vse povezave. Prvotno je nastavljen, da obdeluje le TCP, vendar lahko vklopimo tudi UDP.

Pravi zbir internet kanala — OpenMPTCPRouter

Če na strani stanja ni napak, lahko nastavitve štejemo za zaključene.
Pri nekaterih ponudnikih lahko pride do situacije, ko se zastava mptcp na poti prometu odstrani, takrat se pojavi taka napaka:

Pravi zbir internet kanala — OpenMPTCPRouter

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

Zaključek

Projekt OpenMPTCPRouter je zelo zanimiv in pomemben, saj je to verjetno edina odprta kompleksna rešitev za problem združevanja kanalov. Vse ostalo je bodisi popolnoma zaprto in lastniško, bodisi le posamezni moduli, s katerimi se običajnemu človeku težko ukvarja. V trenutni fazi razvoja je projekt še vedno precej surov, zelo revna dokumentacija, mnoga vprašanja niso preprosto opisane. Kljub temu pa deluje. Upam, da se bo naprej razvijal in da bomo dobili domače usmerjevalnike, ki bodo znali normalno združevati kanale kar iz škatle.

Pravi zbir internet kanala — OpenMPTCPRouter

Spremljajte našega razvijalca na Instagramu

Pravi zbir internet kanala — OpenMPTCPRouter

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster