[ovs-dev] assertion failing in commit_set_ipv4_action(), flow->nw_proto != base_flow->nw_proto

Ben Pfaff blp at ovn.org
Thu Dec 1 04:50:28 UTC 2016


On Wed, Nov 30, 2016 at 06:58:57PM -0800, Jarno Rajahalme wrote:
> 
> > On Nov 30, 2016, at 8:41 AM, Ben Pfaff <blp at ovn.org> wrote:
> > 
> > On Wed, Nov 30, 2016 at 12:05:46PM +0100, Thomas Morin wrote:
> >> Hi Ben,
> >> 
> >> 2016-11-30, Ben Pfaff:
> >>> Do you have any idea what in your OpenFlow pipeline might do that,
> >>> i.e. is there anything especially tricky in the OpenFlow flows?
> >>> 
> >>> Are you willing to show us your OpenFlow flow table?
> >> 
> >> The setup involves three OVS bridges connected with patch-ports: br-int --
> >> br-tun -- br-mpls, with the traffic that triggers the assert being processed
> >> by br-int with a NORMAL action (ie. MAC learning).
> >> 
> >> The flows in this setup aren't particularly tricky, I think, although I'm
> >> not sure what qualifies as tricky or non-tricky :)
> >> 
> >> Anyway, since yesterday I managed to identify the event that trigger the
> >> assert, by adding more logging before the assert and displaying the actions
> >> taken:
> >> 
> >> 2016-11-29T14:44:40.126Z|00001|odp_util(revalidator45)|WARN|commit_set_ipv4_action
> >> assert would fail....
> >> 2016-11-29T14:44:40.126Z|00002|odp_util(revalidator45)|WARN|  base_flow: ip,in_port=5,dl_vlan=3,dl_vlan_pcp=0,dl_src=fa:16:3e:33:f7:fe,dl_dst=00:00:5e:00:43:64,nw_src=0.0.0.0,nw_dst=0.0.0.0,nw_proto=0,nw_tos=0,nw_ecn=0,nw_ttl=0
> >> 2016-11-29T14:44:40.126Z|00003|odp_util(revalidator45)|WARN|  flow: tcp,in_port=5,dl_vlan=3,dl_vlan_pcp=0,dl_src=fa:16:3e:33:f7:fe,dl_dst=00:00:5e:00:43:64,nw_src=10.0.1.22,nw_dst=10.0.0.3,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=53295,tp_dst=8080,tcp_flags=psh|ack
> >> 2016-11-29T14:44:40.126Z|00004|odp_util(revalidator45)|WARN|  masks: recirc_id=0xffffffff,reg0=0xffffffff,in_port=4294967295,dl_vlan=4095,dl_vlan_pcp=7,dl_src=ff:ff:ff:ff:ff:ff,dl_dst=ff:ff:ff:ff:ff:ff,dl_type=0xffff
> >> 2016-11-29T14:44:40.126Z|00005|odp_util(revalidator45)|WARN|  actions: set(ipv4(src=10.0.1.22,dst=10.0.0.3,ttl=63)),set(eth(src=b8:2a:72:de:1b:e3,dst=00:17:cb:79:2c:01)),push_mpls(label=410384,tc=0,ttl=63,bos=1,eth_type=0x8847),9,set(eth(src=fa:16:3e:33:f7:fe,dst=00:00:5e:00:43:64)),pop_mpls(eth_type=0x800),push_vlan(vid=3,pcp=0),1
> 
> push_mpls clears L3/L4, while pop_mpls re-populates them, and then processing the output to port 1 hits the assert?

That's what I'm thinking too.

Jarno, is this something you have time to look into?  It'd be great, if
you do.  I'm way behind.


More information about the dev mailing list