Skip to content

Commit

Permalink
ovn: improve OVN tutorial.
Browse files Browse the repository at this point in the history
Improve the tutorial of the basic OVN features. Update the contents of
the "Locally attached networks" and "Locally attached networks with VLANs"
in detail. The logical ports of type "l2gateway" is described.

Submitted-at: openvswitch#144
Signed-off-by: nickcooper-zhangtonghao <[email protected]>
Signed-off-by: Russell Bryant <[email protected]>
  • Loading branch information
xpu22 authored and russellb committed Aug 2, 2016
1 parent c13fb2b commit 2b2f2b2
Show file tree
Hide file tree
Showing 12 changed files with 288 additions and 169 deletions.
356 changes: 205 additions & 151 deletions tutorial/OVN-Tutorial.md

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions tutorial/automake.mk
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,11 @@ EXTRA_DIST += \
tutorial/ovn/env3/setup.sh \
tutorial/ovn/env3/packet1.sh \
tutorial/ovn/env3/packet2.sh \
tutorial/ovn/env4/setup1.sh \
tutorial/ovn/env4/setup2.sh \
tutorial/ovn/env4/setup.sh \
tutorial/ovn/env4/packet1.sh \
tutorial/ovn/env4/packet2.sh \
tutorial/ovn/env4/packet3.sh \
tutorial/ovn/env4/packet4.sh \
tutorial/ovn/env4/packet5.sh \
tutorial/ovn/env5/setup.sh \
tutorial/ovn/env5/packet1.sh \
tutorial/ovn/env5/packet2.sh \
Expand All @@ -38,6 +36,9 @@ EXTRA_DIST += \
tutorial/ovn/env7/add-container-ports.sh \
tutorial/ovn/env7/packet1.sh \
tutorial/ovn/env7/packet2.sh \
tutorial/ovn/env7/setup.sh
tutorial/ovn/env7/setup.sh \
tutorial/ovn/env8/packet1.sh \
tutorial/ovn/env8/packet2.sh \
tutorial/ovn/env8/setup.sh
sandbox: all
cd $(srcdir)/tutorial && MAKE=$(MAKE) ./ovs-sandbox -b $(abs_builddir) $(SANDBOXFLAGS)
8 changes: 4 additions & 4 deletions tutorial/ovn/env4/packet1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

set -o xtrace

# input from local vif, lport1 (ofport 3)
# destination MAC is lport 2
# expect to go out via localnet port (ofport 1)
ovs-appctl ofproto/trace br-int in_port=3,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 -generate
# input from local vif, lport1 (ofport 2)
# destination MAC is lport2
# expect to go out via localnet port (ofport 3) and lport2 (ofport 4)
ovs-appctl ofproto/trace br-int in_port=2,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 -generate
7 changes: 4 additions & 3 deletions tutorial/ovn/env4/packet2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

set -o xtrace

# input from localnet port (ofport 1)
# expect to be delivered to local vif, lport2 (ofport 4)
ovs-appctl ofproto/trace br-int in_port=1,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 -generate
# input from local vif, lport1 (ofport 2)
# destination MAC is on remote chassis
# expect to go out via localnet port (ofport 3)
ovs-appctl ofproto/trace br-int in_port=2,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:03 -generate
4 changes: 3 additions & 1 deletion tutorial/ovn/env4/packet3.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@

set -o xtrace

ovs-appctl ofproto/trace br-int in_port=3,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:03 -generate
# input from local vif, lport1 (ofport 2)
# expect to go out via localnet port (ofport 3) and lport2 (ofport 4)
ovs-appctl ofproto/trace br-int in_port=2,dl_src=00:00:00:00:00:01,dl_dst=ff:ff:ff:ff:ff:ff -generate
4 changes: 3 additions & 1 deletion tutorial/ovn/env4/packet4.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@

set -o xtrace

ovs-appctl ofproto/trace br-int in_port=3,dl_src=00:00:00:00:00:01,dl_dst=ff:ff:ff:ff:ff:ff -generate
# We use the LOCAL port of br-eth1 to simulate the port connected to network.
# expect to arrive on lport1 (ofport 2) and lport2 (ofport 4)
ovs-appctl ofproto/trace br-eth1 in_port=LOCAL,dl_src=00:00:00:00:00:03,dl_dst=ff:ff:ff:ff:ff:ff -generate
3 changes: 3 additions & 0 deletions tutorial/ovn/env4/setup2.sh → tutorial/ovn/env4/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@

set -o xtrace

ovs-vsctl add-br br-eth1
ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth1

ovn-sbctl chassis-add fakechassis geneve 127.0.0.1

for n in 1 2 3 4; do
Expand Down
5 changes: 4 additions & 1 deletion tutorial/ovn/env5/packet1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@

set -o xtrace

ovs-appctl ofproto/trace br-int in_port=5,dl_src=00:00:00:00:00:05,dl_dst=00:00:00:00:00:06 -generate
# input from local vif, lport5 (ofport 6)
# destination MAC is lport6
# expect to go out via localnet port (ofport 7) and lport6 (ofport 8)
ovs-appctl ofproto/trace br-int in_port=6,dl_src=00:00:00:00:00:05,dl_dst=00:00:00:00:00:06 -generate
4 changes: 3 additions & 1 deletion tutorial/ovn/env5/packet2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@

set -o xtrace

ovs-appctl ofproto/trace br-int in_port=1,dl_src=00:00:00:00:00:07,dl_dst=ff:ff:ff:ff:ff:ff,dl_vlan=101 -generate
# We use the LOCAL port of br-eth1 to simulate the port connected to network.
# expect to arrive on lport5 (ofport 6) and lport6 (ofport 8)
ovs-appctl ofproto/trace br-eth1 in_port=LOCAL,dl_src=00:00:00:00:00:07,dl_dst=ff:ff:ff:ff:ff:ff,dl_vlan=101 -generate
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@

set -o xtrace

ovs-appctl ofproto/trace br-int in_port=1,dl_src=00:00:00:00:00:03,dl_dst=ff:ff:ff:ff:ff:ff -generate
# input from local vif, lport1 (ofport 1)
# The destination MAC is not assigned to any host.
# expect to go out via l2gateway port (ofport 3)
ovs-appctl ofproto/trace br-int in_port=1,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:03 -generate
5 changes: 3 additions & 2 deletions tutorial/ovn/env4/setup1.sh → tutorial/ovn/env8/packet2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@

set -o xtrace

ovs-vsctl add-br br-eth1
ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth1
# We use the LOCAL port of br-eth1 to simulate the port connected to network.
# expect to arrive on lport1 (ofport 1) and lport2 (ofport 2)
ovs-appctl ofproto/trace br-eth1 in_port=LOCAL,dl_src=00:00:00:00:00:03,dl_dst=ff:ff:ff:ff:ff:ff -generate
47 changes: 47 additions & 0 deletions tutorial/ovn/env8/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/bash
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# This script simulates 2 chassis connected to a physical switch,
# which we call "physnet1". We have two logical ports, one on each hypervisor,
# that OVN will connect to physnet1.
#
# The way to accomplish this in OVN is to create a logical switch for each
# logical port. In addition to the normal logical port, each logical switch
# has a special "localnet" port, which represents the connection to physnet1.
#
# In this setup we see the view of this environment from one of the hypervisors.

set -o xtrace

ovn-nbctl ls-add sw0

ovn-nbctl lsp-add sw0 sw0-port1
ovn-nbctl lsp-set-addresses sw0-port1 00:00:00:00:00:01
ovn-nbctl lsp-set-port-security sw0-port1 00:00:00:00:00:01
ovs-vsctl add-port br-int lport1 -- set Interface lport1 external_ids:iface-id=sw0-port1

ovn-nbctl lsp-add sw0 sw0-port2
ovn-nbctl lsp-set-addresses sw0-port2 00:00:00:00:00:02
ovn-nbctl lsp-set-port-security sw0-port2 00:00:00:00:00:02
ovs-vsctl add-port br-int lport2 -- set Interface lport2 external_ids:iface-id=sw0-port2

ovn-nbctl lsp-add sw0 sw0-port3
ovn-nbctl lsp-set-addresses sw0-port3 unknown
ovn-nbctl lsp-set-type sw0-port3 l2gateway
# The chassis UUID is hard-coded in tutorial/ovs-sandbox.
ovn-nbctl lsp-set-options sw0-port3 l2gateway-chassis=56b18105-5706-46ef-80c4-ff20979ab068 network_name=physnet1

ovs-vsctl --may-exist add-br br-eth1
ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth1

0 comments on commit 2b2f2b2

Please sign in to comment.