Mecanismos de QoS em Linux tc – Traffic Control

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

Mecanismos de QoS em Linux tc – Traffic Control. Edgard Jamhour. Bibliografia. A maior parte das figuras desta apresentação foi extraída do tutorial: http://www.opalsoft.net/qos/DS.htm. Arquitetura de Rede no Linux. - PowerPoint PPT Presentation

Text of Mecanismos de QoS em Linux tc – Traffic Control

  • 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) | valueold 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 PadronizadosDrop 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: DROPRoteador 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 PARA CLASSE DE TRATAMENTO DE EXCESSOe.g. AF12burst:e.g. 62,5 kbytesburst:e.g. 62,5 kbytesrate: e.g. 500 kbp