You are on page 1of 36

Marcado de tr´afico DiffServ en Linux

Planificaci´on y Gesti´
on de Redes de Ordenadores

Departamento de Sistemas Telem´aticos y Computaci´on (GSyC)

Noviembre de 2013

GSyC - 2013

Marcado de tr´
afico DiffServ en Linux

1

c
2012
Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados.
Este trabajo se distribuye bajo la licencia
Creative Commons Attribution Share-Alike
disponible en http://creativecommons.org/licenses/by-sa/3.0/es

GSyC - 2013

Marcado de tr´
afico DiffServ en Linux

2

Contenidos

1

DS y DSCP

2

Marcado de tr´afico

3

Medidor compartido de tr´afico de entrada

GSyC - 2013

Marcado de tr´
afico DiffServ en Linux

3

2013 Marcado de tr´ afico DiffServ en Linux 4 .DS y DSCP Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .

Estos 8 bits son en realidad DSCP (6 bits) + ECN (2 bits).DS y DSCP Marcas en los paquetes: Valores DS y DSCP El valor DS son 8 bits que viajan en el campo Tipo de Servicio de la cabecera IP. DSCP% (6bits)% DS%(8%bits)% AF11$ Clase% AF12$ AF1% AF13$ 001%010$ 0010$1000$–$0x28$ Baja$ 001%100$ 0011$0000$–$0x30$ Media$ 001%110$ 0011$1000$–$0x38$ Alta$ AF21$ 010%010$ 0100$1000$–$0x48$ Baja$ Clase% AF22$ AF2% AF23$ 010%100$ 0101$0000$–$0x50$ Media$ 010%110$ 0101$1000$–$0x58$ Alta$ AF31$ 011%010$ 0110$1000$–$0x68$ Baja$ Clase% AF32$ AF3% AF33$ 011%100$ 0111$0000$–$0x70$ Media$ 011%110$ 0111$1000$–$0x78$ Alta$ AF41$ 100%010$ 1000$1000$–$0x88$ Baja$ Clase% AF42$ Clase$más$ AF4% AF43$ prioritaria$ Clase%EF% 100%100$ 1001$0000$–$0x90$ Media$ 100%110$ 1001$1000$–$0x98$ Alta$ 101$110$ 1011$1000$–$0xb8$ Clase$menos$ prioritaria$ GSyC .2013 Prioridad%de%% descarte%de%tráfico% Marcado de tr´ afico DiffServ en Linux 5 .

2013 Marcado de tr´ afico DiffServ en Linux 6 .Marcado de tr´ afico Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .

2013 Marcado de tr´ afico DiffServ en Linux 7 .Marcado de tr´ afico DSMARK Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .

Marcado de tr´ afico DSMARK DSMARK: qdisc DSMARK es una qdisc que se utiliza para la clasificaci´on de paquetes seg´ un la arquitectura de DiffServ y el marcado del campo DS. Routers del n´ ucleo de DiffServ: Los paquetes se clasifican atendiendo al contenido de DS que traen los paquetes IP. GSyC . asignando nuevos valores DS.2013 Marcado de tr´ afico DiffServ en Linux 8 . Se pueden volver a reclasificar. Probaremos la funci´ on de marcado y remarcado del campo DS: Routers frontera de DiffServ: es necesario clasificar los paquetes atendiendo a valores de su cabecera IP y marcar el campo DS.

uno para cada una de sus clases: tc qdisc add dev eth1 handle 1:0 root dsmark indices 8 Una vez creada una qdisc DSMARK se habr´an creado autom´aticamente sus clases asociadas. El n´ umero mayor coincide en todas ellas. 1:2. GSyC . la siguiente qdisc con n´ umero de clases igual a 23 = 8 podr´a definir como m´aximo 7 valores DSCP diferentes. para definir como m´aximo 7 clases de tr´afico dentro de una qdisc 1:0 se usar´an los siguientes descriptores: 1:1. Cada clase tiene un descriptor X:Y. 1:7. 1:3. 1:4.Marcado de tr´ afico DSMARK DSMARK: qdisc y sus clases Una qdisc DSMARK crea autom´aticamente un conjunto de clases para asignar en cada una de ellas un valor diferente en el campo DSCP. donde: X es el valor del n´ umero mayor de la clase qdisc a la que pertenece Y es el n´ umero menor que distingue a cada una de las clases Por ejemplo. 1:6.2013 Marcado de tr´ afico DiffServ en Linux 9 . ya que todas pertenecen a la qdisc 1. Por ejemplo. 1:5. Este valor debe ser una potencia de 2. Al crear la qdisc DSMARK es necesario especificar la cantidad m´axima de valores DSCP que se van a usar para clasificar los paquetes.

mantiene los 2 bits menos significativos donde viaja ECN) operaci´ on | de bits con el nuevo valor DS que se desee asignar. mask#0x03# 0000#0011# DS#=#0000#0000#=#0x00# &# value#0x68# 0110#1000# DS#=#0000#0000#=#0x00# I# DS#=#0110#1000#=#0x68# Por ejemplo: si la clase 1:3 marca con DS=0x68 (AF31) conservando los bits ECN: tc class change dev eth1 classid 1:3 dsmark mask 0x3 value 0x68 GSyC .Marcado de tr´ afico DSMARK DSMARK: m´ascara y valor DSCP Para configurar un valor DS en un paquete IP se utiliza una clase DSMARK en la que se van a realizar las siguientes operaciones: 1 2 operaci´ on & de bits con una m´ascara para mantener aquellos bits del campo DS que se deseen (0x03.2013 Marcado de tr´ afico DiffServ en Linux 10 .

Router del n´ ucleo: debe clasificar los paquetes en funci´on del DS que traigan y puede remarcar el campo DSCP.2013 Marcado de tr´ afico DiffServ en Linux 11 . Al menos un filtro por cada clase.Marcado de tr´ afico DSMARK Router frontera y router del n´ucleo Para especificar los paquetes que pertenecen a cada una de las clases es necesario definir filtros. Estudiaremos dos casos de tr´afico de entrada en la red DiffServ: Router frontera: debe clasificar los paquetes seg´ un los campos de su cabecera IP y marcar el campo DSCP. GSyC .

2013 Marcado de tr´ afico DiffServ en Linux 12 .Marcado de tr´ afico DSMARK Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .

se almacena en un buffer. el campo tc_index almacenar´ıa el valor 2. el buffer que almacena el paquete IP dentro del kernel del router Linux tiene un campo tc_index en el que se almacena el identificador de flujo en el que fue clasificado dicho paquete cuando ingres´o en la cola qdisc ingress: si un paquete queda clasificado en flowid :2.0.0. Cuando un paquete atraviesa la disciplina de cola de entrada qdisc ingress. Esta informaci´ on es la que utiliza posteriormente el filtro tcindex dentro de otras qdisc de dicho router para dar tratamiento diferenciado a los paquetes.0.100/32 \ police rate 512kbit burst 10k continue flowid :2 tc filter add dev eth0 parent ffff: \ protocol ip prio 6 u32 \ match ip src 11.100/32 \ police rate 256kbit burst 10k drop flowid :3 tc filter add dev eth0 parent ffff: \ protocol ip prio 6 u32 \ match ip src 0.0.2013 tc qdisc add dev eth0 handle ffff: ingress tc filter add dev eth0 parent ffff: \ protocol ip prio 4 u32 \ match ip src 11. GSyC .0.Marcado de tr´ afico DSMARK Filtro tcindex: Router Frontera (I) Al recibirse un paquete IP en un router.0.0.0.0/0 \ police rate 128kbit burst 10k drop flowid :4 Marcado de tr´ afico DiffServ en Linux 13 .100/32 \ police rate 1mbit burst 10k continue flowid :1 tc filter add dev eth0 parent ffff: \ protocol ip prio 5 u32 \ match ip src 11.

2013 Marcado de tr´ afico DiffServ en Linux 14 . Paquetes(tc_index=1( Filter'flowid=:1' CONTINUE' Filter'flowid=:2' CONTINUE' Filter'flowid=:3' DROP' Filter'flowid=:4' Paquetes(tc_index=2( Paquetes(tc_index=3( Paquetes(tc_index=4( DROP' Qdisc'ingress' Ejemplo: Los paquetes clasificados dentro del flowid=:1 llevar´an en el campo tc_index=1 GSyC . el buffer que contiene el paquete tiene un campo donde se ha almacenado el descriptor del flujo al que pertenece: tc_index.Marcado de tr´ afico DSMARK Filtro tcindex: Router Frontera (II) Cuando un paquete atraviesa la disciplina de cola de entrada.

Marcado de tr´ afico DSMARK Filtro tcindex: Router Frontera (III) EL filtro tcindex utiliza el valor almacenado en tc_index del buffer que contiene un paquete IP para clasificarlo dentro de una clase en la disciplina de cola de salida. en este caso DSMARK.2013 eth1 eth1 eth1 eth1 classid classid classid classid 1:1 1:2 1:3 1:4 eth1 parent 1:0 tcindex classid eth1 parent 1:0 tcindex classid eth1 parent 1:0 tcindex classid eth1 parent 1:0 tcindex classid dsmark dsmark dsmark dsmark protocol 1:1 protocol 1:2 protocol 1:3 protocol 1:4 mask mask mask mask 0x3 0x3 0x3 0x3 value value value value 0x28 0x48 0x68 0x88 ip prio 1 \ ip prio 1 \ ip prio 1 \ ip prio 1 \ Marcado de tr´ afico DiffServ en Linux 15 . Ejemplo: qdisc DSMARK con 3 diferentes valores de marcado tc qdisc add dev eth1 handle 1:0 root dsmark indices 4 tc tc tc tc class class class class change change change change dev dev dev dev tc filter add dev handle 1 tc filter add dev handle 2 tc filter add dev handle 3 tc filter add dev handle 4 GSyC .

Dentro de la cola DSMARK en la interfaz de salida.2013 Paquetes(( tc_index=1( Paquetes( (tc_index=2( Paquetes( (tc_index=3( Paquetes( (tc_index=4( E( N( C( A( M( I( N( A M( Paquetes( marcados( con( (tc_index( Filter(fw( tc_index=1( Classid=1: 1'DS=0x28' qdisc' Filter(fw(( tc_index=2( Classid=1: 2'DS=0x48' qdisc' Filter(fw( tc_index=3( Classid=1: 3'DS=0x68' qdisc' Filter(fw( tc_index=4( Classid=1: 4'DS=0x88' qdisc' Qdisc'DSMARK' Interfaz(de(salida( Marcado de tr´ afico DiffServ en Linux 16 . Router'Linux' Filter' flowid=:1' CONTINUE' Filter' flowid=:2' CONTINUE' Filter' flowid=:3' DROP' Filter' flowid=:4' DROP' Qdisc'ingress' Interfaz(de(entrada( GSyC . se comprueba el valor de tc_index y se clasifica el tr´afico en las clases de DSMARK.Marcado de tr´ afico DSMARK Filtro tcindex: Router Frontera (IV) Los paquetes entran en el router y atraviesan la cola ingress. que marcar´an los paquetes con un determinado valor de DS. donde se rellena el campo tc_index.

100$ 1mbit$ 11.0.0.Marcado de tr´ afico DSMARK Filtro tcindex: Router Frontera (V) ingress$ ffff:0$ Resto$$ 128kbit$ 11.2013 handle=3$ tcindex$ 1:1$ 1:2$ 1:3$ 1:4$ 0x28$ 0x48$ 0x68$ 0x88$ Marcado de tr´ afico DiffServ en Linux 17 .0.0.100$ 512kbit$ ffff:1$ handle=1) tcindex) ffff:2$ handle=2) tcindex) ffff:3$ handle=3) tcindex) ffff:4$ handle=4) tcindex) ENCAMINAMIENTO) dsmark$ 1:0$ handle=4$ tcindex$ handle=1$ tcindex$ handle=2$ tcindex$ GSyC .0.100$ 256kbit$ 11.0.

Marcado de tr´ afico DSMARK Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .2013 Marcado de tr´ afico DiffServ en Linux 18 .

Para reclasificarlo en funci´ on del campo DS que trae un paquete y asignar un nuevo marcado en el campo DS. el paquete llega con DS relleno. no tiene por qu´e tener configurada una disciplina de cola ingress. Esto implica que no se rellena el campo tc_index del buffer del kernel del Linux que contiene el paquete. tambi´en se puede usar DSMARK.2013 Marcado de tr´ afico DiffServ en Linux 19 . Si el router no realiza la funci´ on policing. por tanto.Marcado de tr´ afico DSMARK Filtro tcindex: Router del N´ucleo (I) En el router del n´ ucleo. La propia qdisc DSMARK puede copiar el campo DS que lleva la cabecera IP del paquete en el campo tc_index de la estructura de datos del kernel del Linux que almacena el paquete utilizando el siguiente par´ametro: set tc index tc qdisc add dev eth1 handle 1:0 root dsmark indices 64 set_tc_index GSyC .

Marcado de tr´ afico DSMARK Filtro tcindex: Router del N´ucleo (II) Como se copia el campo DS. el filtro deber´a utilizar s´ olo los 6 bits m´as significativos del campo DS. DSCP para clasificar los paquetes: 1 Primero se aplica un filtro para extraer esos 6 bits (operaci´on & con mask 1111 1100 y desplazamiento a la derecha 2 bits) del campo DSCP y pasarlos al siguiente filtro (pass on): tc filter add dev eth1 parent 1:0 protocol ip prio 1 tcindex mask 0xfc shift 2 pass_on 2 \ Los siguientes filtros comprobar´an este n´ umero con cada una de las clases. tc filter add dev eth1 tcindex mask 0xfc tc filter add dev eth1 handle 10 tcindex parent 1:0 protocol ip prio 1 \ shift 2 pass_on parent 1:0 protocol ip prio 1 \ classid 1:1 Si es necesario cambiar el valor DSCP se configurar´a un nuevo valor para esa clase: tc class change dev eth1 classid GSyC . es decir el n´ umero decimal 10 que se corresponde con AF11.2013 1:1 dsmark mask 0x3 value 0x48 Marcado de tr´ afico DiffServ en Linux 20 . es decir. Por ejemplo DS=00101000 => DSCP=001010.

Marcado de tr´ afico DSMARK Filtro tcindex: Router del N´ucleo (III) Ejemplo: Si es AF11 (DSCP=001010) ↔ handle=10 en decimal.2013 prio 1 \ prio 1 \ prio 1 \ prio 1 \ Marcado de tr´ afico DiffServ en Linux 21 . lo remarco en AF23 (DS=0x58) tc qdisc add dev eth1 handle 1:0 root dsmark indices 4 set_tc_index tc class change dev eth1 classid 1:1 dsmark mask 0x3 value 0x48 tc class change dev eth1 classid 1:2 dsmark mask 0x3 value 0x50 tc class change dev eth1 classid 1:3 dsmark mask 0x3 value 0x58 tc filter add dev eth1 parent 1:0 protocol ip tcindex mask 0xfc shift 2 pass_on tc filter add dev eth1 parent 1:0 protocol ip handle 10 tcindex classid 1:1 tc filter add dev eth1 parent 1:0 protocol ip handle 12 tcindex classid 1:2 tc filter add dev eth1 parent 1:0 protocol ip handle 14 tcindex classid 1:3 GSyC . lo remarco en AF21 (DS=0x48) AF11 (DSCP=001100) ↔ handle=12 en decimal. lo remarco en AF22 (DS=0x50) AF11 (DSCP=001110) ↔ handle=14 en decimal.

Marcado de tr´ afico DSMARK Filtro tcindex: Router del N´ucleo (IV) Los paquetes entran en el router que no tiene definida qdisc ingress. La disciplina de cola de salida DSMARK rellena tc_index con el contenido de DSCP.2013 E" N" C" A" M" I" N" A M" Se"asignan" nuevos"DS" Filter"fw" tc_index=10" AF11"classid=1:1" Classid=1:1' DS=nuevo' Filter"fw" tc_index=12" AF12"classid=1:2" Classid=1:2' DS=nuevo' Filter"fw" tc_index=14" AF13"classid=1:3" Classid=1:3' DS=nuevo' qdisc' qdisc' qdisc' Qdisc'DSMARK'set_tc_index' Interfaz"de"salida" Marcado de tr´ afico DiffServ en Linux 22 . Router'Linux' Paquetes"" marcados"" con"DSCP" Interfaz"de"entrada" GSyC . Los filtros consultan tc_index y deciden el nuevo marcado.

2013 handle=14$ tcindex$ 1:1$ 1:2$ 1:3$ 0x48$ 0x50$ 0x58$ Marcado de tr´ afico DiffServ en Linux 23 .Marcado de tr´ afico DSMARK Filtro tcindex: Router del N´ucleo (V) dsmark$ set_tc_index$ 1:0$ handle=10$ tcindex$ handle=12$ tcindex$ GSyC .

Marcado de tr´ afico iptables Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .2013 Marcado de tr´ afico DiffServ en Linux 24 .

2013 Marcado de tr´ afico DiffServ en Linux 25 .Marcado de tr´ afico iptables Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .

0.0.1 -p tcp --sport 80 \ -s 200.0.0.0.1 -p tcp --sport 80 \ -s 200. Por ejemplo. AF42=0x90): iptables -t mangle -A POSTROUTING -j DSCP --set-dscp-class AF41 iptables -t mangle -A POSTROUTING -j RETURN iptables -t mangle -A POSTROUTING iptables -t mangle -A POSTROUTING GSyC .0.0.0.0. utilizando iptables a trav´es de la tabla mangle y la acci´on -j DSCP.1 -p tcp --sport 80 \ -s 200.1 -p tcp --sport 80 \ -s 200.0. en vez de con DSMARK.0.1 -p tcp -j RETURN O tambi´en usando el nombre de la clase (AF41=0x88.0.0.1 -p tcp -j DSCP --set-dscp 0x24 -s 200.0.1 -p tcp -j DSCP --set-dscp-class AF42 -s 200.1 -p tcp -j RETURN Marcado de tr´ afico DiffServ en Linux 26 .0.2013 -s 200. para conseguir un valor: DS=0x88 = 1000 1000 ↔ DSCP=0010 0010=0x22 ↔ AF41 DS=0x90 = 1001 0000 ↔ DSCP=0010 0100=0x24 ↔ AF42 iptables -t mangle -A POSTROUTING -j DSCP --set-dscp 0x22 iptables -t mangle -A POSTROUTING -j RETURN iptables -t mangle -A POSTROUTING iptables -t mangle -A POSTROUTING -s 200.Marcado de tr´ afico iptables Marcado DSCP con iptables El marcado del campo DSCP en los paquetes IP puede reescribirse.0.

0. 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets. 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets. 0 bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets. 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING pkts bytes target 1 0 DSCP 2 0 RETURN 3 0 DSCP GSyC .1 anywhere tcp spt:80 DSCP set 0x22 tcp -.any any anywhere anywhere tcp DSCP set 0x24 Marcado de tr´ afico DiffServ en Linux 27 .1 anywhere tcp spt:80 DSCP set 0x22 tcp -.any any 200.0.2013 (policy ACCEPT 0 packets. 0 bytes) prot opt in out source destination tcp -.0.Marcado de tr´ afico iptables Consulta de la tabla mangle de iptables Al consultar las reglas de todas las cadenas de la tabla mangle: r1:~# iptables -t mangle -L -v -n --line-numbers Chain PREROUTING (policy ACCEPT 0 packets.0.any any 200.

Marcado de tr´ afico iptables Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .2013 Marcado de tr´ afico DiffServ en Linux 28 .

Por ejemplo.Marcado de tr´ afico iptables Clasificaci´on del tr´afico con iptables Algunos de las reglas de clasificaci´on que se pueden expresar utilizando las reglas filter de la herramienta Traffic Control. a trav´es de la acci´on CLASSIFY. el paquete se clasifica dentro de las clase de TC dada por --set-class y no abandona la cadena a la cu´al pertenece la regla. GSyC . La disciplina de colas en la interfaz de salida recibir´a el paquete ya clasificado y no necesitar´a definir un filtro. pueden reescribirse con iptables. Si un paquete cumple la condici´on de una regla cuya acci´ on es CLASSIFY. Por tanto. iptables -t mangle -A POSTROUTING -m dscp --dscp-class AF41 -j CLASSIFY --set-class 1:10 iptables -t mangle -A POSTROUTING -m dscp --dscp-class AF41 -j RETURN La acci´ on RETURN hace que se ejecute la pol´ıtica por defecto para esa cadena. si desea que abandone la cadena se debe especificar expl´ıcitamente. en un router del n´ ucleo se puede realizar la clasificaci´on de un paquete desde iptables atendiendo al contenido de su campo DSCP.2013 Marcado de tr´ afico DiffServ en Linux 29 .

Medidor compartido de tr´ afico de entrada Contenidos 1 DS y DSCP 2 Marcado de tr´afico DSMARK Filtro tcindex: Router Frontera Filtro tcindex: Router del N´ ucleo iptables Marcado DSCP Clasificaci´ on del tr´ afico 3 Medidor compartido de tr´afico de entrada GSyC .2013 Marcado de tr´ afico DiffServ en Linux 30 .

2013 Marcado de tr´ afico DiffServ en Linux 31 . GSyC . se enviar´a a 1500kbit (flujo4). Los 1000kbit saldr´an marcados como tr´afico AF42. Los 1000kbit saldr´an marcados como tr´afico AF43. El tr´afico que supere las especificaciones del flujo 2 se unir´a con AF43 (flujo 3).Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (I) Se desea reclasificar y volver a marcar el tr´afico de salida de un router con el siguiente patr´ on: El tr´afico de salida AF41 ser´a s´olo 1500kbit del tr´afico AF41 de entrada (flujo 1). El tr´afico que supere las especificaciones del flujo 3 se descarta. Este tr´afico saldr´a marcado como BE. En este caso son necesarios medidores compartidos para establecer las siguientes medidas: 1000kbit para el flujo 2 que est´a compartido entre el tr´afico sobrante del flujo 1 y AF42. S´ olo se permite la salida de 1000kbit de este tr´afico. El resto de tr´afico. ni AF42 ni AF43. 1000kbit para el flujo 3 que est´a compartido entre el sobrante del flujo 2 y AF43. ni AF41. S´ olo se permite la salida de 1000kbit de este tr´afico. El tr´afico AF41 de entrada que supere 1500kbit se unir´a con AF42 (flujo 2).

% ni%AF42.2013 r=1500kbit% r=1500kbit% Resto%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:4%%%%%tcindex=4% Marcado de tr´ afico DiffServ en Linux 32 .% ni%AF43% GSyC .%AF42%y%AF43%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:3%%%%%tcindex=3% Ni%AF41.Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (II) En la interfaz de entrada se aplicar´a la siguiente funci´on de acondionamiento del tr´afico: AF41% AF41%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:1%%%%%%tcindex=1% AF42% r=1000kbit% AF41%y%AF42%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:2%%%%%tcindex=2% AF43% r=1000kbit% AF41.

Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (III) #!/bin/bash ####################### Ingress side ######################## tc qdisc add dev eth0 handle ffff: ingress #Tr´ afico AF41 dentro del flujo :1. medidor index=2 tc filter add dev eth0 parent ffff: protocol ip prio 5 u32 \ match ip tos 0x88 0xfc \ police index 2 rate 1000kbit burst 90k \ continue flowid :2 #Tr´ afico AF41 dentro del flujo :3. medidor index=3 tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 \ match ip tos 0x88 0xfc \ police index 3 rate 1000kbit burst 60k \ drop flowid :3 GSyC . medidor index=1 tc filter add dev eth0 parent ffff: protocol ip prio 4 u32 \ match ip tos 0x88 0xfc \ police index 1 rate 1500kbit burst 90k \ continue flowid :1 #Tr´ afico AF41 dentro del flujo :2.2013 Marcado de tr´ afico DiffServ en Linux 33 .

2013 Marcado de tr´ afico DiffServ en Linux 34 . medidor index=3 tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 \ match ip tos 0x90 0xfc \ police index 3 rate 1000kbit burst 60k \ drop flowid :3 #Tr´ afico AF43 dentro del flujo :3. medidor index=4 tc filter add dev eth0 parent ffff: protocol ip prio 7 u32 \ match ip src 0/0 \ police index 4 rate 1500kbit burst 60k \ drop flowid :4 GSyC .Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (IV) #Tr´ afico AF42 dentro del flujo :2. medidor index=2 tc filter add dev eth0 parent ffff: protocol ip prio 5 u32 \ match ip tos 0x90 0xfc \ police index 2 rate 1000kbit burst 90k \ continue flowid :2 #Tr´ afico AF42 dentro del flujo :3. medidor index=3 tc filter add dev eth0 parent ffff: protocol ip prio 6 u32 \ match ip tos 0x98 0xfc \ police index 3 rate 1000kbit burst 60k \ drop flowid :3 #Resto de tr´ afico dentro del flujo :4.

' 'AF2' AF2. handle=1) tcindex) handle=2) tcindex) handle=4) tcindex) ENCAMINAMIENTO) dsmark' 1:0' handle=4' tcindex' handle=1' tcindex' handle=2' tcindex' GSyC .2013 handle=3) tcindex) handle=3' tcindex' 1:1' 1:2' 1:3' 1:4' 0x88' 0x90' 0x98' 0x00' Marcado de tr´ afico DiffServ en Linux 35 .'' 1000kbit' AF3' 1000kbit' ffff:2' ffff:3' ffff:4' AF1' 1500kbit' ffff:1' En la interfaz de salida se volver´a a marcar el tr´afico.Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (V) ingress' ffff:0' Resto'' 1500kbit' AF1.' AF1.

Medidor compartido de tr´ afico de entrada Medidores compartidos de tr´afico de entrada (VI) ######################## Egress side ######################## tc qdisc add dev eth1 handle 1:0 root dsmark indices 64 tc tc tc tc class class class class change change change change dev dev dev dev eth1 eth1 eth1 eth1 classid classid classid classid 1:1 1:2 1:3 1:4 dsmark dsmark dsmark dsmark mask mask mask mask 0x3 0x3 0x3 0x3 value value value value 0x88 0x90 0x98 0x0 tc filter add dev eth1 parent 1:0 protocol ip prio 1 \ handle 1 tcindex classid 1:1 tc filter add dev eth1 parent 1:0 protocol ip prio 1 \ handle 2 tcindex classid 1:2 tc filter add dev eth1 parent 1:0 protocol ip prio 1 \ handle 3 tcindex classid 1:3 tc filter add dev eth1 parent 1:0 protocol ip prio 1 \ handle 4 tcindex classid 1:4 GSyC .2013 Marcado de tr´ afico DiffServ en Linux 36 .