25 oct 2008

Configurando Dynamips / GNS3 para simular routers Cisco en 32 y 64 bits

Instalando Dynamips
En Debian testing y SID, estos 2 programas ya se encuentran en los repositorios, podemos instalarlo de la siguiente manera
aptitude install  gns3 dynamips
Sin embargo, dynamips consume bastantes recursos asi que sera mejor compilar una version optimizada para el procesador que tengamos.
Para compilar el codigo fuente:
apt-get build-dep gns3 dynamips
aptitude install libelf-dev libelf1 libpcap0.8 libpcap0.8-dev cdbs python-qt4-dev python-sip4-dev libasm1 elfutils python-qt4 python-sip4
Bajamos el cofigo fuente de la pagina de dynamips:
http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2.tar.gz
tar zxvf dynamips-0.2.8-RC2.tar.gz
cd dynamips-0.2.8-RC2
Editamos el siguiente archivo para ponerlo de acuerdo a la version:
vi debian/changelog
dynamips (0.2.8-RC2-1) unstable; urgency=low -->lo cambiamos al texto que aparece en negrita
Damos permiso de ejecucion, creamos el binario .deb e instalamos
chmod +x debian/rules
fakeroot debian/rules binary  --> para 32bits
export DYNAMIPS_ARCH=amd64 &&  fakeroot debian/rules binary  --> para 64 bits
cd ..
dpkg -i dynamips_0.2.8-RC2-1_i386.deb -->32bits
dpkg -i dynamips_0.2.8-RC2-1_amd64.deb -->64bits

Instalando GNS3
Descargamos la ultima version de la pagina de GNS3, son archivos en python asi que no hay necesidad de instalar:
http://www.gns3.net/download 
tar jxvf GNS3-0.5-src.tar.bz2
cd GNS3-0.5-src
./gns3
Una ves ejecutado GNS3, nos pedira la ubicacion de dynamips, se encuentra en/bin/dynamips

Descomprimiendo el IOS
La documentacion recomienda descomprimir la imagen de IOS que vayamos a usar, asi que manos a la obra
unzip -p mi_archivo_ios.bin > ios_descomprimido.bin

Estableciendo el parametro idlepc
Si no configuramos este parametro, dinamyps consumira toda la CPU, hay otra opcion usando el comando cpulimit pero no e tenido la necesidad de usarlo aun.
De manera predeterminada, dynamips asume que queremos emular el modelo c7200, asi que si tenemos otra imagen debemos cambiarlo con el parametro -P (actualmente estan soportados los modelos 7200, 3600, 2691, 3725, 3745).
Podemos determinar graficamente este valor usando GNS3, pero al menos en mi PC (que no es tan nueva) deja colgado la interfaz, asi que hagamoslo en modo texto. Asmumanos que una imagen c3725, entonces ejecutamos este comando:
dynamips -P 3725  c3725_descomprimido.bin
Esto va a poner muy lenta la PC ya que va a consumir el 100% de CPU, esperamos que arranque el IOS hasta que nos aparesca el mensaje "Press RETURN to get started!" ( si nos pregunta la autoconfiguracion le damos que no). Luego presionamos la siguiente combinacion de teclas: Ctrl-] i (es decir, presionamos Control y ] al mismo tiempo, soltamos las teclas y a continuacion i). Esto nos va a mostrar una informacion como esta:
Please wait while gathering statistics...
Done. Suggested idling PC:
   0x602649b4 (count=75)
       0x60264a2c (count=40)
       0x60bedba0 (count=51)
Restart the emulator with "--idle-pc=0x602649b4" (for example)
Matamos el proceso dynamips y empezamos a probar con esos valores hasta encontrar el valor que haga que el consumo de cpu disminuya.
dynamips -P 3725 --idle-pc=0x602649b4  c3725_descomprimido.bin
Puede haber mas de un valor optimo, en mi caso obtuve estos resultados de uso de cpu:
  • 0x602649b4 (count=75)  --> 25%
  • 0x60264a2c (count=40) --> 90%
  • 0x60bedba0 (count=51) --> 26%
Luego de encontrado el valor optimo, abrimos el GNS3 y establecemos los valores.

1 comentario: