Echte sommatie van internetkanalen - OpenMPTCPRouter

Echte sommatie van internetkanalen - OpenMPTCPRouter

Is het mogelijk om meerdere internetkanalen in één te combineren? Er bestaan ​​veel misvattingen en mythen rond dit onderwerp; zelfs ervaren netwerkingenieurs weten vaak niet dat dit mogelijk is. In de meeste gevallen wordt linkaggregatie ten onrechte balancering op NAT-niveau of failover genoemd. Maar echte sommatie maakt het mogelijk start één enkele TCP-verbinding tegelijkertijd via alle internetkanalenbijvoorbeeld video-uitzendingen, zodat als een van de internetkanalen wordt onderbroken, de uitzending niet wordt onderbroken.

Er zijn dure commerciële oplossingen voor video-uitzendingen, maar dergelijke apparaten kosten vele kilo's. Het artikel beschrijft hoe je het gratis, open-source OpenMPTCPRouter-pakket configureert en gaat in op populaire mythen over het optellen van kanalen.

Mythes over het optellen van kanalen

Er zijn veel thuisrouters die de Multi-WAN-functie ondersteunen. Soms noemen fabrikanten dit kanaaloptelling, wat niet helemaal waar is. Veel netwerkers geloven dat bovendien LACP en sommatie op L2-niveau bestaat er geen andere kanaalaggregatie. Dat dit over het algemeen onmogelijk is, heb ik vaak gehoord van mensen die in de telecomsector werken. Laten we daarom proberen populaire mythen te begrijpen.

Balanceren op IP-verbindingsniveau

Dit is de meest betaalbare en populaire manier om meerdere internetkanalen tegelijkertijd te gebruiken. Laten we ons voor de eenvoud voorstellen dat u drie internetproviders heeft, die u elk een echt IP-adres van hun netwerk geven. Al deze providers zijn aangesloten op een router die de Multi-WAN-functie ondersteunt. Dit kan OpenWRT zijn met het mwan3-pakket, mikrotik, ubiquiti of een andere huishoudelijke router, aangezien een dergelijke optie niet langer ongebruikelijk is.

Laten we ons, om de situatie te simuleren, voorstellen dat de providers ons de volgende adressen hebben gegeven:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Dat wil zeggen, verbinding maken met een externe server example.com Via elk van de providers ziet de externe server drie onafhankelijke bron-IP-clients. Met balanceren kunt u de belasting over kanalen verdelen en ze alle drie tegelijkertijd gebruiken. Laten we ons voor de eenvoud voorstellen dat we de belasting gelijkelijk verdelen over alle kanalen. Als gevolg hiervan downloadt een klant, wanneer hij een site met drie afbeeldingen opent, elke afbeelding via een afzonderlijke provider. Aan de sitekant lijkt het op verbindingen van drie verschillende IP's.

Echte sommatie van internetkanalen - OpenMPTCPRouter
Bij het balanceren op verbindingsniveau loopt elke TCP-verbinding via een aparte provider.

Deze balanceringsmodus veroorzaakt vaak problemen voor gebruikers. Veel sites binden bijvoorbeeld cookies en tokens strikt aan het IP-adres van de klant, en als dit plotseling verandert, wordt het verzoek afgewezen of wordt de klant afgemeld bij de site. Dit wordt vaak gereproduceerd in klant-banksystemen en andere sites met strikte regels voor gebruikerssessies. Hier is een eenvoudig illustratief voorbeeld: muziekbestanden op VK.com zijn alleen beschikbaar met een geldige sessiesleutel, die is gekoppeld aan een IP, en klanten die een dergelijke verdeling gebruiken, spelen vaak geen audio af omdat het verzoek niet via de provider is gegaan waarheen de sessie is gebonden.

Echte sommatie van internetkanalen - OpenMPTCPRouter
Bij het downloaden van torrents telt de balancering van het verbindingsniveau de bandbreedte van alle kanalen op

Met deze balans kunt u de som krijgen van de snelheid van het internetkanaal wanneer u meerdere verbindingen gebruikt. Als elk van de drie providers bijvoorbeeld een snelheid van 100 Megabit heeft, krijgen we bij het downloaden van torrents 300 Megabit. Omdat een torrent veel verbindingen opent, die over alle providers worden verdeeld en uiteindelijk het hele kanaal benutten.

Het is belangrijk om te begrijpen dat één enkele TCP-verbinding altijd via slechts één provider loopt. Dat wil zeggen: als we één groot bestand downloaden via HTTP, dan komt deze verbinding tot stand via een van de providers, en als de verbinding met deze provider verbroken wordt, wordt de download ook verbroken.

Echte sommatie van internetkanalen - OpenMPTCPRouter
Eén verbinding maakt altijd gebruik van slechts één internetkanaal

Dit geldt ook voor video-uitzendingen. Als je streaming video uitzendt naar een soort voorwaardelijke Twitch, zal het balanceren op het niveau van IP-verbindingen geen bijzonder voordeel opleveren, aangezien de videostream binnen één IP-verbinding wordt uitgezonden. Als de WAN 3-provider in dit geval problemen krijgt met de communicatie, zoals pakketverlies of verminderde snelheid, kunt u niet onmiddellijk naar een andere provider overstappen. De uitzending moet worden gestopt en opnieuw worden verbonden.

Echte kanaaloptelling

Real channel summing maakt het mogelijk om één verbinding met een voorwaardelijke Twitch in één keer via alle providers te laten verlopen, zodanig dat als een van de providers uitvalt, de verbinding niet wordt onderbroken. Dit is een verrassend moeilijk probleem waarvoor nog steeds geen optimale oplossing bestaat. Veel mensen weten niet eens dat dit mogelijk is!

Uit de voorgaande illustraties herinneren we ons dat de voorwaardelijke Twitch-server een videostream van ons kan ontvangen vanaf slechts één bron-IP-adres, wat betekent dat dit voor ons altijd constant moet zijn, ongeacht welke providers zijn uitgevallen en welke nog werken. Om dit te bereiken hebben we een sommatieserver nodig die al onze verbindingen verbreekt en combineert tot één.

Echte sommatie van internetkanalen - OpenMPTCPRouter
De optelserver voegt alle kanalen samen in één tunnel. Alle verbindingen zijn afkomstig van het optelserveradres

In dit schema worden alle providers gebruikt en het uitschakelen van een van deze zal geen verlies van communicatie met de Twitch-server veroorzaken. In wezen is dit een speciale VPN-tunnel, onder de motorkap waarvan er meerdere internetkanalen tegelijk zijn. De belangrijkste taak van een dergelijk schema is het verkrijgen van een communicatiekanaal van de hoogste kwaliteit. Als een van de providers problemen krijgt, pakketverlies, grotere vertragingen, mag dit op geen enkele manier de kwaliteit van de communicatie beïnvloeden, aangezien de belasting automatisch wordt verdeeld over andere, betere kanalen die beschikbaar zijn.

Commerciële oplossingen

Dit probleem is al lange tijd een probleem voor degenen die live-evenementen uitzenden en geen toegang hebben tot internet van hoge kwaliteit. Voor dergelijke taken zijn er verschillende commerciële oplossingen, het bedrijf Teradek maakt bijvoorbeeld zulke monsterlijke routers waarin pakketten USB-modems worden geplaatst:

Echte sommatie van internetkanalen - OpenMPTCPRouter
Router voor video-uitzendingen met kanaalsomfunctie

Dergelijke apparaten hebben meestal een ingebouwde mogelijkheid om videosignalen vast te leggen via HDMI of SDI. Samen met de router wordt een abonnement op de dienst voor het optellen van kanalen verkocht, evenals het verwerken van de videostream, het transcoderen en verder doorgeven. De prijs van dergelijke apparaten begint vanaf $ 2 met een set modems, plus een apart abonnement op de dienst.

Soms ziet het er best eng uit:

Echte sommatie van internetkanalen - OpenMPTCPRouter

OpenMPTCPRouter instellen

protocol MP-TCP (MultiPath TCP) is uitgevonden om via meerdere kanalen tegelijk verbinding te kunnen maken. Bijvoorbeeld de zijne ondersteunt iOS en kan tegelijkertijd verbinding maken met een externe server via WiFi en via een mobiel netwerk. Het is belangrijk om te begrijpen dat dit niet twee afzonderlijke TCP-verbindingen zijn, maar eerder één verbinding die via twee kanalen tegelijk tot stand is gebracht. Om dit te laten werken, moet de externe server ook MPTCP ondersteunen.

Open MPTCPRouter is een open source softwarerouterproject dat echte kanaalsamenvatting mogelijk maakt. De auteurs stellen dat het project zich in de alfaversiestatus bevindt, maar dat het al kan worden gebruikt. Het bestaat uit twee delen: een somserver, die zich op internet bevindt, en een router, waarop verschillende internetproviders en de clientapparaten zelf zijn aangesloten: computers, telefoons. De aangepaste router kan een Raspberry Pi, sommige WiFi-routers of een gewone computer zijn. Er zijn kant-en-klare montages voor verschillende platforms, wat erg handig is.

Echte sommatie van internetkanalen - OpenMPTCPRouter
Hoe OpenMPTCPRouter werkt

Een samenvattende server opzetten

De sommatieserver bevindt zich op internet en beëindigt verbindingen van alle kanalen van de clientrouter naar één. Het IP-adres van deze server is het externe adres bij toegang tot internet via OpenMPTCPRouter.

Voor deze taak zullen we een VPS-server op Debian 10 gebruiken.

Vereisten voor de optelserver:

  • MPTCP werkt niet op OpenVZ-virtualisatie
  • Het zou mogelijk moeten zijn om je eigen Linux-kernel te installeren

De server wordt ingezet door één opdracht uit te voeren. Het script installeert een kernel met mptcp-ondersteuning en alle benodigde pakketten. Er zijn installatiescripts beschikbaar voor Ubuntu en Debian.

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

Het resultaat van een succesvolle serverinstallatie.

Echte sommatie van internetkanalen - OpenMPTCPRouter

We slaan de wachtwoorden op, we hebben ze nodig om de clientrouter te configureren en opnieuw op te starten. Het is belangrijk om in gedachten te houden dat SSH na de installatie beschikbaar zal zijn op poort 65222. Na het opnieuw opstarten moeten we ervoor zorgen dat we met de nieuwe kernel opstarten

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

We zien de inscriptie mptcp naast het versienummer, wat betekent dat de kernel correct is geïnstalleerd.

Een clientrouter instellen

Op projectsite Voor sommige platforms zijn kant-en-klare builds beschikbaar, zoals Raspberry Pi, Banana Pi, Lynksys-routers en virtuele machines.
Dit deel van openmptcprouter is gebaseerd op OpenWRT en gebruikt LuCI als interface, bekend voor iedereen die ooit OpenWRT is tegengekomen. De distributie weegt ongeveer 50 MB!

Echte sommatie van internetkanalen - OpenMPTCPRouter

Als testbank gebruik ik een Raspberry Pi en verschillende USB-modems met verschillende operators: MTS en Megafon. Ik denk niet dat ik je hoef te vertellen hoe je een afbeelding naar een SD-kaart schrijft.

Aanvankelijk is de Ethernet-poort in de Raspberry Pi geconfigureerd als LAN met een statisch IP-adres 192.168.100.1. Om geknoeid met draden op het bureau te voorkomen, heb ik de Raspberry Pi op een WiFi-toegangspunt aangesloten en de WiFi-adapter van de computer op een statisch adres ingesteld 192.168.100.2. De DHCP-server is standaard niet ingeschakeld, dus u moet statische adressen gebruiken.

Nu kunt u inloggen op de webinterface 192.168.100.1

Wanneer u voor de eerste keer inlogt, zal het systeem u vragen een root-wachtwoord in te stellen; SSH zal beschikbaar zijn met hetzelfde wachtwoord.

Echte sommatie van internetkanalen - OpenMPTCPRouter
In de LAN-instellingen kunt u het gewenste subnet instellen en de DHCP-server inschakelen.

Ik gebruik modems die zijn gedefinieerd als USB Ethernet-interfaces met een aparte DHCP-server, dus hiervoor was installatie vereist extra pakketten. De procedure is identiek aan het instellen van modems in gewone OpenWRT, dus ik zal er hier niet op ingaan.

Vervolgens moet u de WAN-interfaces configureren. Aanvankelijk creëerde het systeem twee virtuele interfaces WAN1 en WAN2. Ze moeten een fysiek apparaat toegewezen krijgen, in mijn geval zijn dit de namen van de USB-modeminterfaces.

Om verwarring met interfacenamen te voorkomen, raad ik aan om dmesg-berichten te bekijken terwijl je verbinding maakt via SSH.

Omdat mijn modems zelf als routers fungeren en zelf een DHCP-server hebben, moest ik de instellingen van hun interne netwerkbereiken wijzigen en de DHCP-server uitschakelen, omdat beide modems aanvankelijk adressen uit hetzelfde netwerk afgeven, en dit veroorzaakt een conflict.

OpenMPTCPRouter vereist dat de WAN-interfaceadressen statisch zijn, dus bedenken we subnetten voor de modems en configureren deze in het systeem → openmptcprouter → interface-instellingenmenu. Hier moet u het IP-adres en de serversleutel opgeven die zijn verkregen tijdens de installatie van de optelserver.

Echte sommatie van internetkanalen - OpenMPTCPRouter

Als de installatie succesvol is, zou een soortgelijke afbeelding op de statuspagina moeten verschijnen. Het is duidelijk dat de router de sommatieserver heeft kunnen bereiken en dat beide kanalen normaal werken.

Echte sommatie van internetkanalen - OpenMPTCPRouter

De standaardmodus is shadowsocks + mptcp. Dit is een proxy die alle verbindingen in zichzelf omhult. Het is aanvankelijk geconfigureerd om alleen TCP te verwerken, maar UDP kan ook worden ingeschakeld.

Echte sommatie van internetkanalen - OpenMPTCPRouter

Als er geen fouten op de statuspagina staan, kan de installatie als voltooid worden beschouwd.
Bij sommige providers kan er een situatie ontstaan ​​waarbij de mptcp-vlag langs het verkeerspad wordt afgesneden, waarna de volgende foutmelding verschijnt:

Echte sommatie van internetkanalen - OpenMPTCPRouter

In dit geval kunt u een andere bedieningsmodus gebruiken, zonder gebruik te maken van MPTCP, hierover meer hier.

Conclusie

Het OpenMPTCPRouter-project is erg interessant en belangrijk, omdat het misschien wel de enige open alomvattende oplossing is voor het probleem van het optellen van kanalen. Al het andere is ofwel strak gesloten en bedrijfseigen, ofwel eenvoudigweg afzonderlijke modules die een gewoon mens niet kan begrijpen. In de huidige ontwikkelingsfase is het project nog steeds vrij grof, de documentatie is extreem slecht, veel dingen zijn simpelweg niet beschreven. Maar tegelijkertijd werkt het nog steeds. Ik hoop dat dit zich zal blijven ontwikkelen, en dat we huishoudelijke routers zullen krijgen die out-of-the-box kanalen goed kunnen combineren.

Echte sommatie van internetkanalen - OpenMPTCPRouter

Volg onze ontwikkelaar op Instagram

Echte sommatie van internetkanalen - OpenMPTCPRouter

Bron: www.habr.com

Voeg een reactie