Bom pessoal, vou demonstrar aqui como criar uma topologia básica em cima de MPLS, BGP e OSPF emulando via GNS3, para começar vamos com um pouco de conceito sobre o que é MPLS e como ele trabalha.
MPLS ou Multi Protocol Label Switching é um protocolo de comutação de pacotes via label (rótulo) criado para viabilizar/melhorar as redes ATMs que na época demandavam muito dos roteadores no processo de montagem e remontagem dos pacotes, na verdade o MPLS se utiliza do rótulo (4bytes) para identificar uma FEC-Fowarding Equivalent Class (grupo de pacotes IPs enviados com o mesmo padrão, destino ou priorização) algo semelhante ao que o Frame-relay faz com os DLCIs, pensando assim, com a utilização do MPLS o roteador/switch não precisa mais ler o cabeçalho IP inteiro para encaminhar o pacote, basta ler o label e encaminhar para o label destino (utiliza algumas tabelas para encaminhar o pacote como a LIB-Label Information Base, FIB-Forwarding Information Base e a LFIB-Label Forwarding Information Base) tornando a comunicação muito mais rápida e utilizando menos recursos.
Após essa breve explicação, já podemos começar a brincar com o protocolo, como pode ser visto na topologia criada, configurei algumas redes para servir como backbone (10.10.10.0/24,10.10.20.0/24, 192.168.0.0/24 e 192.168.10.0/24) e as redes 128.1.0.0/16 e 10.6.1.0/24 como redes de cada localidade.
Além disso configurei a loopback 0 de cada roteador com o seu respectivo número (R1 = 1.1.1.1/24, R2 = 2.2.2.2/24 etc);
Vamos as configurações do backbone:
Primeiro habilite o CEF (Cisco Express Fowarding) e o protocolo MPLS nos roteadores com o comando:
R1 (config)#ip cef
R1 (config)#mpls label protocol ldp
Aproveite e habilite as interfaces para trafegar mpls também:
R1(config-if)#mpls ip
Outro ponto importante no nosso lab é a escolha do protocolo de roteamento interno (escolhi o OSPF) mas pode ser feito com qualquer um contanto que os nós tenham conectividade (cuidado com o split-horizon dos protocolos de distance vector).
R1 (config)#router ospf 1
R1 (config-router)# network 0.0.0.0 255.255.255.255 area 0
Obs. coloquei a rede 0.0.0.0 com mascara cheia para que todas as interfaces sejam divulgadas no OSPF interno (inclusive a loopback).
Para verificar se o trafego MPLS já está rodando entre os roteadores, utilize:
R1#sh mpls forwarding-table (verifica a tabela de encaminhamento de label)
R1#sh mpls ldp bindings (verifica o label em cada salto)
R1#sh mpls interfaces
R1#sh mpls ldp neighbor (verifica as conexão ldp com o seu neighbor)
Agora precisamos falar um pouco de VRF (Virtual Routing and Forwarding) que nada mais é que a virtualização da tabela de roteamento (permite diversas instâncias sem gerar overlaping) ou seja, permite que uma mesma rede possa estar em 2 ou mais tabelas de roteamento diferentes (a grosso modo), segue o exemplo que fiz de um provedor com 4 clientes:
O provedor tem 4 tabelas de roteamento para a mesma rede, porém envia dados baseado na VRF.
Bom nesse lab que estamos criando, vou utilizar a VRF de nome diego e o AS (autonomous system) 100.
Nos roteadores R1 e R4 (os 2 nas bordas) configure:
R1(config)#ip vrf diego
R1(config-vrf)#rd 1:100
R1(config-vrf)#route-target export 1:100
R1(config-vrf)#route-target import 1:100
O rd é o route distinguisher (é localmente significante, formato de ASN:nn ou IP:nn + Target VPN)
O route-target é o que permite a rota ser importada ou exportada para outras VRFs e os comandos import e export são mais utilizados em VRFs compartilhadas (um pouco mais avançado), podem ser substituidos por:
R1(config-vrf)#route-target both 1:100
Repita o processo no R4:
R4(config)#ip vrf diego
R4(config-vrf)#rd 1:100
R4(config-vrf)#route-target export 1:100
R4(config-vrf)#route-target import 1:100
Para verificar se as configurações estão corretas, utilize os comandos:
R4#sh ip vrf diego
R4#sh ip vrf brief
R4#sh ip vrf detail
R4#sh ip vrf interfaces
Agora vamos configurar o BGP entre as duas pontas, não vou explicar muito como funciona o BGP (Border Gateway Protocol) pois o post ficaria muito extenso apenas que ele é um protocolo de vetor de path (caminho) e que faz toda a comunicação da internet possível e é muito utilizado nos provedores e algumas empresas ASNs, para mais informações procurem no próprio blog alguns materiais.
No nosso lab vou utlizar o iBGP de AS número 100:
R1
R1(config)# router bgp 100 (habilitei o protocolo com o AS 100)
R1(config-router)# neighbor 4.4.4.4 remote-as 100 (habilitei a vizinhança com o AS100 em iBGP atraves do ip 4.4.4.4)
R1(config-router)# neighbor 4.4.4.4 update-source Loopback1 (faz com que a loopback seja utilizada para troca de updates)
!
R1(config-router)# address-family vpnv4 (comandos para ativar o address-family da VPN)
R1(config-router)# neighbor 4.4.4.4 activate
R1(config-router)# neighbor 4.4.4.4 send-community both
R1(config-router)# exit-address-family
!
R1(config-router)# address-family ipv4 vrf diego (redistribuição das rotas)
R1(config-router)#redistribute connected
R1(config-router)# redistribute ospf 100 vrf diego
R1(config-router)# exit-address-family
!
R1(config)# router ospf 100 vrf diego (configurações do OSPF na VRF, obs. nem todos são necessárias)
R1(config-router)# redistribute bgp 100 subnets
R1(config-router)# network 10.6.1.0 0.0.0.255 area 0
R1(config-router)# network 128.1.0.0 0.0.255.255 area 0
R4
!
R4(config)#router bgp 100
R4(config-router)# neighbor 1.1.1.1 remote-as 100
R4(config-router)# neighbor 1.1.1.1 update-source Loopback0
!
R4(config-router)# address-family vpnv4
R4(config-router)# neighbor 1.1.1.1 activate
R4(config-router)# neighbor 1.1.1.1 send-community both
R4(config-router)# exit-address-family
!
R4(config-router)# address-family ipv4 vrf diego
R4(config-router)# redistribute connected
R4(config-router)# redistribute ospf 100 vrf diego
R4(config-router)# exit-address-family
!
R4(config-router)# router ospf 100 vrf diego
R4(config-router)# redistribute bgp 100 subnets
R4(config-router)# network 10.6.1.0 0.0.0.255 area 0
R4(config-router)# network 128.1.0.0 0.0.255.255 area 0
Agora basta configurar o ospf entre os Switches :
IOU2#router ospf 100
IOU2(config-router)# network 128.1.0.0 0.0.255.255 area 0
IOU1#router ospf 100
IOU1(config-router)# network 128.1.0.0 0.0.255.255 area 0
O que achei estranho e não sei se foi por motivo de estar no IOU ou no GNS é que não consigo enxergar diretamente as redes que estão conectadas aos PEs (128.1.0.0 e 10.6.1.0), porém para verificar que o OSPF está rolando, criei uma interface loopback e uma segunda interface de rede em ambos os lados, e propaguei via OSPF para o meu vizinho (neighbor):
IOU2#interface Loopback0
IOU2(config-if)# ip address 128.10.0.100 255.255.0.0
IOU2#interface Ethernet0/1
IOU2(config-if)#no switchport
IOU2(config-if)#ip address 10.10.150.1 255.255.255.0
IOU2(config)#router ospf 100
IOU2(config-router)# network 10.10.150.0 0.0.0.255 area 0
IOU2(config-router)#network 128.10.0.0 0.0.255.255 area 0
Basta verificar se a rota esta na tabela de roteamento da outra ponta:
IOU1#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C 10.6.1.0/24 is directly connected, Ethernet0/0
L 10.6.1.3/32 is directly connected, Ethernet0/0
O IA 10.10.150.0/24 [110/21] via 10.6.1.1, 01:06:53, Ethernet0/0
128.1.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 128.1.0.0/16 is directly connected, Loopback0
L 128.1.0.100/32 is directly connected, Loopback0
128.10.0.0/32 is subnetted, 1 subnets
O IA 128.10.0.100 [110/12] via 10.6.1.1, 00:55:28, Ethernet0/0
Bom pessoal, não sei se ficou muito clara as explicações e nem as configurações, porém essas configurações são bem complexas e exigem um conhecimento prévio (BGP, MPLS e OSPF ao menos), então antes de tentar realizar esse lab, estude bem os protocolos acima, segue os materiais que foram usados como base:
Abraços
Nenhum comentário:
Postar um comentário