On Mon, Apr 15, 2013 at 03:59:52PM +0100, Zoltan Kiss wrote:
> When the packet is sent to the controller due to an userspace rule (and not
> a kernel-space flow), execute_controller_action is invoked with clone=true,
> so handle_flow_miss retains ownership of the packet buffer. But if it returns
> true (which means the packet had only a PACKET_IN action), nothing frees up
> the buffer.
> The problem has seen only in 1.4 branch.
> Tested with XenServer 6.1:
> - set up the controller, DVSC is fine
> - add a rule with high priority to force everything to the controller:
> ovs-ofctl add-flow [mgmt int] priority=65535,actions=controller
> - send a bunch of UDP packets to random ports to trigger misses in kernel:
> mz -B [mgmt IP] -d 100m eth0 -t udp sp=3000,dp=1024-65535,iplen=1400
> - track memory consumption over time
> 
> Signed-off-by: Zoltan Kiss <zoltan.k...@citrix.com>

I think you're right.  But in that case, wouldn't it solve the problem
in a better way (doing less memory allocation and copying) by passing
clone=false, instead of passing clone=true and then freeing the packet
in the caller?

Thanks,

Ben.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to