23
Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Embed Size (px)

Citation preview

Page 1: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Edgard Jamhour

Mecanismos de QoS em Linuxtc – Traffic Control

Edgard Jamhour

Page 2: Edgard Jamhour Mecanismos de QoS em Linux tc – 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

Page 3: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Edgard Jamhour

Política de QoS e Elementos do TC

Qdisc da classe

Qdisc principal

Page 4: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 5: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 6: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 7: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 8: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 9: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 10: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Edgard Jamhour

PRIO: Priorização Injusta

> tc qdisc add dev eth0 root handle 1:0 prio

Page 11: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 12: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 13: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 14: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 15: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 16: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 17: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 18: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

Edgard Jamhour

Byte DS X DSCP para PHBs padronizados

Drop Precedence DSCP em Hexa DS em Hexa

Page 19: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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]

Page 20: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 21: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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 ...

Page 22: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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

Page 23: Edgard Jamhour Mecanismos de QoS em Linux tc – Traffic Control Edgard Jamhour

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.