Title: Exerc
1Exercícios
- Prof. Edgard Jamhour
- Recursos de QoS no Roteador
- CBQ Class Based Queuing
- Diff-Serv
2CBQ Class-Based Queuing
Root 100 Mbps
TCP 60 Mbps
ICMP 0 Mbps
UDP 40 Mbps
HTTP 30 Mbps
FTP 30 Mbps
3Identificando as Interfaces
- A numeração adotada pelo roteador depende dos
protocolos adicionados a cada interface. - gtstatus
- Slot 1.1 Tcom T1 Driver
- cbq.1
- frame-relay.1
- Slot 2.1 Ethernet Driver
- cbq.2
- eth.1
- ip.1
4Sentido
- 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
5Comandos 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-order int (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)
6Criaçã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
7Ativaçã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-sta
tus 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-st
atus active
8Verificaçã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
9Opçõ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
10Exemplos
- Regra para subrede
- config cbq.1 traffic-class.bancada1src-ip-address
es 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.
11Operadores
- 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
12Operaçã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.
13Sintaxe 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
14Exemplo
- SLA para o cliente da sub-rede 192.168.1.0/24
- pacotes dentro da classe 0.5 Mbps
- AÇÃO marcação DSCP001
- pacotes fora da classe mas abaixo do limite 0.5 a
1 Mbps - AÇÃO marcação DSCP002
- pacotes acima do limite-hard gt 1 Mbps
- AÇÃO descartados
15Remarcaçã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
16Exercício
1
2
192.168.1.1
rede 1
192.168.1.0/24
1
192.168.2.2
192.168.2.1
192.168.2.0/24
2
rede 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
192.168.4.0/24
rede 4
4
17Exercí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
18Exercí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
19Exercí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
20Q-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-classe
q-elasticity-factor 1000
21Configuraçã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-classe
redminimum-queue-value 3 - esse comando iniciará o processo de descarte
quando o número médio de pacotes no buffer for
superior a 3.
22Monitorando RED
- show cbq.2 traffic-class.nome-da-classe red
- Mostra
- pacotes descartados por RED (não inclui os
descartados por estouro de buffer) - probabilidade do próximo pacote ser descartado da
classe.
23Monitorando as Classes
- Por default, as estatísticas estão desabilitadas
- config cbq.2 cbq-history-status enabled
- ou
- config cbq.2 traffic-class.nome-da-classe
history-status enabled - show cbq.2 traffic-classes history
- ou
- show cbq.2 traffic-class.nome-da-classe history
24Criação Automática de Classes
- Para gerar classes automáticas por IP de origem
ou destino. - config cbq.2 traffic-class.nome-da-classeauto-cl
ass-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
25Agrupamento 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)
26Exercício
root input tree cbq 2
TCP 1
100 Kbps bounded true
UDP 2
50 Kbps bounded true
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
27Operaçã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)
28Opções de Filtro Stateful
- applications sigla
- http, ftp, allICMP, etc.
- httpEstablised, ftpEstablished,
allICMPEstablished, etc - traffic-class.http-out applications http
- traffic-class.http-return aplications
httpEstablished
29Applicações Statefull
- allTcp, allTcpEstablished
- allUdp, allUdpEstablished
- allIcmp, allIcmpEstablished
- ftp, ftpEstablished
- http, httpEstablished
- telnet, telnetEstablished
- dns, dnsEstablished
- ssh, sshEstablished
- h323Control, h323ControlEstablished,
- h323Audio, h323AudioEstablished,
- etc ..
30Exemplo
- 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.3
cbq.2
Bancada 2
Bancada 1
Servidor UDP
requisicao
1081
cliente
resposta
31Exercí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.3
cbq.2
Bancada 2
Bancada 1
Servidor UDP
requisicao
cliente
resposta
32Integraçã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
33Exemplos de mapeamento de prioridade
- Regra para pacotes com prioridade 0
- config cbq.3 traffic-class.prioridade0
datalink-traffic-class-indices
0datalink-traffic-mask 0xe000parent
root-input-tree - Regra para pacotes com prioridade 1 a 3
- config cbq.3 traffic-class.prioridade0
datalink-traffic-class-indices
0x2000-0x6000datalink-traffic-mask 0xe000parent
root-input-tree - Regra para pacotes com prioridade 4 a 7
- config cbq.3 traffic-class.prioridade0
datalink-traffic-class-indices
0x8000-0xe000datalink-traffic-mask 0xe000parent
root-input-tree
34Exemplos de mapeamento de VLAN
- Regra para pacotes pertencentes as VLANs de 1 a
10 e 14. - config cbq.3 traffic-class.prioridade0
datalink-traffic-class-indices
0x01-0x0a,0x0edatalink-traffic-mask
0x0ffffparent root-input-tree
35Preparando o Roteador
- para aceitar quadros com tags de VLAN
- config eth.ltinstancegt admit-8021q-tagged-frames
true - para rotear para dispositivos com VLANs ID que
não estão configuradas no AP - config eth.ltinstancegt admit-configured-vlans-only
false - para remover tags de VLAN
- config eth.ltinstancegt strip-bridged-8021q-tags
true - para verificar os parâmetros de VLAN da interface
- show eth.ltinstancegt vlan
36Preparando 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.
37Observaçã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
38Comandos Úteis
- reset defaults
- add ip.2 address.192.168.2.1
- show ip. address-table summary
- add ip static-route.192.168.1.0 ...