Upload
juvenal-silva
View
456
Download
5
Embed Size (px)
DESCRIPTION
Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas
QoS e Serviços diferenciados usando Linux
Juvenal A. Silva Jr.
http://www.v2-home.com.br
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.
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).
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.
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?
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
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.
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
Juvenal A. Silva Jr. <[email protected]>v2 Soluções e Sistemas
Exemplo de Implantação
Modelo utilizando HTB para o Link Hierarquico (resultado final)
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?