-
Notifications
You must be signed in to change notification settings - Fork 931
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARP/NDP should work correctly on machines with multiple interfaces #165
Comments
Most of the changes for this would be in the I think what should happen instead is that the arp package should internally look up all interfaces, and create a listener for each "real" interface (i.e. interfaces that have "global" unicast IPs on them - in the parlance of go's Then the announcer will need one goroutine per listener, so that it can monitor all the interfaces at once. The announcer code already has a mutex protecting the "should we respond to this IP" code, so fortunately the concurrency headaches are already solved. So, then, each goroutine just needs to do the same The tests probably also need adjusting - for testing purposes only, we may want to preserve a way to only run the announcer on specific interfaces, I'm not sure. |
Oh, a bit more direction: @aphistic expressed interest in working on this. /cc @miekg @mdlayher FYI. |
sgtm, happy to review any PRs |
Every 10s, the layer2 controller scans interfaces, and runs an ARP responder for each interface with a globally routable IPv4 address (note this includes RFC1918).
Every 10s, the layer2 controller scans interfaces, and runs an NDP responder for each interface with a globally routable IPv6 address.
Hi @danderson, I have a problem with multi interfaces and found Is this be forgetten or some other reasons? Thanks. |
OCPBUGS-25266: Add a .snyk file with the files to skip
Is this a bug report or a feature request?:
Feature request.
What happened:
ARP speaker right now assumes that there's only one interface on the worker machines, and "locks" itself to the MAC address of the first interface it finds.
This doesn't work right for machines with multiple interfaces, where the allocated CIDRs may belong to different interfaces.
What you expected to happen:
The ARP speaker should just listen for ARP traffic on all interfaces, and respond to relevant queries on the correct interface (i.e. the interface that has an address/cidr compatible with the requested IP).
How to reproduce it (as minimally and precisely as possible):
Set up a cluster that straddles 2 networks, 192.168.42.0/24 and 192.168.200.0/24. Configure 2 ARP pools, for 192.168.42.128/25 and 192.168.200.128/25. Configure services in both pools. Try to use them. One of the two pools will never get any responses.
The text was updated successfully, but these errors were encountered: