Лабораторная работа №5. Создание программно-конфигурируемой сети
Теоретические сведения
Работа с эмулятором mininet
Виртуальное окружение mininet является симулятором топологии на виртуальных хостах. Это виртуальная машина для системы Oracle VirtualBox, которая заранее готова к работе. Исходный материал с полной документацией можно найти на сайте Openflow.org, а полный учебник по работе с mininet и образ для виртуальной машины - по адресу: http://www.openflow.org/wk/index.php/OpenFlow Tutorial.
Mininet — это образ Ubuntu с уже установленными контроллером, пакетным перехватчиком и эмулятором mininet. Установим образ на Virtualbox (рисунок 31).

Рисунок 31 - Создание виртуальной машины
После запуска VirtualBox необходимо нажать кнопку создать (поле 1 на рисунке 31), написать название виртуальной машины и выбрать тип Linux-Ubuntu, как показано в поле 2 рисунка 31. Объем памяти установить не менее 512Мб (поле 3), для жетского диска установить значение «Использовать существующий жесткий диск» (поле 4), нажать кнопку выбора файла (поле 5). Необходимо выбрать скачаный образ Mininet и нажать кнопки «Открыть», потом «Создать».
После создания необходимо настроить на виртуальной машине интерфейсы, через которые можно открывать ssh сессии.
Для этого в VirtualBox выделяем виртуальную машину с mininet, нажимаем кнопку «Настроить» (рисунок 32), далее на вкладке «Сеть» (поле 1 рисунка 32) выбираем вкладку «Адаптер 2» (поле 2) и ставим галку напротив «Включить сетевой адаптер» (поле 3). Затем из выпадающего списка (поле 4) выбираем «Внутренняя сеть».

Рисунок 32 - Настройка адаптера 2 виртуальной машины
После этого, для возможности доступа к Интернет и внутренней сети необходимо настроить адаптер 1 (рисунок 33). В вкладке сверху (поле 1) выбрать «Адаптер 1», затем тип адаптера - «Сетевой мост» (поле 2), в выпадающем списке физических адаптеров (поле 3) выбрать нужный (Ethernet или WiFi адаптер). После настройки необходимо применить параметры нажатием кнопки «Ок».
Теперь необходимо запустить виртуальную машину двойным щелчком мыши на названии виртуальной машины. После запуска (рисунок 34) будет доступна консоль Linux.

Рисунок 33 - Настройка адаптера 2 виртуальной машины
Необходимо ввести логин и пароль по умолчанию, для 32-битного образа пользователь openflow пароль openflow, для 64-битного образа это соответственно (mininet, mininet). Обратите внимание, что при вводе пароля символы не отображаются.

Рисунок 35 - Проверка сетевых параметров виртуальной машины

Рисунок 34 - Внешний вид консоли виртуальной машины Для проверки сетевых интерфейсов необходимо использовать команду «ifconfig -а» (рисунок 35).
Если адресов нет, как на рисунке 35, необходимо выполнить команду на получение адресов через DHCP «sudo dhclient ethO», «sudo dhclient ethl» в соответствии с именами интерфейсов. После выполнения необходимо проверить факт получения адресов (рисунок 36 поле 1).

Рисунок 36 - Местонахождение адреса в выводе команды ifconfig
После этого можно подключиться любым SSH клиентом, например PUTTY (рисунок 37).
Адрес в поле 1 должен соответствовать адресу в выводе команды «ifconfig», как на рисунке 6 поле 1. Тип протокола - SSH (поле 2). После нажатия кнопки «Open» откроется окно (рисунок 38) с предложением ввести логин и пароль.
Для полноценного использования необходимо установить графическую среду. Это происходит только при подключении к Интернет. Если в сети не используется прокси-сервер, то можно просто приступать к выполнению команд установки, иначе необходимо прописать прокси-сервер, перед этим войти в режим root командой «sudo su», ввести пароль и выполнить команды:
«export ЬПр_ргоху=«Ьир://адрес_сервера:порт_сервера» и «export Йр_ргоху=«Ьир://адрес_сервера:порт_сервера».

Рисунок 37 - Настройка SSH клиента

Рисунок 38 - Подключение no SSH
Если прокси сервер требует авторизацию, то команда будет выглядеть как «export Ьир_ргоху=«ЬЦр://логин:пароль@адрес_сервера:порт_сервера» и «export Йр_ргоху=«Ьир://логин: пароль@адрес_сервера: порт_сервера».
После настройки можно запустить установку графического интерфейса командой «sudo apt-get update» и «sudo apt-get install xinit flwm»
Графический интерфейс можно запустить только из самой виртуальной машины, но не из SSH клиента.
Для работы с mininet можно использовать следующие ключи запуска (см. таблицу 4).
Таблица 4 - Ключи запуска mininet
Команда |
Действие |
1 |
2 |
-h, —help |
Вывод справки |
—switch= |
Выбор типа программно-управляемого коммутатора. Варианты: [kernel user ovsk] |
-host= |
Задает адрес запуска mininet |
-controller |
Задает тип контрооллера. Варианты: [nox_dump none ref remote nox_pysw] |
-topo= |
Задает параметры топологии. Варианты: [tree reversed single linear minimal] через запятую могут указываться аргументы ,argl,arg2,...argN |
-c, -clean |
Закрывает mininet и очищает все виртуальные машины |
-mac |
Включает формирование разных MAC адресов для хостов |
-x, —xterms |
Запустить консоли в графическом режиме для каждого хоста |
-arp |
Заранее установить агр записи в хосты в статичном режиме |
-ip= |
Адрес контроллера |
1 |
2 |
-port= |
Порт контроллера |
-prefixlen= |
Длина маски для автоматического распределения адресов |
Например, для создания топологии, показанной на рисунке 39, необходимо выполнить следующую команду:
sudo mn -topo single,3 --mac --switch ovsk —controller remote

Рисунок 39 - Топология с 3 узлами и 1 коммутатором
При входе в mininet отображается консоль управления, начинающаяся со
строки «mininet».
Список команд представлен в таблице 5.
Таблица 5 - Список команд управления mininet
Команда |
Описание |
1 |
2 |
dump |
Отображает все IP адреса устройств, их интерфейсы |
intfs |
Отображает список интерфейсов устройств |
iperf |
Измеряет производительность обмена по TCP между первым и последним хостом |
iperfudp |
Измеряет производительность обмена по UDP между первым и последним хостом |
net |
Показывает схему соединений устройств |
link |
Позволяет создать новую связь. Синтаксис: «link устройство 1 устройство2 [upldown]» |
nodes |
Показывает список устройств |
noecho |
Выполняет команду, но не отображает информацию о результате |
pingpair |
Посылает ICMP пакеты между первыми двумя хостами |
pingall |
Посылает несколько ICMP пакетов между всеми хостами по очереди и показывает результат |
РУ |
Выполняет любую команду на языке Python |
quit, exit |
Закрывает mininet |
1 |
2 |
source |
Читает список команд из указанного после команды файла |
xterm, gterm |
Открывает в графическом режиме отдельное окно с консолью соответствующего хоста. Синтаксис команды: «xterm узел1 узел2 ...». Команды работают только в графическом режиме виртуальной машине (см. рисунок 17) |
sh |
Выполняет произвольную команду в операционной системе |
dpctl |
Выполняет внешнее управление коммутаторами, синтаксис будет рассмотрен ниже. |
ifconfig |
Настраивает сетевые параметры указанного перед командой хоста. Синтаксис команды: «хост1 ifconfig параметры» |
ping |
Выполняет команду ping на указанном хосте. Синтаксис команды «хост! ping хост2» |
Для получения помощи по командам можно воспользоваться знаком «?» (рисунок 40), для подробной помощи можно набрать «help команда».

Рисунок 40 - Список и синтаксис команд mininet
При необходимости использовать графический интерфейс (для команд xterm, gterm) необходимо запустить его командой «startx» (рисунок 41), после запуска нажать правой кнопкой мыши на пустом месте рабочего стола и выбрать «Open Terminal Неге» для запуска консоли. В консоли графического режима можно работать гак же, как и в текстовом режиме.

Рисунок 41 - Графический режим
Для запуска консоли виртуального хоста необходимо использовать команду xterm. Она запускает отдельное окно с консолью, в которой находится полноценный Linux на виртуальной машине (рисунок 42).

Рисунок 42 - Консоль xterm виртуального хоста
Весь набор команд Linux работает в этой консоли, включая ifconfig, ping, iperf, vi, sh и т.д.
По умолчанию, если не используется внешний контроллер (нет параметра «-- controller=remote»), коммутатором можно управлять через команду «dpctl», рассмотренной в следующем разделе.