Запуск MPLS с Open vSwithc на Ubuntu

Парфенов А.Г. Калошин А.Ю.

Журнал: Теория и практика современной науки @modern-j

Рубрика: Основной раздел

Статья в выпуске: 6-2 (12), 2016 года.

Бесплатный доступ

В данной статье рассмотрен пример построение тестовой топологии и запуск MPLS на многоуровневом коммутаторе Open vSwitch и операционной системе Ubuntu.

многопротокольная коммутация по меткам \ многоуровневый коммутатор \ высокоскоростная ip магистраль

Похожие статьи в разделе Электротехника

Исследование параметров производительности виртуальных коммутаторов с поддержкой Openflow
Исследование параметров производительности виртуальных коммутаторов с поддержкой Openflow

Ушакова М.В., Ушаков Ю.А., Болодурина И.П., Тарасов В.Н., Бахарева Н.Ф.

Методика получения обобщенных статистических характеристик сетевого оборудования для создания имитационных моделей
Методика получения обобщенных статистических характеристик сетевого оборудования для создания имитационных моделей

Болодурина Ирина Павловна, Ушаков Юрий Александрович, Ушакова Маргарита Викторовна

OpenFlow Technology: A Journey of Simulation Tools
OpenFlow Technology: A Journey of Simulation Tools

Rakesh k. Jha, Pooja Kharga, Idris Z. Bholebawa, Sangeet Satyarthi, Anuradha, Shashi Kumari

Разработка методики тестирования сетевых коммутаторов Spacewire
Разработка методики тестирования сетевых коммутаторов Spacewire

Максютин А.С., Казайкин Д.С., Дымов Д.В., Ивленков Д.В.

Короткий адрес: https://sciup.org/140269377

IDS: 140269377

Текст научной статьи Запуск MPLS с Open vSwithc на Ubuntu

Версия используемого программного обеспечения:

  • 1.    Ubuntu 15.04

  • 2.    Open vSwitch 2.3.1

Пример построение топологии:

H1 (h1-eth0)------(s1-eth0) S1 (s1-eth1)--------(s2-eth1) S2 (s2-eth0)------(h2-eth0) H2

Шаг 1:

Создадим два коммутатора S1 и S2 соединенных по IP Ethernet, которые будут соединять хост H1 и хост H2.

root@ubuntu:~# ovs-vsctl add-br s1

root@ubuntu:~# ovs-vsctl add-br s2

root@ubuntu:~# ip link add s1-eth0 type veth peer name h1-eth0

root@ubuntu:~# ip link add s2-eth0 type veth peer name h2-eth0

root@ubuntu:~# ip link add s2-eth1 type veth peer name s1-eth1

Шаг 2:

Присвоим хостам H1 и H2 соответствующие интерфейсы.

root@ubuntu:~# ip netns add h1

root@ubuntu:~# ip netns add h2

root@ubuntu:~# ip link set h1-eth0 netns h1

root@ubuntu:~# ip link set h2-eth0 netns h2

Шаг 3:

Зададим порты дл переключения коммутаторов S1 и S2.

root@ubuntu:~# ovs-vsctl add-port s1 s1-eth0

root@ubuntu:~# ovs-vsctl add-port s1 s1-eth1

root@ubuntu:~# ovs-vsctl add-port s2 s2-eth0

root@ubuntu:~# ovs-vsctl add-port s2 s2-eth1

Шаг 4:

«Поднимем» все интерфейсы root@ubuntu:~# ip netns exec h1 bash root@ubuntu:~# ifconfig h1-eth0 up root@ubuntu:~# ifconfig lo up root@ubuntu:~# ip netns exec h2 bash root@ubuntu:~# ifconfig lo up root@ubuntu:~# ifconfig h2-eth0 up root@ubuntu:~# ip link set s1-eth0 up root@ubuntu:~# ip link set s2-eth0 up root@ubuntu:~# ip link set s2-eth1 up root@ubuntu:~# ip link set s1-eth1 up

Шаг 5:

Присваиваем адрес 192.168.10.1/24 к хосту Н1 и адрес 192.168.10.2/24 к H2 как показано ниже root@ubuntu:~# ip netns exec h1 bash root@ubuntu:~# ifconfig h1-eth0 192.168.10.1/24

root@ubuntu:~# exit root@ubuntu:~# ip netns exec h2 bash root@ubuntu:~# ifconfig h2-eth0 192.168.10.2/24

root@ubuntu:~# exit

Шаг 6:

Проверка соединения между хостами H1 и H2 командой ping root@ubuntu:~# ping 192.168.10.1

PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.

64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.334 ms

64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.061 ms

64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.071 ms

64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=0.078 ms

Шаг 7:

Проверьте правила в обоих коммутаторах, чтобы удостоверится что прохождение команды ping разрешено root@ubuntu:~# ovs-ofctl -O OpenFlow13 dump-flows s1

OFPST_FLOW reply (OF1.3) (xid=0x2):

cookie=0x0, duration=990.380s, table=0, n_packets=30, n_bytes=2388, priority=0 actions=NORMAL root@ubuntu:~# root@ubuntu:~# root@ubuntu:~# ovs-ofctl -O OpenFlow13 dump-flows s2

OFPST_FLOW reply (OF1.3) (xid=0x2):

cookie=0x0, duration=990.540s, table=0, n_packets=29, n_bytes=2318, priority=0 actions=NORMAL root@ubuntu:~#

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

Шаг 8:

Удалим стандартное правило и проверим командой ping еще раз root@ubuntu:~# ovs-ofctl -O OpenFlow13 del-flows s2

root@ubuntu:~# ovs-ofctl -O OpenFlow13 del-flows s1

Убедитесь, что правила удалены root@ubuntu:~# ovs-ofctl -O OpenFlow13 dump-flows s1

OFPST_FLOW reply (OF1.3) (xid=0x2):

root@ubuntu:~# root@ubuntu:~# ovs-ofctl -O OpenFlow13 dump-flows s2

OFPST_FLOW reply (OF1.3) (xid=0x2):

Проверьте соединение с хостами H1 на H2 и убедитесь в его работе root@ubuntu:~# ip netns exec h1 bash root@ubuntu:~# ping 192.168.10.2

PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.

^C

  • --- 192.168.10.2 ping statistics --

    5 packets transmitted, 0 received, 100% packet loss, time 4033ms

root@ubuntu:~# ping 192.168.10.2

PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.

From 192.168.10.1 icmp_seq=1 Destination Host Unreachable

From 192.168.10.1 icmp_seq=2 Destination Host Unreachable

Соединение не установлено, по причине отсутствия правил для пересылки трафика.

Шаг 9:

Добавьте правила MPLS для ARP и IP в коммутатор 1. Установите значение MPLS метки 40 для ARP и значение MPLS метки 30 для IP.

Правила потока IP ovs-ofctl -O OpenFlow13 add-flow s1

"table=0,in_port=1,ip,action=push_mpls:0x8847,set_mpls_label:30,output:2"

ovs-ofctl -O OpenFlow13 add-flow s1

"table=0,in_port=2,mpls,mpls_label=30,action=pop_mpls:0x0800,output:1"

Правила потока ARP ovs-ofctl -O OpenFlow13 add-flow s1

"table=0,in_port=1,arp,action=push_mpls:0x8847,set_mpls_label:40,output:2"

ovs-ofctl -O OpenFlow13 add-flow s1

"table=0,in_port=2,mpls,mpls_label=40,action=pop_mpls:0x0806,output:1"

Шаг 10:Добавьте MPLS правила на коммутатор 2 используя те же значения меток как для коммутатора 1

Правила потока IP ovs-ofctl -O OpenFlow13 add-flow s2

"table=0,in_port=1,ip,action=push_mpls:0x8847,set_mpls_label:30,output:2"

ovs-ofctl -O OpenFlow13 add-flow s2

"table=0,in_port=2,mpls,mpls_label=30,action=pop_mpls:0x0800,output:1"

Правила потока ARP ovs-ofctl -O OpenFlow13 add-flow s2

"table=0,in_port=1,arp,action=push_mpls:0x8847,set_mpls_label:40,output:2"

ovs-ofctl -O OpenFlow13 add-flow s2

"table=0,in_port=2,mpls,mpls_label=40,action=pop_mpls:0x0806,output:1"

Шаг 11:Попробуйте установить связь между Хостом 1 и Хостом 2, чтобы убедиться в прохождении трафика

root@ubuntu:~# ip netns exec h2 bash root@ubuntu:~# ping 192.168.10.1

PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.

64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.420 ms

64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.346 ms

^C

Связь установлена!!!