Distributed gateway ? What do the kernel datapath flows look like ?
On 9/18/17, 11:29 PM, "[email protected] on behalf of Guoshuai Li" <[email protected] on behalf of [email protected]> wrote: In an ovn gateway node with DPDK, the RECIRC_DEPTH may be greater than 5. Scenes: VM ping self floating IP, or VM ping Floating IP of VMs with the same network. It need process UNDNAT SNAT in LRouter egress and UNSNAT DNAT in LRouter ingress, and output to geneve tunnel also need recirc. This has an WARN: dpif_netdev(pmd36)|WARN|Packet dropped. Max recirculation depth exceeded. --- lib/dpif-netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index ca74df8c7..2ad8c3143 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -82,7 +82,7 @@ VLOG_DEFINE_THIS_MODULE(dpif_netdev); #define FLOW_DUMP_MAX_BATCH 50 /* Use per thread recirc_depth to prevent recirculation loop. */ -#define MAX_RECIRC_DEPTH 5 +#define MAX_RECIRC_DEPTH 10 I guess the MAX_RECIRC_DEPTH should be as small as possible for valid use cases – 6 ? The check is ‘less than’. DEFINE_STATIC_PER_THREAD_DATA(uint32_t, recirc_depth, 0) /* Configuration parameters. */ -- This is my flows by ovs-appctl dpctl/dump-flows: tunnel(tun_id=0x2,src=10.157.145.211,dst=10.157.145.214,geneve({class=0x102,type=0x80,len=4,0x30005/0x7fffffff}),flags(-df+csum+key)),recirc_id(0),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(src=192.168.0.6,frag=no), packets:3, bytes:294, used:0.242s, actions:ct(zone=10,nat),recirc(0x10) tunnel(tun_id=0x2,src=10.157.145.211,dst=10.157.145.214,geneve({}),flags(-df+csum+key)),recirc_id(0x10),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(src=192.168.0.6,frag=no), packets:3, bytes:294, used:0.242s, actions:ct(commit,zone=3,nat(src=10.157.13.4)),recirc(0x11) tunnel(tun_id=0x2,src=10.157.145.211,dst=10.157.145.214,geneve({}),flags(-df+csum+key)),recirc_id(0x11),in_port(7),packet_type(ns=0,id=0),eth(src=fa:16:3e:d4:cb:56/01:00:00:00:00:00,dst=fa:16:3e:d4:cb:56),eth_type(0x0800),ipv4(src=10.157.13.4/255.255.255.128,dst=10.157.13.7,proto=1,ttl=63,frag=no), packets:3, bytes:294, used:0.242s, actions:ct(zone=3,nat),recirc(0x12) tunnel(tun_id=0x2,src=10.157.145.211,dst=10.157.145.214,geneve({}),flags(-df+csum+key)),recirc_id(0x12),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=10.157.13.7,frag=no), packets:3, bytes:294, used:0.242s, actions:ct(commit,zone=10,nat(dst=192.168.0.10)),recirc(0x13) tunnel(tun_id=0x2,src=10.157.145.211,dst=10.157.145.214,geneve({class=0x102,type=0x80,len=4,0x30005}),flags(-df+csum+key)),ct_state(-new+est-rel-rpl-inv+trk),ct_label(0/0x1),recirc_id(0x13),in_port(7),packet_type(ns=0,id=0),eth(src=fa:16:3e:d4:cb:56,dst=fa:16:3e:d4:cb:56),eth_type(0x0800),ipv4(dst=192.168.0.10,tos=0/0x3,ttl=63,frag=no), packets:2, bytes:196, used:0.241s, actions:set(eth(src=fa:16:3e:e4:ec:cd,dst=fa:16:3e:ed:4b:8a)),set(ipv4(dst=192.168.0.10,tos=0/0x3,ttl=62)),clone(tnl_push(tnl_port(7),header(size=58,type=5,eth(dst=6c:92:bf:13:be:0a,src=6c:92:bf:04:4c:b2,dl_type=0x0800),ipv4(src=10.157.145.214,dst=10.157.145.212,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=6081,csum=0xffff),geneve(crit,vni=0x1,options({class=0x102,type=0x80,len=4,0x10002}))),out_port(4)),push_vlan(vid=2515,pcp=0),hash(hash_l4(0)),recirc(0x1)) recirc_id(0x1),dp_hash(0x79f1a62d/0xff),in_port(4),packet_type(ns=0,id=0),eth_type(0x8100),vlan(vid=2515,pcp=0),encap(eth_type(0x0800),ipv4(frag=no)), packets:2, bytes:320, used:0.242s, actions:5 2.13.2.windows.1 _______________________________________________ dev mailing list [email protected] https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=1O8U7S-DkEKfm_1rUi8wJWAG6DdtrvTUn3WqjRZ44jg&s=y3uThLIiu-kTEYgJZtkU7dfmyJ1BmhfSP0xFgYuBawo&e= _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
