Практические и лабораторные работы / СПО. Лаб. 4
.pdfЛабораторные работы СПО(домашний/удалённый режим работы)
#4.ПО дляпрограммно-конфигурируемыхсетей (SDN).
Цель: на практикепознакомиться с концепцией программно-определяемыхсетей (SDN,software-defined networks). Развернуть в виртуальной среденесколькосетевыхузлов, настроить ихсвязность и управление с помощью контроллера SDN. Проверить прохождениесетевоготрафика между узлами при разных конфигурациях таблиц потоков.
Задача: с помощью эмулятора сетевыхэлементов (Mininet) и контроллера SDN (Floodlight) развернуть структуру из несколькихэлементов, рассмотреть участие контроллера в связности элементов сети, познакомиться с таблицами потоков для сетевых узлов.
Отчёт должен быть представлен (на email или в ЛК) в видеэлектронного документа (.docx, .odt).
Впояснительной части отчёта должно содержаться:
краткое описание хода работы
схема SDN-сети,построенной на основе виртуальныхузлов
результаты выполненных проверок прохождения соединения между узлами сети
примерконфигурации таблицы потоков (FlowTable) некоторыхузлов
Вспомогательные материалы
https://habr.com/ru/company/muk/blog/251959/ – краткие общие сведения о концепции SDN https://shalaginov.com/2018/01/16/руководство-по-sdn-и-nfv-1/
http://iks.sut.ru/rubricator/programmno-konfiguriruemye-seti-sdn-protokol-openflow/ – учебное пособие по технологическим основам реализации SDN (изд-во СПбГУТ, есть версия в .pdf)
https://www.osp.ru/lan/2012/12/13033012 https://habr.com/ru/post/307356/ https://habr.com/ru/company/etegro/blog/245037/
https://asvk.cs.msu.ru/~bahmurov/asvk/v2kurs-SDN_v2.pdf – различные отраслевые статьи, отражающие изменение концепций SDN и NFV в период2011-2018
http://sdn.ifmo.ru/Members/shkrebets/sdn_4115/sdn_papers – подборка международных открытых публикаций о SDN http://sdn.ifmo.ru/Members/shkrebets/sdn_4115/sdn_practice – курс практических занятий по SDN (ИТМО)
https://habr.com/ru/company/vasexperts/blog/446058/ – краткий обзор открытых инструментов для создания SDN
Используемые инструменты
http://mininet.org/walkthrough/ – эмулятор сетевых узлов Mininet
https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/overview – контроллер FloodLight
Образ виртуального диска с установленным набором ПО может быть скачана с сайта проекта FloodLight: https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/8650780/Floodlight+VM
https://github.com/ARCCN/runos – российский SDN/OpenFlow-контроллер RunOS
https://ryu-sdn.org/
https://book.ryu-sdn.org/en/Ryubook.pdf – каркас (framework) для создания собственных классов оборудования и контроллеров SDN
Ход выполнения работы
0.Развёртываем виртуальную машину, содержащую UbuntuLinux, Mininet,Floodlight
Образ диска для виртуальной машины Floodlight(формат VMWare .vmdk) доступен для свободного скачивания здесь: https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/8650780/Floodlight+VM http://opennetlinux.org/binaries/floodlight-vm.zip
Для инсталляции виртуальной машины необходимоналичие среды виртуализации VMWare (https://www.vmware.com/ru/products/workstation-player.html)или OracleVirtualBox (https://www.virtualbox.org/wiki/Downloads).
В среде виртуализации необходимо создать новую виртуальную машину на основе Linux 64-bit, примонтировать образ диска (.vmdk)и запустить её. Логин и пароль по умолчанию –«floodlight». Далеев графической оболочке открыть консоль терминала, например так:
1.Запускаемэмулятор Mininet.
floodlight@floodlight:~$ sudo mn
***Creating network
***Adding controller
***Adding hosts:
h1 h2
***Adding switches:
s1
***Adding links: (h1, s1) (h2, s1)
***Configuring hosts h1 h2
***Starting controller
c0
***Starting 1 switches s1 ...
***Starting CLI: mininet>
Вэтом случае (запуск mnбез каких-либо параметров) будет автоматически создана простейшая топология, состоящая из двух хостов, коммутатора и контроллера, и запущена консоль управления Mininet.
2.Проверяем работу виртуальной сети.
Чтобы проверить связь между хостами созданной сети,выполните команду pingall.В результате выполнения команды каждый хост выполнит ping совсеми остальными хостами. В нашемслучаеэтобудет выглядеть следующим образом:
mininet> pingall
***Ping: testing ping reachability h1 -> h2
h2 -> h1
***Results: 0% dropped (2/2 received)
3.Завершаем работу эмулятора.
Для завершения работы Mininetвыполните команду exit:
mininet> exit
***Stopping 1 controllers
c0
***Stopping 2 links
..
***Stopping 1 switches
s1
***Stopping 2 hosts
h1 h2
*** Done
completed in 180.283 seconds
4.Создаёмтопологию сети.
Mininetпозволяет создавать топологии сетей с помощью различных шаблонов. Например, шаблон tree позволяет создавать древовидную топологию,а linear – линейную, где каждый коммутатор последовательно соединён с каждым:
floodlight@floodlight:~$ sudo mn --topo linear,4 --switch ovsk --ipbase=10.0.0.0/8
***Creating network
***Adding controller
***Adding hosts:
h1 h2 h3 h4
***Adding switches: s1 s2 s3 s4
***Adding links:
(h1, s1) (h2, s2) (h3, s3) (h4, s4) (s2, s1) (s3, s2) (s4, s3)
***Configuring hosts h1 h2 h3 h4
***Starting controller
c0
***Starting 4 switches s1 s2 s3 s4 ...
***Starting CLI: mininet>
Обратитевнимание: ключ ovsk подразумевает созданиесетевых узлов (коммутаторов) типа Open vSwitch, поддерживающихпротокол OpenFlow и предназначенных для работы совместно с контроллером SDN.
5.Запускаемсетевые команды на хостах.
Mininetпозволяет запускать на узлах простые сетевые приложения Linux. Выполните команду ping с первого хоста на третий, для этоговведите следующую команду:
mininet> h1 ping h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=8.94 ms 64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.277 ms ^C
--- 10.0.0.3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.277/4.610/8.944/4.334 ms
6.Запускаем контроллер FloodLight.
Контроллер может быть запущен с помощью следующей команды:
java -jar target/floodlight.jar &
Примечание. Если при запуске возниклаошибки из-за отсутствияфайла target/floodlight.jar, необходимо выполнитьсборку Floodlight. Для этоговыполнить команды:
floodlight@floodlight:~$ cd floodlight floodlight@floodlight:~/floodlight$ ant
По окончании сборки будет выведено сообщение
BUILD SUCCESSFUL
Total time: 24 seconds
Затем можно повторить попыткузапуска.
После того какконтроллер был запущен, можно получить доступ к графическому веб-интерфейсу управления контроллером. Чтобы подключиться к веб-интерфейсу контроллера, введитев адресной строке веб-браузера следующий адрес:
http://<ip-адрес>:8080/ui/index.html
(здесь ip-адрес –адрес контроллера FloodLight)
7.Подключаемвиртуальную сеть к контроллеру.
Для подключения коммутаторов виртуальной сети Mininet к контроллеру необходимов параметрах запуска указать --controller=remote. Выполните следующую команду:
sudo mn --topo linear,4 --switch ovsk --ipbase=10.0.0.0/8 \ --controller=remote,ip=<ip-адрес>,port=6653
(здесь ip-адрес –адрес контроллера FloodLight; 6653 – порт, используемый по умолчанию для протокола
OpenFlow)
Перейдитена страницу «Topology» и убедитесь,что к контроллеру была подключена виртуальная сеть из четырёх коммутаторов с четырьмя подключенными оконечными хостами, например, как показано на рисунке:
8.Проводим простые эксперименты сосвязностью узлов.
Попробуйте выполнить и проанализировать результаты команд:
pingall
h1 ping h3
link s2 s3 down h1 ping h3
Посмотрите статусы портов и содержимое Flow-таблиц коммутаторахна закладкеSwitches после выполнения разных команд.
Остановите SDN-контроллери послеэтого повторно выполните команду pingall.