ネットワーク名前空間に VRF インターフェイスを追加する

ネットワーク名前空間に VRF インターフェイスを追加する

Linuxのネットワーク名前空間にVRFインターフェースを追加しようとしています。

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 ボックスに 2 つの PE デバイスをセットアップしようとしているため、各 PE デバイスに個別の netns があります。ここで、PE に VRF デバイスを追加して、netns後で PE で zebra などを実行しnetns、この名前空間で使用可能な VRF を使用できるようにします。

何か見落としている点はありますか?

答え1

はい、確かにVRFインターフェースを追加することはできませんnetns

以下は関連するコードです - (私が使用しているカーネルソースから - 4.15.0drivers/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

関連情報