Skip to content

ovnkube-trace

A tool to trace packet simulations for arbitrary UDP or TCP traffic between points in an ovn-kubernetes driven cluster.

Usage:

Given the command-line arguments, ovnkube-trace would inspect the cluster to determine the addresses (MAC and IP) of the source and destination and perform ovn-trace, ovs-appctl ofproto/trace, and ovn-detrace from/to both directions.

Usage of /tmp/go-build1564673416/b001/exe/ovnkube-trace:
  -addr-family string
        Address family (ip4 or ip6) to be used for tracing (default "ip4")
  -dst string
        dest: destination pod name
  -dst-ip string
        destination IP address (meant for tests to external targets)
  -dst-namespace string
        k8s namespace of dest pod (default "default")
  -dst-port string
        dst-port: destination port (default "80")
  -dump-udn-vrf-table-ids
        Dump the VRF table ID per node for all the user defined networks
  -kubeconfig string
        absolute path to the kubeconfig file
  -loglevel string
        loglevel: klog level (default "0")
  -ovn-config-namespace string
        namespace used by ovn-config itself
  -service string
        service: destination service name
  -skip-detrace
        skip ovn-detrace command
  -src string
        src: source pod name
  -src-namespace string
        k8s namespace of source pod (default "default")
  -tcp
        use tcp transport protocol
  -udp
        use udp transport protocol

Currently implemented loglevels are: * 0 (minimal output) * 2 (more verbose output showing results of trace commands) * and 5 (debug output)

Example

In an environment between 2 pods in namespace default, where the pods are named fedora-deployment-7d49fddf69-chmvh and fedora-deployment-7d49fddf69-t4hqw, the goal would be to trace UDP traffic on port 53 between both pods. Each node in the cluster is running in a different interconnect zone.

# kubectl get pods -o wide
NAME                                 READY   STATUS    RESTARTS   AGE   IP           NODE                NOMINATED NODE   READINESS GATES
fedora-deployment-7d49fddf69-chmvh   1/1     Running   0          10m   10.244.2.3   ovn-worker2         <none>           <none>
fedora-deployment-7d49fddf69-t4hqw   1/1     Running   0          10m   10.244.1.6   ovn-worker          <none>           <none>
fedora-deployment-7d49fddf69-vwjt7   1/1     Running   0          10m   10.244.0.3   ovn-control-plane   <none>           <none>

The command that one would run in this case would be:

ovnkube-trace \
  -src-namespace default \
  -src fedora-deployment-7d49fddf69-chmvh \
  -dst-namespace default \
  -dst fedora-deployment-7d49fddf69-t4hqw \
  -udp -dst-port 53 \
  -loglevel 0

The result with loglevel 0 would be for a successful trace:

# ovnkube-trace -src-namespace default -src fedora-deployment-7d49fddf69-chmvh -dst-namespace default -dst fedora-deployment-7d49fddf69-t4hqw -udp -dst-port 53 -loglevel 0
ovn-trace source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
ovn-trace (remote) source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
ovn-trace destination pod to source pod indicates success from fedora-deployment-7d49fddf69-t4hqw to fedora-deployment-7d49fddf69-chmvh
ovn-trace (remote) destination pod to source pod indicates success from fedora-deployment-7d49fddf69-t4hqw to fedora-deployment-7d49fddf69-chmvh
ovs-appctl ofproto/trace source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
ovs-appctl ofproto/trace destination pod to source pod indicates success from fedora-deployment-7d49fddf69-t4hqw to fedora-deployment-7d49fddf69-chmvh
ovn-detrace source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
ovn-detrace destination pod to source pod indicates success from fedora-deployment-7d49fddf69-t4hqw to fedora-deployment-7d49fddf69-chmvh

In order to see the actual trace output of the ovn-trace and ovs-appctl ofproto/trace commands, one can increase the loglevel to 2, and in order to see debug output for the ovnkube-trace application one can raise the loglevel to 5:

# ovnkube-trace -src-namespace default -src fedora-deployment-7d49fddf69-chmvh -dst-namespace default -dst fedora-deployment-7d49fddf69-t4hqw -udp -dst-port 53 -loglevel 2
I0823 21:33:18.112821 2457963 ovnkube-trace.go:1157] Log level set to: 2
I0823 21:33:18.857705 2457963 ovnkube-trace.go:693] ovn-trace source pod to destination pod Output:
# udp,reg14=0x3,vlan_tci=0x0000,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.6,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=52888,tp_dst=53

ingress(dp="ovn-worker2", inport="default_fedora-deployment-7d49fddf69-chmvh")
------------------------------------------------------------------------------
 0. ls_in_check_port_sec (northd.c:8583): 1, priority 50, uuid de664d3a
    reg0[15] = check_in_port_sec();
    next;
 4. ls_in_pre_acl (northd.c:5991): ip, priority 100, uuid d9a60156
    reg0[0] = 1;
    next;
 5. ls_in_pre_lb (northd.c:6178): ip, priority 100, uuid 4f6825b1
    reg0[2] = 1;
    next;
 6. ls_in_pre_stateful (northd.c:6201): reg0[2] == 1, priority 110, uuid 82c039a6
    ct_lb_mark;

ct_lb_mark /* default (use --ct to customize) */
------------------------------------------------
 7. ls_in_acl_hint (northd.c:6297): !ct.new && ct.est && !ct.rpl && ct_mark.blocked == 0, priority 4, uuid 0b20013d
    reg0[8] = 1;
    reg0[10] = 1;
    next;
 9. ls_in_acl_action (northd.c:6764): reg8[30..31] == 0, priority 500, uuid 3eec76bb
    reg8[30..31] = 1;
    next(8);
 9. ls_in_acl_action (northd.c:6764): reg8[30..31] == 1, priority 500, uuid b327f7af
    reg8[30..31] = 2;
    next(8);
 9. ls_in_acl_action (northd.c:6753): 1, priority 0, uuid b0f710dc
    reg8[16] = 0;
    reg8[17] = 0;
    reg8[18] = 0;
    reg8[30..31] = 0;
    next;
15. ls_in_pre_hairpin (northd.c:7786): ip && ct.trk, priority 100, uuid 88ef5011
    reg0[6] = chk_lb_hairpin();
    reg0[12] = chk_lb_hairpin_reply();
    next;
19. ls_in_acl_after_lb_action (northd.c:6764): reg8[30..31] == 0, priority 500, uuid 01461328
    reg8[30..31] = 1;
    next(18);
19. ls_in_acl_after_lb_action (northd.c:6764): reg8[30..31] == 1, priority 500, uuid a22021af
    reg8[30..31] = 2;
    next(18);
19. ls_in_acl_after_lb_action (northd.c:6753): 1, priority 0, uuid 2c98ee3d
    reg8[16] = 0;
    reg8[17] = 0;
    reg8[18] = 0;
    reg8[30..31] = 0;
    next;
27. ls_in_l2_lkup (northd.c:9407): eth.dst == { 0a:58:a9:fe:01:01, 0a:58:0a:f4:02:01 }, priority 50, uuid b29511a2
    outport = "stor-ovn-worker2";
    output;

egress(dp="ovn-worker2", inport="default_fedora-deployment-7d49fddf69-chmvh", outport="stor-ovn-worker2")
---------------------------------------------------------------------------------------------------------
 0. ls_out_pre_acl (northd.c:5878): ip && outport == "stor-ovn-worker2", priority 110, uuid 8b1bef96
    next;
 1. ls_out_pre_lb (northd.c:5878): ip && outport == "stor-ovn-worker2", priority 110, uuid d7c53e71
    next;
 3. ls_out_acl_hint (northd.c:6297): !ct.new && ct.est && !ct.rpl && ct_mark.blocked == 0, priority 4, uuid 26b08bb5
    reg0[8] = 1;
    reg0[10] = 1;
    next;
 5. ls_out_acl_action (northd.c:6764): reg8[30..31] == 0, priority 500, uuid ea58bb8e
    reg8[30..31] = 1;
    next(4);
 5. ls_out_acl_action (northd.c:6764): reg8[30..31] == 1, priority 500, uuid 03897328
    reg8[30..31] = 2;
    next(4);
 5. ls_out_acl_action (northd.c:6753): 1, priority 0, uuid bcfbe611
    reg8[16] = 0;
    reg8[17] = 0;
    reg8[18] = 0;
    reg8[30..31] = 0;
    next;
 9. ls_out_check_port_sec (northd.c:5843): 1, priority 0, uuid 79358872
    reg0[15] = check_out_port_sec();
    next;
10. ls_out_apply_port_sec (northd.c:5848): 1, priority 0, uuid 12ba0dbe
    output;
    /* output to "stor-ovn-worker2", type "patch" */

ingress(dp="ovn_cluster_router", inport="rtos-ovn-worker2")
-----------------------------------------------------------
 0. lr_in_admission (northd.c:11790): eth.dst == { 0a:58:a9:fe:01:01, 0a:58:0a:f4:02:01 } && inport == "rtos-ovn-worker2" && is_chassis_resident("cr-rtos-ovn-worker2"), priority 50, uuid e40942af
    xreg0[0..47] = 0a:58:0a:f4:02:01;
    next;
 1. lr_in_lookup_neighbor (northd.c:11956): 1, priority 0, uuid 897d00f0
    reg9[2] = 1;
    next;
 2. lr_in_learn_neighbor (northd.c:11965): reg9[2] == 1 || reg9[3] == 0, priority 100, uuid 234da6ee
    next;
12. lr_in_ip_routing_pre (northd.c:12190): 1, priority 0, uuid b1a3a6af
    reg7 = 0;
    next;
13. lr_in_ip_routing (northd.c:10603): reg7 == 0 && ip4.dst == 10.244.1.0/24, priority 73, uuid 1ed4e720
    ip.ttl--;
    reg8[0..15] = 0;
    reg0 = 100.88.0.4;
    reg1 = 100.88.0.2;
    eth.src = 0a:58:a8:fe:00:02;
    outport = "rtots-ovn-worker2";
    flags.loopback = 1;
    next;
14. lr_in_ip_routing_ecmp (northd.c:12285): reg8[0..15] == 0, priority 150, uuid a1ea724a
    next;
15. lr_in_policy (northd.c:9741): ip4.src == 10.244.0.0/16 && ip4.dst == 10.244.0.0/16, priority 102, uuid 1c6af09a
    reg8[0..15] = 0;
    next;
16. lr_in_policy_ecmp (northd.c:12452): reg8[0..15] == 0, priority 150, uuid 3841a2fc
    next;
17. lr_in_arp_resolve (northd.c:12665): outport == "rtots-ovn-worker2" && reg0 == 100.88.0.4, priority 100, uuid 792c14a1
    eth.dst = 0a:58:a8:fe:00:04;
    next;
21. lr_in_arp_request (northd.c:13083): 1, priority 0, uuid f21b210a
    output;

egress(dp="ovn_cluster_router", inport="rtos-ovn-worker2", outport="rtots-ovn-worker2")
---------------------------------------------------------------------------------------
 0. lr_out_chk_dnat_local (northd.c:14444): 1, priority 0, uuid 2f6e84ed
    reg9[4] = 0;
    next;
 6. lr_out_delivery (northd.c:13129): outport == "rtots-ovn-worker2", priority 100, uuid 81cdee53
    output;
    /* output to "rtots-ovn-worker2", type "patch" */

ingress(dp="transit_switch", inport="tstor-ovn-worker2")
--------------------------------------------------------
 0. ls_in_check_port_sec (northd.c:8583): 1, priority 50, uuid de664d3a
    reg0[15] = check_in_port_sec();
    next;
 5. ls_in_pre_lb (northd.c:5875): ip && inport == "tstor-ovn-worker2", priority 110, uuid 69169a39
    next;
27. ls_in_l2_lkup (northd.c:9329): eth.dst == 0a:58:a8:fe:00:04, priority 50, uuid da101703
    outport = "tstor-ovn-worker";
    output;

egress(dp="transit_switch", inport="tstor-ovn-worker2", outport="tstor-ovn-worker")
-----------------------------------------------------------------------------------
 9. ls_out_check_port_sec (northd.c:5843): 1, priority 0, uuid 79358872
    reg0[15] = check_out_port_sec();
    next;
10. ls_out_apply_port_sec (northd.c:5848): 1, priority 0, uuid 12ba0dbe
    output;
    /* output to "tstor-ovn-worker", type "remote" */

ovn-trace source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
I0823 21:33:18.858296 2457963 ovnkube-trace.go:704] Search string matched:
output to "tstor-ovn-worker"
(...)
I0823 21:33:19.169751 2457963 ovnkube-trace.go:693] ovs-appctl ofproto/trace source pod to destination pod Output:
Flow: udp,in_port=7,vlan_tci=0x0000,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.6,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=12345,tp_dst=53

bridge("br-int")
----------------
 0. in_port=7, priority 100, cookie 0x6c1d0b4a
    set_field:0x13->reg13
    set_field:0xb->reg11
    set_field:0x6->reg12
    set_field:0x3->metadata
    set_field:0x3->reg14
    resubmit(,8)
 8. metadata=0x3, priority 50, cookie 0xde664d3a
    set_field:0/0x1000->reg10
    resubmit(,73)
    73. ip,reg14=0x3,metadata=0x3,dl_src=0a:58:0a:f4:02:03,nw_src=10.244.2.3, priority 90, cookie 0x6c1d0b4a
            set_field:0/0x1000->reg10
    move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
     -> NXM_NX_XXREG0[111] is now 0
    resubmit(,9)
 9. metadata=0x3, priority 0, cookie 0x57b52622
    resubmit(,10)
10. metadata=0x3, priority 0, cookie 0x98964ef0
    resubmit(,11)
11. metadata=0x3, priority 0, cookie 0x72c60524
    resubmit(,12)
12. ip,metadata=0x3, priority 100, cookie 0xd9a60156
    set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0
    resubmit(,13)
13. ip,metadata=0x3, priority 100, cookie 0x4f6825b1
    set_field:0x4000000000000000000000000/0x4000000000000000000000000->xxreg0
    resubmit(,14)
14. ip,reg0=0x4/0x4,metadata=0x3, priority 110, cookie 0x82c039a6
    ct(table=15,zone=NXM_NX_REG13[0..15],nat)
    nat
     -> A clone of the packet is forked to recirculate. The forked pipeline will be resumed at table 15.
     -> Sets the packet to an untracked state, and clears all the conntrack fields.

Final flow: udp,reg0=0x5,reg11=0xb,reg12=0x6,reg13=0x13,reg14=0x3,metadata=0x3,in_port=7,vlan_tci=0x0000,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.6,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=12345,tp_dst=53
Megaflow: recirc_id=0,eth,udp,in_port=7,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.128.0.0/9,nw_frag=no,tp_src=0x2000/0xe000
Datapath actions: ct(zone=19,nat),recirc(0x12)

===============================================================================
recirc(0x12) - resume conntrack with default ct_state=trk|new (use --ct-next to customize)
Replacing src/dst IP/ports to simulate NAT:
 Initial flow: 
 Modified flow: 
===============================================================================

Flow: recirc_id=0x12,ct_state=new|trk,ct_zone=19,eth,udp,reg0=0x5,reg11=0xb,reg12=0x6,reg13=0x13,reg14=0x3,metadata=0x3,in_port=7,vlan_tci=0x0000,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.6,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=12345,tp_dst=53

bridge("br-int")
----------------
    thaw
        Resuming from table 15
15. ct_state=+new-est+trk,metadata=0x3, priority 7, cookie 0xf14d8019
    set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0
    set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0
    resubmit(,16)
16. ct_state=-est+trk,ip,metadata=0x3, priority 1, cookie 0x8dfd1f3e
    set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0
    resubmit(,17)
17. reg8=0/0xc0000000,metadata=0x3, priority 500, cookie 0x3eec76bb
    set_field:0x4000000000000000/0xc000000000000000->xreg4
    resubmit(,16)
16. ct_state=-est+trk,ip,metadata=0x3, priority 1, cookie 0x8dfd1f3e
    set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0
    resubmit(,17)
17. reg8=0x40000000/0xc0000000,metadata=0x3, priority 500, cookie 0xb327f7af
    set_field:0x8000000000000000/0xc000000000000000->xreg4
    resubmit(,16)
16. ct_state=-est+trk,ip,metadata=0x3, priority 1, cookie 0x8dfd1f3e
    set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0
    resubmit(,17)
17. metadata=0x3, priority 0, cookie 0xb0f710dc
    set_field:0/0x1000000000000->xreg4
    set_field:0/0x2000000000000->xreg4
    set_field:0/0x4000000000000->xreg4
    set_field:0/0xc000000000000000->xreg4
    resubmit(,18)
18. metadata=0x3, priority 0, cookie 0xcae3d5b1
    resubmit(,19)
19. metadata=0x3, priority 0, cookie 0x66860608
    resubmit(,20)
20. metadata=0x3, priority 0, cookie 0x9db4b75e
    resubmit(,21)
21. metadata=0x3, priority 0, cookie 0x414a15a0
    resubmit(,22)
22. metadata=0x3, priority 0, cookie 0xebbc94cf
    resubmit(,23)
23. ct_state=+trk,ip,metadata=0x3, priority 100, cookie 0x88ef5011
    set_field:0/0x80->reg10
    resubmit(,68)
    68. No match.
            drop
    move:NXM_NX_REG10[7]->NXM_NX_XXREG0[102]
     -> NXM_NX_XXREG0[102] is now 0
    set_field:0/0x80->reg10
    resubmit(,69)
    69. No match.
            drop
    move:NXM_NX_REG10[7]->NXM_NX_XXREG0[108]
     -> NXM_NX_XXREG0[108] is now 0
    resubmit(,24)
24. metadata=0x3, priority 0, cookie 0x7fd98606
    resubmit(,25)
25. metadata=0x3, priority 0, cookie 0xd3d8976
    resubmit(,26)
26. metadata=0x3, priority 0, cookie 0x1ecb6f2e
    resubmit(,27)
27. reg8=0/0xc0000000,metadata=0x3, priority 500, cookie 0x1461328
    set_field:0x4000000000000000/0xc000000000000000->xreg4
    resubmit(,26)
26. metadata=0x3, priority 0, cookie 0x1ecb6f2e
    resubmit(,27)
27. reg8=0x40000000/0xc0000000,metadata=0x3, priority 500, cookie 0xa22021af
    set_field:0x8000000000000000/0xc000000000000000->xreg4
    resubmit(,26)
26. metadata=0x3, priority 0, cookie 0x1ecb6f2e
    resubmit(,27)
27. metadata=0x3, priority 0, cookie 0x2c98ee3d
    set_field:0/0x1000000000000->xreg4
    set_field:0/0x2000000000000->xreg4
    set_field:0/0x4000000000000->xreg4
    set_field:0/0xc000000000000000->xreg4
    resubmit(,28)
28. ip,reg0=0x2/0x2002,metadata=0x3, priority 100, cookie 0xd8583947
    ct(commit,zone=NXM_NX_REG13[0..15],nat(src),exec(set_field:0/0x1->ct_mark))
    nat(src)
    set_field:0/0x1->ct_mark
     -> Sets the packet to an untracked state, and clears all the conntrack fields.
    resubmit(,29)
29. metadata=0x3, priority 0, cookie 0x41080b67
    resubmit(,30)
30. metadata=0x3, priority 0, cookie 0x936e8520
    resubmit(,31)
31. metadata=0x3, priority 0, cookie 0x6d369d0e
    resubmit(,32)
32. metadata=0x3, priority 0, cookie 0x119a6138
    resubmit(,33)
33. metadata=0x3, priority 0, cookie 0x1d30f590
    resubmit(,34)
34. metadata=0x3, priority 0, cookie 0x74ef3d9
    resubmit(,35)
35. metadata=0x3,dl_dst=0a:58:0a:f4:02:01, priority 50, cookie 0xb29511a2
    set_field:0x1->reg15
    resubmit(,37)
37. priority 0
    resubmit(,38)
38. priority 0
    resubmit(,40)
40. priority 0
    resubmit(,41)
41. reg15=0x1,metadata=0x3, priority 100, cookie 0x7c79d0e2
    set_field:0xb->reg11
    set_field:0x6->reg12
    resubmit(,42)
42. priority 0
    set_field:0->reg0
    set_field:0->reg1
    set_field:0->reg2
    set_field:0->reg3
    set_field:0->reg4
    set_field:0->reg5
    set_field:0->reg6
    set_field:0->reg7
    set_field:0->reg8
    set_field:0->reg9
    resubmit(,43)
43. ip,reg15=0x1,metadata=0x3, priority 110, cookie 0x8b1bef96
    resubmit(,44)
44. ip,reg15=0x1,metadata=0x3, priority 110, cookie 0xd7c53e71
    resubmit(,45)
45. metadata=0x3, priority 0, cookie 0xe59d971f
    resubmit(,46)
46. ct_state=-trk,metadata=0x3, priority 5, cookie 0xd4c65410
    set_field:0x100000000000000000000000000/0x100000000000000000000000000->xxreg0
    set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0
    resubmit(,47)
47. metadata=0x3, priority 0, cookie 0x17ae0ddf
    resubmit(,48)
48. reg8=0/0xc0000000,metadata=0x3, priority 500, cookie 0xea58bb8e
    set_field:0x4000000000000000/0xc000000000000000->xreg4
    resubmit(,47)
47. metadata=0x3, priority 0, cookie 0x17ae0ddf
    resubmit(,48)
48. reg8=0x40000000/0xc0000000,metadata=0x3, priority 500, cookie 0x3897328
    set_field:0x8000000000000000/0xc000000000000000->xreg4
    resubmit(,47)
47. metadata=0x3, priority 0, cookie 0x17ae0ddf
    resubmit(,48)
48. metadata=0x3, priority 0, cookie 0xbcfbe611
    set_field:0/0x1000000000000->xreg4
    set_field:0/0x2000000000000->xreg4
    set_field:0/0x4000000000000->xreg4
    set_field:0/0xc000000000000000->xreg4
    resubmit(,49)
49. metadata=0x3, priority 0, cookie 0x39bbcf9
    resubmit(,50)
50. metadata=0x3, priority 0, cookie 0xaf9ffaea
    resubmit(,51)
51. metadata=0x3, priority 0, cookie 0xbee9000e
    resubmit(,52)
52. metadata=0x3, priority 0, cookie 0x79358872
    set_field:0/0x1000->reg10
    resubmit(,75)
    75. No match.
            drop
    move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
     -> NXM_NX_XXREG0[111] is now 0
    resubmit(,53)
53. metadata=0x3, priority 0, cookie 0x12ba0dbe
    resubmit(,64)
64. priority 0
    resubmit(,65)
65. reg15=0x1,metadata=0x3, priority 100, cookie 0x7c79d0e2
    clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0->reg13,set_field:0x8->reg11,set_field:0xe->reg12,set_field:0x1->metadata,set_field:0x2->reg14,set_field:0->reg10,set_field:0->reg15,set_field:0->reg0,set_field:0->reg1,set_field:0->reg2,set_field:0->reg3,set_field:0->reg4,set_field:0->reg5,set_field:0->reg6,set_field:0->reg7,set_field:0->reg8,set_field:0->reg9,resubmit(,8))
    ct_clear
    set_field:0->reg11
    set_field:0->reg12
    set_field:0->reg13
    set_field:0x8->reg11
    set_field:0xe->reg12
    set_field:0x1->metadata
    set_field:0x2->reg14
    set_field:0->reg10
    set_field:0->reg15
    set_field:0->reg0
    set_field:0->reg1
    set_field:0->reg2
    set_field:0->reg3
    set_field:0->reg4
    set_field:0->reg5
    set_field:0->reg6
    set_field:0->reg7
    set_field:0->reg8
    set_field:0->reg9
    resubmit(,8)
 8. reg14=0x2,metadata=0x1,dl_dst=0a:58:0a:f4:02:01, priority 50, cookie 0xe40942af
    set_field:0xa580af402010000000000000000/0xffffffffffff0000000000000000->xxreg0
    resubmit(,9)
 9. metadata=0x1, priority 0, cookie 0x897d00f0
    set_field:0x4/0x4->xreg4
    resubmit(,10)
10. reg9=0/0x8,metadata=0x1, priority 100, cookie 0x234da6ee
    resubmit(,11)
11. metadata=0x1, priority 0, cookie 0x7f28e0ff
    resubmit(,12)
12. metadata=0x1, priority 0, cookie 0x1ee2fb50
    resubmit(,13)
13. metadata=0x1, priority 0, cookie 0x17a7cfa8
    resubmit(,14)
14. metadata=0x1, priority 0, cookie 0x56f6cf85
    resubmit(,15)
15. metadata=0x1, priority 0, cookie 0x600f694f
    resubmit(,16)
16. metadata=0x1, priority 0, cookie 0xda085702
    resubmit(,17)
17. metadata=0x1, priority 0, cookie 0x30578698
    resubmit(,18)
18. metadata=0x1, priority 0, cookie 0x58ec3bea
    resubmit(,19)
19. metadata=0x1, priority 0, cookie 0xe6096bd7
    resubmit(,20)
20. metadata=0x1, priority 0, cookie 0xb1a3a6af
    set_field:0/0xffffffff->xxreg1
    resubmit(,21)
21. ip,reg7=0,metadata=0x1,nw_dst=10.244.1.0/24, priority 73, cookie 0x1ed4e720
    dec_ttl()
    set_field:0/0xffff00000000->xreg4
    set_field:0xa8fe0004000000000000000000000000/0xffffffff000000000000000000000000->xxreg0
    set_field:0xa8fe00020000000000000000/0xffffffff0000000000000000->xxreg0
    set_field:0a:58:a8:fe:00:02->eth_src
    set_field:0x4->reg15
    set_field:0x1/0x1->reg10
    resubmit(,22)
22. reg8=0/0xffff,metadata=0x1, priority 150, cookie 0xa1ea724a
    resubmit(,23)
23. ip,metadata=0x1,nw_src=10.244.0.0/16,nw_dst=10.244.0.0/16, priority 102, cookie 0x1c6af09a
    set_field:0/0xffff00000000->xreg4
    resubmit(,24)
24. reg8=0/0xffff,metadata=0x1, priority 150, cookie 0x3841a2fc
    resubmit(,25)
25. reg0=0xa8fe0004,reg15=0x4,metadata=0x1, priority 100, cookie 0x792c14a1
    set_field:0a:58:a8:fe:00:04->eth_dst
    resubmit(,26)
26. metadata=0x1, priority 0, cookie 0x8be057a3
    resubmit(,27)
27. metadata=0x1, priority 0, cookie 0x5ea30a7d
    resubmit(,28)
28. metadata=0x1, priority 0, cookie 0x79529c6a
    resubmit(,29)
29. metadata=0x1, priority 0, cookie 0xf21b210a
    resubmit(,37)
37. priority 0
    resubmit(,38)
38. priority 0
    resubmit(,40)
40. priority 0
    resubmit(,41)
41. reg15=0x4,metadata=0x1, priority 100, cookie 0x93ec5715
    set_field:0x8->reg11
    set_field:0xe->reg12
    resubmit(,42)
42. priority 0
    set_field:0->reg0
    set_field:0->reg1
    set_field:0->reg2
    set_field:0->reg3
    set_field:0->reg4
    set_field:0->reg5
    set_field:0->reg6
    set_field:0->reg7
    set_field:0->reg8
    set_field:0->reg9
    resubmit(,43)
43. metadata=0x1, priority 0, cookie 0x2f6e84ed
    set_field:0/0x10->xreg4
    resubmit(,44)
44. metadata=0x1, priority 0, cookie 0x90d7e25c
    resubmit(,45)
45. metadata=0x1, priority 0, cookie 0xe36440a6
    resubmit(,46)
46. metadata=0x1, priority 0, cookie 0xd3dbde6f
    resubmit(,47)
47. metadata=0x1, priority 0, cookie 0x519ebaf8
    resubmit(,48)
48. metadata=0x1, priority 0, cookie 0xc8fb3dc1
    resubmit(,49)
49. reg15=0x4,metadata=0x1, priority 100, cookie 0x81cdee53
    resubmit(,64)
64. reg10=0x1/0x1,reg15=0x4,metadata=0x1, priority 100, cookie 0x93ec5715
    push:NXM_OF_IN_PORT[]
    set_field:ANY->in_port
    resubmit(,65)
    65. reg15=0x4,metadata=0x1, priority 100, cookie 0x93ec5715
            clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0->reg13,set_field:0x3->reg11,set_field:0x11->reg12,set_field:0xff0003->metadata,set_field:0x2->reg14,set_field:0->reg10,set_field:0->reg15,set_field:0->reg0,set_field:0->reg1,set_field:0->reg2,set_field:0->reg3,set_field:0->reg4,set_field:0->reg5,set_field:0->reg6,set_field:0->reg7,set_field:0->reg8,set_field:0->reg9,resubmit(,8))
            ct_clear
            set_field:0->reg11
            set_field:0->reg12
            set_field:0->reg13
            set_field:0x3->reg11
            set_field:0x11->reg12
            set_field:0xff0003->metadata
            set_field:0x2->reg14
            set_field:0->reg10
            set_field:0->reg15
            set_field:0->reg0
            set_field:0->reg1
            set_field:0->reg2
            set_field:0->reg3
            set_field:0->reg4
            set_field:0->reg5
            set_field:0->reg6
            set_field:0->reg7
            set_field:0->reg8
            set_field:0->reg9
            resubmit(,8)
         8. metadata=0xff0003, priority 50, cookie 0xde664d3a
            set_field:0/0x1000->reg10
            resubmit(,73)
            73. No match.
                    drop
            move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
             -> NXM_NX_XXREG0[111] is now 0
            resubmit(,9)
         9. metadata=0xff0003, priority 0, cookie 0x57b52622
            resubmit(,10)
        10. metadata=0xff0003, priority 0, cookie 0x98964ef0
            resubmit(,11)
        11. metadata=0xff0003, priority 0, cookie 0x72c60524
            resubmit(,12)
        12. metadata=0xff0003, priority 0, cookie 0x351dd7a3
            resubmit(,13)
        13. ip,reg14=0x2,metadata=0xff0003, priority 110, cookie 0x69169a39
            resubmit(,14)
        14. metadata=0xff0003, priority 0, cookie 0x5c78cf83
            resubmit(,15)
        15. metadata=0xff0003, priority 65535, cookie 0x8ac9010
            resubmit(,16)
        16. metadata=0xff0003, priority 65535, cookie 0x973723d7
            resubmit(,17)
        17. metadata=0xff0003, priority 0, cookie 0xc722ae8c
            resubmit(,18)
        18. metadata=0xff0003, priority 0, cookie 0xcae3d5b1
            resubmit(,19)
        19. metadata=0xff0003, priority 0, cookie 0x66860608
            resubmit(,20)
        20. metadata=0xff0003, priority 0, cookie 0x9db4b75e
            resubmit(,21)
        21. metadata=0xff0003, priority 0, cookie 0x414a15a0
            resubmit(,22)
        22. metadata=0xff0003, priority 0, cookie 0xebbc94cf
            resubmit(,23)
        23. metadata=0xff0003, priority 0, cookie 0x74d6cf40
            resubmit(,24)
        24. metadata=0xff0003, priority 0, cookie 0x7fd98606
            resubmit(,25)
        25. metadata=0xff0003, priority 0, cookie 0xd3d8976
            resubmit(,26)
        26. metadata=0xff0003, priority 0, cookie 0x1ecb6f2e
            resubmit(,27)
        27. metadata=0xff0003, priority 0, cookie 0xba824d52
            resubmit(,28)
        28. metadata=0xff0003, priority 0, cookie 0xa5e04afc
            resubmit(,29)
        29. metadata=0xff0003, priority 0, cookie 0x41080b67
            resubmit(,30)
        30. metadata=0xff0003, priority 0, cookie 0x936e8520
            resubmit(,31)
        31. metadata=0xff0003, priority 0, cookie 0x6d369d0e
            resubmit(,32)
        32. metadata=0xff0003, priority 0, cookie 0x119a6138
            resubmit(,33)
        33. metadata=0xff0003, priority 0, cookie 0x1d30f590
            resubmit(,34)
        34. metadata=0xff0003, priority 0, cookie 0x74ef3d9
            resubmit(,35)
        35. metadata=0xff0003,dl_dst=0a:58:a8:fe:00:04, priority 50, cookie 0xda101703
            set_field:0x4->reg15
            resubmit(,37)
        37. priority 0
            resubmit(,38)
        38. priority 0
            resubmit(,40)
        40. reg15=0x4,metadata=0xff0003, priority 100, cookie 0xb6badb74
            set_field:0xff0003/0xffffff->tun_id
            set_field:0x4->tun_metadata0
            move:NXM_NX_REG14[0..14]->NXM_NX_TUN_METADATA0[16..30]
             -> NXM_NX_TUN_METADATA0[16..30] is now 0x2
            output:4
             -> output to kernel tunnel
            resubmit(,41)
        41. priority 0
            drop
    pop:NXM_OF_IN_PORT[]
     -> NXM_OF_IN_PORT[] is now 7

Final flow: recirc_id=0x12,eth,udp,reg0=0x300,reg11=0xb,reg12=0x6,reg13=0x13,reg14=0x3,reg15=0x1,metadata=0x3,in_port=7,vlan_tci=0x0000,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.6,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=12345,tp_dst=53
Megaflow: recirc_id=0x12,ct_state=+new-est-rel-rpl-inv+trk,ct_mark=0/0xf,eth,udp,in_port=7,dl_src=0a:58:0a:f4:02:03,dl_dst=0a:58:0a:f4:02:01,nw_src=10.244.2.3,nw_dst=10.244.1.0/24,nw_ecn=0,nw_ttl=64,nw_frag=no
Datapath actions: ct(commit,zone=19,mark=0/0x1,nat(src)),set(tunnel(tun_id=0xff0003,dst=172.18.0.2,ttl=64,tp_dst=6081,geneve({class=0x102,type=0x80,len=4,0x20004}),flags(df|csum|key))),set(eth(src=0a:58:a8:fe:00:02,dst=0a:58:a8:fe:00:04)),set(ipv4(ttl=63)),5

ovs-appctl ofproto/trace source pod to destination pod indicates success from fedora-deployment-7d49fddf69-chmvh to fedora-deployment-7d49fddf69-t4hqw
I0823 21:33:19.170205 2457963 ovnkube-trace.go:704] Search string matched:
-> output to kernel tunnel
(...)