Hinzufügen einer VRF-Schnittstelle zu einem Netzwerk-Namespace

Hinzufügen einer VRF-Schnittstelle zu einem Netzwerk-Namespace

Ich versuche, einem Netzwerk-Namespace in Linux eine VRF-Schnittstelle hinzuzufügen. Ich bekomme

RTNETLINK answers: invalid argument.

Die von mir verwendete Kernelversion ist 4.15.0 von kernel.org

Unten finden Sie die genaue Liste der von mir ausgeführten Befehle und die zugehörige Ausgabe

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

Wird dies nicht unterstützt? Wenn ja, was ist der Grund dafür?

Anwendungsfall: Ich versuche, zwei PE-Geräte in derselben Linux-Box einzurichten, sodass ich für jedes PE-Gerät ein separates NetNS habe. Jetzt möchte ich dem PE ein VRF-Gerät hinzufügen, netnssodass ich später beispielsweise Zebra im PE ausführen kann netnsund es das VRF verwendet, das in diesem Namespace verfügbar ist.

Übersehe ich etwas?

Antwort1

Ja, es ist tatsächlich nicht möglich, eine VRF-Schnittstelle zu einemnetns

Unten ist der relevante Code - (aus den Kernelquellen, die ich verwende - 4.15.0 in drivers/net/vrf.cZeile 1257)

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

Antwort2

Zwar können Sie die VRF-Schnittstelle nicht in einen Netzwerk-Namespace verschieben, Sie können jedoch im Namespace Folgendes erstellen:

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

verwandte Informationen