Balanceamento e Redundância de links

A explicação a seguir foi feita pelo Evaldo no grupo TcheLinux, como o assunto de Balanceamento de Redundância de links não e um assunto muito comum de se achar material pedi autorização para ele para divulgar no site, ele se colocou a disposição para tirar duvidas
do pessoal que ler e ficar com duvidas, abaixo está o e-mail dele.
email

O Principio:

– Um bloco de IPs tem dono. O dono pode ser você, mas normalmente não e. (Mais sobre como ser dono adiante).
– Um conceito importantíssimo, e basicamente o que mantem a internet em funcionamento, e o de Protocolos de Roteamento, responsáveis por informar aos roteadores a topologia da rede e suas mudanças (link inoperante, link instável*, link retornando a atividade, rede remota indisponível/incomunicável).
– Ha diversos tipos de protocolos de roteamento, mas me focarei em 2 para brevidade: OSPF e BGP.
– Para interligar diferentes organizações foi criado o conceito de Autonomous System (AS), que determina os limites de uma organização na internet. Para interligar diversos AS, utilizamos o protocolo BGP. Isso permite que as organizações determinem precisamente qual o trafego permitido em sua rede, como serao seus anuncios de rotas e quais anúncios devem ser aceitos.
– Existem entidades delegadas que são responsáveis por atribuir AS Numbers e delegar blocos de IP a “donos” responsáveis. Exemplos sao ARIN, RIPE, APNIC, AFNIC, e no nosso caso, LACNIC (Latin America and Caribbean Internet Address Registry).

Como a internet funciona, ou por que o INTER no Internet
– A internet e uma rede que interconecta múltiplos (milhares) de Autonomous Systems (AS), cada AS com sua rede ou conjunto de redes, atraves do protocolo de roteamento BGP. Por isso vem o nome INTER do
Internet.
– Um AS pode ser composto de múltiplas redes, como e o caso das telecoms, que possuem múltiplas redes locais, multiplas redes regionais e algumas redes denominadas “backbone”, que na verdade são redes responsáveis pela interconexão de outras redes no mesmo AS.
– Cada AS pode e deve definir o conjunto de politicas de acesso a suarede. Isso constitui a base para o chamado Inter-Domain Routing, ou roteamento entre domínios (nesse caso representados por AS). Com isso,
provedores podem fazer algo do tipo “Eu, provedor A, aceito rotear trafego entre os provedores B e C, mas nenhum trafego relativo ao provedor D, pois meu contrato com ele diz que eu sou cliente e nao parceiro dele”

Protocolos de Roteamento
– Sao responsaveis por divulgar informacoes de roteamento entre roteadores, e seu processo de gerenciamento em cada roteador e responsavel por promover mudancas nas tabelas de rota.
– OSPF e um protocolo de roteamento interior, Interior Gateway Protocol/IGP. OSPF e usado quando uma rede se conecta a outras do mesmo AS, por exemplo uma sala conectada a outras duas, ou um cliente com multiplos links para o mesmo provedor (no caso do cliente aceitar ser parte do AS do provedor, o que impede de ter links de outros provedores com rotas para essa rede). OSPF garante que o seu bloco de IPs seja acessível pelos diversos links, e sempre indica o “caminho mais curto”, a ser percorrido dentro do AS.
– BGP e um protocolo de roteamento exterior, Exterior Gateway Protocol/EGP. BGP e usado para interconectar AS diferentes, como o caso de uma organização que seja cliente de multiplos provedores. BGP garante que rotas para suas redes sejam anunciadas por todos os provedores conectados, e permite um controle de “politica de roteamento”, na qual sao definidas prioridades, preferencias e proibições de trafego por rotas conhecidas. BGP entao indica o “caminho preferido” a ser percorrido entre múltiplos AS.

Afinal, isso parece complicado, mas por que precisa ser assim?
– Possuindo um bloco de IPs (seu ou emprestado) e anunciando rota para este atraves de multiplos links te da redundancia de verdade, uma vez que a queda de um link apenas tira uma rota de operacao, mas O MESMO
IP PODE SER USADO PELO OUTRO LINK, então as conexões não são perdidas. ISSO NAO ACONTECE NO CASO ANTERIOR DESSA THREAD.
– Da mesma forma, o anuncio do mesmo bloco através de múltiplos links te da balanceamento de carga de verdade, pois voce pode ate mesmo receber pacotes de uma conexão por um link e responder pelo outro link
se for interessante. No caso do OSPF, a telecom também pode balancear os pacotes destinados a sua rede, e no caso de BGP, os provedores vão definir o caminho de acordo com suas preferencias individuais (como
AS), que eventualmente distribuirão o trafego. ISSO NAO ACONTECE NO CASO ANTERIOR DESSA THREAD, tornando impossível o balanceamento de entrada, e impossível o rebalanceamento de conexões entre os links.
– No caso anterior dessa thread, o autor indica o uso do tcp-outgoing-address no squid, o que causa EFETIVAMENTE A PERDA DA REDUNDANCIA, pois quando o link relacionado ao outgoing-address cai, o
trafego fica IMPOSSIBILITADO, a menos que se use gambiarras fazendo SNAT na chain OUTPUT.

E então, como conseguir implementar redundância de forma correta?
– Se voce pretende ter redundância e balanceamento de links com um único provedor, precisa de um ou mais roteadores (ou hosts com hardware apropriado) rodando um daemon de protocolo OSPF, interconectados ao mesmo provedor com um ou mais links que tem anuncios OSPF ativados.
– Se você pretende ter redundância e balanceamento com links de múltiplos provedores, vai precisar:
1. Registrar seu AS junto a LACNIC (lacnic.net)
2. Registrar seu bloco de IPs junto a LACNIC ou entao pedir permissão ao provedor para anunciar o bloco de IPs que lhe foi cedido atraves de um segundo provedor
4. Links com os provedores com direito a estabelecer sessao BGP e anunciar suas rotas
3. Um ou mais roteadores ou hosts rodando daemon BGP, configurados com suas preferencias e informando os AS(provedores) vizinhos.

Só como exemplo, segue uma configuração de BGP em um roteador cisco
(que e praticamente igual a configuração do GNU Zebra ou do Quagga)

! Declarar seu AS e desativar funcionalidades desnecessárias
autonomous-system 64512
router bgp 64512
no synchronization
no auto-summary
! Declarar as redes
network 10.4.0.0 mask 255.255.0.0
! declarar os provedores vizinhos
neighbor 172.16.45.3 remote-as 64828
neighbor 10.128.47.16 remote-as 65123
! declarar como as rotas serão anunciadas
aggregate-address 10.4.0.0 255.255.0.0 summary-only

Como podem ver, a configuração e muito mais simples, e faz muito mais sentido. Não precisa de programinhas rodando “ping”, pois os protocolos de roteamento foram feitos para gerenciar links automaticamente. Quando um link cai, as conexoes nao sao perdidas, e todos os IPs continuam funcionando.

Espero ter contribuído com conhecimento útil a comunidade, e fico a disposição para solucionar eventuais duvidas

Evaldo Gardenali

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *