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