
É possível combinar vários canais da Internet em um? Existem muitos conceitos errados e mitos sobre esse tópico, mesmo os engenheiros de rede com experiência geralmente não sabem que isso é possível. Na maioria dos casos, a agregação de link é chamada erroneamente de NAT ou failover. Mas o somatório real permite que você
execute uma única conexão TCP ao mesmo tempo em todos os canais da Internet , por exemplo, transmissão de vídeo, de modo que, quando qualquer um dos canais da Internet for interrompido, a transmissão não seja interrompida.
Existem soluções comerciais caras para transmissões de vídeo, mas esses dispositivos custam muitos kilobaxes. O artigo descreve a configuração do pacote aberto e gratuito OpenMPTCPRouter e os mitos populares sobre agregação de canais são analisados.
Mitos da soma dos canais
Existem muitos roteadores domésticos compatíveis com o recurso Multi-WAN. Às vezes, os fabricantes chamam esse somatório de canal, o que não é totalmente verdade. Muitos membros da rede acreditam que, além do
LACP e da soma no nível L2, não existe outra agregação de
links . Muitas vezes ouvi dizer que isso geralmente é impossível para as pessoas que trabalham em telecomunicações. Portanto, tentaremos entender os mitos populares.
Balanceamento de conexão IP
Essa é a maneira mais acessível e popular de utilizar vários canais da Internet ao mesmo tempo. Para simplificar, suponha que você tenha três provedores de Internet, cada um com um endereço IP real da sua rede. Todos esses provedores estão conectados a um roteador que suporta Multi-WAN. Pode ser OpenWRT com o pacote mwan3, mikrotik, ubiquiti ou qualquer outro roteador doméstico, pois agora essa opção não é incomum.
Para simular a situação, imagine que os provedores nos deram os seguintes endereços:
WAN1 — 11.11.11.11 WAN2 — 22.22.22.22 WAN2 — 33.33.33.33
Ou seja, ao conectar-se ao servidor
example.com remoto por meio de cada um dos provedores, o servidor remoto verá três clientes IP de origem independentes. O balanceamento permite compartilhar a carga nos canais e usá-los todos os três ao mesmo tempo. Por simplicidade, imagine que compartilhamos a carga entre todos os canais igualmente. Como resultado, quando um cliente abre um site no qual há três imagens convencionalmente, ele carrega cada imagem através de um provedor separado. No lado do site, parece conexões de três IPs diferentes.
Ao balancear no nível da conexão, cada conexão TCP passa por um provedor separado .
Esse modo de balanceamento geralmente causa problemas para os usuários. Por exemplo, muitos sites anexam firmemente cookies e tokens ao endereço IP do cliente e, se ele mudar repentinamente, a solicitação é rejeitada ou o cliente efetua logon no site. Isso geralmente é reproduzido em sistemas de banco de clientes e em outros sites com regras estritas de sessão do usuário. Aqui está um exemplo ilustrativo simples: os arquivos de música no VK.com estão disponíveis apenas com uma chave de sessão válida vinculada ao IP, e os clientes que usam esse balanceamento geralmente não reproduzem áudio, porque a solicitação não passou pelo provedor ao qual a sessão está vinculada.
Ao baixar torrents, o balanceamento no nível da conexão soma a largura de banda de todos os canaisEsse balanceamento permite obter a soma da velocidade do canal da Internet ao usar várias conexões. Por exemplo, se cada um dos três fornecedores tiver uma velocidade de 100 megabits, ao baixar torrents, obteremos 300 megabits. Porque o torrent abre muitas conexões que são distribuídas entre todos os provedores e, finalmente, utilizam todo o canal.
É importante entender que uma única conexão TCP sempre passará por apenas um provedor. Ou seja, se fizermos o download de um arquivo grande via HTTP, essa conexão será feita através de um dos provedores e, se a conexão com esse provedor for interrompida, o download também será interrompido.
Uma conexão sempre usará apenas um canal da InternetIsso é verdade para transmissões de vídeo. Se você estiver transmitindo vídeo para algum tipo de Twitch condicional, o balanceamento no nível das conexões IP não trará nenhum benefício específico, pois o fluxo de vídeo será transmitido na mesma conexão IP. Nesse caso, se o provedor WAN 3 começar a ter problemas de comunicação, por exemplo, perda de pacotes ou redução de velocidade, você não poderá mudar instantaneamente para outro provedor. A transmissão terá que ser interrompida e reconectada novamente.
Soma de canal verdadeiro
A soma real dos canais torna possível iniciar uma conexão com o Twitch condicional imediatamente através de todos os provedores, de forma que, se algum dos provedores for interrompido, a conexão não será interrompida. Essa é uma tarefa surpreendentemente difícil, que ainda não tem uma solução ideal. Muitos nem sabem que isso é possível!
Nas ilustrações anteriores, lembramos que o servidor Twitch condicional pode receber um fluxo de vídeo de nós a partir de apenas um endereço IP de origem, o que significa que sempre deve ser constante conosco, independentemente de quais provedores caíram e quais estão funcionando. Para conseguir isso, precisamos de um servidor de soma que encerre todas as nossas conexões e as combine em uma.
O servidor de soma agrega todos os canais em um túnel. Todas as conexões ocorrem a partir do endereço do servidor de somaNesse esquema, todos os provedores são usados e a desativação de nenhum deles causará uma interrupção na comunicação com o servidor Twitch. De fato, este é um túnel VPN especial, sob o capô do qual existem vários canais da Internet ao mesmo tempo. A principal tarefa desse esquema é obter o canal de comunicação da mais alta qualidade. Se os problemas iniciados em um dos provedores, a perda de pacotes, o aumento de atrasos, isso não afetará a qualidade da comunicação, uma vez que a carga será automaticamente distribuída por outros canais melhores disponíveis.
Soluções Comerciais
Esse problema há tempos incomoda aqueles que transmitem eventos ao vivo e não têm acesso à Internet de alta qualidade. Existem várias soluções comerciais para essas tarefas, por exemplo, a empresa Teradek fabrica roteadores tão monstruosos nos quais são inseridos pacotes de modems USB:
Roteador de transmissão de vídeo com função de soma de canaisNesses dispositivos, geralmente, a capacidade de capturar vídeo por HDMI ou SDI. Juntamente com o roteador, é vendida uma assinatura do serviço de soma de canais, além de processar o fluxo de vídeo, transcodificá-lo e retransmitir ainda mais. O preço desses dispositivos começa em US $ 2 mil com um conjunto de modems, além de uma assinatura separada para o serviço.
Às vezes parece bem assustador:

Configurar o OpenMPTCPRouter
O
protocolo MP-TCP (MultiPath TCP) foi inventado para a capacidade de conectar-se em vários canais ao mesmo tempo. Por exemplo, ele
suporta iOS e pode se conectar simultaneamente a um servidor remoto via Wi-Fi e por uma rede celular. É importante entender que essas não são duas conexões TCP separadas, mas apenas uma conexão estabelecida imediatamente em dois canais. Para que isso funcione, o servidor remoto também deve suportar MPTCP.
O OpenMPTCPRouter é um projeto de roteador de código aberto que permite adicionar verdadeiramente canais. Os autores declaram que o projeto está no status alfa, mas já pode ser usado. Consiste em duas partes - um servidor de soma, localizado na Internet e um roteador, ao qual vários provedores de Internet e dispositivos clientes se conectam: computadores, telefones. Como um roteador personalizado, Raspberry Pi, alguns roteadores WiFi ou um computador comum podem funcionar. Existem montagens prontas para várias plataformas, o que é muito conveniente.
Como o OpenMPTCPRouter funcionaConfigurando um servidor de soma
O servidor de soma está localizado na Internet e finaliza as conexões de todos os canais do roteador do cliente em um. O endereço IP deste servidor será o endereço externo ao acessar a Internet através do OpenMPTCPRouter.
Para esta tarefa, usaremos um servidor VPS no Debian 10.
Requisitos do servidor de resumo:
- MPTCP não funciona na virtualização OpenVZ
- Deve ser possível instalar seu próprio kernel Linux
O servidor é implantado executando um único comando. O script instalará o kernel com suporte ao mptcp e todos os pacotes necessários. Os scripts de instalação estão disponíveis para Ubuntu e Debian.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
O resultado de uma instalação bem-sucedida do servidor.

Salvamos as senhas, precisaremos delas para configurar o roteador do cliente e reiniciar. É importante ter em mente que, após a instalação, o SSH estará disponível na porta 65222. Após a reinicialização, você precisa se certificar de que inicializamos com o novo kernel
uname -a Linux test-server.local 4.19.67-mptcp
Vemos mptcp ao lado do número da versão, o que significa que o kernel foi instalado corretamente.
Configurando um roteador cliente
No
site do projeto , estão disponíveis montagens prontas para algumas plataformas, por exemplo, roteadores Raspberry Pi, Banana Pi, Lynksys e máquinas virtuais.
Esta parte do openmptcprouter é baseada no OpenWRT, usando o LuCI como interface, familiar a todos que já encontraram o OpenWRT. O kit de distribuição pesa cerca de 50 MB!

Como bancada de testes, usarei o Raspberry Pi e vários modems USB com diferentes operadores: MTS e Megaphone. Como escrever a imagem no cartão SD, eu acho, não precisa dizer.
Inicialmente, a porta Ethernet no Raspberry Pi é configurada como uma LAN com um endereço IP estático de
192.168.100.1 . Para não mexer nos fios da mesa, conectei o Raspberry Pi ao ponto de acesso WiFi e configurei o endereço estático
192.168.100.2 no adaptador WiFi do computador. O servidor DHCP não está ativado por padrão, portanto, você precisa usar endereços estáticos.
Agora você pode acessar a interface da web
192.168.100.1No primeiro login, o sistema solicitará que você defina a senha root, o SSH estará disponível com a mesma senha.

Nas configurações da LAN, você pode definir a sub-rede desejada e ativar o servidor DHCP.
Eu uso modems, que são definidos como interfaces Ethernet USB com um servidor DHCP separado, portanto, isso exigiu a instalação de
pacotes adicionais . O procedimento é idêntico ao da configuração de modems no OpenWRT usual, portanto, não o considerarei aqui.
Em seguida, você precisa configurar as interfaces WAN. Inicialmente, duas interfaces virtuais WAN1 e WAN2 foram criadas no sistema. Eles precisam receber um dispositivo físico; no meu caso, esses são os nomes das interfaces do modem USB.
Para não se confundir com os nomes das interfaces, aconselho assistir as mensagens do dmesg conectando-se via SSH.
Como meus próprios modems atuam como roteadores e possuem um servidor DHCP, tive que alterar as configurações de seus intervalos de rede internos e desativar o servidor DHCP, porque inicialmente os dois modems fornecem endereços da mesma rede e isso causa um conflito.
O OpenMPTCPRouter exige que os endereços das interfaces WAN sejam estáticos, por isso criamos modems para a sub-rede e o configuramos no sistema de menus → openmptcprouter → configurações da interface. Aqui você precisa especificar o endereço IP e a chave do servidor obtidos durante a instalação do servidor de soma.

Em caso de configuração bem-sucedida, uma imagem semelhante deve aparecer na página de status. Pode-se observar que o roteador conseguiu acessar o servidor de soma e os dois canais funcionam normalmente.

O modo padrão é shadowsocks + mptcp. Este é um proxy que envolve todas as conexões. Inicialmente, ele está configurado para lidar apenas com TCP, mas você pode habilitar o UDP.

Se não houver erros na página de status, a configuração poderá ser considerada completa.
Com alguns provedores, pode ocorrer uma situação quando o sinalizador mptcp é cortado na rota de tráfego, e ocorre um erro:

Nesse caso, você pode usar um modo operacional diferente, sem usar o MPTCP, mais sobre isso
aqui .
Conclusão
O projeto OpenMPTCPRouter é muito interessante e importante, pois talvez essa seja a única solução abrangente e aberta para o problema de soma de canais. Todo o resto é bem fechado e proprietário, ou simplesmente separa módulos com os quais uma pessoa comum não pode lidar. No estágio atual de desenvolvimento, o projeto ainda é bastante bruto, com documentação extremamente ruim, muitas coisas simplesmente não são descritas. Mas ele ainda trabalha. Espero que ele continue a se desenvolver e tenhamos roteadores domésticos que normalmente possam combinar os canais imediatamente.

Inscreva-se no nosso desenvolvedor do Instagram
