[ovs-dev] [OVS-dev]: OVN: RFC re: logical and physical endpoint separation proposal
Darrell Lu
dlu998 at gmail.com
Sat Jan 30 02:36:59 UTC 2016
The following is a proposal regarding how to allow logical
and physical endpoint contexts for OVN to stay separated, from
a CMS POV.
A logical endpoint has the form: ls1-port1.
A physical endpoint has the general form:
chassis/physical port or location on chassis/encapsulation.
Some advantages for cleanly separating logical and physical
layers are:
1) Logical and physical domains can be managed separately; for
example, by different companies or business units, with minimal
interaction overhead.
2)The physical layer details can change without needing to
change the logical layer; for example, a physical endpoint
vlan can change without needing to change the logical layer,
which in OVN resides in the NB DB.
The physical endpoint encapsulations can even change in future,
without needing to update the NB DB supported options and/or
churning the NB DB.
3) The logical configuration remains simple in that it just needs
to concern itself with tasks such linking users to services,
without too much concern about where the services
or users are presently located.
A physical topology CMS or sub-component of a CMS can be
used to configure physical endpoints in the SB DB directly,
bypassing the NB DB and northd processing.
A new Physical_Endpoint table describes endpoints used to reach a
physical network only, including localnet and gateway cases.
This physical topology CMS would write to this new table.
Physical_Endpoint TABLE
Summary:
Core Features:
name string (must be unique within table)
chassis chassis record
chassis_port string
type string
ingress_encap string
egress_encap string
Details:
Core Features:
name: string (must be unique within table)
A physical_endpoint name which can be used to describe
its
connection role.
chassis: chassis record.
chassis_port: string
Physical port with the context the associated chassis.
type: string, can be single vlan, which is presently supported.
In future, a tunnel type such as MPLS/IP tunnels or
multiple vlans might be used. Nomenclature is TBD.
ingress_encap: string
Encapsulation expected for packets received on this
physical endpoint. Incorrect encapsulation will
result in packet drop.
egress_encap: string
Encapsulation used for packets transmitted on this
physical endpoint.
If type is vlan, ingress_encap == egress_encap as
per existing OVN expected behavior.
A new ovn-sbctl command can be used in lieu of CMS support.
ovn-sbctl phys-endpt-add phys_endpt_name chassis_name chassis_port type
ingress_encap egress_encap
The existing Port Binding table is modified for localnet and gateway cases.
options : phys_endpt was added for gateways.
options : phys_endpt replaces tag for localnet.
Note that there is some redundancy in information, as phys_endpt
includes chassis and there is a separate column for chassis in the
Port Binding table.
Port_Binding TABLE
.
.
.
Summary:
Core Features:
datapath Datapath_Binding
logical_port string (must be unique within table)
chassis optional weak reference to Chassis
tunnel_key integer, in range 1 to 32,767
mac set of strings
type string
Patch Options:
options : peer optional string
Localnet Options:
options : network_name optional string
options : phys_endpt optional physical endpoint record
VTEP Options:
options : vtep-physical-switch
optional string
options : vtep-logical-switch
optional string
options : phys_endpt optional physical endpoint record
Nested Containers:
parent_port optional string
tag optional integer, in range 1 to 4,095
.
.
.
Details:
Localnet Options:
These options apply to logical ports with type of localnet.
options : phys_endpt: optional physical endpoint record
Used to derive physical port, ingress encapsulations
and egress encapsulations.
.
.
VTEP Options:
These options apply to logical ports with type of vtep.
options : phys_endpt: optional physical endpoint record
Used to derive physical port, ingress encapsulations
and egress encapsulations.
.
.
.
The existing ovn-sbctl lport-bind command syntax is not modified so as not
to impact existing HV support. This may be TBD.
A new ovn-sbctl command is added for use in localnet and gateway cases.
The below command should be used in place of ovn-sbctl lport-bind for
localnet and gateway cases.
ovn-sbctl lport-bind-phys-endpt logical-port phys-endpt-name
[--may-exist] lport-bind-phys-endpt logical-port phys-endpt-name
Binds the logical port named logical-port to phys-endpt.
Without --may-exist, attempting to bind a logical port that
has
already been bound is an error. With --may-exist, this
command
does nothing if logical-port has already been bound to a
phys-endpt.
[--if-exists] lport-unbind-phys-endpt logical-port phys-endpt-name
Resets the binding of logical-port to NULL.
Without --if-exists, attempting to unbind a logical port that
is
not bound is an error. With --if-exists, attempting to
unbind
logical port that is not bound has no effect.
Darrell
More information about the dev
mailing list