RENZO TACO COAYLA
[email protected] - http://itsperu.com Movistar : 990949624 - RPM: #990949624 Claro: 952665666 - RPC: 952665666
• El mecanismo de calidad de servicio se refiere a la habilidad en la red de ofrecer prioridad a unos determinados tipos de tráfico, independientemente de la tecnología de red utilizada. Es por ello, que normalmente se aplica en capa 3-4. • Estos mecanismos son inherentemente necesarios a la red cuando esta ofrece servicios de tiempo real: voz IP, videoconferencia por Internet, video streaming, radio por Internet, etc. Por ejemplo en el caso de voz IP (VOIP), se necesita una pérdida de paquetes inferior al 1% y un retraso extremo a extremo de 150 ms, prestaciones que no podemos obtener de forma nativa de TCP/IP (Internet), dado que su funcionamiento es Best Effort.
•
•
Sería muy fácil dar calidad de servicio si las redes nunca se congestionaran, pero para ello habría que sobredimensionar todos los enlaces, cosa no siempre es posible o deseable. Por tanto, para dar calidad de servicio en gran escala y en redes con posibilidades de congestión, es preciso tener mecanismos que permitan dar al tráfico un trato diferenciado acorde con el SLA (Service Level Agreement).
Quality of Service. La calidad de servicio (QoS) son tecnologías que garantizan la transmisión de alguna cantidad de datos en un tiempo dado (throughput).
Por otro lado, decimos que la calidad de servicio es la capacidad de dar un buen servicio.
Class Voz
Total WAN
BW Datos
hggh
Class Video Class Management Class Críticos Class Business
BW Internet
Class Internet (Default) Total Wan
Aplicación
Fiabilidad Retardo
Jitter
Ancho de Banda
Correo electrónico
Alta (*)
Alto
Alto
Bajo
Transferencia de ficheros
Alta (*)
Alto
Alto
Medio
Acceso Web
Alta (*)
Medio
Alto
Medio
Login remoto
Alta (*)
Medio
Medio
Bajo
Audio bajo demanda
Media
Alto
Medio
Medio
Vídeo bajo demanda
Media
Alto
Medio
Alto
Telefonía
Media
Bajo
Bajo
Bajo
Vídeoconferencia
Media
Bajo
Bajo
Alto
(*) La fiabilidad alta en estas aplicaciones se consigue automáticamente al utilizar el protocolo de transporte TCP
• http://l7-filter.sourceforge.net/protocols
• En IPv4 se hace por: – Dirección IP de origen – Puerto de origen – Dirección IP de destino – Puerto de destino – Protocolo de transporte utilizado (TCP o UDP)
• Requerimientos: – Kernel con soporte para iptables (la mayoría de distros). – Iptables instalado (sencillo instalar). – El comando tc instalado, que es parte del paquete iproute2 – l7filter para iptables. • apt-get install ó yum install
• Todos los paquetes en su cabecera pueden contener o no el bit indicador de tipo de servicio (de ahora en mas ToS por Type of Service en inglés). Hay en total cuatro tipos de servicio que se pueden combinar entre sí en la práctica (aun que no debería hacerse en la teoría): • 0×02: Minimize Monetary Cost | Minimizar costo monetario • 0×04: Maximize Reliability | Maximizar fiabilidad • 0×08: Maximize Throughput | Maximizar tasa de transferencia • 0×10: Minimize Delay | Minimizar latencia
• La disciplina de encolado prio crea por defecto 3 colas, numeradas del cero al dos. • Priomap está enviando todo el tráfico que tenga activado los bits ToS de las primeras ocho combinaciones posibles desde 0×00 hasta 0x0e- a la tercera cola (cola número 2) y las siguientes siete combinaciones -desde 0×010 hasta 0x1c- en la segunda cola (cola número 1). • Todo el tráfico que tenga el bit ToS marcado como 0x1e irá a parar a la primera cola, la cero. • Hasta que no se vacía la primera cola, no se le da paso a la segunda cola, y hasta que no se vacía esta última no se le da paso a la tercera cola. tc qdisc add dev eth1 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
• tc qdisc add dev eth1 parent 1:1 handle 10: sfq • tc qdisc add dev eth1 parent 1:2 handle 20: sfq • tc qdisc add dev eth1 parent 1:3 handle 30: sfq perturb 10
• La tercera cola es la que alojará todo el tráfico sin clasificar, se reconfigura el hash cada 10 segundos usando perturb 10. Así todo el tráfico p2p (que no categorizaremos) irá a parar a esta cola. • Solo resta comenzar a clasificar el tráfico de alguna forma para que los servicios mas interactivos (SSH, World of Warcraft, Counter Strike, VoIP, etc…) vayan por la primera cola, el resto del tráfico “no-tan-importante” por la segunda cola, y todo el tráfico “bulk”, p2p y demás tráfico por la tercera cola.
•
Ejemplo 1: Todo el tráfico que tenga como origen o destino el puerto 22 (SSH), por la primera cola:
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dport 22 0xffff flowid 1:1 tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 22 0xffff flowid 1:1
•
Y todo lo que tenga como origen el puerto 80 (HTTP), por la segunda cola:
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 80 0xffff flowid 1:2
•
Ejemplo 2: Todo el tráfico que genera el host 192.168.0.150 por la primera cola:
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip src 192.168.0.150 flowid 1:1
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dst 192.168.0.150 flowid 1:1
•
Y así sucesivamente, por número de IP o por número de puerto, adaptándolo a sus necesidades.
• Tráfico SSH, por la primera cola se ha dicho! (marcado como 0x1e) iptables -t mangle -A PREROUTING -p tcp –dport ssh -j TOS –set-tos 0x1e iptables -t mangle -A PREROUTING -p tcp –sport ssh -j TOS –set-tos 0x1e
• El tráfico que genera 192.168.0.150 a la primera cola: iptables -t mangle -A PREROUTING -s 192.168.0.150 -j TOS –set-tos 0×010
• Teniendo instalado l7filter se pueden hacer cosas como esta, indistintamente del número de puerto o número de IP: iptables -t mangle -A PREROUTING -m layer7 –l7proto edonkey -j TOS –set-tos 0×02
• Y asegurarnos de esta forma de que emule, edonkey, mldonkey y cuanto otro clon exista en nuestra red, vayan siempre por la tercera cola, por tener seteado el bit 0×02.
RENZO TACO COAYLA
[email protected] - http://itsperu.com Movistar : 990949624 - RPM: #990949624 Claro: 952665666 - RPC: 952665666