Los routers Cisco tienen varias tablas que intervienen en la manera de reenviar un paquete, básicamente los procesos de ruteo se encargan de establecer opciones, seleccionar las mejores rutas e instalarlas en la tabla de ruteo global (RIB routing information base) y así tener opciones para ir a distintas redes.
Cuando las métricas son iguales (o similares si así nos interesa) se puede balancear el tráfico entre distintas rutas posibles.
Un inconveniente de la tabla de ruteo es que revisar la dirección de destino de un paquete contra la tabla es un proceso secuencial que ocupa mucha memoria, por lo que a través de CEF se construye una tabla de reenvío (FIB forwarding information base); este proceso es más rápido porque construye una tabla en la que se registran las direcciones de destino y las interfaces que nos llevan ahí, haciendo un proceso de conmutación o IP switching que es más eficiente para reenviar un paquete.
Lo siguiente es MPLS, que construye una tabla de etiquetas relacionando las redes que conocemos por distintos medios con números asignados localmente y remotamente, construyendo una tabla LIB (label information base) que reenvía el tráfico de manera más eficiente; ésto es porque el router recibe un paquete con un encabezado adicional que incluye las etiquetas de MPLS y que le indican por medio de la etiqueta el destino al que se dirige el paquete, se lee la etiqueta, se consulta la LIB, se quita la etiqueta de entrada, se coloca una etiqueta de salida (o se quitan todas si ha llegado a su destino) y se reenvía el paquete, todo sin consultar la tabla de ruteo o RIB.
El proceso de ruteo se encarga de mantener la LIB actualizada en cuanto a las distintas rutas disponibles, haciendo más eficiente el proceso de intercambiar rutas, y así mismo, el de transmitir tráfico.
Haremos un pequeño ejercicio de como configurar una MPLS con 5 routers contiguos, todos corriendo el proceso de OSPF 1 y todos con una loopback interface con máscara de 32 bits:
Descarga aquí las configuraciones completas de este laboratorio.
Primero activamos MPLS en todos con el comando:
(config)# mpls ip
y limitamos el rango de etiquetas que asignaremos localmente diferente en cada router (para identificarlas más fácilmente)
(config)# mpls label range 1100 1199
y asignamos la interface al proceso de MPLS:
(config)# int e0/0
(config-if)#mpls ip
Una vez configurado en todos los routers, podremos ver la tabla de asociaciones de etiquetas y rutas:
router_1#show mpls ldp bindings
lib entry: 1.1.1.1/32, rev 2
local binding: label: imp-null
remote binding: lsr: 2.2.2.2:0, label: 1200
lib entry: 2.2.2.2/32, rev 6
local binding: label: 1100
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 3.3.3.3/32, rev 11
local binding: label: 1102
remote binding: lsr: 2.2.2.2:0, label: 1201
lib entry: 4.4.4.4/32, rev 14
local binding: label: 1104
remote binding: lsr: 2.2.2.2:0, label: 1203
lib entry: 5.5.5.5/32, rev 18
local binding: label: 1106
remote binding: lsr: 2.2.2.2:0, label: 1205
lib entry: 10.0.12.0/29, rev 4
local binding: label: imp-null
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 10.0.23.0/29, rev 8
local binding: label: 1101
remote binding: lsr: 2.2.2.2:0, label: imp-null
lib entry: 10.0.34.0/29, rev 12
local binding: label: 1103
remote binding: lsr: 2.2.2.2:0, label: 1202
lib entry: 10.0.45.0/29, rev 16
local binding: label: 1105
remote binding: lsr: 2.2.2.2:0, label: 1204
router_3#show mpls ldp bindings 3.3.3.3 32
lib entry: 3.3.3.3/32, rev 2
local binding: label: imp-null
remote binding: lsr: 2.2.2.2:0, label: 1201
remote binding: lsr: 4.4.4.4:0, label: 1402
Como podemos ver, cada prefijo aprendido tiene una etiqueta local y una asignada por el vecino, en el caso de R1 podemos ver el prefijo 1.1.1.1/32, que tiene una etiqueta local imp-null, lo que significa que no colocamos una etiqueta local, pero en el router 2 con ID 2.2.2.2, la etiqueta utilizada es 1200.
Similar con el prefijo 3.3.3.3/32, que en el router 1 tiene una etiqueta 1102, en el router 2 es la 1201 y podemos ver que en el router 3, al ser un prefijo local, no tiene etiqueta, pero el router 3 sabe que router 2 le coloca una etiqueta 1201 y router 4 le coloca una etiqueta 1402.
Verificación:
Ahora hagamos un traceroute desde router 1 a la loopback de router 5; veremos que el paquete va al siguiente router con IP 10.0.12.2 usando una etiqueta 1205, de ahí pasa al R3 con la etiqueta 1305, y así sucesivamente, podemos ver las etiquetas en rojo.
Otra comprobación es el registro de CEF, que nos indica que ese prefijo se encuentra saliendo por la interface Ethernet 0/0 y utilizando una etiqueta 1205 que es la que R2 utiliza
router_1#traceroute 5.5.5.5
Type escape sequence to abort.
Tracing the route to 5.5.5.5
VRF info: (vrf in name/id, vrf out name/id)
1 10.0.12.2 [MPLS: Label 1205 Exp 0] 1 msec 0 msec 0 msec
2 10.0.23.3 [MPLS: Label 1305 Exp 0] 1 msec 0 msec 1 msec
3 10.0.34.4 [MPLS: Label 1405 Exp 0] 0 msec 5 msec 4 msec
4 10.0.45.5 5 msec 5 msec 5 msec
router_1#sh ip cef 5.5.5.5
5.5.5.5/32
nexthop 10.0.12.2 Ethernet0/0 label 1205
router_1#show mpls forwarding-table 5.5.5.5 32
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
1106 1205 5.5.5.5/32 0 Et0/0 10.0.12.2
router_1#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
1100 Pop Label 2.2.2.2/32 0 Et0/0 10.0.12.2
1101 Pop Label 10.0.23.0/29 0 Et0/0 10.0.12.2
1102 1201 3.3.3.3/32 0 Et0/0 10.0.12.2
1103 1202 10.0.34.0/29 0 Et0/0 10.0.12.2
1104 1203 4.4.4.4/32 0 Et0/0 10.0.12.2
1105 1204 10.0.45.0/29 0 Et0/0 10.0.12.2
1106 1205 5.5.5.5/32 0 Et0/0 10.0.12.2
Aquí podemos ver que el intercambio de etiquetas cn el protocolo LDP se lleva a cabo en el puerto 646:
router_1#show mpls ldp neighbor
Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 1.1.1.1:0
TCP connection: 2.2.2.2.34337 - 1.1.1.1.646
State: Oper; Msgs sent/rcvd: 56/55; Downstream
Up time: 00:38:58
LDP discovery sources:
Ethernet0/0, Src IP addr: 10.0.12.2
Addresses bound to peer LDP Ident:
10.0.12.2 10.0.23.2 2.2.2.2
debug ip packet
*Mar 6 04:25:50.780: UDP src=646, dst=646
*Mar 6 04:25:50.781: UDP src=646, dst=646
*Mar 6 04:25:54.256: UDP src=646, dst=646
router_1#sh mpls ldp neighbor 2.2.2.2 detail
Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 1.1.1.1:0
TCP connection: 2.2.2.2.34337 - 1.1.1.1.646
Password: not required, none, in use
State: Oper; Msgs sent/rcvd: 61/60; Downstream; Last TIB rev sent 18
Up time: 00:43:27; UID: 1; Peer Id 0;
LDP discovery sources:
Ethernet0/0; Src IP addr: 10.0.12.2
holdtime: 15000 ms, hello interval: 5000 ms
Addresses bound to peer LDP Ident:
10.0.12.2 10.0.23.2 2.2.2.2
Peer holdtime: 180000 ms; KA interval: 60000 ms; Peer state: estab
Capabilities Sent:
[Dynamic Announcement (0x0506)]
[mLDP Point-to-Multipoint (0x0508)]
[mLDP Multipoint-to-Multipoint (0x0509)]
[Typed Wildcard (0x050B)]
Capabilities Received:
[Dynamic Announcement (0x0506)]
[mLDP Point-to-Multipoint (0x0508)]
[mLDP Multipoint-to-Multipoint (0x0509)]
[Typed Wildcard (0x050B)]
A continuación la configuración relevante en los routers; el comando mpls ip general no se muestra, pero es importante porque activa el proceso:
router_1#sh runn
Building configuration...
!
no ip domain lookup
ip cef
no ipv6 cef
!
!
[ mpls ip ]
mpls label range 1100 1199
!
!
interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.12.1 255.255.255.248
mpls ip
!
router ospf 1
network 0.0.0.0 255.255.255.255 area 0
!
!
end
router_3#sh running-config
!
[ mpls ip ]
mpls label range 1300 1399
!
interface Loopback1
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.34.3 255.255.255.248
mpls ip
!
interface Ethernet0/1
ip address 10.0.23.3 255.255.255.248
mpls ip
!
router ospf 1
network 0.0.0.0 255.255.255.255 area 0
Suscribirse a:
Comentarios de la entrada
(
Atom
)
No hay comentarios. :
Publicar un comentario