Pravi zbroj internetskih kanala - OpenMPTCPRouter

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Je li moguće spojiti više internetskih kanala u jedan? Postoji mnogo zabluda i mitova oko ove teme, čak ni iskusni mrežni inženjeri često ne znaju da je to moguće. U većini slučajeva, agregacija veza se pogrešno naziva NAT balansiranje ili failover. Ali pravo zbrajanje dopušta pokrenuti jednu TCP vezu istovremeno preko svih internetskih kanala, primjerice, video emitiranje tako da ako se neki od internetskih kanala prekine, emitiranje neće biti prekinuto.

Postoje skupa komercijalna rješenja za video emitiranje, ali takvi uređaji koštaju mnogo kilo dolara. Članak opisuje konfiguraciju besplatnog, otvorenog paketa OpenMPTCPRouter i bavi se popularnim mitovima o zbrajanju kanala.

Mitovi o zbrajanju kanala

Postoje mnogi kućni usmjerivači koji podržavaju funkciju Multi-WAN. Ponekad proizvođači ovaj kanal nazivaju zbrajanjem, što nije sasvim točno. Mnogi umrežači vjeruju da osim LACP i zbrajanje na L2 sloju, ne postoji druga agregacija kanala. Često sam od ljudi koji rade u telekomu čuo da je to općenito nemoguće. Stoga, pokušajmo razumjeti popularne mitove.

Balansiranje na razini IP veza

Ovo je najpovoljniji i najpopularniji način korištenja nekoliko internetskih kanala u isto vrijeme. Radi jednostavnosti, zamislimo da imate tri ISP-a, od kojih vam svaki daje stvarnu IP adresu sa svoje mreže. Svi ovi pružatelji usluga povezani su s usmjerivačem s podrškom za funkciju Multi-WAN. To može biti OpenWRT s paketom mwan3, mikrotik, ubiquiti ili bilo koji drugi kućni ruter, jer sada ova opcija više nije neuobičajena.

Da simuliramo situaciju, zamislimo da su nam pružatelji usluga dali sljedeće adrese:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Odnosno, povezivanje s udaljenim poslužiteljem example.com preko svakog od pružatelja, udaljeni poslužitelj će vidjeti tri nezavisna izvorna IP-a klijenta. Balansiranje vam omogućuje da podijelite opterećenje na kanale i koristite ih sva tri u isto vrijeme. Radi jednostavnosti, zamislimo da opterećenje ravnomjerno podijelimo na sve kanale. Kao rezultat toga, kada klijent uvjetno otvori stranicu s tri slike, svaku sliku preuzima preko zasebnog pružatelja usluga. Na strani stranice, izgleda kao veze s tri različite IP adrese.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Prilikom balansiranja na razini veze, svaka TCP veza prolazi kroz zasebnog pružatelja usluga.

Ovaj način balansiranja često uzrokuje probleme korisnicima. Na primjer, mnoga web-mjesta povezuju kolačiće i tokene s klijentovom IP adresom, a ako se ona iznenada promijeni, zahtjev se odbacuje ili se klijent odjavljuje s web-mjesta. Ovo se često ponavlja u sustavima klijent-banka i drugim stranicama sa strogim pravilima korisničkih sesija. Evo jednostavnog ilustrativnog primjera: glazbene datoteke na VK.com dostupne su samo s važećim ključem sesije koji je vezan za IP, a klijenti koji koriste takvo balansiranje često ne reproduciraju zvuk jer zahtjev nije prošao preko pružatelja kojem je sesija je vezana.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Prilikom preuzimanja torrenta, balansiranje na razini veze zbraja propusnost svih kanala

Takvo balansiranje omogućuje vam da dobijete zbroj brzine internetskog kanala kada koristite više veza. Na primjer, ako svaki od tri pružatelja ima brzinu od 100 megabita, tada ćemo pri preuzimanju torrenta dobiti 300 megabita. Jer torrent otvara puno konekcija koje se raspoređuju na sve pružatelje i na kraju iskoriste cijeli kanal.

Važno je razumjeti da će jedna jedina TCP veza uvijek ići preko samo jednog pružatelja usluga. Odnosno, ako preuzmemo jednu veliku datoteku putem HTTP-a, tada će se ova veza ostvariti preko jednog od pružatelja usluga, a ako se veza s tim pružateljem prekine, tada će prekinuti i preuzimanje.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Jedna veza uvijek će koristiti samo jedan internetski kanal

To vrijedi i za video emitiranje. Ako emitirate streaming video na nekom uvjetnom Twitchu, tada balansiranje na razini IP veza neće dati nikakvu posebnu korist, jer će se video stream emitirati unutar jedne IP veze. U tom slučaju, ako WAN 3 pružatelj usluga počne imati problema s komunikacijom, kao što je gubitak paketa ili usporavanje, tada se nećete moći odmah prebaciti na drugog pružatelja usluga. Emitiranje će se morati zaustaviti i ponovno spojiti.

Pravo zbrajanje kanala

Pravo zbrajanje kanala omogućuje pokretanje jedne veze na uvjetni Twitch kroz sve pružatelje odjednom na takav način da se veza neće prekinuti ako bilo koji od pružatelja prekine. To je iznenađujuće težak problem, koji još uvijek nema optimalno rješenje. Mnogi niti ne znaju da je to moguće!

Iz prethodnih ilustracija sjećamo se da uvjetni Twitch server može primiti video stream od nas sa samo jedne izvorne IP adrese, što znači da uvijek mora biti konstantan kod nas, bez obzira koji su provajderi pali i koji rade. Da bismo to postigli, potreban nam je poslužitelj za zbrajanje koji će prekinuti sve naše veze i spojiti ih u jednu.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Poslužitelj zbrajanja okuplja sve kanale u jedan tunel. Sve veze potječu s adrese poslužitelja zbrajanja

Ova shema koristi sve pružatelje, a onemogućavanje bilo kojeg od njih neće uzrokovati gubitak komunikacije s Twitch poslužiteljem. Zapravo, ovo je poseban VPN tunel, ispod kojeg se nalazi nekoliko internetskih kanala odjednom. Glavni zadatak takve sheme je dobiti najkvalitetniji komunikacijski kanal. Ako problemi počnu kod nekog od pružatelja, gubitak paketa, povećanje kašnjenja, onda to ni na koji način ne bi trebalo utjecati na kvalitetu komunikacije, jer će se opterećenje automatski rasporediti na druge, bolje kanale koji su dostupni.

Komercijalna rješenja

Ovaj problem već dugo brine one koji događaje prenose uživo, a nemaju pristup kvalitetnom internetu. Za takve zadatke postoji nekoliko komercijalnih rješenja, primjerice Teradek radi ovako monstruozne routere u koje se ubacuju paketi USB modema:

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Broadcast video router s funkcijom zbrajanja kanala

Takvi uređaji obično imaju mogućnost snimanja videa preko HDMI ili SDI. Zajedno s ruterom prodaje se pretplata na uslugu zbrajanja kanala, kao i obradu video streama, njegovo transkodiranje i daljnji reemitiranje. Cijena takvih uređaja počinje od 2 tisuće dolara s kompletom modema, plus zasebna pretplata na uslugu.

Ponekad izgleda prilično zastrašujuće:

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Postavljanje OpenMPTCPRoutera

protokol MP-TCP (MultiPath TCP) je izmišljen za mogućnost povezivanja na nekoliko kanala odjednom. Na primjer, njegov podržava iOS i može se istovremeno povezati s udaljenim poslužiteljem putem WiFi-a i putem mobilne mreže. Važno je razumjeti da to nisu dvije odvojene TCP veze, već jedna veza uspostavljena preko dva kanala odjednom. Da bi ovo radilo, udaljeni poslužitelj također mora podržavati MPTCP.

OpenMPTCPRuter je projekt usmjerivača softvera otvorenog koda koji vam omogućuje stvarno zbrajanje kanala. Autori navode da je projekt u statusu alpha verzije, ali se već može koristiti. Sastoji se od dva dijela - servera za zbrajanje, koji se nalazi na Internetu i usmjerivača, na koji je povezano nekoliko internetskih pružatelja usluga i samih klijentskih uređaja: računala, telefoni. Prilagođeni usmjerivač može biti Raspberry Pi, neki WiFi usmjerivač ili obično računalo. Postoje gotovi sklopovi za razne platforme, što je vrlo zgodno.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
Kako OpenMPTCPRouter radi

Postavljanje poslužitelja za sažimanje

Summing server nalazi se na Internetu i prekida veze sa svih kanala klijentskog routera u jedan. IP adresa ovog poslužitelja bit će vanjska adresa pri pristupu internetu putem OpenMPTCPRoutera.

Za ovaj zadatak koristit ćemo VPS poslužitelj na Debianu 10.

Zahtjevi poslužitelja zbrajanja:

  • MPTCP ne radi na OpenVZ virtualizaciji
  • Trebalo bi biti moguće instalirati vlastiti Linux kernel

Poslužitelj se postavlja izvršavanjem jedne naredbe. Skripta će instalirati kernel omogućen za mptcp i sve potrebne pakete. Instalacijske skripte dostupne su za Ubuntu i Debian.

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

Rezultat uspješne instalacije poslužitelja.

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Spremamo lozinke, trebat će nam za konfiguriranje klijentskog usmjerivača i ponovno podizanje sustava. Važno je imati na umu da će nakon instalacije SSH biti dostupan na priključku 65222. Nakon ponovnog pokretanja moramo se pobrinuti da se pokrenemo s novom jezgrom

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

Vidimo natpis mptcp pored broja verzije, što znači da je kernel ispravno instaliran.

Postavljanje klijentskog usmjerivača

Na web mjesto projekta Dostupne su gotove verzije za neke platforme, kao što su Raspberry Pi, Banana Pi, Lynksys usmjerivači i virtualni strojevi.
Ovaj dio openmptcproutera temelji se na OpenWRT-u, koristeći LuCI kao sučelje, poznato svima koji su se ikada susreli s OpenWRT-om. Distribucijski komplet teži oko 50Mb!

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Kao testnu klupu koristit ću Raspberry Pi i nekoliko USB modema s različitim operaterima: MTS i Megafon. Kako napisati sliku na SD karticu, pretpostavljam, nema potrebe govoriti.

U početku je Ethernet port u Raspberry Pi konfiguriran kao lan sa statičkom IP adresom. 192.168.100.1. Kako ne bih petljao sa žicama na stolu, spojio sam Raspberry Pi na WiFi pristupnu točku i postavio statičku adresu na WiFi adapter računala 192.168.100.2. DHCP poslužitelj nije omogućen prema zadanim postavkama, pa se moraju koristiti statičke adrese.

Sada možete ići na web sučelje 192.168.100.1

Kada se prvi put prijavite, sustav će od vas tražiti da postavite root lozinku, SSH će biti dostupan s istom lozinkom.

Pravi zbroj internetskih kanala - OpenMPTCPRouter
U postavkama LAN-a možete postaviti željenu podmrežu i omogućiti DHCP poslužitelj.

Koristim modeme koji su definirani kao USB ethernet sučelja s zasebnim DHCP poslužiteljem, pa je ovo zahtijevalo instalaciju dodatni paketi. Procedura je identična konfiguraciji modema u običnom OpenWRT-u, tako da je neću ovdje pokrivati.

Zatim trebate konfigurirati WAN sučelja. U početku su u sustavu stvorena dva virtualna sučelja WAN1 i WAN2. Trebaju dodijeliti fizički uređaj, u mom slučaju to su nazivi USB modemskih sučelja.

Kako se ne biste zabunili u nazivima sučelja, savjetujem vam da gledate dmesg poruke dok ste povezani putem SSH-a.

Budući da moji modemi sami djeluju kao usmjerivači i sami imaju DHCP poslužitelj, morao sam promijeniti postavke njihovih internih mrežnih raspona i onemogućiti DHCP poslužitelj, jer u početku oba modema izdaju adrese iz iste mreže, a to uzrokuje sukob.

OpenMPTCPRouter zahtijeva da adrese WAN sučelja budu statične, pa smišljamo podmreže za modeme i konfiguriramo ih u sustavu → openmptcprouter → izbornik postavki sučelja. Ovdje također trebate navesti IP adresu i ključ poslužitelja dobiven tijekom instalacije poslužitelja zbrajanja.

Pravi zbroj internetskih kanala - OpenMPTCPRouter

U slučaju uspješnog postavljanja, slična bi se slika trebala pojaviti na stranici statusa. Vidi se da je usmjerivač uspio doći do poslužitelja za zbrajanje i oba kanala rade ispravno.

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Zadani način je shadowsocks + mptcp. Ovo je takav proxy koji u sebe omotava sve veze. U početku je konfiguriran za rukovanje samo TCP-om, ali možete omogućiti i UDP.

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Ako na stranici statusa nema pogrešaka, postavljanje se može smatrati dovršenim.
Kod nekih pružatelja usluga može doći do situacije kada je mptcp zastavica skraćena duž prometne staze, tada će doći do takve pogreške:

Pravi zbroj internetskih kanala - OpenMPTCPRouter

U tom slučaju možete koristiti drugi način rada, bez korištenja MPTCP-a, više o tome здесь.

Zaključak

Projekt OpenMPTCPRouter vrlo je zanimljiv i važan, jer je možda jedino otvoreno kompleksno rješenje problema zbrajanja kanala. Sve ostalo je ili čvrsto zatvoreno i zaštićeno, ili samo zasebni moduli s kojima se obična osoba ne može nositi. U sadašnjoj fazi razvoja projekt je još dosta sirov, dokumentacija izuzetno loša, mnoge stvari jednostavno nisu opisane. Ali u isto vrijeme, još uvijek radi. Nadam se da će se nastaviti razvijati i da ćemo dobiti kućne rutere koji će moći normalno kombinirati kanale iz kutije.

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Pratite našeg programera na Instagramu

Pravi zbroj internetskih kanala - OpenMPTCPRouter

Izvor: www.habr.com

Dodajte komentar