On Tue, Jul 14, 2015 at 11:59:30AM -0400, Russell Bryant wrote:
> On 07/14/2015 10:59 AM, Ben Pfaff wrote:
> > Here's an a strawman alternative.  Instead of representing a provider
> > network as a single logical network, represent it as a collection of
> > logical networks, one for each connected port.  Each of these logical
> > networks has only two ports, the VM's port plus a physical port on the
> > hypervisor where the VM resides (or more likely a patch port to the
> > bridge that contains the physical port; the other end of the patch port
> > can be an access port if it's a VLAN provider network).  It seems to me
> > that this models the situation more naturally.
> > 
> > Thoughts?
> 
> That's a really interesting idea.  Conceptually it seems to map much
> nicer than the previous approach.  A logical port with MACs configured
> as "unknown" matches the processing needed.  I'm going to go down this
> road and see what I can come up with.
> 
> Some misc implementation thoughts ...
> 
> When Neutron creates these ports, it needs to indicate that one of the
> ports is special and maps to local connectivity to the provider network.
>  The ovn-controller-vtep work has similar needs and is doing so with a
> special port name that follows a particular pattern.
> 
> In the case of ovn-controller-vtep, it's using the pattern:
> 
>    <physical switch name>_<vtep logical switch name>
> 
> For provider networks, I need:
> 
>   - physical network name, which maps to a local ovs bridge
>     determined by configuration local to each ovn-controller
> 
>   - Optionally a VLAN ID
> 
> I was previously thinking that special names was fine, but maybe we
> should go ahead and add attributes to the logical port in OVN_Northbound
> to handle this.
>
> For reference, the current schema is:
> 
> >         "Logical_Port": {
> >             "columns": {
> >                 "name": {"type": "string"},
> >                 "parent_name": {"type": {"key": "string", "min": 0, "max": 
> > 1}},
> >                 "tag": {
> >                      "type": {"key": {"type": "integer",
> >                                       "minInteger": 0,
> >                                       "maxInteger": 4095},
> >                               "min": 0, "max": 1}},
> >                 "macs": {"type": {"key": "string",
> >                                   "min": 0,
> >                                   "max": "unlimited"}},
> >                 "port_security": {"type": {"key": "string",
> >                                            "min": 0,
> >                                            "max": "unlimited"}},
> >                 "up": {"type": {"key": "boolean", "min": 0, "max": 1}},
> >                 "enabled": {"type": {"key": "boolean", "min": 0, "max": 1}},
> >                 "external_ids": {
> >                     "type": {"key": "string", "value": "string",
> >                              "min": 0, "max": "unlimited"}}},
> >             "indexes": [["name"]],
> >             "isRoot": false},
> 
> We could add a new string column called "type".  Possible values could be:
> 
>   - (blank). The current behavior.
> 
>   - vtep : This logical port represents a connection to a logical switch
>     on a VTEP enabled switch
> 
>   - local : This logical port represents a connection to an OVS bridge
>     that exists locally to each ovn-controller.
> 
> Next we could have an "options" column  for key-value pairs of options
> specific to the configured "type".  For vtep you'd have the physical and
> logical switch names.  For local you'd have the network name and
> optionally a VLAN ID.

These all seem like reasonable ideas to me.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to