OpenVSwitch
Initially create the bridge that will have a port on the external network, also set vlans to trunk into openvswitch on external port
- This will create "fake" bridges vlan17 and vlan18 on primary bridge br-eth1
sudo ovs-vsctl add-br br-eth1 \
-- add-port br-eth1 eth1 \
-- set port eth1 vlan_mode=trunk trunk=17,18 \
-- add-br vlan17 br-eth1 17 \
-- add-br vlan18 br-eth1 18
sudo dhclient vlan17 vlan18
At this point we should have ip addresses assigned to our ovs bridges via dhcp from the maas server.
ubuntu@network:~$ sudo ovs-vsctl show
dc5d4001-84f7-4d80-9da8-b884034233e1
Bridge "br-eth1"
Port "vlan17"
tag: 17
Interface "vlan17"
type: internal
Port "vlan18"
tag: 18
Interface "vlan18"
type: internal
Port "br-eth1"
Interface "br-eth1"
type: internal
Port "eth1"
trunks: [17, 18]
Interface "eth1"
ovs_version: "2.0.2"
ubuntu@network:~$ sudo ifconfig
br-eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::bce8:feff:fed2:6b99/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4368 (4.3 KB) TX bytes:648 (648.0 B)
eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::225:90ff:fe0e:eea7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2006 errors:0 dropped:0 overruns:0 frame:0
TX packets:882 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:300356 (300.3 KB) TX bytes:80910 (80.9 KB)
Interrupt:17 Memory:fb6e0000-fb700000
eth2 Link encap:Ethernet HWaddr a0:36:9f:34:0b:44
inet addr:10.16.0.101 Bcast:10.16.0.255 Mask:255.255.255.0
inet6 addr: fe80::a236:9fff:fe34:b44/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39926 errors:0 dropped:0 overruns:0 frame:0
TX packets:18916 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:122486301 (122.4 MB) TX bytes:2259166 (2.2 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:679 errors:0 dropped:0 overruns:0 frame:0
TX packets:679 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:72452 (72.4 KB) TX bytes:72452 (72.4 KB)
vlan17 Link encap:Ethernet HWaddr 5a:25:92:2c:46:d3
inet addr:10.16.3.104 Bcast:10.16.3.255 Mask:255.255.255.0
inet6 addr: fe80::5825:92ff:fe2c:46d3/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
vlan18 Link encap:Ethernet HWaddr 42:90:bf:11:dc:e3
inet addr:10.16.5.105 Bcast:10.16.5.255 Mask:255.255.255.0
inet6 addr: fe80::4090:bfff:fe11:dce3/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
- This method uses patches to port between bridges
- In this initial example I create br-eth1 with vlans 17 and 18
- trunked in on eth1, a fake bridge is created and tagged for vlan17 on br-eth1
- and a second (non-fake) bridge br-vlan is created and tagged for vlan 18
- a patch is used to connect br-vlan and br-eth1 inturn giving br-vlan external connectivity through br-eth1's
- port on physical interface eth1
sudo ovs-vsctl add-br br-eth1 \
-- add-port br-eth1 eth1 \
-- set port eth1 vlan_mode=trunk trunk=17,18 \
-- add-br vlan17 br-eth1 17 \
-- add-port br-eth1 patch-to-br-vlan \
-- set Interface patch-to-br-vlan type=patch options:peer=patch-to-br-eth1
sudo ovs-vsctl add-br br-vlan \
-- set port br-vlan tag=18 \
-- add-port br-vlan patch-to-br-eth1 \
-- set Interface patch-to-br-eth1 type=patch options:peer=patch-to-br-vlan
sudo dhclient vlan17 br-vlan
ubuntu@network:~$ sudo ovs-vsctl show
dc5d4001-84f7-4d80-9da8-b884034233e1
Bridge br-vlan
Port "patch-to-br-eth1"
Interface "patch-to-br-eth1"
type: patch
options: {peer=patch-to-br-vlan}
Port br-vlan
tag: 18
Interface br-vlan
type: internal
Bridge "br-eth1"
Port "vlan17"
tag: 17
Interface "vlan17"
type: internal
Port "br-eth1"
Interface "br-eth1"
type: internal
Port "eth1"
trunks: [17, 18]
Interface "eth1"
Port patch-to-br-vlan
Interface patch-to-br-vlan
type: patch
options: {peer="patch-to-br-eth1"}
ovs_version: "2.0.2"
ubuntu@network:~$ ifconfig
br-eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::2084:2ff:fe51:db83/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4368 (4.3 KB) TX bytes:648 (648.0 B)
br-vlan Link encap:Ethernet HWaddr ea:0f:b8:09:54:41
inet addr:10.16.5.108 Bcast:10.16.5.255 Mask:255.255.255.0
inet6 addr: fe80::bccd:84ff:fe00:a3ff/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::225:90ff:fe0e:eea7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2478 errors:0 dropped:0 overruns:0 frame:0
TX packets:980 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:411110 (411.1 KB) TX bytes:92634 (92.6 KB)
Interrupt:17 Memory:fb6e0000-fb700000
eth2 Link encap:Ethernet HWaddr a0:36:9f:34:0b:44
inet addr:10.16.0.101 Bcast:10.16.0.255 Mask:255.255.255.0
inet6 addr: fe80::a236:9fff:fe34:b44/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:45788 errors:0 dropped:0 overruns:0 frame:0
TX packets:22338 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:122969694 (122.9 MB) TX bytes:2715895 (2.7 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:688 errors:0 dropped:0 overruns:0 frame:0
TX packets:688 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:73460 (73.4 KB) TX bytes:73460 (73.4 KB)
vlan17 Link encap:Ethernet HWaddr 9e:48:f3:ac:19:e3
inet addr:10.16.3.106 Bcast:10.16.3.255 Mask:255.255.255.0
inet6 addr: fe80::9c48:f3ff:feac:19e3/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
This method uses patches to create ports between bridges
sudo ovs-vsctl add-br br-eth1 \
-- add-port br-eth1 eth1 \
-- set port eth1 vlan_mode=trunk trunk=17,18 \
-- add-port br-eth1 br-eth1--br-vlan17 \
-- add-port br-eth1 br-eth1--br-vlan18 \
-- set Interface br-eth1--br-vlan17 type=patch options:peer=br-vlan17--br-eth1 \
-- set Interface br-eth1--br-vlan18 type=patch options:peer=br-vlan18--br-eth1
sudo ovs-vsctl add-br br-vlan17 \
-- set port br-vlan17 tag=17 \
-- add-port br-vlan17 br-vlan17--br-eth1 \
-- set Interface br-vlan17--br-eth1 type=patch options:peer=br-eth1--br-vlan17
sudo ovs-vsctl add-br br-vlan18 \
-- set port br-vlan18 tag=18 \
-- add-port br-vlan18 br-vlan18--br-eth1 \
-- set Interface br-vlan18--br-eth1 type=patch options:peer=br-eth1--br-vlan18
sudo dhclient br-vlan17 br-vlan18
ubuntu@network:~$ sudo ovs-vsctl show
dc5d4001-84f7-4d80-9da8-b884034233e1
Bridge "br-eth1"
Port "br-eth1--br-vlan18"
Interface "br-eth1--br-vlan18"
type: patch
options: {peer="br-vlan18--br-eth1"}
Port "br-eth1--br-vlan17"
Interface "br-eth1--br-vlan17"
type: patch
options: {peer="br-vlan17--br-eth1"}
Port "eth1"
trunks: [17, 18]
Interface "eth1"
Port "br-eth1"
Interface "br-eth1"
type: internal
Bridge "br-vlan17"
Port "br-vlan17--br-eth1"
Interface "br-vlan17--br-eth1"
type: patch
options: {peer="br-eth1--br-vlan17"}
Port "br-vlan17"
tag: 17
Interface "br-vlan17"
type: internal
Bridge "br-vlan18"
Port "br-vlan18--br-eth1"
Interface "br-vlan18--br-eth1"
type: patch
options: {peer="br-eth1--br-vlan18"}
Port "br-vlan18"
tag: 18
Interface "br-vlan18"
type: internal
ovs_version: "2.0.2"
ubuntu@network:~$ ifconfig
br-eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::2c84:f6ff:fe18:19bc/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:36 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4634 (4.6 KB) TX bytes:648 (648.0 B)
br-vlan17 Link encap:Ethernet HWaddr 22:28:f3:c2:b8:4e
inet addr:10.16.3.107 Bcast:10.16.3.255 Mask:255.255.255.0
inet6 addr: fe80::d853:6cff:fec5:a92/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1779 (1.7 KB) TX bytes:1478 (1.4 KB)
br-vlan18 Link encap:Ethernet HWaddr ea:24:8b:ea:24:4c
inet addr:10.16.5.109 Bcast:10.16.5.255 Mask:255.255.255.0
inet6 addr: fe80::94d2:dff:fe2c:4c28/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1779 (1.7 KB) TX bytes:1478 (1.4 KB)
eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::225:90ff:fe0e:eea7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2538 errors:0 dropped:0 overruns:0 frame:0
TX packets:1006 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:423890 (423.8 KB) TX bytes:95854 (95.8 KB)
Interrupt:17 Memory:fb6e0000-fb700000
eth2 Link encap:Ethernet HWaddr a0:36:9f:34:0b:44
inet addr:10.16.0.101 Bcast:10.16.0.255 Mask:255.255.255.0
inet6 addr: fe80::a236:9fff:fe34:b44/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46360 errors:0 dropped:0 overruns:0 frame:0
TX packets:22938 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:123012233 (123.0 MB) TX bytes:2788335 (2.7 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:688 errors:0 dropped:0 overruns:0 frame:0
TX packets:688 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:73460 (73.4 KB) TX bytes:73460 (73.4 KB)
sudo ovs-vsctl add-br br-int \
-- add-port br-int br-int--br-eth1 \
-- add-port br-int br-int--br-vlan \
-- set Interface br-int--br-eth1 type=patch options:peer=br-eth1--br-int \
-- set Interface br-int--br-vlan type=patch options:peer=br-vlan--br-int
sudo ovs-vsctl add-br br-eth1 \
-- add-port br-eth1 eth1 \
-- set port eth1 vlan_mode=trunk trunk=17,18 \
-- add-port br-eth1 br-eth1--br-int \
-- set Interface br-eth1--br-int type=patch options:peer=br-int--br-eth1
sudo ovs-vsctl add-br br-vlan \
-- add-port br-vlan br-vlan--br-int \
-- add-port br-vlan br-vlan--br-vlan17 \
-- add-port br-vlan br-vlan--br-vlan18 \
-- set Interface br-vlan--br-int type=patch options:peer=br-int--br-vlan \
-- set Interface br-vlan--br-vlan17 type=patch options:peer=br-vlan17--br-vlan \
-- set Interface br-vlan--br-vlan18 type=patch options:peer=br-vlan18--br-vlan
sudo ovs-vsctl add-br br-vlan17 \
-- set port br-vlan17 tag=17 \
-- add-port br-vlan17 br-vlan17--br-vlan \
-- set Interface br-vlan17--br-vlan type=patch options:peer=br-vlan--br-vlan17
sudo ovs-vsctl add-br br-vlan18 \
-- set port br-vlan18 tag=18 \
-- add-port br-vlan18 br-vlan18--br-vlan \
-- set Interface br-vlan18--br-vlan type=patch options:peer=br-vlan--br-vlan18
sudo dhclient br-vlan17 br-vlan18
ubuntu@network:~$ sudo ovs-vsctl show
dc5d4001-84f7-4d80-9da8-b884034233e1
Bridge "br-eth1"
Port "br-eth1--br-int"
Interface "br-eth1--br-int"
type: patch
options: {peer="br-int--br-eth1"}
Port "br-eth1"
Interface "br-eth1"
type: internal
Port "eth1"
trunks: [17, 18]
Interface "eth1"
Bridge "br-vlan17"
Port "br-vlan17--br-vlan"
Interface "br-vlan17--br-vlan"
type: patch
options: {peer="br-vlan--br-vlan17"}
Port "br-vlan17"
tag: 17
Interface "br-vlan17"
type: internal
Bridge br-int
Port br-int--br-vlan
Interface br-int--br-vlan
type: patch
options: {peer=br-vlan--br-int}
Port br-int
Interface br-int
type: internal
Port "br-int--br-eth1"
Interface "br-int--br-eth1"
type: patch
options: {peer="br-eth1--br-int"}
Bridge "br-vlan18"
Port "br-vlan18--br-vlan"
Interface "br-vlan18--br-vlan"
type: patch
options: {peer="br-vlan--br-vlan18"}
Port "br-vlan18"
tag: 18
Interface "br-vlan18"
type: internal
Bridge br-vlan
Port br-vlan--br-int
Interface br-vlan--br-int
type: patch
options: {peer=br-int--br-vlan}
Port "br-vlan--br-vlan17"
Interface "br-vlan--br-vlan17"
type: patch
options: {peer="br-vlan17--br-vlan"}
Port br-vlan
Interface br-vlan
type: internal
Port "br-vlan--br-vlan18"
Interface "br-vlan--br-vlan18"
type: patch
options: {peer="br-vlan18--br-vlan"}
ovs_version: "2.0.2"
ubuntu@network:~$ ifconfig
br-eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::5c31:63ff:fe6a:26b7/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:45 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5590 (5.5 KB) TX bytes:648 (648.0 B)
br-int Link encap:Ethernet HWaddr be:04:f0:71:c8:40
inet6 addr: fe80::e84a:34ff:fedc:688b/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5664 (5.6 KB) TX bytes:648 (648.0 B)
br-vlan Link encap:Ethernet HWaddr 02:8e:1a:b6:58:48
inet6 addr: fe80::2083:69ff:fef8:37ae/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5492 (5.4 KB) TX bytes:648 (648.0 B)
br-vlan17 Link encap:Ethernet HWaddr 02:b7:45:70:fd:4d
inet addr:10.16.3.108 Bcast:10.16.3.255 Mask:255.255.255.0
inet6 addr: fe80::9c3c:37ff:fe6f:fc68/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
br-vlan18 Link encap:Ethernet HWaddr ee:e3:49:95:5b:42
inet addr:10.16.5.110 Bcast:10.16.5.255 Mask:255.255.255.0
inet6 addr: fe80::fcb6:72ff:feb1:176d/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1312 (1.3 KB) TX bytes:1820 (1.8 KB)
eth1 Link encap:Ethernet HWaddr 00:25:90:0e:ee:a7
inet6 addr: fe80::225:90ff:fe0e:eea7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2668 errors:0 dropped:0 overruns:0 frame:0
TX packets:1055 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:447762 (447.7 KB) TX bytes:102076 (102.0 KB)
Interrupt:17 Memory:fb6e0000-fb700000
eth2 Link encap:Ethernet HWaddr a0:36:9f:34:0b:44
inet addr:10.16.0.101 Bcast:10.16.0.255 Mask:255.255.255.0
inet6 addr: fe80::a236:9fff:fe34:b44/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:48361 errors:0 dropped:0 overruns:0 frame:0
TX packets:25616 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:123173332 (123.1 MB) TX bytes:3106913 (3.1 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:688 errors:0 dropped:0 overruns:0 frame:0
TX packets:688 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:73460 (73.4 KB) TX bytes:73460 (73.4 KB)
gateway_external_network_id =
external_network_bridge =
in /etc/neutron/l3-agent.ini
#cloud-config
password: voiceispass
chpasswd: { expire: False }
ssh_pwauth: True
in Post-Creation tab.
source ~/.cloud-install/openstack-admin-rc
neutron net-create vlan17 -- --router:external=false \
--provider:network_type=vlan \
--provider:physical_network=vnet1 \
--provider:segmentation_id=17 \
--shared
neutron subnet-create vlan17 --name vlan17-subnet \
--allocation-pool start=10.16.3.101,end=10.16.3.200 \
--disable-dhcp --gateway 10.16.3.1 10.16.3.0/24
neutron net-create 70.96.128.0-floating -- --router:external=true \
--provider:network_type=flat \
--provider:physical_network=physnet1
neutron subnet-create 70.96.128.0-floating --name 70.96.128.0-floating-subnet \
--allocation-pool start=70.96.128.100,end=70.96.128.120 \
--disable-dhcp --gateway 70.96.128.1 70.96.128.0/24
neutron router-create router1
neutron router-interface-add router1 vlan17-subnet
neutron router-gateway-set router1 physnet1
http://blog.oddbit.com/2014/05/28/multiple-external-networks-wit/
http://funcptr.net/2014/09/29/neutron-l3-agent-with-multiple-provider-networks/
http://superuser.openstack.org/articles/multiple-external-networks-with-a-single-l3-agent