380 likes | 512 Views
Exercícios. Prof. Edgard Jamhour Recursos de QoS no Roteador CBQ – Class Based Queuing Diff-Serv. CBQ: Class-Based Queuing. Class-Based Tree. Root 100 Mbps. TCP 60 Mbps. ICMP 0 Mbps. UDP 40 Mbps. HTTP 30 Mbps. FTP 30 Mbps. Identificando as Interfaces.
E N D
Exercícios Prof. Edgard Jamhour Recursos de QoS no Roteador CBQ – Class Based Queuing Diff-Serv
CBQ: Class-Based Queuing • Class-Based Tree Root 100 Mbps TCP 60 Mbps ICMP 0 Mbps UDP 40 Mbps HTTP 30 Mbps FTP 30 Mbps
Identificando as Interfaces • A numeração adotada pelo roteador depende dos protocolos adicionados a cada interface. • >status • Slot 1.1 Tcom T1 Driver • cbq.1 • frame-relay.1 • Slot 2.1 Ethernet Driver • cbq.2 • eth.1 • ip.1
Sentido • As regras se aplicam de forma diferente de acordo com o sentido do pacote. • Existe uma árvore diferente para cada sentido em cada porta do roteador. Outbound: root-output-tree Inbound: root-input-tree ROTEADOR CBQ.3 CBQ.2 Inbound: root-input-tree Outbound: root-output-tree
Comandos – Sintaxe Básica • config cbq.2 traffic-class.nome-da-classe-filho (e.g. tcp) parent nome-da-classe-pai (e.g. root-input-tree) [... definições da classe ...] per-classification-orderint (default 100) bandwidth-allocation banda-em-bps (e.g. 500000) bounded true/false (permite ou não ultrapassar o limite alocado) maxbandwidth banda-em-Mbps (limite máximo)
Criação de uma Classe Filho classe-pai 100.000.000 (100 Mbps) bounded true classe-filha pre-order 1 classe-filha pre-order 2 50.000.000 (50 Mbps) bounded false maxbandwidth 80.000.000 50.000.000 (50 Mbps) bounded true
Ativação do CBQ • Ativação da classificação dos pacotes que entram pela interface associada ao cbq.2 do roteador: • config cbq.2 traffic-class.root-input-treerow-status active • Ativação da classificação dos pacotes que saem pela interface associada ao cbq.2 do roteador: • config cbq.2 traffic-class.root-output-treerow-status active
Verificação e Alteração • Toda a árvore de um cbq • show cbq.2 traffic-filters summary • Uma árvore (classe) específica • show cbq.2 nome-da-classe • Apagando um classe específica • delete cbq.2 traffic-filter.nome-da-classe
Opções de Filtro • Endereços IP: • src-ip-addresses ip1-ip2 dst-ip-addresses ip3-ip4 • (e.g.) src-ip-addresses 192.168.0.1-192.168.0.100 • (e.g.) dst-ip-addresses 192.168.0.1,192.168.0.7 • Portas: • src-ports p1-p2 dst-port p3-p4 • (e.g.) src-ports 1024-65535 • (e.g.) src-ports 110,143 • Protocols (sigla ou número) • protocols sigla-ou-número • (e.g.) protocols tcp,udp • (e.g.) protocols 6-17
Exemplos • Regra para subrede: • config cbq.1 traffic-class.bancada1src-ip-addresses 192.168.1.0-192.168.1.20 parent root-input-tree • Regra para protocolo: • config cbq.2 traffic-class.udp protocols udpparent root-input-treebandwidth-allocation 0 bounded true.
Operadores • O operador default é and, isto é, apenas os pacotes que atendem todos os critérios de filtro de uma classe são classificados: • config cbq.1 traffic-class.httpserver src-ip-addresses 192.168.1.2 protocols tcp [operator and] • No caso do operador or, basta que um critério seja satisfeito: • config cbq.1 traffic-class.httpserver src-ip-addresses 192.168.1.2 protocols tcp operator or
Operação com Diff-Serv • A operação com Diff-Serv implica na criação de classes que: • 1) Efetuam a classificação de pacotes baseado no campo TOS (DSCP) • 2) Remarcam o campo TOS (DSCP) baseando em dois critérios: • a) Adequação aos critério de classificação de uma classe • b) Empréstimo ou não de banda da classe pai.
Sintaxe para Re-Marcação TOS • config cbq.2 nome-da-classe-filho • parent nome-da-classe-pai • bandwidth-allocation bps • bounded true/false maxbandwidth bps • tos-value byte tos-mask byte • marcação de pacotes dentro da banda estipulada • tos-borrow-value byte tos-borrow-mask byte • marcação de pacotes fora da banda estipulada
Exemplo • SLA para o cliente da sub-rede 192.168.1.0/24 • pacotes dentro da classe: 0.5 Mbps • AÇÃO: marcação DSCP=001 • pacotes fora da classe mas abaixo do limite 0.5 a 1 Mbps • AÇÃO: marcação DSCP=002 • pacotes acima do limite-hard: > 1 Mbps • AÇÃO: descartados
Remarcação capacidade do link Acima da Banda Máxima Descarte maxbandwidth Zona de Empréstimo DSCP = 002 bandwidth-allocation Zona Normal DSCP = 001 0 bps
Exercício 1 2 192.168.1.1 rede 1 192.168.1.0/24 1 192.168.2.2 192.168.2.1 rede 2 192.168.2.0/24 2 192.168.5.1/30 192.168.3.1 rede 3 192.168.5.2/30 192.168.3.0/24 3 192.168.3.2 192.168.4.1 rede 4 192.168.4.0/24 4
Exercício – Marcação dos pacotes • se a origem for o computador 1 • banda: 500 bps • bounded false • até 500 bps, marcar DSCP 1 • acima de 500 = DSCP 2 • se a origem for o computador 2 • banda: 500 bps • bounded false • até 500 bps, marcar DSCP 1 • acima de 500 = DSCP 2 root-input-tree
Exercício – Traffic Shaping na Saída • se DSCP = 1 • banda: 1000 bps • bounded true 2000 bps • se DSCP =2 • banda: 500 bps • bounded true 500 bps root-output-tree
Exercício – Traffic Shaping na Entrada • se DSCP = 1 • banda: 1000 bps • bounded true 2000 bps • se DSCP =2 • banda: 500 bps • bounded true 500 bps root-input-tree
Q-Elasticity Factor • Por default, cada classe do CBQ possui um buffer para 100 pacotes. • Esse valor pode ser alterado através do comando: • config cbq.2 traffic-class.nome-da-classeq-elasticity-factor 1000
Configuração do RED • Por default, o CBQ não implementa RED. • RED é controlado pelo parâmetro red-minimum-queue-value (valor default = 0 – desativado) • O valor pode ser alterado pelo comando: • config cbq.2 traffic-class.nome-da-classeredminimum-queue-value 3 • esse comando iniciará o processo de descarte quando o número médio de pacotes no buffer for superior a 3.
Monitorando RED • show cbq.2 traffic-class.nome-da-classered • Mostra: • pacotes descartados por RED (não inclui os descartados por estouro de buffer) • probabilidade do próximo pacote ser descartado da classe.
Monitorando as Classes • Por default, as estatísticas estão desabilitadas: • config cbq.2 cbq-history-statusenabled • ou • config cbq.2 traffic-class.nome-da-classehistory-statusenabled • show cbq.2 traffic-classes history • ou • show cbq.2 traffic-class.nome-da-classe history
Criação Automática de Classes • Para gerar classes automáticas por IP de origem ou destino. • config cbq.2 traffic-class.nome-da-classeauto-class-enabled trueauto-class-child-bw-allocation 1000auto-class-child-max-bw-alloc 2000auto-class-child-bounded true/false dest-ip-addresses 192.168.1.1-192.168.1.10 ou scr-ip-addresses 192.168.1.1-192.168.1.10 parent root-output-treebandwidth-allocation 10000
Agrupamento de IPs • Para criar classes com IPs agrupados por faixas, incluir no final do comando as diretivas: • Agrupamento pelo IP de origem: • auto-class-child-src-ip-divisor int (e.g. 4) • Agrupamento pelo IP de destino: • auto-class-child-dest-ip-divisor int (e.g. 4)
Exercício root input tree cbq 2 TCP 1 100 Kbps bounded true 50 Kbps bounded true UDP 2 outros 100 50 Kbps bounded true 100 Kbps 10 Kbps 50 kbps bounded false 5 Kbps 20 kbps bounded false ... Ip1 IpN Ip1 ... IpN computadores da bancada classificação automática
Operação Stateful • Configuração stateful cria regras dinâmicas, limitando a resposta para a porta da aplicação cliente: flow (detectado) - http servidor cliente 1010 80 counterflow - httpEstablished (automático)
Opções de Filtro Stateful • applications sigla • http, ftp, allICMP, etc. • httpEstablised, ftpEstablished, allICMPEstablished, etc • traffic-class.http-outapplications http • traffic-class.http-returnaplications httpEstablished
Applicações Statefull • allTcp, allTcpEstablished • allUdp, allUdpEstablished • allIcmp, allIcmpEstablished • ftp, ftpEstablished • http, httpEstablished • telnet, telnetEstablished • dns, dnsEstablished • ssh, sshEstablished • h323Control, h323ControlEstablished, • h323Audio, h323AudioEstablished, • etc ..
Exemplo • config cbq.2 traffic-class.requisicao • protocols udp dest-ports 1081 parent root-input-tree • config cbq.3 traffic-class.resposta • protocols allUdp src-ports 1081 parent root-input-tree (** ERRADO **) • config cbq.3 traffic-class.resposta • applications allUdpEstablished src-ports 1081 parent root-input-tree roteador cbq.2 cbq.3 Bancada 2 Bancada 1 requisicao Servidor UDP 1081 cliente resposta
Exercício • Construa a arvore CBQ para as seguintes regras: • Bancada1 pode abrir conexões TCP (porta 80) na bancada 2, mas não o contrário. • Bancada2 pode abrir “conexões” UDP na bancada 1 (porta 53), mas não o contrário. roteador cbq.2 cbq.3 Bancada 2 Bancada 1 requisicao Servidor UDP cliente resposta
Integração de QoS com VLANs • O mapeamento de condições para os campos da VLAN é feito através dos parâmetros: • datalink-traffic-indice e datalink-traffic-mask máscara 0xe000 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 prioridade CFI VLAN ID máscara 0x0ffff
Exemplos de mapeamento de prioridade • Regra para pacotes com prioridade 0 • config cbq.3 traffic-class.prioridade0datalink-traffic-class-indices 0datalink-traffic-mask 0xe000parent root-input-tree • Regra para pacotes com prioridade 1 a 3 • config cbq.3 traffic-class.prioridade0datalink-traffic-class-indices 0x2000-0x6000datalink-traffic-mask 0xe000parent root-input-tree • Regra para pacotes com prioridade 4 a 7 • config cbq.3 traffic-class.prioridade0datalink-traffic-class-indices 0x8000-0xe000datalink-traffic-mask 0xe000parent root-input-tree
Exemplos de mapeamento de VLAN • Regra para pacotes pertencentes as VLANs de 1 a 10 e 14. • config cbq.3 traffic-class.prioridade0datalink-traffic-class-indices 0x01-0x0a,0x0edatalink-traffic-mask 0x0ffffparent root-input-tree
Preparando o Roteador • para aceitar quadros com tags de VLAN: • config eth.<instance> admit-8021q-tagged-frames true • para rotear para dispositivos com VLANs ID que não estão configuradas no AP • config eth.<instance> admit-configured-vlans-only false • para remover tags de VLAN • config eth.<instance> strip-bridged-8021q-tags true • para verificar os parâmetros de VLAN da interface • show eth.<instance> vlan
Preparando o Roteador • 1) É necessário criar uma sub-interface para cada VLAN tratada pelo roteador: • stack slot.4.1 cbq.3 eth.2 eth.2.new ip.new • 2) Use o comando status para verificar o novo id da interface. Elas serão criadas na seqüência: • eth.2.1, eth.2.2, etc. • ip.2.1, ip.2.3, etc. • 3) Atribua um código de VLAN a nova instância. Exemplo: • config eth.2.1 vlan-id 12 • 4) Atribua o endereço IP e as rotas.
Observação • Quadros com VLAN IDs configurados no roteador serão enviados para interface correspondente. • Quadros sem VLAN IDs ou com VLAN IDs que não existam no roteador, serão enviados para interface integral: e.g. eth.2 • Use os comandos abaixo para a porta do switch onde o roteador está conectado: • set trunk 1/19 dot1q • set port vlan-binding-mode 1/19 bind-to-configured
Comandos Úteis • reset defaults • add ip.2 address.192.168.2.1 • show ip.* address-table summary • add ip static-route.192.168.1.0 ...