Vera somma dei canali Internet: OpenMPTCPRouter

Vera somma dei canali Internet: OpenMPTCPRouter

È possibile combinare più canali Internet in uno solo? Ci sono molte idee sbagliate e miti su questo argomento; anche gli ingegneri di rete esperti spesso non sanno che ciò è possibile. Nella maggior parte dei casi, l'aggregazione dei collegamenti viene erroneamente chiamata bilanciamento a livello NAT o failover. Ma la vera somma lo consente avviare una singola connessione TCP contemporaneamente su tutti i canali Internet, ad esempio, la trasmissione video in modo che se uno qualsiasi dei canali Internet viene interrotto, la trasmissione non verrà interrotta.

Esistono costose soluzioni commerciali per le trasmissioni video, ma tali dispositivi costano molti kilobucks. L'articolo descrive come configurare il pacchetto OpenMPTCPRouter gratuito e open source e affronta i miti popolari sul summing dei canali.

Miti sulla somma dei canali

Esistono molti router domestici che supportano la funzione Multi-WAN. A volte i produttori chiamano questo canale somma, il che non è del tutto vero. Molti networker credono che oltre a LACP e sommatoria a livello L2, non esiste altra aggregazione di canali. Ho spesso sentito dire che questo è generalmente impossibile da parte di persone che lavorano nelle telecomunicazioni. Cerchiamo quindi di comprendere i miti popolari.

Bilanciamento a livello di connessione IP

Questo è il modo più conveniente e popolare per utilizzare più canali Internet contemporaneamente. Per semplicità, immaginiamo di avere tre provider Internet, ciascuno dei quali fornisce un indirizzo IP reale dalla propria rete. Tutti questi provider sono collegati a un router che supporta la funzione Multi-WAN. Potrebbe trattarsi di OpenWRT con il pacchetto mwan3, mikrotik, ubiquiti o qualsiasi altro router domestico, poiché tale opzione non è più rara.

Per simulare la situazione, immaginiamo che i fornitori ci abbiano fornito i seguenti indirizzi:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Cioè, connettersi a un server remoto example.com Attraverso ciascuno dei provider, il server remoto vedrà tre client IP di origine indipendenti. Il bilanciamento consente di dividere il carico tra i canali e di utilizzarli tutti e tre contemporaneamente. Per semplicità, immaginiamo di dividere equamente il carico tra tutti i canali. Di conseguenza, quando un cliente apre un sito con tre immagini, scarica ciascuna immagine tramite un provider separato. Lato sito sembrano connessioni da tre IP diversi.

Vera somma dei canali Internet: OpenMPTCPRouter
Durante il bilanciamento a livello di connessione, ciascuna connessione TCP passa attraverso un provider separato.

Questa modalità di bilanciamento causa spesso problemi agli utenti. Ad esempio, molti siti legano strettamente cookie e token all’indirizzo IP del cliente e, se cambia improvvisamente, la richiesta viene rifiutata o il cliente viene disconnesso dal sito. Questo viene spesso riprodotto nei sistemi cliente-banca e in altri siti con rigide regole di sessione utente. Ecco un semplice esempio illustrativo: i file musicali su VK.com sono disponibili solo con una chiave di sessione valida, che è legata a un IP, e i client che utilizzano tale bilanciamento spesso non riproducono l'audio perché la richiesta non è passata attraverso il provider a cui la sessione è legata.

Vera somma dei canali Internet: OpenMPTCPRouter
Quando si scaricano torrent, il bilanciamento del livello di connessione riassume la larghezza di banda di tutti i canali

Questo bilanciamento consente di ottenere la somma della velocità del canale Internet quando si utilizzano più connessioni. Ad esempio, se ciascuno dei tre provider ha una velocità di 100 Megabit, durante il download dei torrent otterremo 300 Megabit. Perché un torrent apre molte connessioni, che vengono distribuite tra tutti i provider e alla fine utilizzano l'intero canale.

È importante comprendere che una singola connessione TCP passerà sempre attraverso un solo provider. Cioè, se scarichiamo un file di grandi dimensioni tramite HTTP, questa connessione verrà effettuata tramite uno dei provider e se la connessione con questo provider viene interrotta, anche il download verrà interrotto.

Vera somma dei canali Internet: OpenMPTCPRouter
Una connessione utilizzerà sempre un solo canale Internet

Ciò vale anche per le trasmissioni video. Se stai trasmettendo video in streaming su una sorta di Twitch condizionale, il bilanciamento a livello di connessioni IP non fornirà alcun vantaggio particolare, poiché il flusso video verrà trasmesso all'interno di una connessione IP. In questo caso, se il provider WAN 3 inizia ad avere problemi di comunicazione, come perdita di pacchetti o velocità ridotta, non sarà possibile passare immediatamente a un altro provider. La trasmissione dovrà essere interrotta e ricollegata.

Vera somma dei canali

La somma reale dei canali consente di eseguire una connessione a un Twitch condizionale attraverso tutti i provider contemporaneamente in modo tale che se uno qualsiasi dei provider si interrompe, la connessione non verrà interrotta. Questo è un problema sorprendentemente difficile che non ha ancora una soluzione ottimale. Molte persone non sanno nemmeno che questo è possibile!

Dalle illustrazioni precedenti, ricordiamo che il server Twitch condizionale può ricevere un nostro flusso video da un solo indirizzo IP di origine, il che significa che deve essere sempre costante per noi, indipendentemente da quali provider sono caduti e quali funzionano. Per raggiungere questo obiettivo, abbiamo bisogno di un server di somma che termini tutte le nostre connessioni e le combini in una sola.

Vera somma dei canali Internet: OpenMPTCPRouter
Il server di somma aggrega tutti i canali in un tunnel. Tutte le connessioni provengono dall'indirizzo del server di somma

In questo schema vengono utilizzati tutti i provider e la disabilitazione di uno di essi non causerà una perdita di comunicazione con il server Twitch. In sostanza, si tratta di uno speciale tunnel VPN, sotto il quale si trovano diversi canali Internet contemporaneamente. Il compito principale di tale schema è ottenere il canale di comunicazione della massima qualità. Se uno dei fornitori inizia ad avere problemi, perdita di pacchetti, aumento dei ritardi, ciò non dovrebbe influire in alcun modo sulla qualità della comunicazione, poiché il carico verrà automaticamente distribuito su altri canali migliori disponibili.

Soluzioni commerciali

Questo problema preoccupa da tempo coloro che trasmettono eventi dal vivo e non hanno accesso a Internet di alta qualità. Per tali compiti esistono diverse soluzioni commerciali, ad esempio la società Teradek produce router così mostruosi in cui sono inseriti pacchetti di modem USB:

Vera somma dei canali Internet: OpenMPTCPRouter
Router per trasmissioni video con funzione di somma dei canali

Tali dispositivi solitamente hanno la capacità integrata di acquisire segnali video tramite HDMI o SDI. Insieme al router viene venduto un abbonamento al servizio di somma dei canali, nonché l'elaborazione del flusso video, la transcodifica e l'ulteriore ritrasmissione. Il prezzo di tali dispositivi parte da 2 dollari con un set di modem, più un abbonamento separato al servizio.

A volte sembra piuttosto spaventoso:

Vera somma dei canali Internet: OpenMPTCPRouter

Configurazione di OpenMPTCPRouter

protocollo MP-TCP (MultiPath TCP) è stato inventato per potersi connettere tramite più canali contemporaneamente. Ad esempio, il suo supporta iOS e può connettersi contemporaneamente ad un server remoto tramite WiFi e tramite rete cellulare. È importante comprendere che non si tratta di due connessioni TCP separate, ma piuttosto di una connessione stabilita su due canali contemporaneamente. Perché funzioni, anche il server remoto deve supportare MPTCP.

OpenMPTCPRouter è un progetto di router software open source che consente un vero riepilogo dei canali. Gli autori affermano che il progetto è in stato di versione alpha, ma può già essere utilizzato. Si compone di due parti: un server sommatore, che si trova su Internet e un router, al quale sono collegati diversi provider Internet e gli stessi dispositivi client: computer, telefoni. Il router personalizzato può essere un Raspberry Pi, alcuni router WiFi o un normale computer. Esistono assemblaggi già pronti per varie piattaforme, il che è molto conveniente.

Vera somma dei canali Internet: OpenMPTCPRouter
Come funziona OpenMPTCPRouter

Configurazione di un server di riepilogo

Il server di somma si trova su Internet e termina le connessioni da tutti i canali del router client in uno solo. L'indirizzo IP di questo server sarà l'indirizzo esterno quando si accede a Internet tramite OpenMPTCPRouter.

Per questa attività utilizzeremo un server VPS su Debian 10.

Requisiti per il server di somma:

  • MPTCP non funziona sulla virtualizzazione OpenVZ
  • Dovrebbe essere possibile installare il proprio kernel Linux

Il server viene distribuito eseguendo un comando. Lo script installerà un kernel con supporto mptcp e tutti i pacchetti necessari. Gli script di installazione sono disponibili per Ubuntu e Debian.

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

Il risultato di un'installazione server riuscita.

Vera somma dei canali Internet: OpenMPTCPRouter

Salviamo le password, ci serviranno per configurare il router client e riavviare. È importante tenere presente che dopo l'installazione, SSH sarà disponibile sulla porta 65222. Dopo il riavvio, dobbiamo assicurarci di aver avviato con il nuovo kernel

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

Vediamo la scritta mptcp accanto al numero di versione, il che significa che il kernel è stato installato correttamente.

Configurazione di un router client

Su sito del progetto Sono disponibili build già pronte per alcune piattaforme, come Raspberry Pi, Banana Pi, router Lynksys e macchine virtuali.
Questa parte di openmptcprouter è basata su OpenWRT, utilizzando LuCI come interfaccia, familiare a chiunque abbia mai incontrato OpenWRT. La distribuzione pesa circa 50MB!

Vera somma dei canali Internet: OpenMPTCPRouter

Come banco di prova utilizzerò un Raspberry Pi e diversi modem USB con diversi operatori: MTS e Megafon. Non penso di aver bisogno di dirti come scrivere un'immagine su una scheda SD.

Inizialmente, la porta Ethernet del Raspberry Pi è configurata come LAN con un indirizzo IP statico 192.168.100.1. Per evitare di armeggiare con i cavi sulla scrivania, ho collegato il Raspberry Pi a un access point WiFi e ho impostato l'adattatore WiFi del computer su un indirizzo statico 192.168.100.2. Il server DHCP non è abilitato per impostazione predefinita, quindi è necessario utilizzare indirizzi statici.

Ora puoi accedere all'interfaccia web 192.168.100.1

Quando accedi per la prima volta il sistema ti chiederà di impostare una password di root; SSH sarà disponibile con la stessa password.

Vera somma dei canali Internet: OpenMPTCPRouter
Nelle impostazioni LAN è possibile impostare la sottorete desiderata e abilitare il server DHCP.

Utilizzo modem definiti come interfacce Ethernet USB con un server DHCP separato, quindi è necessaria l'installazione pacchetti aggiuntivi. La procedura è identica alla configurazione dei modem nel normale OpenWRT, quindi non la tratterò qui.

Successivamente è necessario configurare le interfacce WAN. Inizialmente, il sistema ha creato due interfacce virtuali WAN1 e WAN2. Ad essi deve essere assegnato un dispositivo fisico, nel mio caso questi sono i nomi delle interfacce modem USB.

Per evitare confusione con i nomi delle interfacce, consiglio di visualizzare i messaggi dmesg durante la connessione tramite SSH.

Dato che i miei modem stessi fungono da router e hanno essi stessi un server DHCP, ho dovuto modificare le impostazioni dei loro intervalli di rete interni e disattivare il server DHCP, perché inizialmente entrambi i modem emettono indirizzi dalla stessa rete e questo causa un conflitto.

OpenMPTCPRouter richiede che gli indirizzi dell'interfaccia WAN siano statici, quindi creiamo sottoreti per i modem e le configuriamo nel menu sistema → openmptcprouter → impostazioni dell'interfaccia. Qui è inoltre necessario specificare l'indirizzo IP e la chiave del server ottenuti durante l'installazione del server di somma.

Vera somma dei canali Internet: OpenMPTCPRouter

Se la configurazione ha esito positivo, un'immagine simile dovrebbe apparire nella pagina di stato. Si può vedere che il router è riuscito a raggiungere il server di somma ed entrambi i canali funzionano normalmente.

Vera somma dei canali Internet: OpenMPTCPRouter

La modalità predefinita è shadowsocks + mptcp. Questo è un proxy che racchiude tutte le connessioni al suo interno. Inizialmente è configurato per elaborare solo TCP, ma è possibile abilitare anche UDP.

Vera somma dei canali Internet: OpenMPTCPRouter

Se non sono presenti errori nella pagina di stato, la configurazione può essere considerata completata.
Con alcuni provider, potrebbe verificarsi una situazione in cui il flag mptcp viene interrotto lungo il percorso del traffico, quindi verrà visualizzato il seguente errore:

Vera somma dei canali Internet: OpenMPTCPRouter

In questo caso è possibile utilizzare una modalità operativa diversa, senza utilizzare MPTCP, maggiori informazioni a riguardo qui.

conclusione

Il progetto OpenMPTCPRouter è molto interessante e importante, poiché è forse l'unica soluzione completa e aperta al problema della somma dei canali. Tutto il resto è strettamente chiuso e proprietario, o semplicemente moduli separati che una persona comune non può comprendere. Allo stato attuale dello sviluppo il progetto è ancora piuttosto grezzo, la documentazione è estremamente scarsa e molte cose semplicemente non sono descritte. Ma allo stesso tempo funziona ancora. Spero che continui a svilupparsi e otterremo router domestici in grado di combinare correttamente i canali fuori dagli schemi.

Vera somma dei canali Internet: OpenMPTCPRouter

Segui il nostro sviluppatore su Instagram

Vera somma dei canali Internet: OpenMPTCPRouter

Fonte: habr.com

Aggiungi un commento