Edgard Jamhour Modelo em Camadas Arquitetura TCP/IP/Ethernet.
Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour.
-
Upload
gabriel-henrique-cordeiro-carlos -
Category
Documents
-
view
235 -
download
1
Transcript of Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour.
Edgard Jamhour
Mecanismos de QoS em Linuxtc – Traffic Control
Edgard Jamhour
Edgard Jamhour
Controle de Tráfego (TC)
Interface de Entrada
Destino é Interno?
Camadas Superiores(TCP, UDP)
Rotamento
Interface de Saída
Enfileiramento na Saída
S
N
Elementos do TC
PoliciamentoClassificação
EscalonamentoFormatação de
Tráfego
Edgard Jamhour
Política de QoS e Elementos do TC
Qdisc da classe
Qdisc principal
Edgard Jamhour
Comandos tc: Criar a qdisc principal
> tc qdisc add dev eth0 root handle 1:0 htb
> tc class add dev eth0 parent 1:0 classid 1:1 htb rate 500Kbit
> tc class add dev eth0 parent 1:0 classid 1:2 htb rate 300Kbit
Edgard Jamhour
Comandos: Criar as qdisc das classes
> tc qdisc add dev eth0 parent 1:1 handle 10:0 pfifo limit 10> tc qdisc add dev eth0 parent 1:2 handle 20:0 pfifo limit 10
> tc filter add dev eth0 parent 1:0 protocol ip u32 match ip protocol 0x06 0xff flowid 1:1> tc filter add dev eth0 parent 1:0 protocol ip u32 match ip protocol 0x11 0xff flowid 1:2
Edgard Jamhour
Seqüência de filtros u32• Pacotes HTTP recebidos por 192.168.0.1/24 vão para classe
1:1. Os demais pacotes TCP recebidos por esse host vão para classe 1:2tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip protocol 0x06 0xff match ip sport 80 0xfff match ip dst 192.168.0.1/24 flowid 1:1tc filter add dev eth0 parent 1:0 protocol ip prio 2 u32 match ip protocol 0x06 0xff match ip dst 192.168.0.1/24 flowid 1:2
Edgard Jamhour
Verificando as regras com o tc• tc [-s] qdisc/class/filter show dev eth0
– mosta as qdisc/class/filter associadas a interface– –s mostra as estatísticas do uso da qdisc/class/filter
• tc qdisc del root dev eth0– limpa as regras de QoS
• iplink show– mostra a classe default associada a interface
Edgard Jamhour
Queueing Disciplines• FIFO: First In First Out• SFQ: Stochastic Fair Queuing• TBF: Token Bucket Flow• DS_MARK: Diff-Serv Marker• RED: Random Early Detection• PRIO: Priority Queue• [CBQ: Class-Based Queueing] = OBSOLETA• HTB: Hierarquical Token Bucket
Edgard Jamhour
FIFO: First In First Out
> tc qdisc add dev eth0 root handle 1:0 pfifo limit 10> tc qdisc add dev eth0 parent 1:1 handle 10:0 pfifo limit 10
Edgard Jamhour
PRIO: Priorização Injusta
> tc qdisc add dev eth0 root handle 1:0 prio
Edgard Jamhour
TBF: Token Bucket Function
> tc qdisc add dev eth0 root handle 1:0 prio> tc qdisc add dev eth0 parent 1:1
tbf rate 0.5mbit burst 5k latency 70ms peakrate 1mbit minburst 1500
Edgard Jamhour
SFQ: Stochastic Fair Queuing
> tc qdisc add dev eth0 root handle 1:0 sfq perturb 10> tc qdisc add dev eth0 parent 1:1 handle 10:0 sfq perturb 10
Edgard Jamhour
HTB: Hierarquical Token Bucket
> tc qdisc add dev eth0 root handle 1: htb> tc class add dev eth0 parent 1:0 classid 1:1 htb rate rate ceil rate burst bytes [ cburst bytes ] [ prio priority ]
http(rate 500 kbps)(ceil 1 Mbps)
outros(rate 500 kbps)(ceil 1 Mbps)
Subrede B(rate 1 Mbps) (ceil 1 Mbps)
Link(3 Mbps)
Subrede A(rate 2 Mbps) (ceil 2 Mbps)
telnet(rate 200 kbps)(ceil 2 Mbps)
http(rate 800 kbps)(ceil 2 Mbps)
outros(rate 1 Mbps)(ceil 2 Mbps)
200.1.2.0/24 200.1.3.0/24
Edgard Jamhour
HTB: Criação da Classes
http(rate 500 kbps)(ceil 1 Mbps)
outros(rate 500 kbps)(ceil 1 Mbps)
Subrede B(rate 1 Mbps) (ceil 1 Mbps)
Link(3 Mbps)
Subrede A(rate 2 Mbps) (ceil 2 Mbps)
telnet(rate 200 kbps)(ceil 2 Mbps)
http(rate 800 kbps)(ceil 2 Mbps)
outros(rate 1 Mbps)(ceil 2 Mbps)
200.1.2.0/24 200.1.3.0/24
qdiscroot HTB
1:2 1:3
1:1
1:0
1:21 1:22 1:23 1:31 1:32
Edgard Jamhour
HTB: Qdisc das Classes
http(rate 500 kbps)(ceil 1 Mbps)
outros(rate 500 kbps)(ceil 1 Mbps)
Subrede B(rate 1 Mbps) (ceil 1 Mbps)
Link(3 Mbps)
Subrede A(rate 2 Mbps) (ceil 2 Mbps)
telnet(rate 200 kbps)(ceil 2 Mbps)
http(rate 800 kbps)(ceil 2 Mbps)
outros(rate 1 Mbps)(ceil 2 Mbps)
200.1.2.0/24 200.1.3.0/24
qdiscroot HTB
qdisc
FIFO
qdiscFIFO
qdiscFIFO
qdiscFIFO
qdiscFIFO
1:2 1:3
1:1
1:0
1:21 1:22 1:23 1:31 1:32
210:0 220:0 230:0 310:0 320:0
Edgard Jamhour
HTB: Filtros
http(rate 500 kbps)(ceil 1 Mbps)
outros(rate 500 kbps)(ceil 1 Mbps)
Subrede B(rate 1 Mbps) (ceil 1 Mbps)
Link(3 Mbps)
Subrede A(rate 2 Mbps) (ceil 2 Mbps)
telnet(rate 200 kbps)(ceil 2 Mbps)
http(rate 800 kbps)(ceil 2 Mbps)
outros(rate 1 Mbps)(ceil 2 Mbps)
200.1.2.0/24 200.1.3.0/24
qdiscroot HTB
qdisc
FIFO
qdiscFIFO
qdiscFIFO
qdiscFIFO
qdiscFIFO
filtro prio 1
filtro prio 2
filtroprio 3
filtroprio 4
filtroprio 5
1:2 1:3
1:1
1:0
1:21 1:22 1:23 1:31 1:32
210:0 220:0 230:0 310:0 320:0
Edgard Jamhour
DSMARK: Marcação do Byte DS
> tc qdisc add dev eth0 root handle 1:0 dsmark indices n default_index id> tc class change dev eth0 classid 1:id dsmark mask mask value value
new_DS = (old_DS & mask) | value
Edgard Jamhour
Byte DS X DSCP para PHBs padronizados
Drop Precedence DSCP em Hexa DS em Hexa
Edgard Jamhour
Policiamento: Policing
Roteador de borda
Controle do excesso de
tráfego e marcação para classe de core
• Tráfego garantido: AF11
• Tráfego excedente: AF12
• Tráfego violado: DROP
Roteador de core
> tc filter .... police rate kbit burst BYTES [reclassify | drop | continue]
Edgard Jamhour
Policiamento: Policing
balde 1 balde 2 Xdrop
tráfego total continue
(excesso)drop
(excesso)
rate: e.g. 500 kbps
ENVIADO PARA CLASSE NORMAL
e.g. AF11
ENVIADO PARA CLASSE DE TRATAMENTO DE EXCESSO
e.g. AF12
burst:e.g. 62,5 kbytes
burst:e.g. 62,5 kbytes
rate: e.g. 500 kbps
Edgard Jamhour
RED: Random Early Detection
> tc qdisc add dev eth0 root handle 1:0 \ red limit <bytes> min <bytes> max <bytes> avpkt <bytes> \ burst <packets> probability <number> bandwidth <kbps> [ecn]> tc qdisc add dev eth0 parent 1:1 handle 10:0 red ...
Edgard Jamhour
RED: Random Early Detection
> tc qdisc add dev eth0 root handle 1:0 \ red limit 256000 min 12000 max 32000 avpkt 1000 \ burst 20 probability 0.02 bandwidth 512 ecn
sem descarte0
12 kbytesdescarte probabilístico
variável
32 kbytesdescarte probabilístico
máximo
256 kbytesdescarte total para fila
instantânea
Edgard Jamhour
Conclusão• O tc do linux apresenta um conjunto de algoritmos para controlar
a forma como o tráfego é transmitido.• As políticas de QoS são feitas de forma independente para cada
interface do computador/roteador• Os algoritmos de enfileiramento afetam apenas os pacotes que
saem pela interface, e não os que entram.• Em um roteador, cada interface controla o QoS do tráfego em
um único sentido.