È 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
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.
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.
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.
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.
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:
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:
Configurazione di OpenMPTCPRouter
protocollo
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.
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
Questa parte di openmptcprouter è basata su OpenWRT, utilizzando LuCI come interfaccia, familiare a chiunque abbia mai incontrato OpenWRT. La distribuzione pesa circa 50MB!
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
Quando accedi per la prima volta il sistema ti chiederà di impostare una password di root; SSH sarà disponibile con la stessa password.
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
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.
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.
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.
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:
In questo caso è possibile utilizzare una modalità operativa diversa, senza utilizzare MPTCP, maggiori informazioni a riguardo
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.
Segui il nostro sviluppatore su Instagram
Fonte: habr.com