[ovs-discuss] Using ipv6_label match and dec_ttl action in flow rule produces errors
nm_r
nm_r at directbox.com
Sat Sep 1 17:28:29 UTC 2018
>> On Fri, Aug 31, 2018 at 03:14:39PM +0200, nm_r at directbox.com wrote:
>> Hello
>>
>> When using an ovs flow which matches on an IPv6 flow label and also using
>> the 'dec_ttl' action before outputing the packet to a switch port, ovs
>> produces errors. When removing either of the two from the rule it works
>> correctly.
>>
>> The (simplified) flow was:
>>
>>
>> ovs-ofctl add-flow "ovs" \
>> in_port=LOCAL,ipv6,ipv6_label=0x0000,actions=dec_ttl,output:"ovs_p1"
>>
>>
>> The flow rule is matched correctly (with trace and with real packets) and the
>> correspondent statistics counters on the flow rule are increased. But no packets
>> appear on the output port. Instead the following error messages can be found
>> in the ovs-vswitchd.log file (reformated for readability).
>>
>>
>> 2018-08-31T11:02:38.891Z|00614|dpif(handler63)|WARN|system at ovs-system:
>> failed to put[create] (Invalid argument) ufid:55a3aa72-a988-432a-a21f-ad4efde57db7
>> recirc_id(0),dp_hash(0/0),skb_priority(0/0),in_port(1),skb_mark(0/0),
>> ct_state(0/0),ct_zone(0/0),ct_mark(0/0),ct_label(0/0),
>> eth(
>> src=6e:de:2b:9d:82:4d,
>> dst=00:01:bb:04:01:01),
>> eth_type(0x86dd),
>> ipv6(
>> src=2001:db8:1000::100/::,
>> dst=2001:db8:1000::1/::,
>> label=0,
>> proto=17/0,tclass=0x29/0,hlimit=64,frag=no),
>> udp(src=2500/0,dst=2500/0),
>> actions:set(ipv6(label=0,hlimit=63)),2
>>
>>
>> 2018-08-31T11:02:38.891Z|00615|dpif(handler63)|WARN|system at ovs-system:
>> execute set(ipv6(label=0,hlimit=63)),2 failed
>> (Invalid argument) on packet
>> udp6,vlan_tci=0x0000,
>> dl_src=6e:de:2b:9d:82:4d,dl_dst=00:01:bb:04:01:01,
>> ipv6_src=2001:db8:1000::100,ipv6_dst=2001:db8:1000::1,
>> ipv6_label=0x00000,
>> nw_tos=40,nw_ecn=1,
>> nw_ttl=64,
>> tp_src=2500,tp_dst=2500,
>> udp_csum:ef7c
>> with metadata skb_priority(0),skb_mark(0),in_port(1) mtu 0
>>
>>
>> Tested on Ubuntu 16.04 LTS (64 bit kernel 4.4.0-134-generic) with ovs
>> version 2.9.0 and 2.10.0.
>>
>> I assume the correct behaviour should be a packet with IPv6 label 0 and a 1 less
>> ttl as on the input port.
>
> Hmm, that's weird.
>
> It's not a surprise that it takes both of the actions to produce this
> behavior. Without an output, OVS won't bother changing the packet, and
> it's changing the packet that's apparently provoking the problem.
>
> The action itself looks perfectly valid and I don't see anything in the
> datapath code that is intended to reject it.
>
> Linux 4.4 is slightly old but OVS fully supported IPv6 since long before
> that.
>
> Greg, do you have any idea?
>
> .
I was wondering why the log shows two actions
"actions:set(ipv6(label=0,hlimit=63))"
as there is only one defined in the flow "dec_ttl"? The flow label
is only matched if its 0 so why set it to 0 again in the action?
More information about the discuss
mailing list