From patchwork Tue Mar 31 17:44:16 2020
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Numan Siddique vtep
(5) schema.
+ may be a physical host, a virtual machine, or a hardware switch (see
+ Ramp Gateways
, below).
@@ -529,20 +529,27 @@ ones. OVN support multiple kinds of gateways.
-
- A ``VTEP gateway'' connects an OVN logical network to a physical (or
- virtual) switch that implements the OVSDB VTEP schema that accompanies Open
- vSwitch. (The ``VTEP gateway'' term is a misnomer, since a VTEP is just a
- VXLAN Tunnel Endpoint, but it is a well established name.) See Life
- Cycle of a VTEP gateway
, below, for more information.
+ A ``ramp gateway'' acts like an on-ramp to an OVN logical network from a
+ physical (or virtual) switch, called a ``ramp switch'', that implements the
+ OVSDB VTEP schema that accompanies Open vSwitch. See Life Cycle of a
+ ramp gateway
, below, for more information.
- The main intended use case for VTEP gateways is to attach physical servers - to an OVN logical network using a physical top-of-rack switch that supports - the OVSDB VTEP schema. + The main intended use case for ramp gateways is to attach physical servers + to an OVN logical network using a physical top-of-rack switch instead of a + server. Reasons to do this include convenience (the switch is already + there and supports this feature) or density (the switch has 40 ports and + it's difficult to add that many to a server). +
+ ++ Previous versions of OVN referred to ramp gateways and ramp switches as + ``VTEP gateways'' and ``VTEP switches,'' respectively, but these terms are + misnomers, since a VTEP is just a VXLAN Tunnel Endpoint.
l2gateway
port is only used for the packets that are on the physical network. The
- application for L2 gateways is similar to that for VTEP gateways, e.g. to
+ application for L2 gateways is similar to that for ramp gateways, e.g. to
add non-virtualized machines to a logical network, but L2 gateways do not
require special support from top-of-rack hardware switches.
@@ -1134,7 +1141,7 @@
Geneve and STT tunnels pass this field as part of the tunnel key. Although VXLAN tunnels do not explicitly carry a logical input port, - OVN only uses VXLAN to communicate with gateways that from OVN's + OVN only uses VXLAN to communicate with ramp gateways, which from OVN's perspective consist of only a single logical port, so that OVN can set the logical input port field to this one on ingress to the OVN logical pipeline. @@ -1160,7 +1167,7 @@ an OVN hypervisor, the packet is resubmitted to table 8 to determine the output port(s); when the packet reaches table 32, these packets are resubmitted to table 33 for local delivery by - checking a MLF_RCV_FROM_VXLAN flag, which is set when the packet + checking a MLF_NO_EGRESS_PORT flag, which is set when the packet arrives from a VXLAN tunnel.
@@ -1399,12 +1406,12 @@
- A gateway is a chassis that forwards traffic between the OVN-managed
- part of a logical network and a physical VLAN, extending a
- tunnel-based logical network into a physical network.
+ A gateway is a chassis that forwards traffic between the OVN-managed part
+ of a logical network and a physical VLAN, extending a tunnel-based logical
+ network into a physical network. A ``ramp gateway'' acts like an on-ramp
+ to an OVN logical network from a physical (or virtual) switch, called a
+ ``ramp switch'', that implements the OVSDB VTEP schema that accompanies
+ Open vSwitch. See Ramp Gateways
, above, for more information.
@@ -2079,19 +2089,19 @@
Physical_Switch
table entry in the
+ A ramp gateway's life cycle begins with the administrator registering
+ the ramp gateway as a Physical_Switch
table entry in the
VTEP
database. The ovn-controller-vtep
- connected to this VTEP database, will recognize the new VTEP gateway
+ connected to this VTEP database, will recognize the new ramp gateway
and create a new Chassis
table entry for it in the
OVN_Southbound
database.
Logical_Switch
- table entry, and bind a particular vlan on a VTEP gateway's port to
+ table entry, and bind a particular vlan on a ramp gateway's port to
any VTEP logical switch. Once a VTEP logical switch is bound to
- a VTEP gateway, the ovn-controller-vtep
will detect
+ a ramp gateway, the ovn-controller-vtep
will detect
it and add its name to the vtep_logical_switches
column of the Chassis
table in the
OVN_Southbound
database. Note, the tunnel_key
@@ -2108,7 +2118,7 @@
of this entry must be set to "vtep". Next, the
vtep-logical-switch and vtep-physical-switch keys
in the options column must also be specified, since
- multiple VTEP gateways can attach to the same VTEP logical switch.
+ multiple ramp gateways can attach to the same VTEP logical switch.
OVN_Southbound
database as a new Port_Binding
table entry. The ovn-controller-vtep
will recognize the
- change and bind the logical port to the corresponding VTEP gateway
+ change and bind the logical port to the corresponding ramp gateway
chassis. Configuration of binding the same VTEP logical switch to
a different OVN logical networks is not allowed and a warning will be
generated in the log.
+ Beside binding to the ramp gateway chassis, the
ovn-controller-vtep
will update the tunnel_key
column of the VTEP logical switch to the corresponding
Datapath_Binding
table entry's tunnel_key for the
@@ -2135,13 +2145,13 @@
configuration change in the Port_Binding
in the
OVN_Northbound
database, and updating the
Ucast_Macs_Remote
table in the VTEP
database.
- This allows the VTEP gateway to understand where to forward the unicast
+ This allows the ramp gateway to understand where to forward the unicast
traffic coming from the extended external network.
VTEP
database.
+ Eventually, the ramp gateway's life cycle ends when the administrator
+ unregisters the ramp gateway from the VTEP
database.
The ovn-controller-vtep
will recognize the event and
remove all related configurations (Chassis
table entry
and port bindings) in the OVN_Southbound
database.
@@ -2151,7 +2161,7 @@
When the ovn-controller-vtep
is terminated, all related
configurations in the OVN_Southbound
database and
the VTEP
database will be cleaned, including
- Chassis
table entries for all registered VTEP gateways
+ Chassis
table entries for all registered ramp gateways
and their port bindings, and all Ucast_Macs_Remote
table
entries and the Logical_Switch
tunnel keys.
- For connecting to gateways, in addition to Geneve and STT, OVN supports + For connecting to ramp gateways, in addition to Geneve and STT, OVN supports VXLAN, because only VXLAN support is common on top-of-rack (ToR) switches. Currently, gateways have a feature set that matches the capabilities as defined by the VTEP schema, so fewer bits of metadata are necessary. In diff --git a/ovn-nb.xml b/ovn-nb.xml index 541ec20c1..97d8890ff 100644 --- a/ovn-nb.xml +++ b/ovn-nb.xml @@ -549,7 +549,7 @@
vtep
external
- These options apply when is vtep
.
+ These options apply when is vtep
,
+ that is, when the port is used to attach a ramp gateway to an OVN
+ logical switch.
vtep-physical-switch
equal , and
@@ -417,7 +417,7 @@
Not all devices see such a benefit. The most notable exception is - hardware VTEPs. These devices are designed to not buffer entire + ramp switches. These devices are designed to not buffer entire packets in their switching engines and are therefore unable to efficiently compute or validate full packet checksums. In addition certain versions of the Linux kernel are not able to fully take @@ -428,7 +428,7 @@
- csum
defaults to false
for hardware VTEPs and
+ csum
defaults to false
for ramp switches and
true
for all other cases.
ovn-controller-vtep
.
vtep
vtep-physical-switch
and
These options apply to logical ports with of
- vtep
.
+ vtep
, that is, ports that attach a ramp gateway to an OVN
+ logical switch.
vtep
.
vtep
ovn-controller-vtep -- Open Virtual Network local controller for +
ovn-controller-ramp -- Open Virtual Network local controller for vtep enabled physical switches.
ovn-controller-vtep
[options]
- [--vtep-db=vtep-database] [--ovnsb-db=ovnsb-database]
+
ovn-controller-ramp
[options]
+ [--ramp-db=ramp-database] [--ovnsb-db=ovnsb-database]
- ovn-controller-vtep
is the local controller daemon in
+ ovn-controller-ramp
is the local controller daemon in
OVN, the Open Virtual Network, for VTEP enabled physical switches.
It connects up to the OVN Southbound database (see
ovn-sb
(5)) over the OVSDB protocol, and down to the VTEP
- database (see vtep
(5)) over the OVSDB protocol.
+ database (see ramp
(5)) over the OVSDB protocol.
- ovn-controller-vtep
retrieves its configuration
+ ovn-controller-ramp
retrieves its configuration
information from both the ovnsb and the vtep database. If the
database locations are not given from command line, the default
is the db.sock
in local OVSDB's 'run' directory.
diff --git a/controller-vtep/ovn-controller-vtep.c b/controller-ramp/ovn-controller-ramp.c
similarity index 94%
rename from controller-vtep/ovn-controller-vtep.c
rename to controller-ramp/ovn-controller-ramp.c
index b30a731d4..3cec834a7 100644
--- a/controller-vtep/ovn-controller-vtep.c
+++ b/controller-ramp/ovn-controller-ramp.c
@@ -40,10 +40,10 @@
#include "binding.h"
#include "gateway.h"
-#include "vtep.h"
-#include "ovn-controller-vtep.h"
+#include "ramp.h"
+#include "ovn-controller-ramp.h"
-static unixctl_cb_func ovn_controller_vtep_exit;
+static unixctl_cb_func ovn_controller_ramp_exit;
static void parse_options(int argc, char *argv[]);
OVS_NO_RETURN static void usage(void);
@@ -71,7 +71,7 @@ main(int argc, char *argv[])
if (retval) {
exit(EXIT_FAILURE);
}
- unixctl_command_register("exit", "", 0, 0, ovn_controller_vtep_exit,
+ unixctl_command_register("exit", "", 0, 0, ovn_controller_ramp_exit,
&exiting);
daemonize_complete();
@@ -89,7 +89,7 @@ main(int argc, char *argv[])
/* Main loop. */
exiting = false;
while (!exiting) {
- struct controller_vtep_ctx ctx = {
+ struct controller_ramp_ctx ctx = {
.vtep_idl = vtep_idl_loop.idl,
.vtep_idl_txn = ovsdb_idl_loop_run(&vtep_idl_loop),
.ovnsb_idl = ovnsb_idl_loop.idl,
@@ -98,7 +98,7 @@ main(int argc, char *argv[])
gateway_run(&ctx);
binding_run(&ctx);
- vtep_run(&ctx);
+ ramp_run(&ctx);
unixctl_server_run(unixctl);
unixctl_server_wait(unixctl);
@@ -116,7 +116,7 @@ main(int argc, char *argv[])
/* It's time to exit. Clean up the databases. */
bool done = false;
while (!done) {
- struct controller_vtep_ctx ctx = {
+ struct controller_ramp_ctx ctx = {
.vtep_idl = vtep_idl_loop.idl,
.vtep_idl_txn = ovsdb_idl_loop_run(&vtep_idl_loop),
.ovnsb_idl = ovnsb_idl_loop.idl,
@@ -127,7 +127,7 @@ main(int argc, char *argv[])
* We're done if all of them return true. */
done = binding_cleanup(&ctx);
done = gateway_cleanup(&ctx) && done;
- done = vtep_cleanup(&ctx) && done;
+ done = ramp_cleanup(&ctx) && done;
if (done) {
poll_immediate_wake();
}
@@ -262,7 +262,7 @@ Options:\n\
static void
-ovn_controller_vtep_exit(struct unixctl_conn *conn, int argc OVS_UNUSED,
+ovn_controller_ramp_exit(struct unixctl_conn *conn, int argc OVS_UNUSED,
const char *argv[] OVS_UNUSED, void *exiting_)
{
bool *exiting = exiting_;
diff --git a/controller-vtep/ovn-controller-vtep.h b/controller-ramp/ovn-controller-ramp.h
similarity index 97%
rename from controller-vtep/ovn-controller-vtep.h
rename to controller-ramp/ovn-controller-ramp.h
index 0eacdbe30..b8f78ce2f 100644
--- a/controller-vtep/ovn-controller-vtep.h
+++ b/controller-ramp/ovn-controller-ramp.h
@@ -22,7 +22,7 @@
struct ovsdb_idl;
struct ovsdb_idl_txn;
-struct controller_vtep_ctx {
+struct controller_ramp_ctx {
struct ovsdb_idl *ovnsb_idl;
struct ovsdb_idl_txn *ovnsb_idl_txn;
diff --git a/controller-vtep/vtep.c b/controller-ramp/ramp.c
similarity index 99%
rename from controller-vtep/vtep.c
rename to controller-ramp/ramp.c
index e2baca5a7..45b47ecf5 100644
--- a/controller-vtep/vtep.c
+++ b/controller-ramp/ramp.c
@@ -15,7 +15,7 @@
#include