Open zhanrox2 opened 2 years ago
OVN 22.03 , OVS 2.17.0
Hi, those that have empty ip or empty mac should be handled by commits 0a4bc20 and 80187a8.
Second issue seems to be the order of operation, you are setting options:always_learn_from_arp_request=false
after
ovn-nbctl lr-nat-add nat1 snat 10.1.1.1 192.168.0.0/16
and ovn-nbctl lr-nat-add nat2 snat 10.1.1.2 192.168.0.0/16
, which creates MAC binding row unless always_learn_from_arp_request=false
[0].
I am not sure where the 10.1.1.254
is created, but there is chance you are getting GARP from the localport before the option is set.
For the second point there is ongoing work on aging mechanism for MAC binding, that should prevent the MAC binding table to grow infinitely.
[0] https://github.com/ovn-org/ovn/blob/main/controller/pinctrl.c#L4415
Steps to reproduce:
Configure two logical routers (with distribute gateway router port) and connect them to a logical switch. Set options:always_learn_from_arp_request=false on both routers.
But OVN will still be based on ARP and IPv6 Neighbor Discovery packets , then generated entry still be put into the mac _binding table,and generate corresponding flow entries in tables 66 and tables 67 corresponding to OVS.
You will find the corresponding records in the mac_binding table as shown below
And even if the table is cleared with the command "ovn-sbctl --all destroy mac_binding", the corresponding entry will be automatically generated after communication.
I think if this option is set to false, the LRPs connecting switches would not learn mac-bindings for overlay VIFs if the pod sends GARP requests, which would add unnecessary entries in SB and increase control plane churns unnecessarily.
In addition, I also found that if there are N distributed gateway ports connected to the same edge switch, the number of OVS flow tables (table66 and tables 67) is close to the N*N Cartesian product, which is very large.
Can someone tell me how I can handle this next ?