[OVN] Ovn-controller dose not update the flows table when localport tap device is rebuilt
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Invalid
|
Medium
|
Unassigned |
Bug Description
After all vm using network A on HV are deleted, the tap device of the network A is also deleted.
After the vm is re-created on this HV using the network A, the tap device will be rebuilt.
At this point, the flows table has not been updated and the vm's traffic cannot reach localport. Restore by restarting ovn-controller.
ovn version as:
# ovn-controller --version
ovn-controller 21.03.0
Open vSwitch Library 2.15.90
OpenFlow versions 0x6:0x6
SB DB Schema 20.16.1
Trace by ovn-trace is normal:
()[root@
# ip,reg14=
ingress(
next;
next;
reg0[0] = 1;
next;
ct_next;
ct_
reg0[8] = 1;
reg0[10] = 1;
next;
next;
outport = "8b01e3";
output;
reg0[0] = 1;
next;
/* output to "8b01e3", type "localport" */;
};
};
};
};
Trace by flows is not normal:
# ovs-appctl ofproto/trace br-int in_port=
Flow: tcp,in_
bridge("br-int")
----------------
0. in_port=33, priority 100, cookie 0xebbdd9f7
set_
set_
set_
set_
set_
resubmit(,8)
8. reg14=0x16,
resubmit(,9)
9. ip,reg14=
resubmit(,10)
10. metadata=0x3, priority 0, cookie 0x4f77990b
resubmit(,11)
11. metadata=0x3, priority 0, cookie 0xd7e42894
resubmit(,12)
12. metadata=0x3, priority 0, cookie 0xa5400341
resubmit(,13)
13. ip,metadata=0x3, priority 100, cookie 0x510177c2
set_
resubmit(,14)
14. metadata=0x3, priority 0, cookie 0x5505c270
resubmit(,15)
15. ip,reg0=
ct(
drop
-> A clone of the packet is forked to recirculate. The forked pipeline will be resumed at table 16.
-> Sets the packet to an untracked state, and clears all the conntrack fields.
Final flow: tcp,reg0=
Megaflow: recirc_
Datapath actions: ct(zone=
=======
recirc(0xe8) - resume conntrack with default ct_state=trk|new (use --ct-next to customize)
=======
Flow: recirc_
bridge("br-int")
----------------
thaw
Resuming from table 16
16. ct_state=
set_
set_
resubmit(,17)
17. ip,reg0=
set_
resubmit(,18)
18. metadata=0x3, priority 0, cookie 0x20565915
resubmit(,19)
19. metadata=0x3, priority 0, cookie 0x5f4ccace
resubmit(,20)
20. metadata=0x3, priority 0, cookie 0x1172b12a
resubmit(,21)
21. ip,reg0=
ct(
set_
-> Sets the packet to an untracked state, and clears all the conntrack fields.
resubmit(,22)
22. metadata=0x3, priority 0, cookie 0xd70f120c
resubmit(,23)
23. metadata=0x3, priority 0, cookie 0x3b8fb19
resubmit(,24)
24. metadata=0x3, priority 0, cookie 0x8948e698
resubmit(,25)
25. metadata=0x3, priority 0, cookie 0xdc7bec76
resubmit(,26)
26. metadata=0x3, priority 0, cookie 0x26b5d0d
resubmit(,27)
27. metadata=0x3, priority 0, cookie 0x55ef644d
resubmit(,28)
28. metadata=0x3, priority 0, cookie 0x915abc2b
resubmit(,29)
29. metadata=0x3, priority 0, cookie 0x4ec355ed
resubmit(,30)
30. metadata=0x3, priority 0, cookie 0x73a4bec2
resubmit(,31)
31. metadata=
set_
resubmit(,37)
37. priority 0
resubmit(,38)
38. reg15=0x1,
set_
set_
set_
resubmit(,39)
39. priority 0
set_
set_
set_
set_
set_
set_
set_
set_
set_
set_
resubmit(,40)
40. metadata=0x3, priority 0, cookie 0x79edd1f9
resubmit(,41)
41. ip,metadata=0x3, priority 100, cookie 0xc29e223c
set_
resubmit(,42)
42. ip,reg0=
ct(
drop
-> A clone of the packet is forked to recirculate. The forked pipeline will be resumed at table 43.
-> Sets the packet to an untracked state, and clears all the conntrack fields.
Final flow: recirc_
Megaflow: recirc_
Datapath actions: ct(commit,
=======
recirc(0xe9) - resume conntrack with default ct_state=trk|new (use --ct-next to customize)
=======
Flow: recirc_
bridge("br-int")
----------------
thaw
Resuming from table 43
43. metadata=0x3, priority 0, cookie 0x61feba78
resubmit(,44)
44. ct_state=
set_
set_
resubmit(,45)
45. ct_state=
set_
resubmit(,46)
46. metadata=0x3, priority 0, cookie 0xa32f8f02
resubmit(,47)
47. metadata=0x3, priority 0, cookie 0xbc6d5e4e
resubmit(,48)
48. ip,reg0=
ct(
set_
-> Sets the packet to an untracked state, and clears all the conntrack fields.
resubmit(,49)
49. metadata=0x3, priority 0, cookie 0x7ef415be
resubmit(,50)
50. reg15=0x1,
resubmit(,64)
64. priority 0
resubmit(,65)
65. reg15=0x1,
output:26
>> Nonexistent output port
Final flow: recirc_
Megaflow: recirc_
Datapath actions: ct(commit,
tags: | added: ovn |
Changed in neutron: | |
importance: | Undecided → Medium |
Changed in neutron: | |
status: | New → Invalid |
ovn patch: /github. com/ovn- org/ovn/ commit/ 925ed83a6c8064f cb93250acd7493b 59c034fa7b
https:/