Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Ar galima sujungti kelis interneto kanalus į vieną? Šia tema sklando daugybė klaidingų nuomonių ir mitų; net patyrę tinklo inžinieriai dažnai nežino, kad tai įmanoma. Daugeliu atvejų nuorodų agregavimas klaidingai vadinamas balansavimu NAT lygiu arba perjungimu. Tačiau tikras sumavimas leidžia vienu metu paleisti vieną TCP ryšį visais interneto kanalais, pavyzdžiui, vaizdo transliacija, kad, nutrūkus kuriam nors iš interneto kanalų, transliacija nenutrūktų.

Yra brangių komercinių vaizdo transliacijų sprendimų, tačiau tokie įrenginiai kainuoja daug kilobuckų. Straipsnyje aprašoma, kaip sukonfigūruoti nemokamą atvirojo kodo OpenMPTCPRuter paketą, ir aptariami populiarūs mitai apie kanalų sumavimą.

Mitai apie kanalų sumavimą

Yra daug namų maršrutizatorių, kurie palaiko „Multi-WAN“ funkciją. Kartais gamintojai šį kanalą vadina sumavimu, o tai nėra visiškai tiesa. Daugelis tinklų kūrėjų mano, kad be LAKP ir sumavimas L2 lygiu, jokio kito kanalo agregavimo nėra. Dažnai girdėjau, kad tai neįmanoma iš žmonių, kurie dirba telekomunikacijų srityje. Todėl pabandykime suprasti populiarius mitus.

Balansavimas IP ryšio lygiu

Tai pats prieinamiausias ir populiariausias būdas vienu metu naudotis keliais interneto kanalais. Paprastumo dėlei įsivaizduokime, kad turite tris interneto tiekėjus, kurių kiekvienas suteikia tikrą IP adresą iš savo tinklo. Visi šie teikėjai yra prijungti prie maršrutizatoriaus, kuris palaiko „Multi-WAN“ funkciją. Tai gali būti OpenWRT su mwan3 paketu, mikrotik, ubiquiti ar bet koks kitas buitinis maršrutizatorius, nes tokia parinktis nebėra neįprasta.

Norėdami imituoti situaciją, įsivaizduokime, kad tiekėjai mums nurodė šiuos adresus:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Tai yra, prisijungimas prie nuotolinio serverio example.com Per kiekvieną tiekėją nuotolinis serveris matys tris nepriklausomus šaltinio IP klientus. Balansavimas leidžia paskirstyti apkrovą kanalams ir naudoti visus tris vienu metu. Paprastumo dėlei įsivaizduokime, kad apkrovą visiems kanalams paskirstome vienodai. Todėl, kai klientas atidaro svetainę su trimis vaizdais, jis atsisiunčia kiekvieną vaizdą per atskirą teikėją. Svetainės pusėje atrodo, kad jungtys iš trijų skirtingų IP.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Balansuojant ryšio lygiu, kiekvienas TCP ryšys eina per atskirą teikėją.

Šis balansavimo režimas dažnai sukelia problemų vartotojams. Pavyzdžiui, daugelis svetainių griežtai susieja slapukus ir žetonus su kliento IP adresu, o jei jis staiga pasikeičia, užklausa atmetama arba klientas atjungiamas nuo svetainės. Tai dažnai atkuriama klientų ir banko sistemose ir kitose svetainėse, kuriose taikomos griežtos vartotojo seanso taisyklės. Štai paprastas iliustruojantis pavyzdys: muzikos failai VK.com pasiekiami tik naudojant galiojantį seanso raktą, susietą su IP, o klientai, naudojantys tokį balansavimą, dažnai neatkuria garso, nes užklausa nebuvo perduota teikėjui, kuriam sesija yra lygi.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Atsisiunčiant torrentus, ryšio lygio balansavimas apibendrina visų kanalų pralaidumą

Šis balansavimas leidžia susumuoti interneto kanalo greitį naudojant kelis ryšius. Pavyzdžiui, jei kiekvienas iš trijų tiekėjų turi 100 megabitų greitį, tada atsisiųsdami torrentus gausime 300 megabitų. Kadangi torrent atveria daugybę jungčių, kurios paskirstomos visiems tiekėjams ir galiausiai panaudoja visą kanalą.

Svarbu suprasti, kad vienas TCP ryšys visada vyks tik per vieną teikėją. Tai yra, jei atsisiunčiame vieną didelį failą per HTTP, tada šis ryšys bus užmegztas per vieną iš tiekėjų, o jei ryšys su šiuo teikėju nutrūks, atsisiuntimas taip pat nutrūks.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Vienas ryšys visada naudos tik vieną interneto kanalą

Tai pasakytina ir apie vaizdo transliacijas. Jei transliuojate vaizdo transliaciją į tam tikrą sąlyginį „Twitch“, balansavimas IP jungčių lygyje neduos jokios ypatingos naudos, nes vaizdo srautas bus transliuojamas per vieną IP ryšį. Tokiu atveju, jei WAN 3 teikėjas pradeda turėti ryšio problemų, pvz., Paketų praradimas arba sumažėjęs greitis, negalėsite iš karto pereiti prie kito teikėjo. Transliacija turės būti sustabdyta ir vėl prijungta.

Tikras kanalų apibendrinimas

Realus kanalų sumavimas leidžia paleisti vieną ryšį su sąlyginiu Twitch per visus tiekėjus vienu metu taip, kad sugedus kuriam nors iš tiekėjų ryšys nenutrūktų. Tai stebėtinai sudėtinga problema, kuri vis dar neturi optimalaus sprendimo. Daugelis žmonių net nežino, kad tai įmanoma!

Iš ankstesnių iliustracijų prisimename, kad sąlyginis „Twitch“ serveris gali gauti vaizdo srautą iš mūsų tik iš vieno šaltinio IP adreso, o tai reiškia, kad jis mums visada turi būti pastovus, nepaisant to, kurie tiekėjai nukrito ir kurie veikia. Norėdami tai pasiekti, mums reikia sumavimo serverio, kuris nutrauks visus mūsų ryšius ir sujungs juos į vieną.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Sumavimo serveris sujungia visus kanalus į vieną tunelį. Visi ryšiai atsiranda iš sumavimo serverio adreso

Šioje schemoje naudojami visi tiekėjai, o bet kurio iš jų išjungimas nepraras ryšio su „Twitch“ serveriu. Iš esmės tai yra specialus VPN tunelis, po kurio gaubtu vienu metu yra keli interneto kanalai. Pagrindinė tokios schemos užduotis yra gauti aukščiausios kokybės ryšio kanalą. Jei vienam iš tiekėjų pradeda kilti problemų, dingsta paketai, didėja vėlavimai, tai neturėtų turėti įtakos ryšio kokybei, nes apkrova bus automatiškai paskirstyta kitais, geresniais kanalais.

Komerciniai sprendimai

Ši problema jau seniai vargina tuos, kurie tiesiogiai transliuoja įvykius ir neturi prieigos prie kokybiško interneto. Tokioms užduotims atlikti yra keli komerciniai sprendimai, pavyzdžiui, bendrovė „Teradek“ gamina tokius siaubingus maršrutizatorius, į kuriuos įdedami USB modemų paketai:

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Vaizdo transliacijų maršrutizatorius su kanalų sumavimo funkcija

Tokiuose įrenginiuose dažniausiai yra integruota galimybė užfiksuoti vaizdo signalus per HDMI arba SDI. Kartu su maršrutizatoriumi parduodama kanalų sumavimo paslaugos prenumerata, taip pat apdorojamas vaizdo srautas, perkoduojamas ir perduodamas toliau. Tokių įrenginių kaina prasideda nuo 2 tūkst. USD su modemų rinkiniu ir atskira paslaugos prenumerata.

Kartais tai atrodo gana baisu:

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

„OpenMPTCPRuter“ nustatymas

Protokolas MP-TCP (MultiPath TCP) buvo išrastas, kad būtų galima vienu metu prisijungti keliais kanalais. Pavyzdžiui, jo palaiko iOS ir vienu metu gali prisijungti prie nuotolinio serverio per WiFi ir per korinį tinklą. Svarbu suprasti, kad tai ne du atskiri TCP ryšiai, o vienas ryšys, užmegztas dviem kanalais vienu metu. Kad tai veiktų, nuotolinis serveris taip pat turi palaikyti MPTCP.

Atidarykite MPTCPRuter yra atvirojo kodo programinės įrangos maršrutizatoriaus projektas, leidžiantis atlikti tikrą kanalų apibendrinimą. Autoriai teigia, kad projektas yra alfa versijos būsenoje, tačiau juo jau galima naudotis. Jis susideda iš dviejų dalių – sumavimo serverio, kuris yra internete ir maršrutizatoriaus, prie kurio prijungti keli interneto tiekėjai bei patys kliento įrenginiai: kompiuteriai, telefonai. Pasirinktinis maršrutizatorius gali būti Raspberry Pi, kai kurie WiFi maršrutizatoriai arba įprastas kompiuteris. Yra paruoštų įvairių platformų mazgų, o tai labai patogu.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
Kaip veikia OpenMPTCPRuter

Suvestinio serverio nustatymas

Sumavimo serveris yra internete ir nutraukia ryšius iš visų kliento maršrutizatoriaus kanalų į vieną. Šio serverio IP adresas bus išorinis adresas, kai prisijungiate prie interneto per OpenMPTCPRuter.

Šiai užduočiai mes naudosime VPS serverį Debian 10.

Reikalavimai sumavimo serveriui:

  • MPTCP neveikia naudojant OpenVZ virtualizaciją
  • Turėtų būti įmanoma įdiegti savo Linux branduolį

Serveris dislokuojamas vykdant vieną komandą. Scenarijus įdiegs branduolį su mptcp palaikymu ir visus reikiamus paketus. Diegimo scenarijai yra prieinami Ubuntu ir Debian.

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

Sėkmingo serverio diegimo rezultatas.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Išsaugome slaptažodžius, jų prireiks kliento maršrutizatoriui konfigūruoti ir paleisti iš naujo. Svarbu nepamiršti, kad po įdiegimo SSH bus pasiekiamas prie 65222 prievado. Perkrovę turime įsitikinti, kad paleidome naują branduolį

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

Šalia versijos numerio matome užrašą mptcp, o tai reiškia, kad branduolys buvo įdiegtas teisingai.

Kliento maršrutizatoriaus nustatymas

Apie projekto svetainė Kai kurioms platformoms, pvz., Raspberry Pi, Banana Pi, Lynksys maršrutizatoriams ir virtualiosioms mašinoms, yra paruoštų versijų.
Ši openmptcprouter dalis yra pagrįsta OpenWRT, naudojant LuCI kaip sąsają, žinomą visiems, kurie kada nors susidūrė su OpenWRT. Platinimas sveria apie 50 MB!

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Kaip bandymų stendą naudosiu Raspberry Pi ir kelis USB modemus su skirtingais operatoriais: MTS ir Megafon. Nemanau, kad reikia jums pasakyti, kaip įrašyti vaizdą į SD kortelę.

Iš pradžių Raspberry Pi Ethernet prievadas sukonfigūruotas kaip LAN su statiniu IP adresu 192.168.100.1. Kad nereikėtų krapštytis su laidais ant stalo, „Raspberry Pi“ prijungiau prie „WiFi“ prieigos taško ir kompiuterio „WiFi“ adapterį nustatiau į statinį adresą. 192.168.100.2. DHCP serveris neįjungtas pagal numatytuosius nustatymus, todėl turite naudoti statinius adresus.

Dabar galite prisijungti prie žiniatinklio sąsajos 192.168.100.1

Kai prisijungiate pirmą kartą, sistema paprašys jūsų nustatyti root slaptažodį; SSH bus pasiekiamas su tuo pačiu slaptažodžiu.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter
LAN nustatymuose galite nustatyti norimą potinklį ir įjungti DHCP serverį.

Aš naudoju modemus, kurie yra apibrėžti kaip USB Ethernet sąsajos su atskiru DHCP serveriu, todėl reikėjo įdiegti papildomų paketų. Procedūra yra identiška modemų nustatymui įprastuose OpenWRT, todėl čia to neaprašysiu.

Tada turite sukonfigūruoti WAN sąsajas. Iš pradžių sistema sukūrė dvi virtualias sąsajas WAN1 ir WAN2. Jiems reikia priskirti fizinį įrenginį, mano atveju tai yra USB modemo sąsajų pavadinimai.

Kad nesusipainiotumėte su sąsajų pavadinimais, rekomenduoju peržiūrėti dmesg pranešimus jungiantis per SSH.

Kadangi mano modemai patys veikia kaip maršrutizatoriai, o patys turi DHCP serverį, teko keisti jų vidinių tinklų diapazonų nustatymus ir išjungti DHCP serverį, nes iš pradžių abu modemai išduoda adresus iš to paties tinklo ir tai sukelia konfliktą.

OpenMPTCPRuter reikalauja, kad WAN sąsajos adresai būtų statiniai, todėl sugalvojame modemų potinklius ir juos konfigūruojame sistemos → openmptcprouter → sąsajos nustatymų meniu. Čia reikia nurodyti IP adresą ir serverio raktą, gautą diegiant sumavimo serverį.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Jei sąranka sėkminga, būsenos puslapyje turėtų pasirodyti panašus paveikslėlis. Matosi, kad maršrutizatorius sugebėjo pasiekti sumavimo serverį ir abu kanalai veikia normaliai.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Numatytasis režimas yra shadowsocks + mptcp. Tai tarpinis serveris, apimantis visus ryšius savyje. Iš pradžių jis sukonfigūruotas apdoroti tik TCP, tačiau galima įjungti ir UDP.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Jei būsenos puslapyje nėra klaidų, sąranka gali būti laikoma baigta.
Kai kuriuose paslaugų teikėjuose gali susidaryti situacija, kai eismo kelyje nupjaunama mptcp vėliava, tada pasirodys ši klaida:

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Šiuo atveju galite naudoti kitą darbo režimą, nenaudodami MPTCP, daugiau apie tai čia.

išvada

OpenMPTCPRuter projektas yra labai įdomus ir svarbus, nes tai bene vienintelis atviras kompleksinis kanalų sumavimo problemos sprendimas. Visa kita yra arba sandariai uždaryta ir patentuota, arba tiesiog atskiri moduliai, kurių paprastas žmogus nesupranta. Dabartiniame kūrimo etape projektas dar gana grubus, dokumentacija itin prasta, daug kas tiesiog neaprašyta. Bet tuo pat metu jis vis dar veikia. Tikiuosi, kad jis ir toliau vystysis, ir mes sulauksime buitinių maršrutizatorių, kurie galės tinkamai sujungti kanalus.

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Stebėkite mūsų kūrėją Instagram

Tikras interneto kanalų sumavimas – OpenMPTCPRuter

Šaltinis: www.habr.com

Добавить комментарий