Professional Documents
Culture Documents
Planificacion y Gesti
on de Redes de Ordenadores
Noviembre de 2013
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
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
Contenidos
DS y DSCP
Marcado de trafico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
DS y DSCP
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
DS y DSCP
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$ms$ 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%trco%
Marcado de tr
afico DiffServ en Linux
Marcado de tr
afico
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
Marcado de tr
afico
DSMARK
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
Marcado de tr
afico
DSMARK
DSMARK: qdisc
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
Marcado de tr
afico
DSMARK
Por ejemplo, para definir como maximo 7 clases de trafico dentro de una
qdisc 1:0 se usaran los siguientes descriptores: 1:1, 1:2, 1:3, 1:4, 1:5, 1:6,
1:7. El n
umero mayor coincide en todas ellas, ya que todas pertenecen a la
qdisc 1.
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
Marcado de tr
afico
DSMARK
operaci
on & de bits con una mascara para mantener aquellos
bits del campo DS que se deseen (0x03, 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#
Marcado de tr
afico DiffServ en Linux
10
Marcado de tr
afico
DSMARK
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
11
Marcado de tr
afico
DSMARK
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
12
Marcado de tr
afico
DSMARK
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.
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
13
Marcado de tr
afico
DSMARK
Filter'owid=:1'
CONTINUE'
Filter'owid=:2'
CONTINUE'
Filter'owid=:3'
DROP'
Filter'owid=:4'
Paquetes(tc_index=2(
Paquetes(tc_index=3(
Paquetes(tc_index=4(
DROP'
Qdisc'ingress'
Marcado de tr
afico DiffServ en Linux
14
Marcado de tr
afico
DSMARK
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
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
Marcado de tr
afico
DSMARK
Interfaz(de(entrada(
GSyC - 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
Marcado de tr
afico
DSMARK
:0$
Resto$$
128kbit$
11.0.0.100$
1mbit$
11.0.0.100$
256kbit$
11.0.0.100$
512kbit$
:1$
handle=1)
tcindex)
:2$
handle=2)
tcindex)
:3$
handle=3)
tcindex)
:4$
handle=4)
tcindex)
ENCAMINAMIENTO)
dsmark$ 1:0$
handle=4$
tcindex$
handle=1$
tcindex$
handle=2$
tcindex$
GSyC - 2013
handle=3$
tcindex$
1:1$
1:2$
1:3$
1:4$
0x28$
0x48$
0x68$
0x88$
Marcado de tr
afico DiffServ en Linux
17
Marcado de tr
afico
DSMARK
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
18
Marcado de tr
afico
DSMARK
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
19
Marcado de tr
afico
DSMARK
Primero se aplica un filtro para extraer esos 6 bits (operacion & 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
20
Marcado de tr
afico
DSMARK
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
GSyC - 2013
prio 1 \
prio 1
prio 1
prio 1
Marcado de tr
afico DiffServ en Linux
21
Marcado de tr
afico
DSMARK
Paquetes""
marcados""
con"DSCP"
Interfaz"de"entrada"
GSyC - 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
Marcado de tr
afico
DSMARK
GSyC - 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
iptables
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
24
Marcado de tr
afico
iptables
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
25
Marcado de tr
afico
iptables
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
26
Marcado de tr
afico
iptables
destination
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
27
Marcado de tr
afico
iptables
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
28
Marcado de tr
afico
iptables
La acci
on RETURN hace que se ejecute la poltica por defecto para esa cadena.
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
29
Medidor compartido de tr
afico de entrada
Contenidos
DS y DSCP
Marcado de trafico
DSMARK
Filtro tcindex: Router Frontera
Filtro tcindex: Router del N
ucleo
iptables
Marcado DSCP
Clasificaci
on del tr
afico
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
30
Medidor compartido de tr
afico de entrada
Marcado de tr
afico DiffServ en Linux
31
Medidor compartido de tr
afico de entrada
AF41%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:1%%%%%%tcindex=1%
AF42%
r=1000kbit%
AF41%y%AF42%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:2%%%%%tcindex=2%
AF43%
r=1000kbit%
AF41,%AF42%y%AF43%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:3%%%%%tcindex=3%
Ni%AF41,%
ni%AF42,%
ni%AF43%
GSyC - 2013
r=1500kbit%
r=1500kbit%
Resto%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flowid%:4%%%%%tcindex=4%
Marcado de tr
afico DiffServ en Linux
32
Medidor compartido de tr
afico de entrada
Marcado de tr
afico DiffServ en Linux
33
Medidor compartido de tr
afico de entrada
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
34
Medidor compartido de tr
afico de entrada
:0'
Resto''
1500kbit'
AF1,' AF1,'
'AF2' AF2,''
1000kbit' AF3'
1000kbit'
:2'
:3'
:4'
AF1'
1500kbit'
:1'
En la interfaz de salida se
volvera a marcar el
trafico.
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
Medidor compartido de tr
afico de entrada
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
GSyC - 2013
Marcado de tr
afico DiffServ en Linux
36