Closed GaoChX closed 4 months ago
In VXLAN mode, the remote route maintained by the other compute node is a subnet, but in IPIP mode, it is a /32 host route be maintained by bird
The remote route maintained by BIRD should also be a subnet for the IPAM block that contains the route, not a /32.
The main times you should see /32 routes is when you have over-provisioned your IP pool (resulting in IP borrowing from other nodes) or if e.g., the IP pool itself has been deleted.
I think the first step is figuring out why you're seeing a /32 route advertised in this case instead of using the aggregated route.
@GaoChX do you have any more information? I am closing it now, but feel free to reopen if you made any relevant progress.
Expected Behavior
When the virtual machines of kubevirt are being migrated, a virt-launcher pod with the same IP address is created on another node. And began the migration process. After the migration is completed, the old pod will change to the 'Completed' status.
Current Behavior
This functions normally in vxlan mode, but does not work properly in IPIP mode.
Possible Solution
The issue lies in this line of code: (https://github.com/GaoChX/calico/blob/71d6f8385a6272fc517e192fabc0898f7f565792/cni-plugin/pkg/dataplane/linux/dataplane_linux.go#L346)
In VXLAN mode, the remote route maintained by the other compute node is a subnet, but in IPIP mode, it is a /32 host route be maintained by bird. Therefore, adding a route in this manner can lead to conflicts, resulting in an error being returned.
Steps to Reproduce (for bugs)
Context
Here is error log:
I tried replacing RouteAdd with RouteReplace, and it worked very well.
Your Environment