1 Atributo Community
A community é um atributo do BGP que pode ser usado como um flag para marcar um determinado grupo de rotas. Provedores de Serviço utilizam essas marcações para aplicar políticas de roteamento específicas em suas redes, por exemplo alterando o Local Preference, MED ou Weight.
Os provedores estabelecem um mapeamento de community com o cliente ou com outro provedor para que sejam aplicadas regras de roteamento.
A community é um grupo de prefixos que são compartilhados e podem ser configurados no atributo community do BGP. 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. Sendo que sua representação é feita AA:NN onde o AA é o Autonomous System (AS) e o NN é o número da community. Um prefixo pode participar de mais de uma community. Um roteador BGP pode tomar uma ação em relação à um prefixo baseado em uma, algumas ou todas as communities associadas ao prefixo. O roteador tem a opção de adicionar ou modificar o atributo antes de passar para os outros pares.
O atributo community não é utilizado por padrão, ou seja, deve ser configurado para que o roteador envie o atributo para o seu vizinho. Essa configuração é feita especificamente para cada vizinho. O roteador Cisco também não vem com a representação AA:NN habilitada por padrão, então deve-se habilita-la.
As communities são geralmente aplicadas, modificadas ou interpretadas utilizando route-maps.
1.1 Community List
A Community-list é como uma ACL, só que para communities. Essas listas são adicionadas com o comando “ip community-list ” onde o valor é representado por “AA:NN” ou por caracteres especiais como, por exemplo, “*” que representa tudo.
Essas community-list são aplicadas nos route-maps.
2 Cenário
2.1 Objetivo
Seis roteadores (R1, R2, R3, R4, R5 e R6) são conectados fisicamente R1-R2-R3-R4-R5-R6-R1 e devem ser configurados com roteamento BGP seguindo os criterios abaixo:
• Os roteadores R1, R2 e R3 devem possuir como IGP o OSPF na área 0 divulgando suas interfaces físicas;
• Os roteadores R4, R5 e R6 devem possuir como IGP o ISIS, Level-2 somente, na área 49.0456 divulgando suas interfaces físicas;
• O R1 (AS 123) deverá fazer conexão EBGP com o R4 (AS 456) e IBGP com o R2 (AS 123) divulgando somente a sua loopback (1.1.1.1) com a community 123:1;
• O R3 (AS 123) deverá fazer conexão EBGP com o R6 (AS 456) e IBGP com o R2 (AS 123) divulgando somente a sua loopback (3.3.3.3) com a community 123:3;
• O R4 e o R6 devem divulgar suas respectivas loopbacks no BGP, porém como no-export para que não sejam divulgadas fora do AS;
• O R5 deve divulgar a sua loopback (5.5.5.5) com a community 456:5 e essa community deve ser trocada nos roteadores de borda do AS 123 para a community 123:456;
• Os roteadores R2 e R5 deverão ser Router-reflectors dos seus respectivos AS;
2.2 Topologia
Figure-01: Topologia
2.3 IOS utilizados
• R1, R2, R3, R4, R5 e R6 – c7200-js-mz.123-7.T.bin
2.4 Configuração dos Roteadores
Em todos os roteadores, antes de configurar o roteamento BGP, deve-se configurar o IGP, ou seja, o roteamento interno para que os roteadores possam conhecer o endereço IP para fechar a conexão BGP e também para que a rota seja divulgada na tabela de roteamento BGP. Esse IGP pode ser OSPF, ISIS, estático, etc.
2.4.1 Configurações do OSPF
Para o OSPF a configuração é feita pelo comando “router ospf ” onde o “processo” é um numero do processo OSPF. Para adicionar interfaces usa-se o comando “network
area ”. Para o roteador fazer vizinhança OSPF é necessário que a rede da interface esteja no comando “network” e a interface não esteja configurada como “passive-interface”.
As interfaces de borda dos roteadores de borda são configuradas como “passive-interface” dentro das configurações de roteamento.
2.4.2 Configurações do ISIS
Para o ISIS é configurado pelo comando “router Isis” independente da área e level e não possui o número de área no comando principal como o OSPF. Na configuração de roteamento é adicionado o endereço NSAP, que é o endereço único do roteador no ISIS configurado pelo comando “net” com o formato “49.XXXX.0000.0000.000Y.00. O “49” indica ser uma área privada e o “Y” um valor diferente dos demais roteadores.
Por padrão, todos os roteadores são Level-1-2. Deve-se alterar o level do roteador dentro do “router Isis” ou nas interfaces.
As interfaces de borda dos roteadores de borda são configuradas como “passive-interface” dentro das configurações de roteamento.
2.4.3 Configurações do BGP
No BGP, agora que os roteadores conhecem os endreços IPs de seus vizinhos pelo IGP, configura-se-o em todos os roteadores pelo comando “router bgp ” onde o “AS” é o Autonomous System do provedor. Dentro da configuração de BGP adicionam-se os vizinhos estaticamente com o comando “neighbor remote-as ”, onde se o for igual ao AS do roteador a conexão é IBGP, se for diferente será EBGP.
Adiciona-se o IP da interface loopback como Router-ID pelo comando “router-id ”. Para divulgar rede no BGP é necessário que a rede exista na tabela de roteamento interna e ou adicionar o comando “network mask ” ou redistribuindo rotas para o BGP com o comando “redistribute ”.
Os roteadores dentro do mesmo AS não divulgarão as rotas IBGP entre eles, pois o BGP só divulga para o vizinho rotas aprendidas por EBGP, ou seja, rotas externas. Para isso ou faz-se o full-mesh de conexão BGP ou configuram-se os roteadores centrais como Router-reflectors adicionando os demais roteadores como clientes pelo comando “neighbor router-reflector-client”.
Para que o atributo community seja enviado nas atualizações de rotas, deve-se adicionar o comando “neighbor send-community both” para os vizinhos.
Para modificar o formato da community usado no roteador usa-se o comando “ip bgp-community new-format” que é de suma importância executa-lo no exame CCIE LAB.
Geralmente communities são aplicadas em uma rota usando route-map associado a uma lista de acesso. Na lista de acesso se “permite” uma determinada rede que é vinculada ao “match” do route-map. A community é adicionada no comando “set community ” onde o termo podem ser as communities padrão (no-export, no advertise,...) ou uma community específica AA:NN onde “AA” é o AS e o NN o valor da community.
A aplicação do route-map deve ser feita ou na configuração do vizinho com “neightbor mask route-map ”, ou na redistribuição de rota “redistribute route-map ” ou no comando na divulgação de rede “network mask route-map ”.
No route-map deve-se adicionar um último termo com “permit” para que o resto das rotas sejam aceitas ou “deny” para que nenhuma outra rota seja aceita.
Pode ser aplicado Local Preference, weight, outra community, MED, etc. baseado em uma community associada a um grupo de rotas. Ou seja, configura-se um route-map de entrada em um vizinho BGP para que todas as rotas que vierem com uma determinada community configurada seja aplicado o Local Preference 400, depois coloca-se uma regra de route-map permitindo que as outras rotas sejam recebidas normalmente.
2.5 Observações e Bugs
Observe que nos roteadores R1 e R3 são configurados as communities nas suas respectivas loopbacks que é divulgado para todos os vizinhos. Já nos R4 e R5 é usada a aplicação de Local Preference nas rotas baseado em community.
A community aplicada no R4 e R6 para suas respectivas loopbacks é a no-export que não envia para outro AS a rota.
Documentação:
2.6 Comandos Importantes de Verificação
R5#show ip route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
B 1.1.1.1 [200/0] via 36.36.36.3, 00:23:50
3.0.0.0/32 is subnetted, 1 subnets
B 3.3.3.3 [200/0] via 14.14.14.1, 00:14:56
4.0.0.0/32 is subnetted, 1 subnets
B 4.4.4.4 [200/0] via 45.45.45.4, 01:05:04
5.0.0.0/32 is subnetted, 1 subnets
C 5.5.5.5 is directly connected, Loopback0
36.0.0.0/24 is subnetted, 1 subnets
i L2 36.36.36.0 [115/20] via 56.56.56.6, FastEthernet1/0
6.0.0.0/32 is subnetted, 1 subnets
B 6.6.6.6 [200/0] via 56.56.56.6, 00:55:20
56.0.0.0/24 is subnetted, 1 subnets
C 56.56.56.0 is directly connected, FastEthernet1/0
14.0.0.0/24 is subnetted, 1 subnets
i L2 14.14.14.0 [115/10] via 45.45.45.4, FastEthernet0/0
45.0.0.0/24 is subnetted, 1 subnets
C 45.45.45.0 is directly connected, FastEthernet0/0
R4#show ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 23
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Advertised to update-groups:
2
123
14.14.14.1 from 14.14.14.1 (1.1.1.1)
Origin incomplete, metric 0, localpref 100, valid, external
Community: 123:1
123
36.36.36.3 (metric 30) from 45.45.45.5 (5.5.5.5)
Origin incomplete, metric 0, localpref 400, valid, internal, best
Community: 123:1
Originator: 6.6.6.6, Cluster list: 5.5.5.5
R6#sh ip bgp 3.3.3.3
BGP routing table entry for 3.3.3.3/32, version 26
Paths: (2 available, best #2, table Default-IP-Routing-Table)
Advertised to update-groups:
2
123
36.36.36.3 from 36.36.36.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, external
Community: 123:3
123
14.14.14.1 (metric 20) from 56.56.56.5 (5.5.5.5)
Origin IGP, metric 0, localpref 400, valid, internal, best
Community: 123:3
Originator: 4.4.4.4, Cluster list: 5.5.5.5
R2#show ip bgp 5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 27
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Advertised to update-groups:
1
456, (Received from a RR-client)
14.14.14.4 (metric 2) from 12.12.12.1 (1.1.1.1)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Community: 123:456
456, (Received from a RR-client)
36.36.36.6 (metric 2) from 23.23.23.3 (3.3.3.3)
Origin incomplete, metric 0, localpref 100, valid, internal
Community: 123:456
3 Configuração
3.1 R1
router ospf 1 network 12.12.12.1 0.0.0.0 area 0 network 14.14.14.1 0.0.0.0 area 0 ! router bgp 123 bgp router-id 1.1.1.1 redistribute connected route-map set-community_123:1 neighbor 12.12.12.2 remote-as 123 neighbor 12.12.12.2 send-community both neighbor 12.12.12.2 route-map set-community_123:456 out neighbor 14.14.14.4 remote-as 456 neighbor 14.14.14.4 send-community both ! ! ip bgp-community new-format ip community-list 456 permit 456:* ! ! ip access-list standard lo0 permit 1.1.1.1 ! ! route-map set-community_123:1 permit 10 match ip address lo0 set community 123:1 ! route-map set-community_123:1 deny 20 ! route-map set-community_123:456 permit 10 match community 456 set community 123:456 ! route-map set-community_123:456 permit 20 ! |
3.2 R2
! router ospf 1 network 12.12.12.2 0.0.0.0 area 0 network 23.23.23.2 0.0.0.0 area 0 ! router bgp 123 bgp router-id 2.2.2.2 neighbor 12.12.12.1 remote-as 123 neighbor 23.23.23.2 route-map set-community_123:456 out neighbor 36.36.36.6 remote-as 456 neighbor 36.36.36.6 send-community both ! ! ip community-list 456 permit 456:. ! ! ip access-list standard lo0 permit 3.3.3.3 ! ! route-map set-community_123:3 permit 10 match ip address lo0 set community 123:3 ! route-map set-community_123:3 deny 20 ! route-map set-community_123:456 permit 10 match community 456 set community 123:456 ! route-map set-community_123:456 permit 20 ! ip bgp-community new-format ! alteracao do formato de community para AA:NN ! |
3.3 R3
! router ospf 1 network 23.23.23.3 0.0.0.0 area 0 network 36.36.36.3 0.0.0.0 area 0 ! router bgp 123 bgp router-id 3.3.3.3 network 3.3.3.3 mask 255.255.255.255 route-map set-community_123:3 neighbor 23.23.23.2 remote-as 123 neighbor 23.23.23.2 send-community both neighbor 36.36.36.6 remote-as 456 neighbor 36.36.36.6 send-community both ! ip bgp-community new-format ! alteracao do formato de community para AA:NN ! ! ip access-list standard lo0 permit 3.3.3.3 ! ! route-map set-community_123:3 permit 10 match ip address lo0 set community 123:3 ! |
3.4 R4
! interface FastEthernet0/0 ip router ! ! router net 49.0456.0000.0000.0004.00 is-type level-2-only passive-interface FastEthernet1/0 ! router bgp 456 bgp router-id 4.4.4.4 network 4.4.4.4 mask 255.255.255.255 route-map no-export neighbor 14.14.14.1 remote-as 123 neighbor 14.14.14.1 send-community both neighbor 14.14.14.1 route-map 123:3_set_LP_400 in neighbor 45.45.45.5 remote-as 456 neighbor 45.45.45.5 send-community both ! ! ip bgp-community new-format ! alteracao do formato de community para AA:NN ! ip community-list 3 permit 123:3 ! lista para identificar a community 123:3 ! ! ip access-list standard lo0 permit 4.4.4.4 ! ! route-map no-export permit 10 match ip address lo0 set community no-export ! route-map 123:3_set_LP_400 permit 10 match community 3 set local-preference 400 ! route-map 123:3_set_LP_400 permit 20 ! |
3.5 R5
! interface FastEthernet0/0 ip router ! interface FastEthernet1/0 ip router ! router net 49.0456.0000.0000.0005.00 is-type level-2-only ! router bgp 456 bgp router-id 5.5.5.5 redistribute connected metric 99999 route-map set-communty_456:5 neighbor 45.45.45.4 remote-as 456 neighbor 45.45.45.4 route-reflector-client neighbor 45.45.45.4 send-community both neighbor 56.56.56.6 remote-as 456 neighbor 56.56.56.6 route-reflector-client neighbor 56.56.56.6 send-community both ! ! ip bgp-community new-format ! alteracao do formato de community para AA:NN ! ! ip access-list standard lo0 permit 5.5.5.5 ! ! route-map set-communty_456:5 permit 10 match ip address lo0 set community 456:5 ! |
3.6 R6
! interface FastEthernet0/0 ip router ! interface FastEthernet1/0 ip router ! router net 49.0456.0000.0000.0006.00 is-type level-2-only ! router bgp 456 bgp router-id 6.6.6.6 network 6.6.6.6 mask 255.255.255.255 route-map no-export neighbor 36.36.36.3 remote-as 123 neighbor 36.36.36.3 send-community both neighbor 36.36.36.3 route-map 123:3_set_LP_400 in neighbor 56.56.56.5 remote-as 456 neighbor 56.56.56.5 send-community both ! ! ip bgp-community new-format ! alteracao do formato de community para AA:NN ! ip community-list 1 permit 123:1 ! lista para identificar a community 123:1 ! ! ip access-list standard lo0 permit 6.6.6.6 ! ! route-map no-export permit 10 match ip address lo0 set community no-export ! route-map 123:3_set_LP_400 permit 10 match community 1 set local-preference 400 ! route-map 123:3_set_LP_400 permit 20 ! |
2 comentários:
Muito explicativo e objetivo, parabéns pelo Post!
Poderia me tirar uma duvida? Quando configuro R2 e R4 como RR, no R1 eu só recebo uma rota de saída, quando deveria receber 2, sendo uma delas como best.
Postar um comentário