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

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Palestra QoS

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

Page 2: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

O que é roteamento

Aplicação O roteamento orienta o

encaminhamento, ou seja, a transferencia de pacotes endereçados para outras redes, usando para isso as tabelas de roteamento.

Protocolos As tabelas de roteamento são

estáticas 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.

Page 3: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Roteadores de Fronteira

Os Roteadores de fronteira são responsáveis por todo o tráfego entre nosso domínio (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 são responsáveis pela nossa conectividade exterior.

Fluxos de entrada São todas as conexões externas (de fora do nosso domínio)

que chegam ao nosso roteador. Fluxos de saída

São todas as conexões provenientes de nossa rede interna, que são enviadas para redes externas (fora do nosso domínio).

Page 4: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Fluxo de conexões

Classificando Várias conexões externas podem ser encaixadas em uma classe e

agrupadas. Gerenciando

As classes (fluxos de conexões agrupadas) são mais facilmente gerenciáveis.

Priorizando Informamos como cada uma das classes deve ser tratada pelo

roteador.

Page 5: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Custo do Link

Questões cruciais para dimensionamento do link Banda insuficiente para utilização normal Congestionamentos constantes no link Má utilização da banda do link Gargalos durante o dia nos horários de maior utilização Aplicativos não prioritários que “roubam” banda de comunicação Devo aumentar a banda do Link?

Page 6: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Otimização do Link

Distribuir carga Dividir a banda do link de comunicação entre divisões ou

departamentos Dividir a banda do link de comunicação entre serviços

Impor limites Forçar os limites estabelecidos para cada serviço ou divisão

especificado na divisão do link Garantir Banda

Garantir o minimo de banda do link para cada um dos serviços ou divisões especificadas

Page 7: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

O que é QoS

Segundo a Wikipedia:“QoS é a probabilidade de um pacote de comunicação atingir seu endereço de destino com sucesso dentro do período de latência desejado.”

Sua utilização principal visa Garantir disponibilidade de um serviço dentro de padrões

específicos, e Garantir o nível de serviço acordado (SLA) entre as partes

envolvidas.

Page 8: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Proposta do IETF

O IETF definiu os padrões 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

Page 9: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Formas de aplicação

Paradigma do IETF para Serviços Diferenciados Classificação dos pacotes Marcam-se os pacotes utilizando a métrica obtida na classificação Limita-se ou descarta-se o pacote dependendo da métrica obtida

na classificação

Page 10: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Utilizando QoS com Linux

Todos os kernels do Linux, a partir da série 2.4, e em especial da 2.4.20, já possuem suporte para QoS Anteriormente à série 2.4, não havia suporte oficial à Advanced

Routing e Traffic Control Na série 2.4 temos a inclusão oficial do AR e do TC, porém

somente com as qdiscs classfull CBQ e PRIO A partir da versão 2.4.20, incluíu-se a qdisc classfull HTB, mais

precisa e fácil de configurar que a CBQ

Page 11: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

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

Page 12: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Traffic Control

Modelo simples de rede com Traffic Control no Linux O que é Traffic Control?

É o controle da utilização da banda de comunicação Como funciona

Limita-se a velocidade de saída dos pacotes na interface de rede

Page 13: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Traffic Control

Modelo completo de rede com Traffic Control no Linux Em um roteador, multiplas interfaces recebem e enviam pacotes

entre várias redes Na entrada temos um controle pelo iptables Na saída o controle é feito pelas disciplinas de enfileiramento

Page 14: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

QoS Extendida

Page 15: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

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 padrão para roteamento avançado 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

Page 16: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Disciplinas CBQ e HTB

Distribuição de banda usando CBQ ou HTB Compartilhamento plano do link Modelo Flat Link Sharing (compartilhamento plano)

Page 17: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Disciplinas CBQ e HTB

Compartilhamento hierarquico do link Hierarchical Link Sharing (compartilhamento hierarquico) Distribuição do link entre vários níveis

Page 18: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Exemplo de implantação 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 htb \ rate 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 htb \ rate 716kbit ceil 716kbit# tc class add dev eth0 parent 1:1 classid 1:3 htb \ rate 820kbit ceil 820kbit# tc class add dev eth0 parent 1:1 classid 1:4 htb \ rate 512kbit ceil 512kbit

A seguir definiremos cada classid (1:2, 1:3 e 1:4) separadamente

Page 19: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos a divisão da classid 1:2 Para os limites da classid 1:2# tc class add dev eth0 parent 1:2 classid 1:21 htb \ rate 40kbit ceil 716kbit# tc class add dev eth0 parent 1:2 classid 1:22 htb \ rate 512kbit ceil 716kbit# tc class add dev eth0 parent 1:2 classid 1:23 htb \ rate 164kbit ceil 716kbit

Adicionando as queue disciplines para cada uma das classes# tc qdisc add dev eth0 parent 1:21 \ handle 210: pfifo_fast# tc qdisc add dev eth0 parent 1:22 \ handle 220: pfifo_fast# tc qdisc add dev eth0 parent 1:23 \ handle 230: pfifo_fast

Page 20: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos a divisão da classid 1:3 Para os limites da classid 1:3# tc class add dev eth0 parent 1:3 classid 1:31 htb \ rate 40kbit ceil 820kbit# tc class add dev eth0 parent 1:3 classid 1:32 htb \ rate 616kbit ceil 820kbit# tc class add dev eth0 parent 1:3 classid 1:33 htb \ rate 164kbit ceil 820kbit

Adicionando as queue disciplines para cada uma das classes# tc qdisc add dev eth0 parent 1:31 \ handle 310: pfifo_fast# tc qdisc add dev eth0 parent 1:32 \ handle 320: pfifo_fast# tc qdisc add dev eth0 parent 1:33 \ handle 330: pfifo_fast

Page 21: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos a divisão da classid 1:4 Para os limites da classid 1:4# tc class add dev eth0 parent 1:4 classid 1:41 htb \ rate 40kbit ceil 512kbit# tc class add dev eth0 parent 1:4 classid 1:42 htb \ rate 308kbit ceil 512kbit# tc class add dev eth0 parent 1:4 classid 1:43 htb \ rate 164kbit ceil 512kbit

Adicionando as queue disciplines para cada uma das classes# tc qdisc add dev eth0 parent 1:41 \ handle 410: pfifo_fast# tc qdisc add dev eth0 parent 1:42 \ handle 420: pfifo_fast# tc qdisc add dev eth0 parent 1:43 \ handle 430: pfifo_fast

Page 22: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos os filtros para o classificador Filtros por endereço e porta de conexão para classid 1:2# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.1/24 match ip \ sport 22 0xfff flowid 1:21# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.1/24 match ip \ sport 80 0xfff flowid 1:22# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.1/24 match ip \ sport 25 0xfff flowid 1:23

Page 23: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos os filtros para o classificador Filtros por endereço e porta de conexão para classid 1:3# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.2/24 match ip \ sport 22 0xfff flowid 1:31# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.2/24 match ip \ sport 80 0xfff flowid 1:32# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.2/24 match ip \ sport 5060 0xfff flowid 1:33

Page 24: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Aqui definiremos os filtros para o classificador Filtros por endereço e porta de conexão para classid 1:4# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.3/24 match ip \ sport 25 0xfff flowid 1:31# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.3/24 match ip \ sport 80 0xfff flowid 1:32# tc filter add dev eth0 parent 1:0 protocol ip \ prio 1 u32 match ip dst 172.16.3/24 match ip \ sport 5060 0xfff flowid 1:33

Page 25: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Exemplo de Implantação

Modelo utilizando HTB para o Link Hierarquico (resultado final)

Page 26: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Questões

Mudando Ag 1 e Ag 3 para 30%, o que seria necessário mudar?

Por que o "shapper" está rodando na interface interna e não na externa?

Page 27: Palestra QoS

Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas

Perguntas