Введение в Mininet

Введение в средство натурного моделирования Mininet.

1 Настройка стенда виртуальной машины Mininet

1.1 Общая информация

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.
  1. VcXsrv Windows X Server

  1. 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-адрес хоста h110.0.0.1/8, а IP-адрес хоста h210.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.

4 Видео

4.1 Youtube

4.1.1 Виртуальная машина Mininet

4.1.2 Работа с Mininet из-под Windows

4.1.3 Основы работы в Mininet

4.1.4 Сохранение топологии Mininet

4.1.5 Обновление версии Mininet

4.2 Rutube

4.2.1 Виртуальная машина Mininet

4.2.2 Работа с Mininet из-под Windows

4.2.3 Основы работы в Mininet

4.2.4 Сохранение топологии Mininet

4.2.5 Обновление версии Mininet

Следующий