Sumarea canalului de internet adevărat - OpenMPTCPRuter

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Este posibil să combinați mai multe canale de internet într-unul singur? Există o mulțime de concepții greșite și mituri în jurul acestui subiect; chiar și inginerii de rețea cu experiență adesea nu știu că acest lucru este posibil. În cele mai multe cazuri, agregarea legăturilor este numită în mod eronat echilibrare la nivel NAT sau failover. Dar însumarea reală permite lansați o singură conexiune TCP simultan pe toate canalele de Internet, de exemplu, difuzarea video, astfel încât, dacă oricare dintre canalele de internet este întreruptă, difuzarea să nu fie întreruptă.

Există soluții comerciale scumpe pentru transmisiile video, dar astfel de dispozitive costă mulți kilobucks. Articolul descrie cum să configurați pachetul gratuit, open-source OpenMPTCPRuter și abordează miturile populare despre însumarea canalelor.

Mituri despre însumarea canalelor

Există multe routere de acasă care acceptă funcția Multi-WAN. Uneori, producătorii numesc acest canal însumare, ceea ce nu este în întregime adevărat. Mulți oameni de rețea cred că, în plus față de LACP și sumarea la nivelul L2, nu există nicio altă agregare a canalelor. Am auzit adesea că acest lucru este în general imposibil de la oamenii care lucrează în telecomunicații. Prin urmare, să încercăm să înțelegem miturile populare.

Echilibrare la nivel de conexiune IP

Acesta este cel mai accesibil și popular mod de a utiliza mai multe canale de internet în același timp. Pentru simplitate, să ne imaginăm că aveți trei furnizori de internet, fiecare oferindu-vă o adresă IP reală din rețeaua lor. Toți acești furnizori sunt conectați la un router care acceptă funcția Multi-WAN. Acesta ar putea fi OpenWRT cu pachetul mwan3, mikrotik, ubiquiti sau orice alt router de uz casnic, deoarece o astfel de opțiune nu mai este neobișnuită.

Pentru a simula situația, să ne imaginăm că furnizorii ne-au dat următoarele adrese:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Adică conectarea la un server la distanță example.com Prin fiecare dintre furnizori, serverul de la distanță va vedea trei clienți IP sursă independenți. Echilibrarea vă permite să împărțiți încărcătura pe canale și să le utilizați pe toate trei simultan. Pentru simplitate, să ne imaginăm că împărțim sarcina în mod egal între toate canalele. Ca urmare, atunci când un client deschide un site cu trei imagini, el descarcă fiecare imagine printr-un furnizor separat. Pe partea de site arată ca conexiuni de la trei IP-uri diferite.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
La echilibrarea la nivel de conexiune, fiecare conexiune TCP trece printr-un furnizor separat.

Acest mod de echilibrare cauzează adesea probleme utilizatorilor. De exemplu, multe site-uri leagă strict cookie-urile și token-urile la adresa IP a clientului și, dacă aceasta se schimbă brusc, cererea este respinsă sau clientul este deconectat de la site. Acest lucru este adesea reprodus în sistemele client-bancă și alte site-uri cu reguli stricte de sesiune de utilizator. Iată un exemplu ilustrativ simplu: fișierele muzicale de pe VK.com sunt disponibile numai cu o cheie de sesiune validă, care este legată de un IP, iar clienții care folosesc o astfel de echilibrare adesea nu redă audio, deoarece solicitarea nu a trecut prin furnizorul căruia îi este adresat. sesiunea este legată.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
Când descărcați torrente, echilibrarea nivelului de conexiune însumează lățimea de bandă a tuturor canalelor

Această echilibrare vă permite să obțineți sumarea vitezei canalului de Internet atunci când utilizați mai multe conexiuni. De exemplu, dacă fiecare dintre cei trei furnizori are o viteză de 100 Megabiți, atunci când descarcăm torrente vom obține 300 Megabiți. Pentru că un torrent deschide multe conexiuni, care sunt distribuite între toți furnizorii și în cele din urmă utilizează întregul canal.

Este important să înțelegeți că o singură conexiune TCP va trece întotdeauna printr-un singur furnizor. Adică dacă descarcăm un fișier mare prin HTTP, atunci această conexiune se va face prin intermediul unuia dintre furnizori, iar dacă conexiunea cu acest furnizor este întreruptă, descărcarea se va întrerupe și ea.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
O conexiune va folosi întotdeauna un singur canal de internet

Acest lucru este valabil și pentru transmisiile video. Dacă transmiteți în flux video la un fel de Twitch condiționat, atunci echilibrarea la nivelul conexiunilor IP nu va oferi niciun beneficiu deosebit, deoarece fluxul video va fi difuzat într-o singură conexiune IP. În acest caz, dacă furnizorul WAN 3 începe să aibă probleme cu comunicarea, cum ar fi pierderea pachetelor sau viteza redusă, atunci nu veți putea trece instantaneu la alt furnizor. Transmisia va trebui oprită și reconectată.

Însumarea canalului adevărată

Însumarea canalului real face posibilă rularea unei conexiuni la un Twitch condiționat prin toți furnizorii simultan, astfel încât, dacă oricare dintre furnizori se întrerupe, conexiunea nu va fi întreruptă. Aceasta este o problemă surprinzător de dificilă, care încă nu are o soluție optimă. Mulți oameni nici măcar nu știu că acest lucru este posibil!

Din ilustrațiile anterioare, ne amintim că serverul Twitch condiționat poate primi un flux video de la noi de la o singură adresă IP sursă, ceea ce înseamnă că trebuie să fie întotdeauna constantă pentru noi, indiferent de furnizorii care au căzut și care funcționează. Pentru a realiza acest lucru, avem nevoie de un server de însumare care va termina toate conexiunile noastre și le va combina într-unul singur.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
Serverul de însumare reunește toate canalele într-un singur tunel. Toate conexiunile provin de la adresa serverului de sumare

În această schemă, toți furnizorii sunt utilizați, iar dezactivarea oricăruia dintre aceștia nu va cauza o pierdere a comunicării cu serverul Twitch. În esență, acesta este un tunel VPN special, sub capota căruia există mai multe canale de internet simultan. Sarcina principală a unei astfel de scheme este de a obține canalul de comunicare de cea mai înaltă calitate. Dacă unul dintre furnizori începe să aibă probleme, pierderi de pachete, întârzieri crescute, atunci acest lucru nu ar trebui să afecteze în niciun fel calitatea comunicării, deoarece încărcarea va fi distribuită automat pe alte canale, mai bune, care sunt disponibile.

Solutii Comerciale

Această problemă îi deranjează de mult pe cei care transmit evenimente live și nu au acces la internet de înaltă calitate. Pentru astfel de sarcini, există mai multe soluții comerciale, de exemplu, compania Teradek produce astfel de routere monstruoase în care sunt introduse pachete de modemuri USB:

Sumarea canalului de internet adevărat - OpenMPTCPRuter
Router pentru transmisii video cu funcție de însumare a canalelor

Astfel de dispozitive au de obicei o capacitate încorporată de a capta semnale video prin HDMI sau SDI. Împreună cu routerul, este vândut un abonament la serviciul de însumare a canalelor, precum și procesarea fluxului video, transcodarea acestuia și transmiterea lui în continuare. Prețul unor astfel de dispozitive începe de la 2 USD cu un set de modemuri, plus un abonament separat la serviciu.

Uneori pare destul de înfricoșător:

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Configurarea OpenMPTCPRuter

protocol MP-TCP (MultiPath TCP) a fost inventat pentru a se putea conecta prin mai multe canale simultan. De exemplu, a lui acceptă iOS și se poate conecta simultan la un server la distanță prin WiFi și printr-o rețea celulară. Este important să înțelegeți că acestea nu sunt două conexiuni TCP separate, ci mai degrabă o conexiune stabilită pe două canale simultan. Pentru ca acest lucru să funcționeze, serverul de la distanță trebuie să accepte și MPTCP.

OpenMPTCPRuter este un proiect de ruter software open source care permite o rezumare reală a canalului. Autorii afirmă că proiectul este în versiunea alfa, dar poate fi deja utilizat. Este format din două părți - un server de însumare, care se află pe Internet și un router, la care sunt conectați mai mulți furnizori de internet și dispozitivele client în sine: computere, telefoane. Routerul personalizat poate fi un Raspberry Pi, unele routere WiFi sau un computer obișnuit. Există ansambluri gata făcute pentru diverse platforme, ceea ce este foarte convenabil.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
Cum funcționează OpenMPTCPRuter

Configurarea unui server de rezumat

Serverul de însumare este situat pe Internet și termină conexiunile de la toate canalele routerului client într-unul singur. Adresa IP a acestui server va fi adresa externă atunci când accesați Internetul prin OpenMPTCPRuter.

Pentru această sarcină vom folosi un server VPS pe Debian 10.

Cerințe pentru serverul de însumare:

  • MPTCP nu funcționează pe virtualizarea OpenVZ
  • Ar trebui să fie posibil să vă instalați propriul kernel Linux

Serverul este implementat prin executarea unei comenzi. Scriptul va instala un nucleu cu suport mptcp și toate pachetele necesare. Scripturile de instalare sunt disponibile pentru Ubuntu și Debian.

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

Rezultatul unei instalări cu succes a serverului.

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Salvăm parolele, vom avea nevoie de ele pentru a configura routerul client și pentru a reporni. Este important să rețineți că după instalare, SSH va fi disponibil pe portul 65222. După repornire, trebuie să ne asigurăm că am pornit cu noul nucleu

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

Vedem inscripția mptcp lângă numărul versiunii, ceea ce înseamnă că nucleul a fost instalat corect.

Configurarea unui router client

Pe site-ul proiectului versiuni gata făcute sunt disponibile pentru unele platforme, cum ar fi Raspberry Pi, Banana Pi, routere Lynksys și mașini virtuale.
Această parte a openmptcprouter se bazează pe OpenWRT, folosind LuCI ca interfață, familiară pentru oricine a întâlnit vreodată OpenWRT. Distribuția cântărește aproximativ 50MB!

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Ca banc de testare voi folosi un Raspberry Pi si mai multe modemuri USB cu operatori diferiti: MTS si Megafon. Nu cred că trebuie să vă spun cum să scrieți o imagine pe un card SD.

Inițial, portul Ethernet din Raspberry Pi este configurat ca lan cu o adresă IP statică 192.168.100.1. Pentru a evita să mă joc cu firele de pe birou, am conectat Raspberry Pi la un punct de acces WiFi și am setat adaptorul WiFi al computerului la o adresă statică. 192.168.100.2. Serverul DHCP nu este activat implicit, așa că trebuie să utilizați adrese statice.

Acum vă puteți conecta la interfața web 192.168.100.1

Când vă conectați pentru prima dată, sistemul vă va cere să setați o parolă de root; SSH va fi disponibil cu aceeași parolă.

Sumarea canalului de internet adevărat - OpenMPTCPRuter
În setările LAN, puteți seta subrețeaua dorită și puteți activa serverul DHCP.

Folosesc modemuri care sunt definite ca interfețe USB Ethernet cu un server DHCP separat, deci aceasta a necesitat instalare pachete suplimentare. Procedura este identică cu configurarea modemurilor în OpenWRT obișnuit, așa că nu o voi acoperi aici.

În continuare, trebuie să configurați interfețele WAN. Inițial, sistemul a creat două interfețe virtuale WAN1 și WAN2. Trebuie să li se aloce un dispozitiv fizic, în cazul meu acestea sunt numele interfețelor modemului USB.

Pentru a evita confuzia cu numele interfețelor, vă recomand să vizualizați mesajele dmesg în timp ce vă conectați prin SSH.

Deoarece modemurile mele acționează ca routere și au un server DHCP, a trebuit să schimb setările intervalelor lor interne de rețea și să dezactivez serverul DHCP, deoarece inițial ambele modemuri emit adrese din aceeași rețea, iar acest lucru provoacă un conflict.

OpenMPTCPRuter necesită ca adresele interfeței WAN să fie statice, așa că venim cu subrețele pentru modemuri și le configuram în sistem → openmptcprouter → meniul de setări de interfață. Aici trebuie să specificați adresa IP și cheia serverului obținute în timpul instalării serverului de sumare.

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Dacă configurarea are succes, pe pagina de stare ar trebui să apară o imagine similară. Se poate observa că routerul a reușit să ajungă la serverul de însumare și ambele canale funcționează normal.

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Modul implicit este shadowsocks + mptcp. Acesta este un proxy care include toate conexiunile în sine. Este configurat inițial să proceseze numai TCP, dar poate fi activat și UDP.

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Dacă nu există erori pe pagina de stare, configurarea poate fi considerată finalizată.
La unii furnizori, poate apărea o situație când steag-ul mptcp este întrerupt de-a lungul căii de trafic, atunci va apărea următoarea eroare:

Sumarea canalului de internet adevărat - OpenMPTCPRuter

În acest caz, puteți utiliza un alt mod de operare, fără a utiliza MPTCP, mai multe despre asta aici.

Concluzie

Proiectul OpenMPTCPRuter este foarte interesant și important, deoarece este poate singura soluție cuprinzătoare deschisă la problema însumării canalelor. Orice altceva este fie strâns închis și proprietar, fie pur și simplu module separate pe care o persoană obișnuită nu le poate înțelege. În stadiul actual de dezvoltare, proiectul este încă destul de brut, documentația este extrem de slabă, multe lucruri pur și simplu nu sunt descrise. Dar în același timp încă funcționează. Sper că va continua să se dezvolte și vom obține routere de uz casnic care vor putea combina corect canalele din cutie.

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Urmărește dezvoltatorul nostru pe Instagram

Sumarea canalului de internet adevărat - OpenMPTCPRuter

Sursa: www.habr.com

Adauga un comentariu