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

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

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

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

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

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

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

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

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

IDR: 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

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

Статья научная