Mostrando postagens com marcador Cisco. Mostrar todas as postagens
Mostrando postagens com marcador Cisco. Mostrar todas as postagens

quarta-feira, 3 de junho de 2009

Cisco Reverse Telnet

Em localidades remotas com poucos equipamentos (um roteador e um switch, por exemplo) e quando não há um servidor de console disponível, pode-se utilizar a porta auxiliar de um roteador Cisco para conectar-se a console de outro equipamento. Isto é comumente chamado de Reverse Telnet.

Para começar é necessário um cabo do tipo rolled - aquele mesmo azul claro que se acumula aos montes no seu depósito e que uma ponta do cabo está na ordem inversa da outra ponta (veja
figura). O cabo azul claro da Cisco RJ-45/DB-9 também funciona neste caso.


Conecte o cabo console na interface auxiliar do equipamento principal e depois na console do outro equipamento. Depois é necessário fazer a seguinte configuração na interface auxiliar (line aux 0).

line aux 0
modem InOut
transport preferred telnet
transport input all
transport output telnet
stopbits 1

Também é necessário que o seu roteador Cisco possua uma interface Loopback configurada para que você possa executar o comando telnet para esta interface.

interface loopback 0
ip address 10.1.1.1 255.255.255.255

Em seguida, deve-se verificar qual é o número atribuido a sua porta auxiliar. Para isso entre com o comando show line.

Router#show line
Tty Line Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
0 0 CTY - - - - - 0 0 0/0 -
1 1 AUX 9600/9600 - inout - - - 1 0 1/1 -
*194 194 VTY - - - - - 3 0 0/0 -
195 195 VTY - - - - - 1 0 0/0 -
196 196 VTY - - - - - 0 0 0/0 -
197 197 VTY - - - - - 0 0 0/0 -
198 198 VTY - - - - - 0 0 0/0 -


As duas primeiras colunas mostram o número atribuído a interface auxiliar. Agora basta executar o comando telnet endereço 2000+line. O último parâmetro (porta) deverá ser o número da linha somado com o número 2000 - para este exemplo ficará 2001.

Router#telnet 10.1.1.1 2001
Trying 1.0.0.1, 2001 ... Open

login:


And that's all folks!

Mais informações:

segunda-feira, 18 de maio de 2009

Guideline de segurança - Cisco

Durante a configuração de equipamentos de rede, normalmente temos dúvidas (ou pelo menos todos deveriam ter) do tipo "Será essa a melhor maneira para configurar isto de maneira segura?".

A Cisco possui um guideline com as melhores práticas para configuração, design e implementação de redes de forma segura. Eles atualizaram o documento a pouco tempo.

Está disponível aqui. A página de apresentação do SAFE, nome dado pela Cisco para estes guidelines, é essa.

Lembrando que, apesar das informações serem voltadas para equipamentos Cisco, as idéias podem ser aplicadas para arquiteturas baseadas em outros tipos de equipamento, adaptando, claro, as configurações.

sábado, 25 de abril de 2009

Dica: Internetworkpro Wiki

Ainda em fase de construção, o Internetworkpro Wiki, que como o próprio nome já adianta, é um wiki que pretende reunir artigos técnicos sobre redes, equipamentos e configurações. Por enquanto a maioria das informações existentes é sobre os equipamentos Cisco - mas se você estiver disposto a ajudar, pode escrever sobre Juniper ou Extreme...


O destaque é para as páginas dos roteadores e switches que apresentam um bom resumo de cada plataforma. A página de informações sobre os switches Cisco Catalyst 6500 apresenta um excelente material para uma consulta rápida. É interessante destacar também os diversos exemplos de configuração já disponíveis neste wiki.

sexta-feira, 20 de fevereiro de 2009

Um roteador, dois provedores e alguma redundância

De tempos em tempos surge em alguma lista ou forum de discussão a questão de como ter redundância entre dois provedores de forma automática no meu escritório? E essa foi exatamente a questão que foi feita no forum do blog Cisco Certified. É claro que existem soluções proprietárias (o Radware Linkproof, por exemplo) ou open-source para a solução deste problema, mas a solução que vou explicar aqui é toda baseada em um único roteador Cisco recebendo dois links de provedores diferentes (leia-se: com endereçamento válido diferente).

O cenário que iremos tratar neste post é o seguinte:

Neste cenário, o roteador Router está conectado ao ISP 1 e ao ISP 2 através de links ponto-a-ponto e o endereçamento válido que o cliente deverá usar é o mesmo do link. Na rede interna do cliente não existe nenhum servidor (pelo menos para este exemplo). Só existem conexões do escritório (redes 192.168.0.0/24 e 172.16.0.0/24) para a Internet. Neste exemplo também estou considerando que a rede 192.168.0.0/24 irá utilizar o ISP 2 e a rede 172.16.0.0/24 o ISP 1 (devido à política interna, uma rede tem prioridade sobre a outra, etc). Estas redes podem ou não estar diretamente conectadas no roteador Router.

É claro que colocar uma rota default apontando para um ou outro provedor (ISP) não será a nossa solução e, para este caso, quando não podemos utilizar um protocolo de roteamento dinâmico, vamos utilizar duas features da Cisco: o Cisco IP SLA (que já foi tratado neste post) e o Policy-Based Routing (que também já foi tratado neste outro post).

O primeiro passo é configurar uma monitoração com o IP SLA e começar a fazer o tracking desta monitoração. Para isso utilizaremos o Object Tracking.

ip sla monitor 1
type echo protocol ipicmpecho 10.1.1.2
frequency 5
ip sla monitor schedule 1 start-time now life forever

ip sla monitor 2
type echo protocol ipicmpecho 10.1.2.2
frequency 5
ip sla monitor schedule 2 start-time now life forever

track 123 rtr 1 reachability
track 124 rtr 2 reachability

Para verificar que o tracking está funcionando, utilize o comando show track.

Router#show track
Track 123
Response Time Reporter 1 reachability
Reachability is Up
1 change, last change 00:00:05
Latest operation return code: OK
Latest RTT (millisecs) 168
Track 124
Response Time Reporter 2 reachability
Reachability is Up
1 change, last change 00:00:04
Latest operation return code: OK
Latest RTT (millisecs) 124


Como estamos preocupados com o tempo de convergência da rede na ocasião de uma falha, configurei o intervalo de testes do IP SLA para 5 segundos. Agora iremos utilizar o tracking que configuramos no passo anterior em um route-map que verificará se o default gateway está respondendo ou não, para então utilizar somente aquele que estiver respondendo.

access-list 11 permit host 172.16.0.1
access-list 12 permit host 192.168.0.1

route-map in-out-link-1 permit 10
match ip address 11
set ip next-hop verify-availability 10.1.1.2 10 track 123
set ip next-hop verify-availability 10.1.2.2 20 track 124

route-map in-out-link-1 permit 20
match ip address 12
set ip next-hop verify-availability 10.1.2.2 10 track 124
set ip next-hop verify-availability 10.1.1.2 20 track 123


Como podemos observar (pelo menos em nosso teste) o host 172.16.0.1 utilizará o ISP 1 (next-hop 10.1.1.2) preferencialmente e o host 192.168.0.1 utilizará o outro ISP. Agora podemos verificar como está o nosso route-map.

Router#show route-map in-out-link-1
route-map in-out-link-1, permit, sequence 10
Match clauses:
ip address (access-lists): 11
Set clauses:
ip next-hop verify-availability 10.1.1.2 10 track 123 [up]
ip next-hop verify-availability 10.1.2.2 20 track 124 [up]
Policy routing matches: 0 packets, 0 bytes
route-map in-out-link-1, permit, sequence 20
Match clauses:
ip address (access-lists): 12
Set clauses:
ip next-hop verify-availability 10.1.2.2 10 track 124 [up]
ip next-hop verify-availability 10.1.1.2 20 track 123 [up]
Policy routing matches: 0 packets, 0 bytes

O último passo é configurar o NAT nas interfaces utilizando um route-map para identificar qual é a interface que está sendo utilizada como saída. Dessa forma, quando um determinado pacote for utilizar o link do ISP 1 para acessar a Internet, o NAT irá traduzir para o endereço da interface correspondente (dado que estamos utilizando interface overload na configuração do NAT).

interface fa0/0
ip nat inside
! devemos aplicar o route-map in-out-link-1 na interface conectada na rede
! interna para fazer com que o roteador não utilize a tabela de rotas padrão.
ip policy route-map in-out-link-1

int atm1/0.1
ip nat outside

interface atm2/0.1
ip nat outside

route-map nat-1 permit 10
match interface ATM1/0.1
!
route-map nat-2 permit 10
match interface ATM2/0.1
!
ip nat inside source route-map nat-1 interface atm 1/0.1
ip nat inside source route-map nat-2 interface atm 2/0.1


Neste momento, podemos fazer a primeira verificação. Como exemplo, estou utilizando um roteador com endereço IP 192.168.0.1 e 172.16.0.1 para fazer os testes.

Host#ping 1.1.1.1 source lo0

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 172.16.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/295/760 ms

Host#ping 1.1.1.1 source lo1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 96/187/304 ms

Este host está conectado na interface fastethernet0/0 do roteador Router. Podemos verificar também que a tabela de NAT está mostrando as traduções para os dois links separadamente.

Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 10.1.1.1:116 172.16.0.1:116 1.1.1.1:116 1.1.1.1:116
icmp 10.1.2.1:117 192.168.0.1:117 1.1.1.1:117 1.1.1.1:117

Observe que a primeira linha de traduções mostra a tradução para o endereço 10.1.1.1 (que é o endereço do ISP 1 e a segunda linha mostra a tradução para o endereço do ISP 2: 10.1.2.1. Vamos agora simular a falha do ISP 2 e ver o que acontece com a tabela de traduções e os pings.

Router#show track
Track 123
Response Time Reporter 1 reachability
Reachability is Up
1 change, last change 00:02:45
Latest operation return code: OK
Latest RTT (millisecs) 79
Tracked by:
ROUTE-MAP 0
Track 124
Response Time Reporter 2 reachability
Reachability is Down
2 changes, last change 00:00:00
Latest operation return code: Timeout
Tracked by:
ROUTE-MAP 0

Router#show route-map in-out-link-1
route-map in-out-link-1, permit, sequence 10
Match clauses:
ip address (access-lists): 11
Set clauses:
ip next-hop verify-availability 10.1.1.2 10 track 123 [up]
ip next-hop verify-availability 10.1.2.2 20 track 124 [down]
Policy routing matches: 0 packets, 0 bytes
route-map in-out-link-1, permit, sequence 20
Match clauses:
ip address (access-lists): 12
Set clauses:
ip next-hop verify-availability 10.1.2.2 10 track 124 [down]
ip next-hop verify-availability 10.1.1.2 20 track 123 [up]
Policy routing matches: 0 packets, 0 bytes

Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 10.1.1.1:119 172.16.0.1:119 32.1.1.1:119 32.1.1.1:119
icmp 10.1.1.1:118 192.168.0.1:118 32.1.1.1:118 32.1.1.1:118

Aproximadamente cinco segundos após desligar o link para o ISP 2, podemos observar que o tracking não está mais funcionando para o endereço 10.1.2.2 - assim como o nosso route-map -, e a tabela de NAT mostra que agora estamos traduzindo todos os endereços para 10.1.1.1 (que é o endereço do ISP 1).

Lembre-se sempre que este é um exemplo e que para ser aplicado em um ambiente real devem ser feitos alguns ajustes.

Mais informações em:

terça-feira, 23 de dezembro de 2008

Verificar Interface Ótica

Esta é a primeira dica que recebemos via e-mail (!!!). É um simples comando que nem aquele que tudo indexa (google) conseguiu encontrar. A dica foi enviada pelo Rodrigo Stival Lopes (obrigado Rodrigo!!). A referência mais próxima que conseguimos encontrar é o "show hw-module subslot transceiver" no Cisco IOS Interface and Hardware Component Command Reference. Vejam um exemplo abaixo:

Switch# show hw-module all transceiver 001 status
The Transceiver in slot 0 subslot 0 port 1 is enabled.
Module temperature = +44.390 C
Transceiver Tx supply voltage = 3300.4 uVolts
Transceiver Tx bias current = 25344 uAmps
Transceiver Tx power = -1 dBm
Transceiver Rx optical power = -7 dBm

Como podemos ver através da documentação da Cisco, o show hw-module permite verificar informações do hardware e o estado operacional (potência, tipo, conector, etc) de interfaces óticas SFP (small form-factor pluggable).

Mais informações:

quinta-feira, 20 de novembro de 2008

Cisco IP SLA

Conhecida antes da versão 12.4T como RTR (Response Time Report) e SAA (Service Assurance Agent), a ferramenta de monitoração Cisco IP SLA (Service Level Agent) é utilizada para fazer monitoração ativa de tempo de resposta via ICMP (ou utilizando outras aplicações como HTTP e DNS), jitter (inclusive jitter unidirecional), perda de pacotes, etc. diretamente em um roteador Cisco, ou seja, sem depender de um outro software ou servidor para fazer a colheta destas informações. Apesar das informações estarem disponíveis no roteador, é também interessante utilizar alguma ferramenta para gerar um gráfico, como o MRTG ou Cacti, para deixar o seu chefe ainda mais feliz! :-)

Configurando o IP SLA

Vamos ver um exemplo de configuração para medir o tempo de resposta entre dois pontos utilizando a ferramenta para medir jitter do IP SLA. Entenda dois pontos como um circuit ponto-a-ponto ou dois pontos quaisquer na Internet. Veja a configuração:

! criamos a monitoração 100 para o endereço IP 10.10.10.1
!
ip sla 100
icmp-jitter 10.10.10.1 source-ip 192.168.1.1 num-packets 20
frequency 300
!
! então é necessário ativar a monitoração recém criada
!
ip sla schedule 100 start-time now life forever

Depois de criarmos a monitoração e ativá-la, podemos verificar se está funcionando e como está o nosso tempo de resposta e perda de pacotes com o comando show ip sla statistics 100.

Router#sh ip sla statistics 100

Round Trip Time (RTT) for Index 100
Type of operation: icmpJitter
Latest RTT: 230 milliseconds
Latest operation start time: 13:04:36.499 BRST Wed Nov 26 2008
Latest operation return code: OK
RTT Values:
Number Of RTT: 13 RTT Min/Avg/Max: 325/354/413
Latency one-way time:
Number of Latency one-way Samples: 0
Source to Destination Latency one way Min/Avg/Max: 0/0/0
Destination to Source Latency one way Min/Avg/Max: 0/0/0
Jitter Time:
Number of SD Jitter Samples: 9
Number of DS Jitter Samples: 9
Source to Destination Jitter Min/Avg/Max: 1/5/17
Destination to Source Jitter Min/Avg/Max: 0/25/71
Packet Late Arrival: 0
Out Of Sequence: 0
Source to Destination: 0 Destination to Source 0
In both Directions: 0
Packet Skipped: 0 Packet Unprocessed: 7
Packet Loss: 0
Loss Period Length Min/Max: 0/0
Number of successes: 1
Number of failures: 0
Operation time to live: Forever

As informações que queremos observar estão destacadas em azul.

Gerando os Gráficos

Para continuar este exemplo, vamos gerar um gráfico das informações de RTT (round-trip time) máximo e mínimo. Para isso, vamos utilizar o MRTG e os OIDs:
  • rttMonLatestIcmpJitterRTTMin.XXX ou 1.3.6.1.4.1.9.9.42.1.5.4.1.4.XXX para medir o RTT mínimo da instância XXX (no nosso caso a instância 100).
  • rttMonLatestIcmpJitterRTTMax.XXX ou 1.3.6.1.4.1.9.9.42.1.5.4.1.5.XXX para medir o RTT máximo da instância XXX.
A configuração do MRTG utilizada foi:

# IP SLA 100
Target[rtt_mon_100]:1.3.6.1.4.1.9.9.42.1.5.4.1.4.100&1.3.6.1.4.1.9.9.42.1.5.4.1.5.100:community@192.168.1.1:
MaxBytes[rtt_mon_100]: 350
AbsMax[rtt_mon_100]: 2000
YLegend[rtt_mon_100]: Round Trip Time
ShortLegend[rtt_mon_100]: ms
LegendI[rtt_mon_100]: min rtt (ms):
LegendO[rtt_mon_100]: max rtt (ms):
Legend1[rtt_mon_100]: min rtt (ms)
Legend2[rtt_mon_100]: max rtt (ms)
Title[rtt_mon_100]: Tempo de Resposta - IP SLA 100


Para a monitoração que configuramos anteriormente, podemos obter um gráfico que nos mostrará o tempo de resposta mínimo (em verde) e o máximo (em azul). Deste gráfico podemos ter uma idéia de como está o jitter para um determinado circuito ou caminho.
Com esta simples monitoração é possível observar a variação do tempo de resposta com o passar do tempo (veja figura 1 no período entre 18:00 e 22:00 horas) ou ainda verificar que um determinado caminho está congestionado - com alterações no tempo de resposta, principalmente durante certos períodos (veja figura 2).

Figura 1

Figura 2

Para mais informações:

terça-feira, 11 de novembro de 2008

Adicionando as buscas da Cisco no seu Browser

Agora podemos fazer buscas na página web da Cisco diretamente na barra de endereços do seu browser. Por enquanto disponível apenas para Firefox e Internet Explorer. As buscas possíveis são:

Ferramentas (conteúdo fechado, é necessário possuir uma conta CCO para acessar)

Buscas

Mais informações na página da Cisco: http://www.cisco.com/web/tsweb/searchplugins/plugin_homepage.html#

segunda-feira, 3 de novembro de 2008

O que mudou ?

Este post, de certa forma, completa dois outros antigos posts publicados aqui: o primeiro deles sobre o Replace e o Rollback da configuração de roteadores Cisco e o segundo post sobre a ferramenta de backup de configuração open-source chamada Rancid. Desde a versão 12.3(4)T do Cisco IOS é possível utilizar o próprio CLI para saber o que mudou no seu roteador da seguinte forma:

Router#show archive config differences

Vejamos um exemplo:

Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int fa0/0
Router(config-if)#ip address 172.16.0.1 255.255.255.0
Router(config-if)#^Z
Router#show archive config differences nvram:startup-config system:running-config
Contextual Config Diffs:
interface FastEthernet0/0
+ip address 172.16.0.1 255.255.255.0
+ip route 192.168.2.0 255.255.255.0 172.16.1.10
interface FastEthernet0/0
-ip address 192.168.0.1 255.255.255.0
Hum. Alguém já havia alterado a rota 192.168.2.0 deste roteador (e não tinha salvado a configuração!!!), além da configuração que acabamos de alterar (endereço IP da interface Fa0/0). Este é somente um exemplo de uma configuração extremamente simples, mas podemos imaginar a ajuda que podemos ter em configurações mais complexas e em grandes mudanças.

Outro ponto importante desta feature é o fato de conseguirmos comparar a configuração atual (running-config) com uma configuração armazenada em um servidor TFTP. Se combinarmos as configurações armazenadas no Rancid com a opção de comparar a configuração direto no roteador, temos uma poderosa ferramenta em mãos.

Router#show archive config differences tftp://10.1.1.1/Router.bkp system:running-config
(...)

Mais informações em:

Aumentando a velocidade do show running-config

Muitas vezes nos deparamos com um equipamento que possui muitas linhas de configuração e, ao executar um comando de show running-config, demora muito para que o comando retorne a configuração atual além do que gera uma carga adicional de processamento ao equipamento.

A partir das versões 12.2(25)S, 12.2(27)SBC e 12.3(7)T é possível otimizar esta operação criando um cache da configuração atual, o que reduz em até 90% o tempo de execução de um show running-config (efetuei testes em laboratório e o tempo diminui de 30 segundos para 3 segundos).

Router(config)# parser config cache interface

Após a aplicação deste comando é preciso executar um primeiro show run para que seja criado o cache. Todos os show running posteriores devem ter um ganho de performance (obs: será consumido uma parcela da memória do equipamento para este cache).

Link:
http://www.cisco.com/en/US/docs/ios/12_3t/12_3t7/feature/guide/gtinvgen.html

segunda-feira, 27 de outubro de 2008

Usando o Ping (Cisco)

O Ping é certamente um dos programas mais utilizados para testar a conectividade de rede. Nos roteadores Cisco é "o" programa para testar não somente se existe conectividade, mas também para nos garantir que não há erros ou problemas (leia-se: perda de pacotes, etc). Tudo começa com o ping e deve terminar com várias exclamações consecutivas (ou pontos consecutivos, no pior caso).

router#ping 10.10.10.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/20 ms
Se quisermos melhorar um pouco o nosso teste, podemos utilizar um ping estendido:
router#ping
Protocol [ip]:
Target IP address: 10.10.10.1
Repeat count [5]: 10
Datagram size [100]: 1000
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 10, 1000-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 12/24/68 ms
Ou ainda, de forma mais rápida e resumida, o mesmo comando:
router#ping 10.10.10.1 repeat 10 size 1000

Type escape sequence to abort.
Sending 10, 1000-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 12/16/32 ms
Quando estamos testando conexões seriais (a.k.a. links ponto-a-ponto) é importante fazer o teste com vários padrões de dados (ou data pattern) e é aí que podemos melhorar ainda mais nossos testes, pois somente o teste com vários padrões poderá nos revelar erros mais raros, mas que também podem perturbar a vida de um administrador de rede. Os padrões mais comuns são:
  • 0x0000 ou 0xFFFF: para verificar se o circuito pode lidar com "all-zeros" (ou "all-ones"). Pode indicar problemas de codificação da operadora (bz8s/ami).
  • 0x4040, 0x1010, 0x8080, 0xaaaa: zeros e uns alternados utilizados para indicar problemas com circuitos mal provisionados.
Lembrando que na opção padrão o comando ping dispara pacotes echo-request com o padrão de dados 0xabcd. Para alterar o padrão, basta utilizar a seguinte opção:
router#ping 10.10.10.1 repeat 10 size 1000 data 4040

Type escape sequence to abort.
Sending 10, 1000-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
Packet has data pattern 0x4040
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 12/16/36 ms
Mais informações em:

quinta-feira, 9 de outubro de 2008

Cisco Flexible Netflow

Lançado com a versão 12.4(9)T do IOS, o Cisco Flexible Netflow é uma atualização ao já largamente utilizado Cisco Netflow. Esta atualização permite configurações mais detalhadas e a possibilidade de fazer o cache de informações para fins específicos, como por exemplo, análises de segurança ou billing. Neste último mês de setembro, a Cisco publicou um white-paper completo descrevendo a tecnologia e como ela pode ser utilizada nas redes convergentes mais atuais :-). Consulte a documentação oficial do Flexible Netflow para mais informações sobre configuração e funcionamento desta tecnologia.

quarta-feira, 8 de outubro de 2008

Cisco Policy-Based Routing

Policy-Based Routing (ou PBR) é uma técnica utilizada para forçar um determinado fluxo de pacotes por um caminho diferente daquele que o fluxo normalmente seguiria se estivesse sendo roteado pela tabela de roteamento padrão de um roteador. Por exemplo, assim que um fluxo chega até uma das interfaces de um roteador, este roteador deve consultar a tabela de roteamento para determinar para qual interface os pacotes deverão ser comutados e isso é o comportamento padrão de um roteador IP.

Quando utilizamos uma PBR, estamos alterando este comportamento e fazendo com que os pacotes que cheguem até uma interface, sejam comutados para uma interface diferente daquela apontada pela tabela de roteamento; e isso é configurado nos roteadores Cisco através do comando route-map e da cláusula set ip next-hop. Como exemplo, vejamos um route-map aplicado a interface Ethernet0. Todos os pacotes que chegarem a esta interface serão comutados para uma interface na rede 10.1.1.1, de forma que os pacotes possam ser encaminhados para o endereço 10.1.1.1.

route-map ENVIA_PARA_10.1.1.1
set ip next-hop 10.1.1.1

interface ethernet0
ip policy route-map ENVIA_PARA_10.1.1.1
No entanto, existem duas formas de utilizar o comando set ip next-hop e um comportamento padrão que deve ser muito bem observado durante a sua utilização:

O comando set ip next-hop irá verificar a existência do próximo salto (next-hop) válido e...
- Se o próximo salto existe na tabela de roteamento, então o pacote é encaminhado para o próximo salto especificado.
- Se o próximo salto não existe na tabela de roteamento, então o roteador utiliza da tabela de roteamento padrão para encaminhar os pacotes.

O comando set ip default next-hop também irá verificar a tabela de roteamento e...
- Se o destino existir na tabela de roteamento, encaminha o pacote utilizando as informações da tabela de roteamento.
- Se o destino não existir na tabela de roteamento, encaminha o pacote de acordo com o next-hop especificado no comando.

Para mais detalhes sobre esse comportamento e exemplos de configuração, consulte este documento da Cisco. É possivel também combinar as características de roteamento baseado em política (PBR) com as opções de tracking e IP SLA para verificar se o next-hop é alcançável ANTES de aplicar a PBR. Mais detalhes sobre a utilização desta solução aqui.

segunda-feira, 6 de outubro de 2008

BGP AS com 4 Bytes

Tradicionalmente o número de sistema autônomo (aka AS) possui 2 bytes (ASN16 ou 2 octetos), permitindo assim que estes sistemas autônomos utilizem teoricamente qualquer número no intervalo de 1 até 65536. O número de sistema autônomo identifica uma rede (ou um conjunto de redes) que possui uma mesma política de roteamento e está sob administração de um conjunto comum de pessoas (por exemplo, um provedor de serviços Internet). Este número é utilizado pelo protocolo BGP, mais precisamente no atributo AS_PATH, que determina a que distância encontra-se uma rede, medindo essa distância pelo número de sistemas autônomos que deve-se atravessar para alcançar a rede em questão.

Com o crescimento exponencial (?) da Internet, espera-se que o esgotamento do número de AS disponível para alocação esgote-se por volta do ano de 2015, no mais otimista dos casos. Por isso foi criada uma extensão ao tradicional AS de 2 bytes para um número AS de 4 bytes (ASN32) e este padrão foi publicado oficialmente pelo IETF no RFC 4893 no início de 2007. O padrão garante a compatibilidade entre os antigos e os novos números de AS de forma a garantir a interoperabilidade entre os dois padrões, já que esta informação deve ser utilizada dentro do protocolo BGP (pelo atributo AS_PATH) que é visível através de toda Internet.

Alguns grandes fabricantes de equipamentos de rede já estão se adaptando ao novo padrão, como é o caso da Juniper que a partir da versão 9.x do JunOS já suporta ASN32. Vale lembrar que o padrão para utilização de communities dentro do BGP também será ligeiramente alterado (para a Juniper, por exemplo, o padrão para communites com o ASN32 será 334324L:132 para o ASN 334324 e target 132). A Cisco diz possuir o código para ASN32 implementado na versão 12.5T do IOS que deve estar disponível em breve.

Vale lembrar que os primeiros testes desse novo padrão foram feitos com software-routers como o openbgpd e o Quagga. Para mais informações sobre o como os fabricantes estão se preparando e os testes realizados até agora na Internet visite o Wiki AS4 sobre ASN32.

Mais informações:

quinta-feira, 31 de julho de 2008

Cisco BGP default-information originate

Não é um cenário muito comum utilizar uma rota default dentro do BGP para roteamento na Internet, no entanto, uma rota default é muito útil quando estamos falando de redes baseadas na tecnologia MPLS (utilizando BGP entre o CE e o PE), principalmente em topologias HUB-and-SPOKE.

Basicamente, é possível anunciar uma rota default de duas maneiras: 1) utilizando o comando default-information originate e 2) utilizando o comando network 0.0.0.0. A questão é: qual a diferença entre estes dois comandos ? (afinal de contas, os dois anunciam uma rota default! :-)

1) Default-information originate

Para utilizar o comando default-information originate dentro da configuração do BGP é necessário que uma rota default seja redistribuída para o BGP de outro protocolo de roteamento (dinâmico ou estático). Por exemplo:

ip route 0.0.0.0 0.0.0.0 189.1.1.1
!
router bgp 65000
default-information originate
redistribute static

2) Network 0.0.0.0

Se utilizarmos o comando network 0.0.0.0 dentro da configuração do BGP, desde que uma rota default esteja instalada na tabela de roteamento, o roteador passará a anunciar uma rota default para seus peers BGP (independente de como esta rota default foi instalada na tabela, via protocolo dinâmico ou uma simples rota estática).
ip route 0.0.0.0 0.0.0.0 189.1.1.1
!
router bgp 65000
network 0.0.0.0
Mais informações em: Cisco IP Routing Protocols Command Reference: Default-information originate

sexta-feira, 18 de julho de 2008

Cisco IOS 12.4(20)T e 12.4(15)T

Este mês a Cisco lançou para utilização a versão 12.4(20)T do IOS. Com esta versão a Cisco também anunciou algumas mudanças interessantes que quero destacar aqui. Algumas plataformas deixam de ter suporte no ciclo de desenvolvimento a partir da versão 12.4(20)T e passam a ter suporte somente na versão 12.4(15)T e nas atualizações já previstas no release notes de cada uma das plataformas. As plataformas que deixam de ter suporte são:


• Cisco SOHO 90 Series

• Cisco 831, 836, and 837 Series

• Cisco 1701, 1711, 1712, 1721, 1751, 1751-V, and 1760 Series

• Cisco 2610XM-2611XM, 2620XM-2621XM, 2650XM-2651XM, and 2691 Series

• Cisco 3631 and 3660 Series

• Cisco 3725 and 3745 Series

• Cisco 7400 Series

• Cisco AS5850 Universal Gateway


Para mais informações consulte o Cisco IOS Software Release 12.4T Q&A. Enquanto isso, a Cisco também anunciou que a versão 12.4(20)T não terá mais suporte à fast switching (entre muitas outras coisas), o que nos deixará apenas com process switching ou CEF. Há também alguns avanços consideráveis para as features existentes, como por exemplo a possibilidade de fazer logging do CEF ou a captura de pacotes diretamente no IOS. Para mais informações sobre novas features consultar o Cisco IOS Software 12.4T Features and Hardware Support.

terça-feira, 10 de junho de 2008

"Troca de placa remota" no Cisco IOS

OIR - Online Insertion and Removal - é uma funcionalidade que permite que um novo hardware seja adicionado com o equipamento ainda ligado (isto é, sem a necessidade de reboot). Após a inserção, o equipamento detecta o novo hardware e o inicializa para operação. O processo equivalente ocorre também para a remoção de uma placa. Este é um processo físico, ou seja, precisa de alguém fisicamente inserindo ou removendo a placa em um roteador.

No entanto, muitas das vezes este processo de OIR é solicitado pelo fabricando para que seja feita a reinicialização do hardware e não há a disponibilidade para ir rapidamente até o local e efetuar o procedimento.

Abaixo demonstrarei como é possível fazer, no 7500, o processo de OIR virtualmente, isto é, sem estar necessariamente fisicamente no mesmo local que o router:

  • para remover logicamente uma VIP (Versatile Interface Processor)
test rsp slot mask
test rsp stall
  • para ativar novamente a VIP:
test rsp slot unmask
test rsp stall
É claro que existem outros métodos de se efetuar um reset de uma placa, mas fica aqui a dica como registro de uma curiosidade.

sexta-feira, 30 de maio de 2008

Diminuindo o tempo de reboot do IOS

Na versão 12.3(2)T do IOS da Cisco foi incluída uma funcionalidade que torna possível otimizar o tempo total de reboot de um roteador. Essa nova funcionalidade é chamada de Warm Reload/Upgrade.

O grande ganho na verdade está em fazer o carregamento e a descompressão da imagem do IOS na memória RAM em paralelo com a que está sendo executada no momento. A partir daí quando é efetuado o reload, como estes passos de carregamento e descompressão já estão feitos, o tempo de reboot se limita apenas a inicialização e a execução do IOS.

Estimativas apontam para uma redução média de até 66% do tempo total de reboot, ou seja, se o reboot normal demora cerca de 3 minutos, com o Warm Reload estima-se que demore apenas 1 minuto.

Esta funcionalidade pode ser muito útil para diminuir o downtime do equipamento em situações de upgrade de IOS ou em casos de reboots espontâneos (por exemplo, por causa de um crash).

Recomendo fortemente a leitura da documentação no site da Cisco (link acima), principalmente porque este funcionalidade não deve ser utilizada muitas vezes consecutivas, pois pode causar problemas ao funcionamento do roteador (por exemplo, de fragmentação de memória).

terça-feira, 25 de março de 2008

Link: Undocumented Cisco Commands

Não sei muito bem se uma lista de comandos não-documentados da Cisco pode ajudar em alguma coisa... No entanto, achei uma lista bastante completa e interessante (talvez um pouco desatualizada). Alguns comandos que figuram como não-documentado já possuem uma documentação e aparecem no prompt de ajuda interativa do IOS. Isso mostra também que alguns deles - tão utilizados hoje em dia - apareceram pela primeira vez um pouco, digamos, escondidos.

segunda-feira, 24 de março de 2008

Entendendo NAT em Roteadores Cisco

Há alguns anos, com o esgotamento dos endereços IPv4 cada vez mais próximo, foi necessário encontrar uma alternativa para diminuir a velocidade de alocação de endereços IPv4 e aproveitar ainda melhor aqueles que já haviam sido alocados para os provedores de serviço (RFC-1631). Uma dessas alternativas foi a utilização de muitos endereços privados (conforme definido no RFC-1918) que posteriormente deveriam ser traduzidos para um (ou mais) endereço público para assim haver conectividade entre endereços públicos da Internet e endereços privados. Essa estratégia ficou conhecida como NAT (Network Address Translation).

A Cisco, por sua vez, possui uma terminologia e uma maneira particular de implementar os três principais tipos de NAT (estático, dinâmico e tradução de portas), no entanto, existem algumas informações importantes sobre roteamento e NAT Virtual Interfaces que devem ser entendidas também, e é isso que vamos tratar neste post. Para começar, é necessário entender a terminologia local e global, assim como inside e outside.

  • Inside local address: é o endereço atribuído a interface de rede de uma estação, por exemplo (escopo local).
  • Inside global address: é o endereço público que representa um ou mais endereços inside local (escopo global ou a Internet).
  • Outside local address: é a forma como um endereço IP público é visto na rede interna. Geralmente este endereço é roteado somente pelos roteadores internos (não é roteado na Internet e, portanto, possui um escopo local).
  • Outside global address: é um endereço público da Internet (é roteado na Internet).
É claro, também, que esta terminologia existe para nos auxiliar a entender onde estas definições e posteriores configurações serão utilizadas, já que os roteadores não possuem a inteligência necessária para distinguir um endereço público de um endereço privado (no final, serão somente zeros-e-uns). A figura abaixo (fornecida gentilmente pela Cisco) representa estas definições.


Essas definições serão importantes para escolher quais interfaces serão classificadas como inside e outside e como serão construídas as regras de tradução.

Seguindo o exemplo da figura abaixo, um host com endereço IP 192.168.0.1 (inside local) envia um pacote para o endereço 72.72.72.1 (DA - outside local e outside global). Ao passar (da interface INSIDE para OUTSIDE) por um roteador com NAT habilitado poderá ter traduzido o endereço de origem (SA) de 192.168.0.1 (inside local) para 200.200.200.1 (inside global). Esta tradução permite que o host 192.168.0.1 estabeleça uma comunicação com o host 72.72.72.1. O pacote com a resposta do host 72.72.72.1 terá como endereço de destino 200.200.200.1 (inside global) e novamente ao passar pelo roteador com NAT habilitado será traduzido - agora o endereço de destino - de 200.200.200.1 para 192.168.0.1 (inside local), fazendo com que os pacotes cheguem até o seu destino correto. Exemplo:


Com isso, podemos ver como fica a configuração para um ambiente com NAT estático como é exemplificado na figura acima.
ip nat inside source static 192.168.0.1 200.200.200.1

! interface INSIDE
interface fast0/0
ip nat inside

! interface OUTSIDE
interface serial0/0
ip nat outside
A utilização de "inside source" ou "outside source" na regra de tradução (NAT) altera a forma como é traduzido o endereço dos pacotes de acordo com o sentido do tráfego:

- ip nat inside source
  • Traduz o endereço de ORIGEM dos pacotes que trafegam da interface inside para outside.
  • Traduz o endereço de DESTINO dos pacotes que trafegam da interface outside para inside.
- ip nat outside source
  • Traduz o endereço de ORIGEM dos pacotes que trafegam da interface outside para intside.
  • Traduz o endereço de DESTINO dos pacotes que trafegam da interface inside para outside.
Podemos agora verificar se está tudo funcionando conforme o planejado com o seguinte comando:
Router#show ip nat translations

Pro Inside global Inside local Outside local Outside global
--- 200.200.200.1 192.168.0.1 --- ---
Ainda temos dois tipos de NAT que não serão discutidos aqui, tal como o NAT dinâmico e a tradução de porta (também conhecido como PAT, ou Port Address Translation). Estes outros tipos de NAT seguem o padrão apresentado acima.

Vamos analisar uma outra questão importante quando estamos trabalhando com NAT...

NAT Virtual Interface

Um dos problemas que podemos enfrentar quando habilitamos NAT utilizando interfaces INSIDE e OUTSIDE é a necessidade de inserir rotas para os endereços traduzidos. Isso acontece pois a ordem de tradução e roteamento ocorre em momentos diferentes durante o processamento de um pacote dependendo do sentido do tráfego. No sentido inside-to-outside a tradução é feita DEPOIS da decisão de roteamento. No sentido contrário (outside-to-inside) a tradução acontece primeiro. A ordem completa pode ser encontrada aqui.

A partir da versão 12.3T a Cisco introduziu o conceito de NAT Virtual Interface (NVI)*. Dessa forma, a tradução dos endereços ocorre de forma simétrica e não é necessário inserir rotas para os endereços traduzidos. Quando uma interface está habilitada para fazer NAT utilizando NVI, o pacote que adentrar esta interface será roteado para a interface NVI (onde ocorre a tradução) e depois roteado mais uma vez utilizando a tabela de roteamento. A configuração utilizando NVI para o exemplo que citamos acima é a seguinte:
ip nat source static 192.168.0.1 200.200.200.1

interface fast0/0
ip nat enable

interface serial0/0
ip nat enable
Veja que dessa forma não é necessário declarar nenhuma interface como inside ou outside, ou mesmo declarar o sentido de tradução no comando de NAT estático. Esta nova funcionalidade resolve também o problema de tradução para endereços roteados para uma mesma interface de entrada (já que pode existir casos em que um pacote pode entrar por uma interface outside e nunca alcançar a interface inside correspondente, conforme descrito neste artigo).

Para encerrar este post, gostaria de reforçar que até aqui não foi apresentado nenhum mecanismo ou forma de segurança relacionada com a utilização (ou a não utilização) de NAT, apesar de, no passado, muitos profissionais acreditarem que a simples utilização de tradução de endereços poderia aumentar a segurança de um ambiente...

Veja também:

(*) A interface NVI0 que está presente nos roteadores que possuem NAT habilitado (a partir da versão 12.3T) é a NAT Virtual Interface:

Router# show interfaces
(...)
NVI0 is up, line protocol is up
Hardware is NVI
Interface is unnumbered. Using address of NVI0 (0.0.0.0)
(...)

terça-feira, 18 de março de 2008

Cisco IOS - Nomenclatura e Versões (Parte 2)

Para completar as informações sobre o sistema operacional da Cisco é necessário citar a classificação que é atribuída a cada imagem e as famílias principais utilizadas pela Cisco atualmente.

A classificação que cada imagem recebe permite-nos avaliar qual versão deverá ser utilizada em uma infraestrutura de rede, dado os requisitos de funcionalidade e estabilidade. Toda a trilha de classificações abaixo têm início em uma major release do IOS. Lembrando que a major release é a versão principal do IOS, por exemplo, 12.1, 12.2, 12.3, etc. São elas:

  • Limited Deployment (LD): uma major release do IOS é classificada como LD após o seu lançamento comercial (FCS ou First Commercial Shipment) e antes de alcançar a classificação GD (General Deployment).
  • General Deployment (GD): em um determinado momento no ciclo de vida do desenvolvimento de uma major release a Cisco poderá classificar uma versão como GD. Esta classificação pode ser atribuída somente à uma major release e é baseada principalmente no feedback recebido dos clientes sobre a estabilidade da versão. Durante o ciclo de vida de uma versão GD, todas as versões subsequentes (somete com correções de bugs e problemas de segurança) serão consideradas GD.
  • Early Deployment (ED): são as versões baseadas em major releases que, no entanto, possuem novas funcionalidades, atualizações de segurança e correção de bugs. O propósito das versões ED é permitir que os clientes possam utilizar novas funcionalidades mais rapidamente. Como as versões classificadas como ED não são totalmente estáveis, é aconselhável utilizá-las somente caso não haja uma versão GD ou LD que possua suporte a uma determinada funcionalidade.
  • Deferral (DF): O propósito de classificar uma verão como DF é anunciar que esta versão não estará mais disponível para download e que já existe uma nova imagem para substituí-la. A partir deste momento a Cisco aconselha que todos os seus clientes atualizem uma possível versão DF para a sua substituta.
Com o passar do tempo, a Cisco restringiu o desenvolvimento do IOS para três famílias principais. São elas: T, S e XR. Estas famílias seguem objetivos (funcionalidades e suporte a hardware) e ciclo de vida diferenciados e, portanto, são aconselhadas para diferentes propósitos, como poderemos ver a seguir:

-Train T: Possui basicamente duas trilhas (12.3/12.4 e 12.4T) com várias funcionalidades para (principalmente) roteadores de acesso e redes comerciais.
  • 12.3/12.4: possui as novas funcionalidades adicionadas às versões T anteriores e as correções de bugs e problemas de segurança.
  • 12.4T: possui suporte a novos hardwares e funcionalidades.
-Train S: Esta família é dedicada para os provedores de serviço (Service Provider) e possui maior suporte para roteadores (e/ou switches) do núcleo destes provedores (por exemplo, os modelos 7600 ou 6500).
  • 12.2SB: Broadband and Leased-Line Aggregation, and MPLS Provider Edge (PE).
  • 12.2SX: functionality and hardware for high-end Ethernet LAN switching for Enterprise access, distribution, Core and data center networks.
  • 12.2SE/12.2SG: for mid-range and low-end Ethernet LAN switching for Enterprise access and distribution networks, and mid-range and low-end Metro Ethernet for Service Provider edge networks.
  • 12.2SR: for high-end Metro Ethernet and MPLS PE for Service Provider
-Train XR: desenvolvida para o Cisco CRS-1 (Carrier Routing System) e para o Cisco XR 12000 Series para provedores de serviço, visando principalmente plataformas que necessitam de alto desempenho (possivelmente chegando a escala de terabits). Atualmente na versão 3.2.

Além disso, a Cisco recomenda a instalação de um tipo de imagem de acordo com a plataforma. As principais recomendações estão dispostas abaixo (uma lista completa e atualizada pode ser encontrada aqui):
  • Roteadores 800, 1700, 2600, 2800, 3700 e 3800 (low-range): 12.4 ou 12.4T;
  • Roteadores 7200 e 7301: 12.4T ou 12.2SB;
  • Roteadores 7500: 12.4 ou 12.0S;
  • Roteadores 7600: 12.2SR;
  • Roteadores 12000: IOS-XR ou 12.0S;
  • Roteadores CRS-1: IOS-XR;
  • Switches Catalyst 2970, 3560 e 3750: 12.2SE;
  • Switches Catalyst 4500 e 4900: 12.2SG;
  • Switches Catalyst 6500:12.2SX;
Com isso encerramos este pequeno resumo sobre como a Cisco trata a nomeclatura, a classificação (dentre as plataformas) e as versões do Cisco IOS.

Veja também: