On 2/15/16, 11:24 AM, "dev on behalf of Kyle Mestery"
<dev-boun...@openvswitch.org on behalf of mest...@mestery.com> wrote:
>On Fri, Jan 29, 2016 at 8:36 PM, Darrell Lu <dlu...@gmail.com> wrote:
>> 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.
>
>Is there any reason to restrict this to a VLAN from the start? If we
>allow it to be a VXLAN VNI, we could in theory make use of VXLAN
>tunnels for these as well as VLANs. This would help us to solve this
>requested feature in Neutron [1] for example, which is to support
>VXLAN encap for external routers in addition to VLANs.
>
>[1] https://bugs.launchpad.net/neutron/+bug/1525059
Just Catching up on e-mails
Thanks for the info. Kyle
I did not intend to suggest excluding Vxlan VNIs
IP tunnels mentioned in the type text, include Vxlan tunnels and
could include more than just Vxlan VNI encap
Is your requirement only for VNI specification or specifying a complete Vxlan
tunnel encap ?
>
>> 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
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
>_______________________________________________
>dev mailing list
>dev@openvswitch.org
>http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev