[ovs-dev] [PATCH] ofproto-dpif: Fix vlan-splinter megaflow bug

Ben Pfaff blp at nicira.com
Tue Jan 7 17:58:35 UTC 2014


On Tue, Jan 07, 2014 at 01:11:18AM -0800, Andy Zhou wrote:
> When vlan-splinter is enabled, ovs receives non-vlan flows from the
> kernel vlan ports, vlan tag is then added to the incoming flow before
> xlating, so that they look like those received from a trunk port.
> 
> In case megaflow is enabled, xlating may set vlan masks during rule
> processing as usual. If those vlan masks were serialized and downloaded
> to the kernel (this bug), those mega flows will be rejected due to
> unexpected vlan mask encapsulation, since the original kernel flows do
> not have vlan tags. This bug does not break connectivity, but impacts
> performance since all traffic received on vlan splinter ports will now
> be handled by vswitchd, as no datapath flows can be successfully
> installed.
> 
> This fix is to make sure no vlan mask encapsulation is generated for
> the datapath flow if its in_port was re-written by vlan-splinter
> receiving logic.
> 
> Bug fixed: 22567
> 
> Signed-off-by: Andy Zhou <azhou at nicira.com>

Good work tracking this down, thanks.

Does this go all the way back to 1.11?

Indentation looks wrong to me here, I think tabs were used instead of
spaces for a few lines.

            /* Remove the flow vlan tags inserted by vlan splinter logic
	     * to ensure megaflow masks generated will match the original
	     * incoming flow. */

Why is compose_output_action__() changing?  I suspect that it is still
necessary, because when VLAN splinters are in use the choice of the
datapath output port depends on the VLAN in use (that is, output to
OpenFlow port eth0 might go to network device eth0 for VLAN 0 and
e.g. eth0.9 for VLAN 9).

Thanks,

Ben.



More information about the dev mailing list