Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Može li se spojiti nekoliko internetskih kanala u jedan? Oko ove teme postoji mnogo zabluda i mitova, čak i iskusni mrežni inženjeri često ne znaju da je to moguće. U većini slučajeva, zbrajanjem kanala pogrešno se naziva balansiranje na razini NAT-a ili failover. No pravo zbrajanje omogućava sprovođenje jedne jedine TCP veze istovremeno preko svih internetskih kanala, na primjer video prijenosa, tako da pri prekidu bilo kojeg od internetskih kanala prijenos ne bude prekinut.

Postoje skupa komercijalna rješenja za video prijenose, ali takvi uređaji koštaju mnogo tisuća dolara. U članku se opisuje postavljanje besplatnog, otvorenog paketa OpenMPTCPRouter i razmatraju popularni mitovi o zbrajanju kanala.

Mitovi o zbrajanju kanala

Postoji mnogo kućnih usmjerivača koji podržavaju funkciju Multi-WAN. Ponekad proizvođači nazivaju to zbrajanjem kanala, što nije sasvim točno. Mnogi mrežari vjeruju da osim LACP i zbrajanja na L2 razini, ne postoji nikakvo drugo spajanje kanala. Često sam čuo da je to uopće nemoguće od ljudi koji rade u telekomunikacijama. Stoga pokušajmo razjasniti popularne mitove.

Balansiranje na razini IP veza

To je najpristupačniji i najpopularniji način korištenja više internetskih kanala istovremeno. Radi jednostavnosti, zamislimo da imate tri internetska pružatelja, svaki vam dodjeljuje stvarnu IP adresu iz svoje mreže. Svi ovi pružatelji su povezani u usmjerivač koji podržava funkciju Multi-WAN. To može biti OpenWRT s paketom mwan3, mikrotik, ubiquiti ili bilo koji drugi kućni usmjerivač, s obzirom da danas takva opcija više nije rijetkost.

Za simulaciju situacije zamislimo da su nam pružatelji dodijelili takve adrese:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN3 — 33.33.33.33

Dakle, povezivanje na udaljeni poslužitelj example.com Kroz svakog od pružatelja usluga, udaljeni poslužitelj će vidjeti tri neovisne izvorne IP adrese klijenta. Balansiranje omogućava raspodjelu opterećenja preko kanala i korištenje svih triju istovremeno. Radi jednostavnosti, zamislimo da ravnomjerno dijelimo opterećenje među svim kanalima. Na kraju, kada klijent otvori web stranicu s, recimo, tri slike, svaka će se slika učitati preko posebnog pružatelja usluga. Na strani web stranice to izgleda kao povezanosti s tri različita IP adresa.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Prilikom balansiranja na razini povezanosti, svaka TCP povezanost prolazi kroz posebnog pružatelja usluga.

Ovaj način balansiranja često donosi probleme za korisnike. Na primjer, mnoge web stranice strogo povezuju kolačiće i tokene s IP adresom klijenta, i ako se iznenada promijeni, zahtjev se odbacuje ili klijent se odjavljuje sa stranice. Ovo se često događa u sustavima klijent-banaka i na drugim stranicama s strogim pravilima korisničkih sesija. Evo jednostavnog primjera: glazbeni datoteke na VK.com dostupne su samo s važećim ključem sesije, koji je povezan s IP adresom, a klijenti koji koriste takvo balansiranje često ne mogu reproducirati audio, jer je zahtjev otišao ne kroz onog pružatelja s kojim je sesija povezana.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Prilikom preuzimanja torrenta, balansiranje na razini povezanosti zbraja propusnost svih kanala.

Ovo balansiranje omogućava zbrajanje brzine internetskih kanala, pri korištenju više povezanosti. Na primjer, ako svaki od tri pružatelja ima brzinu od 100 megabita, prilikom preuzimanja torrenta ćemo dobiti 300 megabita. Jer torrent otvara mnoštvo povezivanja koja se raspoređuju među svim pružateljima i na kraju koriste cijeli kanal.

Važno je razumjeti da će jedno jedino TCP povezivanje uvijek proći samo kroz jednog pružatelja usluga. To jest, ako preuzimamo jedan veliki datoteku putem HTTP-a, ta će se povezanost obaviti kroz jednog od pružatelja, i ako veza s tim pružateljem prekinu, preuzimanje će također stati.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Jedna povezanost uvijek će koristiti samo jedan internetski kanal.

To je istinito i za video prijenose. Ako emitujete streamano video na nekom od platformi poput Twitc-a, balansiranje na nivou IP konekcija neće donijeti značajnu korist, jer će video stream biti prenositi unutar jedne IP konekcije. U ovom slučaju, ako provajder WAN-a 3 bude imao problema sa vezom, kao što su gubitak paketa ili smanjenje brzine, nećete moći odmah prebaciti na drugog provajdera. Prijenos će morati biti zaustavljen i ponovo vezan.

Pravo zbrajanje kanala

Pravo zbrajanje kanala omogućava prosljeđivanje jedne konekcije na platformu poput Twitc-a kroz sve provajdere na način da, ako se bilo koji od provajdera pokvari, konekcija ne prekine. Ovo je iznenađujuće složen zadatak koji još uvijek nema optimalno rješenje. Mnogi čak ne znaju da je to moguće!

Prema prethodnim ilustracijama, zapamtili smo da server poput Twitc-a može primiti naš video stream samo s jedne izvorne IP adrese, što znači da ona mora biti stalna, bez obzira na to koji su provajderi otpali, a koji rade. Da bismo to postigli, potrebna nam je agregacijska server koja će terminirati sve naše konekcije i spojiti ih u jednu.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Agregacijski server agregira sve kanale u jedan tunel. Sve konekcije dolaze s adrese agregacijskog servera.

U ovakvoj shemi se koriste svi provajderi, a isključenje bilo kojeg od njih neće izazvati prekid veze s serverom Twitc. U suštini, ovo je posebni VPN tunel, koji ispod kaputa ima više internet kanala. Glavni cilj ovakve sheme je dobiti maksimalno kvalitetnu vezu. Ako se na jednom od provajdera pojave problemi, gubitak paketa, povećanje kašnjenja, to ne bi trebalo uticati na kvalitet veze, jer će opterećenje automatski biti raspoređeno na druge, kvalitetnije kanale koji su dostupni.

Komercijalna rješenja

Ovaj problem dugo muči one koji organizuju direktne prijenose događaja i nemaju pristup kvalitetnom internetu. Za takve zadatke postoje neka komercijalna rješenja, poput kompanije Teradek koja proizvodi takve monstruozne rutere u koje se mogu umetnuti paketi USB modema:

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Usmjerivač za video prijenose s funkcijom zbrajanja kanala

U takvim uređajima obično je ugrađena mogućnost snimanja video signala putem HDMI ili SDI. Uz usmjerivač dolazi pretplata na uslugu zbrajanja kanala, kao i procesiranje video streama, njegov reenkodiranje i daljnje prijenose. Cijena takvih uređaja počinje od 2.000 USD s paketom modema, uz dodatnu pretplatu na uslugu.

Ponekad to izgleda prilično zastrašujuće:

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Podesite OpenMPTCPRouter

Protokol MP-TCP (MultiPath TCP) osmišljen je za mogućnost povezivanja putem više kanala istovremeno. Na primjer, on podržava iOS i može istovremeno povezati s udaljenim poslužiteljem putem WiFi i putem mobilne mreže. Važno je razumjeti da to nisu dva odvojena TCP povezivanja, već jedno povezivanje uspostavljeno kroz dva kanala. Da bi to funkcioniralo, udaljeni poslužitelj također mora podržavati MPTCP.

OpenMPTCPRouter je otvoreni projekt softverskog usmjerivača koji omogućuje stvarno zbrajanje kanala. Autori tvrde da je projekt u statusu alfa verzije, no već se može koristiti. Sastoji se od dva dijela – uslužnog poslužitelja za zbrajanje koji se smješta na internetu i usmjerivača kojeg povezuje više internetskih pružatelja i samih klijentskih uređaja: računala, telefona. Kao korisnički usmjerivač može koristiti Raspberry Pi, neki WiFi usmjerivači ili obični računalni sustav. Postoje gotove verzije za različite platforme, što je vrlo zgodno.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
Način rada OpenMPTCPRouter

Postavljanje uslužnog poslužitelja za zbrajanje

Poslužitelj za zbrajanje smješten je na internetu i terminira veze svih kanala klijentskog usmjerivača u jedno. IP adresa ovog poslužitelja bit će vanjska adresa prilikom izlaska na internet putem OpenMPTCPRouter.

Za ovu svrhu koristit ćemo VPS poslužitelj na Debian 10.

Zahtjevi za poslužitelj za zbrajanje:

  • MPTCP ne radi na OpenVZ virtualizaciji
  • Mora postojati mogućnost instalacije vlastitog Linux jezgra

Poslužitelj se postavlja izvršavanjem jedne komande. Skripta će instalirati jezgru s podrškom za mptcp i sve potrebne pakete. Dostupne su instalacijske skripte za Ubuntu i Debian.

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

Rezultat uspješne instalacije poslužitelja.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Spremamo lozinke, bit će nam potrebne za konfiguraciju klijentskog usmjerivača, i ponovno pokrećemo sustav. Važno je imati na umu da će nakon instalacije SSH biti dostupan na portu 65222. Nakon ponovnog pokretanja trebate osigurati da smo se podigli s novim jezgrom.

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

Vidimo uz broj verzije natpis mptcp, što znači da je jezgra ispravno instalirana.

Konfiguracija klijentskog usmjerivača

Na web stranici projekta dostupni su gotovi paketi za neke platforme, poput Raspberry Pi, Banana Pi, Linksys usmjerivača i virtualnih strojeva.
Ovaj dio openmptcproutera temelji se na OpenWRT-u, a kao sučelje koristi se LuCI, poznato svima koji su ikada koristili OpenWRT. Distribucija teži oko 50 MB!

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Kao testnu platformu koristit ću Raspberry Pi i nekoliko USB modema različitih operatera: MTS i Megafon. Kako snimiti sliku na SD karticu, mislim da ne treba objašnjavati.

U početku je Ethernet port na Raspberry Pi podešen kao lan s statičkom IP adresom. 192.168.100.1. Da ne bih imao posla s kablovima na stolu, povezao sam Raspberry Pi s WiFi pristupnom točkom i postavio statičku adresu na WiFi adapteru računala. 192.168.100.2. DHCP server prema zadanim postavkama nije uključen, pa je potrebno koristiti statičke adrese.

Sada se može pristupiti web sučelju. 192.168.100.1

Prilikom prvog pristupa sustav će tražiti da postavite root lozinku, s kojom će SSH također biti dostupan.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter
U LAN postavkama možete odrediti potrebnu podmrežu i uključiti DHCP server.

Koristim modeme koji se prepoznaju kao USB Ethernet sučelja s odvojenim DHCP serverom, pa je to zahtijevalo instalaciju dodatnih paketa. Postupak je identičan postavljanju modema u običnom OpenWRT-u, stoga ga ovdje neću razmatrati.

Zatim je potrebno konfigurirati WAN sučelja. U početku su u sustavu kreirana dva virtualna sučelja WAN1 i WAN2. Potrebno je dodijeliti fizički uređaj, u mom slučaju, imena sučelja USB modema.

Da se ne bih zbunio s imenima sučelja, preporučujem gledanje dmesg poruka, povezivanjem putem SSH-a.

Budući da moji modemi sami djeluju kao usmjerivači i imaju vlastiti DHCP server, morao sam promijeniti postavke njihovih unutarnjih raspona mreže i isključiti DHCP server, jer obojica modema izvorno dodjeljuju adrese iz jedne mreže, što uzrokuje sukob.

OpenMPTCPRouter zahtijeva da adrese WAN sučelja budu statične, stoga smišljamo podmreže za modeme i konfiguriramo u izborniku system → openmptcprouter → postavke sučelja. Ovdje također treba navesti IP adresu i ključ poslužitelja dobiven tokom postavljanja sažetog poslužitelja.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

U slučaju uspješne konfiguracije, na stranici statusa trebala bi se pojaviti slična slika. Vidljivo je da je usmjerivač uspio pristupiti sažetom poslužitelju i oba kanala rade normalno.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Zadano se koristi način shadowsocks + mptcp. To je takav proxy koji obuhvaća sve veze. U početku je postavljen da obrađuje samo TCP, ali se može uključiti i UDP.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Ako na stranici statusa nema grešaka, ovu konfiguraciju možemo smatrati završeno.
S nekim pružateljima može doći do situacije kada se signal mptcp na putu za promet obrezuje, tada će se pojaviti ovakva greška:

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

U tom slučaju može se koristiti drugi način rada, bez korištenja MPTCP, više informacija o tome ovdje.

Zaključak

Projekt OpenMPTCPRouter je vrlo zanimljiv i važan, jer je to, možda, jedino otvoreno cjelovito rješenje problema sažimanja kanala. Sve ostalo je ili potpuno zatvoreno i proprietarno, ili su to samo zasebni moduli s kojima se običnoj osobi teško može nositi. U trenutnoj fazi razvoja projekt je još uvijek dovoljno sirov, dokumentacija je krajnje oskudna i mnoge stvari jednostavno nisu opisane. No, još uvijek radi. Nadam se da će se nastaviti razvijati i da ćemo dobiti kućne usmjerivače koji će moći normalno kombinirati kanale iz kutije.

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Pratite našeg programera na Instagramu

Pravo sumiranje internetskih kanala — OpenMPTCPRouter

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster