O protocolo TRILL

Felipe Ferreira, Luis Octávio Costa

Redes de Computadores II - 2018.2

Engenharia Eletrônica e de Computação

Departamento de Engenharia Eletrônica

1. Introdução

Com a interconexão de redes locais, problemas relacionados ao roteamento na camada de rede fora herdados pela camada de enlace e passaram a ser uma preocupação especial em grandes redes administrativas. O consolidado protocolo de Árvores Geradoras (Spanning Tree), desenvolvido por Radia Perlman, passou a apresentar falhas como instabilidade para grandes árvores (chances de loops temporários) e o bloqueio de enlaces passou a ser um empecilho no que diz respeito a otimização do uso de banda.

O protocolo TRILL (Transparent Interconnection of Lots of Links) foi desenvolvido não como um substituto ao Spanning Tree, mas como uma evolução. Ele otimiza o uso de banda ao eliminar a necessidade de bloquear enlaces (loops são evitados com um contador de saltos) e reduz o tamanho da árvores (geradoras ou não) utilizadas para multicast (figura 1.1).

Figura 1.1: Com o protocolo TRILL, otimiza-se o uso da banda da rede com a possibilidade de utilizar todos os enlaces. Figura retirada de comutadores.com.br/resumo-sobre-trill

2. Conceitos Básicos

O TRILL mapeia a topologia da rede através do protocolo de roteamento IS-IS. Além disso, introduz um novo dispositivo chamado RBridge, que nada mais é do que uma Bridge (comutador) com funcionalidades de roteadores. O TRILL também se vale das redes locais virtuais (VLANs) para segmentar os nós finais da rede e distribuir o roteamento entre RBridges.

2.1. Bridge

A Bridge é um recurso utilizado na camada de enlace para interligar duas ou mais redes locais, agregando-as de forma que funcionem como uma só rede. Uma Bridge possui uma tabela de encaminhamento, a qual preenche conforme aprende com o tráfego que passa por ela. Ao receber um quadro da fonte A pela interface 1, uma entrada é criada na tabela de encaminhamento. Se o destino B for desconhecido, a Bridge envia o quadro para todas as suas interfaces (tirando a interface 1) e aguarda a resposta de B para associá-lo a sua interface. Os próximos quadros com destino A ou B não seráo enviados para todas as interfaces, apenas para a correspondente ao destino.

Uma Bridge pode ser vista como um bom recurso para reduzir o domínio de colisão da rede. Na Bridge pode haver checagem de erros, com os quadros que sofreram colisão sendo descartados. A figura 2.1.1 ilustra a agregação de duas redes através de uma Bridge.

Figura 2.1.1 - Um quadro vindo do MAC A para o MAC B entrará pela interface 1 da Bridge e sairá apenas pela interface 2 caso a tabela esteja atualizada.

2.2. Rede Local Virtual

Uma rede local virtual (VLAN) é uma abstração da topologia da rede local que permite sua segmentação lógica. É possível colocar em uma mesma VLAN dispositivos como comutadores e hospedeiros (hosts) originalmente em redes físicas distintas. A rede virtual independe portanto da topologia física da rede sobre a qual é implementada. Uma única rede pode ter várias redes virtuais, cada uma com sua própia topologia virtual.

2.3. Protocolo IS-IS

O protocolo desenvolvido pela ISO, IS-IS (Intermediate system to Intermediate system), é bastante similiar e inclusive contemporâneo ao desenvolvido pelo IETF, OSPF (Open Shortest Path First). A similaride é tal que existe uma discussão recorrente sobre qual IGP é mais adequado para determinada rede administrativa. A popularidade do OSPF se dá pelo seu desenvolvimento em cima do protocolo IP, o que o torna facilmente configurável. O protocolo IS-IS opera na camada 2 da pilha OSI, podendo ser, por outro lado, auto-configurável. É compatível tanto com o protocolo IP como com o CLNP (Connectionless-mode Network Protocol). Sua escolha pelo grupo de trabalho que desenvolveu o TRILL se dá entre outras razões pelo seu cabeçalho de tamanho flexível, orientado por TLV (type-legth-value) sendo um protocolo de fácil extensão. Abaixo, lista-se as principais caracteristicas do IS-IS de forma breve, com o intuito de apenas familiarizar o leitor com o termo que aparecerá pelo restante do texto:

3. O Protocolo TRILL

Por ser um protocolo que mistura as camadas de rede e enlace, o TRILL geralmente é tido como um protocolo da camada 2.5, ou da fronteira entre as camadas 2 e 3. De novo, o TRILL utiliza técnicas de roteamento da camada de rede para criar uma nuvem de enlaces que é vista como uma sub-rede IP pelos nós da camada de Rede. Os nós desta nuvem possuem endereço plano, podendo um nó se movimentar dentro da nuvem e manter seu endereço IP. Também se vale de diversas características da camada de enlace, como nós auto-configuráveis e multicast nativo (sem protocolo adicional).

Qualquer rede que implementa Bridges tradicionais pode evoluir para uma nuvem TRILL. Neste cenário, as Bridges são substituidas gradualmente pelas Routing Bridges (RBridges), com nenhuma configuração extra e tendo como o ganho o uso otimizado da banda.

3.1. Evolução da Camada de Enlace

Na década de 70, a camada de enlace era de fato apenas um enlace conectando vizinhos. As comunicações tinham caráter mestre-escravo onde só um falava por vez. Com o tempo, surgiu o conceito de rede local (LAN) e o protocolo Ethernet se popularizou. Nele, a comunicação é de caráter par-a-par, baseada em CSMA/CD (Carrier Sense Multiple Access with Collision Detection), um método de comunicação em que se "ouve" antes de "falar" para evitar interrupção, e se "ouve" enquanto "fala" para saber se alguém começa a "falar" enquanto você "fala" e identificar interferência.

O crescimento das redes locais encorajou o desenvolvimento de aplicações diretamente em cima da camada de enlace (com a camada de redes sendo ignorada). Com aplicações locais sendo criadas, logo surgiu a necessidade de interconectar as redes locais. Surge então as Bridges. Porém, como este é um dispositivo com funções de encaminhamento de pacotes e a camada de enlace não foi originalmente projetada com esta funcionalidade, os problemas originais da camada de redes começaram a surgir na camada de enlace, como os loops, caminhos ótimos e multicaminhos.

Estes problemas de roteamento foram melhorados com o desenvolvimento do algoritmo Spanning Tree (árvore geradora). Nele, as Bridges interagem entre si e controem uma árvore com todos os nós da rede (há caminho entre qualquer par de nós da árvore), muito parecido com as interações entre roteadores na camada de rede. Porém, o Spanning Tree não oferece suporte à multicast, ou seja, as redes locais ainda ficam sujeitas a loops em situações de multicast (por não usar a árvore geradora).

Com as redes locais tomando proporções de milhares de nós, outra preocupação foi herdada da camada de rede para a de enlace: o uso da banda. O Spanning Tree bloqueia enlaces para formar a árvore geradora, mantedo-os em backup, enquanto que o TRILL permitea seleção de um caminho ótimo, além de permitir configurações da forma ativa.

3.2. As Routing Bridges

Dada a evolução das redes locais, o desenvolvimento de um dispositivo nativo da camada 2 que aprimorasse as funções das Bridges levou em conta os seguintes aspectos das mesmas:

E teve como objetivo manter as seguintes caracteristicas das Bridges tradicionais:

As RBridges rodam o protocolo IS-IS para mapear a rede local. Cada RBridge tem todo o mapa da rede. Encapsulam os quadros com dois cabeçalhos, um chamada de cabeçalho TRILL e outro chamado de cabeçalho de link local. O primeiro adiciona o campo de contagem de saltos, utilizado para prevenir os loops no lugar das árvores geradoras. Possui também um campo para indicar multicast. O segundo é usado para tornar as Rbridges transparentes para a nuvem de links (as Bridges interligadas), que recebem apenas um quadro comum da camada de enlace.

A partir do sistema de eleição de roteador desgnado do IS-IS, as Rbridges elegem um RBridge designada (DRB) que delega quais Rbridges iram encapsular e desencapsular os quadros. Ela também decide se será criado o pseudo-nó que simplica a topologia (como acontece no OSPF, para minimizar as mensagens LSP e reduzir as entradas nas tabelas de roteamento).

A figura 3.2.1 é uma representação visual útil de uma rede que implementa o TRILL. Nela, as RBridges servem como fronteira para a nuvem de links, que é composta pelas Bridges tradicionais. Quanto mais Rbridges a rede local possuir, menor será a nuvem de links, o que reduz as árvores geradas (pelo STP), estabilizando a rede e melhorando o uso da banda.

Figura 3.2.1 - Um rede que implementa o TRILL

Os quadros que passam pelas RBridges e são encapsulados pelo TRILL com dois cabeçalhos, o cabeçalho de link local e o cabeçalho TRILL. Vale dizer que o quadro original também contém um cabeçalho (de um protocolo da camada de enlace). O cabeçalho de link local varia de acordo com o protocolo usado no enlace. Como já dito, o quadro está sendo encapsulado por uma RBridge, que enxerga um conjunto de Bridges como um único enlace. O protocolo usado dentro da nuvem vista pela RBridge pode ser desde o Ethernet, como o PPP ou mesmo o IP. Ele contém as informações de origem e destino do quadro dentro da nuvem. Este cabeçalho será considerado como sendo do tipo Ethernet daqui em diante, pois o campo "vlan tag" será útil para explicitar algumas funcionalidades do TRILL. As RBridges de emissora e receptora indicada no cabeçalho de link local são RBridges intermediárias entre a Ingress RBridge e a Egress Rbridge (campos do cabeçalho TRILL).

Já no cabeçalho TRILL, tem-se campos que indicam multicast, um contador de saltos e as RBridges de origem (Ingress) e destino (Egress). Essas RBridges são diferentes das indicadas do cabeçalho de link local, uma vez que essas são as RBridges que encapsularam e desencapsularam o quadro respectivamente, recebendo e encaminhando o quadro original diretamente para os nós finais.

Figura 3.3.1 - Os dois cabeçalhos adicionados pelo TRILL. Vale notar que o cabeçalho exterior, ou cabeçalho de link local varia de acordo com o protocolo usado no enlace. Mais a frente esse cabeçalho será considerando como sendo Ethernet, pois o campo que indica a tag de VLANs tem particular importancia numa rede que implementa TRILL.

É importante observar que o campo "RBridge de entrada", no caso do unicast, possibilita que a RBridge aprenda com o tráfego de quadros, associando o apelido da RBridge ao endereço MAC presente no cabeçalho original do quadro. Também torna possível saber se a fonte é alcançavel pelo destino.

No caso de multicast, onde o destino é desconhecido, o campo "RBridge de entrada" permite RPF (verificação de caminho reverso). O campo "Rbridge de saída" seleciona a árvore onde será realizada o multicast. Mais detalhes sobre o multicast no TRILL serão dados mais adiante.

Para economizar espaço no cabeçalho TRILL, as RBridges são dinamicamente associadas a apelidos.

3.4. Funcionamento

Como na seção 2.3, o protocolo IS-IS possui um mecanismo de eleição de um roteador designado, ao qual os outros roteadores estabelecem adjacência. Este mecanismo é uma forma de reduzir o número de mensagens na rede ao simplificar sua topologia. No TRILL, esse mecanismo elege a DRB (Designated Routing Bridge), a qual tem como papel delegar o roteamento de quadros por RBridge de acordo com a VLAN. Em outras palavras, delega a Rbridge 1 o roteamento de quadros das VLANs x e y e a Rbridge 2 o roteamento da VLAN z.

Diferente do que acontece numa implementação "pura" do IS-IS, a DRB também tem o papél de discriminar se a topologia do enlace compartilhado será simplificada ou não. Em outras palavras, a DRB decide se será criado um "pseudo-nó" (o que acontece apenas se a DRB já foi vizinha de duas RBridges num mesmo intervalo de tempo desde que foi ligada, por convenção). A motivação para isso é simples, uma vez que nas redes com TRILL é bastante incomum um link possuir mais de duas Rbridges. A criação de um pseudo-nó criará um tráfego 50% maior neste caso, uma vez que duas RBridges em um enlace criariam informações de estado de enlace para as Rbridges e para o pseudo-nó.

Portanto, para o TRILL, as VLANs são um recurso importante para particionar o nós finais, no intuito de reduzir as árvores para multicast. As VLANs são usadas para que o DRB possa distribuir o tráfego entre as Rbridges, minimizando efeitos de concentração de tráfego.

Num cenário em que há mais de uma RBridge em um enlace encapsulando/desencapsulando quadros, existe a possibilidade de formação de um loop. Considerando que um quadro tem seu destino desconhecido pela RBridge. Este é encapsulado e enviado à nuvem de enlaces como multicast. A segunda Rbridge conectada ao mesmo enlace da Rbridge emissora receberá o pacote e o desencapsulará. Após fazê-lo, injeta o quadro de volta ao enlace que ao qual as duas Rbridges estão conectadas, fazendo com que a primeira RBridge receba o quadro original novamente e o encapsule, reiniciando o ciclo. A figura abaixo ilustra este exemplo.

Figura 3.4.1 - Neste exemplo, a fonte S envia um quadro para um destino não conhecido por RB1 (RBridge1 designada pela DRB para encapsular os quadros vindos da VLAN a qual S pertence). RB1 então encapsula esse quadro e indica que o mesmo será transmitido em multicast. Quando RB2 recebe o pacote, o desencapsula e injeta-o de volta no enlace.

Portanto, é mandatório que não haja mais de uma RBridge responsável por desencapsular/encapsular quadros de uma mesma VLAN compartilhando o mesmo enlace.

De forma geral, pode-se resumir o processo de convergência da rede nos seguintes passos:

  1. Roda-se o protocolo de estado de enlace (IS-IS)
  2. Cada Rbridge conhece seus vizinhos
  3. Constrói-se LSP (Link State Packet)
  4. Cada RBridge faz broadcast de seu LSP
  5. Todas as Rbridges montam uma tabelas com as informações dos LSP mais atuais
  6. As rotas e as árvores (para multicast) são calculadas

Para realizar multicast, além de indicar no campo adequado no cabeçalho TRILL, a Rbridge preenche o campo "Egress RBridge" com o apelido da árvore usada para Brodcast.

3.4.1 Multicast

Múltiplas árvores são usadas numa transmissão multicast para dividir a carga entre os enlaces. As árvores são identificadas por apelidos, da mesma forma que as RBridges são. Estas são calculadas a partir de uma RBridge raiz, com diferentes enlaces usados nos desempates das arvores mínimas. As RBridges possuem um nível de prioridade para ser uma raiz da árvore, que leva em conta critérios como localização na topologia. A RBridge com mior priorida anuncia as outras RBridges quantas e quais árvores devem ser geradas.

4. Utilização

4.1. Principais Utilizadores

O TRILL possui muitas aplicações e usos em data centers e empresas de telecomunicações. Seus principais utilizadores são fabricantes de Switches L2 como:

Além desses, há empresas que utilizam outros protocolos baseados no TRILL, como o Cisco FabricPath e o Brocade VCS.

4.2. Alternativas

Uma alternatica ao TRILL seria o SPB (Shortest Path Bridging).

As principais diferenças entre os dois são:

5. Considerações Finais

Conclui-se que em grandes redes locais, onde a redundância de links é considerável, um protocolo como o TRILL é uma solução robusta para otimização do uso de banda. O consolidado Spanning Tree apresenta problemas de instabilidade e desperdício de banda, evidenciando a necessidade de trazer funcionalidades consolidadas na camada de rede para a camada de enlace.

Apesar de auto-configurável, o protocolo exige cuidados como um único Appointed Forwarder por enlace, para evitar surgimento de loops. Com o crescimento de datacenters, já observa-se que o tamanho do campo "vlan tag" (12 bits) será insuficiente para quantidade de vlan necessárias. Estuda-se criar um campo semelhante a "vlan tag" no cabeçalho TRILL, que pode se extender para 24 bits.

Por fim, pode-se resumir e incentivar o uso do TRILL pela compatibilidade das RBridges com as Bridges tradicionais, fazendo com que a implementação seja gradual. O TRILL pode usar técnicas como menor caminho, multi-caminhos de menor custo e engenharia de tráfego; suporta VLANs e multicast que agregam recursos importantímos a rede de datacentes. Pode ainda calcular múltiplas árvores de caminho mínimo para dividir o tráfego entre enlaces, diminuindo o impacto da concentração de tráfego em uma RBridge.

6. Questões e Respostas

1 - A que camada da pilha de protocolos pertence o protocolo TRILL? Justifique.

Pertence a camada “2.5”, a fronteira entre as camada de enlace e de rede. Uma vez que um nó na camada de enlace vê uma nuvem TRILL como um único link, o protocolo deve estar abaixo da camada 3. Como delimita uma nuvem Ethernet tradicional como um roteador faria, está acima da camada 2.

2 - Qual a Motivação do TRILL

Otimizar o uso de banda na rede local, ao aproveitar os enlaces redundantes. Também otimiza o roteamento, introduzindo funcionalidades como caminho mínimo e múltiplos, além da contagem de saltos na camada de enlace.

3 - Quantas vezes (no mínimo) o quadro original é encapsulado pela RBridge? Qual o objetivo de cada cabeçalho?

O quadro original será encapsulado pelo menos duas vezes (uma com o cabeçalho TRILL e outra para o cabeçalho de link local). No cabeçalho TRILL são indicados as RBridges de entrada e saída da nuvem e é feita a contagem de saltos. A cabeçalho de link local torna o trill transparente para os dispositivos (bridges tradicionais) do enlace.

4 - Como o TRILL distribui o tráfego entre as RBridges?

Utiliza o campo “vlan tag” para delegar determinado tráfego para determinada RBridge. A DRB delega a cada RBridge algumas VLANs cujo tráfego será processado.

5 - Cite dois utilizadores do TRILL ou versões baseadas no protocolo.

Cisco (Fabric Path), Brocade VCS, HP, Huawei...

7. Referências