Эмулируем Cisco IOS на компьютерах с операционной системой Ubuntu 10.10

Posted by

— графический симулятор сети, позволяющий спроектировать комплексную топологию сети. Система поддерживает эмуляцию ПК, а также маршрутизаторы Cisco (через использование эмулятора IOS — и PIX эмулятора Pemu).

GNS3 позволяет эмулировать Cisco IOS на компьютерах с операционной системой . Эмуляция возможна для огромного количества платформ роутеров. Все это делает GNS3 отличным средством для подготовки к экзамену CCNA и CCNP. Существует несколько программ симуляторов оборудования cisco, но они включают в себя лишь урезанный список всех возможных команд роутеров cisco (Packet Tracer, Boson NetSim). C GNS3 вы запускаете настоящую Cisco IOS, т.е. вы видите именно то, что IOS представляет из себя, и получаете полный доступ ко всем командам и параметрам, которые поддерживает IOS. GNS3 не заменит реальный роутер, но это хорошее средство для изучения и тестирования оборудования cisco.

Исходная система:

keiz@vkeiz:~$ uname -a && cat /etc/issue

Linux vkeiz 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux

Ubuntu 10.10 \n \l

Обновляем список пакетов:

keiz@vkeiz:~$ sudo apt-get update

Сперва нужно установить gns3 dynamips

ekzorchik@ekv:~$ aptitude search gns3

p gns3 — graphical network simulator

ekzorchik@ekv:~$ aptitude search dynamips

p dynamips — Cisco 7200/3600/3725/3745/2600/1700 Router Emulator

 

Ищем в интернете и скачиваем образ IOS

См. на торентах.

keiz@vkeiz:~$ mkdir cisco

keiz@vkeiz:~$ cd cisco/

keiz@vkeiz:~/cisco$ ls

c7200-jk9s-mz.124-13b.bin

keiz@vkeiz:~/cisco$ file *.bin

c7200-jk9s-mz.124-13b.bin: ELF 32-bit MSB executable, cisco 7200, version 1 (SYSV), statically linked, stripped

Все параметры Dynamips легко узнать, запустив его с ключом ‘—help’.

keiz@vkeiz:~/cisco$ dynamips —help

Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)

Copyright (c) 2005-2007 Christophe Fillot.

Build date: May 9 2009 18:06:28

Usage: dynamips [options] <ios_image>

Available options:

-H [<ip_address>:]<tcp_port> : Run in hypervisor mode

-P <platform> : Platform to emulate (7200, 3600, 2691, 3725, 3745, 2600 or 1700) (default: 7200)

-l <log_file> : Set logging file (default is dynamips_log.txt)

-j : Disable the JIT compiler, very slow

—exec-area <size> : Set the exec area size (default: 64 Mb)

—idle-pc <pc> : Set the idle PC (default: disabled)

—timer-itv <val> : Timer IRQ interval check (default: 1000)

-i <instance> : Set instance ID

-r <ram_size> : Set the virtual RAM size (default: 256 Mb)

-o <rom_size> : Set the virtual ROM size (default: 4 Mb)

-n <nvram_size> : Set the NVRAM size (default: 128 Kb)

-c <conf_reg> : Set the configuration register (default: 0x2102)

-m <mac_addr> : Set the MAC address of the chassis

(default: automatically generated)

-C <cfg_file> : Import an IOS configuration file into NVRAM

-X : Do not use a file to simulate RAM (faster)

-G <ghost_file> : Use a ghost file to simulate RAM

-g <ghost_file> : Generate a ghost RAM file

—sparse-mem : Use sparse memory

-R <rom_file> : Load an alternate ROM (default: embedded)

-k <clock_div> : Set the clock divisor (default: 4)

-T <port> : Console is on TCP <port>

-U <si_desc> : Console in on serial interface <si_desc>

(default is on the terminal)

-A <port> : AUX is on TCP <port>

-B <si_desc> : AUX is on serial interface <si_desc>

(default is no AUX port)

—disk0 <size> : Set PCMCIA ATA disk0: size (default: 64 Mb)

—disk1 <size> : Set PCMCIA ATA disk1: size (default: 0 Mb)

-t <npe_type> : Select NPE type (default: «npe-200»)

-M <midplane> : Select Midplane («std» or «vxr»)

-p <pa_desc> : Define a Port Adapter

-s <pa_nio> : Bind a Network IO interface to a Port Adapter

-a <cfg_file> : Virtual ATM switch configuration file

-f <cfg_file> : Virtual Frame-Relay switch configuration file

-E <cfg_file> : Virtual Ethernet switch configuration file

-b <cfg_file> : Virtual bridge configuration file

-e : Show network device list of the host machine

<si_desc> format:

«device{:baudrate{:databits{:parity{:stopbits{:hwflow}}}}}}»

<pa_desc> format:

«slot:sub_slot:pa_driver»

<pa_nio> format:

«slot:port:netio_type{:netio_parameters}»

Available C7200 NPE drivers:

* npe-100

* npe-150

* npe-175

* npe-200

* npe-225

* npe-300

* npe-400

* npe-g1 (NOT WORKING)

* npe-g2 (NOT WORKING)

Available C7200 Port Adapter (PA) drivers:

* C7200-IO-FE

* C7200-IO-2FE (NOT WORKING)

* C7200-IO-GE-E (NOT WORKING)

* PA-FE-TX

* PA-2FE-TX (NOT WORKING)

* PA-GE (NOT WORKING)

* PA-4E

* PA-8E

* PA-4T+

* PA-8T

* PA-A1

* PA-POS-OC3

* PA-4B (NOT WORKING)

* PA-MC-8TE1 (NOT WORKING)

Available NETIO types:

* unix : UNIX local sockets

* vde : Virtual Distributed Ethernet / UML switch

* tap : Linux/FreeBSD TAP device

* udp : UDP sockets

* tcp_cli : TCP client

* tcp_ser : TCP server

* linux_eth : Linux Ethernet device

* gen_eth : Generic Ethernet device (PCAP)

* fifo : FIFO (intra-hypervisor)

* null : Null device

 

Запустим с7200 с параметрами по умолчанию:

keiz@vkeiz:~/cisco$ dynamips c7200.image

Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)

Copyright (c) 2005-2007 Christophe Fillot.

Build date: May 9 2009 18:06:28

IOS image file: c7200.image

CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.

NVRAM is empty, setting config register to 0x2142

C7200 instance ‘default’ (id 0):

VM Status : 0

RAM size : 256 Mb

IOMEM size : 0 Mb

NVRAM size : 128 Kb

NPE model : npe-200

Midplane : vxr

IOS image : c7200.image

Loading ELF file ‘c7200.image’…

ELF entry point: 0x80008000

C7200 ‘default’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.

ROMMON emulation microcode.

Launching IOS image at 0x80008000…

Restricted Rights Legend

Use, duplication, or disclosure by the Government is

subject to restrictions as set forth in subparagraph

(c) of the Commercial Computer Software — Restricted

Rights clause at FAR sec. 52.227-19 and subparagraph

(c) (1) (ii) of the Rights in Technical Data and Computer

Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.

170 West Tasman Drive

San Jose, California 95134-1706

Cisco IOS Software, 7200 Software (C7200-JK9S-M), Version 12.4(13b), RELEASE SOFTWARE (fc3)

Technical Support: http://www.cisco.com/techsupport

Copyright (c) 1986-2007 by Cisco Systems, Inc.

Compiled Wed 25-Apr-07 03:18 by prod_rel_team

Image text-base: 0x60008F10, data-base: 0x628D6000

 

This product contains cryptographic features and is subject to United

States and local country laws governing import, export, transfer and

use. Delivery of Cisco cryptographic products does not imply

third-party authority to import, export, distribute or use encryption.

Importers, exporters, distributors and users are responsible for

compliance with U.S. and local country laws. By using this product you

agree to comply with applicable laws and regulations. If you are unable

to comply with U.S. and local laws, return this product immediately.

A summary of U.S. laws governing Cisco cryptographic products may be found at:

http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

If you require further assistance please contact us by sending email to

export@cisco.com.

Cisco 7206VXR (NPE200) processor (revision B) with 245760K/16384K bytes of memory.

Processor board ID 4294967295

R5000 CPU at 200MHz, Implementation 35, Rev 1.2

6 slot VXR midplane, Version 2.1

Last reset from power-on

—————————————————————

This Version of Cisco IOS Software is not supported on NPE200.

Please select a version of Cisco IOS software compatible with

this processor from http://www.cisco.com.

Number of Fast PAs = 1

Number of Fast+Medium PAs = 1

Total number of PA bandwidth points consumed = 200

Please refer to the following document «Cisco 7200 Series Port Adaptor

Hardware Configuration Guidelines» on Cisco.com <http://www.cisco.com>

for c7200 bandwidth points oversubscription and usage guidelines.

1 FastEthernet interface

125K bytes of NVRAM.

4096K bytes of packet SRAM memory.

65536K bytes of ATA PCMCIA card at slot 0 (Sector size 512 bytes).

8192K bytes of Flash internal SIMM (Sector size 256K).

далее идет диалог настройки, но в плане настроек Dynamips не очень удобен, чтобы воссоздать на его основе сеть из нескольких маршрутизаторов придется не много повозиться.

Для облегчения нам задачи воспользуемся утилитой , который является текстовым фронт-эндом к Dynamips. Используя простой файл описания виртуальной среды, легко можно соединить несколько устройств. Самое главное, что все установки собраны в одном месте, имеют простой синтаксис и легко редактируются:

Создадим файл с настройками:

keiz@vkeiz:~/cisco$ nano virt_router.net

В несем в него следующее содержание

# Описание узла, на котором установлен Dynamips

[localhost]

# Тип роутера

[[7200]]

#Путь к ios-файлу

image = /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin

#Общие параметры, в данном случае платформа и RAM, при необходимости внутри роутера можно указать специфические настройки

npe = npe-400

ram = 160

# Первый роутер

[[Router R1]]

# Указываем подключение, в нашем случае интерфейс Serial1/0 на R1 будет подключен к Serial1/0 R2

s1/0 = R2 s1/0

[[Router R2]]

# Оставляем все по умолчанию

Это простейший пример, чтобы понять суть настроек.

 

Сначала запускаем dynamips в режиме гипервизора (после отладки можно стартануть в фоне, добавив ‘&’):

keiz@vkeiz:~/cisco$ sudo dynamips -H 7200

[sudo] password for keiz:

Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)

Copyright (c) 2005-2007 Christophe Fillot.

Build date: May 9 2009 18:06:28

Hypervisor TCP control server started (port 7200).

 

Все хорошо, теперь стартуем в фоне:

keiz@vkeiz:~/cisco$ sudo dynamips -H 7200 &

[2] 1893

keiz@vkeiz:~/cisco$ Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)

Copyright (c) 2005-2007 Christophe Fillot.

Build date: May 9 2009 18:06:28

ILT: loaded table «mips64j» from cache.

ILT: loaded table «mips64e» from cache.

ILT: loaded table «ppc32j» from cache.

ILT: loaded table «ppc32e» from cache.

Hypervisor: unable to create TCP sockets.

Shutdown in progress…

Shutdown completed.

Shutdown in progress…

Shutdown completed.

CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.

NVRAM is empty, setting config register to 0x2142

C7200 instance ‘R1’ (id 0):

VM Status : 0

RAM size : 160 Mb

IOMEM size : 0 Mb

NVRAM size : 128 Kb

NPE model : npe-400

Midplane : vxr

IOS image : /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin

Loading ELF file ‘/home/keiz/cisco/c7200-jk9s-mz.124-13b.bin’…

ELF entry point: 0x80008000

C7200 ‘R1’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.

CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb.

NVRAM is empty, setting config register to 0x2142

C7200 instance ‘R2’ (id 1):

VM Status : 0

RAM size : 160 Mb

IOMEM size : 0 Mb

NVRAM size : 128 Kb

NPE model : npe-400

Midplane : vxr

IOS image : /home/keiz/cisco/c7200-jk9s-mz.124-13b.bin

Loading ELF file ‘/home/keiz/cisco/c7200-jk9s-mz.124-13b.bin’…

ELF entry point: 0x80008000

C7200 ‘R2’: starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.

 

Теперь Dynagen:

keiz@vkeiz:~/cisco$ sudo aptitude install dynagen

keiz@vkeiz:~/cisco$ dynagen virt_router

Reading configuration file…

*** Warning: Starting R1 with no idle-pc value

*** Warning: Starting R2 with no idle-pc value

Network successfully loaded

Dynagen management console for Dynamips and Pemuwrapper 0.11.0

Copyright (c) 2005-2007 Greg Anuzelli, contributions Pavel Skovajsa

=> <мы_в_консоли_управления_нашим_cisco_устройством>

Мы в консоли управления нашим cisco устройством.

 

 

 

 

 

После загрузки образов (процесс будет выводиться в консоли, где запущен dynamips) и настроек виртуальных роутеров получим приглашение консоли управления. Введя знак вопроса или help, получим справку по командам. Набрав «help команда«, узнаем обо всех параметрах конкретной команды. Поддерживается автодополнение ввода при помощи клавиши <Tab>. Для остановки, запуска, перезапуска, приостановки и продолжения применяем команды start, stop, reload, suspend, resume с указанием имени роутера или ключа /all для всех устройств:

=> reload R1

Все команды регистрозависимы, поэтому нужно быть внимательнее.

Просмотрим список работающих маршрутизаторов:

=> list

Name Type State Server Console

R1 7200 running localhost:7200 2000

R2 7200 running localhost:7200 2001

=>

Подключимся к нашей виртуальной cisco с использованием утилиты telnet:

keiz@ekz:~$ telnet 192.168.1.37 2000

Trying 192.168.1.37...

Connected to 192.168.1.37.

Escape character is '^]'.

Connected to Dynamips VM "R1" (ID 0, type c7200) - Console port

Можем подключиться к порту, указанному в поле Console. Хотя проще подключиться, указав имя устройства в строке приглашения Dynagen:

=> telnet R1

В отдельном окне откроется окно терминала, в котором уже управляем настройками.

Несколько виртуальных маршрутизаторов могут нехило загрузить систему. Причем вне зависимости от реально выполняющейся работы. Это происходит потому, что Dynamips не знает, когда роутер выполняет полезную работу, а когда находится в режиме ожидания.

Команда idlepc позволяет проанализировать IOS-образы в действии и определить циклы простоя. При первом запуске значение не установлено:

*** Warning: Starting R1 with no idle-pc value

Нужное имя устройства idle-pc можно получить, введя в консоли dynagen команду «idlepc get имя_роутера«:

=> idlepc get R1

Будет выдано несколько значений, наиболее оптимальные отмечены знаком «*». Далее выполнение команды остановится, и потребуется ввести одну из цифр, соответствующих выбранному idlepc. После этого его значение будет добавлено к выполняющемуся процессу. При запуске Dynamips вручную значение idlepc указывается при помощи параметра ‘--idle-pc=‘, как вариант, в секции роутера конфига Dynagen дописываем:

idlepc = 0x6076a394

Но лучше просто сохранить значение, чтобы оно считывалось при последующих загрузках:

=> idlepc save R1 db

Повторно просмотреть весь список idlepc просто:

=> idlepc show R1

На этом ознакомительная часть закончено. Все, маршрутизатор можно настраивать.

2 комментария

  1. Здравствуйте! Спасибо за очень информативную статью. Подскажите пожалуйста, каким образом я могу соединить эмулируемый роутер и виртуальную машину Qemu? Хотел бы увидеть пример с использованием udp сокетов на конкретном порту роутера. Спасибо!

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

10 − 8 =