forked from cilium/cilium
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
neigh: Support multi device neighbor discovery
[ upstream commit 6d208e7 ] Currently, the neighbor discovery only supports a single device specified as the directRoutingDevice. That causes packet drops due to FIB lookup failed error in a multi-device environment. The BPF Nodeport implementation no longer relies on the directRoutingDevice since cilium#18585. The following example illustrates the issue which occurs in the multi-device environment. Each node has two devices connected to a different L3 network (10.69.0.64/26 and 10.69.0.128/26), and global scope addresses each(10.69.0.1/26 and 10.69.0.2/26). A nexthop from node1 to node2 is either 10.69.0.66 dev eno1 or 10.69.0.130 dev eno2. +--------------+ +--------------+ | node1 | | node2 | | 10.69.0.1/26 | | 10.69.0.2/26 | | eno1+-----+eno1 | | | | | | | | 10.69.0.65/26| |10.69.0.66/26 | | | | | | eno2+-----+eno2 | | | | | | | |10.69.0.129/26| |10.69.0.130/26| +--------------+ +--------------+ (On node1) $ ip route show 10.69.0.2 nexthop via 10.69.0.66 dev eno1 weight 1 nexthop via 10.69.0.130 dev eno2 weight 1 Assuming the directRoutingDevice is eno1, if BPF Nodeport implementation selects 10.69.0.130 dev eno2 as the nexthop when it redirects a packet to the selected backend on an intermediate node, it will fail due to FIB lookup failed because there's no neighbor entry for the device eno2 that is not the directRoutingDevice. This PR fixes the issue by populating L2 addresses with all target devices. Fixes: cilium#19908 Signed-off-by: Yusuke Suzuki <yusuke-suzuki@cybozu.co.jp> Signed-off-by: Paul Chaignon <paul@cilium.io>
- Loading branch information
Showing
3 changed files
with
1,287 additions
and
493 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.