[ovs-dev] [OVS-dev]: OVN: RFC re: logical and physical endpoint separation proposal

Darrell Ball dball at vmware.com
Mon Feb 8 17:05:06 UTC 2016


Hi Russell

Thanks for your comments

Darrell




On 2/5/16, 12:23 PM, "Russell Bryant" <russell at ovn.org> wrote:

>On 01/29/2016 09:36 PM, Darrell Lu 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.
>
>I agree with this sort of separation in principle.  Some specific
>examples would help me understand the proposal, though.  You mention
>that this applies to both localnet and gateway cases.  Can we lay out
>some clear workflows before and after the proposed changes?
>
>The simplest localnet example would be connecting a single VM to a
>physical network locally attached to a hypervisor.
>
>On the hypervisor running, ovn-controller, we set:
>
>    $ ovs-vsctl set open . \
>    > external-ids:ovn-bridge-mappings=physnet1:br-eth1
>
>Then, we set up the logical connectivity with:
>
>    $ ovn-nbctl lswitch-add provnet1
>
>    $ ovn-nbctl lport-add provnet1 provnet1-lp1
>    $ ovn-nbctl lport-set-addresses provnet1-lp1 $MAC
>    $ ovn-nbctl lport-set-port-security provnet1-lp1 $MAC
>
>    $ ovn-nbctl lport-add provnet1 provnet1-physnet1
>    $ ovn-nbctl lport-set-addresses provnet1-physnet1 unknown
>    $ ovn-nbctl lport-set-type provnet1-physnet1 localnet
>    $ ovn-nbctl lport-set-options provnet1-physnet1 \
>    > network_name=physnet1
>
>Then we can create the VIF on the hypervisor like usual.
>
>How does your proposal modify the workflow for this use case?

Localnet case: The NB programming is unchanged, as intended.
 
The SB programming using sb-ctl in lieu of CMS might be of
the form below.
This example assumes that we use the legacy endpoint type of
single_vlan and vlan 42 is used on chassis_port_0 on chassis_only
(which is our HV in this example).

ovn-sbctl phys-endpt-add endpt_0 chassis_only chassis_port_0 single_vlan  42   42

 
ovn-sbctl    lport-bind-phys-endpt   provnet1-1-physnet1   endpt_0


>
>It would be nice to see the same sort of thing for gateways.  The
>OpenStack driver already has code for the current vtep gateway
>integration.  We set vtep_logical_switch and vtep_physical_switch on a
>logical port.  What new workflow would we need to implement?


Gateway case: Consider ls0-port2 is a logical endpt on a gateway

 
ovn-nbctl lswitch-add ls0
.
.
ovn-nbctl lport-add ls0 ls0-port2
.
.
ovn-nbctl lport-set-addresses ls0-port2 52:54:00:f3:1c:c6
.
.
ovn-nbctl lport-set-type ls0-port2 vtep

 
The NB programming lport-set-options, of the form:
“ovn-nbctl lport-set-options ls0-port2 vtep-physical-switch=br-int vtep-logical-switch=ls0”
could be omitted and the same information could be derived from
other logical/physical binding. SB programming semantics, assuming that we use
the legacy endpoint type and vlan 42 is used on chassis_port_0 on chassis_0 (a gateway):

 
ovn-sbctl phys-endpt-add endpt_0 chassis_0 chassis_port_0 single_vlan   42   42

 
ovn-sbctl    lport-bind-phys-endpt   ls0-port2  endpt_0



>
>Thanks,
>
>-- 
>Russell Bryant


More information about the dev mailing list