I have been investigating some anomalous behaviour in a switch (developed by us, based on OpenVSwitch code). It appears that flows added as a result of receiving IGMP packets are never deleted. Here's one of the flows (this is a switch running a simple MAC learning application, so you don't see the upper level fields).
recirc_id(0),in_port(2),eth(src=38:60:77:8b:d9:0a,dst=01:00:5e:00:00:16),eth_type(0x0800),ipv4(frag=no), packets:26, bytes:2236, used:9.600s, actions:1,6,5,4,3 Here's a log message I'm seeing: 2015 Apr 23 12:33:23 awplus ovs-vswitchd: 02570|dpif(revalidator4)|WARN|system@ovs-system: failed to flow_del (No such file or directory) skb_priority(0),skb_mark(0),recirc_id(0),dp_hash(0),in_port(2),eth(src=38:60:77:8b:d9:0a,dst=01:00:5e:00:00:16),eth_type(0x0800),ipv4(src=10.33.22.24,dst=224.0.0.22,proto=2,tos=0xc0,ttl=1,frag=no) Here's some debugging I added myself (not the same flow as above): adding flow, hash=-212754412, dmac=01-00-5e-00-00-16, dp_hash=0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000002 01005e00 00163860 778bd90a 08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0a211618 e0000016 00c00102 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *00220000* *00000001* 00000000 deleting flow, lookup failed, hash=801760725, dmac=01-00-5e-00-00-16, dp_hash=0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000002 01005e00 00163860 778bd90a 08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0a211618 e0000016 00c00102 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *00000000* *00000000* 00000000 This is showing a hex dump of the relevant flow structures. the highlighted fields are obviously different, and happen to be these: ovs_be16 tp_src; /* TCP/UDP/SCTP source port. */ ovs_be16 tp_dst; /* TCP/UDP/SCTP destination port. */ ovs_be32 igmp_group_ip4; /* IGMP group IPv4 address */ I have tracked this down (I believe) to the lack of support for these fields (for IGMP packets at least) in odp_flow_key_to_flow__ and odp_flow_key_from_flow__. Looking at some of the conversation around the original commits that added support for IGMP to the flow, I can see that some work may have been deferred, but there is some question as to whether we want this supported anyway. I would like to fix this issue if possible, but have some questions: 1 - is my analysis correct? 2 - is there more to fix than just the routines I mentioned? (I know, I should make the change and try it out, but it appears a bit more extensive than I first thought, including adding to enum ovs_key_attr, which I wouldn't do lightly.) 3 - is there something different I should be doing to fix my issue? (I have the option of not adding the flows in my dpif (a variant of dpif-netdev) which will solve the problem, but would possibly just be papering over this issue). Note that I updated our OVS from GitHub in Sep/2014. I have checked and there don't appear to be any subsequent commits that would address this. Thanks Tony
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss