Implementação de QoS em um roteador Linux



Documentos relacionados
Mecanismos de QoS em Linux tc Traffic Control

Mecanismos de QoS em Linux tc Traffic Control

Mecanismos de QoS em Linux Hierarchical Token Bucket (HTB)

Mecanismos de QoS em Linux tc Traffic Control. Edgard Jamhour

VoIP com QoS (Linux e Cisco)

cio QoS Linux Edgard Jamhour 2008, Edgard Jamhour

Mecanismos de QoS em Linux DiffServ (Marcação e Policiamento)

Linux Controle de Redes

GTS-8. Implementação de uma solução baseada em Software Livre para o controle de tráfego P2P. Helder Jean Brito da Silva (helder@info.ufrn.

$ %$ & ' ( ! ) * +!, 3! 4 5!, 6, ! ! " #!

Serviços Diferenciados em Sistemas Operacionais Linux

Firewalls, um pouco sobre...

EXERCÍCIOS PROPOSTOS Desempenho de redes

Segurança de Redes. Firewall. Filipe Raulino

Roteamento avançado. e controle de banda em Linux

2 A Avaliação de RMU 20/12/2012. Nome:

Otimização do consumo de banda utilizando Iptables Layer 7 e HTB

Iptables. Adailton Saraiva Sérgio Nery Simões

Implementação de um gateway de borda com controle de banda utilizando software livre

Ambiente de Experimentação. Teste de efetividade de algoritmos de adaptação de vídeo

Qualidade de serviço. Determina o grau de satisfação do usuário em relação a um serviço específico Capacidade da rede de atender a requisitos de

Uso do iptables como ferramenta de firewall.

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Capítulo II - Mecanismos para se prover QoS. Prof. José Marcos C. Brito

ncia de Redes NGN - NEXT GENERATION NETWORK Hugo Santana Lima hugosl@nec.com.br Porque Telefonia IP?

phptcadmin: Uma Solução Para o Planejamento e Implementação de Qualidade de Serviço em Redes de Computadores

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Curso Firewall. Sobre o Curso de Firewall. Conteúdo do Curso

IPTABLES. Helder Nunes

Prof. Samuel Henrique Bucke Brito

Implantação de QoS no

TP308 Introdução às Redes de Telecomunicações

Elaboração de Script de Firewall de Fácil administração

Aplicação de QoS por meio de Classes de Serviços com HTB e IPTABLES

Recomendações da Cisco para Implantação de QoS para VOIP

APÊNDICE A. O simulador NS-2. A.1 Características principais

Faculdade Lourenço Filho Curso de Redes de Computadores. TRABALHO DE TELEFONIA IP Serviços Diferenciados - QoS

Segurança em Sistemas de Informação

ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Aldir Lopes dos Santos. Controle de Banda em Redes TCP/IP Utilizando o Linux

Aula 08. Firewall. Prof. Roitier Campos Gonçalves

Segurança de Redes de Computadores

Firewall - IPTABLES. Conceitos e Prática. Tópicos em Sistemas de Computação Prof. Dr. Adriano Mauro Cansian adriano@acmesecurity.

Aplicando políticas de QoS. MUM Brasil São Paulo Outubro/2008. Sérgio Souza

Serviços Diferenciados na Internet

Universidade Santa Cecília - UNISANTA. Voz Sobre IP. Aspectos de Qualidade. Qualidade de Serviço

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

QoS for voice applications


Controle de Congestionamento em TCP Parte 2. Prof. Dr. S. Motoyama

TRABALHO DE TELEFONIA IP

Administração de Redes Firewall IPTables

MONTANDO ESTRUTURAS DE QOS COM HTB UTILIZANDO O ROUTER-OS DAVID MARCONY

Redes de Computadores

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

MODELOS DE QUALIDADE DE SERVIÇO - APLICAÇÕES EM IP

Administração de Sistemas Operacionais

Redes de Computadores II INF-3A

Laboratório. Assunto: endereçamento IP e roteamento.

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

Gerenciamento de redes

QoS em Redes IP: Arquitetura e Aplicações

Qualidade de Serviço com Mikrotik

Serviços Diferenciados

Firewalls em Linux. Tutorial Básico. André Luiz Rodrigues Ferreira

Controlo de Tráfego num Edge Device Multi-Serviço Linux

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Relatório - Mecanismos de escalonamento de pacotes

Segurança da Informação

OS endereços IP v.4 consistem em 4 octetos separados por pontos. Estes endereços foram separados

comando parâmetro alternativo parâmetro REGRA função iptables -t tabela -N --new chain cria uma nova chain. iptables -t tabela -E --rename-chain

Entendendo como funciona o NAT

Instalação e Configuração Iptables ( Firewall)

Serviços de Comunicações. Serviços de Comunicações. Módulo 7 Qualidade de Serviço em redes IP. condições de rede existentes em cada momento

Controle de congestionamento em TCP

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

3 Qualidade de serviço na Internet

Arquitectura de Redes

Aula 4. Pilha de Protocolos TCP/IP:

MÓDULO 8 Modelo de Referência TCP/IP

Fornecer serviços independentes da tecnologia da subrede; Esconder do nível de transporte o número, tipo e a topologia das subredes existentes;

Prof. Samuel Henrique Bucke Brito

Redes de Computadores

Criptografia e Segurança das Comunicações. Firewalls

01 - Entendendo um Firewall. Prof. Armando Martins de Souza armandomartins.souza@gmail.com

PROJETO DE REDES

MultiProtocol Label Switching - MPLS

Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo.

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Conexão de Redes. Protocolo TCP/IP. Arquitetura Internet.

Application Notes: QoS Básico. Exemplo para aplicação de QoS

INSTRUÇÃO NORMATIVA CONTROLE QUALIDADE DE SERVIÇOS QOS

TRANSMISSÃO DE DADOS

Transcrição:

Implementação de QoS em um roteador Linux Redes Multimídia Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br 28 de setembro de 2011 1 / 26

Sumário 1 Teoria sobre o TC 2 Prática com o TC 3 Classificação e marcação com iptables 2 / 26

Linux atuando como um roteador O pacote iproute2 Consiste em uma coleção de ferramentas para controlar o tráfego em redes TCP/IP ˆ A ferramenta Traffic Control (tc) é destinada ao controle de tráfego, permitindo a aplicação de poĺıticas de controle para Qualidade de Serviço ˆ Permite a combinação de disciplinas de enfileiramento, classes e filtros para os pacotes destinados à interface de saída 3 / 26

Linux atuando como um roteador O pacote iproute2 Consiste em uma coleção de ferramentas para controlar o tráfego em redes TCP/IP ˆ A ferramenta Traffic Control (tc) é destinada ao controle de tráfego, permitindo a aplicação de poĺıticas de controle para Qualidade de Serviço ˆ Permite a combinação de disciplinas de enfileiramento, classes e filtros para os pacotes destinados à interface de saída 3 / 26

Funcionamento do código de rede do Linux 4 / 26

Aplicação do controle de tráfego ˆ Policiamento de pacotes no ingresso ˆ Pacotes indesejáveis são descartados ˆ Controle de filas na interface de saída ˆ Pacotes podem ser descartados, atrasados ou priorizados 5 / 26

Componentes do Controle de Tráfego ˆ Queueing disciplines qdisc ˆ Disciplinas de enfileiramento ˆ Indica como os pacotes na fila serão tratados. Ex: FIFO ˆ Classes ˆ Filters ˆ Forma de classificação e priorização de pacotes. ˆ Determina para quais classes os pacotes deverão ser encaminhados ˆ Policiers ˆ Controla o tráfego que passa pelos filtros para evitar abusos 6 / 26

Componentes do Controle de Tráfego (cont.) ˆ Uma qdisc pode: ˆ Armazenar pacotes ˆ Conter classes 7 / 26

Componentes do Controle de Tráfego (cont.) ˆ Uma qdisc pode: ˆ Armazenar pacotes ˆ Conter classes ˆ Uma classe não armazena pacotes. ˆ Dentro de uma classe só pode existir uma qdisc 7 / 26

Componentes do Controle de Tráfego (cont.) ˆ Uma qdisc pode: ˆ Armazenar pacotes ˆ Conter classes ˆ Uma classe não armazena pacotes. ˆ Dentro de uma classe só pode existir uma qdisc ˆ Ao criar uma qdisc composta por algumas classes, as qdisc destas classes terão por padrão a disciplina FIFO ˆ É possível alterar para outras disciplinas 7 / 26

Componentes do Controle de Tráfego (cont.) ˆ Uma qdisc pode: ˆ Armazenar pacotes ˆ Conter classes ˆ Uma classe não armazena pacotes. ˆ Dentro de uma classe só pode existir uma qdisc ˆ Ao criar uma qdisc composta por algumas classes, as qdisc destas classes terão por padrão a disciplina FIFO ˆ É possível alterar para outras disciplinas ˆ O objetivo dos filtros é de classificar os pacotes, encaminhando-os para as respectivas classes de acordo as informações contidas no cabeçalho IP 7 / 26

Componentes do Controle de Tráfego (cont.) entrada saída Queuing discipline (padrão) 8 / 26

Componentes do Controle de Tráfego (cont.) entrada Filter Filter Class Queuing discipline saída Filter Class Queuing discipline Queuing discipline (padrão) 8 / 26

Componentes do Controle de Tráfego (cont.) TBF = Token Bucket Filter (Balde de Fichas) 9 / 26

Algoritmos para enfileiramento de pacotes no Linux (qdisc) Sem classificação (não possui classes) ˆ First-In-Firt-Out (FIFO) Primeiro que chega, é o primeiro que sai ˆ Token Bucket Flow (TBF) Balde de fichas ˆ Stochastic Fair Queueing (SFQ) Enfileiramento justo estocástico ˆ Random Early Detection (RED) Detecção aleatória antecipada ˆ Diff-Serv Marker (DS MARK) Marcação DiffServ 10 / 26

Algoritmos para enfileiramento de pacotes no Linux (qdisc) Com classificação (possui classes e permite o uso de filtros) ˆ Priority Queueing (PRIO) Enfileiramento com prioridades ˆ Class Based Queueing (CBQ) Enfileiramento baseado em classes ˆ Hierarchical Token Bucket (HTB) Balde de fichas hierárquico 11 / 26

Disciplina padrão do Linux: pfifo fast ˆ Pacotes são armazenados em 3 bandas (0,1,2) ˆ Enquanto houver pacotes aguardando na banda 0, pacotes na banda 1 não serão processados. O mesmo ocorre da banda 1 para a banda 2 ˆ Cada banda possui enfileiramento FIFO ˆ A marcação no campo Tipo de Serviço do cabeçalho IP indica em qual banda o pacote será armazenado ˆ Pacotes que requerem atraso mínimo são direcionados para a banda 0 ˆ Possui semelhanças com a disciplina PRIO, porém a pfifo fast é sem classificação 12 / 26

pfifo fast Como os pacotes são priorizados 1 0 1 2 3 4 5 6 7 2 +-----+-----+-----+-----+-----+-----+-----+-----+ 3 4 PRECEDENCIA TOS 0 5 6 +-----+-----+-----+-----+-----+-----+-----+-----+ 7 8 # os 4 bits do TOS 9 10 Binario Decimal Significado 11 ----------------------------------------- 12 1000 8 Minimize delay (md) 13 0100 4 Maximize throughput (mt) 14 0010 2 Maximize reliability (mr) 15 0001 1 Minimize monetary cost (mmc) 16 0000 0 Normal Service 13 / 26

pfifo fast Como os pacotes são priorizados 17 TOS Bits Significado Prioridade Banda 18 ------------------------------------------------------------ 19 0x0 0 Normal Service 0 Best Effort 1 20 0x2 1 Minimize Monetary Cost 1 Filler 2 21 0x4 2 Maximize Reliability 0 Best Effort 1 22 0x6 3 mmc+mr 0 Best Effort 1 23 0x8 4 Maximize Throughput 2 Bulk 2 24 0xa 5 mmc+mt 2 Bulk 2 25 0xc 6 mr+mt 2 Bulk 2 26 0xe 7 mmc+mr+mt 2 Bulk 2 27 0x10 8 Minimize Delay 6 Interactive 0 28 0x12 9 mmc+md 6 Interactive 0 29 0x14 10 mr+md 6 Interactive 0 30 0x16 11 mmc+mr+md 6 Interactive 0 31 0x18 12 mt+md 4 Int. Bulk 1 32 0x1a 13 mmc+mt+md 4 Int. Bulk 1 33 0x1c 14 mr+mt+md 4 Int. Bulk 1 34 0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 14 / 26

Stochastic Fair Queueing (SFQ) Enfileiramento justo estocástico Projetado para garantir o acesso justo aos recursos. Cada fluxo possui uma quota para transmitir 15 / 26

Stochastic Fair Queueing (SFQ) Enfileiramento justo estocástico Projetado para garantir o acesso justo aos recursos. Cada fluxo possui uma quota para transmitir ˆ Existe um número pequeno de filas FIFO ˆ As filas são atendidas através da varredura cíclica ˆ A aplicação de uma função de resumo (hash) sobre cada pacote indica em qual fila este deverá ser armazenado ˆ São usadas as informações: endereço de origem, porta de origem e endereço de destino ˆ É possível que pacotes oriundos de diferentes origens possam ser armazenados em uma mesma fila ˆ Torna a solução escalável 15 / 26

Priority Queueing (PRIO) - Enfileiramento prioritário ˆ Constituído por diversas filas, cada qual com uma prioridade diferente ˆ Após a classificação os pacotes são adicionados em filas FIFO ˆ Vantagem: ˆ Uma forma simples para implementar diferenciação de pacote ˆ Desvantagens: ˆ Pacotes de filas com alta prioridade podem impedir o serviço de pacotes com menor prioridade 16 / 26

Hierarchical Token Bucket (HTB) - Balde de fichas hierárquico ˆ Constituído por baldes de fichas organizados em uma hierarquia ˆ Classes HTB possui dois parâmetros principais: ˆ rate: taxa de transmissão garantida ˆ ceil: taxa máxima concedida a classe ˆ (rate ceil): é a taxa de transmissão emprestada da classe pai enlace 100% 50% 20% 30% http ssh outros 17 / 26

Hierarchical Token Bucket (HTB) (cont.) enlace 100% 192.168.1.0/24 192.168.2.0/24 T.I. RH 80% 20% 50% 20% 30% http ssh outros 50% 20% 30% http mail outros 18 / 26

Aplicativo tc: Exemplos 1 # para mostrar a disciplina utilizada 2 tc qdisc show dev eth0 3 4 # Adicionando uma fila padrao na raiz da interface de rede 5 tc qdisc add dev eth0 root handle 1:0 htb default 12 6 7 # alterando uma disciplina 8 tc qdisc change dev eth0 root tbf rate 220 latency 50ms burst 1540 9 10 # Monitorar estado 11 tc -s qdisc show dev eth0 12 # Apaga a disciplina 13 tc qdisc del dev eth0 root Parâmetros para o algoritmo HTB linha 5 ˆ handle 1:0 - Identificador da qdisc (1) e (0) identificador da classe pertencente a qdisc ˆ default 12 - Classe padrão para receber pacotes não classificados 19 / 26

Exemplo 1: Aplicações com diferentes taxas ˆ Enlace com 100Kbps de taxa de transmissão ˆ 40Kbps para pacotes WWW ˆ 40Kbps para pacotes SSH ˆ 20Kbps para outros enlace 100K 40k 40k 20k http ssh outros 20 / 26

Exemplo 1: (cont.) 14 # adicionando a qdisc HTB na raiz da interface 15 tc qdisc add dev eth0 root handle 1:0 htb default 12 17 # criando as classes 18 # classe pai 19 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100kbps ceil 100kbps 21 # classes filhas 22 tc class add dev eth0 parent 1:1 classid 1:10 htb rate 40kbps ceil 100kbps 23 tc class add dev eth0 parent 1:1 classid 1:11 htb rate 40kbps ceil 100kbps 24 tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20kbps ceil 100kbps 26 # filtros 27 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1/24 match ip dport 22 0xffff flowid 1:10 28 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1/24 match ip dport 80 0xffff flowid 1:11 21 / 26

Exemplo 2: HTB com dois níveis de hierarquia ˆ Filtros Máquina 1 ˆ SSH 1:21 ˆ WWW 1:22 ˆ Outros 1:23 ˆ Filtros Máquina 2 ˆ SSH 1:31 ˆ WWW 1:32 ˆ Outros 1:33 filtros 100kbps class 1:1 60kbps class 1:2 40kbps class 1:3 20kbps 20kbps 20kbps 20kbps 10kbps 10kbps class 1:21 class 1:22 class 1:23 class 1:31 class 1:32 class 1:33 pfifo 210 pfifo 220 pfifo 230 pfifo 310 pfifo 320 pfifo 330 htb 1:0 22 / 26

Exemplo 2: HTB com dois níveis de hierarquia ˆ 1º nível de hierarquia de classes 30 tc qdisc add dev eth0 root handle 1:0 htb 31 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100kbps 32 tc class add dev eth0 parent 1:1 classid 1:2 htb rate 60kbps ceil 100kbps 33 tc class add dev eth0 parent 1:1 classid 1:3 htb rate 40kbps ceil 100kbps ˆ 2º nível de hierarquia de classes 36 tc class add dev eth0 parent 1:2 classid 1:21 htb rate 20bkps ceil 60kbps 37 tc class add dev eth0 parent 1:2 classid 1:22 htb rate 20bkps ceil 60kbps 38 tc class add dev eth0 parent 1:2 classid 1:23 htb rate 20bkps ceil 60kbps 41 tc class add dev eth0 parent 1:3 classid 1:31 htb rate 20kbps ceil 40kbps 42 tc class add dev eth0 parent 1:3 classid 1:32 htb rate 10kbps ceil 40kbps 43 tc class add dev eth0 parent 1:3 classid 1:33 htb rate 10kbps ceil 40kbps 23 / 26

Exemplo 2: HTB com dois níveis de hierarquia ˆ Adicionando qdisc pfifo nas classes 44 tc qdisc add dev eth0 parent 1:21 handle 210: pfifo limit 10 45 tc qdisc add dev eth0 parent 1:22 handle 220: pfifo limit 10 46 tc qdisc add dev eth0 parent 1:23 handle 230: pfifo limit 10 48 tc qdisc add dev eth0 parent 1:31 handle 310: pfifo limit 10 49 tc qdisc add dev eth0 parent 1:32 handle 320: pfifo limit 10 50 tc qdisc add dev eth0 parent 1:33 handle 330: pfifo limit 10 ˆ Criando os filtros 53 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.1 match ip sport 22 0xfff flowid 1:21 54 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.1 match ip sport 80 0xfff flowid 1:22 55 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.1 flowid 1:23 57 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 match ip sport 22 0xfff flowid 1:31 58 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 match ip sport 80 0xfff flowid 1:32 59 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2 flowid 1:33 24 / 26

Classificação de pacotes com iptables ˆ O iptables pode ser usado na classificação dos pacotes, assumindo assim a tarefa dos filtros do tc ˆ No exemplo abaixo, pacotes com destino a porta 22 (ssh) são colocados na classe 1:10 60 # adicionando HTB na raiz do dispositivo 61 tc qdisc add dev eth0 root handle 1:0 htb default 11 63 # limitando trafego para a interface 64 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100kbps 65 # adicionando as classes folhas 66 tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20kbps ceil 100 kbps 67 tc class add dev eth0 parent 1:1 classid 1:11 htb rate 80kbps ceil 100 kbps 69 # classificando os pacotes com iptables (tabela mangle) 70 iptables -t mangle -A POSTROUTING -p udp --dport 22 -j CLASSIFY --setclass 1:10 25 / 26

Marcação de pacotes com iptables ˆ O iptables pode ser usado para marcar pacotes e tal marcação pode então ser usada pelo filtro fw do tc ˆ No exemplo abaixo, pacotes com destino a porta 22 (ssh) são marcados com o valor 2 e um filtr do tc irá consumir tal marcação 71 # adicionando HTB na raiz do dispositivo 72 tc qdisc add dev eth0 root handle 1:0 htb 73 # limitando trafego para a interface 74 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100kbps 75 # adicionando as classes folhas 76 tc class add dev eth0 parent 1:1 classid 1:10 htb rate 20kbps ceil 100 kbps 78 # adicionando filtro para pacotes marcados com o valor 2 79 tc filter add dev eth0 parent 1:0 protocol ip handle 2 fw flowid 1:10 81 iptables -t mangle -A FORWARD -i eth0 -p tcp --dport 22 -j MARK --setmark 2 26 / 26