Zephyrnet-Logo

Testverfahren für VLAN-Frames auf MPSoC-Geräten

Datum:

VLAN ist als virtuelles lokales Netzwerk definiert. Es wird verwendet, um Netzwerkanwendungen getrennt zu halten, obwohl sie mit demselben physischen Netzwerk verbunden sind, und ohne dass mehrere Kabelsätze und Netzwerkgeräte bereitgestellt werden müssen.

VLAN funktioniert, indem es Tags auf Netzwerkframes anwendet und diese Tags in Netzwerksystemen verarbeitet, dh das Erscheinungsbild und die Funktionalität von Netzwerkverkehr erzeugt, der sich physisch in einem einzelnen Netzwerk befindet, sich jedoch so verhält, als ob er auf separate Netzwerke aufgeteilt wäre.

Die PS Gigabit Ethernet Controller (GEMs) auf Zynq-, MPSoC- und Versal-Geräten unterstützen alle VLAN-tagged Frames. 

In diesem Blog werden detaillierte Schritte zum Testen von VLAN-Frames mit PS GEM auf MPSoC-Geräten dokumentiert. Der Einfachheit halber verwenden wir hier ein von Xilinx bereitgestelltes ZCU102 BSP. Sie können eine benutzerdefinierte XSA verwenden, bei der eines der PS GEMs aktiviert ist. 

Erstellen Sie das PetaLinux-Projekt mit aktivierter VLAN-Unterstützung

Hier verwenden wir ein von Xilinx bereitgestelltes ZCU102 BSP, um das PetaLinux-Projekt zu erstellen, indem wir die folgenden Schritte ausführen.

Um ein Projekt zu erstellen, verwenden Sie den folgenden Befehl:

  •  petalinux-create -t project -s ./xilinx-zcu102-v2020.2-final.bsp

Nachdem das Projekt erstellt wurde, navigieren Sie zum Projektverzeichnis und aktivieren Sie die 8021Q-Unterstützung:

  •  petalinux-config -c kernel
    • Um VLAN-Unterstützung auszuwählen: Wählen Sie Netzwerkunterstützung – > Netzwerkoptionen → 802.1Q/802.1ad VLAN-Unterstützung

tcpdump und net-tools aktivieren:

  • petalinux-config -c rootfs
    • Um tcpdump zu aktivieren, wählen Sie Dateisystempakete → net → tcpdump → tcpdump
    • Um net-tools zu aktivieren, wählen Sie Filesystem Packages → misc → net-tools → net-tools

Erstellen Sie dann das PetaLinux-Projekt:

  •  petalinux-build

Um das Linux-Image zu erstellen, navigieren Sie zum Verzeichnis ./images/linux und verwenden Sie den folgenden Befehl:

  • petalinux-package --boot --fsbl zynqmp_fsbl.elf --fpga system.bit --pmufw pmufw.elf --u-boot

Booten Sie das Design auf einer ZCU102-Platine

Sie können die Images auf die SD-Karte kopieren und auf dem ZCU102-Board booten. Wenn eine Remote-Verbindung verwendet wird, kann stattdessen der folgende Boot-Befehl verwendet werden:

  • petalinux-boot --jtag --kernel --bitstream images/linux/system.bit --hw_server-url hostmachine:3121

Ich verwende hier eine Remote-Verbindung und der Host-Rechner ist, mit dem mein ZCU102 verbunden ist. 

Schritte zum Einrichten von VLAN-Schnittstellen sowohl auf Ziel- (ZCU102) als auch auf Host-Schnittstellen

Verwenden Sie auf dem Board nach der Anmeldung als Root "ifconfig", um die IP-Adresse zu erhalten. In meinem Fall wird mein PS GEM3 als eth0 mit der IP-Adresse 10.10.70.1 angezeigt.

Führen Sie dann die folgenden Befehle aus, um eine an eth0 angeschlossene Slave-VLAN-Schnittstelle hinzuzufügen:

  • ip link add link eth0 name eth0.100 type vlan id 100
  • ip addr add 10.10.70.50/24 brd 10.10.70.255 dev eth0.100
  • ip link set dev eth0.100 up
  • ifconfig

Sie sollten die folgende Ausgabe in der Konsole sehen. Die VLAN-Schnittstelle eth0.100 wurde erstellt. 

image2021-7-1_13-17-30.png

Geben Sie auf dem Hostcomputer zuerst „ifconfig“ ein, um die vorhandenen Schnittstellen zu finden. In meinem Fall habe ich zwei Ethernet-Schnittstellen und eine lokale Loopback-Schnittstelle, die unten gezeigt wird.

„eth0“ ist die normale Internetverbindung, während „eth1“ eine Verbindung zur ZCU102 herstellt und die IP-Adresse 10.10.70.101 hat.

image2021-7-1_13-21-8.png

Jetzt erstellen wir eine Slave-VLAN-Schnittstelle, die mit eth1 verbunden ist. Hier sind die Schritte:

  • sudo modprobe 8021q
  • sudo ip link add link eth1 name eth1.5 type vlan id 100
  • sudo ip addr add 10.10.70.40/24 brd 10.10.71.255 dev eth1.5
  • sudo ip link set dev eth1.5 up
  • ifconfig

Nach „ifconfig“ ist die VLAN-Schnittstelle auf dem Host zu sehen. 

image2021-7-1_13-19-48.png

 

VLAN-Tests

Wir haben nun zwei Slave-VLAN-Schnittstellen auf dem Ziel- (ZCU102) bzw. Host-Rechner eingerichtet, wobei beide die gleiche VLAN-ID von 100 haben. Dies soll sicherstellen, dass wir auf beiden Seiten Antworten für VLAN-tagged Frames senden und empfangen können. 

Wir werden sowohl TX- als auch RX-VLAN-Frames testen, die von und an das ZCU102-Board gesendet werden. Mit dem Befehl „tcpdump“ können VLAN-getaggte Frames direkt in der Konsole angezeigt oder in einer .pcap-Datei erfasst werden, sodass sie auch in Wireshark angezeigt werden können. 

TX-Tests

Um TX zu testen, richten Sie auf dem Host „tcpdump“ ein, um eingehende Frames zu erfassen und auf der eth1-Schnittstelle mit dem folgenden Befehl zu hören:

  • tcpdump -i eth1 -w hostvlanZCU102.pcap &

Führen Sie auf dem Ziel (ZCU102) den folgenden „ping“-Befehl aus.

  • ping -I eth0.100 10.10.70.40 &

Dann müssen wir „tcpdump“ killen, damit die Frames in der pcap-Datei erfasst werden.

  • sudo killall -s INT tcpdump &

Jetzt können wir die Aufnahme in Wireshark überprüfen. Unten ist eine Momentaufnahme:

image2021-7-1_13-45-6.png

 

Wie gezeigt, werden die VLAN-getaggten Frames von der VLAN-Schnittstelle auf dem Ziel gesendet, die auch die Antwort von der VLAN-Schnittstelle auf dem Host erhält. 

RX-Tests

Um RX zu testen, führen Sie auf dem Ziel den Befehl „tcpdump“ aus und fügen Sie einen Filter für VLAN-Frames hinzu.

  • tcpdump -i eth0 'vlan and icmp' and ip host 10.10.70.1 and ether host 00:0a:35:00:22:01 -n -ev &

Führen Sie auf dem Host den Befehl „ping“ aus:

  • ping 10.10.70.1 -I eth1.5 -c 3 &

Auf dem Ziel sehen wir, dass 3 VLAN-Frames erfasst wurden:

image2021-7-1_14-10-48.png

PlatonAi. Web3 neu erfunden. Datenintelligenz verstärkt.
Klicken Sie hier, um darauf zuzugreifen.

Quelle: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/VLAN-Frames-Testing-Procedure-on-MPSoC-Devices/ba-p/1240602

spot_img

Neueste Intelligenz

spot_img

Chat mit uns

Hallo! Wie kann ich dir helfen?