openvswitch / ovs-issues

Issue tracker repo for Open vSwitch
10 stars 3 forks source link

[Windows] CT marks which are loaded in non-first commit operation are lost #237

Closed hongliangl closed 2 years ago

hongliangl commented 2 years ago
table=12, priority=200,tcp,reg3=0xc0a8f0c8,reg4=0x2192b/0x7ffff actions=ct(commit,table=13,zone=65520,nat(dst=192.168.240.200:6443),exec(load:0x1->NXM_NX_CT_MARK[2]))

In above flow, matched connections will be committed in zone 65520 with loading 0x1 to NXM_NX_CT_MARK[2].

table=20, priority=200,ct_state=+new+trk,ip,reg0=0x200/0x200,reg4=0/0xc00000 actions=load:0x3->NXM_NX_REG4[22..23],ct(commit,table=20,zone=65520,exec(load:0x1->NXM_NX_CT_MARK[4],load:0x1->NXM_NX_CT_MARK[5]))

After being committed in zone 65520, due to the design of pipeline, some connection needs load other CT marks in the same CT zone 65520. For example, in above flow, matched connections will be committed in zone 65520 again with loading 0x1 to NXM_NX_CT_MARK[4] and NXM_NX_CT_MARK[5].

For the subsequent packets of the connection with double commits in zone 65520, CT marks NXM_NX_CT_MARK[4] and NXM_NX_CT_MARK[5] are lost, and only CT mark NXM_NX_CT_MARK[2] can be recognized.

OVS version: 2.15.3 OS: Windows Server 2019 Standard