Introdução à arquitetura Spine Leaf e sua importância nos data centers

As tecnologias de virtualização e computação em nuvem vem tomando espaço nos Data Centers e alterando assim a sugestão do modelo tradicional do modelo rede de três camadas Core, Agregação e Acesso.

O modelo tradicional de 3 camadas é eficiente para o tráfego “Norte-Sul”, onde o tráfego percorre o caminho de dentro para fora do Data Center. Este tipo de tráfego é tipicamente utilizado em serviços web, como exemplo, podemos citar o tráfego norte-sul onde há grande volume no modelo de comunicação cliente remoto/servidor.

Esse tipo de arquitetura tradicional é normalmente construído para redundância e resiliência contra falhas em equipamentos ou cabos, organizando portas de bloqueio pelo protocolo Spanning-Tree (STP), a fim de evitar loops de rede.

A arquitetura Spine Leaf é uma maneira inteligente de organizar redes em data centers. Ela é ótima para ambientes que precisam de alto desempenho e baixa latência. As tendências da comunicação entre máquinas nos Data Centers exigem uma arquitetura que sustente as demandas para o tráfego “Leste-Oeste”, ou tráfego de servidor para servidor.

Dependo da configuração lógica do “antigo” modelo tradicional de 3 camadas, o tráfego poderia atravessar todas as camadas para chegar no host de destino entre máquinas no mesmo Data Center, podendo introduzir dessa maneira uma latência imprevisível ou mesmo falta de largura de banda nos uplinks.

A arquitetura leaf-spine é uma topologia de rede escalável e de alta performance, amplamente utilizada em data centers. Ela é composta por duas camadas principais: a camada leaf (folha), que consiste em switches de acesso conectados diretamente aos servidores ou dispositivos finais, e a camada spine (espinha), formada por switches de núcleo que interconectam todos os switches leaf. Cada switch leaf está conectado a todos os switches spine, criando uma malha completa que oferece múltiplos caminhos entre qualquer par de dispositivos na rede. Essa estrutura é projetada para evitar loops naturalmente, já que os switches leaf não se conectam diretamente entre si, nem os switches spine se interligam, eliminando a possibilidade de caminhos redundantes que possam causar loops.

Para gerenciar o encaminhamento de dados e garantir a prevenção de loops, a arquitetura leaf-spine utiliza protocolos de roteamento modernos, como BGP (Border Gateway Protocol) ou OSPF (Open Shortest Path First), em vez de protocolos tradicionais como o Spanning Tree Protocol (STP). Esses protocolos são capazes de calcular os melhores caminhos com base em métricas, evitando loops de forma eficiente. Além disso, a rede aproveita todos os links ativos por meio de técnicas como o Equal-Cost Multi-Path (ECMP), que distribui o tráfego de forma equilibrada entre os múltiplos caminhos disponíveis. Como todos os caminhos entre leaf e spine têm o mesmo custo (geralmente um número fixo de saltos), o ECMP permite que o tráfego seja balanceado, maximizando a utilização da largura de banda e evitando gargalos.

Essa combinação de prevenção de loops e utilização de todos os links ativos traz diversas vantagens, como alta disponibilidade, baixa latência e escalabilidade. A rede se torna mais resiliente a falhas, pois, se um link ou switch falhar, o tráfego pode ser redirecionado instantaneamente por outros caminhos. A latência é mantida baixa, já que o número de saltos entre qualquer par de dispositivos é sempre o mesmo (normalmente dois saltos: leaf → spine → leaf). Além disso, a arquitetura permite a adição de novos switches leaf ou spine sem interromper o funcionamento da rede, tornando-a ideal para ambientes de data center que exigem alta performance, escalabilidade e confiabilidade.

VxLAN e BGP EVPN

A arquitetura leaf-spine também pode ser aprimorada com a integração de tecnologias como VXLAN (Virtual Extensible LAN) e BGP EVPN (Ethernet VPN), que ampliam sua funcionalidade e eficiência em ambientes de data center modernos. O VXLAN permite a criação de redes overlay sobre a infraestrutura física, encapsulando tráfego de camada 2 em pacotes de camada 3, o que possibilita a extensão de redes locais virtuais (VLANs) além dos limites físicos tradicionais. Já o BGP EVPN atua como protocolo de controle, fornecendo uma maneira eficiente de gerenciar a distribuição de informações de rede e a conectividade entre os dispositivos.

A combinação de VXLAN com BGP EVPN traz benefícios significativos, como a simplificação da segmentação de rede, a melhoria da escalabilidade e a facilitação da migração de cargas de trabalho entre diferentes ambientes. Com o BGP EVPN, a rede pode gerenciar de forma dinâmica os endereços MAC e as informações de roteamento, reduzindo a complexidade operacional e permitindo uma melhor utilização dos recursos. Além disso, essa integração suporta cenários de multi-tenancy, onde múltiplos clientes ou aplicações podem compartilhar a mesma infraestrutura física de forma segura e isolada.

Ao adotar VXLAN com BGP EVPN em uma arquitetura leaf-spine, a rede se torna ainda mais robusta e adaptável, capaz de suportar demandas modernas como virtualização, cloud computing e mobilidade de workloads. Essa combinação não apenas mantém as vantagens já existentes da topologia leaf-spine, como prevenção de loops e uso eficiente de links, mas também adiciona camadas de flexibilidade e controle, tornando-a uma solução ideal para data centers de próxima geração.

Vantagens da arquitetura spine leaf em data centers modernos

A arquitetura Spine Leaf é uma opção interessante para data centers modernos, oferecendo várias vantagens. Aqui estão alguns pontos importantes a considerar:

  • Redução de latência: Isso significa que os dados são transferidos mais rapidamente, resultando em uma experiência mais ágil para os usuários.
  • Facilidade de expansão: Você pode adicionar novos dispositivos com facilidade, sem complicações, quando seu negócio cresce.
  • Gerenciamento de tráfego: Essa arquitetura ajuda a evitar sobrecarga nas redes, melhorando a eficiência.
  • Otimização de recursos: Garante que a largura de banda esteja disponível quando você realmente precisa dela.

Automação nas redes spine leaf

Quando falamos sobre automação e segurança em redes, especialmente na Arquitetura leaf-spine, é importante lembrar como essas ferramentas podem facilitar o dia a dia. Imagine ajustar diversas configurações em poucos cliques, ao invés de gastar horas na configuração de cada equipamento. Isso não só economiza tempo, mas também minimiza erros humanos. Além disso, a segurança é fundamental: com o aumento das ameaças digitais, ter camadas de proteção, como segmentação, firewalls e monitoramento constante, é essencial para proteger os dados. Criar zonas seguras dentro da rede ajuda na detecção de comportamentos estranhos.

Gerenciamento de oversubscription e configuração de switches

Gerenciar a oversubscription é fundamental na Arquitetura Spine Leaf. Basicamente, isso significa conectar mais dispositivos do que a largura de banda permite. Isso pode funcionar bem se for planejado corretamente. Aqui estão alguns pontos a considerar:

  • Relação de oversubscription: Defina uma relação adequada com base na sua carga de trabalho. Por exemplo, uma relação de 4:1 pode ser ideal para certos cenários.
  • Configuração dos links: Ajuste bem os links entre os switches spine e leaf para garantir eficiência e reduzir o risco de lentidão.
  • Monitoramento constante: Acompanhe o tráfego para detectar possíveis gargalos antes que eles se tornem problemas sérios.

Antes de projetar uma arquitetura leaf-spine, é importante saber quais são as necessidades futuras e atuais. Por exemplo, se você tem um número de 100 servidores e que poderá  escalar até 500, você precisa ter certeza de o Fabric poderá ser dimensionado para acomodar as necessidades futuras. Há duas variáveis importantes para calcular a sua escalabilidade máxima: o número de uplinks em um switch leaf e o número de portas nos switches spine. O número de uplinks em um switch leaf determina quantos Switches spine você terá no fabric.

Já os equipamentos de WAN  podem ser posicionados em um Switch leaf separado para esse fim, nomeado como border-leaf.

Até a próxima!

Alterando a distancia administrativa para os protocolos de Roteamento em Switches e Roteadores baseados no Comware

Há alguns posts atrás comentamos sobre a diferença da Distância Administrativa para as rotas aprendidas dinamicamente em Switches e Roteadores dos fabricantes Cisco e HP/H3C/3Com/Intelbras e a atenção que deve ser dada em ambientes com Protocolos de Roteamento que possuem Switches e Roteadores  de ambos fabricantes.

A Distância Administrativa possui apenas função local e não é compartilhada pelo protocolo de roteamento.

Como por exemplo, em um Roteador utilizando o OSPF (como IGP) e o BGP para aprender as “rotas externas”, se uma mesma rota fosse aprendida via OSPF e BGP, o comportamento para escolha do melhor caminho seria diferente em Rotadores Cisco (a distancia administrativa para o OSPF é 110 e o  eBGP é 20) e HPN ( o OSPF é 10 e o eBGP é 255). Lembrando que para prefixos iguais aprendido por diferentes protocolos o Roteador escolhe a rota com menor distância administrativa.

Uma coisa bacana do Comware é poder alterar o valor da distância administrativa  baseado no processo de Roteamento, por exemplo, se tivermos 2 processos OSPF rodando no Router/Switch é possível alterar a distancia administrativa em um dos processos sem afetar o outro ( muito útil quando se utiliza VRFs [ vpn-instance] em um mesmo roteador) .

Para redes que utilizam MP-BGP, tambem é possível alterar a distância administrativa no address-family do cliente.

Veja o exemplo abaixo para a tabela de roteamento Global (eBGP e iBGP com a distância adminstrativa em 255) e a tabela de roteamento da vpn-instance cliente-A (com o eBGP como 7 e o iBGP como 100).

<Router>display ip routing-table
Routing Tables: Public
Destinations : 18177     Routes : 18177

Destination/Mask    Proto  Pre  Cost         NextHop         Interface
0.0.0.0/0           BGP    255  0            10.180.226.197  GE3/1/6.100
192.168.9.0/24      BGP    255  0            10.180.226.197  GE3/1/6.100
192.168.10.0/24     BGP    255  0            10.180.226.197  GE3/1/6.100
192.168.11.0/24     BGP    255  0            10.180.226.197  GE3/1/6.100
<saída omitida>

<Router>display ip routing-table vpn-instance cliente-A
Routing Tables: cliente-A
Destinations : 1789      Routes : 1789
Destination/Mask    Proto  Pre  Cost         NextHop         Interface
1.1.1.1/32          BGP    7    0            192.168.176.217  GE9/1/7
2.2.2.0/29          BGP    7    0            192.168.176.217  GE9/1/7
192.168.80.0/30     BGP    100  0            192.168.229.193  NULL0
10.1.1.1/32         BGP    7    0            192.168.176.217  GE9/1/7
<saída omitida>

Para configurar a distancia administrativa dentro processo BGP ou dentro do processo “ipv4-family vpn-instance [nome da vrf]” no BGP use a sintaxe:

[Router-bgp]preference ?
INTEGER<1-255>  External preference
!Distancia administrativa para rotas aprendidas via eBGP

[Router-bgp]preference 7 ?
INTEGER<1-255>  Internal preference
!Distancia administrativa para rotas aprendidas via iBGP

[Router-bgp]preference 7 100 ?
INTEGER<1-255>  Local preference
!Distancia administrativa para rotas aprendidas via iBGP (locais)

[Router-bgp]preference 7 100 9 

Para o OSPF  utilize o commando preference para alterar a distância administrativa de rotas OSPF e OSPF ASE:

[Router-ospf-1]preference ?
INTEGER<1-255>  Preference value
ase             AS external link states

[Router-ospf-1]preference ase ?
INTEGER<1-255>  Preference value

Até logo!

Comware – Roteamento seletivo entre VRFs com export-map

A utilização de VRFs (Virtual Routing and Forwarding ou vpn-instance na linguagem HP) em Roteadores permite a criação de tabelas de roteamentos virtuais que trabalham de forma independente da tabela de roteamento “normal”, protegendo os processos de roteamento de cada cliente de forma individual.

Como nós explicamos anteriormente no post http://www.comutadores.com.br/roteamento-entre-vrfs-com-mp-bgp-em-roteadores-hp-h3c/ o rotemento entre VRFs (quando necessário) pode ser efetuado com a manipulação do  route-targets (RT) com o processo MP-BGP ativo no Roteador.

Há também cenários em que é necessário a troca seletiva de prefixos de rede entre as tabelas de roteamento virtuais, escolhendo quais redes devem ser exportardas ou não entre as VRFs. Lembrando que os valores vpn-target (route-target) trabalham com as Extended community do BGP para troca de prefixos entre VRFs,  é possível manipular o processo via route-policy (route-map), configurando a “comunidade estendida” para o prefixo e utilizando o comando export dentro da VRF.

Relembrando…

No diagrama abaixo há 2 VRFs já configuradas (com o processo MP-BGP ativo) e com seus respectivos prefixos.

Como os valores para import/export das VRFs não são os mesmos, não há roteamento entre as VRFs (cada VRF tem o seu roteamento isolado).

 comutadores.com.br
# Roteamento Seletivo entre VRFs (1º exemplo)
!
ip vpn-instance Client_A
route-distinguisher 65000:1
vpn-target 65000:1 export-extcommunity
vpn-target 65000:1 import-extcommunity
#
ip vpn-instance Client_B
route-distinguisher 65000:2
vpn-target 65000:2 export-extcommunity
vpn-target 65000:2 import-extcommunity
#
!
interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
bgp 65000
undo synchronization
#
ipv4-family vpn-instance Client_A
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
#
ipv4-family vpn-instance Client_B
network 172.16.1.0 255.255.255.0
network 172.16.2.0 255.255.255.0
network 172.16.3.0 255.255.255.0
#
#
ip route-static vpn-instance Client_A 192.168.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.3.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.3.0 255.255.255.0 NULL0
#
#
[R1]display ip routing-table vpn-instance Client_A
Routing Tables: Client_A
Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
192.168.1.0/24 Static 60 0 0.0.0.0 NULL0
192.168.2.0/24 Static 60 0 0.0.0.0 NULL0
192.168.3.0/24 Static 60 0 0.0.0.0 NULL0

[R1]display ip routing-table vpn-instance Client_B
Routing Tables: Client_B
Destinations : 5 Routes : 5

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.0/24 Static 60 0 0.0.0.0 NULL0
172.16.2.0/24 Static 60 0 0.0.0.0 NULL0
172.16.3.0/24 Static 60 0 0.0.0.0 NULL0

No exemplo abaixo, caso manipulassemos o import/export, teríamos as 2 tabelas de roteamento compartilhadas…


# comutadores.com.br
# Roteamento Seletivo entre VRFs (2º exemplo)
!
#
ip vpn-instance Client_A
route-distinguisher 65000:1
vpn-target 65000:1 export-extcommunity
vpn-target 65000:1 65000:2 import-extcommunity
#
ip vpn-instance Client_B
route-distinguisher 65000:2
vpn-target 65000:2 export-extcommunity
vpn-target 65000:2 65000:1 import-extcommunity
#
!
interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
bgp 65000
undo synchronization
#
ipv4-family vpn-instance Client_A
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
#
ipv4-family vpn-instance Client_B
network 172.16.1.0 255.255.255.0
network 172.16.2.0 255.255.255.0
network 172.16.3.0 255.255.255.0
#
#
ip route-static vpn-instance Client_A 192.168.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.3.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.3.0 255.255.255.0 NULL0
#
#
[R1]display ip routing-table vpn-instance Client_A
Routing Tables: Client_A
Destinations : 8 Routes : 8

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.0/24 BGP 130 0 0.0.0.0 NULL0
172.16.2.0/24 BGP 130 0 0.0.0.0 NULL0
172.16.3.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.1.0/24 Static 60 0 0.0.0.0 NULL0
192.168.2.0/24 Static 60 0 0.0.0.0 NULL0
192.168.3.0/24 Static 60 0 0.0.0.0 NULL0

[R1]display ip routing-table vpn-instance Client_B
Routing Tables: Client_B
Destinations : 8 Routes : 8

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.0/24 Static 60 0 0.0.0.0 NULL0
172.16.2.0/24 Static 60 0 0.0.0.0 NULL0
172.16.3.0/24 Static 60 0 0.0.0.0 NULL0
192.168.1.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.2.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.3.0/24 BGP 130 0 0.0.0.0 NULL0

Mas imaginem que a VRF Client_B, por questões de segurança no roteamento, não precissasse ensinar os prefixos 172.16.2.0/24 e 172.16.3.0/24 para a VRF Client_A mas somente o prefixo 172.16.1.0/24…. Nesse caso precisaríamos configurar o roteamento seletivo para que a VRF Client_A aprenda somente os prefixos necessários.

Ja a VRF Client_A exportará todos os prefixos sem filtros para a Client_B

Utilizaremos no exemplo o valor da Extended Community 65000:12 para exportar o prefixo 172.16.1.0/24.

ip ip-prefix Client_B_prefixo index 5 permit 172.16.1.0 24
! Selecionando o prefixo via prefix-list
!
route-policy Client_B_export permit node 10
if-match ip-prefix Client_B_prefixo
apply extcommunity rt 65000:12 additive
#
! Configurando a community estendida via Route-map
!
ip vpn-instance Client_B
export route-policy Client_B_export
quit
! Configurando o export seletivo de prefixo
end
!

#
ip ip-prefix Client_B index 5 permit 172.16.1.0 24
#
route-policy Client_B permit node 10
if-match ip-prefix Client_B
apply extcommunity rt 65000:12 additive
#

ip vpn-instance Client_A
route-distinguisher 65000:1
vpn-target 65000:1 export-extcommunity
vpn-target 65000:1 65000:12 import-extcommunity
#
ip vpn-instance Client_B
route-distinguisher 65000:2
export route-policy Client_B
vpn-target 65000:2 export-extcommunity
vpn-target 65000:2 65000:1 import-extcommunity
#
!
interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
bgp 65000
undo synchronization
#
ipv4-family vpn-instance Client_A
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
#
ipv4-family vpn-instance Client_B
network 172.16.1.0 255.255.255.0
network 172.16.2.0 255.255.255.0
network 172.16.3.0 255.255.255.0
#
#
ip route-static vpn-instance Client_A 192.168.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_A 192.168.3.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.1.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.2.0 255.255.255.0 NULL0
ip route-static vpn-instance Client_B 172.16.3.0 255.255.255.0 NULL0
#
#
[R1]disp ip routing-table vpn-instance Client_A
Routing Tables: Client_A
Destinations : 6 Routes : 6

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.1.0/24 Static 60 0 0.0.0.0 NULL0
192.168.2.0/24 Static 60 0 0.0.0.0 NULL0
192.168.3.0/24 Static 60 0 0.0.0.0 NULL0

[R1]display ip routing-table vpn-instance Client_B
Routing Tables: Client_B
Destinations : 8 Routes : 8

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.16.1.0/24 Static 60 0 0.0.0.0 NULL0
172.16.2.0/24 Static 60 0 0.0.0.0 NULL0
172.16.3.0/24 Static 60 0 0.0.0.0 NULL0
192.168.1.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.2.0/24 BGP 130 0 0.0.0.0 NULL0
192.168.3.0/24 BGP 130 0 0.0.0.0 NULL0

Obs: O mesmo controle pode ser feito para os prefixos de entrada, utilizando o “import map”

Dúvidas , deixe um comentário

Comware7: Configuração básica para BGP

As configurações do BGP via CLI para os equipamentos baseados no Comware 7 diferem um pouco em relação aos Switches e Roteadores baseados no Comware 5.

Basicamente para o Comware 7, uma vez dentro do processo BGP, basta habilitar o ‘peering’ com o roteador vizinho normalmente, mas a grande diferença está no anuncio de prefixos, pois uma vez que você necessite anunciar prefixos IPv4 ou IPv6, será necessário entrar no address-family, ativar o peering e aplicar o comando network, import (redistribute) etc.

Para ficar mais fácil, veja o exemplo abaixo o peering eBGP entre o Roteador R1 (AS 100) e R4 (AS 400):

<R1> display current-configuration configuration bgp
bgp 100
peer 10.0.0.2 as-number 400
#
 address-family ipv4 unicast
    network 192.168.1.0 255.255.255.0
    peer 10.0.0.2 enable 
   
<R4> display current-configuration configuration bgp
bgp 400
peer 10.0.0.1 as-number 100
#
 address-family ipv4 unicast
  network 192.168.2.0 255.255.255.0
  peer 10.0.0.1 enable  

O ponto mais importante dessa configuração é definir o IPv4 unicast address family e ativar o peer. Perceba que as redes deverão ser anunciadas dentro do address family correto.
Para validar o peering:

<R1>display bgp peer ipv4 unicast
BGP local router ID: 192.168.1.1
Local AS number: 100
Total number of peers: 1 Peers in established state: 1
* - Dynamically created peer
Peer     AS   MsgRcvd MsgSent OutQ PrefRcv Up/Down State
10.0.0.2 400   125     118     0    2       01:47:39 Established

IPv6
O mesmo vale se o peering e/ou prefixos for para endereços IPV6

<R4>display current-configuration configuration bgp
#
bgp 400
 peer 2001:DB8:14::1 as-number 100
 #
  address-family ipv6 unicast
   network 2001:DB8:4:: 64
   network 2001:DB8:44:: 64
   peer 2001:DB8:14::1 enable

Para validar o peering BGP com endereço IPv6:

 <R4>display bgp peer ipv6 unicast
 BGP local router ID: 192.168.44.4
 Local AS number: 400
 Total number of peers: 1          Peers in established state: 1
  * - Dynamically created peer
Peer             AS  MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

2001:DB8:14::1   100 60       60      0     2 00:47:40 Established

Para validar a tabela BGP basta preencher conforme o output abaixo: IPv4, IPv6, vpnv4, vpnv6, etc..

<R4>display bgp routing-table ?
  dampened   Display dampened BGP routes
  flap-info  Display BGP route flap information
  ipv4       Specify the IPv4 address Family
  ipv6       Specify the IPv6 address Family
  vpnv4      Specify the VPNv4 address family
  vpnv6      Specify the VPNv6 address family

Até logo.

Distância administrativa em equipamentos Comware

A tabela de roteamento dos Switches L3 e Roteadores, insere os destinos aprendidos manualmente (rotas estáticas ou redes diretamente conectadas) ou dinamicamente (aprendidos via protocolo de roteamento dinâmico).

 Para os casos de uma destino ser aprendido de diferentes formas, como por exemplo, o prefixo 192.168.1.0/24 ser aprendido via RIP e OSPF, o Roteador dará preferência para a rota com  Distância Administrativa de menor valor, no caso, o destino aprendido via OSPF terá preferência pelo valor 10 em detrimento do protocolo RIP com o valor 100 (nesse exemplo a rota eo gateway da rede que será inserido na tabela de roteamento será o aprendido via OSPF).Perceba que as rotas diretamente conectadas possuem a prioridade 0 (zero) e serão roteadas internamente pelo dispositivo.

 A Distância Administrativa possui apenas função local e não é compartilhada pelo protocolo de roteamento. Um detalhe importante a ser percebido é a diferença com os valores atribuídos para a distancia administrativa para Roteadores Cisco. Em todo caso para evitar problemas em cenários com mais de 1 protocolo de roteamento, altere a métrica  em um dos dois dispositivos.

Distância Adm. HP Serie ADistância Adm. Cisco
Directly Connected00
OSPF10110
IS-IS15115
STATIC601
RIP100120
OSPF ASE150110
OSPF NSSA150110
IBGP255200
EBGP25520
Unknown256255

Abraços a todos

Comware: Configurando o atributo MED em anúncios de prefixos BGP via route-policy

O propósito do atributo MED (ou MULTI_EXIT_DISC) é permitir que rotadores em um determinado AS digam a roteadores em outro AS a preferência de caminho para determinado prefixo. Apesar de conseguir manipular o “custo” de decisão do melhor caminho em outro AS, o MED não está no topo das escolhas de prioridades do protocolo, mas em diversos casos é muito eficiente.

Apesar de eu já ter utilizado o parâmetro algumas vezes, sempre me esqueço do comando correto e não consigo encontrar nos “Configure Guide” da vida em cenários com a aplicação do MED dentro de uma route policy. Uma das coisas mais legais de ter um blog é poder salvar assuntos que no futuro também facilitarão minha vida. 🙂

Voltando ao assunto… há a possibilidade de configurar o atributo MED direto no processo BGP (já para a versão7 do Comware a configuração deverá ser feita dentro do address-family).

Entretando, para configurar o MED dentro de uma route-policy o comando correto para atribuir um valor para o BGP Multi-Exit Discriminator é apply cost [valor MED].

route-policy SET_MED permit node 10
 if-match ip address prefix-list abc
 apply cost 1000

Seleção de rotas BGP antes do atributo MED

Segue abaixo a lista com a ordem para escolha da melhor rota na tabela BGP antes do atributo MED:

  1. Seleciona a rota com maior preferred_value (similar ao weight da Cisco).
  2. Seleciona a rota com maior Local_Pref.
  3. Seleciona a rota originada pelo roteador local.
  4. Seleciona a rota com menor AS-Path.
  5. Seleciona a rota baseado na prioridade de origem.
  6. Seleciona a rota com o menor MED.

Obs: Caso as opções de melhor preferência estejam com os mesmos atributos, o MED será a sexta opção para desempate.

Exemplo de Configuração

No cenário acima o roteador RB anuncia o prefixo 192.168.11.0/24 com o atributo MED com valor 10 e o roteador RC também anuncia o prefixo 192.168.11.0/24 mas com o atributo MED como 20.

Os Roteadores do AS 64500 comparam o menor MED e caso não exista melhor parâmetro para seleção, o atributo MED será escolhido para encaminhar o tráfego ao roteador (vence o menor valor MED).

Configuração do Roteador RB (com o Comware7)

#
ip prefix-list rede_192 index 5 permit 192.168.11.0 24
#
route-policy SET_MED_10 permit node 10
 if-match ip address prefix-list rede_192
 apply cost 10
#
bgp 64507
 peer 192.168.12.2 as-number 64500
#
 address-family ipv4 unicast
     peer 192.168.12.2 enable
     peer 192.168.12.2 route-policy SET_MED_10 export
#

Os roteadores do ASN 64500 terão em sua tabela BGP o seguinte cenário:

[RE]display bgp routing-table ipv4
 Total number of routes: 5
 BGP local router ID is 192.168.3.3
 Status codes: * - valid, > - best, d - dampened, h - history,
               s - suppressed, S - stale, i - internal, e – external
               Origin: i - IGP, e - EGP, ? - incomplete
     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn
* >i 192.168.1.0        192.168.12.1    0          100        0       64507i
*  e                    192.168.13.1    0                     0       64507
  >i 192.168.2.0        192.168.2.2     0          100        0       i
* >i 192.168.11.0       192.168.12.1    10         100        0       64507i
*  e                    192.168.34.1    20                    0       64507i

Veja que a rota “best” em nosso cenário é o prefixo com menor valor do atributo MED.

Até logo!

Referências

CCIE Routing and Switching Certification Guide, 4th Edition, Cisco Press, Wendell Odom, Rus Healy, Denise Donohue

Comware: Configurando o atributo Preferred_value (weight) em anúncios de prefixos BGP via route-policy

O atributo BGP Preferred_value permite ao roteador examinar internamente as atualizações BGP decidir a rota preferêncial.

O atributo não é encaminhado nas mensagens BGP e possui apenas função local em um roteador. Para aqueles que estão acostumados a configuração do protocolo BGP em roteadores Cisco com IOS, a funcionalidade é idêntica a configuração BGP weight, que é proprietária.

Preferred_value é eficiente quando há a necessidade de manipular um destino na saída de um AS, em meio múltiplas rotas.

Vence a rota com maior valor do Preferred_value e é possível configurar valores entre 0 e 65535.

Por padrão os prefixos aprendidos via eBGP possuem o valor como 0 e o Preferred_Value é o parâmetro preferencial para escolha da melhor rota.

Seleção de rotas BGP

Segue abaixo a lista com a ordem para escolha da melhor rota na tabela BGP:

  1. Seleciona a rota com maior preferred_value (similar ao weight da Cisco).
  2. Seleciona a rota com maior Local_Pref.
  3. Seleciona a rota originada pelo roteador local.
  4. Seleciona a rota com menor AS-Path.
  5. ….

Exemplo de Configuração

No exemplo abaixo iremos manipular o roteamento do AS 64507 para o prefixo 2001:db8:3::/64 anunciado pelo AS 64500, para o roteador RA escolher o caminho via RC (next-hop 2001:db8:13::3). O exemplo de configuração é o mesmo para os prefixos IPv4.

Script de configuração de um roteador MSR com o Comware 7

ipv6 prefix-list abc index 10 permit 2001:DB8:3:: 64
! Configurando a prefix-list da rede 2001:db8::3/64
#
route-policy SET_PV permit node 10
 if-match ipv6 address prefix-list abc
 apply preferred-value 200
! Criando a route-map para aplicar o Preferred_value 200 a prefix-list abc
#
bgp 64507
 peer 2001:DB8:12::2 as-number 64500
 peer 2001:DB8:13::3 as-number 64500
 #
 address-family ipv6 unicast
  network 2001:DB8:1:: 64
  peer 2001:DB8:12::2 enable
  peer 2001:DB8:13::3 enable
  peer 2001:DB8:13::3 route-policy SET_PV import
! Aplicando a route-policy SET_PV para os prefixos aprendidos pelo peer
#

Verificando a tabela de roteamento

[RA]display bgp routing-table ipv6
 Total number of routes: 3

 BGP local router ID is 192.168.11.1
 Status codes: * - valid, > - best, d - dampened, h - history,
               s - suppressed, S - stale, i - internal, e – external
               Origin: i - IGP, e - EGP, ? - incomplete
* >e Network : 2001:DB8:2::                            PrefixLen : 64
     NextHop : 2001:DB8:12::2                          LocPrf    :
     PrefVal : 0                                       OutLabel  : NULL
     MED     : 0
     Path/Ogn: 64500i
* >e Network : 2001:DB8:3::                             PrefixLen : 64
     NextHop : 2001:DB8:13::3                           LocPrf    :
     PrefVal : 200                                      OutLabel  : NULL
     MED     : 0                                     
     Path/Ogn: 64500i
*  e Network : 2001:DB8:3::                             PrefixLen : 64
     NextHop : 2001:DB8:12::2                           LocPrf    :
     PrefVal : 0                                        OutLabel  : NULL
     MED     :
     Path/Ogn: 64500i

Veja que a rota “best” para o prefixo 2001:db8:3::/64 está com o Preferred_value como 200.

Até logo

Comandos comparativos para Troubleshooting, Reset e Refresh do BGP : Comware 5 x IOS Cisco

Segue uma lista para rápida comparação de comandos para troubleshooting, reset e refresh para o processo BGP comparando os comandos entre equipamentos 3Com,H3C e HP baseados no Comware 5 e Cisco IOS.

Troubleshooting

Comware                                           IOS

display ip routing-table                          show ip route
display ip routing-table x.x.x.x                  show ip route x.x.x.x
display ip routing-table x.x.x.x longer-match     show ip route x.x.x.x longer-prefixes
display ip routing-table protocol bgp             show ip route bgp
display bgp routing-table                         show ip bgp
display bgp routing-table x.x.x.x                 show ip bgp x.x.x.x
display bgp routing peer                          show ip bgp summary
display bgp routing regular-expression AS-number  show ip bgp regexp AS-number

Reset e Refresh

Comware                                           IOS

reset bgp x.x.x.x            (modo user-view)     clear ip bgp x.x.x.x
refresh bgp x.x.x.x import   (modo user-view)     clear ip bgp x.x.x.x in
                                                  clear ip bgp x.x.x.x soft in

refresh bgp x.x.x.x export                        clear ip bgp x.x.x.x out
                                                  clear ip bgp x.x.x.x soft out

Comware 5: Configuração básica do BGP

O Protocolo BGP é considerado o mais robusto Protocolo de Roteamento para redes IP. Sua complexidade permite a conexão de múltiplos Sistemas Autônomos, chamados de AS (Autonomous systems), permitindo o Roteamento Dinâmico na Internet.

A Internet consiste em redes Comerciais conectadas por Provedores (ISP’s) como Telefônica,Embratel, Oi, CTBC e etc. Cada rede comercial ou Provedor deve ser identificado pelo Número do seu Sistema Autônomo (ASN) sobre controle do IANA .

A função primária de um sistema BGP é trocar informação de acesso à rede, inclusive Informações sobre a lista das trajetórias dos ASs, com outros sistemas BGP. Esta informação pode ser usada para construir uma rede de conectividade dos ASes livre de loops de roteamento.

O BGP é considerado um Protocolo de Vetor de Distância avançado utilizando-se de vetores para contagem de saltos para cada destino. A contagem de saltos para o BGP é baseada em AS.

Os Roteadores BGP são configurados com informações dos vizinhos para formação de uma conexão TCP confiável para transporte das informações de Roteamento e Sistemas Autônomos. Após estabelecimento da sessão, a conexão TCP continua aberta até a percepção de falha no link ou encerramento explicito da sessão via configuração. O estabelecimento de uma sessão indica a formação de um peer BGP.

O controle para administração de prefixos possibilita a utilização do BGP em diversos ambientes Corporativos fora da Internet. Há diversos cenários que necessitam de flexibilidade e controle que protocolos de Roteamento como OSPF e EIGRP não permitem.

O range de numero de AS 64512 a 65535 permitem a criação de AS’s para uso privado.

Abaixo exemplificaremos a configuração no Comware 5 entre Roteadores de diferentes AS.

Configuração
Switch Comware 5 pertencente ao AS 64512 (Matriz)
#
interface Vlan-interface2
ip address 172.31.1.1 255.255.255.0
#
interface Vlan-interface41
ip address 192.0.2.41 255.255.255.252
#
bgp 64512
!Ativando o BGP no Switch. O número do AS é 64512
network 172.31.1.0 255.255.255.0
! Anunciando o prefixo no BGP
undo synchronization
! Desabilitando a Sincronização (habilitado por default)
peer 192.0.2.42 as-number 64515
! identificando um vizinho BGP
peer 192.0.2.42 password simple senha
! Configurando a autenticação com a senha “senha”
#

Switch Comware 5 pertencente ao AS 64515 (Filial)
#
interface Vlan-interface42
ip address 192.0.2.42 255.255.255.252
#
interface Vlan-interface180
ip address 180.0.0.1 255.255.255.0
#
bgp 64512
network 180.0.0.0 255.255.255.0
undo synchronization
peer 192.0.2.42 as-number 64515
peer 192.0.2.42 password simple senha
#

Display

[Matriz]display ip routing-table
Routing Tables: Public
Destinations : 7 Routes : 7

Destination/Mask Proto Pre Cost NextHop Interface

127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
172.31.1.0/24 Direct 0 0 172.31.1.1 Vlan2
172.31.1.1/32 Direct 0 0 127.0.0.1 InLoop0
180.0.0.0/24 BGP 255 0 192.0.2.42 Vlan41
192.0.2.40/30 Direct 0 0 192.0.2.41 Vlan41
192.0.2.41/32 Direct 0 0 127.0.0.1 InLoop0

[Matriz] disp bgp routing-table
Total Number of Routes: 3
BGP Local router ID is 192.168.0.41
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 172.31.1.0/24 0.0.0.0 0 0 i
*> 180.0.0.0/24 192.0.2.42 0 0 64515i

[Matriz]display bgp peer
BGP local router ID : 192.168.0.42
Local AS number : 64512
Total number of peers : 1 Peers in established state : 1

Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
192.0.2.42 64515 9 10 0 1 00:07:02 Established

Até logo! 

Comware 7 – BGP Community

O atributo do BGP community é utilizado como para marcação para um determinado grupo de rotas. Provedores de Serviço utilizam essas marcações para aplicar políticas de roteamento específicas em suas redes, como por exemplo, alterando o Local Preference, MED, etc. O atributo simplifica a configuração das políticas de roteamento, gerenciamento e manutenção.

Os ISP’s podem também estabelecem um mapeamento de community com o cliente ou com outro provedor para que sejam aplicadas regras de roteamento.

O recebimento e envio de communities BGP em Roteadores HP necessitam da configuração explicita do comando advertise-community. No exemplo abaixo, segue a configuração de um peer BGP em um roteador com o Comware 7:

bgp 65500
 group AS65500 internal
 peer AS65500 connect-interface LoopBack1
 peer 192.168.2.2 group AS65500
 #
 address-family ipv4 unicast
  peer AS65500 enable
  peer AS65500 advertise-community
#

O atributo community é opcional e transitivo (optional transitive) de tamanho variável. O atributo consiste em um conjunto de 4 octetos ou um número de 32 bits que específica uma community. A representação de uma community BGP é geralmente feita no formato AA:NN onde o AA é o Autonomous System (AS) e o NN é o número da community.

Algumas communities tem significados pré-definidos como:

  • NO_EXPORT (0xFFFFFF01)
  • NO_ADVERTISE (0xFFFFFF02)
  • NO_EXPORT_SUBCONFED (0xFFFFFF03)

-A community  NO_EXPORT  diz ao roteador que ele deve  propagar os prefixos somente dentro de peers iBGP e que não deve propagar esses prefixos para roteadores pares eBGP.

-A community NO_EXPORT_SUBCONFED possui as mesmas funcionalidades do NO_EXPORT dentro de cenários com confederation.

-A community NO_ADVERTISE  diz ao roteador que ele não deve anunciar o prefixo para nenhum peer BGP.

Abaixo, deixamos um exemplo de configuração utilizando a community NO_EXPORT e o output:

R1	
#
 ip prefix-list COMM_iBGP index 10 permit 192.168.11.0 24
#
route-policy SET_COMM permit node 5
 if-match ip address prefix-list COMM_iBGP
 apply community no-export
#
route-policy SET_COMM permit node 65535
#
#
bgp 65500
 group AS65500 internal
 peer AS65500 connect-interface LoopBack1
 peer 192.168.2.2 group AS65500
 #
 address-family ipv4 unicast
  network 192.168.11.0 255.255.255.0
  network 192.168.111.0 255.255.255.0
  peer AS65500 enable
  peer AS65500 route-policy SET_COMM export
  peer AS65500 advertise-community
#

Verificando no Roteador R2 a marcação enviada por R1 para o prefixo 192.168.11.0/24 :

[R2]display bgp routing-table ipv4 192.168.11.0
 BGP local router ID: 192.168.22.2
 Local AS number: 65500
 Paths:   1 available, 1 best
 BGP routing table information of 192.168.11.0/24:
 From            : 192.168.1.1 (192.168.11.1)
 Rely nexthop    : 192.168.12.1
 Original nexthop: 192.168.1.1
 OutLabel        : NULL
 Community       : No-Export
 AS-path         : (null)
 Origin          : igp
 Attribute value : MED 0, localpref 100, pref-val 0
 State           : valid, internal, best
 IP precedence   : N/A
 QoS local ID    : N/A
 Traffic index   : N/A

Configurando os valores manualmente…

Um prefixo pode também participar de mais de uma community e com isso um roteador pode tomar uma ação em relação ao prefixo baseado em uma (algumas) ou todas as communities associadas ao prefixo. O roteador tem a opção de manter, adicionar ou modificar o atributo antes de passar para os outros roteadores.

#
 ip prefix-list COMM_eBGP index 10 permit 192.168.111.0 24
 ip prefix-list COMM_iBGP index 10 permit 192.168.11.0 24
#
route-policy SET_COMM permit node 5
 if-match ip address prefix-list COMM_iBGP
 apply community no-export
#
route-policy SET_COMM permit node 10
 if-match ip address prefix-list COMM_eBGP
 apply community 65500:90
#
route-policy SET_COMM permit node 65535
#
bgp 65500
 group AS65500 internal
 peer AS65500 connect-interface LoopBack1
 peer 192.168.2.2 group AS65500
 #
 address-family ipv4 unicast
  network 192.168.11.0 255.255.255.0
  network 192.168.111.0 255.255.255.0
  peer AS65500 enable
  peer AS65500 route-policy SET_COMM export
  peer AS65500 advertise-community
#

Verificando a marcação enviada por R1 do prefixo 192.168.111.0/24:

[R4] display bgp routing-table ipv4 192.168.111.0
 BGP local router ID: 192.168.44.4
 Local AS number: 65507
 Paths:   1 available, 1 best
 BGP routing table information of 192.168.111.0/24:
 From            : 192.168.24.2 (192.168.22.2)
 Rely nexthop    : 192.168.24.2
 Original nexthop: 192.168.24.2
 OutLabel        : NULL
 Community       : <65500:90>
 AS-path         : 65500
 Origin          : igp
 Attribute value : pref-val 0
 State           : valid, external, best
 IP precedence   : N/A
 QoS local ID    : N/A
 Traffic index   : N/A

Em resumo, as operadoras utilizam communities BGP para manipulação de grande quantidade de prefixos para fins de políticas de roteamento, blackhole, etc. Grandes corporações também as utilizam para identificação de rotas de empresas filiais, rotas aprendidas em fusões com outras empresas,  políticas de roteamento, redes de serviço e mais.

Referências

http://babarata.blogspot.com.br/2010/05/bgp-atributo-community.html

http://www.noction.com/blog/understanding_bgp_communities