I think the main issue is that when packets are being tunneled and NSH
is in use, the encapsulation format (and therefore OVS port type) is
not NSH - it's typically VXLAN-GPE. This is conceptually similar to
MPLS over GRE, which we don't currently support without an intervening
Ethernet header. However, if we did it would presumably use the
existing push/pop MPLS actions.

It seems like the only way to do this cleanly for both the NSH and
MPLS cases for tunneled and non-tunneled packets is to have push/pop
Ethernet and push/pop MPLS/NSH actions. This would allow the headers
to be built up incrementally in whatever form is appropriate.
Outputting to a tunnel or a physical port wouldn't need any actions
that are different at the tagging layer.

One other comment, unrelated to the above discussion, is that NSH is
continuing to make incompatible wire format changes. Specifically, the
option length field was recently changed from representing four byte
multiples to be the actual length. This brings up two questions:
 * Obviously the patches will need to be updated to handle this but
also it means that the option format is no longer exactly the same as
Geneve options. This will require some thought on how to support both
protocols while maximizing code reuse.
 * OVS strives to maintain consistent behavior for external interfaces
and it's not clear how this would be possible if the protocol
continues to change in the future.

On Thu, Sep 15, 2016 at 10:55 AM, Ben Pfaff <b...@ovn.org> wrote:
> It's fine with me to solve Ethernet encapsulation using push and pop
> actions, but I don't see why L2-in-L3 use of NSH should be any different
> from any other tunnel format.
>
> On Wed, Sep 07, 2016 at 02:22:39PM +0000, Jan Scheurich wrote:
>> Thanks Ben,
>>
>> I understood the conclusion of the earlier NSH discussions around November 
>> last year (e.g. 
>> http://openvswitch.org/pipermail/dev/2015-November/061933.html and 
>> http://openvswitch.org/pipermail/dev/2015-November/061921.html) was to 
>> separate NSH encapsulation from the underlying transport tunnels like 
>> VXLAN-GPE and handle push/pop_nsh in OpenFlow.
>>
>> The biggest issue for modelling NSH tunnels as tunnel ports is that the SFC 
>> controller must be able to send the NSH packets with Ethernet transport 
>> encapsulation out (to a VM) on a well-defined OF port. That basically rules 
>> out OVS tunnel ports for this use case as there is no outer IP layer and we 
>> cannot rely on the host kernel stack to route tunnel packets.
>>
>> I therefore believe we should stick to the agreed approach and solve the 
>> conceptual difficulties with push/pop_nsh actions.
>>
>> My preference would be to keep it simple for now and stay on the ground of 
>> the all-Ethernet pipeline. We can refine this once OVS implements support 
>> for packet type-aware pipeline or is generalized otherwise, e.g. when 
>> introducing support for P4.
>>
>> BR, Jan
>>
>> > -----Original Message-----
>> > From: Ben Pfaff [mailto:b...@ovn.org]
>> > Sent: Tuesday, 06 September, 2016 16:31
>> > To: Jesse Gross
>> > Cc: Jan Scheurich; Li, Johnson; Simon Horman; dev@openvswitch.org; Miguel 
>> > Angel Muñoz Gonzalez; Manuel Buil; László Sürü;
>> > Multanen, Eric W
>> > Subject: Re: [ovs-dev] NSH Option 2 implementation
>> >
>> > On Tue, Aug 23, 2016 at 07:47:50PM -0700, Jesse Gross wrote:
>> > > Ben mentioned that he had some comments on the "OVS philosophy" here
>> > > vs. OpenFlow, so that might affect things. Hopefully it will end up
>> > > simplifying things somewhat.
>> >
>> > Basically, OVS has implemented tunnels in its own fashion for far longer 
>> > than OpenFlow has had any support for tunnels.  OVS might
>> > eventually support both ways to handle tunnels but for now it makes sense 
>> > to continue implementing them in the OVS style.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to