将 VRF 接口添加到网络命名空间

将 VRF 接口添加到网络命名空间

我正在尝试将 VRF 接口添加到 Linux 中的网络命名空间。我得到了

RTNETLINK answers: invalid argument.

我使用的内核版本是来自 kernel.org 的 4.15.0

以下是我正在运行的命令的确切列表及其相关输出

$IP link add vrf-red type vrf table 10
$IP netns add foo
$IP link set vrf-red netns foo
RTNETLINK answers: Invalid argument

这是否不支持?如果支持,理由是什么?

使用案例:我尝试在同一个 Linux 机器中设置两个 PE 设备,因此每个 PE 设备都有一个单独的网络。现在我想将 VRF 设备添加到 PE,netns以便稍后可以在 PE 中运行 zebra netns,它将使用此命名空间中可用的 VRF。

我是否遗漏了什么?

答案1

是的,确实无法将 VRF 接口添加到netns

下面是相关代码-(来自我使用的内核源代码-4.15.0drivers/net/vrf.c1257

/* don't allow vrf devices to change network namespaces. */
dev->features |= NETIF_F_NETNS_LOCAL;

答案2

虽然您无法将 VRF 接口移动到网络命名空间,但您可以在命名空间中创建:

ip netns add foo
ip -n foo link add vrf-red type vrf table 10

相关内容