Введение в средство натурного моделирования Mininet.
1 Настройка стенда виртуальной машины Mininet
1.1 Общая информация
- Репозиторий Mininet: https://github.com/mininet/mininet
- Образ виртуальной машины: mininet-2.3.0-210211-ubuntu-20.04.1-legacy-server-amd64-ovf
1.2 Настройка образа
1.2.1 VirtualBox
- Распакуйте скачанный образ.
- Импортируйте файл
.ovf
. - Перейдите в настройки.
- Добавьте дополнительный сетевой адаптер host-only network adapter, который вы можете использовать для входа в образ виртуальной машины.
1.3 Подключение к виртуальной машине
Залогиньтесь в виртуальной машине:
- login: mininet
- password: mininet
Посмотрите адрес машины:
ifconfig
- Внутренний адрес машины будет иметь вид 192.168.x.y.
Подключитесь к виртуальной машине (из терминала хостовой машины):
ssh -Y mininet@192.168.x.y
Настройте вход по ключу (см. Ключи ssh):
ssh-copy-id mininet@192.168.x.y
1.4 Настройка параметров XTerm
По умолчанию XTerm использует растровые шрифты, малого кегля.
Предлагается использовать векторные шрифты, кегль увеличить до 12–16 пунктов.
Для этого добавим в файл конфигурации
/etc/X11/app-defaults/XTerm
:xterm*faceName: Monospace xterm*faceSize: 14
- Здесь выбран системный моноширинный шрифт, кегль шрифта — 14 пунктов.
1.5 Настройка соединения X11 для суперпользователя
При попытке запуска приложения из-под суперпользователя возникает ошибка:
X11 connection rejected because of wrong authentication.
Ошибка возникает из-за того, что X-соединение выполняется от имени пользователя
mininet
, а приложение запускается от имени пользователяroot
с использованиемsudo
.Для исправления этой ситуации заполним файл полномочий
/root/.Xauthority
, используя утилитуxauth
.Для этого скопируем значение куки (MIT magic cookie) пользователя
mininet
в файл для пользователяroot
:mininet@mininet-vm:~$ xauth list $DISPLAY mininet-vm/unix:10 MIT-MAGIC-COOKIE-1 295acad8e35d17636924c5ab80e8462d mininet@mininet-vm:~$ sudo -i mininet@mininet-vm:~$ xauth list xauth: file /root/.Xauthority does not exist root@mininet-vm:~# xauth add mininet-vm/unix:10 MIT-MAGIC-COOKIE-1 24fa6c77c26e2073d5b0d95e574e2456 root@mininet-vm:~# xauth list $DISPLAY mininet-vm/unix:10 MIT-MAGIC-COOKIE-1 295acad8e35d17636924c5ab80e8462d
- Значение для MIT-MAGIC-COOKIE приведено условно.
После этого должны запускаться графические приложения.
1.6 Работа с Mininet из-под Windows
1.6.1 Варианты Xserver
- Использовать можно любой вариант Xserver.
VcXsrv Windows X Server
- Сайт: https://sourceforge.net/projects/vcxsrv/
- Лицензия: GPLv3.
- Компиляция: Visual C++ 2012 Express Edition
Xming X Server
- Сайт: http://www.straightrunning.com/XmingNotes/
- Лицензия:
- Public Domain Release: MIT
- Website Release: за загрузку новых выпусков необходимо вносить плату; приобретение лицензии дает пользователю доступ к новым загрузкам в течение одного года.
- Компиляция: MinGW, Pthreads-Win32.
1.6.2 Установка программного обеспечения
- Установите
putty
:choco install putty
- Установите VcXsrv Windows X Server
choco install vcxsrv
1.6.3 Запуск Xserver
- Запустите
XLaunch
. - Выберите опции:
- Multiple windows;
- Display number: -1;
- Start no client.
- Можно сохранить параметры, тогда при следующем запуске не нужно будет отмечать эти опции.
1.6.4 Запуск putty
- При подключении добавьте опцию перенаправления X11:
- Connection, SSH, X11 : Enable X11 forwarding.
2 Обновление версии Mininet
2.1 Настройка доступа к интернету
- Добавьте в настройках Virualbox интерфейс NAT.
- Загрузите виртуальную машину.
- Залогиньтесь в виртуальной машине:
- login: mininet
- password: mininet
- Посмотрите адрес машины:
ifconfig
- Должен быть активным адрес NAT:
10.0.0.x
. - Если вместо этого активен внутренний адрес машины вида
192.168.x.y
, то активируйте второй интерфейс наберите:sudo dhclient eth1 ifconfig
2.2 Обновление версии Mininet
- Переименуйте предыдущую установку Mininet:
mv ~/mininet ~/mininet.orig
- Скачайте новую версию Mininet:
cd ~ git clone https://github.com/mininet/mininet.git
- Обновите исполняемые файлы:
cd ~/mininet sudo make install
3 Основы работы в Mininet
3.1 Работа с Mininet с помощью командной строки
3.1.1 Вызов Mininet с использованием топологии по умолчанию
- Чтобы запустить минимальную топологию, введите команду:
sudo mn
- Эта команда запускает Mininet с минимальной топологией, состоящей из коммутатора, подключенного к двум хостам.
- Чтобы отобразить список команд интерфейса командной строки Mininet и примеры их использования, введите команду в интерфейсе командной строки Mininet:
help
- Чтобы отобразить доступные узлы, введите команду:
nodes
- Вывод этой команды показывает, что есть два хоста (хост
h1
и хостh2
) и коммутатор (s1
). - Иногда бывает полезно отобразить связи между устройствами в Mininet, чтобы понять топологию. Введите команду
net
в интерфейсе командной строки Mininet, чтобы просмотреть доступные линки:net
- Вывод этой команды показывает:
- Хост
h1
подключён через свой сетевой интерфейсh1-eth0
к коммутатору на интерфейсеs1-eth1
. - Хост
h2
подключён через свой сетевой интерфейсh2-eth0
к коммутатору на интерфейсеs1-eth2
. - Коммутатор
s1
:- имеет петлевой интерфейс
lo
. - подключается к
h1-eth0
через интерфейсs1-eth1
. - подключается к
h2-eth0
через интерфейсs1-eth2
.
- имеет петлевой интерфейс
- Хост
- Mininet позволяет выполнять команды на конкретном устройстве. Чтобы выполнить команду для определенного узла, необходимо сначала указать устройство, а затем команду, например:
h1 ifconfig
- Эта команда выполняет команду
ifconfig
на хостеh1
. Команда показывает интерфейсы хостаh1
. Показано, что хостh1
имеет интерфейсh1-eth0
, настроенный с IP-адресом10.0.0.1
, и другой интерфейсlo
, настроенный с IP-адресом127.0.0.1
. - Посмотрите конфигурацию всех узлов.
3.1.2 Проверка связности
- По умолчанию назначаются IP-адреса
10.0.0.1/8
и10.0.0.2/8
узламh1
иh2
соответственно. Чтобы проверить связь между ними, вы можете использовать командуping
. Командаping
работает, отправляя сообщения эхо-запроса протокола управляющих сообщений Интернета (ICMP) на удаленный компьютер и ожидая ответа. - Введите
h1 ping 10.0.0.2
- Эта команда проверяет соединение между хостами
h1
иh2
. Чтобы остановить тест, нажмитеCtrl+c
. - Остановите эмуляцию, набрав:
exit
- Заметим, что команда
sudo mn -c
часто используется в терминале для очистки предыдущего экземпляра Mininet (например, после сбоя).
3.2 Построение и эмуляция сети в Mininet с использованием графического интерфейса
3.2.1 Построение топологии сети
- Запустите MiniEdit:
sudo ~/mininet/mininet/examples/miniedit.py
- Основные кнопки:
Select
: позволяет выбирать/перемещать устройства. НажатиеDel
на клавиатуре после выбора устройства удаляет его из топологии.Host
: позволяет добавить новый хост в топологию. После нажатия этой кнопки щелкните в любом месте пустого холста, чтобы вставить новый хост.Switch
: позволяет добавить в топологию новый коммутатор. После нажатия этой кнопки щелкните в любом месте пустого холста, чтобы вставить переключатель.Link
: соединяет устройства в топологии. После нажатия этой кнопки щелкните устройство и перетащите его на второе устройство, с которым необходимо установить связь.Run
: запускает эмуляцию. После проектирования и настройки топологии нажмите кнопку запуска.Stop
: останавливает эмуляцию.
- Добавьте два хоста и один коммутатор.
- Настройте IP-адреса на хостах
h1
иh2
. IP-адрес хостаh1
—10.0.0.1/8
, а IP-адрес хостаh2
—10.0.0.2/8
. Хост можно настроить, удерживая правую кнопку мыши и выбирая свойства на устройстве.
3.2.2 Проверка связности
- Перед проверкой соединения между хостом
h1
и хостомh2
необходимо запустить эмуляцию. - Нажмите кнопку Run, чтобы запустить эмуляцию. Начнётся эмуляция, и кнопки панели MiniEdit станут серыми, указывая на то, что в настоящее время они отключены.
- Откройте терминал на хосте
h1
, удерживая правую кнопку мыши на хостеh1
и выбрав Terminal. Это открывает терминал на хостеh1
и позволяет выполнять команды на хостеh1
. - Повторите процедуру на хосте
h2
. - На терминале хоста
h1
введите командуifconfig
, чтобы отобразить назначенные ему IP-адреса. Интерфейсh1-eth0
на хостеh1
должен быть настроен с IP-адресом10.0.0.1
и маской подсети255.0.0.0
. - Повторите эти действия на хосте
h2
. Его интерфейсh2-eth0
должен быть настроен с IP-адресом10.0.0.2
и маской подсети255.0.0.0
. - На терминале хоста
h1
введите командуping 10.0.0.2
. Эта команда проверяет соединение между хостомh1
и хостомh2
. - Чтобы остановить тест, нажмите
Ctrl+c
. - Остановите эмуляцию, нажав кнопку Stop.
3.2.3 Автоматическое назначение IP-адресов
- Ранее мы вручную назначили IP-адреса узлам
h1
иh2
. - В качестве альтернативы можно полагаться на Mininet для автоматического назначения IP-адресов.
- Удалите назначенный вручную IP-адрес с хостов
h1
иh2
. - Нажмите кнопку Edit > Preferences. Базовые значения IP-адресов по умолчанию —
10.0.0.0/8
. Измените это значение на15.0.0.0/8
. - Запустите эмуляцию ещё раз, нажав кнопку Run. Начнётся эмуляция, и кнопки панели MiniEdit будут отключены.
- Откройте терминал на хосте
h1
, удерживая правую кнопку мыши на хостеh1
и выбрав Terminal. - Введите команду (чтобы отобразить IP-адреса, назначенные хосту
h1
):ifconfig
- Интерфейс
h1-eth0
на узлеh1
теперь имеет IP-адрес15.0.0.1
и маску подсети255.0.0.0
. - Вы также можете проверить IP-адрес, назначенный хосту
h2
. Соответствующий интерфейсh2-eth0
на хостеh2
должен иметь IP-адрес15.0.0.2
и маску подсети255.0.0.0
. - Остановите эмуляцию, нажав кнопку Stop.
3.2.4 Сохранение и загрузка топологии Mininet
- Часто бывает полезно сохранить топологию сети, особенно когда ее сложность возрастает. MiniEdit позволяет сохранить топологию в файл.
- Чтобы сохранить топологию, нажмите File, затем Save. Укажите имя для топологии и сохраните на своем компьютере.
- Сохраняйте в папку
~/work
. Для это предварительно создайте её:mkdir ~/work
- После сохранения поменяйте права доступа к файлам в этой папке:
sudo chown -R mininet:mininet ~/work
- Для загрузки топологии нажмите File, затем Open.