jueves, 11 de octubre de 2018


Police Based Routing

PBR toma el paquete en la interfaz entrante después de la desencapsulación pero antes de que el router use la búsqueda de la tabla CEF.

PBR envía el paquete sin utilizar la tabla de enrutamiento (o la tabla CEF).


Si en la topología, se realiza un ping entre R1 y R4, la tabla de enrutamiento de R2 determinará que los paquetes del ping, vayan por R3, dado que la ruta por R3 es a través de una interface fast ethernet y por R5 lo haría con menor ancho de banda, suponiendo que los routers están usando OSPF o EIGRP.

R1#traceroute 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
  1    192.168.12.2     56 msec 36 msec 48 msec
  2    192.168.23.2    32 msec 40 msec 12 msec
  3    192.168.35.2    52 msec 44 msec 84 msec
R1#

La tabla en R2:
C    192.168.12.0/24 is directly connected, FastEthernet0/0
C    192.168.25.0/24 is directly connected, Serial0/0
     4.0.0.0/32 is subnetted, 1 subnets
D       4.4.4.4 [90/435200] via 192.168.23.2, 00:04:43, FastEthernet0/1
C    192.168.23.0/24 is directly connected, FastEthernet0/1
D    192.168.35.0/24 [90/307200] via 192.168.23.2, 00:07:57, FastEthernet0/1

PBR se puede usar en el router R2, para lograr cambios de envío de los paquetes, los podríamos dirigir por R5 como caso especial, para ello, si configuramos route-map, R2 no tendrá en cuenta la tabla de enrutamiento y dirige los paquetes en base a esta configuración.

Para la configuración, primero definiremos que paquetes van a ir por R5, esto lo hacemos con una ACL:

                R2(config)# access-list 101 permit ip host 192.168.12.1 host 4.4.4.4

Luego definimos el route-map con el nombre "ESPECIAL" y con la opción de permitir. Como configuración específica, definimos la coincidencia o match, en este caso la condición está establecida por la ACL 101. Luego podemos hacer cambios con SET, cambiando el siguiente salto, para que vaya por R5.

R2(config)# route-map PRUEBA permit
R2(config-route-map)# match ip address 101
R2(config-route-map)# set ip next-hop 192.168.25.2


Una opción a la última sentencia es :   set interface s0/0

Debemos aplicarlo en una interface a través del siguiente comando:

R2(config)#interface f0/0
R2(config-if)#ip policy route-map PRUEBA


Con este comando le dice al router que si llegan paquetes a través de esta interface, debe aplicar lo configurado en route -map

Si ahora hacemos un tracert para verificar la ruta, notamos que ha cambiado, pasando por R5.

R1# traceroute 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
  1    192.168.12.2     44 msec 8 msec 16 msec
  2    192.168.25.2     40 msec 24 msec 48 msec
  3    192.168.35.2     32 msec 24 msec 20 msec


Si cambiamos la IP de R1 a 192.168.12.3, para que no coincida con el ACL 101, veremos que los paquetes no son afectados por route-map y siguen las indicaciones de la tabla de enrutamiento.
R1#traceroute 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
  1    192.168.12.2     56 msec 36 msec 48 msec
  2    192.168.23.2    32 msec 40 msec 12 msec
  3    192.168.35.2    52 msec 44 msec 84 msec


Para visualizar:
R2# show ip policy
Interface      Route map
Fa0/0          PRUEBA
R2#

R2# debug ip policy
Policy routing debugging is on

R2(config)# logging console 7

R2#
*Mar  1 00:38:42.823: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:42.823: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed
*Mar  1 00:38:42.919: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:42.919: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed
*Mar  1 00:38:43.043: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:43.043: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed
R2#
*Mar  1 00:38:43.119: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:43.119: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed
*Mar  1 00:38:43.159: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:43.159: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed
*Mar  1 00:38:43.235: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, len 28, FIB policy match
*Mar  1 00:38:43.235: IP: s=192.168.12.1 (FastEthernet0/0), d=4.4.4.4, g=192.168.25.2, len 28, FIB policy routed


Analizando la captura del debug: para los paquetes con source: 192.168.12.1 y destination: 4.4.4.4 hay coincidencia (match) con route-map PRUEBA,  que hace que los paqutes sean enviadas por la interface serial 0/0 hacia R5.

A tener en cuenta:
  set ip next-hop 192.168.25.2   versus    set ip default next-hop 192.168.25.2

Cuando se usa la opción con default, primero revisa si hay una ruta en al tabla de enrutamiento y esa es la que usa, si no existe ruta en la tabla usa PBR y tiene en cuenta el next-hop o siguiente salto.






Calidad de Servicio


Calidad de Servicio (QoS)

Cuando se trata de configurar la Calidad de Servicio (QoS) en los equipos de Cisco, hay un par de conceptos principales que deben ser comprendidos.

Cisco QoS generalmente se configura en equipos modernos utilizando la interfaz de línea de comandos QoS (MQC). Con MQC:

- el tráfico se clasifica usando los comandos:
                         class-map                 match

- la política de tráfico se define utilizando los comandos:
                        police-map                class               set

- y las políticas se asignan utilizando el comando:
                        service-police


Otro método que se puede usar es mediante el uso de AutoQoS. AutoQoS elimina gran parte de la configuración manual del proceso y crea mapas de clases y políticas que son típicos de la mayoría del tráfico (según la definición de la versión de AutoQoS que esté utilizando) y establece políticas en las interfaces que especifique en una configuración guiada.

Echemos un vistazo a cómo se ve la configuración tanto para MQC como para AutoQoS.


Configuración con  MQC
Aquí hay algunos de los comandos MQC mencionados anteriormente; tenga en cuenta que hay más comandos match y set disponibles, a continuación solo se muestra un ejemplo.

  class-map
           
            router(config)# class-map class-map-name

Este comando se usa para crear un class-map específico. El parámetro class-map-name se usa para especificar el nombre del class-map y puede tener hasta 40 caracteres alfanuméricos.

Ejemplo:
class-map importante
    match protocol http
    match protocol https


  match protocol

            router(config-cmap)# match protocol protocol-name

Este comando se usa para buscar coincidencia con un protocolo específico. El parámetro protocol-name se usa para especificar el nombre del protocolo que debe coincidir, hay varios que se pueden usar, incluidos dhcp, eigrp, h323, http e irc.

  match cos

            router(config-cmap)# match cos cos-value [cos-value]
               
Ejemplo:                             match cos 2


Este comando se usa para buscar coicidencia con un valor de clase de servicio (CoS) específico. El parámetro cos-value se utiliza para especificar el valor de CoS transportado en la trama que se va a buscar coincidencia o match; se pueden especificar múltiples cos-value  en un comando.

  match dscp

            router(config-cmap)# match dscp dscp-value [dscp-value]

Este comando se usa para buscar coincidencia con un valor específico del Punto de código de servicios diferenciados (DSCP). El valor dscp-value se usa para especificar el valor de DSCP transportado en el paquete que se va a emparejar; múltiples valores de dscp-value  se pueden especificar en un comando.


  policy-map

            router(config)# policy-map policy-map-name

Este comando se usa para crear un mapa de políticas específico. El parámetro policy-map-name se usa para especificar el nombre del policy-map y puede tener hasta 40 caracteres alfanuméricos.




class

            router(router-pmap)# class {class-name | class-default}

Este comando se usa para vincular una política a un específico class-map. El class-name se usa para coincidir con el nombre class-map-name  configurado en el comando de class-map. El parámetro class-default se utiliza para especificar el mapa de clases predeterminado.

  set cos

            router(config-pmap-c)# set cos cos-value

Este comando se usa para establecer un valor de CoS específico. El parámetro cos-value se utiliza para especificar el valor de Clase de servicio que se establecerá en la trama.

  set dscp

            router(config-pmap-c)# set dscp dscp-value

Este comando se usa para establecer un valor de DSCP específico. El valor dscp se usa para especificar el valor de DSCP que se establecerá en el paquete.

service-policy

            router(config-if)# service-policy {input | output} policy-map-name

Este comando se usa para vincular un mapa de políticas a una interfaz. Los parámetros de entrada y salida se usan para especificar en qué dirección se debe evaluar la política. El parámetro policy-map-name se usa para especificar el nombre del mapa de política coincidente.
            
  


Ejemplo de MQC

Para resumir esto un poco, la siguiente es una configuración de muestra que coincide con todo el tráfico H.323 y le da un valor DSCP de EF (reenvío acelerado). La configuración se establecerá para ser evaluada en el tráfico que ingresa a una interfaz.

router(config)# class-map h323
router(config-cmap)# match protocol h323

router(config)# policy-map h323-policy
router(config-pmap)# class h323
router(config-pmap-c)# set dscp EF

router(config-if)# service-policy input h323-policy



Los 64 valores DSCP se organizan en tres categorías:

Best-Effort (BE) : DSCP = 0, es el valor predeterminado para todos los paquetes IP. No se implementa ningún plan QoS.

Expedited Forwarding (EF) - DSCP = 46 = 101 110. Los primeros 3 bits (101) corresponde con el valor CoS de Nivel 2 para tráfico de voz. En Capa 3, Cisco recomienda que EF solo se utilice para marcar paquetes de voz.

Assured Forwarding (AF) - AF utiliza los 5 bits DSCP más significativos para indicar las colas y la preferencia de eliminación. 
Los 3 bits más significativos se utilizan para designar la clase. La clase 4 es la mejor cola y la clase 1 es la peor cola. 
Los bits 4 y 5 se utilizan para designar la preferencia de eliminación. El sexto bit se pone a cero. La fórmula AFxy muestra cómo se calculan los valores de AF. 




Configuración AutoQoS

En realidad, hay dos tipos diferentes de AutoQos:
            AutoQoS para VoIP (que fue la primera iteración) y
            AutoQoS en la empresa (que detecta los tipos de tráfico y las políticas de         compilación basadas en estos datos).

  auto qos voip

            router(config-if)# auto qos voip

Este comando se usa para instalar la configuración de AutoQoS en una interfaz específica.

  auto discovery qos

            router(config-if)# auto discovery qos

Este comando se utiliza para iniciar la parte de descubrimiento de tráfico de AutoQoS en Enterprise. Este comando debe ejecutarse durante un período de tiempo para detectar correctamente los tipos de tráfico antes de usar el siguiente comando.

auto qos

            router(config-if)# auto qos

Este comando se usa para instalar AutoQoS en la configuración de Enterprise en una interfaz específica.


Topología


 Configuración de router Prio

Interface serial 0/0
   bandwith 128

class-map HTTP
  match protocol http
class-map RTP
   match protocol rtp

police-map CBWFQ
   class HTTP
      bandwidth 16
      queue-limit 12
   class RTP
      bandwidth 96
      queue-limit 32

Interface serial 0/0
  max-reserved-bandwidth 100  
  service-police output CBWFQ

// la interface reserva el 75% de su ancho de banda, para aumentar use: max...  
// sino usamos el anterior comando, saldría el mensaje: disponible solo 80 kbps

show police-map interface serial 0/0