Что такое IOU
IOU эмулятор сети, который позволяет смоделировать виртуальную сеть из маршрутизаторов и коммутаторов. Незаменимый инструмент для подготовки к CCIE и сетевого траблшутинга. Как видно из названия IOU (IOS over Unix) ставится поверх UNIX. Раньше это был только Solaris, теперь же поддерживается и Linux.
Самые существенные его плюсы:
- Практически полноценная поддержка как L3, так и L2. Этот эмулятор используется при сдаче лабораторных экзаменов CCIE.
- Низкие требования к ресурсам ПК.
- Нет ограничений по платам и интерфейсам. В настройках вы просто указываете сколько и чего вы хотите.
Данная статья посвящена созданию собственного виртуального стенда для подготовки к лабораторной работе CCIE RS/CCIE SP или CCIE Security (при соответствующем дополнении).
Как известно подготовка к экзамену CCIE является своеобразным подвигом в сетевом мире. Для успешной сдачи кандидат должен вложить уйму ресурсов: времени и денег.

Прежде чем поставить задачу и начать её выполнение стоит упомянуть, что использование IOU не законно, если ты не сотрудник Cisco. Даже для обучения. По этой причине сами образ L2IOU и L3IOU не предоставляются. При желании вы можете найти их в Интернете.
Задача статьи: организовать учебный стенд используя топологию INE и веб интерфейс для IOU.
Ставим виртуальную машину
Для начала нам понадобится vmware player для установки нашей виртуальной машины. Скачать можно с сайта VmWare . Так же подойдет Workstation или vsphere
После установки vmware player необходимо скачать виртуальную машину WEB-IOU. Далее - распаковать архив и открыть при помощи VmWare Player файл .ovf из распакованного архива.
Нажать Import и согласиться с лицензией. Теперь нужно увеличить объём оперативной памяти нашей виртуальной машины. По умолчанию установлено 1Гб. Для стенда INE из тринадцати устройств необходимо 4Гб. Это делается в настройках импортированной виртуальной машины.
Далее проверяем, что в .vmx файле виртуальной машины стоит параметр
rtc.diffFromUTC=0
Если он отсутствует, просто добавляем его. После чего запускаем виртуалку. Как видно в экране загрузки, нас встречает Centos 6.4. По запросу придумываем и вводим пароль для пользователя root
А также имя машины и домен хоста.
Далее настройка IP адреса машины - можно использовать DHCP или статический адрес. Адрес задаете из той же сети, в которой находится ваш PC. Например, если адрес сетевого (проводного или беспроводного) интерфейса - 192.168.0.150/24, то адрес для вирутальной машины можно указать, например 192.168.0.10/24 и шлюз указываем тот же самый, что и у вашего компьютера. По умолчанию интерфейс виртуальной машины бриджируется с физическим интерфейсом PC. Это всегда можно изменить и настроить соответственно.
После первоначальной настройки виртуальная машина перезагрузился.
Обновление до последней версии WEB-OIU
После установки Виртуальной машины, зайдите на нее под пользователем root и выполните обновление web-iou с текущей версии до последней. На сегодняшний день это 1.2.2.21, командой
# yum update iou-web
Если интернет с виртуальной машины не доступен, то IOU-WEB можно обновить, скачав последние репозитарии с сайта разработчика
http://public.routereflector.com/iou-web/yum/
http://public.routereflector.com/iou-web/apt/
Теперь c помощью браузера можно зайти на наш веб интерфейс. Вводим в строке браузера адрес виртуальной машины (http://192.168.0.10/) и мы увидим интерфейс IOU
Добавляем образы IOU
Нам необходимо для работы два образа. L2 и L3. Cisco идет в ногу со временем, и эти два уровня не разделяются явно на канальный и сетевой. В данный момент L3 более или менее соответствует маршрутизатору уровня ISR, а L2 – мультилеер коммутатору уровня 3560. Самая свежая версия на сегодня это IOS 15.2 для маршрутизаторов и IOS 15.1 для свичей.
- L2 — i86bi_linux_l2-ipbasek9-ms.jan24-2013-B
- L3 — i86bi_linux-adventerprisek9-ms.152-4.M1
Образы добавляются на вкладке Manage->Manage IOSes. В поле "Filename" указываем полное имя файла образа, например i86bi_linux_l2-ipbasek9-ms.jan24-2013-B, в поле "Alias" указываем короткое имя для удобства, которое будет потом показывается во время создания топологии, например L2 15.1. Нажав open выбираем файл IOU с жесткого диска на нашем компьютере (не на виртулке) и нажимаем кнопку «upload», которая загрузит IOU в виртуальную машину, в каталог /opt/iou/bin.
Успешно импортированный образ должен появиться внизу экрана. Такую операцию нужно проделать с L3 образом аналогично.
Можно переходить к использованию.
Но если попробовать запустить какую-либо топологию, то получим сообщение об ошибке “you must fill license file (/opt/iou/bin/iourc) before starting devices”.
Как пишет автор веб интерфейса – обратитесь к своему начальнику в отделе Cisco для получения лицензии. IOU заглядывает в файл iourc при каждом запуске на предмет лицензионного ключа.
В двух словах о лицензировании.
Лицензия состоит из ключа, который использует информацию о текущем хосте, при попытке переместить или скопировать на другой хост, использование IOU становится невозможным. Но в реальности всё обстоит несколько иначе.
Скрипт для генерирования лицензий был написан пользователем Kel в 2011 году. Он портировал на питон оригинальный код, написанный на С в 2006-м году. Сам скрипт приводится в конце статьи.
Качаем скрипт ключа CiscoIOUKeygen.py и при помощи удобной утилиты winscp копируем его на виртуалку в папку /opt/iou/bin при помощи SSH. Далее выставляем права на скрипт 755 и запускаем:
[root@iou bin]# cd /opt/iou/bin
[root@iou bin]#chmod 0755 CiscoIOUKeygen.py
[root@iou bin]# ./CiscoIOUKeygen.py
Вывод вида:
[license]
iou.example.com = 145ef75ad4ea0ebd;
Вставляем в файл /opt/iou/bin/iourc или просто скопировать и вставить в разделе Manage –> Manage license
Импортируем топологию INE
Качаем архив топологии:
Внимание! У вас нет прав для просмотра скрытого текста.
На вкладке Manage->Import labs подкидываем архив (не распаковываем!).
Теперь на главной странице нам доступна лабораторная работа INE RS Rack. Нажимаем кнопку Edit справа и добавляем образы IOU в топологию в поле IOS.
Тут так же можно изменить startup config на устройствах.:
На вкладке Devices, нажимаем кнопку «start all devices». Зеленый цвет на устройствах покажет нам, что все прошло успешно.
Теперь можно получить доступ ко всем устройствам. Однако по умолчанию клик на устройствах будет приводить к запуску стандартного telnet клиента. Это не очень удобно, особенно если учесть что в последних версиях Windows он уже не предустановлен. Гораздо привычнее использовать PuTTY или SecureCRT
Мне удобнее использовать SecureCRT, поэтому в настройках Global Options -> Terminal -> Web Browser нажать кнопку Telnet: Make SecureCRT Your Default Telnet Application. Далее, так как очень неудобно открывать консоли роутеров каждый раз в новом окне, то редактируем Global Options SerureCRT. Как правило файл Global.ini находится в директории C:\Users\\AppData\Roaming\VanDyke\Config и меняем
D:«Single Instance»=00000000
на
D:«Single Instance»=00000001
А теперь переходим к самому интересному – создаем свою топологию.
Создаем свою топологию в IOU
Для того чтобы создать новый стенд/лабораторию, нужно зайти в раздел Laboratories и нажать на Add new Lab.
Откроется страница на которой нужно будет заполнить следующие поля:
- Name, Description — имя и описание играют чисто информационную роль
- Time — обратный отчет который можно установить, вероятно, имеет смысл при подготовке к CCIE.
- Display diagram? — если включено, то будет показана топология со всеми устройствами (которые можно перетягивать курсором), если выключить, то останутся только “активные изображения” — это фиксированные схемы с кликабельными устройствами (с нарисованными областями, номерами портов и прочим)
- Additional Info — здесь можно написать вопросы, или какой-либо другой текст
- Netmap — именно здесь задаются соединения между устройствами.
Здесь стоит сделать небольшое отступление и рассмотреть несколько особенностей IOU. IOU L3 поддерживает два сетевых модуля NM-4E и NM-4T — для Ethernet и Serial соответственно. При выборе обоих модулей первым всегда идет Ethernet. IOU L2 – поддерживает только Ethernet.
К примеру, на роутере, один NM-4E и один NM-4T выглядит как: e0/0-0/3, s1/0-1/3 , т.е номер слота/номер порта. Как можно заметить — это практически стандартное именование интерфейсов Cisco.
В карте Netmap создаются текстовые строки, каждая из которых представляет собой начало и конец линка, соединяющего пару устройств.
Предположим мы хотим создать следующий стенд:
Маршрутизаторы R1, R2 и R3 укомплектованы по одному модулю NM-4E и одному NM-4T. FrameRelay Switch (FR1) - это ротутер который укомплектован только модулями NM-4T (двумя).
Тогда синтаксис для netmap будет следующий:
1:0/0 2:0/0
1:1/0 3:1/0
1:1/1 5:0/0
1:0/1 4:0/0
2:0/1 4:0/1
3:1/1 5:0/1
Первой цифрой идет ID устройства (произвольное значение, которое играет скорее информационную роль, хорошая идея чтобы оно совпадало с номером устройства в имени) и затем через двоеточие указывается номер слота/номер порта начала линка. Затем, через пробел, указывается ID устройства и номер слота/номер порта конца линка.
Внимание: IOU не проверяет корректность синтаксиса, поэтому при ошибках вы в лучшем случае получите соединенные Ethernet с Serial интерфейсами, а в худшем соединение не с тем устройством с которым оно ожидается.
В данном примере первая строка означает, что R1 Ethetnet 0/0 соединятся с R2 Ethernet 0/0. Помним, что при наличие Ethernet и Serial модулей, Ethernet выбирается первым, т.е нулевой слот.
Вторая строка означает, что роутер R1 (Serial 1/0) имеет линк с Serial 1/0 роутера R3. Так как R1 и R3 имеют по одному Ethernet модулю, то модули Serial находятся в слоте 1. Если бы в роутере стояло два модуля Ethernet, то они бы занимали слоты 0 и 1, а Serial - соответственно 2 и 3.
Третья строка означает, что R1 с интерфейса Serial1/1 имеет линк к ротуеру с ID =5 (на схеме FR1) Serial0/0. Ранее мы указали, что FrameRelay Switch (FR1) - роутер, который не имеет Ethernet карт, и поэтому Serial интерфейсы начинаются с 0/0.
После только как мы создали карту нажимаем кнопку Add. В результате выпадет еще окно настроек.
Вот именно здесь мы указываем тип устройства, которое соответствует выбранному ранее ID и количество Eth и Ser модулей в нем. Если оставить поля Eth и Ser пустыми — будет добавлено по 2 модуля NM, т.е два модуля NM-4E и два NM-4T, - всего по восемь интерфейсов того и иного типа.
Поэтому задавайте количество модулей в соответствие своей карте. Еще раз напомним, что Ethernet всегда предпочтительней Serial и выбирается первым, т.е нулевой слот. Если у нас по одному модулю, то Ethernet интерфейсы нумеруются в карте как 0/0-0/3, а Serial - как 1/0 - 1/3, если по два модуля, то Ethernet интерфейсы нумеруются в карте как 0/0-0/3 и 1/0 - 1/3, а Serial - как 2/0-2/3 и 3/0 - 3/3.
Далее видим настройку L2 keepalive — эта технология исправляет ситуацию когда интерфейс в состоянии up, даже если на другом конце все выключено. Работает только в чисто свичовых лабах, в смешанных топологиях рекомендуется не включать. L3IOU образы не запустятся, если данная опция включена.
Watchdog — автор iou-web крайне рекомендует оставлять всегда включенным. У процессоров Cisco есть таймеры, защищающие систему от некоторых типов зависаний. CPU периодически сбрасывает таймер watchdog. Таймер watchdog в основном контролирует время каждого процесса. Если длительность выполнения процесса больше, чем должна быть, таймер watchdog применяется для завершения процесса.
Затем идет выпадающий список позволяющий выбрать тип устройства и соответствующее изображение.
Опция — Boot delay — позволяет задать задержку в секундах до запуска, например можно выставить чтобы все устройства начали запускаться сразу, а некоторые маршрутизаторы через 20 секунд.
И последняя опция Initial Config — напрямую зависит от Initial Config Pack — и пока будет оставлена без изменений.
Кроме того, внизу еще идет раздел Images, который позволяет загружать свои изображения в формате png. Например, можно рисовать схемы в Visio и затем их подгружать в стенды. Именно так и сделан стенд INE 5.0 CCIE RS
Жмем Save и переходим в свеже-созданный стенд нажатием на нем.
На вкладке Diagram — можно разместить устройства по вкусу и сохранить расположение. А на вкладке Devices и происходит основное управление
Нажатием на кнопку Start all devices можно, собственно, и запустить стенд. Устройства сменят свой цвет с красного на зеленый. Если что-то пошло не так (устройство осталось красным), то смотрите логи в разделе Downloads -> Logs.
Теперь после нажатия на кнопку open console возле каждого устройства будет открываться окно терминала SecureCRT или Putty.
Нажав на иконку с изображением Wireshark, можно запустить сниффинг трафика. Забирать сохраненные pcap файлы можно в разделе Downloads -> Sniffer. Однако, снифер корректно работает только для Ethernet интерфейсов. Для Serial - пакеты получаются битые.
При желании можно сконфигурировать все устройства, сохранить настройки командой wr, и затем на каждом устройстве набрать copy running-config unix:, для того чтобы сохранить конфиги на диск.
Затем нажать кнопку Copy all unix://running-config files to database, для того чтобы экспортировать все конфиги. И теперь можно зайти в раздел Laboratoriesи увидеть свежесозданный конфиг пак.
Этот файл будет называться так же как и сам стенд, но только без описания.
IOU в настоящей сети
Теперь попробуем вывести все это в реальную сеть. Для этого в IOU используется понятия Облака (до 8-ми штук). Зайдем в режим редактирования лаборатории. Возьмем маршрутизатор R1, модуль Ethernet.
Для Облака наглядно использовать большие значения ID, например 800 Допишем одну строку в поле NETMAP:
1:0/2 800:0/0
Save и переходим в уже знакомый расширенный режим редактирования. Имя указывается произвольное, поле IOS нужно оставлять empty.
В поле Ethernet набираем eth1, в случае если eth1 это виртуальный сетевой адаптер который в режиме моста смотрит в существующую сеть. Затем выбрать Picture — Cloud (это достаточно важно).
И, собственно, сохраняем результат и запускаем все устройства.
Заключение
С появлением версии под linux и веб-фронтенда, работа с IOU не представляет особой сложности, все реализовано достаточно логично.
Во многих случаях этот эмулятор оставляет далеко позади GNS/Dynamips, особенно когда идет речь об канальном уровне и коммутаторах.
Также IOU значительно менее ресурсоемок, чем GNS. INE CCIE RS стенд из 13 устройств занимает примерно 1.5Г памяти (по сравнению с 3Г в GNS) и почти 0% загрузки CPU. А стенд CCIE Troubleshooting из 41 устройства укладывается примерно в 3Г и 13% CPU.
К сожалению под IOU отсутствуют образы ASA. Но это проблема легко решается стыковкой IOU c GNS через Cloud. На GNS запускаем образы ASA, а на IOU - роутеры и свичи и получаем полноценный стенд CCIE Security :)
IOU по прежнему остается лучшим инструментом как для подготовки к CCNP/CCIE, так и для траблшутинга.
Внимание! У вас нет прав для просмотра скрытого текста.
Разработка данного Эмулятора прекращена. Развитие в новом проекте UNetLab с которым можно ознакомится с статье
Эмулятор UNetLab для CCNP/CCIE
При подготовке статьи также использовались материалы сайтов:
http://www.routereflector.com/
http://linkmeup.ru
http://habrahabr.ru/post/196228/