Paolo Valerio <pvale...@redhat.com> writes:

> Adrian Moreno via discuss <ovs-discuss@openvswitch.org> writes:
>
>> Hi Gavin
>>
>> On 4/18/24 02:38, Gavin McKee via discuss wrote:
>>> This is an example.
>>> 
>>> Again the TCP 3 handshake completes , but the next packet fails to NAT
>>> and goes out onto the physical network using the private address .  An
>>> example of this is in the packet trace I provided.
>>> 
>>
>> Given you were using retis in your initial troubleshooting, you can use it 
>> with 
>> the additional "ct" collector to see if the kernel datapath is retrieving 
>> the 
>> right conntrack entry and what's its state. If that shows some unexpected 
>> conntrack entry change, it can be confirmed by monitoring "conntrack -E".
>>
>> Additionally, a dp flow dump (ovs-appctl dpctl/dump-flows -m) when the 
>> problem 
>> is happening might be also useful.
>>
>
> one thing to add on top of the above is a check for invalid logs (nf-log
> can be used as well):
>
> # modprobe nf_log_ipv4
> ## set logger for AF_INET (should be already set)
> # sysctl -w net.netfilter.nf_log.2=nf_log_ipv4
> ## enable invalid logs for TCP
> # sysctl net.netfilter.nf_conntrack_log_invalid=6
>

there's C/P mistake here:

sysctl -w net.netfilter.nf_conntrack_log_invalid=6

and soon after the invalid example message below in the clean up.
Should be:

sysctl -w net.netfilter.nf_conntrack_log_invalid=0

> in the case an invalid packet gets logged, you should see in dmesg
> something like:
>
> [312352.460843] nf_ct_proto_6: invalid new IN=eno1 ...
>
> once done:
>
> # sysctl net.netfilter.nf_conntrack_log_invalid=6
> # rmmod nf_log_syslog
>
> Paolo
>
>> --
>> Adrián
>>
>>
>>> ovs-appctl ofproto/trace br-int
>>> in_port=7753,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,tcp,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_ttl=32,tcp_src=52776,tcp_dst=443,tcp_flags=2
>>> Flow: 
>>> tcp,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=32,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> 
>>> bridge("br-int")
>>> ----------------
>>>   0. in_port=7753, priority 100, cookie 0xc33f39c4
>>>      set_field:0x16d->reg13
>>>      set_field:0x155->reg11
>>>      set_field:0x1cf->reg12
>>>      set_field:0x12->metadata
>>>      set_field:0xca->reg14
>>>      resubmit(,8)
>>>   8. metadata=0x12, priority 50, cookie 0x1645d3f2
>>>      set_field:0/0x1000->reg10
>>>      resubmit(,73)
>>>      73. 
>>> ip,reg14=0xca,metadata=0x12,dl_src=4e:42:14:a1:2a:fb,nw_src=172.27.18.244,
>>> priority 90, cookie 0xc33f39c4
>>>              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=0x12, priority 0, cookie 0xcc4fd106
>>>      resubmit(,10)
>>> 10. metadata=0x12, priority 0, cookie 0x9e10ad0e
>>>      resubmit(,11)
>>> 11. metadata=0x12, priority 0, cookie 0x557f3249
>>>      resubmit(,12)
>>> 12. ip,metadata=0x12, priority 100, cookie 0x14131a67
>>>      
>>> set_field:0x1000000000000000000000000/0x1000000000000000000000000->xxreg0
>>>      resubmit(,13)
>>> 13. metadata=0x12, priority 0, cookie 0x85f9ed4f
>>>      resubmit(,14)
>>> 14. ip,reg0=0x1/0x1,metadata=0x12, priority 100, cookie 0x279651c
>>>      ct(table=15,zone=NXM_NX_REG13[0..15])
>>>      drop
>>>       -> 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: 
>>> tcp,reg0=0x1,reg11=0x155,reg12=0x1cf,reg13=0x16d,reg14=0xca,metadata=0x12,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=32,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> Megaflow: 
>>> recirc_id=0,eth,tcp,in_port=7753,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_frag=no
>>> Datapath actions: ct(zone=365),recirc(0x13b5a)
>>> 
>>> ===============================================================================
>>> recirc(0x13b5a) - resume conntrack with default ct_state=trk|new (use
>>> --ct-next to customize)
>>> ===============================================================================
>>> 
>>> Flow: 
>>> recirc_id=0x13b5a,ct_state=new|trk,ct_zone=365,eth,tcp,reg0=0x1,reg11=0x155,reg12=0x1cf,reg13=0x16d,reg14=0xca,metadata=0x12,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=32,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> 
>>> bridge("br-int")
>>> ----------------
>>>      thaw
>>>          Resuming from table 15
>>> 15. ct_state=+new-est+trk,metadata=0x12, priority 7, cookie 0xa9e0ee6f
>>>      
>>> set_field:0x80000000000000000000000000/0x80000000000000000000000000->xxreg0
>>>      
>>> set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0
>>>      resubmit(,16)
>>> 16. conj_id=2865573479,tcp,reg0=0x80/0x80,reg14=0xca,metadata=0x12,
>>> priority 3000, cookie 0xabdec111
>>>      set_field:0x1000000000000/0x1000000000000->xreg4
>>>      
>>> set_field:0x2000000000000000000000000/0x2000000000000000000000000->xxreg0
>>>      resubmit(,17)
>>> 17. reg8=0x10000/0x10000,metadata=0x12, priority 1000, cookie 0x8171c04a
>>>      set_field:0/0x1000000000000->xreg4
>>>      set_field:0/0x2000000000000->xreg4
>>>      set_field:0/0x4000000000000->xreg4
>>>      resubmit(,18)
>>> 18. metadata=0x12, priority 0, cookie 0x62454929
>>>      resubmit(,19)
>>> 19. metadata=0x12, priority 0, cookie 0x3bb47080
>>>      resubmit(,20)
>>> 20. metadata=0x12, priority 0, cookie 0x73face9d
>>>      resubmit(,21)
>>> 21. metadata=0x12, priority 0, cookie 0x8e46634d
>>>      resubmit(,22)
>>> 22. metadata=0x12, priority 0, cookie 0xbddac461
>>>      resubmit(,23)
>>> 23. metadata=0x12, priority 0, cookie 0x9a32c0de
>>>      resubmit(,24)
>>> 24. metadata=0x12, priority 0, cookie 0x79b1c074
>>>      resubmit(,25)
>>> 25. metadata=0x12, priority 0, cookie 0xc02374d3
>>>      resubmit(,26)
>>> 26. metadata=0x12, priority 0, cookie 0x218dc750
>>>      resubmit(,27)
>>> 27. metadata=0x12, priority 0, cookie 0xf6943631
>>>      set_field:0/0x1000000000000->xreg4
>>>      set_field:0/0x2000000000000->xreg4
>>>      set_field:0/0x4000000000000->xreg4
>>>      resubmit(,28)
>>> 28. ip,reg0=0x2/0x2002,metadata=0x12, priority 100, cookie 0x7fdca4fb
>>>      
>>> 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=0x12, priority 0, cookie 0x34e5fac7
>>>      resubmit(,30)
>>> 30. metadata=0x12, priority 0, cookie 0xac3f53bd
>>>      resubmit(,31)
>>> 31. metadata=0x12, priority 0, cookie 0x54000bd5
>>>      resubmit(,32)
>>> 32. metadata=0x12, priority 0, cookie 0x29ab49f3
>>>      resubmit(,33)
>>> 33. metadata=0x12, priority 0, cookie 0xae6aefcb
>>>      resubmit(,34)
>>> 34. metadata=0x12, priority 0, cookie 0x632dc93b
>>>      resubmit(,35)
>>> 35. metadata=0x12,dl_dst=1a:16:b1:58:e1:cd, priority 50, cookie 0x3fa33935
>>>      set_field:0x1->reg15
>>>      resubmit(,37)
>>> 37. priority 0
>>>      resubmit(,39)
>>> 39. priority 0
>>>      resubmit(,40)
>>> 40. reg15=0x1,metadata=0x12, priority 100, cookie 0x95c785db
>>>      set_field:0x155->reg11
>>>      set_field:0x1cf->reg12
>>>      resubmit(,41)
>>> 41. 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(,42)
>>> 42. ip,reg15=0x1,metadata=0x12, priority 110, cookie 0xc9a79824
>>>      resubmit(,43)
>>> 43. ip,reg15=0x1,metadata=0x12, priority 110, cookie 0xac7d5d78
>>>      resubmit(,44)
>>> 44. metadata=0x12, priority 0, cookie 0xa1ddb4f6
>>>      resubmit(,45)
>>> 45. ct_state=-trk,metadata=0x12, priority 5, cookie 0xb2622a65
>>>      
>>> set_field:0x100000000000000000000000000/0x100000000000000000000000000->xxreg0
>>>      
>>> set_field:0x200000000000000000000000000/0x200000000000000000000000000->xxreg0
>>>      resubmit(,46)
>>> 46. metadata=0x12, priority 0, cookie 0x267ae0e3
>>>      resubmit(,47)
>>> 47. metadata=0x12, priority 0, cookie 0x914392c3
>>>      set_field:0/0x1000000000000->xreg4
>>>      set_field:0/0x2000000000000->xreg4
>>>      set_field:0/0x4000000000000->xreg4
>>>      resubmit(,48)
>>> 48. metadata=0x12, priority 0, cookie 0xc4f6a97f
>>>      resubmit(,49)
>>> 49. metadata=0x12, priority 0, cookie 0x8ebb0c71
>>>      resubmit(,50)
>>> 50. metadata=0x12, priority 0, cookie 0x61e385f4
>>>      resubmit(,51)
>>> 51. metadata=0x12, priority 0, cookie 0x4c722ce1
>>>      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(,52)
>>> 52. metadata=0x12, priority 0, cookie 0x3c01b89d
>>>      resubmit(,64)
>>> 64. priority 0
>>>      resubmit(,65)
>>> 65. reg15=0x1,metadata=0x12, priority 100, cookie 0x95c785db
>>>      
>>> clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0->reg13,set_field:0x4cc->reg11,set_field:0x383->reg12,set_field:0x13->metadata,set_field:0x1->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:0x4cc->reg11
>>>      set_field:0x383->reg12
>>>      set_field:0x13->metadata
>>>      set_field:0x1->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=0x1,metadata=0x13,dl_dst=1a:16:b1:58:e1:cd, priority 50,
>>> cookie 0x8522832c
>>>      
>>> set_field:0x1a16b158e1cd0000000000000000/0xffffffffffff0000000000000000->xxreg0
>>>      resubmit(,9)
>>>   9. metadata=0x13, priority 0, cookie 0xef4dd8a9
>>>      set_field:0x4/0x4->xreg4
>>>      resubmit(,10)
>>> 10. reg9=0x4/0x4,metadata=0x13, priority 100, cookie 0x37718dd7
>>>      resubmit(,79)
>>>      79. 
>>> ip,reg14=0x1,metadata=0x13,dl_src=4e:42:14:a1:2a:fb,nw_src=172.27.18.244,
>>> priority 100, cookie 0x2e544767
>>>              drop
>>>      resubmit(,11)
>>> 11. metadata=0x13, priority 0, cookie 0x3c2eb1b
>>>      resubmit(,12)
>>> 12. metadata=0x13, priority 0, cookie 0x44f62446
>>>      resubmit(,13)
>>> 13. metadata=0x13, priority 0, cookie 0x3842bec6
>>>      resubmit(,14)
>>> 14. metadata=0x13, priority 0, cookie 0xfd7b2ab9
>>>      resubmit(,15)
>>> 15. metadata=0x13, priority 0, cookie 0xefbd7e27
>>>      resubmit(,16)
>>> 16. metadata=0x13, priority 0, cookie 0xf439d853
>>>      resubmit(,17)
>>> 17. metadata=0x13, priority 0, cookie 0x123f01f0
>>>      resubmit(,18)
>>> 18. metadata=0x13, priority 0, cookie 0x142cd59b
>>>      resubmit(,19)
>>> 19. metadata=0x13, priority 0, cookie 0x297e0190
>>>      resubmit(,20)
>>> 20. metadata=0x13, priority 0, cookie 0x61e9e3c7
>>>      set_field:0/0xffffffff->xxreg1
>>>      resubmit(,21)
>>> 21. ip,reg7=0,metadata=0x13, priority 1, cookie 0x9f114f3d
>>>      dec_ttl()
>>>      set_field:0/0xffff00000000->xreg4
>>>      
>>> set_field:0x64646401000000000000000000000000/0xffffffff000000000000000000000000->xxreg0
>>>      set_field:0x646464030000000000000000/0xffffffff0000000000000000->xxreg0
>>>      set_field:2a:d5:d1:e8:89:cc->eth_src
>>>      set_field:0x2->reg15
>>>      set_field:0x1/0x1->reg10
>>>      resubmit(,22)
>>> 22. reg8=0/0xffff,metadata=0x13, priority 150, cookie 0x6ece899a
>>>      resubmit(,23)
>>> 23. metadata=0x13, priority 0, cookie 0x72437536
>>>      set_field:0/0xffff00000000->xreg4
>>>      resubmit(,24)
>>> 24. reg8=0/0xffff,metadata=0x13, priority 150, cookie 0xce06f1
>>>      resubmit(,25)
>>> 25. ip,metadata=0x13, priority 1, cookie 0xf690342c
>>>      push:NXM_NX_REG0[]
>>>      push:NXM_NX_XXREG0[96..127]
>>>      pop:NXM_NX_REG0[]
>>>       -> NXM_NX_REG0[] is now 0x64646401
>>>      set_field:00:00:00:00:00:00->eth_dst
>>>      resubmit(,66)
>>>      66. reg0=0x64646401,reg15=0x2,metadata=0x13, priority 100, cookie 
>>> 0x97b4353d
>>>              set_field:00:00:5e:00:01:ff->eth_dst
>>>              set_field:0x40/0x40->reg10
>>>      pop:NXM_NX_REG0[]
>>>       -> NXM_NX_REG0[] is now 0x64646401
>>>      resubmit(,26)
>>> 26. metadata=0x13, priority 0, cookie 0x6c2ad4cc
>>>      resubmit(,27)
>>> 27. metadata=0x13, priority 0, cookie 0xadc9fb4f
>>>      resubmit(,28)
>>> 28. ip,reg15=0x2,metadata=0x13,nw_src=172.27.18.244, priority 100,
>>> cookie 0xfa923492
>>>      set_field:4e:42:14:a1:2a:fb->eth_src
>>>      set_field:0xcc3418740000000000000000/0xffffffff0000000000000000->xxreg0
>>>      resubmit(,29)
>>> 29. metadata=0x13, priority 0, cookie 0x571bbf77
>>>      resubmit(,37)
>>> 37. priority 0
>>>      resubmit(,39)
>>> 39. priority 0
>>>      resubmit(,40)
>>> 40. reg15=0x2,metadata=0x13, priority 100, cookie 0x407086d0
>>>      set_field:0x4cc->reg11
>>>      set_field:0x383->reg12
>>>      resubmit(,41)
>>> 41. 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(,42)
>>> 42. metadata=0x13, priority 0, cookie 0x4c3b7fcc
>>>      set_field:0/0x10->xreg4
>>>      resubmit(,43)
>>> 43. ip,reg15=0x2,metadata=0x13,nw_src=172.27.18.244, priority 100,
>>> cookie 0x540f90b2
>>>      set_field:4e:42:14:a1:2a:fb->eth_src
>>>      ct(table=44,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 44.
>>>       -> Sets the packet to an untracked state, and clears all the
>>> conntrack fields.
>>> 
>>> Final flow: 
>>> recirc_id=0x13b5a,eth,tcp,reg0=0x300,reg11=0x155,reg12=0x1cf,reg13=0x16d,reg14=0xca,reg15=0x1,metadata=0x12,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=32,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> Megaflow: 
>>> recirc_id=0x13b5a,ct_state=+new-est-rel-rpl-inv+trk,ct_mark=0/0x1,eth,tcp,in_port=7753,dl_src=4e:42:14:a1:2a:fb,dl_dst=1a:16:b1:58:e1:cd,nw_src=172.27.18.244,nw_dst=104.0.0.0/5,nw_ttl=32,nw_frag=no,tp_src=0x8000/0x8000,tp_dst=0x180/0xffc0
>>> Datapath actions:
>>> ct(commit,zone=365,mark=0/0x1,nat(src)),set(eth(dst=00:00:5e:00:01:ff)),set(ipv4(ttl=31)),ct(zone=1228,nat),recirc(0x13b5c)
>>> 
>>> ===============================================================================
>>> recirc(0x13b5c) - 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=0x13b5c,ct_state=new|trk,ct_zone=1228,eth,tcp,reg10=0x41,reg11=0x4cc,reg12=0x383,reg14=0x1,reg15=0x2,metadata=0x13,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=00:00:5e:00:01:ff,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=31,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> 
>>> bridge("br-int")
>>> ----------------
>>>      thaw
>>>          Resuming from table 44
>>> 44. metadata=0x13, priority 0, cookie 0x48ef0c42
>>>      resubmit(,45)
>>> 45. ct_state=-rpl+trk,ip,reg15=0x2,metadata=0x13,nw_src=172.27.18.244,
>>> priority 161, cookie 0x5414262a
>>>      set_field:4e:42:14:a1:2a:fb->eth_src
>>>      ct(commit,table=46,zone=NXM_NX_REG12[0..15],nat(src=204.52.24.116))
>>>      nat(src=204.52.24.116)
>>>       -> A clone of the packet is forked to recirculate. The forked
>>> pipeline will be resumed at table 46.
>>>       -> Sets the packet to an untracked state, and clears all the
>>> conntrack fields.
>>> 
>>> Final flow: 
>>> recirc_id=0x13b5c,eth,tcp,reg10=0x41,reg11=0x4cc,reg12=0x383,reg14=0x1,reg15=0x2,metadata=0x13,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=00:00:5e:00:01:ff,nw_src=172.27.18.244,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=31,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> Megaflow: 
>>> recirc_id=0x13b5c,ct_state=-rpl+trk,eth,ip,in_port=7753,dl_src=4e:42:14:a1:2a:fb,nw_src=172.27.18.244,nw_frag=no
>>> Datapath actions: ct(commit,zone=899,nat(src=204.52.24.116)),recirc(0x25f9b)
>>> 
>>> ===============================================================================
>>> recirc(0x25f9b) - 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.27.18.244,tp_src=52776,nw_dst=104.18.3.35,tp_dst=443
>>>   Modified flow: 
>>> nw_src=204.52.24.116,tp_src=52776,nw_dst=104.18.3.35,tp_dst=443
>>> ===============================================================================
>>> 
>>> Flow: 
>>> recirc_id=0x25f9b,ct_state=new|trk,ct_zone=899,eth,tcp,reg10=0x41,reg11=0x4cc,reg12=0x383,reg14=0x1,reg15=0x2,metadata=0x13,in_port=7753,vlan_tci=0x0000,dl_src=4e:42:14:a1:2a:fb,dl_dst=00:00:5e:00:01:ff,nw_src=204.52.24.116,nw_dst=104.18.3.35,nw_tos=0,nw_ecn=0,nw_ttl=31,nw_frag=no,tp_src=52776,tp_dst=443,tcp_flags=syn
>>> 
>>> bridge("br-int")
>>> ----------------
>>>      thaw
>>>          Resuming from table 46
>>> 46. metadata=0x13, priority 0, cookie 0x3800cb88
>>>      resubmit(,47)
>>> 47. metadata=0x13, priority 0, cookie 0xc2575be2
>>>      resubmit(,48)
>>> 48. reg15=0x2,metadata=0x13, priority 100, cookie 0xaf19a22a
>>>      resubmit(,64)
>>> 64. reg10=0x1/0x1,reg15=0x2,metadata=0x13, priority 100, cookie 0x407086d0
>>>      push:NXM_OF_IN_PORT[]
>>>      set_field:ANY->in_port
>>>      resubmit(,65)
>>>      65. reg15=0x2,metadata=0x13, priority 100, cookie 0x407086d0
>>>              
>>> clone(ct_clear,set_field:0->reg11,set_field:0->reg12,set_field:0->reg13,set_field:0x2c2->reg11,set_field:0x327->reg12,set_field:0x1->metadata,set_field:0xa->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:0x2c2->reg11
>>>              set_field:0x327->reg12
>>>              set_field:0x1->metadata
>>>              set_field:0xa->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=0x1, priority 50, cookie 0x1645d3f2
>>>              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=0x1, priority 0, cookie 0xcc4fd106
>>>              resubmit(,10)
>>>          10. metadata=0x1, priority 0, cookie 0x9e10ad0e
>>>              resubmit(,11)
>>>          11. metadata=0x1, priority 0, cookie 0x557f3249
>>>              resubmit(,12)
>>>          12. metadata=0x1, priority 0, cookie 0x915c56b1
>>>              resubmit(,13)
>>>          13. ip,reg14=0xa,metadata=0x1, priority 110, cookie 0xccdcd3e1
>>>              resubmit(,14)
>>>          14. metadata=0x1, priority 0, cookie 0x134ce32f
>>>              resubmit(,15)
>>>          15. metadata=0x1, priority 65535, cookie 0x49627e5f
>>>              resubmit(,16)
>>>          16. metadata=0x1, priority 65535, cookie 0xc947843d
>>>              resubmit(,17)
>>>          17. metadata=0x1, priority 0, cookie 0xd2fb4d2
>>>              resubmit(,18)
>>>          18. metadata=0x1, priority 0, cookie 0x62454929
>>>              resubmit(,19)
>>>          19. metadata=0x1, priority 0, cookie 0x3bb47080
>>>              resubmit(,20)
>>>          20. metadata=0x1, priority 0, cookie 0x73face9d
>>>              resubmit(,21)
>>>          21. metadata=0x1, priority 0, cookie 0x8e46634d
>>>              resubmit(,22)
>>>          22. metadata=0x1, priority 0, cookie 0xbddac461
>>>              resubmit(,23)
>>>          23. metadata=0x1, priority 0, cookie 0x9a32c0de
>>>              resubmit(,24)
>>>          24. metadata=0x1, priority 0, cookie 0x79b1c074
>>>              resubmit(,25)
>>>          25. metadata=0x1, priority 0, cookie 0xc02374d3
>>>              resubmit(,26)
>>>          26. metadata=0x1, priority 0, cookie 0x218dc750
>>>              resubmit(,27)
>>>          27. metadata=0x1, priority 0, cookie 0x8db4eebc
>>>              resubmit(,28)
>>>          28. metadata=0x1, priority 0, cookie 0x6deecbbe
>>>              resubmit(,29)
>>>          29. metadata=0x1, priority 0, cookie 0x34e5fac7
>>>              resubmit(,30)
>>>          30. metadata=0x1, priority 0, cookie 0xac3f53bd
>>>              resubmit(,31)
>>>          31. metadata=0x1, priority 0, cookie 0x54000bd5
>>>              resubmit(,32)
>>>          32. metadata=0x1, priority 0, cookie 0x29ab49f3
>>>              resubmit(,33)
>>>          33. metadata=0x1, priority 0, cookie 0xae6aefcb
>>>              resubmit(,34)
>>>          34. metadata=0x1, priority 0, cookie 0x632dc93b
>>>              resubmit(,35)
>>>          35. metadata=0x1, priority 0, cookie 0x9961115c
>>>              set_field:0->reg15
>>>              resubmit(,71)
>>>              71. No match.
>>>                      drop
>>>              resubmit(,36)
>>>          36. reg15=0,metadata=0x1, priority 50, cookie 0x62255993
>>>              set_field:0x8001->reg15
>>>              resubmit(,37)
>>>          37. priority 0
>>>              resubmit(,39)
>>>          39. priority 0
>>>              resubmit(,40)
>>>          40. reg15=0x8001,metadata=0x1, priority 100, cookie 0x11699429
>>>              set_field:0x14->reg13
>>>              set_field:0x1->reg15
>>>              resubmit(,41)
>>>              41. 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(,42)
>>>                  42. metadata=0x1, priority 0, cookie 0x9ad1480d
>>>                      resubmit(,43)
>>>                  43. ip,reg15=0x1,metadata=0x1, priority 110, cookie 
>>> 0xca4977d3
>>>                      ct_clear
>>>                      resubmit(,44)
>>>                  44. metadata=0x1, priority 0, cookie 0xa1ddb4f6
>>>                      resubmit(,45)
>>>                  45. metadata=0x1, priority 65535, cookie 0x91b4350e
>>>                      resubmit(,46)
>>>                  46. metadata=0x1, priority 65535, cookie 0xfc9c351d
>>>                      resubmit(,47)
>>>                  47. metadata=0x1, priority 0, cookie 0xb984696e
>>>                      resubmit(,48)
>>>                  48. metadata=0x1, priority 0, cookie 0xc4f6a97f
>>>                      resubmit(,49)
>>>                  49. metadata=0x1, priority 0, cookie 0x8ebb0c71
>>>                      resubmit(,50)
>>>                  50. metadata=0x1, priority 0, cookie 0x61e385f4
>>>                      resubmit(,51)
>>>                  51. metadata=0x1, priority 0, cookie 0x4c722ce1
>>>                      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(,52)
>>>                  52. metadata=0x1, priority 0, cookie 0x3c01b89d
>>>                      resubmit(,64)
>>>                  64. priority 0
>>>                      resubmit(,65)
>>>                  65. reg15=0x1,metadata=0x1, priority 100, cookie 0x4581da82
>>>                      push_vlan:0x8100
>>>                      set_field:4216->vlan_vid
>>>                      output:7754
>>> 
>>>                      bridge("br-provider")
>>>                      ---------------------
>>>                           0. priority 0
>>>                              NORMAL
>>>                               -> forwarding to learned port
>>>                      pop_vlan
>>>              set_field:0x8001->reg15
>>>      pop:NXM_OF_IN_PORT[]
>>>       -> NXM_OF_IN_PORT[] is now 7753
>>> 
>>> Final flow: unchanged
>>> Megaflow: 
>>> recirc_id=0x25f9b,ct_state=+new-est-rel-rpl-inv+trk,ct_mark=0/0x1,eth,ip,in_port=7753,dl_src=4e:42:14:a1:2a:fb,dl_dst=00:00:5e:00:01:ff,nw_dst=0.0.0.0/1,nw_frag=no
>>> Datapath actions: ct_clear,push_vlan(vid=120,pcp=0),5
>>> 
>>> On Wed, 17 Apr 2024 at 17:32, Gavin McKee <gavmcke...@googlemail.com> wrote:
>>>>
>>>> That information is all in the email
>>>>
>>>> The openflow trace is showing that the pipeline is fine . This is why I’m 
>>>> worried about a deeper issue with the kernal / openvswitch kernal module / 
>>>> connection tracking
>>>>
>>>>
>>>>
>>>> On Wed, Apr 17, 2024 at 16:33 Flavio Leitner <f...@sysclose.org> wrote:
>>>>>
>>>>> On Wed, 17 Apr 2024 12:26:27 -0700
>>>>> Gavin McKee <gavmcke...@googlemail.com> wrote:
>>>>>
>>>>>> Hi Flavio,
>>>>>>
>>>>>> I had to restart the Open vSwitch across 16 machines to resolve the
>>>>>> issue for a customer .  I think it will occur again and when it does
>>>>>> I'll use that command to gather the tc information.
>>>>>>
>>>>>> Until then I think I have found why the issue is occurring .
>>>>>>
>>>>>> Take a look at the output below (this is a packet capture from the
>>>>>> physical interface on the compute node , so traffic that has gone
>>>>>> through the OVS Openflow pipeline) - we make a 3 way handshake with R2
>>>>>> , and establish the connection.  A packet goes missing - TLS
>>>>>> handshake, it then appears that it hasn't gone through NAT as it's
>>>>>> using the Private IP of the VM  .
>>>>>
>>>>>
>>>>> If that is the case, you might be able to see if the data path
>>>>> is matching correctly and the actions are using NAT with
>>>>> ovs-appctl ofproto/trace.
>>>>>
>>>>> fbl
>>>>>
>>>>>
>>>>>>
>>>>>> Take a look at frame 14
>>>>>>
>>>>>> No.     Time               Source                Destination
>>>>>> Protocol Length Info
>>>>>>           Delta
>>>>>>       14 09:24:08.064432    172.27.18.244         104.18.2.35
>>>>>> TLSv1    502    Client Hello, Alert (Level: Fatal, Description: Decode
>>>>>> Error)   2.362983
>>>>>>
>>>>>> Frame 14: 502 bytes on wire (4016 bits), 502 bytes captured (4016
>>>>>> bits) Ethernet II, Src: 4e:42:14:a1:2a:fb (4e:42:14:a1:2a:fb), Dst:
>>>>>> IETF-VRRP-VRID_ff (00:00:5e:00:01:ff)
>>>>>> 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 120
>>>>>> Internet Protocol Version 4, Src: 172.27.18.244, Dst: 104.18.2.35
>>>>>> Transmission Control Protocol, Src Port: 57394, Dst Port: 443, Seq: 1,
>>>>>> Ack: 1, Len: 444
>>>>>> Transport Layer Security
>>>>>>      TLSv1 Record Layer: Handshake Protocol: Client Hello
>>>>>>          Content Type: Handshake (22)
>>>>>>          Version: TLS 1.0 (0x0301)
>>>>>>          Length: 432
>>>>>>          Handshake Protocol: Client Hello
>>>>>>      TLSv1 Record Layer: Alert (Level: Fatal, Description: Decode
>>>>>> Error) Content Type: Alert (21)
>>>>>>          Version: TLS 1.0 (0x0301)
>>>>>>          Length: 2
>>>>>>          Alert Message
>>>>>>              Level: Fatal (2)
>>>>>>              Description: Decode Error (50)
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------------------------------------
>>>>>>
>>>>>> On Wed, 17 Apr 2024 at 11:28, Flavio Leitner <f...@sysclose.org> wrote:
>>>>>>>
>>>>>>>
>>>>>>> Hi Gavin,
>>>>>>>
>>>>>>> It would be helpful if you can provide some TC dumps from the
>>>>>>> "good" state to the "bad" state to see how it was and what changes.
>>>>>>> Something like:
>>>>>>>
>>>>>>> # tc -s filter show dev enp148s0f0_1 ingress
>>>>>>>
>>>>>>> I haven't checked the attached files, but one suggestion is to
>>>>>>> check if this is not a csum issue.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> fbl
>>>>>>>
>>>>>>>
>>>>>>> On Tue, 16 Apr 2024 13:17:10 -0700
>>>>>>> Gavin McKee via discuss <ovs-discuss@openvswitch.org> wrote:
>>>>>>>
>>>>>>>> Adding information relating to the Open VSwitch kernal module
>>>>>>>> @Ilya Maximets @Numan Siddique  Can either of you help out here?
>>>>>>>>
>>>>>>>>
>>>>>>>> modinfo openvswitch
>>>>>>>> filename:
>>>>>>>> /lib/modules/5.14.0-362.8.1.el9_3.x86_64/kernel/net/openvswitch/openvswitch.ko.xz
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_ct_limit
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_meter
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_packet
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_flow
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_vport
>>>>>>>> alias:          net-pf-16-proto-16-family-ovs_datapath
>>>>>>>> license:        GPL
>>>>>>>> description:    Open vSwitch switching datapath
>>>>>>>> rhelversion:    9.3
>>>>>>>> srcversion:     8A2159D727C8BADC82261B8
>>>>>>>> depends:        nf_conntrack,nf_conncount,libcrc32c,nf_nat
>>>>>>>> retpoline:      Y
>>>>>>>> intree:         Y
>>>>>>>> name:           openvswitch
>>>>>>>> vermagic:       5.14.0-362.8.1.el9_3.x86_64 SMP preempt mod_unload
>>>>>>>> modversions sig_id:         PKCS#7
>>>>>>>> signer:         Rocky kernel signing key
>>>>>>>> sig_key:
>>>>>>>> 17:CA:DE:1F:EC:D1:59:2D:9F:52:34:C6:7C:09:06:81:3D:74:7C:F7
>>>>>>>> sig_hashalgo:   sha256 signature:
>>>>>>>> 67:31:56:70:86:DB:57:69:8D:4A:9B:A7:ED:17:F3:67:65:98:97:08:
>>>>>>>> 1F:FB:4D:F8:A8:2D:7C:A7:7D:3A:57:85:CA:67:9D:82:72:EB:54:14:
>>>>>>>> F2:BB:40:78:AD:85:56:2D:EF:D5:00:95:38:A4:86:9F:5F:29:1A:81:
>>>>>>>> 32:94:B4:87:41:94:A0:3E:71:A5:97:44:2E:42:DD:F7:42:6B:69:94:
>>>>>>>> E3:AB:6E:E5:4F:C9:60:57:70:07:5F:CA:C7:83:7A:2F:C7:81:62:FF:
>>>>>>>> 53:AF:AC:2B:06:D8:08:D3:1D:A7:F0:43:10:98:DE:B1:62:AE:89:A5:
>>>>>>>> FE:EF:74:09:0F:2D:0F:D9:73:A5:59:75:D0:87:1E:EA:3A:40:86:1E:
>>>>>>>> 76:E5:E7:3B:59:2E:3A:7E:65:F3:92:A1:B4:84:48:3F:43:A0:D7:1C:
>>>>>>>> 21:29:E0:B6:D1:10:36:15:88:43:6A:11:8F:55:EE:1B:F9:53:3B:86:
>>>>>>>> EF:81:71:17:81:08:EC:53:30:D6:69:8E:13:11:D5:DF:15:75:88:50:
>>>>>>>> 69:19:51:3B:41:6B:6F:E0:7A:30:33:32:E6:60:18:02:A6:0C:63:9B:
>>>>>>>> C5:D7:2F:6A:D0:BA:45:03:19:0E:21:E8:18:FB:E8:D1:C1:33:05:36:
>>>>>>>> 1F:9B:0F:29:3F:05:51:7A:30:86:88:B7:C7:44:2E:2B:50:F9:EF:4F:
>>>>>>>> D4:70:EA:1B:33:E2:F0:E3:E2:88:00:E5:BF:06:E2:D4:B7:81:EE:6E:
>>>>>>>> 89:02:18:65:8B:1C:84:42:2F:89:14:63:1D:51:70:37:42:C5:68:DD:
>>>>>>>> 4D:12:7B:07:33:2B:C6:BC:8F:7F:23:D7:58:DF:47:AC:DE:08:67:FE:
>>>>>>>> CB:E8:E6:4D:95:2F:6B:F5:07:4D:32:92:80:0A:7C:D1:B6:81:EE:AB:
>>>>>>>> 26:C3:C6:22:77:00:5E:64:DE:96:0E:9F:A4:A0:F0:45:9F:19:73:EB:
>>>>>>>> CC:60:AE:E9:63:E2:6D:2E:BA:65:9B:BD:04:CC:13:C2:55:88:05:03:
>>>>>>>> 1B:30:18:8B
>>>>>>>>
>>>>>>>> On Tue, 16 Apr 2024 at 11:12, Gavin McKee
>>>>>>>> <gavmcke...@googlemail.com> wrote:
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I need some help with strange OVS behaviours.
>>>>>>>>>
>>>>>>>>> ovs-vsctl (Open vSwitch) 3.2.2
>>>>>>>>> ovn-controller 23.09.1
>>>>>>>>> Open vSwitch Library 3.2.2
>>>>>>>>>
>>>>>>>>> TLDR: We need to restart Open VSwitch in order for TLS traffic
>>>>>>>>> to work between a VM and Cloudflare R2.  After restarting Open
>>>>>>>>> VSwitch the TLS connection works fine.
>>>>>>>>> (see attached pcap tls-error.txt)
>>>>>>>>>
>>>>>>>>> See the attached openflow traces - they show a flow trace from
>>>>>>>>> Open Vswitch.
>>>>>>>>>
>>>>>>>>> Also there is a retis trace (retis tool discussed at Open
>>>>>>>>> VSwitch conference 2023).
>>>>>>>>>
>>>>>>>>> Note the drop (TC_INGRESS) in this file
>>>>>>>>>    + 1702601116185568 [swapper/140] 0 [tp] skb:kfree_skb
>>>>>>>>> #60c81b6b91e2cff284fb3a3d65800 (skb 18386033671255367680) n 3
>>>>>>>>> drop (TC_INGRESS)
>>>>>>>>>      if 21 (enp148s0f0_1) rxif 21 172.27.18.244.57394 >
>>>>>>>>> 104.18.2.35.443 ttl 63 tos 0x0 id 26162 off 0 [DF] len 477 proto
>>>>>>>>> TCP (6) flags [P.] seq 792060930:792061367 ack 951229219 win 11
>>>>>>>>>
>>>>>>>>> Again , once I restart Open vSwitch the problem goes away for a
>>>>>>>>> time and comes back sometime later (not sure what that time
>>>>>>>>> frame is but its a recurring issue.)
>>>>>>>> _______________________________________________
>>>>>>>> discuss mailing list
>>>>>>>> disc...@openvswitch.org
>>>>>>>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> fbl
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> fbl
>>> _______________________________________________
>>> discuss mailing list
>>> disc...@openvswitch.org
>>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>>
>> _______________________________________________
>> discuss mailing list
>> disc...@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to