Проходные двойные выключатели: Одноклавишные и двухклавишные проходные выключатели купить — интернет-магазин 220.PRO

Содержание

Мир FMV | Прохождение Double Switch: 25th Anniversary Edition

Двойной переключатель: 25 -летие Edition Edition Прохождение

Цель I Цель:
Вы должны получить 4 кода, чтобы спасти Eddie
Save Brutus от Thugs

1) Сохраните Алекс в Алекс. с помощью ловушки Камин , активировав ловушку (трижды нажмите кнопку ловушки) и активировав ее (нажмите кнопку ловушки еще раз), когда злоумышленник наступит на тайл ловушки. (Необязательно)

2) Не дать головорезу отключить блок питания в Складское помещение .

3) Получите код #1 в Комната Брута , наблюдая за сценой, пока злоумышленник не закроет ящик с кодом.

4) Захватите Разнорабочего Лайла в Комната Брута , используя ловушку Удар . (По желанию).

5) Получите код #2 в Grads’ Room , наблюдая за сценой, пока злоумышленник не закроет ящик с кодом. (Подсказка: идите прямо в комнату группы, как только увидите код)

6) Получите код #3 в Band’s Room , наблюдая за сценой, пока злоумышленник не закроет ящик с кодом.

7) Не дать головорезу отключить питание в Складское помещение с помощью ловушки Power Box .

8) Спасите Брута в Комната Брута , используя ловушку Удар на Луиджи, когда он вытаскивает пистолет.

9) Заманить в ловушку разнорабочего Лайла в Складское помещение с помощью Удар ловушка. (Необязательно)

10) Получите код #4 в Комната Алекса , наблюдая за сценой, пока злоумышленник не закроет ящик с кодом.

ЦЕЛИ ДЕЙСТВИЯ II:
Не поймать Лайла Разнорабочего во время этого действия. Он даст вам ловушки, которые вам понадобятся позже.

Спасти жильцов

1) Используйте Столбец на злоумышленниках в Вестибюль , чтобы спасти Джеффа и Фиби
(по желанию).

2) Заманить Эдди в ловушку Комната Алекса с ловушкой Камин (необязательно).

3) Остановите злоумышленника с помощью блока питания в Складское помещение .

4) Получите дополнительную ловушку в Комната Брута , наблюдая, как Лайл поворачивает отвертку. Значок должен появиться для новой ловушки.

5) Получите ловушку у Лайла в Комната выпускников . БЫСТРО ДЕЛАТЬ ШАГ ШЕСТОЙ!

6) Спасите Сэмми в Band’s Room , используя ловушку Lamp .

7) Спасите Алекса в Комнате Алекса , используя ловушку Окно .

8) Спасти Фиби в Выпускной . Мумия попытается поймать Фиби с помощью ловушки «Гроб» с помощью пульта дистанционного управления. Когда Фиби наступает на плитку-ловушку, вы должны быстро нажимать кнопку обезвреживания, совпадающую с ловушкой Гроб , пока мумия не сдастся и не уронит пульт. Теперь вооружитесь Вручите ловушку и активируйте ее, когда мумия наступит на плитку пола. Немедленно сделайте Шаг 9!

9) Получить ловушку конвейерной ленты в Подвал .

10) Получите ловушку-клетку в Band Room . Примечание: время сложно
здесь. Держитесь в этой комнате, пока не найдете ловушку. Когда Лайл поднимает свой
отвертка, он скажет: «Ну вот и ты». Верно
после того, как он это скажет, вы заметите незваного гостя в доме Брута.
номер. НЕ ХОДИТЕ ТУДА ЕЩЕ! Вместо этого подождите, пока клетка
появляется на панели ловушек *ЗАТЕМ* НЕМЕДЛЕННО переходите к
Комната Брута.

11) В Комната Брута Брут спасается бегством от мумии.
БЫСТРО обезвредьте ловушку Basket , иначе мумия воспользуется ею.
на Брута. Как только Брут сойдет с плитки,
вооружите ту же ловушку Basket и используйте ее на мумии.

12) Не дать злоумышленнику отключить элементы управления в Подвал
используя на нем ловушку Elevator .

13) Идите в комнату группы и обезвредьте ловушку Cage , когда Джефф наступит на нее. После того, как Джефф уходит
плитка, переустановите ловушку Cage и поймайте мумию.

14) Возьмите ловушку для стула в Комната Алекса .

15) Идите в кладовую и возьмите ловушку телефонной будки.
Как только на панели ловушек появится ловушка телефонной будки, быстро идите в подвал.

16) Однажды в Подвал , используйте ловушку Конвейер на Эдди.

17) Эдди появится в Складской и попытается
тяните свои телефонные линии. Ударил его телефоном
ловушка требует точного расчета времени, так что прыгайте ловушкой, как только он ее схватит.

18) В Комната Алекса быстро обезвредьте ловушку Стул , когда Алекс наступит на плитку. Эта сцена
быстрее других, поэтому, когда Алекс сойдет с плитки,
БЫСТРО ПЕРЕВОРУЖИТЕ ЕГО. Мумия наступает на него почти
сразу после того, как она ушла с плитки. Ловите мумию с помощью Стул Ловушка.

ЦЕЛИ АКТА III:
Заманить Эдди в ловушку, чтобы защитить жильцов .

1) Остановите нарушителя с помощью блока питания в Складское помещение .

2) В лобби ударить Эдди столбцом
ловушка, когда он бежит за Алексом и Фиби.

3) Идите в Подвал и возьмите Эдди, когда он наступит на ловушку Конвейер . он будет
исходящий ВНУТРИ ловушки, так что активируйте ловушку сразу же, как только он ступит на конвейер.

4) В Alex’s Room , активируйте ловушку Chair и подождите, пока она толкнет
Эдди на спусковой крючок. Когда она это сделает, активируйте ловушку.
на него и идите сразу в подвал.

5) В Подвале главный злоумышленник собирается наступить на
Лифт Ловушка. Получить его!

6) В Выпускной Эдди будет бороться с
Фиби. Когда он это сделает, он случайно наступит на
Рука Тайл ловушки. Хватай его!

7) Главный злоумышленник снова в деле
Складское помещение . Он собирается пойти на телефонные линии, так что
поймайте его с помощью ловушки Phone Box .

8) Вернитесь в Музыкальную комнату и приготовьтесь с клеткой
ловушка. Эдди вбежит и соскользнет на тайл-ловушку. Поймай его!

9) НАКОНЕЦ-ТО! Получить Эдди в Комната Брута с корзиной
ловушка.

10) Посмотрите концовку ИЛИ посмотрите фильм «Двойной переключатель»!

Пошаговое руководство по Mininet — Mininet

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

В пошаговом руководстве предполагается, что вашей базовой системой является виртуальная машина Mininet или собственная установка Ubuntu со всеми установленными инструментами OpenFlow и Mininet (обычно это делается с помощью Mininet 9).0325 install.sh ).

Все прохождение займет меньше часа.

  • Часть 1. Повседневное использование Mininet
    • Отображение параметров запуска
    • Запустить Wireshark
      • Если Wireshark не установлен (команда не найдена, ошибка)
      • Если вы получаете сообщение об ошибке « $DISPLAY not set »
      • Запуск Wireshark с туннелированием X11 и ssh
      • Исправление ошибки: « Не удалось загрузить плагин платформы Qt "xcb"
    • Взаимодействие с хостами и коммутаторами
    • Проверка подключения между хостами
    • Запустите простой веб-сервер и клиент
    • Очистка
  • Часть 2. Дополнительные параметры запуска
    • Запуск регрессионного теста
    • Изменение размера и типа топологии
    • Варианты ссылок
    • Регулируемая детализация
    • Пользовательские топологии
    • ID = MAC
    • Дисплей XTerm
    • Другие типы переключателей
    • Тест Mininet
    • Все в своем пространстве имен (только пользовательский переключатель)
  • Часть 3. Команды интерфейса командной строки (CLI) Mininet
    • Параметры отображения
    • Интерпретатор Python
    • Связь вверх/вниз
    • Дисплей XTerm
  • Часть 4. Примеры Python API
    • Демон SSH на хост
  • Часть 5: Прохождение завершено!
    • Следующие шаги по освоению Mininet
  • Приложение: дополнительная информация
    • Использование пульта дистанционного управления
    • Рю

Примечание. Если вы используете пакет Ubuntu Mininet 2.0.0d4, он немного
другой синтаксис для Topo() — например. add_switch против addSwitch и т. д. Если
вы проверяете Mininet из исходного кода, вы можете проверить 2.0.0d4
тег, чтобы увидеть код (включая код в примерах ), который соответствует
с пакетом 2.0.04.

Часть 1. Повседневное использование Mininet

Во-первых, (возможно, очевидное) примечание о синтаксисе команд для этого пошагового руководства:

  • $ предшествует командам Linux, которые следует вводить в командной строке
  • мининет > предшествует командам Mininet, которые следует вводить в интерфейсе командной строки Mininet,
  • .

  • # предшествует командам Linux, которые вводятся в приглашении корневой оболочки

В каждом случае следует вводить команду только справа от подсказки
(а затем нажмите , верните , конечно же!)

Отображение параметров запуска

Давайте начнем с параметров запуска Mininet.

Введите следующую команду для отображения справочного сообщения с описанием параметров запуска Mininet:

 $ судо мин -ч
 

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

Запустить Wireshark

Для просмотра управляющего трафика с помощью диссектора OpenFlow Wireshark сначала откройте wireshark в фоновом режиме:

 $ sudo wireshark &
 

Скорее всего, это не сработает сразу, поэтому прочтите следующие разделы.

Если Wireshark не установлен (команда не найдена, ошибка)

Wireshark по умолчанию устанавливается в образы виртуальных машин Mininet. Если
в системе, которую вы используете, не установлены Wireshark и плагин OpenFlow,
вы можете установить оба из них, используя Mininet скрипт install.sh
следующим образом:*

 $ кд ~
$ git clone https://github.com/mininet/mininet # если его еще нет
$ mininet/util/install.sh -w
 
Если вы получаете ошибку «

$DISPLAY not set »

Если Wireshark установлен, но вы не можете его запустить (например, вы получаете сообщение об ошибке
$DISPLAY не установлен , см. FAQ:
https://github.com/mininet/mininet/wiki/FAQ#wiki-x11-forwarding.)

Правильная настройка X11 позволит вам запускать другие программы с графическим интерфейсом и
9Эмулятор терминала 0325 xterm , используемый далее в этом пошаговом руководстве.

Запуск Wireshark с туннелированием X11 и

ssh

Если вы используете туннелирование X11 с ssh , вам может потребоваться передать дополнительную опцию sudo
чтобы заставить его работать с (любыми) клиентами X11, такими как wireshark :

 $ sudo HOME=~ wireshark &
 

или

 $ sudo -E wireshark &
 

Не забудьте сделать это при работе с клиентами X11 или мин -х !

Ошибка исправления: «

Не удалось загрузить подключаемый модуль платформы Qt «xcb» »

Если вы получаете сообщение об ошибке, например
Не удалось загрузить подключаемый модуль платформы Qt "xcb" это может быть связано с тем, что
Wireshark (или, в частности, libdouble-conversion ) не работает в некоторых версиях Ubuntu.
В Ubuntu 20.04 исправить это может следующее:

 $ dpkg -l | grep libdouble-conversion # чтобы узнать, какая у вас версия
  $ sudo apt remove libdouble-conversion3 # обязательно укажите правильную версию
  $ sudo apt autoremove
  $ sudo apt установить wireshark
 

Затем в поле фильтра Wireshark в верхней части окна введите этот фильтр, затем нажмите Применить :

 открытый поток_1
 

ПРИМЕЧАНИЕ. В более старых версиях wireshark имя фильтра — из . Если вы используете другой OpenFlow
имена протоколов, возможно, вам придется использовать другой номер версии для фильтра.

В Wireshark нажмите «Захват», затем «Интерфейсы», затем выберите «Пуск» на петлевом интерфейсе ( lo ).

На данный момент в главном окне не должны отображаться пакеты OpenFlow.

Взаимодействие с хостами и коммутаторами

Запустите минимальную топологию и войдите в CLI:

 $ судо млн
 

Топологией по умолчанию является минимальная топология , которая включает один коммутатор ядра OpenFlow, подключенный к двум хостам, а также эталонный контроллер OpenFlow. Эту топологию также можно указать в командной строке с помощью --topo=minimal . Другие топологии также доступны из коробки; см. --топо раздел в выводе мн -ч .

Все четыре объекта (2 хост-процесса, 1 процесс переключения, 1 базовый контроллер) теперь работают на виртуальной машине. Контроллер может находиться вне виртуальной машины, и инструкции для этого находятся внизу.

Если в качестве параметра не передается конкретный тест, запускается интерфейс командной строки Mininet.

В окне Wireshark вы должны увидеть, что переключатель ядра подключен к эталонному контроллеру.

Показать команды Mininet CLI:

 мининет> помощь
 

Узлы отображения:

 мининет> узлов
 

Показать ссылки:

 мининет > сеть
 

Дамп информации обо всех узлах:

 мининет> дамп
 

Вы должны увидеть коммутатор и два хоста в списке.

Если первая строка, введенная в CLI Mininet, представляет собой имя хоста, коммутатора или контроллера, команда выполняется на этом узле. Запустите команду в хост-процессе:

 мининет> h2 ifconfig -a
 

Вы должны увидеть интерфейсы хоста h2-eth0 и loopback ( lo ). Обратите внимание, что этот интерфейс ( h2-eth0 ) не виден основной системе Linux при запуске ifconfig , поскольку он относится к сетевому пространству имен хост-процесса.

Напротив, коммутатор по умолчанию работает в корневом сетевом пространстве имен, поэтому запуск команды на «коммутаторе» аналогичен запуску с обычного терминала:

 мининет> s1 ifconfig -a
 

Это покажет интерфейсы коммутатора, а также выходное соединение виртуальной машины ( eth0 ).

Для других примеров, подчеркивающих, что хосты имеют изолированное сетевое состояние, запустите arp и route на обоих s1 и h2 .

Можно разместить каждый хост, коммутатор и контроллер в своем собственном изолированном сетевом пространстве имен, но в этом нет никаких реальных преимуществ, если только вы не хотите реплицировать сложную сеть с несколькими контроллерами. Mininet поддерживает это; см. --опция innamespace .

Обратите внимание, что только сеть виртуализирована; каждый хост-процесс видит один и тот же набор процессов и каталогов. Например, распечатайте список процессов хост-процесса:

.

 мининет> h2 ps -a
 

Это должно быть точно так же, как и пространство имен корневой сети:

 мининет> s1 пс -а
 

Можно было бы использовать отдельные пространства процессов с контейнерами Linux, но в настоящее время Mininet этого не делает. Запуск всех процессов в пространстве имён «корневого» процесса удобен для отладки, поскольку позволяет видеть все процессы из консоли с помощью пс , убить и т.д.

Проверка подключения между хостами

Теперь убедитесь, что вы можете выполнить эхо-запрос с хоста 0 на хост 1:

 мининет> h2 пинг -c 1 h3
 

Если позже в команде появляется строка с именем узла, это имя узла заменяется его IP-адресом; это произошло на h3.

Вы должны увидеть управляющий трафик OpenFlow. Первый узел ARP для MAC-адреса второго, что приводит к отправке сообщения packet_in на контроллер. Затем контроллер отправляет packet_out сообщение для лавинной рассылки широковещательных пакетов на другие порты коммутатора (в данном примере единственный другой порт данных). Второй хост видит запрос ARP и отправляет ответ. Этот ответ отправляется контроллеру, который отправляет его на первый хост и проталкивает вниз запись потока.

Теперь первый хост знает MAC-адрес второго и может отправлять эхо-запрос ICMP. Этот запрос вместе с соответствующим ответом от второго хоста направляется контроллеру и приводит к тому, что запись о потоке проталкивается вниз (вместе с фактической отправкой пакетов).

Повторить последний эхо-запрос :

 мининет> h2 пинг -c 1 h3
 

Вы должны увидеть гораздо меньшее время ping для второй попытки (< 100 мкс). Потоковая запись, покрывающая трафик ICMP ping , ранее была установлена ​​в коммутаторе, поэтому управляющий трафик не генерировался, и пакеты сразу проходят через коммутатор.

Проще всего запустить этот тест с помощью встроенной в интерфейс командной строки Mininet команды pingall , которая выполняет проверку всех пар 9.0325 пинг :

 мининет> пингалл
 

Запустите простой веб-сервер и клиент

Помните, что ping — не единственная команда, которую вы можете запустить на хосте! Мининет хосты
может запускать любую команду или приложение, доступное для базового Linux
system (или VM) и ее файловая система. Вы также можете ввести любую команду bash ,
включая управление заданиями ( и , задания , убить и т.д..)

Затем попробуйте запустить простой HTTP-сервер на х2 , сделав запрос от х3 ,
затем выключение веб-сервера:

 mininet> h2 python -m http.server 80 &
мининет> h3 wget -O - h2
...
mininet> h2 убить %python
 

ПРИМЕЧАНИЕ. Для Python 3 сервер HTTP называется http.server ; для Питона 2,
он называется SimpleHTTPServer . Убедитесь, что вы используете правильный для
версия Mininet, которую вы используете. Чтобы узнать, какая версия Python
Mininet используется, вы можете ввести

 мининет> py sys.версия
3.8.5 (по умолчанию, 27 января 2021 г., 15:41:15)
 

Выйти из интерфейса командной строки:

 мининет> выход
 

Очистка

Если по какой-то причине происходит сбой Mininet, очистите его:

 $ sudo mn -c
 

Часть 2. Дополнительные параметры запуска

Запустите регрессионный тест

Вам не нужно заходить в CLI; Mininet также можно использовать для запуска автономных регрессионных тестов.

Запустить регрессионный тест:

 $ sudo mn --test pingpair
 

Эта команда создала минимальную топологию, запустила эталонный контроллер OpenFlow, запустила тест с эхо-запросом на все пары и уничтожила как топологию, так и контроллер.

Еще один полезный тест — iperf (дайте ему около 10 секунд на выполнение):

 $ sudo mn --test iperf
 

Эта команда создала тот же Mininet, запустила сервер iperf на одном хосте, запустила клиент iperf на втором хосте и проанализировала достигнутую пропускную способность.

Изменение размера и типа топологии

Топология по умолчанию — это один коммутатор, подключенный к двум хостам. Вы можете изменить это на другую топологию с помощью --topo и передать параметры для создания этой топологии. Например, чтобы проверить возможность эхо-запроса для всех пар с одним коммутатором и тремя хостами:

.

Запустить регрессионный тест:

 $ sudo mn --test pingall --topo single,3
 

Другой пример с линейной топологией (где каждый коммутатор имеет один хост, и все коммутаторы подключаются в линию):

 $ sudo mn --test pingall --topo linear,4
 

Параметризованные топологии — одна из самых полезных и мощных функций Mininet.

Варианты ссылки

Mininet 2.0 позволяет вам устанавливать параметры соединения, и они могут быть установлены даже автоматически
из командной строки:

 $ sudo mn --link tc, bw = 10, задержка = 10 мс
 мининет > иперф
 ...
 мининет> h2 пинг -c10 h3
 

Если задержка для каждого канала составляет 10 мс, время приема-передачи (RTT) должно быть около 40 мс,
поскольку запрос ICMP проходит по двум каналам (один к коммутатору, один к месту назначения)
и ответ ICMP проходит по двум обратным ссылкам.

Вы можете настроить каждую ссылку
с использованием
Python API Mininet,
но сейчас вы, вероятно, захотите продолжить прохождение.

Настраиваемая детализация

Уровень детализации по умолчанию — info , который выводит информацию о том, что делает Mininet во время запуска и отключения. Сравните это с полным выводом отладки с параметром -v :

 $ sudo mn -v отладка
...
мининет> выход
 

Будет распечатано много дополнительной информации. Теперь попробуй вывод , параметр, который печатает вывод CLI и немного больше:

 $ sudo mn -v вывод
мининет> выход
 

Вне интерфейса командной строки могут использоваться другие уровни детализации, например предупреждение , которое используется с регрессионными тестами для скрытия ненужных выходных данных функции.

Пользовательские топологии

Пользовательские топологии также могут быть легко определены с помощью простого Python API, и пример приведен в custom/topo-2sw-2host. py . В этом примере два коммутатора соединяются напрямую, с одним хостом на каждом коммутаторе:

простой пример топологии (topo-2sw-2host.py) скачать

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 """Пример пользовательской топологии
Два напрямую подключенных коммутатора плюс хост для каждого коммутатора:
   хост --- коммутатор --- коммутатор --- хост
Добавление словаря 'topos' с парой ключ/значение для создания вновь определенного
топология позволяет передать '--topo=mytopo' из командной строки.
"""
из mininet.topo импортировать Topo
класс MyTopo( Topo ):
    «Простой пример топологии».
    деф-сборка(сам):
        «Создать пользовательский топографический снимок».
        # Добавляем хосты и коммутаторы
        leftHost = self.addHost('h2')
        rightHost = self.addHost('h3')
        левыйSwitch = self.addSwitch('s3')
        rightSwitch = self.addSwitch('s4')
        # Добавляем ссылки
        self. addLink (leftHost, leftSwitch)
        self.addLink (левый переключатель, правый переключатель)
        self.addLink (правый коммутатор, правый хост)
топос = { 'mytopo': ( лямбда: MyTopo() ) }
 

При наличии пользовательского файла mininet он может добавлять в командную строку новые топологии, типы переключателей и тесты. Например:

 $ sudo mn --custom ~/mininet/custom/topo-2sw-2host.py --topo mytopo --test pingall
 

ID = MAC

По умолчанию хосты начинают со случайно назначенных MAC-адресов. Это может затруднить отладку, потому что каждый раз, когда создается Mininet, MAC-адреса меняются, поэтому корреляция управляющего трафика с конкретными хостами затруднена.

Опция --mac очень полезна и устанавливает для MAC- и IP-адресов хоста небольшие, уникальные, легко читаемые идентификаторы.

До:

 $ судо млн
...
мининет> h2 ifconfig
h2-eth0 Инкапсуляция ссылки: Ethernet HWaddr f6:9d:5a:7f:41:42
          инет-адрес: 10. 0.0.1 Bcast: 10.255.255.255 Маска: 255.0.0.0
          ВВЕРХ ТРАНСЛЯЦИЯ РАБОТАЕТ MULTICAST MTU:1500 Метрика:1
          Пакеты RX: 6, ошибки: 0, отброшены: 0, переполнение: 0, кадр: 0.
          Пакеты TX: 6, ошибки: 0, отброшенные: 0, переполнение: 0, носитель: 0.
          коллизии: 0 txqueuelen: 1000
          Байты приема: 392 (392,0 Б) TX байт: 392 (392,0 Б)
мининет> выход
 

После:

 $ sudo mn --mac
...
мининет> h2 ifconfig
h2-eth0 Инкапсуляция канала: Ethernet HWaddr 00:00:00:00:00:01
          инет-адрес: 10.0.0.1 Bcast: 10.255.255.255 Маска: 255.0.0.0
          ВВЕРХ ТРАНСЛЯЦИЯ РАБОТАЕТ MULTICAST MTU:1500 Метрика:1
          Пакеты RX: 0 ошибки: 0 отброшены: 0 переполнение: 0 кадр: 0
          Пакеты TX: 0 ошибки: 0 отброшены: 0 переполнения: 0 оператор: 0
          коллизии: 0 txqueuelen: 1000
          Байты RX: 0 (0,0 Б) Байты TX: 0 (0,0 Б)
мининет> выход
 

Напротив, MAC-адреса для портов данных коммутатора, о которых сообщает Linux, останутся
случайный. Это связано с тем, что вы можете «назначить» MAC порту данных, используя OpenFlow, как
отмечено в FAQ. Это несколько тонкий момент, который вы, вероятно, можете игнорировать
на данный момент.

Дисплей XTerm

Для более сложной отладки вы можете запустить Mininet, чтобы он порождал один или несколько xterms.

Чтобы запустить xterm для каждого хоста и коммутатора, передайте параметр -x :

 $ судо мин -х
 

Через секунду появится xterms с автоматически заданными именами окон.

В качестве альтернативы вы можете вызвать дополнительные xterms, как показано ниже.

По умолчанию в отдельное пространство имен помещаются только хосты; окно для каждого переключателя не является необходимым (то есть эквивалентно обычному терминалу), но может быть удобным местом для запуска и отключения команд отладки переключателя, таких как дампы счетчика потока.

Xterms также полезны для запуска интерактивных команд, которые вам может потребоваться отменить, для которых вы хотели бы увидеть результат.

Например:

В xterm с надписью «switch: s1 (root)» выполните:

 # потоки дампа ovs-ofctl tcp:127.0.0.1:6654
 

Ничего не распечатывается; коммутатор не имеет добавленных потоков. Чтобы использовать ovs-ofctl с другими коммутаторами, запустите mininet в подробном режиме и просмотрите порты пассивного прослушивания для коммутаторов при их создании.

Теперь в xterm с надписью «host: h2» запустите:

 # пинг 10.0.0.2
 

Вернуться к s1 и дамп потоков:
# потоки дампа ovs-ofctl tcp:127.0.0.1:6654

Теперь вы должны увидеть несколько записей потока. В качестве альтернативы (и, как правило, более удобной) вы можете использовать команду dpctl , встроенную в интерфейс командной строки Mininet, без использования каких-либо xterms или ручного указания IP-адреса и порта коммутатора.

Вы можете определить, находится ли xterm в корневом пространстве имен, проверив ifconfig; если показаны все интерфейсы (включая eth0 ), то это корневое пространство имен. Кроме того, его заголовок должен содержать «(корень)».

Закройте программу установки из интерфейса командной строки Mininet:

 мининет> выход
 

Xterms должен автоматически закрыться.

Другие типы переключателей

Можно использовать другие типы переключателей. Например, для запуска переключателя пользовательского пространства:

.

 $ sudo mn --переключить пользователя --test iperf
 

Обратите внимание на гораздо более низкую пропускную способность TCP, сообщаемую iperf, по сравнению с той, которая наблюдалась ранее с переключателем ядра.

Если вы выполняете тест ping, показанный ранее, вы заметите гораздо большую задержку, так как теперь пакеты должны проходить дополнительные переходы между ядром и пространством пользователя. Время проверки связи будет более изменчивым, так как процесс пользовательского пространства, представляющий хост, может планироваться операционной системой.

С другой стороны, переключатель пользовательского пространства может стать отличной отправной точкой для реализации новых функций, особенно там, где производительность программного обеспечения не критична.

Другой пример типа коммутатора — Open vSwitch (OVS), который предустановлен на виртуальной машине Mininet. Пропускная способность TCP, сообщаемая iperf, должна быть аналогична пропускной способности модуля ядра OpenFlow и, возможно, выше:

.

 $ sudo mn --switch ovsk --test iperf
 

Тест Mininet

Чтобы записать время установки и отключения топологии, используйте тест «нет»:

 $ sudo mn --test нет
 

Все в своем пространстве имен (только пользовательский переключатель)

По умолчанию хосты помещаются в собственное пространство имен, а коммутаторы и контроллер — в корневое пространство имен. Чтобы поместить коммутаторы в собственное пространство имен, передайте параметр --innamespace :

 $ sudo mn --innamespace --переключить пользователя
 

Вместо использования обратной связи коммутаторы будут взаимодействовать с контроллером через отдельное мостовое управляющее соединение. Сам по себе этот параметр не очень полезен, но он дает пример того, как изолировать разные коммутаторы.

Обратите внимание, что этот параметр не работает (по состоянию на 19.11.12) с Open vSwitch.

 мининет> выход
 

Часть 3. Команды интерфейса командной строки (CLI) Mininet

Опции дисплея

Чтобы просмотреть список параметров интерфейса командной строки (CLI), запустите минимальную топологию и оставьте ее работающей. Построить Мининет:

 $ судо млн
 

Показать параметры:

 мининет> помощь
 

Интерпретатор Python

Если первая фраза в командной строке Mininiet равна py , то эта команда выполняется с помощью Python. Это может быть полезно для расширения Mininet, а также для исследования его внутренней работы. С каждым хостом, коммутатором и контроллером связан объект Node.

В интерфейсе командной строки Mininet введите:

 mininet> py 'привет' + 'мир'
 

Распечатать доступные локальные переменные:

 мининет> py locals()
 

Далее просмотрите методы и свойства, доступные для узла, используя функцию dir():

 mininet> py-каталог (s1)
 

Вы можете прочитать онлайн-документацию по методам, доступным на узле, с помощью функции help():

 mininet> py help(h2) (Нажмите «q», чтобы выйти из чтения документации. )
 

Вы также можете оценивать методы переменных:

 мининет>py h2.IP()
 

Связь вверх/вниз

Для тестирования отказоустойчивости может быть полезно активировать и отключать ссылки.

Чтобы отключить обе половины виртуальной пары Ethernet:

 мининет> ссылка s1 h2 не работает
 

Вы должны увидеть уведомление об изменении состояния порта OpenFlow. Чтобы восстановить ссылку:

 мининет> ссылка s1 h2 вверх
 

Дисплей XTerm

Чтобы отобразить xterm для h2 и h3:

 мининет> xterm h2 h3
 

Часть 4. Примеры API Python

Каталог примеров в дереве исходного кода Mininet содержит примеры того, как использовать Python API Mininet, а также потенциально полезный код, который не был интегрирован в основную кодовую базу.

Примечание. Как отмечалось в начале, в этом пошаговом руководстве предполагается, что вы либо
используя виртуальную машину Mininet, которая включает в себя все необходимое, или нативную
установка со всеми сопутствующими инструментами,
включая эталонный контроллер , контроллер , который является частью OpenFlow
эталонная реализация и может быть установлена ​​с помощью install. sh -f , если она
не был установлен.

Демон SSH на хост

Один пример, который может быть особенно полезным, запускает демон SSH на каждом хосте:

 $ sudo ~/mininet/examples/sshd.py
 

С другого терминала вы можете подключиться по ssh к любому хосту и запустить интерактивные команды:

$ ssh 10.0.0.1
$ пинг 10.0.0.2
...
$ выход
 

Выход из SSH, пример mininet:

$ выход
 

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

Часть 5: Прохождение завершено!

Поздравляем! Вы завершили прохождение Mininet. Не стесняйтесь пробовать новые топологии и контроллеры или проверять исходный код.

Следующие шаги по освоению Mininet

Если вы еще этого не сделали, вам обязательно нужно пройти
Учебник OpenFlow.

Хотя с помощью интерфейса командной строки Mininet можно продвинуться довольно далеко, Mininet становится намного
более полезным и мощным, когда вы освоите его Python API.
Введение в мининет
содержит введение в Mininet и его Python API.

Если вам интересно, как использовать пульт дистанционного управления (например, работающий снаружи
управления Mininet), это объясняется ниже.

Они не обязательны, но могут оказаться полезными для беглого просмотра.

Использование пульта дистанционного управления

Примечание: этот шаг не является частью пошагового руководства по умолчанию; в первую очередь это полезно, если у вас есть контроллер, работающий за пределами виртуальной машины, например, на хосте виртуальной машины или на другом физическом ПК. В учебном пособии по OpenFlow используется контроллер --remote для запуска простого обучающего коммутатора, который вы создаете с помощью инфраструктуры контроллера, такой как POX, NOX, Beacon или Floodlight.

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

Эта настройка может быть удобной, если у вас уже есть пользовательская версия среды контроллера и инструменты разработки (например, Eclipse), установленные на локальном компьютере, или вы хотите протестировать контроллер, работающий на другом физическом компьютере (возможно, даже в облаке). ).

Если вы хотите попробовать это, введите IP-адрес хоста и/или порт прослушивания:

 $ sudo mn --controller=remote,ip=[IP-адрес контроллера],port=[порт прослушивания контроллера]
 

Например, чтобы запустить переключатель обучения POX, вы можете сделать что-то вроде

 $ cd ~/pox
$ ./pox.py переадресация.l2_learning
 

в одном окне, а в другом запустите Mininet для подключения к
«удаленный» контроллер (фактически работающий локально, но вне
Управление Мининет):

 $ sudo mn --controller=remote,ip=127.0.0.1,port=6633
 

Обратите внимание, что POX использует старый порт OpenFlow 6633, который не был зарегистрирован и
позже был захвачен Cisco. Текущий, зарегистрированный/канонический порт для OpenFlow
это порт 6653. Пожалуйста, используйте соответствующий номер порта для вашего контроллера.

По умолчанию --controller=remote будет использовать 127.0.0.1 и попытается использовать порты 6653 и 6633 .

Если вы генерируете какой-то трафик (например, h2 ping h3 ), вы сможете наблюдать
некоторый вывод в окне POX, показывающий, что коммутатор подключен и что
были установлены некоторые записи таблицы потоков.

Доступен ряд каркасов контроллеров OpenFlow, которые следует
легко работать с Mininet, пока вы запускаете их и указываете
Опция удаленного контроллера с правильным IP-адресом машины, на которой
ваш контроллер работает и правильный порт, который он прослушивает.

Доступно много контроллеров OpenFlow, и вы можете найти больше из них
легко с помощью Google или вашей любимой поисковой системы. Некоторые из популярных
включают (приблизительно в порядке размера кода, функций и сложности):

  • Ryu, базовая (и несколько похожая на POX) структура контроллера OpenFlow, написанная на Python
  • .