segunda-feira, 26 de fevereiro de 2007

Simulando roteadores Cisco com Dynagen

Apesar de ser somente uma pequena nota sobre um um software de simulação, o post sobre Dynamips é o mais visitado deste blog. Por isso, achei interessante explicar com maiores detalhes o funcionamento do Dynamips e do Dynagen. Para tornar tudo ainda mais fácil, os exemplos que mostrarei abaixo serão todos baseados no dynamips/dynagen para Windows, mas os mesmos funcionam igualmente no Linux (ou até melhor... quem sabe? Mais adiante discutiremos sobre isso também).

Dynamips é um software de código-aberto escrito por Christophe Fillot para simular um roteador 7200 em um PC comum utilizando um processador MIPS. Com este software é possível simular um IOS diretamente no PC - por este motivo o Dynamips necessita de uma imagem do Cisco IOS para funcionar. Atualmente o Dynamips suporta as plataformas 2600, 3600 e 7200 de roteadores Cisco e ainda vários tipos de módulos para estas plataformas.

Para utilizar o Dynamips, por exemplo, para simular uma rede de 4 roteadores interconectados entre si, era necessário mapear em cada instância do Dynamips as interfaces de interconexão utilizando portas UDP. Para facilitar este trabalho de mapeamento Greg Anuzelli desenvolveu um front-end para o Dynamips chamado Dynagen. Com o Dynagen o mapeamento das interconexões é automático: basta definir em um arquivo de configuração qual interface de um roteador conecta-se a outro roteador. Para saber mais detalhes sobre o Dynagen, consulte este tutorial escrito pelo próprio Greg Anuzelli.

Alguns centros especializados em treinamento para as certificações Cisco já disponibilizam laboratórios pré-configurados - ou seja, um arquivo de configuração do Dynagen - para treinamentos e exercícios em um laboratório virtual. Por exemplo, o arquivo do laboratório virtual do Internetwork Expert pode ser pego aqui e do IE Mentor aqui. Estes dois exemplos anteriores foram especialmente desenvolvidos para provas do CCIE.

Desta vez iremos instalar o laboratório do Internetwork Expert. A primeira medida é ter o Dynagen instalado na máquina. Para isso, você deve fazer o download e instalar o Dynagen e a biblioteca libpcap - como estamos no Windows, iremos baixá-la com o nome de Winpcap. Em seguida será necessário pegar a imagem do IOS e descompactá-la com o PKUNZIP ou Winrar (no windows) ou o unzip do Linux. Neste exemplo, iremos utilizar a imagem c3640-is-mz.123-14.T7.bin e descompactá-la no Linux.

$ unzip c3640-is-mz.123-14.T7.bin && mv image.bin c3640-is-mz.123-14.T7.extracted.bin
Coloque a imagem no diretório C:\Program Files\Dynamips\images. Em seguida, você deve rodar o Dynamips com esta imagem (com qualquer configuração de módulos) para descobrir qual é o valor do idle-pc para esta imagem. Para isso, utilizei o comando "C:\Program Files\Dynamips>dynamips.exe -P 3600 images\c3640-is-mz.123-14.T7.extracted.bin" e aguardei o término do processo de boot da imagem. Note que a CPU do seu PC estará constantemente em 100% pois não carregamos o valor do idle-pc no boot da imagem. Para descobrirmos este valor é necessário entrar com a seqüência de break e em seguida pressionar a tecla "i" durante a execução do simulador. No windows a seqüência de break é "Ctrl+ç"e em seguida "i". Pode ser também a combinação "Ctrl+]" e depois "i".
Router>
Please wait while gathering statistics...
Done. Suggested idling PC:
0x605c057c (count=54)
0x605f1cf0 (count=22)
0x605f1d10 (count=46)
0x605f1ed8 (count=32)
0x605f1f3c (count=27)
0x605f2010 (count=69)
0x606a23fc (count=42)
0x606a2478 (count=21)
0x605f2814 (count=23)
0x605f2850 (count=27)
Restart the emulator with "--idle-pc=0x605c057c" (for example)
Agora podemos testar a imagem com algum dos valores que foram descobertos e verificar que a CPU não está mais constantemente em 100%. Esse procedimento é necessário quando precisamos rodar vários roteadores em um mesmo PC e não queremos esperar vários dias para sair do modo exec e entrar no modo de configuração de um dos roteadores...

Agora ajustamos o arquivo com as configurações do laboratório para refletir o nome da imagem e o valor do idle-pc da imagem que acabamos de testar. Temos que editar o arquivo ie.routing.and.switching.topology.4.00.net e atualizar todas as entradas do nome da imagem e idle-pc.

image = C:\Program Files\Dynamips\images\c3640-is-mz.123-14.T7.extracted.bin
idlepc = 0x605c057c

É importante também ter uma forma de conectar na console de cada um dos equipamentos que serão simulados. Para isso a sugestão para este laboratório é criar uma interface de loopback (para saber como fazer no Windows clique aqui) e atribuir o IP 169.254.0.1/16. Temos que descobrir o endereço de hardware desta interface de loopback com o comando "dynamips -e" - algo como {4065B11C-2A6C-4FD2-8204-A12A9A8328A4} - e atualizar este endereço no arquivo de configuração do laboratório para o último roteador - TermServ - que será nosso servidor de console para todos os outros equipamentos.

Para finalizar, iniciamos duas instâncias do dynamips para suportar todo o laboratório:

C:\Program Files\Dynamips>dynamips.exe -H 7200
C:\Program Files\Dynamips>dynamips.exe -H 7201
E depois iniciamos o Dynagen carregando o arquivo de configuração do latoratório.

C:\Program Files\Dynamips>dynagen.exe sample_labs\internetworkexpert\ie.routing.
and.switching.topology.4.00.net

Reading configuration file...


Network successfully started

Dynagen management console for Dynamips

=> list
Name Type State Server Console
TermServ 3640 stopped localhost:7201 2000
R1 3640 stopped localhost:7200 2001
R2 3640 stopped localhost:7200 2002
R3 3640 stopped localhost:7200 2003
R4 3640 stopped localhost:7200 2004
R5 3640 stopped localhost:7200 2005
R6 3640 stopped localhost:7200 2006
SW1 3640 stopped localhost:7200 2007
SW2 3640 stopped localhost:7201 2008
SW3 3640 stopped localhost:7201 2009
SW4 3640 stopped localhost:7201 2010
BB1 3640 stopped localhost:7201 2011
BB2 3640 stopped localhost:7201 2012
BB3 3640 stopped localhost:7201 2013
FRSW FRSW n/a localhost:7201 n/a
=> start TermServ
100-C3600 'TermServ' started
=>

Agora você poderá iniciar cada um dos equipamentos e conectar nos mesmos para testar as mais diferentes configurações. Depois de iniciar o roteador TermServ, pode-se utilizar o telnet para conectar no TermServ e depois na console de cada um dos equipamentos do laboratório.

C:\telnet 169.254.0.2

TermServ>
Agora temos um laboratório virtual de roteadores para testar e simular os mais diferentes ambientes.

O Dynagen pode trabalhar com instâncias do Dynamips rodando em máquinas diferentes, permitindo simular redes de roteadores ainda maiores distribuindo a carga entre máquinas distintas. Se esta for a sua idéia, então é aconselhável a utilização do Linux, já que o Windows não trabalha muito bem com processos que ocupam mais de 2 GB de memória RAM e sabe-se que tem problemas de desempenho depois de uma certa quantidade de roteadores. Mais informações sobre o Dynamips podem ser encontradas no Forum 7200emu.hacki.at ou ainda no blog do Christophe Fillot, autor do Dynamips.

UPDATE (16-fev-2008): Veja também o post sobre o GNS3.

Um comentário:

Ricardo Amaral Pereira disse...

kra Parabéns pelas explicações aqui passadas. muito bom material mesmo.