É 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
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.
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.
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.
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.
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:
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:
Configurando o OpenMPTCPRouter
Protocolo
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.
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
На
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!
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
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.
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
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.
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.
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.
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á:
Neste caso, você pode usar um modo de operação diferente, sem usar MPTCP, mais sobre isso
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.
Siga nosso desenvolvedor no Instagram
Fonte: habr.com