Click here to load reader
View
218
Download
1
Embed Size (px)
Mecanismos de QoS em Linuxtc Traffic ControlEdgard Jamhour
BibliografiaA maior parte das figuras desta apresentao foi extrada do tutorial:
http://www.opalsoft.net/qos/DS.htm
Arquitetura de Rede no LinuxUm host com duas placas de rede, executando o sistema operacional linux pode ser transformado em um roteador, conforme a figura abaixo.
Implementao de QoS em LinuxOs elementos que implementam o QoS no linux so os seguintes:
pacote destinado ao n localpacote destinado ao roteamento
Controle de TrfegoO controle de trfego implementado atravs de dois mecanismos:Pacotes so policiados na entradapacotes indesejveis so descartadosPacotes so enfileirados na respectiva interface de sadapacotes podem ser atrasados, descartados ou priorizados
Elementos do Controle de TrfegoO controle de trfego implementado internamente por 4 tipos de componentes:Queuing Disciplines = qdiscalgoritmos que controlam o enfileiramento e envio de pacotes. e.g. FIFOClassesrepresentam entidades de classificao de pacotes. cada classe pode estar associada a uma qdiscFiltersutilizados para classificar os pacotes e atribu-los as classes.Policersutilizados para evitar que o trfego associado a cada filtro ultrapasse limites pr-definidos
ExemploA Qdisc principal obrigatria. Ela controla como os pacotes so recebidos e enviados pela interface.As Qdisc associadas as classes controlam apenas os pacotes da classe.
Comandos: Criar a qdisc principal1) Cria a qdisc principal chamada 1:0handle o identificador da qdisc. O id de qdisc sempre termina em :0htb o algoritmo utilizado pela qdisc.no caso, o algoritmo no exige nenhum parmetro obrigatrio
> tc qdisc add dev eth0 root handle 1:0 htb
Comandos: Criar as classes filhas2) cria duas classes com taxas diferentesAs classes so filhas da qdisc principalO htb, quando utilizado em uma classe existe parmetros de taxa de transmisso
> 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
Comandos: Criar as qdisc das classes3) cria as qdiscs de sada, associadas a cada classe:Cada qdisc filha das classe a ela associadaO sfq o algoritmo escolhido para a qdiscperturb um parmetro do algoritmo
> tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10> tc qdisc add dev eth0 parent 1:2 handle 20: sfq perturb 10
Comandos: Criar os filtros4) cria os filtros para as classesOs filtros so filhos do qdisc principalO tipo de filtro utilizado u32
> 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
Comandos de monitoramentoiplink showmostra a classe default associada a interfacetc [-s] qdisc/class/filter show dev eth0mosta as qdisc/class/filter associadas a interfaces mostra as estatsticas do uso da qdisc/class/filtertc qdisc del root dev eth0limpa as regras de QoS
Queueing DisciplinesSem classe (sem classificao)FIFO: First In First OutSFQ: Stochastic Fair QueuingTBF: Token Bucket FlowDS_MARK: Diff-Serv MarkerRED: Random Early DetectionCom classe (classificao e priorizao)PRIO: Priority Queue[CBQ: Class-Based Queueing]HTB: Substituto do CBQ
FIFOCria uma fila com capacidade para 10 pacotes Os pacotes so processados na ordem de chegada
PRIO
Classes PRIO so associadas a FIFOCria automaticamente 3 classes denominadas: 1:1, 1:2 e 1:3Associa a qdisc PFIFO as classesOs filtros precisam ser adicionados posteriormente as classes.
Exemplos de Filtros para as Classes PFIFOOs exemplos abaixo mostram como associar pacotes as classes baseando-se nos cdigos de TOS (DSCP)
Exerccio 1Crie um script para classificar o trfego recebido e enviado pelo seu computador, associando:todo trfego TCP na classe 1:1 (prioridade alta)todo trfego UDP na classe 1:2 (prioridade mdia)todo trfego ICMP na classe 1:3 (prioridade baixa)Aps gerar trfego com seu computador, verifique as estatsticas de uso dos elementos qdisc, classe e filter (se houverem).
ObservaoAo fazer os testes, lembre-se que qdisc influencia o trfego de sada do computador e no o de entrada.Dessa forma, a medio deve ser feita no host de origem.
qdiscHost origemHost destinoTCPUDPICMP
TBF: Token-Bucket FilterTBF um algoritmo de condicionamento de trfego (traffic-shaping)Ele permite limitar a banda associada a uma classe, associando uma taxa mdia e a possibilidade de envio de rajadas controladas.
b bytesr bytes/schegadap bytes/ssada
ParmetrosOnde:rate: taxa mdia transmitidaburst: tamanho do balde (em bytes)latency: tempo mximo que um pacote pode ficar na fila aguardando o tokenpeakrate: taxa de pico de descarga do baldominburst: geralmente o mtu de um pacote
> tc qdisc add dev eth0 parent 1:1 tbf rate 0.5mbit burst 5k latency 70ms peakrate 1mbit minburst 1540
Exemplo
Exerccio 2Altere o script do exerccio 1, associando uma qdisc do tipo TBF a classe 1:1tbf rate 0.5mbit burst 5k latency 70ms peakrate 1mbit minburst 1540 Crie os seguintes filtros:Todo trfego TCP associado a classe 1:1O trfego enviado ao computador ao lado associado a classe 1:2O trfego default associado a classe 1:3Faa download de um arquivo grande em seu computador pela Internet e verifique as estatsticas associadas a classe. Efetue pings no computador enquanto voc faz o download para avaliar o efeito do QoS.
SFQ: Stochastic Fair QueuingAs filas so servidas um pacote de cada vez, utilizando a estratgia de round-robin
ParmetrosperturbIntervalo para reconfigurao de hashing.Valor recomendado: 10squantumQuantidade de bytes removidos da fila por interao. O valor default 1 = maximum sized packet (MTU-sized).
Exemplo
HTBEsse algoritmo utilizado no lugar do CBQ, considerada muito complexa, para construir hierarquias de diviso de banda conforme a figura abaixo.
Parmetrosrate: taxa associada garantida para classe e suas filhasceil: taxa mxima que pode ser emprestada da classe paiburst: quantidade mxima de bytes que pode ser enviada na taxa ceilcburst:quantidade mxima de bytes que pode ser enviada na taxa da interface (quando no houver limite imposto pela classe pai)priority: ordenamento das classes. As classes de maior prioridade recebem o excesso de banda primeiro, reduzindo sua latncia (prio 0 a maior)
> 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 ]
Exemplo
Criao da Hierarquia
Criao da Qdisc de SadaA criao da Qdisc de sada obrigatria
Criao dos FiltrosOs filtros so atribudos diretamente as classes filhas.A classe pai utilizada apenas para definir os limites do emprstimo de banda compartilhada.
Exerccio 3Crie um script com a hierarquia para o seu computador, adotando o desenho abaixo. Depois avalie as estatsticas da classe:
SSH128K256Koutros64K256KDNS32K64Koutros32K64KTCP192K256KUDP64K64Klink256K512K
DSMARKA disciplina DSMARK utilizado para fazer a marcao ou remarcao de bits do campo DS.
DSMARKA marcao baseada na seguinte equao:new_DS = (old_DS & mask) | value
old DSbits zeradosAND mask& (zera bits)new DSOR value| (seta bits)
Exemplo: Criao das classes
Exemplo: Criao de Classes
CodePoints de PHBA marcao dos pacotes deve desprezar os trs ltimos bits do byte de TOS (DSCP), conforme a figura abaixo.
ENC(2 bits)
Seletores de ClasseDrop PrecedencePHB Padronizado00: (1)01: (2)10: (3)0001: (AF1)010: (AF2)011: (AF3)100: (AF4)
PHBs Padronizados
Drop PrecedenceDCSP em HexaDS em Hexa
ExemplosSetar todos os pacotes para AF23: mask 0x0 (b00000000 ) value 0x58 (b01011000 ) Setar todos os pacotes como AF12, preservando os bits ECN:mask 0x3 (b00000011 ) value 0x30 (b00110000 ) Setar em 2 o 'drop precedence' de todos os pacotes mask 0xe3 (b11100011 ) value 0x10 (b00010000)Setar todos os pacotes para AF3, sem alterar os bites ECN e os bits de precedncia. mask 0x1f (b00011111) value 0x60 (b01100000)
Exemplo: Criao dos Filtros
Exerccio 4:Crie um script para:marcar os pacotes UDP com AF 11marcar os pacotes TCP com AF 23Utilizando o Ethereal, capture os pacotes enviados e recebidos pelo seu computador e verifique como eles so marcados.
Policiamento: PolicingA funo do policiamento limitar o trfego do usurio as condies importas pelo SLA.O policiamento feito normalmente na interface de entrada dos roteadores de borda.
Roteador de bordaControle do excesso de trfego e marcao para classe de core Trfego garantido: AF11
Trfego excedente: AF12
Trfego violado: DROP
Roteador de core
Policiamento: PolicingO policiamento implementado pelo cascateamento de fluxos token-bucket controladosO ltimo parmetro especifica o que deve ser feito com os pacotes que excederem o burst.drop: os pacotes so descartadoscontinue: continua a classificao do pacote assumindo a regra de filtro de prioridade inferior mais prxima.classify (apenas para CBQ): classifica o pacote como Best Effort.
> police rate BPS burst BYTES [reclassify | drop | continue]
Policiamento: PolicingO trfego que excede o balde tratado pelo prximo filtro no qual o trfego se encaixa.
balde 1balde 2Xdroptrfego totalcontinue(excesso)drop(excesso)rate: e.g. 500 kbpsENVIADO PARA CLASSE NORMALe.g. AF11ENVIADO P