Análisis de la tabla de enrutamiento

En los posts anteriores de esta serie, hablamos sobre los modos de operación y configuración de los dispositivos IOS de Cisco, y conectamos nuestro entorno de simulación a máquinas virtuales en VirtualBox, para los equipos hosts de la topología. En este post vamos a analizar brevemente la tabla de enrutamiento, y a configurar algunas rutas estáticas en ella.

Escenario

La siguiente imagen muestra la topología que vamos a usar para este ejemplo. Básicamente, tendremos 3 enrutadores conectados entre sí a través de interfaces seriales, y en cada un PC con interfaz FastEthernet. Para el caso de los PCs he usado Damn Small Linux en VirtualBox, para no gastar demasiada RAM.

Selection_003

Esquema de direccionamiento basado en subredes

Esta técnica permite, a partir de un único bloque de direcciones crear varias redes lógicas dentro de un esquema de direccionamiento completo; para esto, se toman bits de la porción de host, y se destinan para crear nuevas direcciones de red, derivadas de la misma original. A mayor cantidad de bits usados, más subredes podrán definirse, y estas tendrán menos cantidad de direcciones de hosts disponibles para cada una.

Fórmula para calcular subredes
En general, por cada bit tomado de la dirección de red original para subredes, se aumentará la cantidad de éstas en una potencia de 2, de manera que siempre, para n bits del espacio de hosts asignados a nuevas subredes, se podrán crear 2^{n} nuevas direcciones de red.

Cantidad de hosts disponibles
Debido a que en el campo de host se deben reservar las direcciones que identifican a la red y a los envíos en broadcast, la cantidad de direcciones disponibles de acuerdo a los bits asignados, se reduce en 2, así, para n bits en el campo de host, se tendrá una disponibilidad de 2^{n-2} direcciones para hosts.

Este es el esquema de direccionamiento para las subredes que se forman, se han tomado 5 bits de la porción de host de un bloque de direcciones con máscara 24:

Subred Dirección de Red Máscara
R1 – R2 10.10.10.32 255.255.255.224
R1 – R3 10.10.10.64 255.255.255.224
R3 – R2 10.10.10.96 255.255.255.224
PC1 – R1 10.10.10.128 255.255.255.224
PC2 – R2 10.10.10.160 255.255.255.224
PC3 – R3 10.10.10.192 255.255.255.224

Rutas estáticas y rutas por defecto

La información contenida en la tabla de enrutamiento, se usa para buscar la mejor coincidencia con el destino de los paquetes que recibe el router, de acuerdo con la información del paquete de capa 3 recibido, es decir, la dirección IP.

Por defecto, se agregan como entradas las redes que el dispositivo tiene directamente conectadas a sus interfaces, y adicionalmente , es posible asignar manualmente rutas a las redes conocidas del área administrativa, y estas también pasarán a formar parte de la tabla de enrutamiento. Estas rutas regularmente se usan cuando solamente existe un camino de acceso hacia determinada red, de manera que se pueden configurar y no tener que incluirse en un protocolo de enrutamiento.

Dentro de la búsqueda en la tabla de enrutamiento, el IOS buscará la red de mayor coincidencia con la dirección de destino de los paquetes de deba reenviar, y si no encuentra ninguna coincidencia, descartará el paquete. La coincidencia con una u otra red se determina a partir de la cantidad de bits comunes entre las direcciones IP de destino, y las direcciones IP de las redes almacenadas en la tabla, de manera que una ruta configurada manualmente con la dirección de red 0.0.0.0, siempre coincidirá con cualquier paquete, y éstos no serán descartados. Este tipo de rutas se conocen como rutas por defecto, y se utilizan generalmente cuando se conecta hacia una red muy amplia como Internet, a través de una puerta de enlace o un ISP, de manera que el dispositivo de siguiente salto, determinará el camino adecuado para los datos.

Configuración de rutas estáticas

Para agregar una ruta estática a un dispositivo de enrutamiento, es necesario especificar la red de destino, así como la dirección IP de siguiente salto, es decir, del dispositivo al cuál se le enviarán los paquetes que tengan como destino dicha red, para el caso de redes multipunto, o bien la interfaz de salida del enrutador por la cuál se enviarán los paquetes, para el caso de conexiones punto a punto.

La sintaxis del comando utilizado para agregar rutas estáticas en el IOS de Cisco es la siguiente:

Router(config)# ip route network-address subnet-mask {ipaddress | exit interface}

Donde network-address representa la dirección de la red de destino, subnet-mask la máscara de red asociada a ésta, ip-address la dirección de próximo salto, y exit-interface la dirección de salida de los paquetes.

Configuración

Configuraciones de interfaces tap para las máquinas virtuales:

# tunctl
Set 'tap0' persistent and owned by uid 0
# tunctl
Set 'tap1' persistent and owned by uid 0
# tunctl
Set 'tap2' persistent and owned by uid 0
# ifconfig tap0 10.10.10.129 netmask 255.255.255.224 up
# ifconfig tap1 10.10.10.161 netmask 255.255.255.224 up
# ifconfig tap2 10.10.10.195 netmask 255.255.255.224 up

Archivo .net:

# Configuración de rutas estáticas

[localhost]

    [[7200]]
    image = /home/ht/Cisco IOS/images/c7200-ik9s-mz.123-17b.image
    npe = npe-400
    ram = 160
    idlepc = 0x6080ac48

    [[ROUTER R1]]
    model = 7200
    s1/0 = R2 s1/0
    s1/1 = R3 s1/0
    f0/0 = NIO_tap:tap0

    [[router R2]]
    model = 7200
    s1/1 = R3 s1/1
    f0/0 = NIO_tap:tap1

    [[router R3]]
    model = 7200
    f0/0 = NIO_tap:tap2

Configuración básica de los enrutadores:

R1

Router>enable 
Router#conf term
Router(config)#hostname R1
R1(config)#inter s1/0
R1(config-if)#ip add 10.10.10.33 255.255.255.224
R1(config-if)#clock rate 64000
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#inter s1/1
R1(config-if)#ip add 10.10.10.65 255.255.255.224
R1(config-if)#clock rate 64000                  
R1(config-if)#no sh                             
R1(config-if)#exit
R1(config)#inter f0/0                        
R1(config-if)#ip add 10.10.10.130 255.255.255.224
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#

R2

Router>enable
Router#conf term
Router(config)#hostname R2
R2(config)#inter s1/0
R2(config-if)#ip add 10.10.10.34 255.255.255.224
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#inter s1/1
R2(config-if)#ip add 10.10.10.97 255.255.255.224
R2(config-if)#clock rate 64000
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#inter f0/0
R2(config-if)#ip add 10.10.10.162 255.255.255.224
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#

R3

Router>enable
Router#conf term
Router(config)#hostname R3
R3(config)#inter s1/0
R3(config-if)#ip add 10.10.10.66 255.255.255.224
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#inter s1/1
R3(config-if)#ip add 10.10.10.98 255.255.255.224
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#
R3(config)#inter f0/0
R3(config-if)#ip add 10.10.10.194 255.255.255.224
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#

Tablas de enrutamiento

La configuración de las máquinas virtuales la estoy obviando, pues es bastante conocido cómo configurar IPs y máscaras de red en cualquier sistema operativo. Ahora lo que haremos será ver las tablas de enrutamiento y, para cada uno de los enrutadores, agregar las rutas que faltan para cerrar la topología. El comando para ver la tabla de enrutamiento es show ip route.

R1#show ip route
Codes: 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

Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 3 subnets
C       10.10.10.32 is directly connected, Serial1/0
C       10.10.10.64 is directly connected, Serial1/1
C       10.10.10.128 is directly connected, FastEthernet0/0
R1#

Para cada una de las tablas, en la parte superior aparece un código que nos permite identificar cómo son insertadas las rutas en la tabla. En este caso, las rutas que aparecen en cada tabla solamente corresponden a las redes directamente conectadas.

R2#show ip route
Codes: 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

Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 3 subnets
C       10.10.10.32 is directly connected, Serial1/0
C       10.10.10.96 is directly connected, Serial1/1
C       10.10.10.160 is directly connected, FastEthernet0/0
R2#
R3#show ip route
Codes: 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

Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 3 subnets
C       10.10.10.64 is directly connected, Serial1/0
C       10.10.10.96 is directly connected, Serial1/1
C       10.10.10.192 is directly connected, FastEthernet0/0
R3#

Configuración de rutas estáticas

De acuerdo con la sintaxis explicada para el comando, la siguiente es la configuración de las rutas estáticas necesarias para completar la topología, la verificación en este caso la haré únicamente con un ping desde PC1 hacia PC3, pero es equivalente para el resto de las posibles rutas. (Para el caso de las tablas de enrutamiento he omitido los códigos de las rutas).

R1(config)#ip route 10.10.10.96 255.255.255.224 10.10.10.34
R1(config)#ip route 10.10.10.160 255.255.255.224 10.10.10.34
R1(config)#ip route 10.10.10.192 255.255.255.224 10.10.10.66
R1(config)#exit
R1#show ip route
Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 6 subnets
C       10.10.10.32 is directly connected, Serial1/0
C       10.10.10.64 is directly connected, Serial1/1
S       10.10.10.96 [1/0] via 10.10.10.34
C       10.10.10.128 is directly connected, FastEthernet0/0
S       10.10.10.160 [1/0] via 10.10.10.34
S       10.10.10.192 [1/0] via 10.10.10.66
R1#
R2(config)#ip route 10.10.10.64 255.255.255.224 10.10.10.98
R2(config)#ip route 10.10.10.128 255.255.255.224 10.10.10.33
R2(config)#ip route 10.10.10.192 255.255.255.224 10.10.10.98
R2(config)#exit
R2#show ip route
Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 6 subnets
C       10.10.10.32 is directly connected, Serial1/0
S       10.10.10.64 [1/0] via 10.10.10.98
C       10.10.10.96 is directly connected, Serial1/1
S       10.10.10.128 [1/0] via 10.10.10.33
C       10.10.10.160 is directly connected, FastEthernet0/0
S       10.10.10.192 [1/0] via 10.10.10.98
R2#
R3(config)#ip route 10.10.10.32 255.255.255.224 10.10.10.65
R3(config)#ip route 10.10.10.128 255.255.255.224 10.10.10.65
R3(config)#ip route 10.10.10.160 255.255.255.224 10.10.10.97
R3(config)#exit
R3#show ip route
Gateway of last resort is not set

     10.0.0.0/27 is subnetted, 6 subnets
S       10.10.10.32 [1/0] via 10.10.10.65
C       10.10.10.64 is directly connected, Serial1/0
C       10.10.10.96 is directly connected, Serial1/1
S       10.10.10.128 [1/0] via 10.10.10.65
S       10.10.10.160 [1/0] via 10.10.10.97
C       10.10.10.192 is directly connected, FastEthernet0/0
R3#

Finalmente, terminamos con el ping de PC1 a PC3

dsl@box:~$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:E7:7D:AD
          inet addr:10.10.10.131  Bcast:10.10.10.159  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU: 1500  Metric:1
          RX packets:74 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions: 0 txqueuelen:1000
          RX bytes:12414 (12.1 Kib)  TX bytes:4684 (4.5 KiB)
          Interrupt:10 Base address:0xd020

dsl@box:~$ sudo ping 10.10.10.195
PING 10.10.10.195 (10.10.10.195): 56 data bytes
64 bytes from 10.10.10.195: icmp_seq=0 ttl=62 time=38.4 ms
64 bytes from 10.10.10.195: icmp_seq=0 ttl=62 time=44.7 ms
64 bytes from 10.10.10.195: icmp_seq=0 ttl=62 time=42.0 ms
64 bytes from 10.10.10.195: icmp_seq=0 ttl=62 time=11.5 ms

--- 10.10.10.195 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 11.5/34.1/44.7 ms
dsl@box:~$

Conclusión

Este ha sido un post bastante más largo que los anteriores, pero nos deja una idea clara de cómo funcionan las tablas de enrutamiento y las rutas configuradas manualmente. Existen otros conceptos asociados a esto, como distancia administrativa y métricas de ruta, que analizaremos en detalle en los próximos posts.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s