Добавление интерфейса VRF в сетевое пространство имен

Добавление интерфейса VRF в сетевое пространство имен

Я пытаюсь добавить интерфейс VRF в сетевое пространство имен в Linux. Я получаю

RTNETLINK answers: invalid argument.

Я использую версию ядра 4.15.0 с kernel.org

Ниже приведен точный список команд, которые я запускаю, и соответствующий вывод.

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

Это не поддерживается? Если да, то в чем обоснование?

Пример использования: Я пытаюсь настроить два устройства PE в одном Linux-боксе, поэтому у меня есть отдельные netns для каждого устройства PE. Теперь я хочу добавить устройство VRF в PE, netnsчтобы позже я мог запустить, скажем, zebra в PE netns, и он будет использовать VRF, который доступен в этом пространстве имен.

Я что-то упускаю?

решение1

Да, действительно невозможно добавить интерфейс VRF кnetns

Ниже приведен соответствующий код (из исходных кодов ядра, которые я использую - 4.15.0 в drivers/net/vrf.cстроке 1257)

/* 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

Связанный контент