sexta-feira, 23 de outubro de 2009

Rotas default









- Com o redistribute static podemos criar também uma route-map para filtrar apenas a rota default e prevenir a redistribuição das outras rotas estáticas.

- O comando default-information originate faz com que o OSPF informe que ele é o default. O mesmo acontece no RIP, porém como o RIP suporta o redistribute static ele só envia a informação de que ele é o default se ele não tiver configurado uma rota default ou não aprender um default por outro protocolo, ou seja, não deve existir 0.0.0.0/0 em sua tabela de roteamento.

- O comando ip default-network informa que determinada rede é uma rede candidata a ser default, essa rede é apenas marcada nas tabelas de roeamento sem a adição da rota 0.0.0.0/0.

- Com o ip summary-address divulgamos o endereço 0.0.0.0/0 como o endereço mais abrangente. ex: ip summary-address eigrp1 0.0.0.0 0.0.0.0. Porém não é muito utilizado.

Redistribuição

Usado para distribuir rotas de um IGP para outro basta configurar o redistribute dentro do protocolo para o qual as rotas serão exportadas:

redistribute
protocol [process-id] [level-1 | level-1-2 | level-2] [as-number] [metric
metric-value] [metric-type type-value] [match {internal | external 1 | external 2}] [tag
tag-value] [route-map map-tag] [subnets]

Métricas
Para melhor ajuste das métricas podemos fazer de 3 maneiras:

-Chamando um route-map e configurando a métrica com o set metric do route-map
-Usando o parâmetro metric do redistribute.
-Usando o default-metric dentro do IGP.

Subnets

Para que as rotas não sejam sumarizadas e redistribuidas no RIP e EIGRP temos que usar o comando no auto-summary na cnfiguração do IGP.
No OSPF basta adicionar subnets no comando redistribute.

Tags

É possível usar tags para marcar de onde as rotas vem, assim melhorar alguns parâmetros e evitar que sejam distribuídas certas rotas em certos pontos da rede, melhorando o processo de roteamento. As tags são valores de 16 a 32 bits (depende do IGP), que fazem da estrutura da rota.

Exemplo dos conceitos acima:

router rip
version 2
redistribute eigrp 1 metric 2
redistribute ospf 1 metric 3
network 13.0.0.0
no auto-summary

router eigrp 1
redistribute ospf 1 route-map ospf-para-eigrp !Esse route map não seta a métrica
network 14.0.0.0
default-metric 1544 5 1 1 1500 (Bandwidth, delay, reability, load e MTU)
no auto-summary

router ospf 1
router-id 1.1.1.1
redistribute eigrp 1 subnets tag 6 route-map eigrp-para-ospf !Esse route map seta a metrica
network 15.0.0.0 0.255.255.255 area 0

route-map ospf-para-eigrp permit 10
match ip next-hop ACL-QUEDEFINE-NEXTHOP
set tag 5

route-map eigrp-para-ospf permit 10
match ip address ACL-QUEDEFINE-OSIPS
set metric 300

Route map e Prefix list

Route Map

Com um Route map você pode programar como as rotas irão se comportar para serem redistribui das ou para habilitar o policiamento das rotas.
Sintaxe simles:

route-map map-tag [permit | deny] [sequence-number]

Dentro definimos os parametros match e set.












Muita gente faz confusão com o comando permit e deny do route map com os da ACL. O route map só executa a ação permit ou deny do que a ACL permite. O Livro mostra um excelente exemplo:

Mias informações sobre os comandos permitidos pelo route map podem ser obtidas no site da cisco:
http://www.cisco.com/en/US/docs/ios/12_2/iproute/command/reference/1rfindp2.html#wp1044142
Aproveito para postar um exemplo do site:

router ospf 109
redistribute rip route-map rip-to-ospf

route-map rip-to-ospf permit
match metric 1
set metric 5
set metric-type type1
set tag 1



Prefix-List

Usado para filtrar:
- Rota (Numero da sub-rede)
- Prefixo da rota (Máscara de subrede)

Sintaxe do comando:
ip prefix-list {list-name | list-number} [seq number] {deny network/length | permit network/length} [ge ge-length] [le le-length]

Exemplos do site da cisco:
http://www.cisco.com/en/US/docs/ios/12_3/iproute/command/reference/ip2_i1g.html

To deny the default route 0.0.0.0/0:
ip prefix-list abc deny 0.0.0.0/0

To permit the prefix10.0.0.0/8:
ip prefix-list abc permit 10.0.0.0/8

To accept a mask length of up to 24 bits in routes with the prefix 192/16:
ip prefix-list abc permit 192.168.0.0/16 le 24


To deny mask lengths greater than 25 bits in routes with the prefix 192/16:
ip prefix-list abc deny 192.168.0.0/16 ge 25

To permit mask lengths from 8 to 24 bits in all address space:
ip prefix-list abc permit 0.0.0.0/0 ge 8 le 24

To deny mask lengths greater than 25 bits in all address space:
ip prefix-list abc deny 0.0.0.0/0 ge 25

To deny all routes with a prefix of 10/8:
ip prefix-list abc deny 10.0.0.0/8 le 32

To deny all masks with a length greater than 25 bits routes with a prefix of 192.168.1/24:
ip prefix-list abc deny 192.168.1.0/24 ge 25

To permit all routes with a prefix of 0/0:
ip prefix-list abc permit 0.0.0.0/0 le 32

domingo, 18 de outubro de 2009

QOS - Parte IV - Shaping e Policing

Depois de marcar, classificar e priorizar o tráfego para prevenir congestionamento, podemos também policiar o tráfego de modo que rajadas não ocasionem problemas no link, fazemos isso "espalhando" um pouco mais os bits dentro do tempo de transmissão, além disso podemos limitar a quantidade de largura de banda para determinado tipo de tráfego.

Será mostrado como trabalhar com traffic shaping e policing





Alguns conceitos:

CIR: Comited Information Rate = Velocidade contratada.
Tc:Time interval = Tempo usado para transmitir o Bc.
Bc: Comited Burst = Quantidade de bits transmitido no tempo TC.
Be: Excess Burst = Bits que podem ser transmitidos além do valor Bc, depois de um período de inatividade.

O problemas aqui é que não podemos mais pensar em bits por segundo e sim em bits em uma fração de segundos.

Existem exemplos de Bucket (Balde) e Tokens, mas tem gente que acha que acaba ficando confuso, então, vou trazer a linguagem para "pedreires" e ao invéz do Bucket vou usar um caminhão de areia, ao invéz dos tokens vamos usar baldes descartaveis e o bit será a areia.

Imagine que você contratou um serviço que entrega um caminhão de 64Kilos de areia por dia (64Kbps) e que usar baldes de 8Kilos (8Kb).
Para conseguir encher o caminhão de 64Kilos em um dia, são necessários 8 Baldes(64/8).
Se dividirmos 1 dia em 8 baldes, cada balde gasta 0,125 de um dia.

O caminhão (64Kbps) é o CIR.
O balde (8Kbps) é o Bc.
E o Tempo gasto por balde (0,125s ou 125ms) é o Tc.

Pondo tudo na formuleta: Tc=Bc/CIR.

Agora imaginando que durante um período de tempo algum Bc não foi utilizado, é possivel permitir o uso desses Bc ou parte deles posteriormente na forma de Be e transmitir Bc+Be.

Sixtax do comando:
shape [average | peak] mean-rate [[burst-size] [excess-burst-size]]

Exemplo do Livro:
----------------------------------------------------------------------------------
policy-map shape-all
class class-default
shape average 64000

interface serial0/0
bandwidth 128

interface serial0/0.1
service-policy output shape-all

Router# show policy-map interface s0/0.1
Serial0/0.1
Service-policy output: shape-all

Class-map: class-default (match-any)
7718 packets, 837830 bytes
30 second offered rate 69000 bps, drop rate 5000 bps
Match: any

Traffic Shaping
Target/Average Byte Sustain Excess Interval Increment
Rate Limit bits/int bits/int (ms) (bytes)
64000/64000 2000 8000 8000 125 1000

Adapt Queue Packets Bytes Packets Bytes Shaping
Active Depth Delayed Delayed Active
— 56 6393 692696 6335 684964 yes

----------------------------------------------------------------------------------
Target/Average Rate=CIR
Sustain bits = Bc
Excess bits = Be
Interval = Tc
Byte Limit = Bc+Be (Em Bytes)
Increment = Bytes por Tc = Bc em Bytes

Note que não foi setado Bc ou Be, então é usado a tabela default:







NOTA: Ao invéz de usar um valor para o CIR, pode ser usado uma porcentagem da interface, só que não tem sentido definir valores em bits para Bc e Be uma vez que não sabemos o valor do CIR, então é setado o TC. (Se não sabemos o tamanho do caminhão, não sabemos o tamanho do balde, então, definimos o número de baldes usados pelo tempo gasto e um dia).

Ex:
Para configurar 50% da banda e um Tc de 125 ms:
shape average percent 50 125 ms

Interação entre Shaping e Queuing.

É possivel modelar o tráfego de saida e fazer priorização do tráfego, primeiro é realizado o queuing normalmente com sua priorização e tudo mais, em seguida no momtendo dos pacotes sairem da interface o controle e modelagem são aplicados independente do tipo de tráfego, pois este já vem priorizado pela etapa anterior. ex:
----------------------------------------------------------------------------------

!Classifica o tráfego voip
class-map match-all voip-rtp
match ip rtp 16384 16383



!Cria a Queuing

policy-map queue-voip
class voip-rtp
priority 32
class class-default
fair-queue

!Policia o tráfego por Queuing e por Shaping (CIR = 96K, Bc = 960, Be = 0)
policy-map shape-all
class class-default
shape average 96000 960 0
service-policy queue-voip
----------------------------------------------------------------------------------

Frame Relay Traffic Shaping

É o mesmo conceito, só que ao invéz de ser criada uma policy-map, é criada uma map-class frame-relay e o comando shape muda:
Exemplo:

map-class frame-relay MINHACLASS
frame-relay traffic-rate 64000 8000 0

ou

map-class frame-relay MINHACLASS
frame-relay cir 64000
frame-relay bc 8000
frame-relay be 0

E na interface habilitar o class e o traffic-shaping:

interface s0/0
encapsulation frame-relay
frame-relay traffic-shaping
frame-relay class MINHACLASS

Existe uma regrinha para aplicar as classes nas interfaces ou para cada DLCI:








Policing

O policing usa todos os conceitos anteriores, porém diferente do shaping ele descarta, transmite ou remarca os dados.
Para o policing o tráfego é classificado em:

Conform = Tráfego <= CIR
Exced = CIR < Tráfego <=Bc
Violate = CIR<=Tráfego

O cálculo na verdade é feito baseado no tempo de chegada dos pacotes e baseado na trxa de transmissão CIR, porém dessa maneira fica mais fácil de entender.

O comando é simples: police bps burst-normal burst-max conform-action action exceed-action action [violate-action action]

As ações:

sexta-feira, 2 de outubro de 2009

QOS - Parte III - Prevenção de congestionamento

Agora que já sabemos marcar o tráfego temos que estudar como funcionam as Queuing Tools, os conceitos são:

Classificação
- escolhe em que fila o pacote irá entrar.
Drop - Para descarte de pacotes quando a fila está cheia.
Scheduling - Determina qual fila será tratada primeiro.
Numero máximo de filas - Numero de clases que pode ser configurada.
Tamanho das filas - Numero de pacotes suportados.

Queuing Tools: CBWFQ e LLQ
Class-based Weighted Fair Queuing (CBWFQ) - Reserva uma determinada banda para cada classe comando bandwidth



Clique para ampliar o resumo










Low-Latency Queuing (LLQ)
- Adiciona ao CBWFQ o recurso de fila sem latência, ou seja, transmite o pacote sem entrar em fila alguma, é feito com o comando priority.











Weighted Random Early Detection - WRED

Essa ferramenta evita o tail drop quando uma fila enche, ele realiza o descarte de pacotes menos prioritários de modo a garantir espaço na fila para outros pacotes mais importantes

Podemos setar os thresholds e o o coeficiente mark probability denominator com os comandos:

random-detect precedence precedence min-threshold max-threshold [mark-probdenominator]
random-detect dscp dscpvalue min-threshold max-threshold [mark-probabilitydenominator]

Por default os valores estão configurados da seguinte maneira:





Modified Deficit Round-Robin

Feature de fila utilizado nos roteadores da série 1200 no lugar do LLQ e CBWFQ. Separa o tráfego em 7 filas e mais uma fila de prioridade. Pode trabalhar em dois modos:

-Strict priority mode
-Alternate mode

No modo Strict priority, a fila de prioridade é tratada sempre que tiver tráfego nela, oque pode gerar um consumo de todo o recurso apenas para essa fila, porém ela é tratada com prioridade.

No Alternate Mode a fila de prioridade é tratada em alternância com as demais, exemplo:
Se tivermos 5 filas (0, 1, 2, 3, 4) e uma prioritária (P) o tratamento seria da seguinte maneira: p, 0, P, 1, P, 2, P, 3, P, 4 e assim por diante. Não temos o consumo de todos os recursos pela fila prioritária, porem pode ocorrer jitter e latência.

Quantum value (QV) e Defict

O MDRR utiliza o conceito de Quantum Value (QV) para tratar as filas, imagine que o QV é um crédito de bytes a serem transmitidos.

como exemplo na figura ao lado: A primeira fila tem um QV de 1500, então, ela transmite o primeiro pacote de 1000 e ainda sobra um crédito de 500, porém quando ela envia o segundo pacote de 1000 ela fica devendo 500, então a próxima fila com um crédito de 3000 é iniciada e são transmitidos 3 pacotes, zerando os créditos. Na próxima passagem a fila um inicia com um crédito de apenas 1000, transmitindo apenas um pacote, passando para a próxima fila e assim por diante.
Esse método garante que o MDRR forneça exatamente a largura de banda reservada para cada fila. Podemos calcular a porcentagem de banda para cada fila assim:

QV da fila /Soma de todos QV.