La idea de este post es dar unas nociones básicas de cómo manejar los anchos de banda usando IOS usando un ejemplo concreto.
Ates que nada debo aclarar que en este post no voy a ingresar en cuestiones avanzadas del tema, sino que voy a dar una visión general de como se clasifica el tráfico para luego aplicarle una política determinada. Puntualmente estoy hablando de limitar los anchos de banda con las herramientas que nos provee IOS.
En el ejemplo, tenemos un router de borde que da servicio a cinco subredes, y queremos manejar los anchos de banda de cada una por separado.
Veamos el diagrama:
Lo primero que vamos a hacer es definir access lists por cada rango de direcciones IP que vamos a
utilizar para definir los anchos de banda.
access-list 10 permit 200.200.10.0 0.0.0.255 access-list 20 permit 200.200.20.0 0.0.0.255 access-list 30 permit 192.168.30.0 0.0.0.255 access-list 31 permit 200.200.30.0 0.0.0.7 access-list 32 permit 200.200.30.8 0.0.0.7
Ahora definiremos las class-map.
Estas son estructuras que contienen las condiciones que se deben cumplir para que pase algo.
Como un class-map puede tener varias condiciones adentro, debemos decir si se tienen que dar todas a la vez, o bien cualquiera de ellas.
Para eso utilizamos los parámetros match-all ó match-any respectivamente. Si no especificamos ninguno de los dos, se tomará match-all por defecto.
Formato:
Router(config)#class-map [match-all | match-any] NombreDeLaClassMap
Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#class-map match-all Prueba Router(config-cmap)# Router(config-cmap)#description matchea el trafico web de una determinada red Router(config-cmap)#match protocol http Router(config-cmap)#match access-group 1 Router(config-cmap)#exit Router(config)#class-map match-any P2P Router(config-cmap)#description Con esto voy a filtrar CUALQUIER cliente P2P (emule, ares, etc...) Router(config-cmap)#match protocol ares Router(config-cmap)#match protocol bittorrent Router(config-cmap)#match protocol directconnect Router(config-cmap)#match protocol edonkey Router(config-cmap)#match protocol gnutella Router(config-cmap)#match protocol kazaa Router(config-cmap)#match protocol kazaa2 Router(config-cmap)#match protocol napster Router(config-cmap)#match protocol winmx Router(config-cmap)#exit Router(config)#
Así creamos todos los class-map que sean necesarios. Ellos pueden matchear por:
- ip de origen
- ip de destino
- access-list
- protocolo (NBAR)
- Marca de paquete
- Etiqueta de MPLS
- Todos los paquetes (any)
- Clase de Servicio (COS)
- Interfaz de entrada
- Otros (dependiendo del IOS)
Configurar la policy-map:
Con esto creamos una política que va a ser un agrupamiento de las classmaps bajo un mismo nombre, en donde vamos a definir qué se hace cuando se cumplen las condiciones que ellas establecen.
Formato:
Router(config)#policy-map NombreDeLaPolicyMap Router(config-pmap)#class NombreDeLaClassMap Router(config-pmap-c)#police Garantizado Rafagas Pico \ conform-action Accion exceed-action Accion violate-action Accion
Acción puede ser:
- Dejarlo pasar (transmit)
- Filtrarlo (drop)
- Otra (dependiendo del IOS)
Ejemplo:
Router(config)#policy-map TraficoInternet Router(config-pmap)#class Prueba Router(config-pmap-c)#police 1000000 1500000 2000000 conform-action \ transmit exceed-action transmit violate-action drop Router(config-pmap-c)#exit Router(config-pmap)#class P2P Router(config-pmap-c)#drop Router(config-pmap-c)#exit Router(config)#
Ahora solo queda aplicar todo en las interfases que sean necesarias:
Formato:
Router(config)#interface NombreInterfase Router(config-if)#service-policy {input | output} NombreDeLaPolicyMap Router(config)#exit
Ejemplo:
Router(config)#interface FastEthernet0/0 Router(config-if)#service-policy input TraficoInternet Router(config-if)#service-policy output TraficoInternet Router(config-if)#exit
Ejemplo completo de la config del diagrama de arriba:
Router#sh run Building configuration... Current configuration : 3501 bytes ! version 12.2 service timestamps debug uptime service timestamps log uptime service password-encryption ! hostname Router !! ip subnet-zero ip cef !! ip name-server 209.165.201.1
ip name-server 209.165.201.2
! ip audit notify log ip audit po max-events 100 !! class-map match-all VlanServidores match access-group 20 class-map match-all VlanAbonados match access-group 10 class-map match-all VlanEmpresaA match access-group 31 class-map match-all VlanEmpresaB match access-group 32 class-map match-any P2P description Protocolos Basura match protocol fasttrack match protocol gnutella match protocol napster match protocol netbios match protocol emule match protocol ares match protocol bittorrent class-map match-all VlanEmpleados match access-group 30 !! policy-map TraficoSaliente description Trafico Saliente class VlanAbonados police 2000000 62500 62500 conform-action transmit exceed-action drop class VlanServidores police 2000000 4000000 4500000 conform-action transmit exceed-action transmit violate-action drop class VlanEmpleados police 1000000 2000000 2000000 conform-action transmit exceed-action transmit violate-action drop class VlanEmpresaA police 1000000 31250 31250 conform-action transmit exceed-action drop class VlanEmpresaB police 256000 8000 8000 conform-action transmit exceed-action drop class P2P police 8000 1500 1500 conform-action drop exceed-action drop violate-action drop class class-default police 8000 1500 1500 conform-action drop exceed-action drop violate-action drop policy-map TraficoEntrante description Trafico Entrante class VlanAbonados police 2000000 62500 62500 conform-action transmit exceed-action drop class VlanServidores police 2000000 4000000 4500000 conform-action transmit exceed-action transmit violate-action drop class VlanEmpleados police 1000000 2000000 2000000 conform-action transmit exceed-action transmit violate-action drop class VlanEmpresaA police 1000000 31250 31250 conform-action transmit exceed-action drop class VlanEmpresaB police 256000 8000 8000 conform-action transmit exceed-action drop class P2P police 8000 1500 1500 conform-action drop exceed-action drop violate-action drop class class-default police 8000 1500 1500 conform-action drop exceed-action drop violate-action drop !!! interface FastEthernet0/0 description Interfase al Switch de Core no ip address duplex auto speed auto ! interface FastEthernet0/0.10 description VLAN10: Abonados de Internet (2mbps) bandwidth 2000 ip address 200.200.10.1 255.255.255.0 ! interface FastEthernet0/0.20 description VLAN20: Red de Servidores (2mbps) bandwidth 2000 ip address 200.200.20.1 255.255.255.0 ! interface FastEthernet0/0.30 description VLAN30: Empleados (1mbps) bandwidth 1000 ip address 192.168.30.1 255.255.255.0 ! interface FastEthernet0/0.31 description VLAN31: Empresa A (1mbps) bandwidth 1000 ip address 200.200.30.1 255.255.255.248 ! interface FastEthernet0/0.32 description VLAN32: Empresa B (256 kbps) bandwidth 256 ip address 200.200.30.9 255.255.255.248 ! interface Serial0/0 bandwidth 10000000 ip address 200.43.64.97 255.255.255.224 service-policy input TraficoEntrante service-policy output TraficoSaliente ! ip classless no ip http server ! access-list 10 permit 200.200.10.0 0.0.0.255 access-list 20 permit 200.200.20.0 0.0.0.255 access-list 30 permit 192.168.30.0 0.0.0.255 access-list 31 permit 200.200.30.0 0.0.0.7 access-list 32 permit 200.200.30.8 0.0.0.7 ! line con 0 line aux 0 line vty 0 4 login ! end
Más adelante escribiré algun material más profesional para que podamos manejar el QOS, pero hasta tanto, espero que les sirva esta breve intro.
Saludos
11 comentarios:
Muchas gracias por la ayuda, lo probaré
Hola, queria saber que IOS necesito para poder filtar cualquier cliente P2P.
Estimado Guillermo:
Puedes llevar a cabo esta tarea de muchas formas distintas, ya sea usando access-lists que permitan solo los puertos bien conocidos o bien usando NBAR.
En cuanto al último, te cuento que yo lo usé en varias plataformas, desde un 2600 en adelante ya lo puedes usar -incluso con IOS viejos-, pero debes tener en cuenta ciertas cosas:
Debes actualizar los protocolos de NBAR con los archivos PDLM que se bajan del sitio de Cisco
El uso de NBAR hace que el router vea el payload de los paquetes antes de enviarlos, y esto se realiza por software por lo que el rendimiento se ve afectado seriamente
Siempre van a seguir funcionando las aplicaciones P2P que encripten la información
Consultame nuevamente si es que te quedan dudas.
Saludos
Interesante pero una duda que hasta ahora no puedo despejar es porque se controla el trafico de salida?, acaso no es el trafico de entrada el cual se debe controlar, me refiero a que yo quiero que toooodo el trafico p2p, tenga un ancho de banda de un 1%, eso quiere decir que los paquetes que llegan se descartaran cumpliendo esta norma y asi no me deja lenta la linea. Acaso asi no deberia controlarse?
Gracias!!
En realidad en todos los casos la limitación va a ser en la salida de las interfaces. Vos podés hacer policing a la entrada para -por ejemplo- decir que paquetes procesas antes que otros, pero no para decir cuantos paquetes por segundo llegan dado que eso varía de acuerdo al emisor.
No es raro suponer que yo solo puedo limitar lo que envío y no lo que recibo. En todo caso si tengo un equipo con dos interfaces, una hacia internet y otra hacia la LAN, la subida hacia la LAN termina siendo la bajada de los usuarios.
Espero haber despejado tu duda.
Saludos
Buenas, soy reciente lector del blog y aprovecho a felicitarte. Articulos muy lindos y bien explicados.
Te planteo un posible error en el esquema de QoS, puntualmente en el MATCH de las CLASS para identificar las distintas VLANs:
Tanto para el trafico entrante como el saliente estas usando la misma ACL standard que considera ORIGENES IP. Al aplicar en el trafico entrante dicha ACL para la CLASS asociada a una VLAN, no matchearias porque la distincion en este sentido la haces sobre IP DESTINO (internet hacia tus VLANS) y las sentencias solo miran ORIGEN, por lo que no tendrias policy alguno en este sentido.
Si hay un error conceptual, pido disculpas.
Abrazo desde Arequito!
en donde redefino los access list por rango de direcciones???
Hola, UN fAVOR NO podras dejar el ejercio realizado porque ya no intente realizar pero no me sale no se en que me falla realizo los puntos pero me fallan las vlan
me podrian ayudar explicandome lo de las rafagas??
Me has ayudado a entender las QoS pues tengo una configuracion extensa y dificil.
gracias por la informcion
Publicar un comentario