> > please see responses inline > > ---------- Forwarded message ---------- > From: Russell Bryant <russ...@ovn.org> > Date: Tue, Mar 29, 2016 at 11:18 AM > Subject: Re: [ovs-dev] [PATCH 1/2] [Patch V3] OVN: Physical Endpoints > To: Darrell Ball <dlu...@gmail.com> > Cc: ovs dev <dev@openvswitch.org> > > > > > On Tue, Mar 29, 2016 at 12:56 AM, Darrell Ball <dlu...@gmail.com> wrote: > >> The following patch series implements physical-logical separation >> to be used presently by gateways. >> >> The physical endpoint changes allow the physical network to be >> managed more easily by a dedicated provider network management function >> and also allow the northbound schema to remain purely logical. >> Another benefit to allow more easily for additional encapsulations to be >> used when interacting with physical provider networks. >> >> Physical endpoints are defined here as endpoints at the border of a >> physical network. >> This presently applies to gateways. >> If no physical endpt, the encap is assumed empty. >> For gateways, a single physical endpoint must be bound to each logical >> port. >> The chassis name must match the chassis system-id. All 6 arguments must >> be supplied for gateway physical endpoints configuration. >> Support is provided to bind multiple physical endpoints to a logical port >> for >> future considerations. >> >> Physical Endpoint Patch: >> >> ovn-sb.ovsschema: Add physical endpoint table and phys_endpts to logical >> ports >> >> ovn-sb.xml: Update documentation regarding physical endpoints and their >> binding to logical ports. Also describe possible future encapsulation >> type usages. >> >> ovn-sbctl.c: Add configuration for physcial endpoints and binding to >> logical ports. >> >> ovn-sbctl.8.in: Update the ovn-sbctl man page for physical endpoints and >> binding >> to logical ports. >> >> Signed-off-by: Darrell Ball <db...@vmware.com> >> --- >> ovn/ovn-sb.ovsschema | 23 +++- >> ovn/ovn-sb.xml | 75 +++++++++++ >> ovn/utilities/ovn-sbctl.8.in | 47 +++++++ >> ovn/utilities/ovn-sbctl.c | 290 >> ++++++++++++++++++++++++++++++++++++++++++- >> 4 files changed, 429 insertions(+), 6 deletions(-) >> >> diff --git a/ovn/ovn-sb.ovsschema b/ovn/ovn-sb.ovsschema >> index 32f8748..14ecb99 100644 >> --- a/ovn/ovn-sb.ovsschema >> +++ b/ovn/ovn-sb.ovsschema >> @@ -1,7 +1,7 @@ >> { >> "name": "OVN_Southbound", >> - "version": "1.2.0", >> - "cksum": "1259182303 5368", >> + "version": "1.3.0", >> + "cksum": "4176169852 6394", >> > > The patch will have to be rebased as this has changed in the meantime. > > >> "tables": { >> "Chassis": { >> "columns": { >> @@ -71,6 +71,21 @@ >> "min": 0, "max": "unlimited"}}}, >> "indexes": [["tunnel_key"]], >> "isRoot": true}, >> + "Physical_Endpoint": { >> + "columns": { >> + "name": {"type": "string"}, >> + "chassis": {"type": {"key": {"type": "uuid", >> + "refTable": "Chassis", >> + "refType": "weak"}, >> + "min": 1, "max": 1}}, >> + "chassis_port": {"type": {"key": "string", "min": 1, >> "max": 1}}, >> + "type": {"type": {"key": { >> + "type": "string", >> + "enum": ["set", ["vlan"]]}}}, >> + "ingress_encap": {"type": "string"}, >> + "egress_encap": {"type": "string"}}, >> + "indexes": [["name"]], >> + "isRoot": true}, >> "Port_Binding": { >> "columns": { >> "logical_port": {"type": "string"}, >> @@ -96,6 +111,10 @@ >> "refTable": "Chassis", >> "refType": "weak"}, >> "min": 0, "max": 1}}, >> + "phys_endpts": {"type": {"key": {"type": "uuid", >> + "refTable": >> "Physical_Endpoint", >> + "refType": "weak"}, >> + "min": 0, "max": "unlimited"}}, >> "mac": {"type": {"key": "string", >> "min": 0, >> "max": "unlimited"}}}, >> > > The code and documentation both seem to imply that there should be at most > 1 Physical_Endpoint per Port_Binding. Should "unlimited" by "1" here? If > multiple endpoints gains a meaning in the future, it can be changed. > > >> The port binding code and documentation clearly support binding > multiple physical endpoints to a logical > >> port. > >> look here: *cmd_lport_bind_phys_endpts*(*struct* ctl_context *ctx) > > > More broadly, I'm also wondering if having Physical_Endpoints on each > Port_Binding makes sense. We already have Chassis. To me, binding the > gateway port to a chassis is the relationship that makes sense here. How > that is realized on the chassis is a separate thing. It seems like a list > of physical endpoints could be on the Chassis, instead. > > > >> The pre-existing code used by hypervisors binds logical ports to > "physical endpts". This is done thru. the > >> iface-id in external_ids. This is needed to map b/w logical and > physical "endpoints". > > > We also have a somewhat conflicting approach in configuring each chassis. > We have ovn-bridge-mappings, but these patches take a different approach > that doesn't appear to actually work in all cases. > > >> This approach works in all cases > >> If there is a case that it does not support, I can comment on the > design of that feature - let me know > > A Physical_Endpoint has a "chassis_port". The code will look for > br-<chassis_port> and create it if it doesn't exist. If ovn-controller > creates it, it won't do anything useful as no interface has been added to > the bridge. > > >> It creates a trunk port which is all that is needed; this port is > intended to be unmanaged by OVN > > I'd rather just make use of ovn-bridge-mappings. Roughly, I think that > means replacing "chassis_port" with "network_name" and using that name to > figure out which bridge to use on the chassis based on its local > ovn-bridge-mappings configuration. > > >> I disagree; the bridge mappings is being generated by a human parsing > the network topology and port > >> mapping per chassis on every chassis; this is both error prone and > manual work intensive. > >> I think a later patch proposes then copying bridge-mapping to the > chassis table so it can be used > >> by the CMS > >> This marshalling cannot be managed easily and is limited in > applicability in real networks > > >> The physical endpoint approach has a few aspects including making the > physical network config more > >> plug and play, allowing the physical and logical networks to be managed > separately and supporting >
> >> different >> encapsulations seen in most real provider networks > > > > To be even more difficult, I still find myself wondering if this > Physical_Endpoint stuff is needed at all. It doesn't seem to actually add > any new capabilities, but it does add new complexity. I feel like we could > add this initial L2 gateway support without having it at all. I couldn't > help myself and have started writing it to try to see what that would look > like. I'm trying to do it as quick as I can so that I can get on board > with this or have a more clear alternative proposal. > > -- > Russell Bryant > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev