Skip to content

Instantly share code, notes, and snippets.

@trozet
Created October 30, 2025 19:27
Show Gist options
  • Select an option

  • Save trozet/447663b8df6316db27ae8a217484ea9b to your computer and use it in GitHub Desktop.

Select an option

Save trozet/447663b8df6316db27ae8a217484ea9b to your computer and use it in GitHub Desktop.
host->nodeport udn same node
[root@ovn-worker2 ~]# ovs-appctl ofproto/trace breth0 in_port=LOCAL,dl_src=66:a6:bc:8d:62:3f,dl_dst=0a:58:a9:fe:00:04,tcp,tp_dst=80,nw_dst=10.96.134.186,nw_src=172.18.0.2,nw_ttl=25
Flow: tcp,in_port=LOCAL,vlan_tci=0x0000,dl_src=66:a6:bc:8d:62:3f,dl_dst=0a:58:a9:fe:00:04,nw_src=172.18.0.2,nw_dst=10.96.134.186,nw_tos=0,nw_ecn=0,nw_ttl=25,nw_frag=no,tp_src=0,tp_dst=80,tcp_flags=0
bridge("breth0")
----------------
0. ip,in_port=LOCAL,nw_dst=10.96.0.0/16, priority 500, cookie 0xdeff105
ct(commit,table=2,zone=64001,nat(src=169.254.0.2))
nat(src=169.254.0.2)
-> A clone of the packet is forked to recirculate. The forked pipeline will be resumed at table 2.
-> Sets the packet to an untracked state, and clears all the conntrack fields.
Final flow: unchanged
Megaflow: recirc_id=0,eth,ip,in_port=LOCAL,nw_src=172.18.0.0/17,nw_dst=10.96.0.0/16,nw_frag=no
Datapath actions: ct(commit,zone=64001,nat(src=169.254.0.2)),recirc(0xc0a)
===============================================================================
recirc(0xc0a) - resume conntrack with default ct_state=trk|new (use --ct-next to customize)
Replacing src/dst IP/ports to simulate NAT:
Initial flow: nw_src=172.18.0.2,tp_src=0,nw_dst=10.96.134.186,tp_dst=80
Modified flow: nw_src=169.254.0.2,tp_src=0,nw_dst=10.96.134.186,tp_dst=80
===============================================================================
Flow: recirc_id=0xc0a,ct_state=new|trk,ct_zone=64001,eth,tcp,in_port=LOCAL,vlan_tci=0x0000,dl_src=66:a6:bc:8d:62:3f,dl_dst=0a:58:a9:fe:00:04,nw_src=169.254.0.2,nw_dst=10.96.134.186,nw_tos=0,nw_ecn=0,nw_ttl=25,nw_frag=no,tp_src=0,tp_dst=80,tcp_flags=0
bridge("breth0")
----------------
thaw
Resuming from table 2
2. priority 100, cookie 0xdeff105
set_field:66:a6:bc:8d:62:3f->eth_dst
output:2
bridge("br-int")
----------------
0. in_port=3,vlan_tci=0x0000/0x1000, priority 100, cookie 0x8266996d
set_field:0xa/0xffff->reg13
set_field:0xb->reg11
set_field:0xc->reg12
set_field:0x4->metadata
set_field:0x1->reg14
set_field:0/0xffff0000->reg13
resubmit(,8)
8. metadata=0x4, priority 50, cookie 0x37cb9e3c
set_field:0/0x1000->reg10
resubmit(,73)
73. reg0=0x2, priority 0
drop
move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
-> NXM_NX_XXREG0[111] is now 0
resubmit(,9)
9. metadata=0x4, priority 0, cookie 0xc7f8edcc
resubmit(,10)
10. metadata=0x4, priority 0, cookie 0x7cdbbc3d
resubmit(,11)
11. metadata=0x4, priority 0, cookie 0xf554c6b4
resubmit(,12)
12. metadata=0x4, priority 0, cookie 0xb1f0c6cd
resubmit(,13)
13. ip,reg14=0x1,metadata=0x4, priority 110, cookie 0x43c8c001
resubmit(,14)
14. metadata=0x4, priority 0, cookie 0xf0b33dfb
resubmit(,15)
15. metadata=0x4, priority 65535, cookie 0xdfd57bd2
resubmit(,16)
16. metadata=0x4, priority 65535, cookie 0x1d9bfa19
resubmit(,17)
17. metadata=0x4, priority 0, cookie 0x5327c358
resubmit(,18)
18. metadata=0x4, priority 0, cookie 0xd344423d
resubmit(,19)
19. metadata=0x4, priority 0, cookie 0x11fc780c
resubmit(,20)
20. metadata=0x4, priority 0, cookie 0x5455941b
resubmit(,21)
21. metadata=0x4, priority 0, cookie 0xc27e02e8
resubmit(,22)
22. metadata=0x4, priority 0, cookie 0x636292e2
resubmit(,23)
23. metadata=0x4, priority 0, cookie 0x109b6544
resubmit(,24)
24. metadata=0x4, priority 0, cookie 0xed0e720b
resubmit(,25)
25. metadata=0x4, priority 0, cookie 0xe3e44578
resubmit(,26)
26. metadata=0x4, priority 0, cookie 0xe00454de
resubmit(,27)
27. metadata=0x4, priority 0, cookie 0x98e11341
resubmit(,28)
28. metadata=0x4, priority 0, cookie 0xa7b69c53
resubmit(,29)
29. metadata=0x4, priority 0, cookie 0x8ad8c9e4
resubmit(,30)
30. reg14=0x1,metadata=0x4, priority 100, cookie 0xedd460fc
resubmit(,31)
31. metadata=0x4, priority 0, cookie 0xad3df921
resubmit(,32)
32. metadata=0x4, priority 0, cookie 0xefad612f
resubmit(,33)
33. metadata=0x4, priority 0, cookie 0x1ff7ca13
resubmit(,34)
34. metadata=0x4, priority 0, cookie 0x221f0b79
resubmit(,35)
35. metadata=0x4, priority 0, cookie 0xb9942ece
resubmit(,36)
36. metadata=0x4,dl_dst=66:a6:bc:8d:62:3f, priority 50, cookie 0x6dbbc4a1
set_field:0x2->reg15
resubmit(,40)
40. priority 0
resubmit(,42)
42. priority 0
resubmit(,43)
43. reg15=0x2,metadata=0x4, priority 100, cookie 0x1fccaf61
set_field:0xd/0xffff->reg13
set_field:0xb->reg11
set_field:0xc->reg12
resubmit(,44)
44. 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(,45)
45. metadata=0x4, priority 0, cookie 0x8893fb5
resubmit(,46)
46. metadata=0x4, priority 0, cookie 0xa7b03424
resubmit(,47)
47. metadata=0x4, priority 0, cookie 0x30c1c94
resubmit(,48)
48. ip,reg15=0x2,metadata=0x4, priority 110, cookie 0xcbc7d3ce
ct_clear
resubmit(,49)
49. metadata=0x4, priority 0, cookie 0x8a14a57a
resubmit(,50)
50. metadata=0x4, priority 65535, cookie 0x4bf35f24
resubmit(,51)
51. metadata=0x4, priority 65535, cookie 0x653e576f
resubmit(,52)
52. metadata=0x4, priority 0, cookie 0x710b94bf
resubmit(,53)
53. metadata=0x4, priority 0, cookie 0xda878e14
resubmit(,54)
54. metadata=0x4, priority 0, cookie 0x20101066
resubmit(,55)
55. metadata=0x4, priority 0, cookie 0x188d33ba
resubmit(,56)
56. metadata=0x4, priority 0, cookie 0x39f6f553
set_field:0/0x1000->reg10
resubmit(,75)
75. reg0=0x2, priority 0
drop
move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
-> NXM_NX_XXREG0[111] is now 0
resubmit(,57)
57. metadata=0x4, priority 0, cookie 0xd2cf4820
resubmit(,64)
64. priority 0
resubmit(,65)
65. reg15=0x2,metadata=0x4, priority 100, cookie 0x1fccaf61
clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0/0xffff->reg13,set_field:0x10/0xffff->reg13,set_field:0xf->reg11,set_field:0x5->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/0xffff->reg13
set_field:0x10/0xffff->reg13
set_field:0xf->reg11
set_field:0x5->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=0x5,dl_dst=66:a6:bc:8d:62:3f, priority 50, cookie 0xfd4c814f
set_field:0x66a6bc8d623f0000000000000000/0xffffffffffff0000000000000000->xxreg0
resubmit(,9)
9. metadata=0x5, priority 0, cookie 0x26c54b5b
set_field:0x4/0x4->xreg4
resubmit(,10)
10. reg9=0/0x8,metadata=0x5, priority 100, cookie 0x590c1ef5
resubmit(,79)
79. reg0=0x2, priority 0
drop
resubmit(,11)
11. metadata=0x5, priority 0, cookie 0x87ac35b3
resubmit(,12)
12. metadata=0x5, priority 0, cookie 0xde8e1816
resubmit(,13)
13. metadata=0x5, priority 0, cookie 0xe78d0559
resubmit(,14)
14. metadata=0x5, priority 0, cookie 0x4f26890
resubmit(,15)
15. metadata=0x5, priority 0, cookie 0x80289c72
resubmit(,16)
16. metadata=0x5, priority 0, cookie 0xb0811dc5
resubmit(,17)
17. metadata=0x5, priority 0, cookie 0x766256db
resubmit(,18)
18. metadata=0x5, priority 0, cookie 0xb6345005
resubmit(,19)
19. metadata=0x5, priority 0, cookie 0xef56a1e7
resubmit(,20)
20. metadata=0x5, priority 0, cookie 0x125702fe
resubmit(,21)
21. metadata=0x5, priority 0, cookie 0xd8cb2bad
resubmit(,22)
22. metadata=0x5, priority 0, cookie 0x6656ae6b
set_field:0/0xffffffff->xxreg1
resubmit(,23)
23. ip,reg7=0,metadata=0x5, priority 4, cookie 0x12643653
dec_ttl()
set_field:0/0xffff00000000->xreg4
set_field:0xac120001000000000000000000000000/0xffffffff000000000000000000000000->xxreg0
set_field:0xac1200020000000000000000/0xffffffff0000000000000000->xxreg1
set_field:66:a6:bc:8d:62:3f->eth_src
set_field:0x2->reg15
set_field:0x1/0x1->reg10
set_field:0x200/0x200->xreg4
resubmit(,24)
24. reg8=0/0xffff,metadata=0x5, priority 150, cookie 0x1c1cb03b
resubmit(,25)
25. metadata=0x5, priority 0, cookie 0x10cd76d8
set_field:0/0xffff00000000->xreg4
resubmit(,26)
26. reg8=0/0xffff,metadata=0x5, priority 150, cookie 0x9e833283
resubmit(,27)
27. metadata=0x5, priority 0, cookie 0x556e0a88
resubmit(,28)
28. metadata=0x5, priority 0, cookie 0x11efbe2e
resubmit(,29)
29. reg9=0x200/0x200,metadata=0x5, priority 1, cookie 0xbe4c8461
push:NXM_NX_REG0[]
push:NXM_NX_XXREG0[96..127]
pop:NXM_NX_REG0[]
-> NXM_NX_REG0[] is now 0xac120001
set_field:00:00:00:00:00:00->eth_dst
resubmit(,66)
66. reg0=0xac120001,reg15=0x2,metadata=0x5, priority 100, cookie 0x55eb19a8
set_field:4e:37:4d:d1:e7:11->eth_dst
set_field:0x40/0x40->reg10
pop:NXM_NX_REG0[]
-> NXM_NX_REG0[] is now 0xac120001
resubmit(,30)
30. metadata=0x5, priority 0, cookie 0xbb071949
resubmit(,31)
31. metadata=0x5, priority 0, cookie 0xae9ec814
resubmit(,32)
32. metadata=0x5, priority 0, cookie 0xb357e59c
resubmit(,33)
33. ip,reg0=0xac120000/0xffff0000,reg15=0x2,metadata=0x5, priority 110, cookie 0x40fee52e
set_field:0/0xf0000000->reg10
resubmit(,34)
34. metadata=0x5, priority 0, cookie 0xf0cbe1c3
resubmit(,40)
40. priority 0
resubmit(,42)
42. priority 0
resubmit(,43)
43. reg15=0x2,metadata=0x5, priority 100, cookie 0xa301500d
set_field:0x10/0xffff->reg13
set_field:0xf->reg11
resubmit(,44)
44. 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(,45)
45. metadata=0x5, priority 0, cookie 0xbe7f5908
set_field:0/0x10->xreg4
resubmit(,46)
46. ip,metadata=0x5, priority 50, cookie 0x88bfc9c5
set_field:0x1/0x1->reg10
ct(table=47,zone=NXM_NX_REG11[0..15],nat)
nat
-> A clone of the packet is forked to recirculate. The forked pipeline will be resumed at table 47.
-> Sets the packet to an untracked state, and clears all the conntrack fields.
Final flow: recirc_id=0xc0a,ct_state=new|trk,ct_zone=64001,eth,tcp,in_port=LOCAL,vlan_tci=0x0000,dl_src=66:a6:bc:8d:62:3f,dl_dst=66:a6:bc:8d:62:3f,nw_src=169.254.0.2,nw_dst=10.96.134.186,nw_tos=0,nw_ecn=0,nw_ttl=25,nw_frag=no,tp_src=0,tp_dst=80,tcp_flags=0
Megaflow: pkt_mark=0,recirc_id=0xc0a,ct_state=+new-est-rel-rpl-inv+trk,ct_mark=0/0x4f,eth,tcp,in_port=LOCAL,dl_src=66:a6:bc:8d:62:3f,dl_dst=0a:58:a9:fe:00:04,nw_src=169.254.0.0/29,nw_dst=10.96.134.186,nw_ttl=25,nw_frag=no
Datapath actions: set(eth(dst=4e:37:4d:d1:e7:11)),set(ipv4(ttl=24)),ct(zone=15,nat),recirc(0xc0b)
===============================================================================
recirc(0xc0b) - 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=0xc0b,ct_state=new|trk,ct_zone=15,eth,tcp,reg10=0x41,reg11=0xf,reg13=0x10,reg14=0x2,reg15=0x2,metadata=0x5,in_port=3,vlan_tci=0x0000,dl_src=66:a6:bc:8d:62:3f,dl_dst=4e:37:4d:d1:e7:11,nw_src=169.254.0.2,nw_dst=10.96.134.186,nw_tos=0,nw_ecn=0,nw_ttl=24,nw_frag=no,tp_src=0,tp_dst=80,tcp_flags=0
bridge("breth0")
----------------
thaw
Resuming from table 47
47. ct_state=+new+trk,ip,metadata=0x5, priority 50, cookie 0xcfdf68da
ct(commit,zone=NXM_NX_REG11[0..15],nat(src))
nat(src)
-> Sets the packet to an untracked state, and clears all the conntrack fields.
resubmit(,48)
48. metadata=0x5, priority 0, cookie 0x50d599b3
resubmit(,49)
49. metadata=0x5, priority 0, cookie 0xe22ec082
resubmit(,50)
50. metadata=0x5, priority 0, cookie 0x9008351d
resubmit(,51)
51. reg15=0x2,metadata=0x5, priority 100, cookie 0x29356a8d
resubmit(,64)
64. reg10=0x1/0x1,reg15=0x2,metadata=0x5, priority 100, cookie 0xa301500d
push:NXM_OF_IN_PORT[]
set_field:ANY->in_port
resubmit(,65)
65. reg15=0x2,metadata=0x5, priority 100, cookie 0xa301500d
clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0/0xffff->reg13,set_field:0xd/0xffff->reg13,set_field:0xb->reg11,set_field:0xc->reg12,set_field:0x4->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/0xffff->reg13
set_field:0xd/0xffff->reg13
set_field:0xb->reg11
set_field:0xc->reg12
set_field:0x4->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=0x4, priority 70, cookie 0x1956778c
set_field:0x40000000000000000000000000000/0x40000000000000000000000000000->xxreg0
resubmit(,9)
9. metadata=0x4, priority 0, cookie 0xc7f8edcc
resubmit(,10)
10. metadata=0x4, priority 0, cookie 0x7cdbbc3d
resubmit(,11)
11. metadata=0x4, priority 0, cookie 0xf554c6b4
resubmit(,12)
12. metadata=0x4, priority 0, cookie 0xb1f0c6cd
resubmit(,13)
13. ip,reg14=0x2,metadata=0x4, priority 110, cookie 0xd60f85d0
resubmit(,14)
14. metadata=0x4, priority 0, cookie 0xf0b33dfb
resubmit(,15)
15. metadata=0x4, priority 65535, cookie 0xdfd57bd2
resubmit(,16)
16. metadata=0x4, priority 65535, cookie 0x1d9bfa19
resubmit(,17)
17. metadata=0x4, priority 0, cookie 0x5327c358
resubmit(,18)
18. metadata=0x4, priority 0, cookie 0xd344423d
resubmit(,19)
19. metadata=0x4, priority 0, cookie 0x11fc780c
resubmit(,20)
20. metadata=0x4, priority 0, cookie 0x5455941b
resubmit(,21)
21. metadata=0x4, priority 0, cookie 0xc27e02e8
resubmit(,22)
22. metadata=0x4, priority 0, cookie 0x636292e2
resubmit(,23)
23. metadata=0x4, priority 0, cookie 0x109b6544
resubmit(,24)
24. metadata=0x4, priority 0, cookie 0xed0e720b
resubmit(,25)
25. metadata=0x4, priority 0, cookie 0xe3e44578
resubmit(,26)
26. metadata=0x4, priority 0, cookie 0xe00454de
resubmit(,27)
27. metadata=0x4, priority 0, cookie 0x98e11341
resubmit(,28)
28. metadata=0x4, priority 0, cookie 0xa7b69c53
resubmit(,29)
29. metadata=0x4, priority 0, cookie 0x8ad8c9e4
resubmit(,30)
30. metadata=0x4, priority 0, cookie 0xd288fd5d
resubmit(,31)
31. metadata=0x4, priority 0, cookie 0xad3df921
resubmit(,32)
32. metadata=0x4, priority 0, cookie 0xefad612f
resubmit(,33)
33. metadata=0x4, priority 0, cookie 0x1ff7ca13
resubmit(,34)
34. metadata=0x4, priority 0, cookie 0x221f0b79
resubmit(,35)
35. metadata=0x4, priority 0, cookie 0xb9942ece
resubmit(,36)
36. metadata=0x4, priority 0, cookie 0x7c33ed07
set_field:0->reg15
resubmit(,71)
71. reg0=0x2, priority 0
drop
resubmit(,37)
37. reg15=0,metadata=0x4, priority 50, cookie 0x62ae01a6
set_field:0x8001->reg15
resubmit(,40)
40. priority 0
resubmit(,42)
42. priority 0
resubmit(,43)
43. reg15=0x8001,metadata=0x4, priority 100, cookie 0x4ddd0fc8
set_field:0->reg6
set_field:0xa/0xffff->reg13
set_field:0x1->reg15
resubmit(,44)
44. 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(,45)
45. metadata=0x4, priority 0, cookie 0x8893fb5
resubmit(,46)
46. metadata=0x4, priority 0, cookie 0xa7b03424
resubmit(,47)
47. metadata=0x4, priority 0, cookie 0x30c1c94
resubmit(,48)
48. ip,reg15=0x1,metadata=0x4, priority 110, cookie 0x954bcdbe
ct_clear
resubmit(,49)
49. metadata=0x4, priority 0, cookie 0x8a14a57a
resubmit(,50)
50. metadata=0x4, priority 65535, cookie 0x4bf35f24
resubmit(,51)
51. metadata=0x4, priority 65535, cookie 0x653e576f
resubmit(,52)
52. metadata=0x4, priority 0, cookie 0x710b94bf
resubmit(,53)
53. metadata=0x4, priority 0, cookie 0xda878e14
resubmit(,54)
54. metadata=0x4, priority 0, cookie 0x20101066
resubmit(,55)
55. metadata=0x4, priority 0, cookie 0x188d33ba
resubmit(,56)
56. metadata=0x4, priority 0, cookie 0x39f6f553
set_field:0/0x1000->reg10
resubmit(,75)
75. reg0=0x2, priority 0
drop
move:NXM_NX_REG10[12]->NXM_NX_XXREG0[111]
-> NXM_NX_XXREG0[111] is now 0
resubmit(,57)
57. metadata=0x4, priority 0, cookie 0xd2cf4820
resubmit(,64)
64. priority 0
resubmit(,65)
65. reg15=0x1,metadata=0x4, priority 100, cookie 0x8266996d
output:3
bridge("breth0")
----------------
0. ip,in_port=2,nw_dst=10.96.0.0/16, priority 115, cookie 0xdeff105
drop
set_field:0x8001->reg15
pop:NXM_OF_IN_PORT[]
-> NXM_OF_IN_PORT[] is now 3
Final flow: recirc_id=0xc0b,eth,tcp,reg10=0x41,reg11=0xf,reg13=0x10,reg14=0x2,reg15=0x2,metadata=0x5,in_port=3,vlan_tci=0x0000,dl_src=66:a6:bc:8d:62:3f,dl_dst=4e:37:4d:d1:e7:11,nw_src=169.254.0.2,nw_dst=10.96.134.186,nw_tos=0,nw_ecn=0,nw_ttl=24,nw_frag=no,tp_src=0,tp_dst=80,tcp_flags=0
Megaflow: pkt_mark=0,recirc_id=0xc0b,ct_state=+new-est-rel-rpl-inv+trk,ct_mark=0/0x4f,eth,ip,in_port=3,dl_src=66:a6:bc:8d:62:3f,dl_dst=4e:37:4d:d1:e7:11,nw_src=128.0.0.0/1,nw_dst=10.96.0.0/16,nw_frag=no
Datapath actions: ct(commit,zone=15,nat(src))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment