[ovs-discuss] ping6 delay shaking with nd_target

sunquanying sunquanying at huawei.com
Tue Mar 12 12:52:25 UTC 2019


Hello:

We have a problem of  occasionally delay shaking at IPv6 when add the following flow:

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,icmp6,dl_src=fa:16:3e:01:01:40,icmp_type=136,nd_target=2002:1::a84c:b41d:3e1:140 actions=output:4"
ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,dl_src=fa:16:3e:01:01:40,ipv6 actions=output:4"
ovs-ofctl add-flow ply1-1-0 "table=0,priority=10,ipv6,in_port=4 actions=output:3"

In order to  make the problem a definite one, we add "need_revalidate = true" in revalidate_ukey() as following.
static enum reval_result revalidate_ukey( ...... )
{
    ......
    need_revalidate = true;
    if (need_revalidate) {
......
}
}

We add "need_revalidate = true"  and do the following test :

1.       Add flow: (packets only hit the second and third flow, and will never hit the first one.)

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,icmp6,dl_src=fa:16:3e:01:01:40,icmp_type=136,nd_target=2002:1::a84c:b41d:3e1:140 actions=output:4"

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,dl_src=fa:16:3e:01:01:40,ipv6 actions=output:4"

ovs-ofctl add-flow ply1-1-0 "table=0,priority=10,ipv6,in_port=4 actions=output:3"

average ping6 delay > 0.3ms



2.       Modify dl_src of the first flow in experiment 1:

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,icmp6,dl_src=fa:16:3e:11:11:41,icmp_type=136,nd_target=2002:1::a84c:b41d:3e1:140 actions=output:4"

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,dl_src=fa:16:3e:01:01:40,ipv6 actions=output:4"

ovs-ofctl add-flow ply1-1-0 "table=0,priority=10,ipv6,in_port=4 actions=output:3"


average ping6 delay < 0.1ms


3.       Delete the first flow in experiment 1:

ovs-ofctl add-flow ply1-1-0 "table=0,priority=2,in_port=3,dl_src=fa:16:3e:01:01:40,ipv6 actions=output:4"

ovs-ofctl add-flow ply1-1-0 "table=0,priority=10,ipv6,in_port=4 actions=output:3"



average ping6 delay < 0.1ms

It seems like that nd_target mask has been set as 0xffff when upcall in flow_wildcards_fold_minimask_in_map(), but change to 0x0000 when generate dpcls_rule, which leads to this phenomenon.
Tcp and udp packets have the same results with icmpv6 ping6 packets when add the first flow in experiment 1.

Could you please give us some suggestions on how to solve this problem? Will you fix this problem?

Thank you.

# ovs-ofctl --version
ovs-ofctl (Open vSwitch) 2.7.3
OpenFlow versions 0x1:0x4
Release version: R5.RC6.018

#  uname -a
Linux linux-xWqfOT 3.10.0-862.14.1.6_8.x86_64 #1 SMP Thu Dec 20 00:00:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

# ovs-ofctl show ply1-1-0
OFPT_FEATURES_REPLY (xid=0x2): dpid:00004a6cdb36e948
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue ext_action set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
3(tap1-1-0): addr:d2:90:f6:f9:e6:21
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
4(pvi1-1-0): addr:ba:2d:6c:d6:b7:ce
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
LOCAL(ply1-1-0): addr:4a:6c:db:36:e9:48
     config:     0
     state:      0
     current:    10MB-FD COPPER
     speed: 10 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

# ovs-vsctl show
Bridge "ply1-1-0"
        fail_mode: secure
        Port "ply1-1-0"
            Interface "ply1-1-0"
                type: internal
        Port "pvi1-1-0"
            tag: 4093
            Interface "pvi1-1-0"
                type: patch
                options: {peer="pvo1-1-0"}
        Port "tap1-1-0"
            tag: 4092
            Interface "tap1-1-0"
                type: virtio


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-discuss/attachments/20190312/7c68ae46/attachment-0001.html>


More information about the discuss mailing list