of 27/27
Juvenal A. Silva Jr. <[email protected] v2 Soluções e Sistemas QoS e Serviços diferenciados usando Linux Juvenal A. Silva Jr. [email protected] http://www.v2-home.com.br

Palestra QoS

  • View
    452

  • Download
    5

Embed Size (px)

DESCRIPTION

 

Text of Palestra QoS

  • 1. QoS e Servios diferenciados usando Linux Juvenal A. Silva Jr. [email_address] http://www.v2-home.com.br

2. O que roteamento

    • Aplicao
      • O roteamento orienta o encaminhamento, ou seja, a transferencia de pacotes endereados para outras redes, usando para isso as tabelas de roteamento.
    • Protocolos
      • As tabelas de roteamento so estticas ou dinamicas, sendo as dinamicas geradas por protocolos de busca como IGRP, EIGRP, OSPF, RIP, EGP e BGP principalmente.
    • Objetivo
      • Conectar redes distintas e permitir a troca de pacotes entre elas.

3. Roteadores de Fronteira

    • Os Roteadores de fronteira so responsveis por todo o trfego entre nosso domnio (nossa rede interna) e redes externas, sendo a principal porta de acesso s redes externas.
      • Podem ser exemplificados como modems ADSL, cable modems, conectores Frame-Relay, Linhas Privadas, entre outros, e so responsveis pela nossa conectividade exterior.
    • Fluxos de entrada
      • So todas as conexes externas (de fora do nosso domnio) que chegam ao nosso roteador.
    • Fluxos de sada
      • So todas as conexes provenientes de nossa rede interna, que so enviadas para redes externas (fora do nosso domnio).

4. Fluxo de conexes

    • Classificando
      • Vrias conexes externas podem ser encaixadas em uma classe e agrupadas.
    • Gerenciando
      • As classes (fluxos de conexes agrupadas) so mais facilmente gerenciveis.
    • Priorizando
      • Informamos como cada uma das classes deve ser tratada pelo roteador.

5. Custo do Link

    • Questes cruciais para dimensionamento do link
      • Banda insuficiente para utilizao normal
      • Congestionamentos constantes no link
      • M utilizao da banda do link
      • Gargalos durante o dia nos horrios de maior utilizao
      • Aplicativos no prioritrios que roubam banda de comunicao
      • Devo aumentar a banda do Link?

6. Otimizao do Link

    • Distribuir carga
      • Dividir a banda do link de comunicao entre divises ou departamentos
      • Dividir a banda do link de comunicao entre servios
    • Impor limites
      • Forar os limites estabelecidos para cada servio ou diviso especificado na diviso do link
    • Garantir Banda
      • Garantir o minimo de banda do link para cada um dos servios ou divises especificadas

7. O que QoS

  • Segundo a Wikipedia: QoS a probabilidade de um pacote de comunicao atingir seu endereo de destino com sucesso dentro do perodo de latncia desejado. Sua utilizao principal visa
    • Garantir disponibilidade de um servio dentro de padres especficos, e
    • Garantir o nvel de servio acordado (SLA) entre as partes envolvidas.

8. Proposta do IETF

  • O IETF definiu os padres para QoS nas seguintes RFCs
    • RFC 2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 e IPv6 headers
    • RFC 2475 - An Architecture for Differentiated Services
    • RFC 2597 - Assured Forwarding PHB Group
    • RFC 2598 - An Expedited Forwarding PHB

9. Formas de aplicao

  • Paradigma do IETF para Servios Diferenciados
    • Classificao dos pacotes
    • Marcam-se os pacotes utilizando a mtrica obtida na classificao
    • Limita-se ou descarta-se o pacote dependendo da mtrica obtida na classificao

10. Utilizando QoS com Linux

  • Todos os kernels do Linux, a partir da srie 2.4, e em especial da 2.4.20, j possuem suporte para QoS
    • Anteriormente srie 2.4, no havia suporte oficial Advanced Routing e Traffic Control
    • Na srie 2.4 temos a incluso oficial do AR e do TC, porm somente com as qdiscs classfull CBQ e PRIO
    • A partir da verso 2.4.20, incluu-se a qdisc classfull HTB, mais precisa e fcil de configurar que a CBQ

11. Linux Advanced Routing

  • Modelos de tratamento do stack IP no kernel do Linux
    • Modelo do stack IP para pacotes internos
    • Modelo do stack IP quando atuando como roteador

12. Traffic Control

  • Modelo simples de rede com Traffic Control no Linux
    • O que Traffic Control?
      • o controle da utilizao da banda de comunicao
    • Como funciona
      • Limita-se a velocidade de sada dos pacotes na interface de rede

13. Traffic Control

  • Modelo completo de rede com Traffic Control no Linux
    • Em um roteador, multiplas interfaces recebem e enviam pacotes entre vrias redes
    • Na entrada temos um controle pelo iptables
    • Na sada o controle feito pelas disciplinas de enfileiramento

14. QoS Extendida 15. Disciplinas de Filas

  • Possuimos dois tipos de disciplinas, Classless e Classfull
    • Disciplinas Classless
      • pfifo FIFO simples por pacotes
      • bfifo FIFO simples por bytes
      • pfifo_fast QDisc padro para roteamento avanado
      • red Random Early Detection
      • gred Generalized red
      • sfq Stochastic Fairness Queueing
      • tbf Token Bucket Filter
    • Disciplinas Classfull
      • prio Priority Classification
      • cbq Class Based Queuing
      • htb Hierarchy Token Bucket

16. Disciplinas CBQ e HTB

  • Distribuio de banda usando CBQ ou HTB
    • Compartilhamento plano do link
    • Modelo Flat Link Sharing (compartilhamento plano)

17. Disciplinas CBQ e HTB

  • Compartilhamento hierarquico do link
    • Hierarchical Link Sharing (compartilhamento hierarquico)
    • Distribuio do link entre vrios nveis

18. Exemplo de Implantao

  • Exemplo de implantao
    • Para implementar o compartilhamento hierarquico apresentado utilizando HTB devemos:
      • Ativar a qdisc HTB na interface eth0 # tc qdisc add dev eth0 root handle 1:0 htb
      • Ativar a primeira classe htb limitada a 2048 kbit de banda # tc class add dev eth0 parent 1:0 classid 1:1 htbrate 2048kbit
      • Ativar as subclasses para os links Ag 1, Ag 2 e Ag 3 com limites de 716 kbit, 820 kbit e 512 kbit respectivamente # tc class add dev eth0 parent 1:1 classid 1:2 htbrate 716kbit ceil 716kbit # tc class add dev eth0 parent 1:1 classid 1:3 htbrate 820kbit ceil 820kbit # tc class add dev eth0 parent 1:1 classid 1:4 htbrate 512kbit ceil 512kbit
    • A seguir definiremos cada classid (1:2, 1:3 e 1:4) separadamente

19. Exemplo de Implantao

    • Aqui definiremos a diviso da classid 1:2
      • Para os limites da classid 1:2 # tc class add dev eth0 parent 1:2 classid 1:21 htbrate 40kbit ceil 716kbit # tc class add dev eth0 parent 1:2 classid 1:22 htbrate 512kbit ceil 716kbit # tc class add dev eth0 parent 1:2 classid 1:23 htbrate 164kbit ceil 716kbit
      • Adicionando as queue disciplines para cada uma das classes # tc qdisc add dev eth0 parent 1:21handle 210: pfifo_fast # tc qdisc add dev eth0 parent 1:22handle 220: pfifo_fast # tc qdisc add dev eth0 parent 1:23handle 230: pfifo_fast

20. Exemplo de Implantao

    • Aqui definiremos a diviso da classid 1:3
      • Para os limites da classid 1:3 # tc class add dev eth0 parent 1:3 classid 1:31 htbrate 40kbit ceil 820kbit # tc class add dev eth0 parent 1:3 classid 1:32 htbrate 616kbit ceil 820kbit # tc class add dev eth0 parent 1:3 classid 1:33 htbrate 164kbit ceil 820kbit
      • Adicionando as queue disciplines para cada uma das classes # tc qdisc add dev eth0 parent 1:31handle 310: pfifo_fast # tc qdisc add dev eth0 parent 1:32handle 320: pfifo_fast # tc qdisc add dev eth0 parent 1:33handle 330: pfifo_fast

21. Exemplo de Implantao

    • Aqui definiremos a diviso da classid 1:4
      • Para os limites da classid 1:4 # tc class add dev eth0 parent 1:4 classid 1:41 htbrate 40kbit ceil 512kbit # tc class add dev eth0 parent 1:4 classid 1:42 htbrate 308kbit ceil 512kbit # tc class add dev eth0 parent 1:4 classid 1:43 htbrate 164kbit ceil 512kbit
      • Adicionando as queue disciplines para cada uma das classes # tc qdisc add dev eth0 parent 1:41handle 410: pfifo_fast # tc qdisc add dev eth0 parent 1:42handle 420: pfifo_fast # tc qdisc add dev eth0 parent 1:43handle 430: pfifo_fast

22. Exemplo de Implantao

    • Aqui definiremos os filtros para o classificador
      • Filtros por endereo e porta de conexo para classid 1:2 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.1/24 match ipsport 22 0xfff flowid 1:21 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.1/24 match ipsport 80 0xfff flowid 1:22 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.1/24 match ipsport 25 0xfff flowid 1:23

23. Exemplo de Implantao

    • Aqui definiremos os filtros para o classificador
      • Filtros por endereo e porta de conexo para classid 1:3 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.2/24 match ipsport 22 0xfff flowid 1:31 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.2/24 match ipsport 80 0xfff flowid 1:32 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.2/24 match ipsport 5060 0xfff flowid 1:33

24. Exemplo de Implantao

    • Aqui definiremos os filtros para o classificador
      • Filtros por endereo e porta de conexo para classid 1:4 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.3/24 match ipsport 25 0xfff flowid 1:31 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.3/24 match ipsport 80 0xfff flowid 1:32 # tc filter add dev eth0 parent 1:0 protocol ipprio 1 u32 match ip dst 172.16.3/24 match ipsport 5060 0xfff flowid 1:33

25. Exemplo de Implantao

    • Modelo utilizando HTB para o Link Hierarquico (resultado final)

26. Questes

    • Mudando Ag 1 e Ag 3 para 30%, o que seria necessrio mudar?
    • Por que o "shapper" est rodando na interface interna e no na externa?

27. Perguntas