Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

É possível combinar vários canais da Internet em um? Existem muitos equívocos e mitos em torno deste tópico; mesmo engenheiros de rede experientes muitas vezes não sabem que isso é possível. Na maioria dos casos, a agregação de links é erroneamente chamada de balanceamento no nível NAT ou failover. Mas a soma real permite lançar uma única conexão TCP simultaneamente em todos os canais da Internet, por exemplo, transmissão de vídeo para que se algum 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 quilobucks. O artigo descreve como configurar o pacote OpenMPTCPRouter gratuito e de código aberto e aborda mitos populares sobre soma de canais.

Mitos sobre soma de canais

Existem muitos roteadores domésticos que suportam a função Multi-WAN. Às vezes, os fabricantes chamam isso de soma de canais, o que não é inteiramente verdade. Muitos networkers acreditam que, além de LACP e soma no nível L2, não existe outra agregação de canal. Ouvi muitas vezes que isto é geralmente impossível por parte das pessoas que trabalham no sector das telecomunicações. Portanto, vamos tentar entender os mitos populares.

Balanceamento no nível da conexão IP

Esta é a forma mais acessível e popular de utilizar vários canais da Internet ao mesmo tempo. Para simplificar, vamos imaginar que você tenha três provedores de Internet, cada um fornecendo um endereço IP real de sua rede. Todos esses provedores estão conectados a um roteador que suporta a função Multi-WAN. Pode ser OpenWRT com o pacote mwan3, mikrotik, ubiquiti ou qualquer outro roteador doméstico, já que tal opção não é mais incomum.

Para simular a situação, vamos imaginar 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, conectando-se a um servidor remoto example.com Através de cada um dos provedores, o servidor remoto verá três clientes IP de origem independentes. O balanceamento permite dividir a carga entre canais e usar todos os três simultaneamente. Para simplificar, vamos imaginar que dividimos a carga igualmente entre todos os canais. Como resultado, quando um cliente abre um site com três imagens, ele baixa cada imagem por meio de um provedor separado. Do lado do site, parecem conexões de três IPs diferentes.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Ao balancear no nível da conexão, cada conexão TCP passa por um provedor separado.

Este modo de balanceamento geralmente causa problemas para os usuários. Por exemplo, muitos sites vinculam estritamente cookies e tokens ao endereço IP do cliente e, se ele mudar repentinamente, a solicitação será rejeitada ou o cliente será desconectado do site. Isto é frequentemente reproduzido em sistemas cliente-banco e outros sites com regras rígidas de sessão de usuário. Aqui está um exemplo ilustrativo simples: os arquivos de música em VK.com estão disponíveis apenas com uma chave de sessão válida, que está vinculada a um IP, e os clientes que usam esse balanceamento muitas vezes não reproduzem áudio porque a solicitação não passou pelo provedor ao qual a sessão está empatada.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Ao baixar torrents, o balanceamento do nível de conexão resume a largura de banda de todos os canais

Esse balanceamento permite obter o somatório da velocidade do canal da Internet ao usar múltiplas conexões. Por exemplo, se cada um dos três provedores tiver uma velocidade de 100 Megabits, ao baixar torrents obteremos 300 Megabits. Porque um torrent abre muitas conexões, que são distribuídas entre todos os provedores e, em última análise, utilizam todo o canal.

É importante entender que uma única conexão TCP sempre passará por apenas um provedor. Ou seja, se baixarmos 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.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Uma conexão sempre usará apenas um canal de Internet

Isto também se aplica a transmissões de vídeo. Se você estiver transmitindo streaming de vídeo para algum tipo de Twitch condicional, o equilíbrio no nível das conexões IP não fornecerá nenhum benefício específico, uma vez que o stream de vídeo será transmitido dentro de uma conexão IP. Nesse caso, se o provedor WAN 3 começar a ter problemas de comunicação, como perda de pacotes ou velocidade reduzida, você não poderá mudar instantaneamente para outro provedor. A transmissão terá que ser interrompida e reconectada.

Verdadeira soma de canais

A soma real de canais torna possível executar uma conexão com um Twitch condicional através de todos os provedores ao mesmo tempo, de forma que, se algum dos provedores falhar, a conexão não será interrompida. Este é um problema surpreendentemente difícil que ainda não possui uma solução ótima. Muitas pessoas nem sabem que isso é possível!

Das ilustrações anteriores, lembramos que o servidor Twitch condicional pode receber um fluxo de vídeo nosso de apenas um endereço IP de origem, o que significa que deve ser sempre constante para nós, independentemente de quais provedores caíram e quais estão funcionando. Para conseguir isso, precisamos de um servidor somador que encerrará todas as nossas conexões e as combinará em uma.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
O servidor somador agrega todos os canais em um túnel. Todas as conexões se originam do endereço do servidor somador

Neste esquema, todos os provedores são utilizados, e desabilitar qualquer um deles não causará perda de comunicação com o servidor Twitch. Essencialmente, este é um túnel VPN especial, sob o qual existem vários canais de Internet ao mesmo tempo. A principal tarefa de tal esquema é obter um canal de comunicação da mais alta qualidade. Se um dos provedores começar a ter problemas, perda de pacotes, aumento de atrasos, isso não deverá afetar em nada a qualidade da comunicação, pois a carga será automaticamente distribuída por outros canais melhores que estiverem disponíveis.

Soluções Comerciais

Esse problema há muito preocupa quem transmite eventos ao vivo e não tem acesso à Internet de alta qualidade. Para tais tarefas, existem várias soluções comerciais, por exemplo, a empresa Teradek fabrica roteadores monstruosos nos quais são inseridos pacotes de modems USB:

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Roteador para transmissões de vídeo com função de soma de canais

Esses dispositivos geralmente possuem a capacidade integrada de capturar sinais de vídeo via HDMI ou SDI. Junto com o roteador, é vendida uma assinatura do serviço de soma de canais, além de processar o stream de vídeo, transcodificá-lo e retransmiti-lo posteriormente. O preço desses dispositivos começa em US$ 2 mil com um conjunto de modems, mais uma assinatura separada do serviço.

Às vezes parece bastante assustador:

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Configurando o OpenMPTCPRouter

Protocolo MP-TCP (MultiPath TCP) foi inventado para poder conectar-se através de vários canais ao mesmo tempo. Por exemplo, seu suporta iOS e pode conectar-se simultaneamente a um servidor remoto via WiFi e através de uma rede celular. É importante compreender que estas não são duas conexões TCP separadas, mas sim uma conexão estabelecida em dois canais ao mesmo tempo. Para que isso funcione, o servidor remoto também deve suportar MPTCP.

OpenMPTCPRouter é um projeto de roteador de software de código aberto que permite o verdadeiro resumo do canal. Os autores afirmam que o projeto está em versão alfa, mas já pode ser utilizado. Consiste em duas partes - um servidor somador localizado na Internet e um roteador ao qual estão conectados vários provedores de Internet e os próprios dispositivos clientes: computadores, telefones. O roteador personalizado pode ser um Raspberry Pi, alguns roteadores WiFi ou um computador normal. Existem montagens prontas para diversas plataformas, o que é muito conveniente.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Como funciona o OpenMPTCPRouter

Configurando um servidor de resumo

O servidor somador está localizado na Internet e encerra conexões de todos os canais do roteador cliente em um. O endereço IP deste servidor será o endereço externo ao acessar a Internet via OpenMPTCPRouter.

Para esta tarefa usaremos um servidor VPS no Debian 10.

Requisitos para o servidor somador:

  • MPTCP não funciona na virtualização OpenVZ
  • Deve ser possível instalar seu próprio kernel Linux

O servidor é implementado executando um comando. O script instalará um kernel com suporte 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 de servidor bem-sucedida.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Salvamos as senhas, precisaremos delas para configurar o roteador do cliente e reinicializar. É importante ter em mente que após a instalação, o SSH estará disponível na porta 65222. Após a reinicialização, precisamos ter certeza de que inicializamos com o novo kernel

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

Vemos a inscrição mptcp próximo ao número da versão, o que significa que o kernel foi instalado corretamente.

Configurando um roteador cliente

На site do projeto compilações prontas estão disponíveis para algumas plataformas, como Raspberry Pi, Banana Pi, roteadores Lynksys e máquinas virtuais.
Esta parte do openmptcprouter é baseada em OpenWRT, usando LuCI como interface, familiar para qualquer pessoa que já tenha encontrado o OpenWRT. A distribuição pesa cerca de 50 MB!

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Como bancada de testes, utilizarei um Raspberry Pi e vários modems USB com diferentes operadoras: MTS e Megafon. Acho que não preciso lhe dizer como gravar uma imagem em um cartão SD.

Inicialmente, a porta Ethernet no Raspberry Pi é configurada como lan com um endereço IP estático 192.168.100.1. Para evitar mexer nos fios da mesa, conectei o Raspberry Pi a um ponto de acesso WiFi e configurei o adaptador WiFi do computador para um endereço estático 192.168.100.2. O servidor DHCP não está habilitado por padrão, portanto você deve usar endereços estáticos.

Agora você pode fazer login na interface da web 192.168.100.1

Ao fazer login pela primeira vez, o sistema solicitará que você defina uma senha de root; o SSH estará disponível com a mesma senha.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter
Nas configurações da LAN, você pode definir a sub-rede desejada e habilitar o servidor DHCP.

Eu uso modems definidos como interfaces USB Ethernet com um servidor DHCP separado, portanto, esta instalação necessária pacotes adicionais. O procedimento é idêntico à configuração de modems no OpenWRT normal, por isso não vou abordá-lo aqui.

Em seguida você precisa configurar as interfaces WAN. Inicialmente, o sistema criou duas interfaces virtuais WAN1 e WAN2. Eles precisam ser atribuídos a um dispositivo físico; no meu caso, esses são os nomes das interfaces do modem USB.

Para evitar confusão com nomes de interfaces, recomendo visualizar mensagens dmesg durante a conexão 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 desabilitar o servidor DHCP, pois inicialmente ambos os modems emitem endereços da mesma rede, e isso causa um conflito.

OpenMPTCPRouter requer que os endereços da interface WAN sejam estáticos, então criamos sub-redes para os modems e os configuramos no menu sistema → openmptcprouter → configurações de interface. Aqui você precisa especificar o endereço IP e a chave do servidor obtidos durante a instalação do servidor somador.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Se a configuração for bem-sucedida, uma imagem semelhante deverá aparecer na página de status. Pode-se observar que o roteador conseguiu acessar o servidor somador e ambos os canais estão funcionando normalmente.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

O modo padrão é shadowocks + mptcp. Este é um proxy que agrupa todas as conexões dentro de si. Ele é inicialmente configurado para processar apenas TCP, mas o UDP também pode ser habilitado.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Se não houver erros na página de status, a configuração poderá ser considerada concluída.
Com alguns provedores, pode surgir uma situação quando o sinalizador mptcp é cortado ao longo do caminho de tráfego, então o seguinte erro aparecerá:

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Neste caso, você pode usar um modo de operação diferente, sem usar MPTCP, mais sobre isso aqui.

Conclusão

O projeto OpenMPTCPRouter é muito interessante e importante, pois é talvez a única solução aberta e abrangente para o problema de soma de canais. Todo o resto é totalmente fechado e proprietário, ou simplesmente módulos separados que uma pessoa comum não consegue entender. No atual estágio de desenvolvimento, o projeto ainda é bastante rudimentar, a documentação é extremamente pobre, muitas coisas simplesmente não são descritas. Mas ao mesmo tempo ainda funciona. Espero que continue a se desenvolver e que obtenhamos roteadores domésticos que sejam capazes de combinar canais de maneira adequada e prontos para uso.

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Siga nosso desenvolvedor no Instagram

Verdadeiro somatório de canais da Internet - OpenMPTCPRouter

Fonte: habr.com

Adicionar um comentário