Mobile-Menu

Mellanox kauft Voltaire – die Bedeutung für die Netzwerke im Überblick

Low-Latency-Adapter und schnellste Switches aus einer Hand

Seite: 3/4

Die Funktionsweise von RDMA

RDMA ist ein Basismechanismus von IB. Wir haben ja heute eine meist „Netzwerk-zentrische“ Perspektive. Die basiert auf der Vorstellung, dass ein Betriebssystem Ressourcen besitzt und diese den Anwendungen zur Verfügung stellt, wenn sie sie brauchen. Virtualisierung bedeutet eine weitere Abstraktionsstufe dieses Modells. Hier werden die Ressourcen zunächst einmal auf virtuelle Maschinen verteilt, die diese dann wieder an die Anwendungen weiterreichen. So kommen wir z.B. von realen NICs, HBAs und I/O-Schnittstellen zu vNICs, vHBAs und SR-IOV, analog für Speicher und Prozessoren. Die Anwendungen verlassen sich im Gegenzug darauf, dass das auch richtig funktioniert.

Der Ansatz von IB ist anders, sozusagen „Anwendungs-zentrisch“. Hier steht die einfache Frage im Vordergrund: wie kann man es erreichen, dass eine Anwendung auf andere Anwendungen und Speicher so einfach, effizient und direkt wie möglich zugreifen kann? Betrachtet man das I/O-Problem aus dieser Perspektive, sehen Antworten anders aus als aus der Netzwerk-Perspektive. Die Grundidee von IB ist einfach: Versorgung von Anwendungen mit einem einfach zu nutzenden Messaging-Service. Gibt es den einmal, können Anwendungsprozesse ihn dazu benutzen, mit anderen Anwendungsprozessen oder Speichern zu kommunizieren. Das ist die ganze Idee.

Bildergalerie

Anstatt umständlich beim Betriebssystem anzufragen, kann ein Anwendungsprozess den Messaging-Service direkt benutzen. Da der Messaging Service ein klarer und direkter Dienst ist, kann sich die Anwendung den üblichen Tanz mit den Kommunikations- und Netzwerkkomponenten sparen. Da man Speicherverkehr als Menge von Kontroll- und Datennachrichten auffassen kann, kann man den Messaging Service auch für den Speicherverkehr benutzen.

Die InfiniBand-Architektur

Die InfiniBand-Architektur gibt jeder Anwendung unmittelbaren Zugriff zum Messaging-Service. „Unmittelbar“ bedeutet dabei, dass eine Anwendung das Betriebssystem gar nicht bemühen muss. Diese Idee ist konträr zur üblichen Standard-Umgebung, in der z.B. ein TCP/IP-Stack und die dazu gehörigen NICs einzig dem Betriebssystem gehören und eine Anwendung nicht direkt darauf zugreifen kann. Im Normalfall muss eine Anwendung eine Anfrage an das BS stellen. Die dazu gehörigen Daten aus dem virtuellen Speicher der Anwendung kommen dann in einen Stack, wo alle solche Anfragen und Daten landen. Der Stack wird dann mehr oder minder schnell abgearbeitet, erst z.B. durch TCP/IP und dann in Folge durch die MAC und PHY der Adapterkarte. Nach Durchlaufen des Netzes arbeitet dieser Mechanismus auf der anderen Seite genauso, bis die Daten endlich im virtuellen Speicher der Ziel-Anwendung ankommen.

InfiniBand vermeidet dies durch eine Technik, die als „Stack-Bypass“ bekannt ist. Dabei gibt es den gleichen Grad an Isolation und Schutz der Anwendung, wie das auch bei der „normalen“ Verwendung eines Betriebssystems wäre.

Der Messaging Service wird von InfiniBand

Der Messaging Service wird von InfiniBand durch das Aufsetzen eines Kanals zwischen der auslösenden Anwendung und der Anwendung, mit der kommuniziert, oder dem Dienst, der benutzt werden soll, implementiert. Die Anwendungen, die solche Kanäle benutzen, können Nutzer-Anwendungen aber auch Anwendungen aus dem Systemkern sein.

Die Aufgabe bei der Konstruktion von IB war also die Schaffung dieser isolierten und sicheren Kanäle zwischen virtuellen Adressräumen, die nicht nur auf dem gleichen, sondern auch auf physisch getrennten Rechnern, lokalisiert sein können.

Die Endpunkte eines Kanals heißen Queue-Pairs (QPs). Jedes QP besteht aus einer Send-Queue und einer Receive-Queue. Jedes QP repräsentiert ein Ende des Kanals. Benötigt eine Anwendung mehrere Verbindungen, müssen entsprechend viele QPs erzeugt werden.

Damit die Anwendungen jetzt direkten Zugriff auf die QPs haben, ohne das BS fragen zu müssen, werden die QPs im virtuellen Speicher der Anwendungen abgebildet. So hat die Anwendung an einem Ende einer Verbindung direkten Zugang zu einer Anwendung oder einem Speicher auf der andern Seite des so aufgesetzten Kommunikationskanals. Daher nennt man das Ganze auch Channel I/O. Abbildung 1 zeigt, wie dies gemeint ist:

Es gibt zwei Transfersemantiken, nämlich SEND/RECEIVE (Kanalsemantik) und RDMA (Speichersemantik). Bei der Kanalsemantik wird die Message in der Datenstruktur der empfangenden Anwendung dargestellt. Diese muss sie natürlich beim Aufbau des Kanals publiziert haben. Die Speichersemantik funktioniert anders. Hier definiert die empfangende Anwendung einen Puffer in ihrem virtuellen Speicher und überträgt die Kontrolle über diesen Puffer auf die sendende Seite. Mit den Kommandos RDMA READ und RDMA WRITE kann die sendende Seite dann auf diesen Puffer zugreifen. Konkret wäre also z.B. die sendende Seite eine Anwendung und die empfangende Seite ein Speichersystem.

Diese Semantiken werden zusammen verwendet, wie man am Beispiel einer Speicheroperation leicht verdeutlichen kann. Eine Anwendung, der „Initiator“ in diesem Falle, möchte Daten wegspeichern. Dazu stellt sie die Daten in einen Puffer in ihrem virtuellen Speicher und benutzt eine SEND-Operation, um ein Speichersystem aufzufordern, die Daten abzuholen. Das Speichersystem benutzt dann RDMA READ-Operationen, um die Daten aus dem Puffer des Initiators abzuholen. Sobald das geschehen ist, schickt das Speichersystem dem Initiator mittels des SEND-Kommandos eine Nachricht über die erfolgreiche Beendigung des Vorgangs. Während das Speichersystem liest, kann der Initiator natürlich schon etwas anderes machen.

Der Messaging-Mechanismus stellt die oberen zwei Schichten der IB-Architektur dar, siehe Abbildung 2.

Die IB-Architektur ist natürlich eine vollständige Kommunikationsarchitektur, arbeitet aber auf den einzelnen Schichten anders als ein TCP/IP-Netz. Grundsätzlich sind die Informationseinheiten zwischen den Anwendungen keine Datenpakete sondern Messages. Eine Message kann bis zu 231Bytes umfassen. Im Verlauf der Kommunikation werden sie natürlich herunter gebrochen und wieder zusammengesetzt.

IB hat (wie FC auch) eine eigene Komponentenwelt aus Adaptern, Switches, Kabeln und Steckern. Jedes Einzelteil ist ausschließlich und in höchstem Maße für die latenzarme und schnelle Kommunikation ausgelegt. Diese Komponenten sind normalem Ethernet haushoch überlegen und dennoch nicht überteuert. So kann z.B. IB heute im RZ der preiswerteste Weg zu einer 40 Gbps-Kommunikation sein.

weiter mit: RDMA over Converged Ethernet

Artikelfiles und Artikellinks

(ID:2048813)