# EIGRP

O EIGRP (Enhanced Interior Gateway Routing Protocol) é um protocolo avançado de roteamento por vetor da distância, desenvolvido primeiramente como um protocolo proprietário da Cisco. Funcionalidades básicas do EIGRP foram convertidas para padrão aberto em 2013, e foram especificadas na RFC 7868 em 2016.
O EIGRP é uma evolução do seu antecessor, o IGRP (Interior Gateway Routing Protocol). Usando o algoritmo de atualização por difusão, DUAL (Diffusing Update ALgorithm), o EIGRP apresenta características tanto de protocolos de roteamento do tipo vetor de distância (como o RIP) quanto de protocolos de roteamento do tipo estado de link (como o OSPF). Devido a isso, as vezes é chamado de um protocolo de roteamento "híbrido", porém essa definição não é verdadeira, visto que o EIGRP é somente um protocolo de roteamento de vetor de distância e não usa pacotes de estado de link como, por exemplo, o OSPF faz.
O EIGRP proporciona compatibilidade e interoperação direta com os roteadores IGRP. Um mecanismo de redistribuição automática permite que os roteadores IGRP sejam incorporados para EIGRP e vice-versa, possibilitando assim, adicionar gradualmente o EIGRP a uma rede IGRP existente. Como nos padrões métricos dos dois protocolos são diretamente traduzíveis, esses protocolos pode ser comparados facilmente, como se fossem rotas originadas em seus próprios Sistemas Autônomos (AS).

## Capacidade e atributos do EIGRP

As principais capacidades que diferenciam o EIGRP de outros protocolos de roteamento incluem a convergência rápida, o suporte à máscara de sub-rede de comprimento variável, o suporte a atualizações parciais e o suporte a vários protocolos da camada de rede. Um roteador rodando o protocolo EIGRP armazena todas as tabelas de roteamento dos seus vizinhos, de forma a permitir uma adaptação rápida para rotas alternativas. Se nenhuma rota apropriada existir, o EIGRP examinará seus vizinhos para descobrir uma rota alternativa. Essas consultas se propagam até uma rota alternativa ser encontrada.
Seu suporte a máscaras de sub-rede de comprimento variável permite que as rotas sejam resumidas automaticamente no limite de um número de rede. Além disso, o protocolo EIGRP não realiza atualizações periódicas. Ao contrário, ele somente envia atualizações parciais quando é modificada a medida referente a uma rota. A propagação das atualizações parciais é vinculada automaticamente, para que apenas os roteadores que precisam das informações sejam atualizados. Como resultado dessas duas capacidades, o EIGRP consome, de maneira significativa, menos largura de banda do que o protocolo IGRP.
O EIGRP inclui suporte para Appletalk, IP e Novell Netware. A implementação AppleTalk redistribui as rotas aprendidas a partir do protocolo de manutenção de tabela de roteamento (RTMP). A implementação IP redistribui as rotas aprendidas a partir do OSPF, do protocolo de informações de roteamento (RIP), IS-IS, protocolo de gateway externo (EGP) ou protocolo de gateway de borda (BGP). A implementação Novell redistribui as rotas aprendidas a partir do Novell RIP ou do protocolo de aviso de serviço (SAP).
As atualizações de roteamento são enviadas por multicast usando o endereço 224.0.0.10 e são disparadas por alterações da topologia.

## Processos e tecnologias subjacentes

Para proporcionar um desempenho superior de roteamento, o protocolo EIGRP emprega quatro tecnologias principais, combinadas para diferenciá-los de outras tecnologias de roteamento:
* Descoberta/recuperação de vizinho
* Protocolo de transporte confiável (RTP)
* Máquina de estados finitos DUAL
* Módulos dependentes do protocolo.
A tecnologia de descoberta/recuperação de vizinhos é utilizada pelos roteadores para aprender dinamicamente sobre outros roteadores existentes em duas redes diretamente anexadas. Os roteadores também precisam descobrir quando seus vizinhos não podem ser alcançados ou estão fora de operação. Para que esse processo seja realizado com uma baixa sobrecarga, pequenos pacotes HELLO são enviados periodicamente. Ao receber os pacotes HELLO de um roteador vizinho, o roteador considera que o vizinho está funcionando e os dois podem trocar informações de roteamento.
O protocolo de roteamento confiável (RTP) é responsável pela entrega garantida e ordenada de pacotes do protocolo EIGRP a todos vizinhos. O protocolo RTP suporta a transmissão mista de pacotes multicast ou unicast. Para maior eficácia, somente certos pacotes EIGRP são transmitidos de modo confiável. Em uma rede de multiacesso com capacidade multicast, como a Ethernet não é necessário enviar pacotes HELLO confiáveis a todos os vizinhos individualmente. Por esse motivo o EIGRP envia um único pacote HELLO multicast, contendo o indicador que informa aos destinatários que o pacote não precisa ser reconhecido. Outros tipos de pacotes, como as atualizações, indicam que o reconhecimento é necessário rapidamente, sempre que existem pacotes não reconhecidos pendentes, o que ajuda a assegurar que o tempo de convergência permanecerá baixo na presença de links de velocidade variável.
A máquina de estados finitos DUAL incorpora o processo por decisão para todos os cálculos de rotas, localizando todas as rotas anunciadas por todos os vizinhos. A máquina DUAL utiliza as informações referentes à distância para selecionar caminhos eficientes e sem loops , além de selecionar rotas a serem inseridas em uma tabela de roteamento baseada em sucessores viáveis. Um sucessor viável é um roteador vizinho, utilizando para o encaminhamento de pacotes, que representa um caminho de menor custo para um destino que, com certeza não faz parte de um loop de roteamento. Quando um vizinho altera a sua medida ou ocorre uma mudança de topologia, a máquina DUAL testa os seus sucessores viáveis. Se um sucessor for encontrado, a máquina DUAL o utilizará para evitar um novo cálculo (também conhecido como cálculo por difusão) para determinar um novo sucessor. Embora não faça um uso intenso do processador, o novo cálculo afeta o tempo de convergência e, portanto, é mais vantajoso evitar novos cálculos desnecessários.
Os módulos pendentes de protocolo são responsáveis pelas exigências específicas do protocolo da camada de rede. O EIGRP-IP por exemplo, é responsável por enviar e receber pacotes EIGRP que são encapsulados em IP. Da mesma forma, o EIGRP-IP também é responsável por analisar gramaticalmente os pacotes EIGRP e por informar à máquina DUAL as novas informações recebidas. O EIGRP-IP é responsável pela redistribuição das rotas aprendidas pelos demais protocolos de roteamento IP.