
MACsec IP-Kern von Xiphera
BittWare Partner IP MACsec IP-Core IEEE 802.1AE IP-Core Die Xiphera MACsec-Familie bietet Hochgeschwindigkeits-IP-Cores, die die MACsec (Media Access Control security)
Das Loopback-Beispiel von BittWare demonstriert mehrere Dinge:
Die Funktionalität des Loopback ist nicht der Hauptschwerpunkt dieses Beispiels. Unser Schwerpunkt lag auf der Demonstration aller oben aufgeführten Punkte. Der Loopback hat jedoch einen Wert. BittWare verwendet ihn, um die Einstellungen des DAC-Kabels zu überprüfen, wenn es an Geräte von Drittanbietern wie NIC-Karten und Switches angeschlossen ist.
Der Loopback enthält einen L2-Filter, der die zu verarbeitenden Rahmen auswählt. Wenn diese Rahmen IPv4-Pakete enthalten, tauscht der Loopback Quell- und Zieladressen sowohl auf der MAC- als auch auf der IP-Schicht aus. Der Loopback kann auf ARP-Pakete reagieren. Dies wurde hinzugefügt, um die Notwendigkeit einer speziellen Konfiguration von Geräten anderer Hersteller zu beseitigen.
Der Loopback arbeitet mit einem einzigen QSFP-Käfig und schleift die Pakete vom Eingang zum Ausgang. Alle zusätzlichen QSFP-Käfige werden nicht verwendet.
Dieses Loopback wurde auf einem BittWare XUP-P3R Board mit einem Xilinx VU9P Chip, Speed Grade 2, entwickelt und getestet. Der Loopback verwendet keinen externen Speicher und sollte auf jeden BittWare Xilinx UltraScale+ Chip mit einem CMAC portiert werden können.
Der FPGA-Bitstream des Loopback enthält mehrere Komponenten. Jede Komponente verfügt über eine AXI4-Stream-Schnittstelle sowohl am Eingang als auch am Ausgang, die gemeinsam als Datenebene verwendet wird. Die Steuerebene des Bitstreams verwendet AXI4-Lite-Schnittstellen, die mit der physischen PCIe-Schnittstelle verbunden sind.
Der Loopback wird als Xilinx IP Integrator Projekt geliefert. Mehrere der Komponenten sind in Verilog geschrieben. Drei sind mit dem Xilinx HLS-Flow geschrieben, der Verilog ausgibt.
Die aktuelle Implementierung fasst die drei mit HLS geschriebenen Komponenten aus Sicht von IP Integrator zu einer einzigen Komponente zusammen. Diese drei Komponenten werden hier jedoch separat dokumentiert. Tatsächlich sind sie als vier verschiedene Komponenten dokumentiert. Der Grund dafür ist, dass die HLS-Komponenten eine gemeinsame "Parser-Bibliothek" nutzen, die wir separat dokumentieren, um Wiederholungen zu vermeiden.
Philosophisch gesehen werden beim Zurücksetzen alle Komponenten aktiviert, aber in einem Modus, der den "geringsten Schaden" verursacht. Die Software muss dann die Komponenten konfigurieren, bevor der Loopback erfolgreich in Betrieb genommen werden kann.
Jede Komponente stellt auch statistische Register zur Verfügung, um den Benutzer bei der Fehlersuche in Hardware oder Software zu unterstützen. Wir fügen ein Snapshot-Signal ein, damit alle statistischen Registerwerte zeitlich synchronisiert sind.
Die Schnittstellenbreiten und die Taktfrequenz des Bitstreams wurden für 100-Gigabit-Ethernet-Verkehr ausgewählt. Die AXI4-Stream-Schnittstelle der Datenebene ist 512 Bit breit. Außer dort, wo sie den CMAC berührt, ist die Schnittstelle mit 300 MHz getaktet. Frame-Metadaten werden auf einem separaten Bus, den AXI-TUSER-Bits, übertragen, wobei die Daten gültig sind, wenn AXI-TLAST hoch ist.
Die Metadaten sind im gesamten Bitstrom nicht einheitlich. Daher wird in der Dokumentation zu jeder Komponente beschrieben, welche Metadaten die Komponente bei der Eingabe erwartet und welche Metadaten sie bei der Ausgabe weitergibt.
Die Bitstream-Steuerungsschnittstellen sind AXI4-Lite-Slaves mit einer Breite von 32 Bits. Alle Lese- und Schreibvorgänge sind 32-Bit. In Fällen, in denen die Byte-Reihenfolge wichtig ist, erwartet der Loopback, dass unsere Steuerregister Daten in Netzwerk- oder Big-Endian-Byte-Reihenfolge enthalten.
Wir dokumentieren die Register der Steuerebene der Komponenten an einer einzigen Stelle, getrennt von den Beschreibungen der Komponenten selbst. Querverweise helfen dem Benutzer, zwischen den beiden Orten zu navigieren. Die für die Steuerregister des Loopback verwendete Speicherabbildung wird stark von den Anforderungen der AXI4-Lite-Schnittstellenimplementierung in der Xilinx HLS-Toolkette beeinflusst.
Die formale Definition von AXI stammt aus dem "AXI Reference Guide" von Xilinx, der hier verfügbar ist: https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf
Das BittWare Loopback-Beispiel läuft auf einer PCIe-Karte, die in einen Host-Computer eingesetzt ist. BittWare liefert Software für diesen Host-Computer, um die Funktionalität des Beispiels zu steuern. Die Steuerungssoftware verwendet Python 3, das auf dem Host-Computer läuft.
Die Software des Beispiels baut auf dem BittWare BittWorks II Toolkit auf. Genauer gesagt, fügt es Python-Bindungen zu den BwHIL- und BmcLib-Bibliotheken hinzu. Diese Bindungen werden dann in einer Sammlung von Python-Komponenten genutzt, die zur Bearbeitung von Registern erstellt wurden, die der Bitstream des Beispiels im PCIe-Adressraum freilegt.
Darüber hinaus übersetzt der Loopback-Beispiel-Bitstream einige Hardware-Ereignisse in PCIe-Interrupts. Um dies zu unterstützen, übersetzt die Software des Loopback diese Interrupts in Python-Aufrufe.
Zur Veranschaulichung eine sehr einfache Interaktion mit dem Loopback-Beispiel-Bitstrom:
$ # Mappen Sie zunächst die PCIe-Karte über die Kommandozeile des Toolkits oder über die GUI
$ bwconfig --add=usb# zuerst als Gerät 0 über USB gemappt
$ bwconfig --add=pci# Dieselbe Karte wird über PCIe als Gerät 1gemappt
$ python3 # Aufrufen von python3
>>> from components.hildev importieren *
>>> Karte = Karte(1)
>>> card.show_stats() # Zeigt alle Statistiken von allen Komponenten
>>> # Zeigt Statistiken nur von der ersten CMAC-Komponente mit einigen Optionen
>>> card.cmac[0].show_stats(showall=False, doTick=False)
>>> help()
>>> exit()
Alle Python-Komponenten unterstützen eine gemeinsame Sammlung von Low-Level-Methoden. Beachten Sie, dass in unserer Python-Implementierung die PCIe-Speicherzuordnung nicht fest kodiert ist. Stattdessen liest Python eine JSON-Datenbank, die die verfügbaren FPGA-Bitstream-Komponenten, ihre Register und die Lage der Register im PCIe-Adressraum definiert. Diese JSON-Datenbank wird automatisch aus der Dokumentation des Loopback-Beispiels generiert.
Die vollständige Python-API-Dokumentation ist auf der Entwickler-Website von BittWare verfügbar.
Zu den Low-Level-Methoden gehören:
Welche Methoden auf höherer Ebene verfügbar sind, hängt von der jeweiligen Komponente ab. Einige wenige Methoden sind jedoch relativ häufig:
Weitere Details zum Loopback stehen als kostenloser App Note Download zur Verfügung; fordern Sie ihn noch heute über das untenstehende Formular an!
Was Sie auf dieser Seite sehen, ist die Einführung in das Loopback-Beispiel. In der vollständigen App Note gibt es noch viel mehr Details, und das Beste ist, dass Sie sie KOSTENLOS herunterladen können! Füllen Sie das Formular aus, um Zugang zu einer PDF-Version der vollständigen App Note anzufordern.
"*" kennzeichnet Pflichtfelder
BittWare Partner IP MACsec IP-Core IEEE 802.1AE IP-Core Die Xiphera MACsec-Familie bietet Hochgeschwindigkeits-IP-Cores, die die MACsec (Media Access Control security)
PCIe FPGA Card 250-SoC Directly Attached Accelerator & NVMe-over-Fabric Zuverlässiger Transport von NVMe-Frames mit geringer Latenz und hohem Durchsatz Benötigen Sie ein Preisangebot? Springen Sie
BittWare Webinar High Performance Computing mit Intel® Agilex™ FPGAs der nächsten Generation mit einer Beispielanwendung aus dem Barcelona Supercomputing Center jetzt On Demand verfügbar (Aufzeichnung enthalten)
PCIe-FPGA-Karte 520N-MX Stratix 10 FPGA-Karte mit 16 GB HBM2 Leistungsstarke Lösung zur Beschleunigung speichergebundener Anwendungen Benötigen Sie ein Preisangebot? Zur Preisgestaltung springen