OVN-Kubernetes: EgressIP breaks access from a pod with EgressIP to other host networked pods on different nodes Scenario: * pod <podA> on node <nodeA> in namespace <nsA> accesses a host networked pod <podB> on node <nodeB> * EgressIP <eipA> is assigned to namespace <nsA> * Traffic from <podA> to <podB> breaks Pods: ~~~ [akaris@linux 2070878]$ oc get pods -A -o wide | grep egress | grep -v debug e2e-test-egressip-8wznm egressip-target-daemonset-sq27b 1/1 Running 0 19m 10.0.135.215 ip-10-0-135-215.ec2.internal <none> <none> e2e-test-egressip-pfvtq e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p 1/1 Running 0 19m 10.128.2.20 ip-10-0-144-143.ec2.internal <none> <none> [akaris@linux 2070878]$ ~~~ Before applying the EgressIP: ================================================ curl from ~~~ ~ $ curl 10.0.135.215:32667/clientip 10.0.144.143:49524~ $ ~~~ Tcpdump on node/ip-10-0-144-143.ec2.internal - we see that the traffic is SNAT'ed to the source node and then sent to the destination node: ~~~ sh-4.4# tcpdump -nne -i ens5 host 10.0.135.215 and port 32667 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens5, link-type EN10MB (Ethernet), capture size 262144 bytes 10:44:21.980235 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 74: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [S], seq 337255231, win 26583, options [mss 8861,sackOK,TS val 2215492582 ecr 0,nop,wscale 7], length 0 10:44:21.981733 0e:4c:94:8d:88:a3 > 0e:61:09:b2:50:0b, ethertype IPv4 (0x0800), length 74: 10.0.135.215.32667 > 10.0.144.143.49524: Flags [S.], seq 1450458968, ack 337255232, win 26847, options [mss 8961,sackOK,TS val 2693376292 ecr 2215492582,nop,wscale 7], length 0 10:44:21.982334 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 156: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [P.], seq 1:91, ack 1, win 208, options [nop,nop,TS val 2215492584 ecr 2693376292], length 90 10:44:21.982339 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 66: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [.], ack 1, win 208, options [nop,nop,TS val 2215492584 ecr 2693376292], length 0 (...) ~~~ We see the same traffic on the destination host ip-10-0-135-215.ec2.internal: ~~~ h-4.4# tcpdump -nne -i ens5 host 10.0.135.215 and port 32667 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens5, link-type EN10MB (Ethernet), capture size 262144 bytes 10:44:21.980683 0a:a8:54:d9:eb:39 > 0a:71:d0:10:a3:bd, ethertype IPv4 (0x0800), length 74: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [S], seq 337255231, win 26583, options [mss 8861,sackOK,TS val 2215492582 ecr 0,nop,wscale 7], length 0 10:44:21.981285 0a:71:d0:10:a3:bd > 0a:a8:54:d9:eb:39, ethertype IPv4 (0x0800), length 74: 10.0.135.215.32667 > 10.0.144.143.49524: Flags [S.], seq 1450458968, ack 337255232, win 26847, options [mss 8961,sackOK,TS val 2693376292 ecr 2215492582,nop,wscale 7], length 0 10:44:21.982748 0a:a8:54:d9:eb:39 > 0a:71:d0:10:a3:bd, ethertype IPv4 (0x0800), length 156: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [P.], seq 1:91, ack 1, win 208, options [nop,nop,TS val 2215492584 ecr 2693376292], length 90 10:44:21.982796 0a:a8:54:d9:eb:39 > 0a:71:d0:10:a3:bd, ethertype IPv4 (0x0800), length 66: 10.0.144.143.49524 > 10.0.135.215.32667: Flags [.], ack 1, win 208, options [nop,nop,TS val 2215492584 ecr 2693376292], length 0 (...) ~~~ OVN trace: ~~~ sh-4.4# ovn-nbctl show | egrep -B2 'switch|10.128.2.20' switch dcd8fa58-03a6-482d-931a-b207accc0165 (ip-10-0-168-18.ec2.internal) -- port openshift-kube-scheduler-operator_openshift-kube-scheduler-operator-77c7f8f6ff-7fn66 addresses: ["0a:58:0a:80:00:16 10.128.0.22"] switch 3c724fa1-6664-4c49-9c88-01cac428762d (join) -- type: router router-port: rtoj-GR_ip-10-0-138-37.ec2.internal switch 77e3c872-5088-4869-8b37-ab015dc16b42 (ip-10-0-144-143.ec2.internal) port e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p addresses: ["0a:58:0a:80:02:14 10.128.2.20"] -- port openshift-image-registry_image-registry-57bb877cc5-shqlm addresses: ["0a:58:0a:80:02:07 10.128.2.7"] switch 4b47a71a-3fa6-471c-af98-4e22ef48e4a5 (ext_ip-10-0-161-98.ec2.internal) -- addresses: ["02:8e:15:e3:f3:75"] router-port: rtoe-GR_ip-10-0-161-98.ec2.internal switch 0c0b1dba-c86c-4b63-aa97-cb67a2527f34 (ip-10-0-138-37.ec2.internal) -- port openshift-kube-apiserver_installer-6-ip-10-0-138-37.ec2.internal addresses: ["0a:58:0a:81:00:24 10.129.0.36"] switch 7e5734eb-3dad-4c48-ab52-d7f20ac4b633 (ext_ip-10-0-144-143.ec2.internal) -- addresses: ["0e:61:09:b2:50:0b"] router-port: rtoe-GR_ip-10-0-144-143.ec2.internal switch 9825c9cd-6335-451c-84b7-ef285953fe0e (ext_ip-10-0-135-215.ec2.internal) -- type: localnet addresses: ["unknown"] switch fc0693fd-671a-499a-a86a-020a2a61ee40 (ip-10-0-153-96.ec2.internal) -- port openshift-marketplace_redhat-operators-dwwrf addresses: ["0a:58:0a:82:00:13 10.130.0.19"] switch 29a2c24d-4f6a-497e-91cc-2586cbef2b78 (ext_ip-10-0-168-18.ec2.internal) -- addresses: ["02:05:50:99:1d:71"] router-port: rtoe-GR_ip-10-0-168-18.ec2.internal switch 0e3c41a6-aea5-4ac7-8f8c-5fea3898cde2 (ip-10-0-135-215.ec2.internal) -- port openshift-dns_dns-default-gg79c addresses: ["0a:58:0a:81:02:07 10.129.2.7"] switch 727a729f-24d8-4403-ac7e-410f9a7246ca (ip-10-0-161-98.ec2.internal) -- port openshift-monitoring_telemeter-client-68f77c5577-fqs2t addresses: ["0a:58:0a:83:00:09 10.131.0.9"] switch d748ae7f-f130-4277-bfd5-0199f322072a (ext_ip-10-0-138-37.ec2.internal) -- type: localnet addresses: ["unknown"] switch c8a8cc67-e15f-4291-b224-5602fcdd9e61 (ext_ip-10-0-153-96.ec2.internal) -- nat 0340500b-83b1-4e96-948a-c2496cff9586 external ip: "10.0.144.143" logical ip: "10.128.2.20" sh-4.4# ovn-nbctl show | grep rtos-ip-10-0-144-143.ec2.internal -A3 router-port: rtos-ip-10-0-144-143.ec2.internal port openshift-monitoring_prometheus-k8s-1 addresses: ["0a:58:0a:80:02:0d 10.128.2.13"] port openshift-ingress-canary_ingress-canary-qwjwr -- port rtos-ip-10-0-144-143.ec2.internal mac: "0a:58:0a:80:02:01" networks: ["10.128.2.1/23"] gateway chassis: [d9e825b4-9e8a-4c40-8fea-8887e0f60212] ~~~ ~~~ sh-4.4# ovn-trace --minimal --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.215 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.215,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 *** no OpenFlow flows; *** no OpenFlow flows; ct_lb { reg0[6] = 0; *** chk_lb_hairpin_reply action not implemented; reg0[12] = 0; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 0a:58:64:40:00:01; eth.dst = 0a:58:64:40:00:06; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 0e:61:09:b2:50:0b; eth.dst = 0e:4c:94:8d:88:a3; ct_dnat /* assuming no un-dnat entry, so no change */ { *** no OpenFlow flows; ct_snat(ip4.src=10.0.144.143) { *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; output("br-ex_ip-10-0-144-143.ec2.internal"); }; }; }; ~~~ ~~~ sh-4.4# ovn-trace --friendly-names --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.215 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.215,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 ingress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p") -------------------------------------------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == {0a:58:0a:80:02:14}, priority 50, uuid bb5f0a86 *** no OpenFlow flows next; 1. ls_in_port_sec_ip (northd.c:5142): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && ip4.src == {10.128.2.20}, priority 90, uuid 9d4b07c7 *** no OpenFlow flows next; 5. ls_in_pre_acl (northd.c:5769): ip, priority 100, uuid 9089bb6c cookie=0x9089bb6c, duration=8189.917s, table=13, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) cookie=0x9089bb6c, duration=8189.917s, table=13, n_packets=1153180, n_bytes=896794830, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) reg0[0] = 1; next; 6. ls_in_pre_lb (northd.c:5901): ip, priority 100, uuid adfd637e cookie=0xadfd637e, duration=8189.924s, table=14, n_packets=1153180, n_bytes=896794830, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) cookie=0xadfd637e, duration=8189.924s, table=14, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) reg0[2] = 1; next; 7. ls_in_pre_stateful (northd.c:5928): reg0[2] == 1 && ip4 && tcp, priority 120, uuid c95e8d65 cookie=0xc95e8d65, duration=8189.870s, table=15, n_packets=0, n_bytes=0, idle_age=8189, priority=120,tcp,reg0=0x4/0x4,metadata=0x9 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8189.924s, table=15, n_packets=0, n_bytes=0, idle_age=8189, priority=120,tcp,reg0=0x4/0x4,metadata=0x3 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8189.925s, table=15, n_packets=1149633, n_bytes=896215204, idle_age=0, priority=120,tcp,reg0=0x4/0x4,metadata=0x4 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) reg1 = ip4.dst; reg2[0..15] = tcp.dst; ct_lb; ct_lb ----- 8. ls_in_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid 40fbe707 cookie=0x40fbe707, duration=8189.925s, table=16, n_packets=23065, n_bytes=1748569, idle_age=1, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,17) reg0[7] = 1; reg0[9] = 1; next; 9. ls_in_acl (northd.c:6448): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid d81e8ce4 cookie=0xd81e8ce4, duration=8189.924s, table=17, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8189.924s, table=17, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8189.924s, table=17, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8189.924s, table=17, n_packets=23065, n_bytes=1748569, idle_age=1, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) reg0[1] = 1; next; 12. ls_in_stateful (northd.c:6789): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid eada98b2 cookie=0xeada98b2, duration=8189.870s, table=20, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8189.872s, table=20, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8189.924s, table=20, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8189.924s, table=20, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8189.926s, table=20, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8189.926s, table=20, n_packets=18382, n_bytes=1361064, idle_age=1, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) ct_commit { ct_label.blocked = 0; }; next; 13. ls_in_pre_hairpin (northd.c:6816): ip && ct.trk, priority 100, uuid 183345c2 cookie=0x183345c2, duration=8189.926s, table=21, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ct_state=+trk,ipv6,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) cookie=0x183345c2, duration=8189.926s, table=21, n_packets=1134525, n_bytes=895418520, idle_age=0, priority=100,ct_state=+trk,ip,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) reg0[6] = chk_lb_hairpin(); reg0[12] = chk_lb_hairpin_reply(); *** chk_lb_hairpin_reply action not implemented next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:0a:80:02:01, priority 50, uuid 371919d7 *** no OpenFlow flows outport = "stor-ip-10-0-144-143.ec2.internal"; output; egress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p", outport="stor-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid ebde06b7 *** no OpenFlow flows next; 1. ls_out_pre_acl (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid f14b6ba3 *** no OpenFlow flows next; 3. ls_out_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid dc4eb3b9 cookie=0xdc4eb3b9, duration=8189.925s, table=43, n_packets=26418, n_bytes=2050186, idle_age=0, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,44) reg0[7] = 1; reg0[9] = 1; next; 4. ls_out_acl (northd.c:6451): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid eb6560a9 cookie=0xeb6560a9, duration=8189.925s, table=44, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8189.925s, table=44, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8189.925s, table=44, n_packets=0, n_bytes=0, idle_age=8189, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8189.925s, table=44, n_packets=14364, n_bytes=1158190, idle_age=0, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) reg0[1] = 1; next; 7. ls_out_stateful (northd.c:6793): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid 3eb26158 cookie=0x3eb26158, duration=8189.871s, table=47, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8189.872s, table=47, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8189.925s, table=47, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8189.925s, table=47, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8189.926s, table=47, n_packets=0, n_bytes=0, idle_age=8189, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8189.926s, table=47, n_packets=26418, n_bytes=2050186, idle_age=0, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) ct_commit { ct_label.blocked = 0; }; next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "stor-ip-10-0-144-143.ec2.internal", priority 50, uuid 195755b8 *** no OpenFlow flows output; /* output to "stor-ip-10-0-144-143.ec2.internal", type "patch" */ ingress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:0a:80:02:01 && inport == "rtos-ip-10-0-144-143.ec2.internal" && is_chassis_resident("cr-rtos-ip-10-0-144-143.ec2.internal"), priority 50, uuid 0294dd7b *** no OpenFlow flows xreg0[0..47] = 0a:58:0a:80:02:01; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8189.925s, table=9, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8189.888s, table=9, n_packets=354745, n_bytes=157723633, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1, priority 100, uuid 64eb7612 cookie=0x64eb7612, duration=8189.925s, table=10, n_packets=759804, n_bytes=441971831, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x5 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8189.925s, table=18, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8189.887s, table=18, n_packets=354726, n_bytes=157722177, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): ip4.src == 10.128.2.0/23, priority 69, uuid 3fe29bc6 cookie=0x3fe29bc6, duration=7393.022s, table=19, n_packets=0, n_bytes=0, idle_age=7393, priority=69,ip,metadata=0x5,nw_src=10.128.2.0/23 actions=dec_ttl(),set_field:0/0xffff00000000->xreg4,set_field:0x64400006000000000000000000000000/0xffffffff000000000000000000000000->xxreg0,set_field:0x644000010000000000000000/0xffffffff0000000000000000->xxreg0,set_field:0a:58:64:40:00:01->eth_src,set_field:0x3->reg15,set_field:0x1/0x1->reg10,resubmit(,20) ip.ttl--; reg8[0..15] = 0; reg0 = 100.64.0.6; reg1 = 100.64.0.1; eth.src = 0a:58:64:40:00:01; outport = "rtoj-ovn_cluster_router"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8189.925s, table=20, n_packets=759804, n_bytes=441971831, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8189.888s, table=20, n_packets=354720, n_bytes=157721805, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:8683): ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.135.215/32, priority 101, uuid fa257030 cookie=0xfa257030, duration=7440.002s, table=21, n_packets=0, n_bytes=0, idle_age=7440, priority=101,ip,metadata=0x5,nw_src=10.128.0.0/14,nw_dst=10.0.135.215 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8189.925s, table=22, n_packets=759804, n_bytes=441971831, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8189.887s, table=22, n_packets=354720, n_bytes=157721805, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11535): outport == "rtoj-ovn_cluster_router" && reg0 == 100.64.0.6, priority 100, uuid fb98b80d cookie=0xfb98b80d, duration=7393.044s, table=23, n_packets=33, n_bytes=6642, idle_age=182, priority=100,reg0=0x64400006,reg15=0x3,metadata=0x5 actions=set_field:0a:58:64:40:00:06->eth_dst,resubmit(,24) eth.dst = 0a:58:64:40:00:06; next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8189.925s, table=27, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8189.888s, table=27, n_packets=354718, n_bytes=157721657, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal", outport="rtoj-ovn_cluster_router") -------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8189.926s, table=40, n_packets=756496, n_bytes=703482530, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8189.889s, table=40, n_packets=354867, n_bytes=157727979, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 6. lr_out_delivery (northd.c:11875): outport == "rtoj-ovn_cluster_router", priority 100, uuid 3a537c94 cookie=0x3a537c94, duration=8189.926s, table=46, n_packets=163654, n_bytes=19694117, idle_age=0, priority=100,reg15=0x3,metadata=0x5 actions=resubmit(,64) output; /* output to "rtoj-ovn_cluster_router", type "patch" */ ingress(dp="join", inport="jtor-ovn_cluster_router") ---------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "jtor-ovn_cluster_router", priority 50, uuid b7b18223 cookie=0xb7b18223, duration=8189.926s, table=8, n_packets=163654, n_bytes=19694117, idle_age=0, priority=50,reg14=0x1,metadata=0x3 actions=resubmit(,9) next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "jtor-ovn_cluster_router", priority 110, uuid 3a0c7e5d cookie=0x3a0c7e5d, duration=8189.926s, table=14, n_packets=0, n_bytes=0, idle_age=8189, priority=110,ipv6,reg14=0x1,metadata=0x3 actions=resubmit(,15) cookie=0x3a0c7e5d, duration=8189.926s, table=14, n_packets=163654, n_bytes=19694117, idle_age=0, priority=110,ip,reg14=0x1,metadata=0x3 actions=resubmit(,15) next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:64:40:00:06, priority 50, uuid 0d845b46 cookie=0xd845b46, duration=7393.045s, table=30, n_packets=33, n_bytes=6642, idle_age=182, priority=50,metadata=0x3,dl_dst=0a:58:64:40:00:06 actions=set_field:0x6->reg15,resubmit(,37) outport = "jtor-GR_ip-10-0-144-143.ec2.internal"; output; egress(dp="join", inport="jtor-ovn_cluster_router", outport="jtor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid e9f52572 *** no OpenFlow flows next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid 9c8aa745 *** no OpenFlow flows output; /* output to "jtor-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal") -------------------------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:64:40:00:06 && inport == "rtoj-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid ec6376d1 *** no OpenFlow flows xreg0[0..47] = 0a:58:64:40:00:06; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8189.926s, table=9, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8189.889s, table=9, n_packets=354745, n_bytes=157723633, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1 || reg9[3] == 0, priority 100, uuid cdaff181 cookie=0xcdaff181, duration=8189.889s, table=10, n_packets=354891, n_bytes=157729765, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x8 actions=resubmit(,11) cookie=0xcdaff181, duration=8189.889s, table=10, n_packets=0, n_bytes=0, idle_age=8189, priority=100,reg9=0/0x8,metadata=0x8 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8189.926s, table=18, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8189.888s, table=18, n_packets=354726, n_bytes=157722177, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): reg7 == 0 && ip4.dst == 0.0.0.0/0, priority 1, uuid 9e4511b4 *** no OpenFlow flows ip.ttl--; reg8[0..15] = 0; reg0 = 10.0.144.1; reg1 = 10.0.144.143; eth.src = 0e:61:09:b2:50:0b; outport = "rtoe-GR_ip-10-0-144-143.ec2.internal"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8189.926s, table=20, n_packets=759804, n_bytes=441971831, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8189.889s, table=20, n_packets=354720, n_bytes=157721805, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:11145): 1, priority 0, uuid 6616ddfd cookie=0x6616ddfd, duration=8189.926s, table=21, n_packets=149019, n_bytes=92138244, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) cookie=0x6616ddfd, duration=8189.889s, table=21, n_packets=354720, n_bytes=157721805, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8189.926s, table=22, n_packets=759804, n_bytes=441971831, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8189.888s, table=22, n_packets=354720, n_bytes=157721805, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11181): ip4, priority 0, uuid b8d5d775 cookie=0xb8d5d775, duration=8189.926s, table=23, n_packets=0, n_bytes=0, idle_age=8189, priority=0,ip,metadata=0x5 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) cookie=0xb8d5d775, duration=8189.889s, table=23, n_packets=354720, n_bytes=157721805, idle_age=0, priority=0,ip,metadata=0x8 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) get_arp(outport, reg0); /* MAC binding to 0e:4c:94:8d:88:a3. */ next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8189.926s, table=27, n_packets=759804, n_bytes=441971831, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8189.889s, table=27, n_packets=354718, n_bytes=157721657, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal", outport="rtoe-GR_ip-10-0-144-143.ec2.internal") ------------------------------------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8189.926s, table=40, n_packets=756496, n_bytes=703482530, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8189.889s, table=40, n_packets=354867, n_bytes=157727979, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 1. lr_out_undnat (northd.c:13073): ip, priority 50, uuid 30f9f51d cookie=0x30f9f51d, duration=8189.889s, table=41, n_packets=0, n_bytes=0, idle_age=8189, priority=50,ipv6,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) cookie=0x30f9f51d, duration=8189.889s, table=41, n_packets=354720, n_bytes=157721805, idle_age=0, priority=50,ip,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) flags.loopback = 1; ct_dnat; ct_dnat /* assuming no un-dnat entry, so no change */ ----------------------------------------------------- 2. lr_out_post_undnat (northd.c:13075): ip && ct.new, priority 50, uuid 72597618 cookie=0x72597618, duration=8189.889s, table=42, n_packets=5588, n_bytes=424076, idle_age=2, priority=50,ct_state=+new+trk,ip,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) cookie=0x72597618, duration=8189.889s, table=42, n_packets=0, n_bytes=0, idle_age=8189, priority=50,ct_state=+new+trk,ipv6,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) ct_commit; next; 3. lr_out_snat (northd.c:12754): ip && ip4.src == 10.128.2.20, priority 33, uuid 13aacd6b *** no OpenFlow flows ct_snat(10.0.144.143); ct_snat(ip4.src=10.0.144.143) ----------------------------- 6. lr_out_delivery (northd.c:11875): outport == "rtoe-GR_ip-10-0-144-143.ec2.internal", priority 100, uuid 5e0c78ba *** no OpenFlow flows output; /* output to "rtoe-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="ext_ip-10-0-144-143.ec2.internal", inport="etor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid e3140e37 *** no OpenFlow flows next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid 01bbc6f5 *** no OpenFlow flows next; 22. ls_in_l2_lkup (northd.c:7510): 1, priority 0, uuid e6316566 cookie=0xe6316566, duration=8189.873s, table=30, n_packets=220645, n_bytes=68069641, idle_age=0, priority=0,metadata=0x9 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8189.926s, table=30, n_packets=0, n_bytes=0, idle_age=8189, priority=0,metadata=0x3 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8189.928s, table=30, n_packets=0, n_bytes=0, idle_age=8189, priority=0,metadata=0x4 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) outport = get_fdb(eth.dst); next; 23. ls_in_l2_unknown (northd.c:7515): outport == "none", priority 50, uuid cd3aa917 cookie=0xcd3aa917, duration=8189.874s, table=31, n_packets=220645, n_bytes=68069641, idle_age=0, priority=50,reg15=0,metadata=0x9 actions=set_field:0x8001->reg15,resubmit(,37) outport = "_MC_unknown"; output; multicast(dp="ext_ip-10-0-144-143.ec2.internal", mcgroup="_MC_unknown") ----------------------------------------------------------------------- egress(dp="ext_ip-10-0-144-143.ec2.internal", inport="etor-GR_ip-10-0-144-143.ec2.internal", outport="br-ex_ip-10-0-144-143.ec2.internal") ------------------------------------------------------------------------------------------------------------------------------------------ 0. ls_out_pre_lb (northd.c:5659): ip && outport == "br-ex_ip-10-0-144-143.ec2.internal", priority 110, uuid e34a92c1 *** no OpenFlow flows next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "br-ex_ip-10-0-144-143.ec2.internal", priority 50, uuid 34f65456 *** no OpenFlow flows output; /* output to "br-ex_ip-10-0-144-143.ec2.internal", type "localnet" */ sh-4.4# ~~~ After applying the EgressIP: ================================================ ~~~ [akaris@linux 2070878]$ oc apply -f egressip.yaml egressip.k8s.ovn.org/e2e-test-egressip-pfvtq created ~~~ ~~~ $ curl 10.0.135.215:32667/clientip ~~~ ~~~ sh-4.4# tcpdump -nne -i ens5 host 10.0.135.215 and port 32667 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens5, link-type EN10MB (Ethernet), capture size 262144 bytes 10:59:23.220391 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 74: 10.128.2.20.36356 > 10.0.135.215.32667: Flags [S], seq 3436577877, win 26583, options [mss 8861,sackOK,TS val 2216393822 ecr 0,nop,wscale 7], length 0 10:59:24.283173 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 74: 10.128.2.20.36356 > 10.0.135.215.32667: Flags [S], seq 3436577877, win 26583, options [mss 8861,sackOK,TS val 2216394886 ecr 0,nop,wscale 7], length 0 10:59:26.331185 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 74: 10.128.2.20.36356 > 10.0.135.215.32667: Flags [S], seq 3436577877, win 26583, options [mss 8861,sackOK,TS val 2216396934 ecr 0,nop,wscale 7], length 0 10:59:30.363171 0e:61:09:b2:50:0b > 0e:4c:94:8d:88:a3, ethertype IPv4 (0x0800), length 74: 10.128.2.20.36356 > 10.0.135.215.32667: Flags [S], seq 3436577877, win 26583, options [mss 8861,sackOK,TS val 2216400966 ecr 0,nop,wscale 7], length 0 ^C 4 packets captured 6 packets received by filter 0 packets dropped by kernel sh-4.4# ~~~ Traffic is logically blocked by AWS and doesn't make it to the other side. The trace reveals that the packet is sent out the normal interface and is not SNATed at all: ~~~ sh-4.4# ovn-trace --minimal --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.215 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.215,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 *** no OpenFlow flows; *** no OpenFlow flows; ct_lb { reg0[6] = 0; *** chk_lb_hairpin_reply action not implemented; reg0[12] = 0; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 0a:58:64:40:00:01; eth.dst = 0a:58:64:40:00:06; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 0e:61:09:b2:50:0b; eth.dst = 0e:4c:94:8d:88:a3; ct_dnat /* assuming no un-dnat entry, so no change */ { *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; output("br-ex_ip-10-0-144-143.ec2.internal"); }; }; ~~~ ~~~ sh-4.4# ovn-trace --friendly-names --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.215 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.215,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 ingress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p") -------------------------------------------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == {0a:58:0a:80:02:14}, priority 50, uuid bb5f0a86 *** no OpenFlow flows next; 1. ls_in_port_sec_ip (northd.c:5142): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && ip4.src == {10.128.2.20}, priority 90, uuid 9d4b07c7 *** no OpenFlow flows next; 5. ls_in_pre_acl (northd.c:5769): ip, priority 100, uuid 9089bb6c cookie=0x9089bb6c, duration=8324.704s, table=13, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) cookie=0x9089bb6c, duration=8324.704s, table=13, n_packets=1173608, n_bytes=924201996, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) reg0[0] = 1; next; 6. ls_in_pre_lb (northd.c:5901): ip, priority 100, uuid adfd637e cookie=0xadfd637e, duration=8324.711s, table=14, n_packets=1173608, n_bytes=924201996, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) cookie=0xadfd637e, duration=8324.711s, table=14, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) reg0[2] = 1; next; 7. ls_in_pre_stateful (northd.c:5928): reg0[2] == 1 && ip4 && tcp, priority 120, uuid c95e8d65 cookie=0xc95e8d65, duration=8324.658s, table=15, n_packets=0, n_bytes=0, idle_age=8324, priority=120,tcp,reg0=0x4/0x4,metadata=0x9 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8324.712s, table=15, n_packets=0, n_bytes=0, idle_age=8324, priority=120,tcp,reg0=0x4/0x4,metadata=0x3 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8324.713s, table=15, n_packets=1170061, n_bytes=923622370, idle_age=0, priority=120,tcp,reg0=0x4/0x4,metadata=0x4 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) reg1 = ip4.dst; reg2[0..15] = tcp.dst; ct_lb; ct_lb ----- 8. ls_in_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid 40fbe707 cookie=0x40fbe707, duration=8324.713s, table=16, n_packets=23402, n_bytes=1773507, idle_age=0, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,17) reg0[7] = 1; reg0[9] = 1; next; 9. ls_in_acl (northd.c:6448): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid d81e8ce4 cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=23402, n_bytes=1773507, idle_age=0, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) reg0[1] = 1; next; 12. ls_in_stateful (northd.c:6789): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid eada98b2 cookie=0xeada98b2, duration=8324.657s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.659s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.711s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.711s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.713s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.713s, table=20, n_packets=18715, n_bytes=1385706, idle_age=0, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) ct_commit { ct_label.blocked = 0; }; next; 13. ls_in_pre_hairpin (northd.c:6816): ip && ct.trk, priority 100, uuid 183345c2 cookie=0x183345c2, duration=8324.713s, table=21, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ct_state=+trk,ipv6,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) cookie=0x183345c2, duration=8324.713s, table=21, n_packets=1154612, n_bytes=922800612, idle_age=0, priority=100,ct_state=+trk,ip,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) reg0[6] = chk_lb_hairpin(); reg0[12] = chk_lb_hairpin_reply(); *** chk_lb_hairpin_reply action not implemented next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:0a:80:02:01, priority 50, uuid 371919d7 *** no OpenFlow flows outport = "stor-ip-10-0-144-143.ec2.internal"; output; egress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p", outport="stor-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid ebde06b7 *** no OpenFlow flows next; 1. ls_out_pre_acl (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid f14b6ba3 *** no OpenFlow flows next; 3. ls_out_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid dc4eb3b9 cookie=0xdc4eb3b9, duration=8324.712s, table=43, n_packets=26791, n_bytes=2077788, idle_age=0, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,44) reg0[7] = 1; reg0[9] = 1; next; 4. ls_out_acl (northd.c:6451): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid eb6560a9 cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=14519, n_bytes=1169660, idle_age=0, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) reg0[1] = 1; next; 7. ls_out_stateful (northd.c:6793): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid 3eb26158 cookie=0x3eb26158, duration=8324.658s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.659s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.712s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.712s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.713s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.713s, table=47, n_packets=26791, n_bytes=2077788, idle_age=0, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) ct_commit { ct_label.blocked = 0; }; next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "stor-ip-10-0-144-143.ec2.internal", priority 50, uuid 195755b8 *** no OpenFlow flows output; /* output to "stor-ip-10-0-144-143.ec2.internal", type "patch" */ ingress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:0a:80:02:01 && inport == "rtos-ip-10-0-144-143.ec2.internal" && is_chassis_resident("cr-rtos-ip-10-0-144-143.ec2.internal"), priority 50, uuid 0294dd7b *** no OpenFlow flows xreg0[0..47] = 0a:58:0a:80:02:01; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8324.712s, table=9, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8324.675s, table=9, n_packets=359836, n_bytes=158820876, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1, priority 100, uuid 64eb7612 cookie=0x64eb7612, duration=8324.712s, table=10, n_packets=772812, n_bytes=455249292, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x5 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8324.713s, table=18, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8324.675s, table=18, n_packets=359816, n_bytes=158819366, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): ip4.src == 10.128.2.0/23, priority 69, uuid 3fe29bc6 cookie=0x3fe29bc6, duration=7527.810s, table=19, n_packets=0, n_bytes=0, idle_age=7527, priority=69,ip,metadata=0x5,nw_src=10.128.2.0/23 actions=dec_ttl(),set_field:0/0xffff00000000->xreg4,set_field:0x64400006000000000000000000000000/0xffffffff000000000000000000000000->xxreg0,set_field:0x644000010000000000000000/0xffffffff0000000000000000->xxreg0,set_field:0a:58:64:40:00:01->eth_src,set_field:0x3->reg15,set_field:0x1/0x1->reg10,resubmit(,20) ip.ttl--; reg8[0..15] = 0; reg0 = 100.64.0.6; reg1 = 100.64.0.1; eth.src = 0a:58:64:40:00:01; outport = "rtoj-ovn_cluster_router"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8324.713s, table=20, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8324.676s, table=20, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:8683): ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.135.215/32, priority 101, uuid fa257030 cookie=0xfa257030, duration=7574.790s, table=21, n_packets=0, n_bytes=0, idle_age=7574, priority=101,ip,metadata=0x5,nw_src=10.128.0.0/14,nw_dst=10.0.135.215 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8324.713s, table=22, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8324.675s, table=22, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11535): outport == "rtoj-ovn_cluster_router" && reg0 == 100.64.0.6, priority 100, uuid fb98b80d cookie=0xfb98b80d, duration=7527.832s, table=23, n_packets=33, n_bytes=6642, idle_age=317, priority=100,reg0=0x64400006,reg15=0x3,metadata=0x5 actions=set_field:0a:58:64:40:00:06->eth_dst,resubmit(,24) eth.dst = 0a:58:64:40:00:06; next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8324.713s, table=27, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8324.676s, table=27, n_packets=359808, n_bytes=158818846, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal", outport="rtoj-ovn_cluster_router") -------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8324.713s, table=40, n_packets=769549, n_bytes=722125663, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8324.676s, table=40, n_packets=359959, n_bytes=158825252, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 6. lr_out_delivery (northd.c:11875): outport == "rtoj-ovn_cluster_router", priority 100, uuid 3a537c94 cookie=0x3a537c94, duration=8324.713s, table=46, n_packets=166053, n_bytes=19925078, idle_age=0, priority=100,reg15=0x3,metadata=0x5 actions=resubmit(,64) output; /* output to "rtoj-ovn_cluster_router", type "patch" */ ingress(dp="join", inport="jtor-ovn_cluster_router") ---------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "jtor-ovn_cluster_router", priority 50, uuid b7b18223 cookie=0xb7b18223, duration=8324.713s, table=8, n_packets=166053, n_bytes=19925078, idle_age=0, priority=50,reg14=0x1,metadata=0x3 actions=resubmit(,9) next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "jtor-ovn_cluster_router", priority 110, uuid 3a0c7e5d cookie=0x3a0c7e5d, duration=8324.713s, table=14, n_packets=0, n_bytes=0, idle_age=8324, priority=110,ipv6,reg14=0x1,metadata=0x3 actions=resubmit(,15) cookie=0x3a0c7e5d, duration=8324.713s, table=14, n_packets=166053, n_bytes=19925078, idle_age=0, priority=110,ip,reg14=0x1,metadata=0x3 actions=resubmit(,15) next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:64:40:00:06, priority 50, uuid 0d845b46 cookie=0xd845b46, duration=7527.832s, table=30, n_packets=33, n_bytes=6642, idle_age=317, priority=50,metadata=0x3,dl_dst=0a:58:64:40:00:06 actions=set_field:0x6->reg15,resubmit(,37) outport = "jtor-GR_ip-10-0-144-143.ec2.internal"; output; egress(dp="join", inport="jtor-ovn_cluster_router", outport="jtor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid e9f52572 *** no OpenFlow flows next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid 9c8aa745 *** no OpenFlow flows output; /* output to "jtor-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal") -------------------------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:64:40:00:06 && inport == "rtoj-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid ec6376d1 *** no OpenFlow flows xreg0[0..47] = 0a:58:64:40:00:06; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8324.713s, table=9, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8324.676s, table=9, n_packets=359836, n_bytes=158820876, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1 || reg9[3] == 0, priority 100, uuid cdaff181 cookie=0xcdaff181, duration=8324.676s, table=10, n_packets=359984, n_bytes=158827092, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x8 actions=resubmit(,11) cookie=0xcdaff181, duration=8324.676s, table=10, n_packets=0, n_bytes=0, idle_age=8324, priority=100,reg9=0/0x8,metadata=0x8 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8324.714s, table=18, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8324.676s, table=18, n_packets=359816, n_bytes=158819366, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): reg7 == 0 && ip4.dst == 0.0.0.0/0, priority 1, uuid 9e4511b4 *** no OpenFlow flows ip.ttl--; reg8[0..15] = 0; reg0 = 10.0.144.1; reg1 = 10.0.144.143; eth.src = 0e:61:09:b2:50:0b; outport = "rtoe-GR_ip-10-0-144-143.ec2.internal"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8324.714s, table=20, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8324.677s, table=20, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:11145): 1, priority 0, uuid 6616ddfd cookie=0x6616ddfd, duration=8324.714s, table=21, n_packets=150866, n_bytes=92416040, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) cookie=0x6616ddfd, duration=8324.677s, table=21, n_packets=359810, n_bytes=158818994, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8324.714s, table=22, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8324.676s, table=22, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11181): ip4, priority 0, uuid b8d5d775 cookie=0xb8d5d775, duration=8324.714s, table=23, n_packets=0, n_bytes=0, idle_age=8324, priority=0,ip,metadata=0x5 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) cookie=0xb8d5d775, duration=8324.677s, table=23, n_packets=359810, n_bytes=158818994, idle_age=0, priority=0,ip,metadata=0x8 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) get_arp(outport, reg0); /* MAC binding to 0e:4c:94:8d:88:a3. */ next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8324.714s, table=27, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8324.677s, table=27, n_packets=359808, n_bytes=158818846, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal", outport="rtoe-GR_ip-10-0-144-143.ec2.internal") ------------------------------------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8324.714s, table=40, n_packets=769549, n_bytes=722125663, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8324.677s, table=40, n_packets=359959, n_bytes=158825252, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 1. lr_out_undnat (northd.c:13073): ip, priority 50, uuid 30f9f51d cookie=0x30f9f51d, duration=8324.677s, table=41, n_packets=0, n_bytes=0, idle_age=8324, priority=50,ipv6,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) cookie=0x30f9f51d, duration=8324.677s, table=41, n_packets=359810, n_bytes=158818994, idle_age=0, priority=50,ip,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) flags.loopback = 1; ct_dnat; ct_dnat /* assuming no un-dnat entry, so no change */ ----------------------------------------------------- 2. lr_out_post_undnat (northd.c:13075): ip && ct.new, priority 50, uuid 72597618 cookie=0x72597618, duration=8324.677s, table=42, n_packets=5610, n_bytes=425836, idle_age=2, priority=50,ct_state=+new+trk,ip,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) cookie=0x72597618, duration=8324.677s, table=42, n_packets=0, n_bytes=0, idle_age=8324, priority=50,ct_state=+new+trk,ipv6,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) ct_commit; next; 6. lr_out_delivery (northd.c:11875): outport == "rtoe-GR_ip-10-0-144-143.ec2.internal", priority 100, uuid 5e0c78ba *** no OpenFlow flows output; /* output to "rtoe-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="ext_ip-10-0-144-143.ec2.internal", inport="etor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid e3140e37 *** no OpenFlow flows next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid 01bbc6f5 *** no OpenFlow flows next; 22. ls_in_l2_lkup (northd.c:7510): 1, priority 0, uuid e6316566 cookie=0xe6316566, duration=8324.660s, table=30, n_packets=223890, n_bytes=68889118, idle_age=0, priority=0,metadata=0x9 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8324.713s, table=30, n_packets=0, n_bytes=0, idle_age=8324, priority=0,metadata=0x3 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8324.715s, table=30, n_packets=0, n_bytes=0, idle_age=8324, priority=0,metadata=0x4 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) outport = get_fdb(eth.dst); next; 23. ls_in_l2_unknown (northd.c:7515): outport == "none", priority 50, uuid cd3aa917 cookie=0xcd3aa917, duration=8324.661s, table=31, n_packets=223890, n_bytes=68889118, idle_age=0, priority=50,reg15=0,metadata=0x9 actions=set_field:0x8001->reg15,resubmit(,37) outport = "_MC_unknown"; output; multicast(dp="ext_ip-10-0-144-143.ec2.internal", mcgroup="_MC_unknown") ----------------------------------------------------------------
[akaris@linux 2070878]$ oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.11.0-0.nightly-2022-03-29-152521 True False 116m Cluster version is 4.11.0-0.nightly-2022-03-29-152521 [akaris@linux 2070878]$
~~~ sh-4.4# ovn-trace --friendly-names --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.215 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.215,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 ingress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p") -------------------------------------------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == {0a:58:0a:80:02:14}, priority 50, uuid bb5f0a86 *** no OpenFlow flows next; 1. ls_in_port_sec_ip (northd.c:5142): inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && ip4.src == {10.128.2.20}, priority 90, uuid 9d4b07c7 *** no OpenFlow flows next; 5. ls_in_pre_acl (northd.c:5769): ip, priority 100, uuid 9089bb6c cookie=0x9089bb6c, duration=8324.704s, table=13, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) cookie=0x9089bb6c, duration=8324.704s, table=13, n_packets=1173608, n_bytes=924201996, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0,resubmit(,14) reg0[0] = 1; next; 6. ls_in_pre_lb (northd.c:5901): ip, priority 100, uuid adfd637e cookie=0xadfd637e, duration=8324.711s, table=14, n_packets=1173608, n_bytes=924201996, idle_age=0, priority=100,ip,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) cookie=0xadfd637e, duration=8324.711s, table=14, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,metadata=0x4 actions=set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0,resubmit(,15) reg0[2] = 1; next; 7. ls_in_pre_stateful (northd.c:5928): reg0[2] == 1 && ip4 && tcp, priority 120, uuid c95e8d65 cookie=0xc95e8d65, duration=8324.658s, table=15, n_packets=0, n_bytes=0, idle_age=8324, priority=120,tcp,reg0=0x4/0x4,metadata=0x9 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8324.712s, table=15, n_packets=0, n_bytes=0, idle_age=8324, priority=120,tcp,reg0=0x4/0x4,metadata=0x3 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) cookie=0xc95e8d65, duration=8324.713s, table=15, n_packets=1170061, n_bytes=923622370, idle_age=0, priority=120,tcp,reg0=0x4/0x4,metadata=0x4 actions=move:NXM_OF_IP_DST[]->NXM_NX_XXREG0[64..95],move:NXM_OF_TCP_DST[]->NXM_NX_XXREG0[32..47],ct(table=16,zone=NXM_NX_REG13[0..15],nat) reg1 = ip4.dst; reg2[0..15] = tcp.dst; ct_lb; ct_lb ----- 8. ls_in_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid 40fbe707 cookie=0x40fbe707, duration=8324.713s, table=16, n_packets=23402, n_bytes=1773507, idle_age=0, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,17) reg0[7] = 1; reg0[9] = 1; next; 9. ls_in_acl (northd.c:6448): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid d81e8ce4 cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) cookie=0xd81e8ce4, duration=8324.712s, table=17, n_packets=23402, n_bytes=1773507, idle_age=0, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,18) reg0[1] = 1; next; 12. ls_in_stateful (northd.c:6789): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid eada98b2 cookie=0xeada98b2, duration=8324.657s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.659s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.711s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.711s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.713s, table=20, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) cookie=0xeada98b2, duration=8324.713s, table=20, n_packets=18715, n_bytes=1385706, idle_age=0, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,21) ct_commit { ct_label.blocked = 0; }; next; 13. ls_in_pre_hairpin (northd.c:6816): ip && ct.trk, priority 100, uuid 183345c2 cookie=0x183345c2, duration=8324.713s, table=21, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ct_state=+trk,ipv6,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) cookie=0x183345c2, duration=8324.713s, table=21, n_packets=1154612, n_bytes=922800612, idle_age=0, priority=100,ct_state=+trk,ip,metadata=0x4 actions=set_field:0/0x80->reg10,resubmit(,68),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102],set_field:0/0x80->reg10,resubmit(,69),move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108],resubmit(,22) reg0[6] = chk_lb_hairpin(); reg0[12] = chk_lb_hairpin_reply(); *** chk_lb_hairpin_reply action not implemented next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:0a:80:02:01, priority 50, uuid 371919d7 *** no OpenFlow flows outport = "stor-ip-10-0-144-143.ec2.internal"; output; egress(dp="ip-10-0-144-143.ec2.internal", inport="e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p", outport="stor-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid ebde06b7 *** no OpenFlow flows next; 1. ls_out_pre_acl (northd.c:5659): ip && outport == "stor-ip-10-0-144-143.ec2.internal", priority 110, uuid f14b6ba3 *** no OpenFlow flows next; 3. ls_out_acl_hint (northd.c:6001): ct.new && !ct.est, priority 7, uuid dc4eb3b9 cookie=0xdc4eb3b9, duration=8324.712s, table=43, n_packets=26791, n_bytes=2077788, idle_age=0, priority=7,ct_state=+new-est+trk,metadata=0x4 actions=set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0,set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0,resubmit(,44) reg0[7] = 1; reg0[9] = 1; next; 4. ls_out_acl (northd.c:6451): ip && (!ct.est || (ct.est && ct_label.blocked == 1)), priority 1, uuid eb6560a9 cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=-est+trk,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ipv6,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=0, n_bytes=0, idle_age=8324, priority=1,ct_state=+est+trk,ct_label=0x1/0x1,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) cookie=0xeb6560a9, duration=8324.712s, table=44, n_packets=14519, n_bytes=1169660, idle_age=0, priority=1,ct_state=-est+trk,ip,metadata=0x4 actions=set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0,resubmit(,45) reg0[1] = 1; next; 7. ls_out_stateful (northd.c:6793): reg0[1] == 1 && reg0[13] == 0, priority 100, uuid 3eb26158 cookie=0x3eb26158, duration=8324.658s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.659s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x9 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.712s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.712s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ip,reg0=0x2/0x2002,metadata=0x3 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.713s, table=47, n_packets=0, n_bytes=0, idle_age=8324, priority=100,ipv6,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) cookie=0x3eb26158, duration=8324.713s, table=47, n_packets=26791, n_bytes=2077788, idle_age=0, priority=100,ip,reg0=0x2/0x2002,metadata=0x4 actions=ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_label)),resubmit(,48) ct_commit { ct_label.blocked = 0; }; next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "stor-ip-10-0-144-143.ec2.internal", priority 50, uuid 195755b8 *** no OpenFlow flows output; /* output to "stor-ip-10-0-144-143.ec2.internal", type "patch" */ ingress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal") ---------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:0a:80:02:01 && inport == "rtos-ip-10-0-144-143.ec2.internal" && is_chassis_resident("cr-rtos-ip-10-0-144-143.ec2.internal"), priority 50, uuid 0294dd7b *** no OpenFlow flows xreg0[0..47] = 0a:58:0a:80:02:01; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8324.712s, table=9, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8324.675s, table=9, n_packets=359836, n_bytes=158820876, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1, priority 100, uuid 64eb7612 cookie=0x64eb7612, duration=8324.712s, table=10, n_packets=772812, n_bytes=455249292, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x5 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8324.713s, table=18, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8324.675s, table=18, n_packets=359816, n_bytes=158819366, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): ip4.src == 10.128.2.0/23, priority 69, uuid 3fe29bc6 cookie=0x3fe29bc6, duration=7527.810s, table=19, n_packets=0, n_bytes=0, idle_age=7527, priority=69,ip,metadata=0x5,nw_src=10.128.2.0/23 actions=dec_ttl(),set_field:0/0xffff00000000->xreg4,set_field:0x64400006000000000000000000000000/0xffffffff000000000000000000000000->xxreg0,set_field:0x644000010000000000000000/0xffffffff0000000000000000->xxreg0,set_field:0a:58:64:40:00:01->eth_src,set_field:0x3->reg15,set_field:0x1/0x1->reg10,resubmit(,20) ip.ttl--; reg8[0..15] = 0; reg0 = 100.64.0.6; reg1 = 100.64.0.1; eth.src = 0a:58:64:40:00:01; outport = "rtoj-ovn_cluster_router"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8324.713s, table=20, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8324.676s, table=20, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:8683): ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.135.215/32, priority 101, uuid fa257030 cookie=0xfa257030, duration=7574.790s, table=21, n_packets=0, n_bytes=0, idle_age=7574, priority=101,ip,metadata=0x5,nw_src=10.128.0.0/14,nw_dst=10.0.135.215 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8324.713s, table=22, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8324.675s, table=22, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11535): outport == "rtoj-ovn_cluster_router" && reg0 == 100.64.0.6, priority 100, uuid fb98b80d cookie=0xfb98b80d, duration=7527.832s, table=23, n_packets=33, n_bytes=6642, idle_age=317, priority=100,reg0=0x64400006,reg15=0x3,metadata=0x5 actions=set_field:0a:58:64:40:00:06->eth_dst,resubmit(,24) eth.dst = 0a:58:64:40:00:06; next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8324.713s, table=27, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8324.676s, table=27, n_packets=359808, n_bytes=158818846, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="ovn_cluster_router", inport="rtos-ip-10-0-144-143.ec2.internal", outport="rtoj-ovn_cluster_router") -------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8324.713s, table=40, n_packets=769549, n_bytes=722125663, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8324.676s, table=40, n_packets=359959, n_bytes=158825252, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 6. lr_out_delivery (northd.c:11875): outport == "rtoj-ovn_cluster_router", priority 100, uuid 3a537c94 cookie=0x3a537c94, duration=8324.713s, table=46, n_packets=166053, n_bytes=19925078, idle_age=0, priority=100,reg15=0x3,metadata=0x5 actions=resubmit(,64) output; /* output to "rtoj-ovn_cluster_router", type "patch" */ ingress(dp="join", inport="jtor-ovn_cluster_router") ---------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "jtor-ovn_cluster_router", priority 50, uuid b7b18223 cookie=0xb7b18223, duration=8324.713s, table=8, n_packets=166053, n_bytes=19925078, idle_age=0, priority=50,reg14=0x1,metadata=0x3 actions=resubmit(,9) next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "jtor-ovn_cluster_router", priority 110, uuid 3a0c7e5d cookie=0x3a0c7e5d, duration=8324.713s, table=14, n_packets=0, n_bytes=0, idle_age=8324, priority=110,ipv6,reg14=0x1,metadata=0x3 actions=resubmit(,15) cookie=0x3a0c7e5d, duration=8324.713s, table=14, n_packets=166053, n_bytes=19925078, idle_age=0, priority=110,ip,reg14=0x1,metadata=0x3 actions=resubmit(,15) next; 22. ls_in_l2_lkup (northd.c:8305): eth.dst == 0a:58:64:40:00:06, priority 50, uuid 0d845b46 cookie=0xd845b46, duration=7527.832s, table=30, n_packets=33, n_bytes=6642, idle_age=317, priority=50,metadata=0x3,dl_dst=0a:58:64:40:00:06 actions=set_field:0x6->reg15,resubmit(,37) outport = "jtor-GR_ip-10-0-144-143.ec2.internal"; output; egress(dp="join", inport="jtor-ovn_cluster_router", outport="jtor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------------- 0. ls_out_pre_lb (northd.c:5659): ip && outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid e9f52572 *** no OpenFlow flows next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "jtor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid 9c8aa745 *** no OpenFlow flows output; /* output to "jtor-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal") -------------------------------------------------------------------------------------------- 0. lr_in_admission (northd.c:10535): eth.dst == 0a:58:64:40:00:06 && inport == "rtoj-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid ec6376d1 *** no OpenFlow flows xreg0[0..47] = 0a:58:64:40:00:06; next; 1. lr_in_lookup_neighbor (northd.c:10678): 1, priority 0, uuid 0ba0f970 cookie=0xba0f970, duration=8324.713s, table=9, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0x4/0x4->xreg4,resubmit(,10) cookie=0xba0f970, duration=8324.676s, table=9, n_packets=359836, n_bytes=158820876, idle_age=0, priority=0,metadata=0x8 actions=set_field:0x4/0x4->xreg4,resubmit(,10) reg9[2] = 1; next; 2. lr_in_learn_neighbor (northd.c:10687): reg9[2] == 1 || reg9[3] == 0, priority 100, uuid cdaff181 cookie=0xcdaff181, duration=8324.676s, table=10, n_packets=359984, n_bytes=158827092, idle_age=0, priority=100,reg9=0x4/0x4,metadata=0x8 actions=resubmit(,11) cookie=0xcdaff181, duration=8324.676s, table=10, n_packets=0, n_bytes=0, idle_age=8324, priority=100,reg9=0/0x8,metadata=0x8 actions=resubmit(,11) next; 10. lr_in_ip_routing_pre (northd.c:10937): 1, priority 0, uuid 390d58e5 cookie=0x390d58e5, duration=8324.714s, table=18, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) cookie=0x390d58e5, duration=8324.676s, table=18, n_packets=359816, n_bytes=158819366, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffffffff->xxreg1,resubmit(,19) reg7 = 0; next; 11. lr_in_ip_routing (northd.c:9451): reg7 == 0 && ip4.dst == 0.0.0.0/0, priority 1, uuid 9e4511b4 *** no OpenFlow flows ip.ttl--; reg8[0..15] = 0; reg0 = 10.0.144.1; reg1 = 10.0.144.143; eth.src = 0e:61:09:b2:50:0b; outport = "rtoe-GR_ip-10-0-144-143.ec2.internal"; flags.loopback = 1; next; 12. lr_in_ip_routing_ecmp (northd.c:11012): reg8[0..15] == 0, priority 150, uuid c2749f5d cookie=0xc2749f5d, duration=8324.714s, table=20, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,21) cookie=0xc2749f5d, duration=8324.677s, table=20, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,21) next; 13. lr_in_policy (northd.c:11145): 1, priority 0, uuid 6616ddfd cookie=0x6616ddfd, duration=8324.714s, table=21, n_packets=150866, n_bytes=92416040, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) cookie=0x6616ddfd, duration=8324.677s, table=21, n_packets=359810, n_bytes=158818994, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0xffff00000000->xreg4,resubmit(,22) reg8[0..15] = 0; next; 14. lr_in_policy_ecmp (northd.c:11147): reg8[0..15] == 0, priority 150, uuid 85a00be8 cookie=0x85a00be8, duration=8324.714s, table=22, n_packets=772812, n_bytes=455249292, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x5 actions=resubmit(,23) cookie=0x85a00be8, duration=8324.676s, table=22, n_packets=359810, n_bytes=158818994, idle_age=0, priority=150,reg8=0/0xffff,metadata=0x8 actions=resubmit(,23) next; 15. lr_in_arp_resolve (northd.c:11181): ip4, priority 0, uuid b8d5d775 cookie=0xb8d5d775, duration=8324.714s, table=23, n_packets=0, n_bytes=0, idle_age=8324, priority=0,ip,metadata=0x5 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) cookie=0xb8d5d775, duration=8324.677s, table=23, n_packets=359810, n_bytes=158818994, idle_age=0, priority=0,ip,metadata=0x8 actions=push:NXM_NX_REG0[],push:NXM_NX_XXREG0[96..127],pop:NXM_NX_REG0[],set_field:00:00:00:00:00:00->eth_dst,resubmit(,66),pop:NXM_NX_REG0[],resubmit(,24) get_arp(outport, reg0); /* MAC binding to 0e:4c:94:8d:88:a3. */ next; 19. lr_in_arp_request (northd.c:11827): 1, priority 0, uuid 6cc83334 cookie=0x6cc83334, duration=8324.714s, table=27, n_packets=772812, n_bytes=455249292, idle_age=0, priority=0,metadata=0x5 actions=resubmit(,37) cookie=0x6cc83334, duration=8324.677s, table=27, n_packets=359808, n_bytes=158818846, idle_age=0, priority=0,metadata=0x8 actions=resubmit(,37) output; egress(dp="GR_ip-10-0-144-143.ec2.internal", inport="rtoj-GR_ip-10-0-144-143.ec2.internal", outport="rtoe-GR_ip-10-0-144-143.ec2.internal") ------------------------------------------------------------------------------------------------------------------------------------------- 0. lr_out_chk_dnat_local (northd.c:13053): 1, priority 0, uuid 66e69dde cookie=0x66e69dde, duration=8324.714s, table=40, n_packets=769549, n_bytes=722125663, idle_age=0, priority=0,metadata=0x5 actions=set_field:0/0x10->xreg4,resubmit(,41) cookie=0x66e69dde, duration=8324.677s, table=40, n_packets=359959, n_bytes=158825252, idle_age=0, priority=0,metadata=0x8 actions=set_field:0/0x10->xreg4,resubmit(,41) reg9[4] = 0; next; 1. lr_out_undnat (northd.c:13073): ip, priority 50, uuid 30f9f51d cookie=0x30f9f51d, duration=8324.677s, table=41, n_packets=0, n_bytes=0, idle_age=8324, priority=50,ipv6,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) cookie=0x30f9f51d, duration=8324.677s, table=41, n_packets=359810, n_bytes=158818994, idle_age=0, priority=50,ip,metadata=0x8 actions=set_field:0x1/0x1->reg10,ct(table=42,zone=NXM_NX_REG11[0..15],nat) flags.loopback = 1; ct_dnat; ct_dnat /* assuming no un-dnat entry, so no change */ ----------------------------------------------------- 2. lr_out_post_undnat (northd.c:13075): ip && ct.new, priority 50, uuid 72597618 cookie=0x72597618, duration=8324.677s, table=42, n_packets=5610, n_bytes=425836, idle_age=2, priority=50,ct_state=+new+trk,ip,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) cookie=0x72597618, duration=8324.677s, table=42, n_packets=0, n_bytes=0, idle_age=8324, priority=50,ct_state=+new+trk,ipv6,metadata=0x8 actions=ct(commit,zone=NXM_NX_REG11[0..15],nat(src)),resubmit(,43) ct_commit; next; 6. lr_out_delivery (northd.c:11875): outport == "rtoe-GR_ip-10-0-144-143.ec2.internal", priority 100, uuid 5e0c78ba *** no OpenFlow flows output; /* output to "rtoe-GR_ip-10-0-144-143.ec2.internal", type "l3gateway" */ ingress(dp="ext_ip-10-0-144-143.ec2.internal", inport="etor-GR_ip-10-0-144-143.ec2.internal") --------------------------------------------------------------------------------------------- 0. ls_in_port_sec_l2 (northd.c:5509): inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 50, uuid e3140e37 *** no OpenFlow flows next; 6. ls_in_pre_lb (northd.c:5656): ip && inport == "etor-GR_ip-10-0-144-143.ec2.internal", priority 110, uuid 01bbc6f5 *** no OpenFlow flows next; 22. ls_in_l2_lkup (northd.c:7510): 1, priority 0, uuid e6316566 cookie=0xe6316566, duration=8324.660s, table=30, n_packets=223890, n_bytes=68889118, idle_age=0, priority=0,metadata=0x9 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8324.713s, table=30, n_packets=0, n_bytes=0, idle_age=8324, priority=0,metadata=0x3 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) cookie=0xe6316566, duration=8324.715s, table=30, n_packets=0, n_bytes=0, idle_age=8324, priority=0,metadata=0x4 actions=set_field:0->reg15,resubmit(,71),resubmit(,31) outport = get_fdb(eth.dst); next; 23. ls_in_l2_unknown (northd.c:7515): outport == "none", priority 50, uuid cd3aa917 cookie=0xcd3aa917, duration=8324.661s, table=31, n_packets=223890, n_bytes=68889118, idle_age=0, priority=50,reg15=0,metadata=0x9 actions=set_field:0x8001->reg15,resubmit(,37) outport = "_MC_unknown"; output; multicast(dp="ext_ip-10-0-144-143.ec2.internal", mcgroup="_MC_unknown") ----------------------------------------------------------------------- egress(dp="ext_ip-10-0-144-143.ec2.internal", inport="etor-GR_ip-10-0-144-143.ec2.internal", outport="br-ex_ip-10-0-144-143.ec2.internal") ------------------------------------------------------------------------------------------------------------------------------------------ 0. ls_out_pre_lb (northd.c:5659): ip && outport == "br-ex_ip-10-0-144-143.ec2.internal", priority 110, uuid e34a92c1 *** no OpenFlow flows next; 9. ls_out_port_sec_l2 (northd.c:5607): outport == "br-ex_ip-10-0-144-143.ec2.internal", priority 50, uuid 34f65456 *** no OpenFlow flows output; /* output to "br-ex_ip-10-0-144-143.ec2.internal", type "localnet" */ sh-4.4# ~~~
If the destination is on the same subnet, but off cluster, we SNAT to the egress IP: ~~~ sh-4.4# ovn-trace --minimal --ovs ip-10-0-144-143.ec2.internal 'inport == "e2e-test-egressip-pfvtq_e2e-test-egressip-pfvtq-deployment-799497dc77-j9w2p" && eth.src == 0a:58:0a:80:02:14 && eth.dst == 0a:58:0a:80:02:01 && ip4.src == 10.128.2.20 && ip4.dst == 10.0.135.216 && ip.ttl == 64 && tcp.src==12345 && tcp.dst == 32667' --ct new # tcp,reg14=0xe,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:14,dl_dst=0a:58:0a:80:02:01,nw_src=10.128.2.20,nw_dst=10.0.135.216,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=12345,tp_dst=32667,tcp_flags=0 *** no OpenFlow flows; *** no OpenFlow flows; ct_lb { reg0[6] = 0; *** chk_lb_hairpin_reply action not implemented; reg0[12] = 0; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 0a:58:64:40:00:01; eth.src = 0a:58:64:40:00:01; eth.dst = 0a:58:64:40:00:05; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; ip.ttl--; eth.src = 02:8e:15:e3:f3:75; eth.dst = 02:19:01:a5:ff:cb; ct_dnat /* assuming no un-dnat entry, so no change */ { *** no OpenFlow flows; ct_snat(ip4.src=10.0.160.5) { *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; *** no OpenFlow flows; output("br-ex_ip-10-0-161-98.ec2.internal"); }; }; }; ~~~
The reason that this happens is that the SNAT here is missing as soon as we use egress IP: ~~~ sh-4.4# ovn-nbctl lr-nat-list GR_ip-10-0-144-143.ec2.internal TYPE EXTERNAL_IP EXTERNAL_PORT LOGICAL_IP EXTERNAL_MAC LOGICAL_PORT snat 10.0.144.143 10.128.2.8 snat 10.0.144.143 10.128.2.12 snat 10.0.144.143 10.128.2.5 snat 10.0.144.143 10.128.2.10 snat 10.0.144.143 10.128.2.4 snat 10.0.144.143 10.128.2.3 snat 10.0.144.143 10.128.2.6 snat 10.0.144.143 10.128.2.13 snat 10.0.144.143 10.128.2.7 ~~~ Yet, we do not reroute traffic with destination 10.0.135.215/32: ~~~ sh-4.4# ovn-nbctl lr-policy-list ovn_cluster_router Routing Policies 1004 inport == "rtos-ip-10-0-135-215.ec2.internal" && ip4.dst == 10.0.135.215 /* ip-10-0-135-215.ec2.internal */ reroute 10.129.2.2 1004 inport == "rtos-ip-10-0-138-37.ec2.internal" && ip4.dst == 10.0.138.37 /* ip-10-0-138-37.ec2.internal */ reroute 10.129.0.2 1004 inport == "rtos-ip-10-0-144-143.ec2.internal" && ip4.dst == 10.0.144.143 /* ip-10-0-144-143.ec2.internal */ reroute 10.128.2.2 1004 inport == "rtos-ip-10-0-153-96.ec2.internal" && ip4.dst == 10.0.153.96 /* ip-10-0-153-96.ec2.internal */ reroute 10.130.0.2 1004 inport == "rtos-ip-10-0-161-98.ec2.internal" && ip4.dst == 10.0.161.98 /* ip-10-0-161-98.ec2.internal */ reroute 10.131.0.2 1004 inport == "rtos-ip-10-0-168-18.ec2.internal" && ip4.dst == 10.0.168.18 /* ip-10-0-168-18.ec2.internal */ reroute 10.128.0.2 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.135.215/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.138.37/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.144.143/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.153.96/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.161.98/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.0.168.18/32 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 10.128.0.0/14 allow 101 ip4.src == 10.128.0.0/14 && ip4.dst == 100.64.0.0/16 allow 100 ip4.src == 10.128.2.20 reroute 100.64.0.5 ~~~ The missing reroute makes sense: https://docs.openshift.com/container-platform/4.10/networking/ovn_kubernetes_network_provider/configuring-egress-ips-ovn.html#nw-egress-ips-about_configuring-egress-ips-ovn ~~~ Egress IP address architectural design and implementation The OpenShift Container Platform egress IP address functionality allows you to ensure that the traffic from one or more pods in one or more namespaces has a consistent source IP address for services outside the cluster network. ~~~ Removing the SNAT though does not. When looking at the host that hosts the EgressIP: ~~~ sh-4.4# ovn-nbctl lr-nat-list GR_ip-10-0-161-98.ec2.internal TYPE EXTERNAL_IP EXTERNAL_PORT LOGICAL_IP EXTERNAL_MAC LOGICAL_PORT snat 10.0.160.5 10.128.2.20 snat 10.0.161.98 10.131.0.15 snat 10.0.161.98 10.131.0.13 snat 10.0.161.98 10.131.0.4 snat 10.0.161.98 10.131.0.34 snat 10.0.161.98 10.131.0.10 snat 10.0.161.98 10.131.0.32 snat 10.0.161.98 10.131.0.5 snat 10.0.161.98 10.131.0.33 snat 10.0.161.98 10.131.0.7 snat 10.0.161.98 10.131.0.11 snat 10.0.161.98 10.131.0.3 snat 10.0.161.98 10.131.0.12 snat 10.0.161.98 10.131.0.9 snat 10.0.161.98 10.131.0.6 snat 10.0.161.98 10.131.0.19 snat 10.0.161.98 10.131.0.20 ~~~ As a consequence, when the same pod is spawned on node ip-10-0-161-98.ec2.internal, it will actually be NATted to the egressip when it reaches out to the other host networked pod (that's also contrary to the description of the feature).
What we would really need here, is a conditional SNAT: * when on the host that does not host the EgressIP, always SNAT to the host local IP (so do *not* delete the pod's SNAT assignment). --> already feasible today with a code change * when on the host that does have the EgressIP: a) for traffic to the cluster IPs, SNAT to the host local IP b) for traffic off cluster, SNAT to the EgressIP Something like the following iptables rules: ~~~ iptables -t nat -I POSTROUTING -s 10.128.2.20 -d 10.0.135.215 -j MASQUERADE # and for all other on cluster targets iptables -t nat -I POSTROUTING -s 10.128.2.20 -j SNAT βto-source 10.0.160.5 # for all other targets ~~~
Sure. Examples are on kind, but it's the exact same on OpenShift. Preparation: =================================== ~~~ contrib/kind.sh -ha --ipv6 ~~~ 01) separate nodes into 2 sets: ~~~ export SOURCE_NAMESPACE="egressip-source" export TARGET_NAMESPACE="egressip-target" export EGRESSIP_NAME="egressip-source" export SOURCE_LABEL="node-role.kubernetes.io/egressip-test-source" export TARGET_LABEL="node-role.kubernetes.io/egressip-test-target" export TARGET_TAINT="egressip-test-target" export EGRESS_ASSIGNABLE_LABEL="k8s.ovn.org/egress-assignable" # https://docs.openshift.com/container-platform/4.10/installing/installing_aws/installing-restricted-networks-aws.html#installation-cloudformation-security_installing-restricted-networks-aws export TARGET_PORT="32767" oc label node ovn-control-plane $TARGET_LABEL="" oc label node ovn-worker $SOURCE_LABEL="" oc label node ovn-worker2 $SOURCE_LABEL="" ~~~ 02) apply a taint on the target node ~~~ echo "Applying target NoExecute taint to target nodes" nodes=$(oc get nodes -l ${TARGET_LABEL}= -o name) if [ $(echo $nodes | wc -w) -lt 1 ] ; then echo "Not enough worker nodes with label ${TARGET_LABEL} - at least 1 worker node is required. Got: $nodes" exit 1 fi i=0 for n in $nodes; do oc adm taint node $n ${TARGET_TAINT}=true:NoExecute --overwrite done ~~~ 03) assign labels to source nodes: ~~~ echo "Applying egress assignable label ${EGRESS_ASSIGNABLE_LABEL} to nodes" nodes=$(oc get nodes -l ${SOURCE_LABEL}= -o name) if [ $(echo $nodes | wc -w) -lt 2 ] ; then echo "Not enough worker nodes with label ${SOURCE_LABEL} - at least 2 worker nodes are required. Got: $nodes" exit 1 fi i=0 for n in $nodes; do oc label $n ${EGRESS_ASSIGNABLE_LABEL}="" --overwrite done oc get nodes -l k8s.ovn.org/egress-assignable="" ~~~ 04) create target pod (host networked): ~~~ file=$(mktemp) cat <<EOF > ${file} --- apiVersion: v1 kind: Namespace metadata: name: ${TARGET_NAMESPACE} labels: env: ${TARGET_NAMESPACE} --- apiVersion: apps/v1 kind: "DaemonSet" metadata: labels: app: ${TARGET_NAMESPACE}-deployment name: ${TARGET_NAMESPACE}-deployment namespace: ${TARGET_NAMESPACE} spec: selector: matchLabels: app: ${TARGET_NAMESPACE}-deployment template: metadata: labels: app: ${TARGET_NAMESPACE}-deployment spec: hostNetwork: true nodeSelector: ${TARGET_LABEL}: "" tolerations: - key: ${TARGET_TAINT} operator: Exists containers: - command: - "/agnhost" - "netexec" - "--http-port" - "${TARGET_PORT}" image: k8s.gcr.io/e2e-test-images/agnhost:2.33 imagePullPolicy: IfNotPresent name: agnhost EOF oc apply -f ${file} ~~~ 05) create pods inside the source namespace which will get the egressip later: ~~~ file=$(mktemp) cat <<EOF >| $file --- apiVersion: v1 kind: Namespace metadata: name: ${SOURCE_NAMESPACE} labels: env: ${SOURCE_NAMESPACE} --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: ${SOURCE_NAMESPACE}-deployment name: ${SOURCE_NAMESPACE}-deployment namespace: ${SOURCE_NAMESPACE} spec: replicas: 2 selector: matchLabels: app: ${SOURCE_NAMESPACE}-deployment template: metadata: labels: app: ${SOURCE_NAMESPACE}-deployment spec: nodeSelector: ${SOURCE_LABEL}: "" containers: - command: - "/agnhost" - "netexec" - "--http-port" - "8000" #- serve-hostname image: k8s.gcr.io/e2e-test-images/agnhost:2.33 imagePullPolicy: IfNotPresent name: agnhost EOF cat ${file} oc apply -f ${file} ~~~ Baseline test: ===================================== Test the target pod from the host and from both source pods: ~~~ [root@ovnkubernetes ovn-kubernetes]# oc get pods -o wide -n $TARGET_NAMESPACE -o custom-columns=IP:.status.podIP IP 172.18.0.4 [root@ovnkubernetes ovn-kubernetes]# echo $TARGET_PORT 32767 root@ovnkubernetes ovn-kubernetes]# oc get pods -n $SOURCE_NAMESPACE NAME READY STATUS RESTARTS AGE egressip-source-deployment-56d66c78dd-58x4p 1/1 Running 0 102s egressip-source-deployment-56d66c78dd-j85d9 1/1 Running 0 102s ~~~ ~~~ [root@ovnkubernetes ovn-kubernetes]# curl 172.18.0.4:$TARGET_PORT/clientip 172.18.0.1:40646 ~~~ ~~~ [root@ovnkubernetes ovn-kubernetes]# oc exec -n $SOURCE_NAMESPACE egressip-source-deployment-56d66c78dd-58x4p -- curl -s 172.18.0.4:$TARGET_PORT/clientip 172.18.0.2:42692[root@ovnkubernetes ovn-kubernetes]# [root@ovnkubernetes ovn-kubernetes]# oc exec -n $SOURCE_NAMESPACE egressip-source-deployment-56d66c78dd-j85d9 -- curl -s 172.18.0.4:$TARGET_PORT/clientip 172.18.0.3:45944 ~~~ This is the expected baseline. When pods connect a host networked pod inside the cluster, they hit an SNAT, are SNATted and the target pod sees the node's IP address. Reproducing the issue ================================== ~~~ file=$(mktemp) cat <<EOF >| ${file} apiVersion: k8s.ovn.org/v1 kind: EgressIP metadata: name: ${EGRESSIP_NAME} spec: egressIPs: [ "172.18.0.10" ] namespaceSelector: matchLabels: env: ${SOURCE_NAMESPACE} EOF oc apply -f $file ~~~ Broken case a): EgressIP assigned to source node's node. This works, but traffic hits the EgressIP NAT. This is contrary to the definition of the feature. Traffic should not be natted to EgressIP at all, because this is not an off-cluster target. This case is way more difficult to fix than case b): ~~~ [root@ovnkubernetes ovn-kubernetes]# oc get egressip NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS egressip-source 172.18.0.10 ovn-worker 172.18.0.10 ~~~ ~~~ [root@ovnkubernetes ovn-kubernetes]# oc get pods -n $SOURCE_NAMESPACE -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES egressip-source-deployment-56d66c78dd-58x4p 1/1 Running 0 8m10s 10.244.0.5 ovn-worker2 <none> <none> egressip-source-deployment-56d66c78dd-j85d9 1/1 Running 0 8m10s 10.244.2.4 ovn-worker <none> <none> ~~~ ~~~ [root@ovnkubernetes ovn-kubernetes]# oc exec -n $SOURCE_NAMESPACE egressip-source-deployment-56d66c78dd-j85d9 -- curl -s 172.18.0.4:$TARGET_PORT/clientip 172.18.0.10:48632 ~~~ Broken case b): Not reproducible on kind, but reproducible on OpenShift 4.10.4 when I had filed the bug. ~~~ [root@ovnkubernetes ovn-kubernetes]# time oc exec -n $SOURCE_NAMESPACE egressip-source-deployment-56d66c78dd-58x4p -- curl -s 172.18.0.4:$TARGET_PORT/clientip 172.18.0.2:46512 real 0m0.220s user 0m0.140s sys 0m0.048s ~~~ Either, this affects OpenShift only (which I doubt), or this is already fixed upstream.
In latest 4.10 on AWS: ~~~ [akaris@linux option5 (main)]$ oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.10.0-0.nightly-2022-04-13-010908 True False 32m Cluster version is 4.10.0-0.nightly-2022-04-13-010908 ~~~ Applying egress ip stuff: ~~~ bash -x 00_label_nodes.sh bash -x 01_taint_target_nodes.sh bash -x 02_add_egress_assignable.sh bash -x 03_deploy_egressip_target.sh bash -x 04_deploy_egressip_source.sh cat <<'EOF' > egressip.yaml apiVersion: k8s.ovn.org/v1 kind: EgressIP metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"k8s.ovn.org/v1","kind":"EgressIP","metadata":{"annotations":{},"name":"egressip-source"},"spec":{"egressIPs":["10.0.128.5","10.0.192.5"],"namespaceSelector":{"matchLabels":{"env":"egressip-source"}}}} creationTimestamp: "2022-04-13T10:47:41Z" generation: 3 name: egressip-source resourceVersion: "37814" uid: 66999786-e487-42c4-b11a-bc4cfb348cb4 spec: egressIPs: - 10.0.128.5 namespaceSelector: matchLabels: env: egressip-source EOF oc apply -f egressip.yaml ~~~ Testing: ~~~ [akaris@linux option5 (main)]$ oc get egressip NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS egressip-source 10.0.128.5 ip-10-0-190-247.us-east-2.compute.internal 10.0.128.5 [akaris@linux option5 (main)]$ oc get pods -A -o wide | grep source egressip-source egressip-source-deployment-56d66c78dd-8svhc 1/1 Running 0 112s 10.129.2.19 ip-10-0-190-247.us-east-2.compute.internal <none> <none> egressip-source egressip-source-deployment-56d66c78dd-v28z8 1/1 Running 0 112s 10.128.2.21 ip-10-0-204-202.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-source-58474684f7-nhwts 1/1 Running 0 2m27s 10.129.2.13 ip-10-0-190-247.us-east-2.compute.internal <none> <none> [akaris@linux option5 (main)]$ oc get pods -A -o wide | grep target egressip-target egressip-target-deployment-rd5d6 1/1 Running 0 2m30s 10.0.159.106 ip-10-0-159-106.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-4v4zf 1/1 Running 0 37m 10.128.2.5 ip-10-0-204-202.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-bcl54 1/1 Running 0 44m 10.129.0.8 ip-10-0-155-115.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-fszx5 1/1 Running 0 38m 10.131.0.5 ip-10-0-159-106.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-gfdfq 1/1 Running 0 35m 10.129.2.5 ip-10-0-190-247.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-nq7zx 1/1 Running 0 44m 10.130.0.7 ip-10-0-246-17.us-east-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-tgtwf 1/1 Running 0 44m 10.128.0.8 ip-10-0-171-125.us-east-2.compute.internal <none> <none> ~~~ Broken case a) [akaris@linux option5 (main)]$ oc exec -n egressip-source egressip-source-deployment-56d66c78dd-8svhc -- curl -s 10.0.159.106:32767/clientip 10.0.128.5:38728 # <--- egressip Broken case b) [akaris@linux option5 (main)]$ timeout 10 oc exec -n egressip-source egressip-source-deployment-56d66c78dd-v28z8 -- curl -s 10.0.159.106:32767/clientip [akaris@linux option5 (main)]$ # <---- nothing Baseline: [akaris@linux option5 (main)]$ oc delete -f egressip.yaml egressip.k8s.ovn.org "egressip-source" deleted [akaris@linux option5 (main)]$ oc exec -n egressip-source egressip-source-deployment-56d66c78dd-8svhc -- curl -s 10.0.159.106:32767/clientip 10.0.190.247:41334 [akaris@linux] timeout 10 oc exec -n egressip-source egressip-source-deployment-56d66c78dd-v28z8 -- curl -s 10.0.159.106:32767/clientip 10.0.204.202:56782
AWS, 4.11 latest also has the issue: ~~~ [akaris@linux option5 (main)]$ oc get egressip NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS egressip-source 10.0.128.5 ip-10-0-188-46.us-west-2.compute.internal 10.0.128.5 [akaris@linux option5 (main)]$ oc get pods -o wide -A | grep source oc get pods -egressip-source egressip-source-deployment-56d66c78dd-747ht 1/1 Running 0 16s 10.128.2.24 ip-10-0-188-46.us-west-2.compute.internal <none> <none> egressip-source egressip-source-deployment-56d66c78dd-pwqh5 1/1 Running 0 16s 10.131.0.18 ip-10-0-227-72.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-source-7545f76ddc-lw2ll 1/1 Running 0 51m 10.128.2.4 ip-10-0-188-46.us-west-2.compute.internal <none> <none> [akaris@linux option5 (main)]$ oc get pods -o wide -A | grep target egressip-target egressip-target-deployment-fsqr4 1/1 Running 0 27s 10.0.160.229 ip-10-0-160-229.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-82qdx 1/1 Running 0 51m 10.130.0.6 ip-10-0-158-48.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-8kmxx 1/1 Running 0 43m 10.131.0.6 ip-10-0-227-72.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-cc7hd 1/1 Running 0 51m 10.129.0.6 ip-10-0-225-68.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-wqch9 1/1 Running 0 51m 10.128.0.10 ip-10-0-129-78.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-x62db 1/1 Running 0 43m 10.129.2.4 ip-10-0-160-229.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-target-xqtrf 1/1 Running 0 43m 10.128.2.7 ip-10-0-188-46.us-west-2.compute.internal <none> <none> [akaris@linux option5 (main)]$ oc get pods -o wide -A | grep source egressip-source egressip-source-deployment-56d66c78dd-747ht 1/1 Running 0 25s 10.128.2.24 ip-10-0-188-46.us-west-2.compute.internal <none> <none> egressip-source egressip-source-deployment-56d66c78dd-pwqh5 1/1 Running 0 25s 10.131.0.18 ip-10-0-227-72.us-west-2.compute.internal <none> <none> openshift-network-diagnostics network-check-source-7545f76ddc-lw2ll 1/1 Running 0 51m 10.128.2.4 ip-10-0-188-46.us-west-2.compute.internal <none> <none> [akaris@linux option5 (main)]$ oc exec -n egressip-source egressip-source-deployment-56d66c78dd-747ht -- curl -s 10.0.160.229:32767/clientip 10.0.128.5:45480[akaris@linux option5 (main)]$ [akaris@linux option5 (main)]$ oc exec -n egressip-source egressip-source-deployment-56d66c78dd-pwqh5 -- curl -s 10.0.160.229:32767/clientip ^C [akaris@linux option5 (main)]$ timeout 10 oc exec -n egressip-source egressip-source-deployment-56d66c78dd-pwqh5 -- curl -s 10.0.160.229:32767/clientip ~~~ ~~~ [akaris@linux option5 (main)]$ [akaris@linux option5 (main)]$ [akaris@linux option5 (main)]$ [akaris@linux option5 (main)]$ oc get clusterversion NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.11.0-0.nightly-2022-04-12-072444 True False 27m Error while reconciling 4.11.0-0.nightly-2022-04-12-072444: the cluster operator monitoring has not yet successfully rolled out ~~~ Perhaps in kind, this "just works" because the switching/routing is more forgiving?
*** Bug 2076321 has been marked as a duplicate of this bug. ***
Hi Siva, I have a fix which I am testing out, we want to be extra sure it will work and not break anything. I will post a PR soon (tomorrow morning). Thanks for your patience. Workaround is to add the SNAT back to the node where the pod lives manually, but changing db is of course not manually recommended. It would be something like: "ovn-nbctl lr-nat-add GR_nodename snat nodeIP podIP" -> I would recommend waiting for a proper fix instead of doing this. Please rest assured that this is being worked at with high priority. Cheers, Surya.
@surya I have tested on OCP 4.10.9 to see if creating the missing snat entry makes the problem go away and it worked. "ovn-nbctl lr-nat-add GR_worker-0.devops.lab.pnq2.cee.redhat.com snat 10.74.176.229 10.131.0.7" I have not checked to see if the entry persists after restarting ovn pods on the masters and worker-0. So is the issue only happening if a non host-network pod tries to communicate with a host-network pod ? Thx Anand
upstream PR: https://github.com/ovn-org/ovn-kubernetes/pull/2945
(In reply to Anand Paladugu from comment #15) > @surya > > I have tested on OCP 4.10.9 to see if creating the missing snat entry makes > the problem go away and it worked. > > "ovn-nbctl lr-nat-add GR_worker-0.devops.lab.pnq2.cee.redhat.com snat > 10.74.176.229 10.131.0.7" > sure it will work :) but hacking dbs wouldn't be the best option... its unsafe > I have not checked to see if the entry persists after restarting ovn pods on > the masters and worker-0. It will persist because you are inserting an entry into the ovsdb. > > So is the issue only happening if a non host-network pod tries to > communicate with a host-network pod ? > It will effect all: 1) pod2host-net traffic (where host-net pods are on other nodes and not on the node where the pod lives) 2) pod2svc(backed by host-net pods which live on nodes other than the node where the pod lives)
@surya Thanks for the info.
removing needinfo...
> I have not checked to see if the entry persists after restarting ovn pods on > the masters and worker-0. It will persist because you are inserting an entry into the ovsdb. actually let me correct myself here, its possible it doesn't persist, because the restart will load the buggy code where we delete the SNAT, so it will remove it again :(
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Important: OpenShift Container Platform 4.11.0 bug fix and security update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2022:5069