Запуск 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
Связь установлена!!!