BGP: Tabelas de roteamento
Antes de criar o Céu e a Terra, Deus criou o inferno para nele colocar pessoas.
como você, que fazem esse tipo de pergunta.
Santo Agostinho, em Confissões.
(versão teológica da pergunta “o que havia antes do Bib Bang?”).
Introdução
Em um artigo anterior, fiz referência às RIB e FIB de forma muito abstrata. Naquela oportunidade a Figura 1 foi exibida, como sendo a divisão definitiva das tabelas de roteamento de um roteador, com pouquíssimas explicações adicionais.
Nosso objetivo nesse arquivo é eliminar a abstração e identificar, definitivamente, a noção de Tabelas de Roteamento dos roteadores.
As tabelas de roteamento
A representação formal das tabelas de roteamento está definida na RFC4271, [1], que tornou obsoleta a clássica RFC1771. O modelo conceitual das tabelas de roteamento é idêntico nas duas RFCs. Portanto, não sofreu alterações. As informações de roteamento são guardadas em três tabelas denominadas Adj-RIBs-in, Loc-RIB, e Adj-RIBs-out. A Figura 2, a seguir, mostra as respectivas relações entre tais tabelas, de uma forma simplificada.
É preciso nesse ponto identificar o conteúdo de cada tabela, já que somente as transformações sobre elas estão caracterizadas pela Figura 2:
-
Adj-RIBs-in: Contém as informações de roteamento, ainda não processadas e aprendidas através de mensagens de UPDATES vindas de seus pares BGP, de mecanismos de comunicação de rotas de outros protocolos (OSPF, MPLS, RIP, IS-IS, etc.), e das rotas estáticas definidas no roteador em questão. O mais importante é o fato de que tais informações estão em estado bruto, ou em outras palavras, as informações foram, simplesmente, armazenadas.
-
Loc-RIB: A informação armazenada nessa tabela é aquela que está na tabela Adj-RIBs-in e que passou pelo chamado Processo de Decisão (parte do sistema operacional dos roteadores). Tal Processo de Decisão considera entre outras, as definições da política de roteamento definidas pelos administradores do equipamento, incluindo, por exemplo, os filtros de entrada em protocolos como o BGP.
-
Adj-RIBs-out: Essa é a tabela que contem as rotas que poderão ser anunciadas – no caso do BGP, via mensagens de UPDATE – aos pares vizinhos. Um outro mecanismo de decisão avalia a política de roteamento. É uma tabela que, de certa forma está em “estabo bruto”, apesar de bastante optimizada pois, filtros de saída devem ser aplicadas sobre ela para que haja mensagens de UPDATE indesejáveis.
Para efeitos de simplicidade didática, daqui em diante, nesse texto, somente iremos pensar no BGP. Os outros procololos, incluindo as rotas estáticas possuem tabelas específicas e que variam em implementação. Cada fabricante e/ou modelo de roteador implementa da maneira que desejar as três tabelas. A própria RFC4271 é clara no sentido de cada implementação pode variar o número de tabelas, embora não admita fugir das definições acima. Mas, sempre que for considerado importante faremos referência a um ou outro protocolo, especificamente, e/ou implementação de algum fabricante.
Seguindo em frente, vale lembrar que a implementação das tabelas de roteamento são operadas sob a funcionalidade de dois componentes importantes e que irão caracterizar as questões de eficiência nas tranformações sobre as tabelas e respectiva escalabilidade. Tais componentes recebem o nome de Plano de Controle (Control Plane) e Plano de Dados (Data Plane), que veremos a seguir.
Plano de Controle e Plano de Dados
A Figura 3, expõe os dois componentes e o respectivo relacionamento com as tabelas de roteamento.
Há inúmeras definições de Plano de Controle e Plano de Dados. Geralmente com características associadas aos respectivos fabricantes/modelos de roteadores. Antes de prosseguir, vamos alterar os nomes da primeira e última tabelas para nomes mais comumente usados. Vejam a Figura 4.
Isso mesmo: RIB e FIB. Retornamos à origem quando usamos de abstração, como mostra a Figura 1. Como nossa intenção é simplificar, fiquemos com os nomes mais usuais: RIB, de Route Information Base e FIB, de Foward Information Base. Vamos ainda, considerar as seguintes observações relacionadas com cada uma:
-
A RIB é a famosa tabela de roteamento, que conhecemos e sobre cujo tamanho e escalabilidade, estamos sempre preocupados (para onde ela vai, incluindo o IPv6?, [8]).
-
Por causa da FIB, algumas vezes o Plano de Dados é chamado de Plano de Encaminhamento (Foward Plane).
-
Cada fabricante pode agrupar as tabelas de roteamento em tantas quantas necessárias, desde que mantenha as funcionalidades das três.
-
Cada fabricante adota seu próprio esquema em relação aos dois Planos. Por exemplo, é fato conhecido de que o gargalo está no Plano de Controle. Primeiro em relação ao tamanho da RIB e segundo pelas transformações necessárias para emergir a FIB. Alguns fabricantes, em alguns de seus modelos, implementam o Plano de Controle em processadores diferentes e independentes do processador do Plano de Dados e outras funções dos roteadores. Um bom material para ajudar a avaliar os critérios de implementações está em [7].
-
Na grande maioria dos roteadores, cada protocolo possui sua própria RIB. Por exemplo, para MPLS a RIB é a LRIB. No BGP, entretanto, a RIB é a RIB …
-
Para mais detalhes sobre os Planos no Cisco, recorra a [3], inicialmente. Nos equipamentos da Juniper, comece por [6]. No Mikrotik, há uma razoável abordagem e uma ilustrativa figura, em [5].
-
Vale a pena ficar atento às preocupações apresentadas em [4] produzidas por um encontro da IANA sobre Roteamento e Endereçamento. Embora seja uma preocupação maior para fabricantes de roteadores e pessoal ligado a hardware, a exposição leva-nos a uma reflexão sobre as limitações, principalmente de natureza física. O texto se preocupa com a escalabilidade das tabelas de roteamento, em particular com a chegada do IPv6 (em [8]) e, as implicações que traz a convergência em BGP quando se pensa no envolvimento de aplicações específicas sobre circuitos integrados (ASIC), em [9] e [10].
Epílogo
De maneira alguma este texto esgota o assunto. Mas ele é um bom começo para entender Tabelas de roteamento e, por tabela, entender como funciona a marcação de pacotes e em que momento tal marcação deve ocorrer (sobre a RIB ou a FIB). Há algumas perguntas simples que, se respondidas, facilitaria os interessados em aprender mais, sobre a tecnologia de uso de alguns fabricantes usuais (Cisco, Juniper e Mikrotik):
-
Para qual Tabela vão as rotas estáticas e as rotas conectadas?
-
Como listo a RIB? E a FIB?
-
Como é a Loc-RIB, em cada um dos fabricantes/modelo que nos interessa?
-
Quando é o momento da marcação de pacotes? Em que cenário/topologia?
-
Ah! E os filtros? IPv4 e IPv6? O Cisco e Jupiter fazem implementações diferenciando as famílias de protocolos. O Mikrotik, também, mais assintosamente e simples. Como lidar com os filtros em IPv6 e IPv4? A melhor e mais clara referência sobre filtros nos dois protocolos são as propostas do Team-Cymru, em http://www.team-cymru.org/. Se não pensou sobre isso ainda, comece por ai.
Referências
-
RFC4271, A Border Gateway Protocol 4 (BGP-4) Y. Rekhter, T. Li, S. Hares [ January 2006 ] (TXT = 222702) (Obsoletes RFC1771) (Status: DRAFT STANDARD) (Stream: IETF, Area: rtg, WG: idr)
-
Wikipedia, Border Gateway Protocol. Disponível em: http://en.wikipedia.orgwiki/Border_ Gateway_Protocol. Acessado em: 27/02/2011.
- Justin Menga, CCNP Practical Studies: Layer 3 Switching. Cisco. Nov 26, 2003. Disponível em: http://www.ciscopress.com/articles/article.asp?p=102093. Acessado em: 27/02/2011.
-
RFC4984, Report from the IAB Workshop on Routing and Addressing D. Meyer, L. Zhang, K. Fall [ September 2007 ] (TXT = 96153) (Status: INFORMATIONAL) (Stream: IAB).
-
Mikrotik Manual:IP/Route. Acessado em: 27/02/2011.
-
John Scudder, Router Scaling Trends, Juniper Networks, February 26, 2007. Acessado em: 27/02/2011.
-
Miles Nordin, What’s the difference between an L3 switch and a router?. Acessado em: 27/02/2011.
-
Jason Schiller e Sven Maduschke, IPv6 Potential Routing Table Size. Acessado em: 27/02/2011.
-
ASIC basics tutorial. Acessado em: 27/02/2011.
-
Pablo Molinero-Fern, Technology trends in routers and switches. Acessado em: 27/02/2011.
Explicação show…parabéns