317 KB

Anuncio
Práctica de MPLS
PRÁCTICA: Configuración de MPLS en modo trama
(versión 2012-2013)
Autores: Santiago Felici
Rogelio Montañana
Objetivo
El objetivo de la presente práctica es familiarizarse con la tecnología y los
conceptos de MPLS (Multiprotocol Label Switching), así como su configuración en
una maqueta con routers Cisco.
Para ello, se realizarán las siguientes actividades:
•

•
•
•

Montar una maqueta con varios routers 2610 (‘MPLS capable’) con
interfaces Ethernet, Serie y Loopback
Configurar routing OSPF en la maqueta
Configurar en los routers MPLS y el protocolo de distribución de etiquetas
LDP
Verificar el comportamiento de MPLS en la red, así como la comprobación
de las tablas utilizadas por MPLS en su funcionamiento
Adaptar el tamaño de Maximum Transmission Unit (MTU) para ser
compatible con los requisitos de funcionamiento de MPLS
Analizar los paquetes MPLS intercambiados por los routers
Aunque los equipos utilizados son Cisco, los conceptos introducidos en la
presente práctica tienen carácter general.
Materiales necesarios
Para la realización de esta práctica es necesario disponer de:
• Seis cables Ethernet
• Cuatro cables serie, dos DTE V.35 macho y dos DCE V.35 hembra
• Cuatro cables de consola RS-232
• Cuatro routers Cisco 2610 con al menos 16 MB de Flash y 48 MB de RAM,
con una interfaz serie y otra Ethernet, con IOS con soporte de MPLS t1
• Un conmutador con capacidad de encapsulado 802.1Q (por ejemplo un
catalyst 2950)
• Un hub de cuatro puertos de 10 Mb/s
• Cuatro ordenadores para actuar de consola de los routers y conectarse en
su red local, equipados con los programas minicom y Wireshark
Prerrequisitos
1
IOS Version 12.3(26) Telco Feature Set- General Deployment, RELEASE SOFTWARE (fc2)
“c2600-telco-mz.123-26.bin”
1
Práctica de MPLS



Tener un conocimiento básico de configuración de los routers Cisco, así como
los comandos de su sistema operativo IOS, para lo cual se remite a las
prácticas realizadas previamente en esta u otras asignaturas
Tener un conocimiento teórico de MPLS
Haberse leído completamente este guión
Introducción
En ocasiones MPLS se clasifica como una tecnología de la capa 2.5, porque
realiza un encapsulado intermedio entre la capa de enlace (capa 2) y la capa de
red (capa 3). En este encapsulado se introduce una etiqueta de 4 bytes, que
permite a los routers utilizar técnicas de conmutación. El utilizar el etiquetado por
debajo de capa 3, permite funcionar independientemente del protocolo de capa 3
utilizado, de ahí lo de “multiprotocol”. Esta arquitectura de etiquetado es flexible y
permite anidar o apilar etiquetas, es decir, introducir una trama MPLS dentro de
otra.
El objetivo de MPLS es separar la parte de encaminamiento de la parte de
conmutación en el reenvío de los paquetes, de forma que mientras la parte de
encaminamiento es compleja y lenta (tiempos de convergencia, cálculo de rutas),
se realiza independientemente de la parte de conmutación, que es rápida y simple.
Los routers inicialmente calculan las rutas a los destinos usando protocolos de
routing IP (OSPF por ejemplo) y luego intercambiando etiquetas establecen los
circuitos virtuales entre cualquier origen y cualquier destino para empezar a
conmutar los paquetes. La etiqueta añadida al paquete se antepone a la cabecera
IP en el router frontera de ingreso a la red MPLS, y está asociada al circuito virtual
que seguirá hacia su destino. La etiqueta sólo tiene significado local en el enlace
entre ese router y el siguiente, y va cambiando en cada enlace por el que pasa el
paquete hacia su destino. El paquete es conmutado dentro de la red (a través de
los routers MPLS internos) cambiando en cada salto la etiqueta y finalmente sale
de la red MPLS en el router frontera de egreso, que se encarga de quitarle la
etiqueta.
Para que MPLS mejore el rendimiento de un router necesita soporte por parte del
hardware. En los routers de cisco ese soporte se consigue activando un modo de
funcionamiento llamado CEF (Cisco Express Forwarding). El uso de CEF es un
prerrequisito para que el router pueda soportar MPLS, sin embargo un router
puede utilizar CEF sin tener habilitado MPLS.
Todo router construye a partir de la información obtenida por los diversos
protocolos de routing y por las rutas estáticas que tiene configuradas, la tabla de
rutas llamada también RIB (Routing Information Table). La RIB contiene una
entrada para cada posible red de destino y una dirección de encaminamiento
hacia dicha red. Dicha dirección de encaminamiento puede corresponder a un
2
Práctica de MPLS
router vecino, en cuyo caso nuestro router tendrá esa red directamente conectada
y ya sabrá por que interfaz acceder a él, o puede corresponder a un router remoto,
en cuyo caso será necesaria una nueva búsqueda en la RIB para localizar la ruta
hacia dicho router remoto. Dependiendo de la complejidad de la RIB esta
búsqueda recursiva puede tener que repetirse varias veces, haciendo el proceso
de resolución de rutas lento y costoso.
Cuando se activa CEF el router construye, a partir de la información de la tabla
RIB, otra tabla llamada FIB (Forwarding Information Base) que especifica para
cada posible red de destino la dirección del siguiente router (y por tanto la interfaz)
que se debe utilizar. Así pues la tabla FIB es una versión simplificada de la tabla
de rutas que acelera, el proceso de enrutamiento de los paquetes ya que para
cada red de destino indica directamente la inerfaz que ha de utilizarse y el router
de ‘siguiente salto’ hacia dicho destino, evitando las búsquedas recursivas.
Normalmente en los routers CEF está activado por defecto y la FIB se utiliza aun
en el caso de que no se active MPLS.
Cuando se activa MPLS el router construye una tabla de conmutación de etiquetas
denominada LIB (Label Information Base). Dicha tabla contiene entradas que
relacionan interfaz-etiqueta de entrada con interfaz-etiqueta de salida. Las
entradas en dicha tabla pueden incluirse de dos maneras: manualmente, por
configuración, o automáticamente, mediante un protocolo de distribución de
etiquetas. El protocolo de distribución de etiquetas más extendido es el conocido
como LDP (Label Distribution Protocol) y es el que utilizaremos en esta práctica.
Para crear las etiquetas LDP utiliza la información facilitada por el protocolo OSPF.
Esto nos evita tener que decidir e introducir manualmente las tablas de etiquetas
en cada router.
A partir de la LIB y la FIB el router construye otra tabla, conocida como LFIB
(Label Forwarding Information Base), que relaciona cada red de destino con la
interfaz y con las etiquetas MPLS que le corresponden en la tabla LIB a esa red.
De este modo el router puede rápidamente asignar las etiquetas a los paquetes
según la red de destino.
Una vez el router conoce, mediante OSPF, todas las redes accesibles, le asocia a
cada una una etiqueta y la anuncia a sus vecinos utilizando LDP. Esta asociación
queda registrada en la tabla LIB en el plano de control. El plano de datos, que es
el que realiza el trabajo de conmutación, se encarga de mantener la tabla FIB
(para enrutar los paquetes de red directamente) y la tabla LFIB (para conmutar las
tramas MPLS utilizando las etiquetas y reenviar la trama a la interfaz de salida
correspondiente).
Normalmente MPLS se describe mediante un modelo de arquitectura basado en
dos planos, el plano de control (utilizado por los protocolos de routing IP y los
protocolos de gestión de MPLS) y el plano de datos donde se realiza la
conmutación de los paquetes. De acuerdo con ese modelo la RIB y la LIB se
encuentran en el plano de control, ya que son tablas controladas por los
3
Práctica de MPLS
protocolos de control, en nuestro caso OSPF para la RIB y LDP para la LIB. En
cambio la FIB y la LFIB están en el plano de datos, pues son tablas utilizadas por
el router para la conmutación de paquetes IP ó MPLS.
La siguiente figura muestra de forma esquemática la relación entre las cuatro
tablas mencionadas (RIB, FIB, LIB y LFIB):
De forma simplificada en la figura 1 y 2 se explica el funcionamiento del MPLS
utilizando las tablas LIB, LFIB y FIB.
4
Práctica de MPLS
Figura 1: La red X (network X) está directamente conectada al router D, que la
anuncia. Instantes más tarde la red X aparece en la tabla de rutas del router B,
que ha acordado con el router A utilizar para ella la etiqueta 25, decisión que
anuncia a sus routers vecinos A, E y C por LDP. La decisión queda registrada en
la tabla LIB del router B. A partir de ese momento cuando el router A tenga que
enviar un paquete a la red X, lo encapsulará en una trama MPLS con etiqueta 25,
dado que B sabe qué hacer con dicha etiqueta.
Figura 2: Independientemente del proceso anterior el router C ha acordado con el
router B que el tráfico enviado hacia la red X lo marcarán con la etiqueta 47 en el
enlace que les une. Igual que antes hizo B ahora C anuncia esta decisión a todos
sus vecinos (B, E y D). B incorpora esta información a su LIB, FIB y LFIB, dando el
resultado que aparece en la figura. Ahora cuando A le envía un paquete con
etiqueta 25 B sabe que tiene que enviar dicho paquete por la interfaz que le
conecta con C, cambiando la etiqueta a 47.
La etiqueta MPLS es un número entero de 20 bits. Las etiquetas de 0 a 15 están
reservadas, por lo que el rango utilizable es de 16 a 1.048.575 (2**20-1). En los
routers Cisco por defecto LDP empieza a asignar valores de forma consecutiva
empezando por abajo, por lo que los valores de etiquetas que veremos empezarán
por el 16 en adelante.
Esquema de la red MPLS a implementar
En la presenta maqueta hay 4 routers que forman la red MPLS como muestra la
figura 3.
Cada router tiene una conexión Ethernet y una Serie. Las conexiones R0-R1 y R2R3 se hacen utilizando las líneas serie. Los routers R1 y R2 se conectan entre sí
utilizando su interfaz Ethernet, que al mismo tiempo los conecta con sus
respectivos hosts. Para dar cierta independencia hemos configurado en esta
Ethernet tres redes IP, una para conectar R1 con H1, otra para R2 con H2 y una
5
Práctica de MPLS
tercera para R1 con R2. Por comodidad utilizaremos en todas estas interfaces
máscaras de 24 bits, aunque en las líneas serie no harían falta tantas direcciones.
Console
Console
L0
172.16.0.1/32
L0
172.16.3.1/32
E 0/0
172.16.30.1/24
E 0/0
172.16.33.1/24
R0
H0
172.16.30.2/24
Rtr: 172.16.30.1
S 0/0
172.16.23.3/24
S 0/0
172.16.22.3/24
S 0/0
172.16.22.2/24
L0
172.16.1.1/32
R3
H3
172.16.33.2/24
Rtr: 172.16.33.1
MPLS
E 0/0
172.16.12.1/24
172.16.31.1/24
E 0/0
172.16.12.2/24
172.16.32.1/24
R1
S 0/0
172.16.23.2/24
R2
L0
172.16.2.1/32
Console
Console
H1
172.16.31.2/24
Rtr: 172.16.31.1
H2
172.16.32.2/24
Rtr: 172.16.32.1
RS-232
10BASE-T
V.35
Figura 3: Esquema de conexión de los routers con detalle del direccionamiento IP.
Los nombres de interfaces que aparecen en la figura 3 son las abreviaturas
mínimas que pueden utilizarse para configurar los routers, es decir en vez de
Ethernet 0/0, Serial 0/0 y Loopback 0 podemos escribir E0/0, S0/0 y L0,
respectivamente.
Como has visto en el esquema anterior, en esta práctica estamos utilizando un
nuevo tipo de interfaz, la Loopback (L0). Se trata de una interfaz virtual no
asociada a ninguna interfaz física y que no conecta con ninguna red. A pesar de
su nombre y a diferencia de lo que ocurre en los hosts las interfaces loopback de
los routers no están pensadas para probar localmente el buen estado del software
6
Práctica de MPLS
de comunicaciones, y de hecho si intentamos asignarle cualquier dirección de la
red 127.0.0.0/8 el router no nos deja y da un mensaje de error. El objetivo de esta
interfaz es servir como identificador del router, la dirección IP que le asignamos a
ella actúa como una especie de ‘dirección canónica‘ que identifica al router ante
cualquier protocolo que lo requiera, por ejemplo OSPF o LDP. Al no estar
vinculada a ninguna interfaz física la interfaz loopback esta operativa siempre que
el router está encendido. Si no existiera la interfaz loopback OSPF y LDP
utilizarían para identificar al router la dirección IP más alta, que en nuestro caso
sería la de la interfaz Ethernet; en ese caso si se desenchufara el cable Ethernet la
interfaz caería y el router tendría que cambiar de identificador. En nuestra
maqueta esto no sería muy importante, ya que si cae la interfaz Ethernet de un
router poco podemos hacer ya con él, pero en un router con más interfaces resulta
muy útil que el identificador no dependa de una interfaz física concreta.
Puesto que la interfaz loopback no nos conecta con ninguna red y solo se utiliza
como identificador lo normal suele ser configurarla con una máscara de 32 bits
(ruta host) dejando claro que esa interfaz está aislada. Se pueden configurar
múltiples interfaces loopback (loopback0, loopback1, etc.) pero lo normal es
configurar solo una.
Fíjate por último que en la figura 3 la nube MPLS comprende solo las interfaces
que interconectan los routers, quedando fuera las cuatro loopback y las Ethernet
de R0 y R4. Estas interfaces funcionarán sn etiqueta MPLS, por lo que en en esos
casos los routers actuarán como routers frontera.
Paso 0: Cableado e inicialización de los routers
Cablea la maqueta tal como se indica en la figura 3. De momento no conectes la
interfaz serie en R0 y en R3. Seguidamente conéctate por consola a los
diferentes equipos e introduce la configuración de la siguiente manera:
Would you like to enter the initial configuration dialog? [yes/no]: no
Do you want to terminate autoinstall? [yes/no]: ]: yes
Router>enable
Router#configure terminal
Router(config)#hostname R1
R1(config)#no ip domain-lookup
R1(config)#exit
El comando no ip domain-lookup evita la consulta al DNS, lo cual es muy
recomendable ya que si no lo ponemos cuando nos equivocamos al teclear un
comando se interpreta como un telnet a ese nombre y tarda un rato en abortar por
timeout la consulta al DNS.
Si el equipo no muestra la pregunta inicial es porque tiene grabada alguna
7
Práctica de MPLS
configuración, lo cual puede interferir en nuestro trabajo. En ese caso borra la
configuración con los comandos “erase startup configuration” y “reload”.
>enable
#erase star
#reload
Al reiniciar el router ya debe aparecer la pregunta:
Would you like to enter the initial configuration dialog? [yes/no]: no
Comprueba los nombres utilizados por el sistema operativo para cada una de las
interfaces físicas de los routers con el siguiente comando:
#show ip interface brief
En nuestro caso cada router debe tener una interfaz ‘Ethernet0/0’ y una ‘Serial0/0’.
Ahora sí conecta ya la interfaz serie en R0 y en R3.
Paso 1: Configuración del direccionamiento IP
A continuación vamos a configurar las interfaces, tanto las físicas como las
virtuales, con las direcciones que les corresponden y las habilitaremos con el
comando “no shutdown”. En las interfaces serie vamos a añadir además el
comando “clock rate”. Por simplificar pondremos la señal de reloj en ambos lados
de la línea, para no tener que preocuparnos de como hemos puesto el cable.
Esta es la configuración necesaria para cada router:
R0(config)# interface loopback 0
R0(config-if)# ip address 172.16.0.1 255.255.255.255
R0(config-if)# no shutdown
R0(config-if)# interface ethernet 0/0
R0(config-if)# ip address 172.16.30.1 255.255.255.0
R0(config-if)# no shutdown
R0(config-if)# interface serial 0/0
R0(config-if)# ip address 172.16.22.3 255.255.255.0
R0(config-if)# clock rate 2000000
R0(config-if)# no shutdown
R1(config)# interface loopback 0
R1(config-if)# ip address 172.16.1.1 255.255.255.255
R1(config-if)# no shutdown
R1(config-if)# interface ethernet 0/0
R1(config-if)# ip address 172.16.12.1 255.255.255.0
R1(config-if)# ip address 172.16.31.1 255.255.255.0 secondary
R1(config-if)# no shutdown
8
Práctica de MPLS
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
interface serial 0/0
ip address 172.16.22.2 255.255.255.0
clock rate 2000000
no shutdown
R2(config)# interface loopback 0
R2(config-if)# ip address 172.16.2.1 255.255.255.255
R2(config-if)# no shutdown
R2(config-if)# interface ethernet 0/0
R2(config-if)# ip address 172.16.12.2 255.255.255.0
R2(config-if)# ip address 172.16.32.1 255.255.255.0 secondary
R2(config-if)# no shutdown
R2(config-if)# interface serial 0/0
R2(config-if)# ip address 172.16.23.2 255.255.255.0
R2(config-if)# clock rate 2000000
R2(config-if)# no shutdown
R3(config)# interface loopback 0
R3(config-if)# ip address 172.16.3.1 255.255.255.255
R3(config-if)# no shutdown
R3(config-if)# interface ethernet 0/0
R3(config-if)# ip address 172.16.33.1 255.255.255.0
R3(config-if)# no shutdown
R3(config-if)# interface serial 0/0
R3(config-if)# ip address 172.16.23.3 255.255.255.0
R3(config-if)# clock rate 2000000
R3(config-if)# no shutdown
Configura ahora las direcciones IP, máscara y router por defecto en los hosts,
utilizando los comandos ifconfig y route que ya conoces, de la siguiente manera:
Host
IP
Máscara
Router por defecto
H0
172.16.30.2
255.255.255.0
172.16.30.1
H1
172.16.31.2
255.255.255.0
172.16.31.1
H2
172.16.32.2
255.255.255.0
172.16.32.1
H3
172.16.33.2
255.255.255.0
172.16.33.1
Por ejemplo para H3 sería:
9
Práctica de MPLS
ifconfig p17p1 inet 172.16.33.2 netmask 255.255.255.0
route add –net 0.0.0.0 netmask 0.0.0.0 gw 172.16.33.1
Ahora desactiva el cortafuegos de Linux:
service iptables stop
Paso 2: Configura OSPF en todos los routers
Configura OSPF en los 4 routers de la maqueta en el área 0. Por simplificar
anunciaremos toda la red 172.16.0.0/16, sabiendo que así cada router anunciará
solamente las subredes que tiene directamente conectadas. Los comandos, que
son iguales en todos los routers, son los siguientes:
R1(config)# router ospf 1
R1(config-router)# network 172.16.0.0 0.0.255.255 area 0
Con ello podrás observar que se establecen las adyacencias y se anuncian las
redes.
¿Podría funcionar MPLS si no hubiera conectividad IP?
……………………………………………………………………………………….
……………………………………………………………………………………….
Paso 3: Comprobación de la conectividad IP y del funcionamiento de CEF
(Cisco Express Forwarding)
Utilizando el comando “show ip route” podrás observar la tabla de rutas (tabla
RIB). Por ejemplo en R2 debería aparecer algo parecido a lo siguiente:
R2#show ip route
…
172.16.0.0/16 is variably subnetted, 11 subnets, 2 masks
C
172.16.23.0/24 is directly connected, Serial0/0
C
172.16.12.0/24 is directly connected, Ethernet0/0
C
172.16.32.0/24 is directly connected, Ethernet0/0
O
172.16.1.1/32 [110/11] via 172.16.12.1, 00:02:35, Ethernet0/0
O
172.16.0.1/32 [110/11] via 172.16.12.1, 00:02:35, Ethernet0/0
O
172.16.30.0/24 [110/11] via 172.16.12.1, 00:02:35, Ethernet0/0
O
172.16.31.0/24 [110/11] via 172.16.12.1, 00:02:35, Ethernet0/0
O
172.16.3.1/32 [110/65] via 172.16.23.3, 00:02:35, Serial0/0
O
172.16.33.1/24 [110/65] via 172.16.23.3, 00:02:35, Serial0/0
10
Práctica de MPLS
C
172.16.2.0/32 is directly connected, Loopback0
Verás que las redes directamente conectadas llevan delante una “C” y las
aprendidas por OSPF una “O”. La información entre corchetes es [distancia
administrativa, métrica], en el caso de OSPF la distancia administrativa es siempre
110 y la métrica se calcula como la suma de los costes de los enlaces hasta el
destino, coste que es inversamente proporcional a la velocidad de la interfaz (los
valores que observes en el laboratorio seguramente serán diferentes de los que
aparecen en este ejemplo). Cada ruta además tiene asociada el siguiente salto, la
antigüedad y la interfaz de salida.
Atención: a última hora se han realizado importantes modificaciones en la
maqueta de esta práctica sin modificar las capturas de comandos que
aparecen en el guión, por lo que en general éstas diferirán de las que tu
obtengas en el laboratorio.
Haz ping, ping –R y traceroute desde tu host a los otros tres y a las interfaces
loopback de los routers para comprobar la conectividad IP. Prueba también a
utilizar el comando “traceroute” desde tu router al router más alejado de ti (por
ejemplo desde R2 hacia R0). Observa el resultado.
Como hemos comentado en la parte introductoria los routers Cisco emplean un
mecanismo conocido como CEF (Cisco Express Forwarding) para acelerar el
proceso de conmutación de paquetes, construyendo la tabla FIB (Forwarding
Information base). MPLS necesita que CEF esté activado, ya que utiliza la tabla
FIB para construir la tabla LFIB que utiliza para la conmutación de sus paquetes.
CEF puede activarse o desactivarse con los comandos “ip cef” o “no ip cef”,
respectivamente en modo configuración global. Por defecto CEF está activado,
para comprobarlo podemos utilizar el comando “show ip cef” que nos devuelve la
tabla FIB del router:
R1#show ip cef
Prefix
0.0.0.0/0
0.0.0.0/32
172.16.1.0/32
172.16.1.0/32
172.16.1.1/32
172.16.1.255/32
172.16.2.1/32
172.16.3.1/32
172.16.12.0/24
172.16.12.0/32
172.16.12.1/32
172.16.12.2/32
172.16.12.255/32
172.16.23.0/24
Next Hop
drop
receive
attached
receive
receive
receive
172.16.12.2
172.16.12.2
attached
receive
receive
172.16.12.2
receive
172.16.12.2
Interface
Null0 (default route handler entry)
Loopback0
Ethernet0/0
Ethernet0/0
Ethernet0/0
Ethernet0/0
Ethernet0/0
11
Práctica de MPLS
224.0.0.0/4
224.0.0.0/24
255.255.255.255/32
drop
receive
receive
Si CEF estuviera desactivado el comando no habría devuelto ninguna información.
La tabla FIB nos indica cual es el siguiente salto hacia cada destino posible. Por
ejemplo la tabla anterior nos dice que para ir desde R1 hacia 172.16.2.1/32
(dirección loopback de R2) debe utilizarse la dirección 172.16.12.2 (Next Hop),
que corresponde a la interfaz Ethernet 0/0 de R2, que a su vez está accesible a
través de la interfaz Ethernet 0/0 de R1.
Paso 4: Habilita MPLS en las interfaces
Al configurar MPLS en un router hay que indicar el protocolo que queremos utilizar
para la configuración de etiquetas. Si no se indica ninguno el sistema asume uno
por defecto, que depende de la versión de IOS utilizada, en nuestro caso es uno
propietario de Cisco, por lo que necesariamente debemos especificar el uso de
LDP. Es buena práctica hacerlo siempre para estar seguros y evitar sorpresas.
Para configurar LDP utilizaremos el comando ‘mpls label protocol ldp’ en
modo configuración global. Además debemos habilitar MPLS mediante el
comando ‘mpls ip’ en todas las interfaces que están dentro de la nube MPLS, es
decir en todas las serie y las ethernet de R1 y R2. Los comandos a utilizar son
pues los siguientes:
R1(config)# mpls label protocol ldp
R1(config-if)# interface serial0/0
R1(config-if)# mpls ip
R2(config)# mpls label protocol ldp
R2(config)# interface ethernet0/0
R2(config-if)# mpls ip
R2(config-if)# interface serial0/0
R2(config-if)# mpls ip
R3(config)# mpls label protocol ldp
R3(config)# interface ethernet0/0
R3(config-if)# mpls ip
R3(config-if)# interface serial0/0
R3(config-if)# mpls ip
R4(config)# mpls label protocol ldp
R4(config-if)# interface serial0/0
R4(config-if)# mpls ip
Cuando configuras MPLS en los dos extremos de una conexión, aparecen
12
Práctica de MPLS
mensajes por consola en ambos routers indicando que LDP ha creado una nueva
vecindad parecidos a este:
*Mar
1 00:42:34.996: %LDP-5-NBRCHG: LDP Neighbor 172.16.1.1:0 is UP
Paso 5: Verifica la configuración de MPLS
Para comprobar el funcionamiento de MPLS vamos a utilizar el comando “show
mpls”. Para ver de que opciones dispones utiliza el comando “show mpls ?”
R1#show mpls ?
atm-ldp
forwarding-table
interfaces
ip
label
ldp
traffic-eng
ATM LDP Protocol information
Show the Label Forwarding Information Base (LFIB)
Per-interface MPLS forwarding information
MPLS IP information
Label information
Label Distribution Protocol information
Traffic engineering information
En primer lugar para ver rápidamente las interfaces que están funcionando con
MPLS ejecuta “show mpls interfaces”:
R2# show mpls interfaces
Interface
IP
Ethernet0/0
Yes (tdp)
Serial0/0
Yes (tdp)
Tunnel
No
No
Operational
Yes
Yes
Otros comandos interesantes son:
show mpls ldp discovery para observar información de LDP, como el
identificativo del router MPLS y los vecinos.
R2#show mpls ldp discovery
Local LDP Identifier:
172.16.2.1:0
Discovery Sources:
Interfaces:
Ethernet0/0 (ldp): xmit/recv
LDP Id: 172.16.1.1:0
Serial0/0 (ldp): xmit/recv
LDP Id: 172.16.3.1:0
show mpls ldp neighbor para detección de las adyacencias de LDP y el
estado de las conexiones establecidas.
13
Práctica de MPLS
R2#show mpls ldp nei
Peer LDP Ident: 172.16.1.1:0; Local LDP Ident 172.16.2.1:0
TCP connection: 172.16.1.1.646 - 172.16.2.1.19940
State: Oper; PIEs sent/rcvd: 0/23; Downstream
Up time: 00:17:12
LDP discovery sources:
Ethernet0/0, Src IP addr: 172.16.12.1
Addresses bound to peer LDP Ident:
172.16.12.1
172.16.1.1
Peer LDP Ident: 172.16.3.1:0; Local LDP Ident 172.16.2.1:0
TCP connection: 172.16.3.1.40446 - 172.16.2.1.646
State: Oper; PIEs sent/rcvd: 0/20; Downstream
Up time: 00:14:16
LDP discovery sources:
Serial0/0, Src IP addr: 172.16.23.3
Addresses bound to peer LDP Ident:
172.16.23.3
172.16.3.1
En MPLS cada router utiliza como identificador la IP más alta de sus interfaces
loopback (podría tener varias), y si no dispone de ninguna interfaz loopback, la
más alta de sus interfaces físicas. Esto ocurre también con otros protocolos como
OSPF, BGP etc
A la vista de lo anterior indica ¿Qué protocolo de transporte utiliza LDP para
comunicarse con sus vecinos?
……………………………………………………………………………………….
¿Serías capaz de decir si LDP tiene asignado un número de puerto bien
conocido? ¿Sabrías decir cual es?
……………………………………………………………………………………….
Paso 6: Estudio de las tablas LIB y LFIB
Con la configuración introducida en el paso anterior, todos los routers actúan como
Label Switch Routers (LSRs) y ejecutan LDP. Cada router crea una FEC
(Forwarding Equivalence Class) para cada entrada de la tabla FIB, a cada FEC le
asigna una etiqueta MPLS y registra la etiqueta en la tabla LIB. Estas etiquetas
pueden variar cada vez que inicializamos el router.
Mediante LDP cada router distribuye sus etiquetas a sus vecinos para que las
utilicen cuando le mandan paquetes. Una vez las etiquetas se han distribuido, la
conmutación se realiza utilizando la tabla LFIB que almacena la etiqueta asignada
por el router vecino, la interfaz por donde enviar el paquete y la acción a realizar
14
Práctica de MPLS
con la etiqueta añadida (ponerla, cambiarla o quitarla).
Para visualizar los datos de la LIB se utiliza el comando “show mpls ldp
bindings”. Las asociaciones de etiquetas con las redes de destino solo tienen
significado local al router, es decir, las etiquetas asignadas por un router no tienen
en principio relación con las asignadas por el siguiente router al mismo destino. Un
ejemplo sería el siguiente:
R2#show mpls ldp bindings
lib entry: 172.16.1.1/32, rev 6
local binding: label: 16
remote binding: lsr: 172.16.3.1:0,
lib entry: 172.16.2.1/32, rev 12
remote binding: lsr: 172.16.1.1:0,
remote binding: lsr: 172.16.3.1:0,
lib entry: 172.16.3.1/32, rev 8
local binding: label: 17
remote binding: lsr: 172.16.1.1:0,
lib entry: 172.16.12.0/24, rev 4
local binding: label: imp-null
remote binding: lsr: 172.16.1.1:0,
remote binding: lsr: 172.16.3.1:0,
lib entry: 172.16.23.0/24, rev 2
local binding: label: imp-null
remote binding: lsr: 172.16.1.1:0,
remote binding: lsr: 172.16.3.1:0,
label: 17
label: 18
label: 18
label: 17
label: imp-null
label: 16
label: 16
label: imp-null
La etiqueta “imp-null” indica que el paquete será renviado sin etiqueta MPLS. Esto
ocurre normalmente en el router de destino, es decir el que tiene la red de destino
directamente conectada, que es el que debería quitar la etiqueta MPLS del
paquete, pero en el caso de los routers cisco la etiqueta la quita ya el router
anterior, ya que ve que el siguiente router tiene directamente conectada la red de
destino y en ese caso resulta más eficiente quitar de forma anticipada la etiqueta
MPLS. Este modo de funcionamiento se conoce como PHP (Penultimate Hop
Popping). De este modo se evita una consulta en la tabla LFIB del router de
destino, pues ya sabemos que tiene esa red directamente conectada.
El parámetro ‘rev’ (revisión) que aparece en la línea ‘lib entry’ es para control
interno de LDP. Se utiliza para identificar los mensajes LDP recibidos, de forma
que cuando el router recibe un paquete LDP puede saber si realmente es nuevo o
si es uno viejo que ha llegado repetido por algun motivo.
En el caso anterior podemos ver que por ejemplo R2 asocia localmente para la
interfaz loopback de R3 (172.16.3.1/32) la etiqueta 17, y sabe que R1 le ha
asociado casualmente la misma etiqueta. En cuanto a la red 172.16.12.0/24, que
es la Ethernet que le conecta con R1, localmente no le asigna etiqueta por ser una
15
Práctica de MPLS
red directamente conectada. Además por LDP ha sabido que R1 tampoco le ha
asignado etiqueta (por el mismo motivo) y que R3 le ha asignado la etiqueta 16.
Para consultar la tabla FIB utilizaremos el comando “show mpls forwarding ldp
bindings”:
R1#show mpls forwarding-table
Local Outgoing
Prefix
tag
tag or VC
or Tunnel Id
18
Untagged
172.16.2.1/32
17
17
172.16.3.1/32
16
Pop tag
172.16.23.0/24
Bytes tag
switched
0
0
0
Outgoing
interface
Et0/0
Et0/0
Et0/0
Next Hop
R2#sh mpls forwarding-table
Local Outgoing
Prefix
tag
tag or VC
or Tunnel Id
17
Untagged
172.16.3.1/32
16
Untagged
172.16.1.1/32
Bytes tag
switched
384
0
Outgoing
interface
Se0/0
Et0/0
Next Hop
R3#show mpls forwarding-table
Local Outgoing
Prefix
tag
tag or VC
or Tunnel Id
18
Untagged
172.16.2.1/32
16
Pop tag
172.16.12.0/24
17
16
172.16.1.1/32
Bytes tag
switched
0
0
0
Outgoing
interface
Se0/0
Se0/0
Se0/0
Next Hop
172.16.12.2
172.16.12.2
172.16.12.2
point2point
172.16.12.1
point2point
point2point
point2point
En esta tabla las entradas que ponen ‘Untagged’ en el ‘Outgoing tag’
corresponden a interface sque se encuentran fuera de la nube MPLS; las que
ponen ‘Pop tag’ son los casos en que el router ha de quitar la etiqueta
correspondiente y pasar el paquete IP tal cual.
Con la información obtenida anteriormente, podríamos diseñar la LIB en cada uno
de los routers tal como se detalla en la figura 2.
En R0
Network
LSR
Label
16
Práctica de MPLS
En R1
Network
LSR
Label
LSR
Label
LSR
Label
En R2
Network
En R3
Network
A la vista de los resultados mostrados en las tablas LIB y LFIB, si realizamos
un ping desde R1 con origen en 172.16.1.1 y destino a 172.16.3.1 ¿qué
etiquetas se utilizan?
……………………………………………………………………………………….
……………………………………………………………………………………….
¿Qué significado tiene la entrada “local binding”?
……………………………………………………………………………………….
……………………………………………………………………………………….
¿Qué significado tiene la entrada “remote binding”?
……………………………………………………………………………………….
……………………………………………………………………………………….
17
Práctica de MPLS
En el router R2, ¿por qué hay más de una asociación remota para cada red?
……………………………………………………………………………………….
……………………………………………………………………………………….
¿Qué significa la etiqueta “implicit NULL”?
……………………………………………………………………………………….
……………………………………………………………………………………….
Prueba ahora a ejecutar el ping –R y el traceroute desde tu host a los demás
hosts, y el traceroute desde tu router al router mas alejado. Compara el resultado
con el obtenido antes de activar MPLS:
R2#traceroute 172.16.1.1
Type escape sequence to abort.
Tracing the route to 172.16.3.1
1 172.16.23.2 [MPLS: Label 16 Exp 0] 28 msec 28 msec 28 msec
2 172.16.12.1 20 msec * 17 msec
¿Qué diferencias observas y por qué?
……………………………………………………………………………………….
……………………………………………………………………………………….
Paso 7: Modifica el tamaño de MTU para MPLS
Una de las características de MPLS es que permite anidar etiquetas MPLS en
función de la aplicación y por tanto puede aumentar el número de cabeceras y
para ello hay que informar a las interfaces físicas de dichas eventualidades para
evitar el descarte de tramas que superen la MTU. La cabecera MPLS tiene 4
bytes. La MTU por defecto siempre se toma de la propia interfaz, que en el caso
de una Ethernet es 1500 bytes. Para comprobarlo, utilizamos el comando “show
mpls interfaces interface-type interface-number detail” en las interfaces que une
los routers R1 y R2.
R2#show mpls interface ethernet 0/0 detail
Interface Ethernet0/0:
IP labeling enabled (ldp)
LSP Tunnel labeling not enabled
18
Práctica de MPLS
BGP tagging not enabled
Tagging operational
Fast Switching Vectors:
IP to MPLS Fast Switching Vector
MPLS Turbo Vector
MTU = 1500
En esta práctica modificaremos la MTU de la conexión MPLS Ethernet entre R1 y
R2 para soportar hasta 2 cabeceras de MPLS, de forma que la nueva MTU será
1508 bytes. Para modificar la MTU para MPLS utiliza el comando “mpls mtu”.
Verifica el cambio utilizando el comando “show mpls interfaces interface detail “.
R2(config)# interface ethernet0/0
R2(config-if)# mpls mtu 1508
R2# show mpls interface ethernet 0/0 detail
Interface Ethernet0/0:
IP labeling enabled (ldp):
Interface config
LSP Tunnel labeling not enabled
BGP tagging not enabled
Tagging operational
Fast Switching Vectors:
IP to MPLS Fast Switching Vector
MPLS Turbo Vector
MTU = 1508
Aunque hemos aumentado el tamaño de MTU para el tráfico MPLS de la interfaz
Ethernet si ejecutas el comando “show interface Ethernet 0/0” verás que el tamaño
de la MTU en la interfaz física sigue siendo de 1500 bytes. Intenta ahora averiguar
como podrías cambiar el tamaño de esta MTU e inténtalo. ¿Cuál es el resultado?
Paso 8: Análisis de tramas MPLS
Una vez tenemos la maqueta funcionando vamos a utilizar el Wireshark en los
hosts H2 y H3 para analizar los paquetes MPLS que pasan por el hub. Diseña en
primer lugar un filtro de captura que te permita coger solo ese tráfico, no el tráfico
de los hosts. Una vez lo tengas compara los resultados obtenidos, en particular la
estructura de la etiqueta MPLS, con lo que se ha visto en teoría. Analiza y
comenta los valores de las etiquetas que aparecen en relación con los resultados
obtenidos en la consola de los routers. Analiza también el valor del TTL que
aparecen en la etiqueta MPS y en la cabecera IP.
Ahora quita el filtro anterior y pon uno para capturar únicamente el tráfico ICMP.
Lanza un ping de H2 a H3 y otro de H1 a H4. ¿Qué diferencia hay entre los dos
19
Práctica de MPLS
ping? ¿van todos los paquetes encapsulados en MPLS? En caso negativo ¿Cómo
saben los routers que paquetes van encapsulados y cuales no?
Prueba ahora con el comando ping a enviar paquetes IP del tamaño máximo
(1500 bytes) de forma que al pasar por la Ethernet que une R1 con R2 llevando la
cabecera MPLS superen el tamaño máximo. Analiza esos paquetes con Wireshark
y comenta los resultados en relación con tu anterior intetno de aumentar la MTU
de la interfaz física. Explica las conclusiones obtenidas.
Prueba a hacer ping de H1 a H3, o de H2 a H0. Captura el ICMP Echo Request y
el ICMP Echo Reply, analiza, compara y comenta los resultados obtenidos.
Paso 9: Configuración de subinterfaces con etiquetas 802.1Q (VLANs)
Como has podido observar en la maqueta que hemos montado las interfaces
Ethernet de R1 y R2 cumplen una doble función, por un lado sirven para
interconectar los routers entre sí y por otro para conectarlos con sus respectivos
hosts. Esto significa que por la misma interfaz estos routers reciben y envían
paquetes con y sin etiquetas MPLS. Además, no conseguimos una separación
completa del tráfico de las diferentes redes, por tanto no se trata de una situación
ideal. Sería más conveniente haber utilizado interfaces físicas diferentes y haber
configurado MPLS únicamente en la que interconectara los dos routers. Sin
embargo, como solo disponemos de una interfaz Ethernet por router esto no ha
sido posible.
A continuación, para aproximarnos a esa ‘solución ideal’ de las dos interfaces
vamos a crear dos subinterfaces sobre la interfaz Ethernet, configurando en ellas
etiquetado 802.1Q (VLANs).
Conectando
entonces un
conmutador
adecuadamente configurado podremos separar el tráfico de los hosts del tráfico de
la red MPLS. Vamos a utilizar para ello un catalyst 2950. Utilizaremos la VLAN 2
para el tráfico R1-H1, la VLAN 3 para el R2-H2 y la VLAN 4 para el tráfico MPLS,
es decir el R1-R2. El esquema de la conexión es el que aparece en la figura 4. El
hub que aparece entre R1 y el conmutador nos permitirá ‘husmear’ el tráfico que
circula entre ambos equipos, pudiendo analizar con el Wireshark las tramas
802.1Q, tanto la de MPLS como las de R1-H1, que no llevan dicha etiqueta. Las
tramas R2-H2 no podremos verlas pues no llegarán al hub.
20
Práctica de MPLS
Console
Console
L0
172.16.0.1/32
L0
172.16.3.1/32
E 0/0
172.16.30.1/24
E 0/0
172.16.33.1/24
R0
H0
172.16.30.2/24
Rtr: 172.16.30.1
R3
S 0/0
172.16.23.3/24
S 0/0
172.16.22.3/24
S 0/0
172.16.22.2/24
L0
172.16.1.1/32
H3
172.16.33.2/24
Rtr: 172.16.33.1
MPLS
E 0/0.4
172.16.12.1/24
E 0/0.2
172.16.31.1/24
1 2 3 4
E 0/0.4
172.16.12.2/24
E 0/0.3
172.16.32.1/24
R1
S 0/0
172.16.23.2/24
R2
L0
172.16.2.1/32
Console
Console
H1
172.16.31.2/24
Rtr: 172.16.31.1
H2
172.16.32.2/24
Rtr: 172.16.32.1
RS-232
10BASE-T
V.35
Figura 4: Esquema de conexión de los routers con etiquetado 802.1Q.
Lo único que tenemos que modificar en los routers es la configuración de las
interfaces Ethernet de R1 y R2. Dichas interfaces se han de desdoblar en dos
subinterfaces cada una. Es buena práctica, aunque no necesario, asignar a las
subinterfaces el mismo número que el de la VLAN que les corresponde. Para
configurar las subinterfaces debes introducir en R1 y R2 los siguientes comandos:
R1(config)# interface ethernet 0/0
21
Práctica de MPLS
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#
no ip address 172.16.12.1 255.255.255.0
no ip address 172.16.31.1 255.255.255.0 secondary
no mpls ip
interface ethernet 0/0.2
ip address 172.16.31.1 255.255.255.0
encapsulation dot1Q 2
interface ethernet 0/0.4
ip address 172.16.12.1 255.255.255.0
mpls ip
encapsulation dot1Q 4
R2(config)# interface ethernet 0/0
R2(config-if)# no ip address 172.16.12.2 255.255.255.0
R2(config-if)# no ip address 172.16.32.1 255.255.255.0 secondary
R2(config-if)# no mpls ip
R2(config-if)# interface ethernet 0/0.3
R2(config-if)# ip address 172.16.32.1 255.255.255.0
R2(config-if)# encapsulation dot1Q 3
R2(config-if)# interface ethernet 0/0.4
R2(config-if)# ip address 172.16.12.2 255.255.255.0
R1(config-if)# mpls ip
R2(config-if)# encapsulation dot1Q 4
Ahora cuando R1 envíe paquetes a R2 les pondrá la etiqueta de la VLAN 4,
mientras que si los envía a H1 les pondrá la etiqueta de la VLAN 2. (Fíjate que
solo hemos preparado para MPLS la subinterfaz que corresponde a la
interconexión entre los routers.)
Ahora vamos a configurar el conmutador. Crearemos las VLANs 2, 3 y 4 y
asignaremos los puertos de la siguiente manera:
Puerto 1: trunk
Puerto 2: VLAN 2
Puerto 3: VLAN 3
Puerto 4: trunk
(Como la VLAN 4 la usan los routers y estos se conectan a puertos trunk a esta
VLAN no es necesario asignarle ningún puerto.)
Para configurar el conmutador nos conectaremos por consola mediante el
programa minicom y en primer lugar comprobaremos que no tenga ya alguna
configuración introducida que pudiera interferir con nuestra práctica, en cuyo caso
restauraremos la configuración de fábrica. A continuación introduciremos la
configuración siguiente:
22
Práctica de MPLS
#configure terminal
Enter configuration commands, one per line.
(config)#vlan 2
(config-vlan)#name red H1
(config-vlan)#vlan 3
(config-vlan)#name red H2
(config-vlan)#vlan 4
(config-vlan)#name red R1-R2
(config-vlan)#i fa0/1
(config-if)# switchport mode trunk
(config-if)#i fa0/2
(config-if)# switchport access vlan 2
(config-if)#i fa0/3
(config-if)# switchport access vlan 3
(config-if)#i fa0/4
(config-if)# switchport mode trunk
(config-if)#exit
(config)#CTRL/Z
(config)#CTRL/Z
End with CNTL/Z
Ahora prueba si hay conectividad entre R1-R2 y entre R1-H1 y R2-H2. Observa la
respuesta del comando ‘show interface Ethernet 0/0’. También puedes preguntar
por subinterfaz.
Conecta ahora H0 (o un ordenador ajeno a la maqueta) al hub y analiza con
Wireshark el tráfico que discurre por él. Para comparar genera tráfico que vaya por
la VLAN de MPLS (la 4) y que vaya por la 2.
Si quisiéramos analizar el tráfico en el lado de R2 podríamos conectar otro hub a
su enlace con el conmutador.
También se podría configurar port mirroring en el conmutador para conseguir el
mismo efecto que con los hubs.
23
Práctica de MPLS
ANEXO I: Terminología básica de MPLS:








FEC (Forwarding Equivalence Class): conjunto de paquetes que entran
en la red MPLS por una misma interfaz, que reciben la misma etiqueta y por
tanto circulan por un mismo trayecto. La FEC puede caracterizarse por el
valor de uno o varios de los campos de la cabecera IP.
LSP (Label Switched Path): camino que siguen los paquetes que
pertenecen a la misma FEC.
LSR (Label Switching Router): router que puede encaminar paquetes en
función del valor de la etiqueta MPLS
LIB (Label Information Base): La tabla de etiquetas que manejan los
routers MPLS. Relaciona la pareja (interfaz de entrada - etiqueta de
entrada) con (interfaz de salida - etiqueta de salida). En versiones de IOS
antiguas, en lugar de Label se utilizaba Tag y de ahí, que hay algunos
comandos que utilizan “tag” en lugar de “label”.
LDP (Label Distribution Protocol): protocolo estándar utilizado para la
asignación de etiquetas MPLS. Es el más extendido, aunque no el único.
FIB (Forwarding Information Base): es la tabla de rutas del router
simplificada, indicando para cada red de destino la interfaz que debe
utilizarse y el router vecino al que ha de enviarse (‘Next Hop’). Esta tabla se
actualiza automáticamente a petición de los protocolos de routing y existe
cuando esta CEF activado, aunque no se utilice MPLS.
LFIB (Label Forwarding Information Base): es la tabla que indica los
cambios que el router debe realizar en la etiqueta MPLS de los paquetes.
PHP (Penultimate Hop Popping): es una forma de funcionar en la que el
penúltimo router del trayecto quita la etiqueta MPLS porque sabe que el
siguiente ya es el final del circuito y tiene la red de destino directamente
conectada. Permite reducir el consumo de CPU y mejorar el rendimiento del
router, y es el modo de funcionamiento por defecto en los routers de Cisco
Systems.
24
Descargar