DE102016204030B4 - Controller, Maschine, System und Verfahren zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine - Google Patents

Controller, Maschine, System und Verfahren zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine Download PDF

Info

Publication number
DE102016204030B4
DE102016204030B4 DE102016204030.8A DE102016204030A DE102016204030B4 DE 102016204030 B4 DE102016204030 B4 DE 102016204030B4 DE 102016204030 A DE102016204030 A DE 102016204030A DE 102016204030 B4 DE102016204030 B4 DE 102016204030B4
Authority
DE
Germany
Prior art keywords
memory
physical
virtual
machine
areas
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102016204030.8A
Other languages
English (en)
Other versions
DE102016204030A1 (de
Inventor
Bernard Metzler
Jonas Pfefferle
Patrick Stuedi
Animesh K Trivedi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/657,015 external-priority patent/US9904627B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102016204030A1 publication Critical patent/DE102016204030A1/de
Application granted granted Critical
Publication of DE102016204030B4 publication Critical patent/DE102016204030B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

RDMA-fähiger Netzwerkschnittstellen-Controller (10) zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine (30; 50) unter Verwendung von mehreren Zuordnungstabellen (40), wobei der physische Arbeitsspeicher eine Mehrzahl von physischen Arbeitsspeicherbereichen (31; 51) enthält, wobei mindestens einige der physischen Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich (21) einer virtuellen Maschine (20) zugehörig sind, die auf der physischen Maschine ausgeführt wird, wobei der Netzwerkschnittstellen-Controller (10) aufweist:eine Zuordnungseinheit (12), die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen physischen Arbeitsspeicherbereich (31) zu identifizieren, virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle (41, 42, 43) zuordnet, wobei die Zuordnungseinheit so konfiguriert ist, dass sie die Zuordnungstabelle aus mehreren Zuordnungstabellen (40) auf Grundlage einer Netzwerkkennung der virtuellen Maschine auswählt, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, undeine Verarbeitungseinheit (11), die so konfiguriert ist, dass sie eine Zugriffsanforderung (1) von einem Client (2) für ein Zugreifen (3) auf einen der physischen Arbeitsspeicherbereiche empfängt, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung (1) eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren, wobei die Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.

Description

  • HINTERGRUND DER ERFINDUNG
  • Ausführungsformen der Erfindung betreffen einen RDMA-fähigen Netzwerkschnittstellen-Controller und ein Verfahren zum Bereitstellen eines Mechanismus zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine. Die Zuordnungen, die über Arbeitsspeicher-Registrierungsaufrufe generiert werden, werden von einem RDMA-fähigen Netzwerkschnittstellen-Controller auf einer physischen Maschine auf einen anderen Controller übertragen, wenn die virtuelle Maschine von der physischen Maschine auf eine andere physische Maschine migriert wird.
  • In modernen Netzwerksystemen wird ein Remote Direct Memory Access (RDMA) (direkter Arbeitsspeicherfernzugriff) zum Bereitstellen eines direkten Arbeitsspeicherzugriffs von dem Arbeitsspeicher einer physischen Maschine, zum Beispiel einem Computer, in denjenigen einer anderen physischen Maschine unter Verwendung von Netzwerk-Controllern und ohne Beteiligung des jeweiligen Betriebssystems verwendet. Dies gestattet eine Vernetzung mit hohem Durchsatz und niedriger Latenz bei vernachlässigbarer CPU-Belastung. RDMA ist jedoch mit spezifischen Anforderungen verbunden und macht Anwendungen in einer verteilten Einstellung somit Netzwerkressourcen zugänglich, die an eine physische Maschine und einen Netzwerk-Controller gebunden sind, wie beispielsweise ein Steering Tag (STag) (Steuer-Tag) und zugehörige registrierte virtuelle und physische Arbeitsspeicherbereiche usw. Diese STags sind für ein Zugreifen auf physische Arbeitsspeicherbereiche einer physischen Maschine notwendig, gelten aber nur für eine bestimmte Netzwerkschnittstellen-Controllereinheit auf einer bestimmten physischen Maschine. Diese STags sind verteilt und werden von allen Peers (Gleichgeordneten) oder Clients in einer vernetzten Umgebung verwendet. In einer konsolidierten verteilten Umgebung wie einem Cloud-Netzwerk werden Arbeitslasten mit beteiligten RDMA-Zugriffen in einer virtuellen Maschine (VM) ausgeführt. Wenn eine virtuelle Maschine jedoch von einem physischen Host auf einen anderen migriert wird, sind STags und Arbeitsspeicherzuordnungen des vorherigen physischen Hosts bzw. der vorherigen Maschine auf dem neuen Host bzw. der neuen Maschine nicht gültig. Somit müssen Peers mit alten STags die alten STags verwerfen und sich über neue STags auf der neu migrierten Maschine informieren. Dies kann ein zeitaufwendiger und komplizierter Prozess sein, der zu einem Leistungsverlust bei Arbeitslasten führen kann.
  • Die US-Patentschrift 7 565 454 B2 offenbart ein Verfahren zum Übertragen von Steuerung zwischen einer ersten Netzwerkschnittstelle und einer zweiten Netzwerkschnittstelle innerhalb desselben Hosts unter Bezugnahme auf STags.
  • Dementsprechend ist ein Aspekt der vorliegenden Erfindung, eine verbesserte Möglichkeit zum Migrieren von Arbeitsspeicherzuordnungen einer virtuellen Maschine von einem RDMA-fähigen Netzwerk-Controller auf einen anderen zwischen physischen Maschinen bereitzustellen, wenn die virtuelle Maschine migriert wird, und zum Verwenden der migrierten Arbeitsspeicherzuordnungen beim Zugreifen auf Arbeitsspeicherbereiche.
  • Die Druckschrift US 2013 / 0 061 047 A1 betrifft Techniken zur effizienten und sicheren Implementierung von Netzwerk-Richtlinien in einer Netzwerk-Schnittstellen-Steuereinheit (NIC) in einem Host-Computergerät, das eine virtualisierte Computerumgebung betreibt. In einigen Ausführungsformen kann der NIC Pakete unter Umgehung einer übergeordneten Partition des Host-Computergeräts direkt verarbeiten und an ihre Ziele weiterleiten. Insbesondere kann der NIC in einigen Ausführungsformen Informationen über Netzwerkrichtlinien speichern, um Pakete zu verarbeiten und direkt an eine virtuelle Maschine (VM) weiterzuleiten. Wenn der NIC nicht in der Lage ist, ein Paket zu verarbeiten, kann der NIC das Paket an die übergeordnete Partition weiterleiten. In einigen Ausführungsformen kann der NIC ein Verkapselungsprotokoll verwenden, um Adressinformationen in Paketköpfen zu übertragen. In einigen Ausführungsformen können diese Adressinformationen vom MC über einen sicheren Kanal an die übergeordnete Partition übermittelt werden. Der NIC kann auch verschlüsselte Adressen von den VMs erhalten und entschlüsseln, um Pakete unter Umgehung der übergeordneten Partition weiterzuleiten.
  • Die Druckschrift US 2014 / 0 201 451 A1 betrifft ein Datenverarbeitungssystem. Es beinhaltet eine Mehrzahl virtueller Maschinen, die jeweils verknüpfte Speicherseiten haben; einen gemeinsamen Speicherseiten-Cache, auf den jede der Mehrzahl virtueller Maschinen zugreifen kann; und eine globale Hash-Map, auf die jede der Mehrzahl virtueller Maschinen zugreifen kann. Das Datenverarbeitungssystem ist so konfiguriert, dass für eine bestimmte Speicherseite, die in dem gemeinsam genutzten Speicherseiten-Cache gespeichert ist, der mit zwei oder mehr der Mehrzahl von virtuellen Maschinen verknüpft ist, ein einzelner Schlüssel in der globalen Hash-Map gespeichert ist, der mindestens eine Speicherstelle in dem gemeinsam genutzten Speicherseiten-Cache der bestimmten Speicherseite ermittelt. Das System kann zumindest teilweise in einem Cloud-Computing-System verkörpert werden.
  • Die Druckschrift WO 2016 / 109 458 A1 betrifft ein Verfahren zum Bereitstellen von Mandantenfähigkeitsunterstützung für direkten Fernspeicherzugriff, RDMA, in einem System, umfassend mehrere physische Hosts, wobei jeder physische Host eine Menge von Datenberechnungsknoten, DCN, hostet. Das Verfahren umfasst: in einem RDMA-Protokollstapel eines ersten physischen Hosts, Empfangen eines Pakets, umfassend eine Anfrage von einem ersten DCN, gehostet auf dem ersten physischen Host, zum RDMA-Datentransfer von einem zweiten DCN, gehostet auf einem zweiten physischen Host; und Senden einer Menge von Parametern eines Overlay-Netzwerks, verknüpft mit dem ersten DCN, von dem RDMA-Protokollstapel an einen physischen RDMA-Netzwerkschnittstellencontroller, NIC, des ersten physischen Hosts; wobei der physische RDMA-NIC das Paket mit i) einem RDMA-Datentransfer-Header und ii) einem Overlay-Netzwerk-Header unter Verwendung der Menge von Parametern des Overlay-Netzwerks einkapselt und das eingekapselte Paket unter Verwendung des Overlay-Netzwerks an den zweiten physischen Host transferiert.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einem ersten Aspekt wird ein RDMA-fähiger Netzwerkschnittstellen-Controller zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine unter Verwendung von mehreren Zuordnungstabellen vorgeschlagen. Der physische Arbeitsspeicher enthält eine Mehrzahl von physischen Arbeitsspeicherbereichen, wobei mindestens einige der physischen Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich einer virtuellen Maschine zugehörig sind, die auf der physischen Maschine ausgeführt wird. Der Netzwerkschnittstellen-Controller weist eine Zuordnungseinheit auf, die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich und einen zugehörigen physischen Arbeitsspeicherbereich zu identifizieren, virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle zuordnet, wobei die Zuordnungseinheit so konfiguriert ist, dass sie die Zuordnungstabelle aus mehreren Zuordnungstabellen auf Grundlage einer Netzwerkkennung der virtuellen Maschine auswählt, die in der Zugriffsanforderung enthalten ist, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, und eine Verarbeitungseinheit, die so konfiguriert ist, dass sie eine Zugriffsanforderung von einem Client für ein Zugreifen auf einen der physischen Arbeitsspeicherbereiche empfängt, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren, wobei die Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich bereitstellt unter Verwendung der Informationen, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
  • Gemäß einer Ausführungsform wird der Netzwerkschnittstellen-Controller in Software umgesetzt und/oder in Hardware umgesetzt.
  • Gemäß einer weiteren Ausführungsform ist die Zugriffsanforderung eine Empfangs- und/oder Sende-Zugriffsanforderung.
  • Gemäß einer weiteren Ausführungsform ist die Netzwerkkennung eine eindeutige netzwerkübergreifende Kennung.
  • Gemäß einer weiteren Ausführungsform weist der Netzwerkschnittstellen-Controller ferner eine Einheit zur Arbeitsspeicher-Registrierungsprotokollierung auf, die so konfiguriert ist, dass sie ein Arbeitsspeicher-Registrierungsprotokoll generiert, das eine Kennung des Arbeitsspeicherbereichs und einen zugehörigen virtuellen Arbeitsspeicherbereich enthält.
  • Gemäß einer weiteren Ausführungsform ist der Netzwerkschnittstellen-Controller so konfiguriert, dass er das generierte Arbeitsspeicher-Registrierungsprotokoll zu einer anderen physischen Maschine überträgt.
  • Gemäß einer weiteren Ausführungsform ist die Zuordnungseinheit so konfiguriert, dass sie eine neue Zuordnungstabelle auf Grundlage des generierten Arbeitsspeicher-Registrierungsprotokolls generiert.
  • Gemäß einer weiteren Ausführungsform ist die Zuordnungseinheit bei einem Migrieren der virtuellen Maschine von einer anderen physischen Maschine auf die physische Maschine so konfiguriert, dass sie von der anderen physischen Maschine zusammen mit Migrationsinformationen ein Arbeitsspeicher-Registrierungsprotokoll empfängt, und die Zuordnungseinheit dabei so konfiguriert ist, dass sie eine neue Zuordnungstabelle auf Grundlage des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert.
  • Gemäß einer weiteren Ausführungsform ist die Zuordnungseinheit so konfiguriert, dass sie die neue Zuordnungstabelle für die Netzwerkkennung der migrierten virtuellen Maschine unter Verwendung der Einträge des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert, um das empfangene Arbeitsspeicher-Registrierungsprotokoll zu wiederholen und für jeden Eintrag der Zuordnungstabelle den zugehörigen physischen Arbeitsspeicherbereich der anderen physischen Maschine durch den physischen Arbeitsspeicherbereich der physischen Maschine zu ersetzen.
  • Gemäß einer weiteren Ausführungsform ist die Zuordnungseinheit so konfiguriert, dass sie eine neue Zuordnungstabelle durch Hinzufügen eines Eintrags auf Grundlage des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert, wenn eine Zugriffsanforderung von einem Client empfangen wird.
  • Jede Ausführungsform des ersten Aspekts kann mit jeder Ausführungsform des ersten Aspekts kombiniert werden, um eine weitere Ausführungsform des ersten Aspekts zu erhalten.
  • Gemäß einem zweiten Aspekt wird eine physische Maschine vorgeschlagen. Die physische Maschine weist einen physischen Arbeitsspeicher, der eine Mehrzahl von physischen Arbeitsspeicherbereichen enthält, wobei mindestens eine virtuelle Maschine auf der physischen Maschine ausgeführt wird, und einen Netzwerkschnittstellen-Controller des ersten Aspekts auf. Die Mehrzahl von physischen Arbeitsspeicherbereichen der physischen Maschine wird virtuellen Arbeitsspeicherbereichen der virtuellen Maschine mithilfe eines Mechanismus zum Zuordnen von virtuellem Arbeitsspeicher zugeordnet.
  • Gemäß einem dritten Aspekt wird ein Netzwerksystem vorgeschlagen. Das Netzwerksystem weist mindestens zwei physische Maschinen des zweiten Aspekts auf. Eine virtuelle Maschine, die auf einer ersten physischen Maschine der mindestens zwei physischen Maschinen ausgeführt wird, ist so konfiguriert, dass sie von der ersten physischen Maschine auf eine zweite physische Maschine der mindestens zwei physischen Maschinen migriert werden kann.
  • Gemäß einer Ausführungsform ist der Netzwerkschnittstellen-Controller der zweiten physischen Maschine beim Migrieren der virtuellen Maschine von der ersten physischen Maschine auf die zweite physische Maschine so konfiguriert, dass er zusammen mit Informationen der virtuellen Maschine ein Arbeitsspeicher-Registrierungsprotokoll empfängt.
  • Gemäß einer weiteren Ausführungsform ist die virtuelle Maschine so konfiguriert, dass sie von der zweiten physischen Maschine auf die erste physische Maschine migriert werden kann.
  • Gemäß einem vierten Aspekt wird ein Verfahren zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine unter Verwendung von mehreren Zuordnungstabellen vorgeschlagen. Der physische Arbeitsspeicher enthält eine Mehrzahl von physischen Arbeitsspeicherbereichen, wobei mindestens einige der physischen Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich einer virtuellen Maschine zugehörig sind, die auf der physischen Maschine ausgeführt wird. Das Verfahren weist die folgenden Schritte auf: Zuordnen von Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich und einen zugehörigen physischen Arbeitsspeicherbereich zu identifizieren, zu virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle, wobei die Zuordnungstabelle aus mehreren Zuordnungstabellen auf Grundlage einer Netzwerkkennung der virtuellen Maschine ausgewählt wird, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, die eine Zugriffsanforderung von einem Client für ein Zugreifen auf einen der physischen Arbeitsspeicherbereiche empfangen, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifiziert und für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
  • Gemäß einem fünften Aspekt betrifft die Erfindung ein Computerprogramm, das einen Programmcode zum Ausführen von mindestens einem Schritt des Verfahrens des vierten Aspekts aufweist, um einen RDMA-Zugriff auf einen physischen Arbeitsspeicher einer physischen Maschine bereitzustellen, wenn er auf mindestens einem Computer ausgeführt wird.
  • Im Folgenden werden beispielhafte Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die dazugehörigen Figuren beschrieben.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines RDMA-fähigen Netzwerkschnittstellen-Controllers zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine;
    • 2 zeigt eine Ausführungsform einer virtuellen Maschine, die mit dem RDMA-fähigen Netzwerkschnittstellen-Controller von 1 interagiert;
    • 3 zeigt eine Ausführungsform der virtuellen Maschine von 2 nach einer Migration von einer physischen Maschine auf eine andere physische Maschine;
    • 4 zeigt eine Ausführungsform einer Abfolge von Verfahrensschritten zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine; und
    • 5 zeigt ein schematisches Blockschaubild einer Ausführungsform eines Systems, das zum Ausführen des Verfahrens zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine angepasst ist.
  • Ähnlichen oder funktional ähnlichen Elementen in den Figuren wurden dieselben Bezugszeichen zugewiesen, sofern dies nicht anders angegeben ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Für einen RDMA-Zugriff wird ein Arbeitsspeicherbereich durch Angabe einer Arbeitsspeicherkennung identifiziert, die einem virtuellen Adressbereich (hierin auch als virtueller Arbeitsspeicherbereich bezeichnet) und physischen Arbeitsspeicherbereichen einer physischen Maschine zugehörig ist. Die Arbeitsspeicherkennung und ihre Arbeitsspeicherzuordnungen werden vor einem RDMA-Zugriff explizit durch Ausführen einer Arbeitsspeicher-Registrierungsoperation generiert, die auch als Arbeitsspeicher-Registrierungsaufruf bezeichnet wird. Diese Zuordnungen, die Arbeitsspeicherkennungen, virtuelle Arbeitsspeicherbereiche, physische Arbeitsspeicherbereiche und für die Umsetzung spezifische Metadaten usw. enthalten, werden in einer Zuordnungstabelle in dem Netzwerkschnittstellen-Controller 10 gespeichert, der im Detail in 1 gezeigt ist.
  • Ausführungsformen, wie sie zum Beispiel in 2 und 3 gezeigt sind, beziehen sich auf eine Auslegung und ein Verfahren des hierin beschriebenen RDMA-fähigen Netzwerkschnittstellen-Controllers, der auch fähig ist, physische Arbeitsspeicherbereiche in einem Zuordnungstabelleneintrag zu aktualisieren, wobei die vorher generierte Arbeitsspeicherkennung und der zugehörige virtuelle Arbeitsspeicherbereich beibehalten werden. Diese Fähigkeit wird verwendet, um die für die RDMA-Arbeitslast sichtbaren Arbeitsspeicherdaten (d.h. Arbeitsspeicherkennung und virtueller Arbeitsspeicherbereich) in einer virtuellen Maschine beizubehalten, während die zugehörigen physischen Arbeitsspeicherbereiche während eines Migrationsprozesses einer virtuellen Maschine aktualisiert werden.
  • In einer in 2 gezeigten Ausführungsform zum Verfolgen von Arbeitsspeicher-Registrierungsprozessen wird ein Arbeitsspeicher-Registrierungsprotokoll mithilfe der Software höherer Ebene verwaltet, z.B. Betriebssystem, Treiber usw. oder den Controller selbst. Das Protokoll wird als Teil des virtuellen Maschinenzustands übertragen, der von einem alten physischen Maschinen-Host auf einen neuen physischen Maschinen-Host übertragen wird.
  • Um Konflikte von Arbeitsspeicherkennungen zu vermeiden, die auftreten, wenn die Zuordnungstabelle des RDMA-Controllers des neuen physischen Hosts bereits Einträge von Arbeitsspeicherkennungen ähnlich denen der virtuellen Maschine enthält, enthält der hierin beschriebene RDMA-Netzwerkschnittstellen-Controller mehrere Zuordnungstabellen, und die richtige Tabelle wird unter Verwendung der Netzwerkkennung (z.B. IP-Adresse) der virtuellen Maschine ausgewählt. Daher löst der hierin beschriebene Netzwerkschnittstellen-Controller RDMA-Zugriffe auf physischen Arbeitsspeicher unter Verwendung der Zuordnungstabelle, die zu einer Netzwerkkennung der virtuellen Maschine gehört.
  • Beim Migrieren der virtuellen Maschine wird die Zuordnungstabelle der virtuellen Maschine auf dem RDMA-Netzwerkschnittstellen-Controller des alten physischen Hosts gelöscht. Eine neue Zuordnungstabelle wird auf dem Netzwerkschnittstellen-Controller des neuen physischen Hosts erstellt, zum Beispiel durch Wiederholen des Arbeitsspeicher-Registrierungsprotokolls und Aktualisieren der physischen Bereiche von Zuordnungseinträgen mit den neuen physischen Arbeitsspeicherbereichen des neuen physischen Maschinen-Hosts. Dieser Mechanismus beruht auf dem Gedanken, dass eine Netzwerkkennung einer virtuellen Maschine eine netzwerkübergreifend eindeutige Kennung ist, und der RDMA-fähige Netzwerkschnittstellen-Controller in der Lage ist, ein derartiges Protokoll zu empfangen, Zuordnungstabellen zu erstellen und zu zerstören, Einträge von physischen Arbeitsspeicherbereichen zu aktualisieren und die richtige Zuordnungstabelle für ein Zugreifen unter Verwendung der Netzwerkkennung auszuwählen, die in einer RDMA-Anforderung angegeben wurde.
  • Der Netzwerkschnittstellen-Controller und Ausführungsformen davon werden im Folgenden ausführlicher unter Bezugnahme auf die Figuren beschrieben.
  • 1 zeigt einen RDMA-fähigen Netzwerkschnittstellen-Controller 10 zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine 30 unter Verwendung von mehreren Zuordnungstabellen. Der physische Arbeitsspeicher enthält eine Mehrzahl von physischen Arbeitsspeicherbereichen (in 1 ist nur ein physischer Arbeitsspeicherbereich 31 gezeigt). Einer 31 der physischen Arbeitsspeicherbereiche ist einem virtuellen Arbeitsspeicherbereich 21 einer virtuellen Maschine 20 zugehörig, die auf der physischen Maschine 30 ausgeführt wird.
  • Der Netzwerkschnittstellen-Controller 10 weist eine Verarbeitungseinheit 11, eine Zuordnungseinheit 12 und eine Einheit zur Arbeitsspeicher-Registrierungsprotokollierung 13 auf. Der Netzwerkschnittstellen-Controller 10 kann ein in Hardware umgesetzter Netzwerkschnittstellen-Controller sein, der aber auch in Software umgesetzt werden kann. Insbesondere können die jeweiligen Einheiten des Netzwerkschnittstellen-Controllers 10, z.B. die Zuordnungseinheit 12, in Hardware und/oder in Software umgesetzt werden. Wenn die Einheit in Hardware umgesetzt wird, kann sie als Einheit verkörpert werden, z.B. als Prozessor oder als Teil eines Systems, z.B. eines Computersystems. Wenn die Einheit in Software umgesetzt wird, kann sie als Computerprogrammprodukt, als Funktion, als Routine, als Programmcode oder als ausführbares Objekt verkörpert werden.
  • Während eines Arbeitsspeicher-Registrierungsaufrufs, der einer Zugriffsanforderung 1 vorausgeht, wird eine Kennung des Arbeitsspeicherbereichs, zum Beispiel ein Steering Tag oder STag, durch eine RDMA-Einheit wie dem Netzwerkschnittstellen-Controller 10 generiert. Ein STag identifiziert einen virtuellen Arbeitsspeicherbereich 21 eindeutig (durch eine virtuelle Adresse va1 und eine Länge Ien1) auf einer virtuellen Maschine 20 über einen RDMA-fähigen Netzwerkschnittstellen-Controller 10, der auch als NIC oder RNIC bezeichnet wird. Ein STag wird zum Verschlüsseln einer Basisadresse (va1) und einer Länge (Ien1) des virtuellen Arbeitsspeicherbereichs 21 verwendet, der den physischen Arbeitsspeicherbereich 31 identifiziert, der mit dem virtuellen Arbeitsspeicherbereich 21 verbunden ist, und Zugriffsberechtigungen prüft. STags sind jedoch einheitenspezifische Kennungen. Ein auf einer Einheit generiertes STag s1 wie ein RNIC ist nicht für eine andere Einheit auf einer anderen physischen Maschine 50 gültig. Somit generiert ein Zugreifen auf das STag s1 auf einem anderen RNIC auf einer anderen physischen Maschine 50 einen Fehler, da die Zuordnung für die Arbeitsspeicherbereiche auf der anderen physischen Maschine 50 nicht gültig ist. In diesem Kontext ist anzumerken, dass ein Netzwerkschnittstellen-Controller 10 einer Einheit zugehörig ist, z.B. für eine physische Maschine 30.
  • Um derartige Fehler zu vermeiden, ist der hierin beschriebene Netzwerkschnittstellen-Controller 10 in der Lage, Arbeitsspeicherzuordnungen zwischen physischen Maschinen zu übertragen, wenn eine virtuelle Maschine 20 von einer physischen Maschine 30 oder einem physischen Host auf eine andere physische Maschine 50 (siehe 3) oder einen anderen physischen Host migriert wird. Die verschiedenen Einheiten des Netzwerkschnittstellen-Controllers 10 werden im Folgenden beschrieben.
  • Die Verarbeitungseinheit 11 ist so konfiguriert, dass sie eine Zugriffsanforderung 1, die eine Empfangs- oder Sende-Anforderung sein kann, von einem Client 2 empfängt, um auf den physischen Arbeitsspeicherbereich 31 zuzugreifen, der dem virtuellen Arbeitsspeicherbereich 21 der virtuellen Maschine 20 zugehörig ist. Der Client 2 kann entfernt angeordnet sein oder sich direkt am Netzwerkschnittstellen-Controller 10 befinden. Die Zugriffsanforderung 1 enthält eine Kennung S1 des Arbeitsspeicherbereichs (siehe 2) wie beispielsweise ein Steering Tag, das den virtuellen Arbeitsspeicherbereich 21 und den zugehörigen physischen Arbeitsspeicherbereich 31 identifiziert. Diese Identifizierung kann explizit oder implizit sein. Dies bedeutet, dass die Kennung S1 des Arbeitsspeicherbereichs entweder einen direkten Bezug zu dem virtuellen Arbeitsspeicherbereich 21 oder dem physischen Arbeitsspeicherbereich 31 oder beiden haben kann. In jedem Fall identifiziert die Kennung S1 des Arbeitsspeicherbereichs beide Bereiche entweder direkt oder über den jeweiligen anderen Arbeitsspeicherbereich.
  • Die Zuordnungseinheit 12 ist so konfiguriert, dass sie die Kennung S1 des Arbeitsspeicherbereichs dem virtuellen Arbeitsspeicherbereich 21 und dem zugehörigen physischen Arbeitsspeicherbereich 31 auf Grundlage einer Zuordnungstabelle 41 zuordnet. Die Zuordnungseinheit 12 wählt die Zuordnungstabelle 41 aus mehreren Zuordnungstabellen 40 auf Grundlage einer Netzwerkkennung IP der virtuellen Maschine 20. Die Netzwerkkennung IP ist eine eindeutige netzwerkübergreifende Kennung zum Identifizieren der virtuellen Maschine 20. Dies kann zum Beispiel eine IP-Adresse, eine globale Kennung, eine MAC-Adresse oder jede andere Kennung sein.
  • Es ist anzumerken, dass eine virtuelle Maschine 20 eine Mehrzahl von Netzwerkkennungen IP haben kann. In einem derartigen Fall kann der Netzwerkschnittstellen-Controller 10 eine Zuordnungstabelle für jede der Netzwerkkennungen haben, wobei jede Zuordnungstabelle derselben virtuellen Maschine identische Einträge enthält.
  • Wenn die Netzwerkkennung IP der virtuellen Maschine 20 geändert wird, würde dieselbe Zuordnungstabelle wie vorher gewählt werden, jedoch auf Grundlage der neuen Netzwerkkennung IP. Zum Auswählen derselben Zuordnungstabelle auf Grundlage der neuen Netzwerkkennung IP können Metadaten, die zum Auswählen der Zuordnungstabelle verwendet werden, in dem Netzwerkschnittstellen-Controller 10 entsprechend aktualisiert werden.
  • Die Netzwerkkennung IP ist in der Zugriffsanforderung 1 enthalten. Eine der Zuordnungstabellen 40 wird auf Grundlage der Netzwerkkennung IP ausgewählt. Jede der Zuordnungstabellen 40 ist unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert, wobei jede der Kennungen der Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich 21 und einem physischen Arbeitsspeicherbereich 31 zugehörig ist.
  • Nach dem Zuordnen stellt die Verarbeitungseinheit 11 für den Client 2 Zugriff 3 auf den virtuellen Arbeitsspeicherbereich 21 und den zugehörigen physischen Arbeitsspeicherbereich 31 unter Verwendung der Informationen bereit, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
  • Die Migration der virtuellen Maschine 20 von einer physischen Maschine 30 auf eine andere virtuelle Maschine 40 sowie die Generierung der Zuordnungstabellen 40 wird unter Bezugnahme auf 2 und 3 beschrieben.
  • Die virtuelle Maschine 20, die auf der physischen Maschine 30 ausgeführt wird, besitzt einen virtuellen Arbeitsspeicherbereich 21, der auch als Anwendungspufferspeicher bezeichnet wird, der dem physischen Arbeitsspeicherbereich 31 zugehörig ist. Auf der virtuellen Maschine 20 wird ein Betriebssystem 22 (OS) ausgeführt. Ferner wird ein Hypervisor 23 bereitgestellt, der als Schicht zwischen der virtuellen Maschine 20 und der physischen Maschine 30 dient. Ein Netzwerkschnittstellen-Controller 10 wird zum Verarbeiten von Zugriffsanforderungen 1 von Clients 2 bereitgestellt.
  • Wenn ein Client 2 auf den virtuellen Arbeitsspeicherbereich 21 zugreifen möchte, wird ein Arbeitsspeicher-Registrierungsaufruf als Vorbereitung für die Zugriffsanforderung 1 generiert. Derartige Arbeitsspeicher-Registrierungsaufrufe werden in einem Arbeitsspeicher-Registrierungsprotokoll 44 protokolliert. Diese Protokollierung erfolgt in der Einheit für Arbeitsspeicher-Registrierungsprotokollierung 13. Jeder Arbeitsspeicher-Registrierungsaufruf fügt einen Eintrag zu dem Arbeitsspeicher-Registrierungsprotokoll 44 hinzu. Ein Eintrag enthält eine Kennung S1 des Arbeitsspeicherbereichs und einen zugehörigen virtuellen Arbeitsspeicherbereich 21, der zum Beispiel durch die Adresse va1 und die Länge len1 angegeben wird. Außerdem können Aufrufe zur Aufhebung der Registrierung verwendet werden, um Einträge aus dem Arbeitsspeicher-Registrierungsprotokoll 44 zu entfernen.
  • Der Netzwerkschnittstellen-Controller 10 kann die Einheit für Arbeitsspeicher-Registrierungsprotokollierung 13 entweder direkt als in Hardware oder Software umgesetzte Einheit aufweisen. Oder die Einheit für Arbeitsspeicher-Registrierungsprotokollierung 13 kann als Teil des Treibers des RDMA-Netzwerkschnittstellen-Controllers 10 umgesetzt werden.
  • Der Netzwerkschnittstellen-Controller 10 empfängt die Zugriffsanforderung 1 und wählt eine Zuordnungstabelle 41 aus den vielen Zuordnungstabellen 40. Dies erfolgt unter Verwendung der IP der virtuellen Maschine 20, die in der Zugriffsanforderung 1 enthalten ist. Danach kann die Zuordnung des virtuellen Arbeitsspeicherbereichs 21 zum physischen Arbeitsspeicherbereich 31 unter Verwendung der Kennung S1 des Arbeitsspeicherbereichs, die in der Zugriffsanforderung 1 enthalten ist, wie oben beschrieben unter Verwendung der korrekt ausgewählten Zuordnungstabelle 41 ausgeführt werden.
  • Die Kennung S1 des Arbeitsspeicherbereichs kann an alle im Netzwerk vorhandenen Clients weitergeleitet werden.
  • Wenn die virtuelle Maschine 20 jedoch von der physischen Maschine 30 auf die physische Maschine 50 migriert wird 4, bleiben die virtuelle Adresse und die Länge der virtuellen Maschine 20, aber der zugrunde liegende physische Arbeitsspeicherbereich 51 ist verschieden. Da der Netzwerkschnittstellen-Controller 10 (jeder physischen Maschine 30, 50 ist ein separater Netzwerkschnittstellen-Controller 10 zugewiesen) jedoch eine Zuordnungstabelle 40 auf Grundlage der entsprechenden IP-Adresse der virtuellen Maschine 20 auswählt, wird die von dem Client 2 verwendete Kennung S1 des Arbeitsspeicherbereichs dem neuen physischen Arbeitsspeicherbereich 51 zugeordnet.
  • Wenn die virtuelle Maschine 20 migriert wird, empfängt die Zuordnungseinheit 12 das Arbeitsspeicher-Registrierungsprotokoll 44 von der vorherigen physischen Maschine 30 zusammen mit Migrationsinformationen. Auf Grundlage des Arbeitsspeicher-Registrierungsprotokolls 44 generiert die Zuordnungseinheit 12 eine neue Zuordnungstabelle 52, die den mehreren Zuordnungstabellen 40 hinzugefügt wird.
  • Die neue Zuordnungstabelle 52 kann unter Verwendung der Einträge des empfangenen Arbeitsspeicher-Registrierungsprotokolls 44 generiert werden, indem das empfangene Arbeitsspeicher-Registrierungsprotokoll 44 wiederholt wird, und indem für jeden Eintrag der Zuordnungstabelle 41 der zugehörige physische Arbeitsspeicherbereich 31 der anderen physischen Maschine 30 durch den physischen Arbeitsspeicherbereich 51 der physischen Maschine 50 ersetzt wird. In den Zuordnungstabellen 40 wird der physische Arbeitsspeicherbereich 31 als pa1 bezeichnet, und der physische Arbeitsspeicherbereich 51 wird als pa2 bezeichnet.
  • In einer weiteren Ausführungsform generiert die Zuordnungseinheit 12 neue Einträge für die neue Zuordnungstabelle 52 nur dann, wenn eine Zugriffsanforderung 1 von einem Client 2 empfangen wird.
  • 4 zeigt eine Ausführungsform einer Abfolge von Verfahrensschritten zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine. Das Verfahren von 4 weist die folgenden Schritte 401 bis 403 auf.
  • In Schritt 401 werden Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich und einen zugehörigen physischen Arbeitsspeicherbereich zu identifizieren, virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle zugeordnet. Die Zuordnungstabelle wird aus mehreren Zuordnungstabellen auf Grundlage einer Netzwerkkennung der virtuellen Maschine ausgewählt, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist.
  • In Schritt 402 wird eine Zugriffsanforderung von einem Client für ein Zugreifen auf einen der physischen Arbeitsspeicherbereiche empfangen, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist. Die Zugriffsanforderung enthält eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren.
  • In Schritt 403 wird für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitgestellt, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
  • Es ist anzumerken, dass die Reihenfolge der Schritte abweichen kann und auch in anderer Reihenfolge ausgeführt werden kann.
  • Computerisierte Einheiten können in geeigneter Weise zum Umsetzen von Ausführungsformen der vorliegenden Erfindung, wie hierin beschrieben, ausgelegt sein. Insofern dürfte klar sein, dass das hierin beschriebene Verfahren größtenteils nicht-interaktiv und automatisiert ist. In beispielhaften Ausführungsformen kann das hierin beschriebene Verfahren entweder in einem interaktiven, einem teilweise interaktiven oder einem nicht-interaktiven System umgesetzt werden. Das hierin beschriebene Verfahren kann in Software (z.B. Firmware), Hardware oder einer Kombination davon umgesetzt werden. In beispielhaften Ausführungsformen werden die hierin beschriebenen Verfahren in Software als ausführbares Programm umgesetzt, wobei Letzteres durch geeignete digitale Verarbeitungseinheiten ausgeführt wird. In weiteren beispielhaften Ausführungsformen kann mindestens ein Schritt oder können alle Schritte des vorgenannten Verfahrens von 4 in Software als ausführbares Programm umgesetzt werden, wobei Letzteres durch geeignete digitale Verarbeitungseinheiten ausgeführt wird. Allgemeiner ausgedrückt können Ausführungsformen der vorliegenden Erfindung umgesetzt werden, wobei digitale Mehrzweckcomputer, Workstations usw. verwendet werden.
  • Zum Beispiel stellt ein System 500, das in 5 dargestellt ist, schematisch eine computerisierte Einheit 501 dar, z.B. einen Mehrzweckcomputer. In beispielhaften Ausführungsformen enthält eine Einheit 501 in Bezug auf Hardware-Architektur, wie in 5 gezeigt, einen Prozessor 505, einen Arbeitsspeicher 510, der mit einem Arbeitsspeicher-Controller 515 verbunden ist, und eine oder mehreren Eingabe- und/oder Ausgabe- (E/A) Einheiten 540, 545, 550, 555 (oder Peripherie-Einheiten), die in Datenaustauschverbindung über einen lokalen Eingabe/Ausgabe-Controller 535 verbunden sind. Ferner kann der Eingabe/Ausgabe-Controller 535 ein oder mehrere Busse oder verkabelte oder drahtlose Verbindungen sein, wie im Fachgebiet bekannt ist, er ist aber nicht darauf beschränkt. Der Eingabe/Ausgabe-Controller 535 kann zum Ermöglichen von Datenaustausch zusätzliche Elemente aufweisen, die der Einfachheit halber weggelassen wurden, wie beispielsweise Controller. Pufferspeicher (Cachespeicher), Treiber, Repeater (Wiederholelemente) und Empfänger. Ferner kann die lokale Schnittstelle Adress-, Kontroll- und/oder Datenverbindungen enthalten, um entsprechende Datenübertragungen zwischen den vorher genannten Komponenten zu ermöglichen.
  • Der Prozessor 505 ist eine Hardware-Einheit zum Ausführen von Software, insbesondere von derjenigen, die im Arbeitsspeicher 510 gespeichert ist. Der Prozessor 505 kann jeder kundenspezifisch gefertigte oder im Handel erhältliche Prozessor, eine Zentraleinheit (CPU), ein Hilfsprozessor unter mehreren dem Computer 501 zugehörigen Prozessoren, ein Mikroprozessor auf Halbleitergrundlage (in Form eines Mikrochips oder eines Chip-Satzes) oder allgemein jede Einheit zum Ausführen von Software-Anweisungen sein.
  • Der Arbeitsspeicher 510 kann irgendeines oder eine Kombination von flüchtigen Arbeitsspeicherelementen (z.B. Direktzugriffspeicher) und nicht-flüchtigen Arbeitsspeicherelementen enthalten. Des Weiteren kann der Arbeitsspeicher 510 elektronische, magnetische, optische und/oder andere Typen von Speichermedien enthalten. Zu beachten ist, dass der Arbeitsspeicher 510 eine verteilte Architektur haben kann, in der verschiedene Komponenten voneinander entfernt angeordnet sein können, auf die aber vom Prozessor 505 aus zugegriffen werden kann.
  • Die Software im Arbeitsspeicher 510 kann ein oder mehrere separate Programme enthalten, von denen jedes eine der Reihenfolge nach geordnete Auflistung von ausführbaren Anweisungen zum Umsetzen logischer Funktionen aufweist. In dem Beispiel von 5 enthält die Software im Arbeitsspeicher 510 das hierin beschriebene Verfahren gemäß beispielhaften Ausführungsformen und ein geeignetes Betriebssystem (OS) 511. Das Betriebssystem 511 steuert im Wesentlichen die Ausführung von anderen Computerprogrammen, wie beispielsweise das Verfahren wie hierin beschrieben (z.B. 4), und stellt Planung, Eingabe/Ausgabe-Steuerung, Datei- und Datenverwaltung, Arbeitsspeicherverwaltung sowie Datenübertragungssteuerung und zugehörige Dienste bereit.
  • Das hierin beschriebene Verfahren kann in Form eines Quellprogramms, eines ausführbaren Programms (Objektcode), Skripts oder jeder anderen Entität vorliegen, die einen Satz von Computerprogrammanweisungen aufweist, die ausgeführt werden sollen. Wenn das Programm in Form eines Quellprogramms vorliegt, muss das Programm über einen Compiler, Assembler, Interpreter oder dergleichen übersetzt werden, die per se bekannt sind und in dem Arbeitsspeicher 510 enthalten sein können, um in Verbindung mit dem Betriebssystem 511 einwandfrei zu arbeiten. Ferner kann das Verfahren in einer objektorientierten Programmiersprache, die Klassen von Daten und Verfahren aufweist, oder in einer prozeduralen Programmiersprache geschrieben werden, die Routinen, Unterroutinen und/oder Funktionen aufweist.
  • Möglicherweise können eine herkömmliche Tastatur 550 und eine Maus 555 mit dem Eingabe/Ausgabe-Controller 535 verbunden werden. Andere E/A-Einheiten 540 bis 555 können Sensoren enthalten (insbesondere im Fall von Netzwerkelementen), d.h. Hardware-Einheiten, die eine messbare Reaktion auf eine Änderung eines physischen Zustands wie Temperatur oder Druck (zu überwachende physische Daten) erzeugen. Typischerweise wird das analoge Signal, das von den Sensoren erzeugt wird, durch einen Analog-Digital-Wandler digitalisiert und zur weiteren Verarbeitung an die Controller 535 gesendet. Sensorknoten sind idealerweise klein, verbrauchen wenig Energie, sind autonom und arbeiten unbeaufsichtigt.
  • Außerdem können die E/A-Einheiten 540 bis 555 des Weiteren Einheiten enthalten, die sowohl über Eingänge als auch Ausgänge in Datenaustauschverbindung stehen. Das System 500 kann ferner einen Anzeige-Controller 525 enthalten, der mit einer Anzeige 530 verbunden ist. In beispielhaften Ausführungsformen kann das System 500 ferner eine Netzwerkschnittstelle oder einen Sender/Empfänger 560 zum Verbinden mit einem Netzwerk 565 enthalten.
  • Das Netzwerk 565 sendet und empfängt Daten zwischen der Einheit 501 und externen Systemen. Das Netzwerk 565 wird möglicherweise drahtlos umgesetzt, z.B. unter Verwendung von drahtlosen Protokollen und Technologien wie WLAN, WiMax usw. Das Netzwerk 565 kann ein festes drahtloses Netzwerk, ein drahtloses lokales Netzwerk (LAN), ein drahtloses Weitverkehrsnetz (WAN), ein Personal Area Network (PAN), ein virtuelles privates Netzwerk (VPN), ein Intranet oder ein anderes geeignetes Netzwerksystem sein und enthält Ausrüstung zum Empfangen und Senden von Signalen.
  • Das Netzwerk 565 kann auch ein Netzwerk auf IP-Grundlage für den Datenaustausch zwischen der Einheit 501 und jedem externen Server, Client und dergleichen über eine Breitbandverbindung sein. In beispielhaften Ausführungsformen kann das Netzwerk 565 ein verwaltetes IP-Netzwerk sein, das durch einen Dienstanbieter verwaltet wird. Davon abgesehen kann das Netzwerk 565 ein Paketvermittlungsnetzwerk sein wie beispielsweise ein LAN, WAN, ein Internet-Netzwerk usw.
  • Wenn die Einheit 501 ein PC, eine Workstation, eine intelligente Einheit oder dergleichen ist, kann die Software in dem Arbeitsspeicher 510 ferner ein grundlegendes Eingabe/Ausgabe-System (BIOS) enthalten. Das BIOS ist in einem ROM gespeichert, sodass das BIOS beim Aktivieren des Computers 501 ausgeführt werden kann.
  • Wenn die Einheit 501 in Betrieb ist, ist der Prozessor 505 so konfiguriert, dass er die Software ausführt, die in dem Arbeitsspeicher 510 gespeichert ist, Daten zu und von dem Arbeitsspeicher 510 überträgt und allgemein Operationen des Computers 501 entsprechend der Software steuert. Das hierin beschriebene Verfahren und das Betriebssystem 511 werden ganz oder in Teilen von dem Prozessor 505 gelesen, typischerweise in dem Prozessor 505 zwischengespeichert und anschließend ausgeführt. Wenn das hierin beschriebene Verfahren (z.B. unter Bezugnahme auf 4) in Software umgesetzt wird, kann das Verfahren auf jedem computerlesbaren Medium, wie beispielsweise einem Speicher 520, zur Verwendung durch oder in Verbindung mit jedem einem Computer zugehörigen System oder Verfahren gespeichert werden
  • Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischer Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
  • Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur- (Instruction Set Architecture) (ISA) Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder anderer Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen/ Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichungen der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichungen der Ablaufpläne durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
  • Bezugszeichenliste
  • 1
    Zugriffsanforderung
    2
    Client
    3
    Zugriff
    4
    Benachrichtigung
    5
    Migration
    10
    Netzwerkschnittstellen-Controller
    11
    Verarbeitungseinheit
    12
    Zuordnungseinheit
    13
    Einheit zur Arbeitsspeicher-Registrierungsprotokollierung
    20
    Virtuelle Maschine
    21
    Virtueller Arbeitsspeicherbereich
    22
    Betriebssystem (OS)
    23
    Hypervisor
    30
    Physische Maschine
    31
    Physischer Arbeitsspeicherbereich
    40
    Mehrere Zuordnungstabellen
    41, 42, 43
    Zuordnungstabellen
    44
    Arbeitsspeicher-Registrierungsprotokoll
    50
    Physische Maschine
    51
    Physischer Arbeitsspeicherbereich
    401 bis 404
    Verfahrensschritte
    500
    System
    501
    Computerisierte Einheit
    505
    Prozessor
    510
    Arbeitsspeicher
    511
    Betriebssystem (OS)
    515
    Arbeitsspeicher-Controller
    520
    Speicher
    525
    Anzeige-Controller
    540
    Anzeige
    545, 550, 555
    Eingabe- und/oder Ausgabe- (E/A) Einheiten
    535
    Lokaler Eingabe/Ausgabe-Controller
    550
    Tastatur
    555
    Maus
    560
    Netzwerkschnittstelle oder Sender/Empfänger
    565
    Netzwerk

Claims (15)

  1. RDMA-fähiger Netzwerkschnittstellen-Controller (10) zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine (30; 50) unter Verwendung von mehreren Zuordnungstabellen (40), wobei der physische Arbeitsspeicher eine Mehrzahl von physischen Arbeitsspeicherbereichen (31; 51) enthält, wobei mindestens einige der physischen Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich (21) einer virtuellen Maschine (20) zugehörig sind, die auf der physischen Maschine ausgeführt wird, wobei der Netzwerkschnittstellen-Controller (10) aufweist: eine Zuordnungseinheit (12), die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen physischen Arbeitsspeicherbereich (31) zu identifizieren, virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle (41, 42, 43) zuordnet, wobei die Zuordnungseinheit so konfiguriert ist, dass sie die Zuordnungstabelle aus mehreren Zuordnungstabellen (40) auf Grundlage einer Netzwerkkennung der virtuellen Maschine auswählt, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, und eine Verarbeitungseinheit (11), die so konfiguriert ist, dass sie eine Zugriffsanforderung (1) von einem Client (2) für ein Zugreifen (3) auf einen der physischen Arbeitsspeicherbereiche empfängt, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung (1) eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren, wobei die Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
  2. Netzwerkschnittstellen-Controller nach Anspruch 1, wobei der Netzwerkschnittstellen-Controller in Software umgesetzt wird und/oder in Hardware umgesetzt wird.
  3. Netzwerkschnittstellen-Controller nach Anspruch 1, wobei die Zugriffsanforderung eine Empfangs- und/oder Sende-Zugriffsanforderung ist.
  4. Netzwerkschnittstellen-Controller nach Anspruch 1, wobei die Netzwerkkennung eine eindeutige netzwerkübergreifende Kennung ist.
  5. Netzwerkschnittstellen-Controller nach Anspruch 1, ferner aufweisend eine Einheit zur Arbeitsspeicher-Registrierungsprotokollierung (13), die so konfiguriert ist, dass sie ein Arbeitsspeicher-Registrierungsprotokoll (44) generiert, das eine Kennung des Arbeitsspeicherbereichs und einen zugehörigen virtuellen Arbeitsspeicherbereich enthält.
  6. Netzwerkschnittstellen-Controller nach Anspruch 5, wobei der Netzwerkschnittstellen-Controller so konfiguriert, dass er das generierte Arbeitsspeicher-Registrierungsprotokoll zu einer anderen physischen Maschine überträgt.
  7. Netzwerkschnittstellen-Controller nach Anspruch 5, wobei die Zuordnungseinheit so konfiguriert, dass sie eine neue Zuordnungstabelle (52) auf Grundlage des generierten Arbeitsspeicher-Registrierungsprotokolls generiert.
  8. Netzwerkschnittstellen-Controller nach Anspruch 7, wobei die Zuordnungseinheit bei einem Migrieren der virtuellen Maschine von einer anderen physischen Maschine auf die physische Maschine so konfiguriert ist, dass sie von der anderen physischen Maschine ein Arbeitsspeicher-Registrierungsprotokoll zusammen mit Migrationsinformationen empfängt, und wobei die Zuordnungseinheit so konfiguriert ist, dass sie eine neue Zuordnungstabelle auf Grundlage des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert.
  9. Netzwerkschnittstellen-Controller nach Anspruch 8, wobei die Zuordnungseinheit so konfiguriert ist, dass sie die neue Zuordnungstabelle für die Netzwerkkennung der migrierten virtuellen Maschine unter Verwendung der Einträge des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert, um das empfangene Arbeitsspeicher-Registrierungsprotokoll zu wiederholen und für jeden Eintrag der Zuordnungstabelle den zugehörigen physischen Arbeitsspeicherbereich der anderen physischen Maschine durch den physischen Arbeitsspeicherbereich der physischen Maschine zu ersetzen.
  10. Netzwerkschnittstellen-Controller nach Anspruch 8, wobei die Zuordnungseinheit so konfiguriert ist, dass sie eine neue Zuordnungstabelle durch Hinzufügen eines Eintrags auf Grundlage des empfangenen Arbeitsspeicher-Registrierungsprotokolls generiert, wenn eine Zugriffsanforderung von einem Client empfangen wird.
  11. Physische Maschine (30; 50), aufweisend: einen physischen Arbeitsspeicher, der eine Mehrzahl von physischen Arbeitsspeicherbereichen (31; 51) enthält, wobei mindestens eine virtuelle Maschine auf der physischen Maschine ausgeführt wird, und einen RDMA-fähigen Netzwerkschnittstellen-Controller (10) zum Bereitstellen eines RDMA-Zugriffs auf den physischen Arbeitsspeicher der physischen Maschine unter Verwendung von mehreren Zuordnungstabellen (40), wobei mindestens einige der physischen Arbeitsspeicherbereiche (31; 51) einem virtuellen Arbeitsspeicherbereich (21) einer virtuellen Maschine (20) zugehörig sind, die auf der physischen Maschine ausgeführt wird, wobei der Netzwerkschnittstellen-Controller wiederum aufweist: eine Zuordnungseinheit (12), die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen physischen Arbeitsspeicherbereich (31) zu identifizieren, virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle (41, 42, 43) zuordnet, wobei die Zuordnungseinheit so konfiguriert ist, dass sie die Zuordnungstabelle aus mehreren Zuordnungstabellen (40) auf Grundlage einer Netzwerkkennung der virtuellen Maschine auswählt, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, und eine Verarbeitungseinheit (11), die so konfiguriert ist, dass sie eine Zugriffsanforderung (1) von einem Client (2) für ein Zugreifen (3) auf einen der physischen Arbeitsspeicherbereiche empfängt, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren, wobei die Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs; wobei die Mehrzahl von physischen Arbeitsspeicherbereichen der physischen Maschine virtuellen Arbeitsspeicherbereichen der virtuellen Maschine mithilfe eines Mechanismus zum Zuordnen von virtuellem Arbeitsspeicher zugeordnet wird.
  12. Netzwerksystem, aufweisend: eine erste physische Maschine (30), die wiederum aufweist: einen ersten physischen Arbeitsspeicher, der eine Mehrzahl von ersten physischen Arbeitsspeicherbereichen (31) enthält, mindestens eine erste virtuelle Maschine (20), die auf der ersten physischen Maschine ausgeführt wird, und einen ersten RDMA-fähigen Netzwerkschnittstellen-Controller (10) zum Bereitstellen eines RDMA-Zugriffs auf den ersten physischen Arbeitsspeicher der ersten physischen Maschine unter Verwendung von mehreren ersten Zuordnungstabellen (40), wobei mindestens einige der ersten physischen Arbeitsspeicherbereiche einem ersten virtuellen Arbeitsspeicherbereich einer ersten virtuellen Maschine zugehörig sind, die auf der ersten physischen Maschine ausgeführt wird, wobei der erste Netzwerkschnittstellen-Controller wiederum aufweist: eine erste Zuordnungseinheit (12), die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen ersten virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen ersten physischen Arbeitsspeicherbereich (31) zu identifizieren, ersten virtuellen Arbeitsspeicherbereichen und den zugehörigen ersten physischen Arbeitsspeicherbereichen auf Grundlage einer ersten Zuordnungstabelle (41, 42, 43) zuordnet, wobei die erste Zuordnungseinheit so konfiguriert ist, dass sie die erste Zuordnungstabelle aus mehreren ersten Zuordnungstabellen (40) auf Grundlage einer ersten Netzwerkkennung der ersten virtuellen Maschine auswählt, wobei jede der ersten Zuordnungstabellen unter Verwendung einer Mehrzahl von ersten Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von ersten Kennungen der Arbeitsspeicherbereiche einem der ersten virtuellen Arbeitsspeicherbereiche und einem der ersten physischen Arbeitsspeicherbereiche zugehörig ist, und eine erste Verarbeitungseinheit (11), die so konfiguriert ist, dass sie eine erste Zugriffsanforderung (1) von einem ersten Client (2) für ein Zugreifen (3) auf einen der ersten physischen Arbeitsspeicherbereiche empfängt, der einem der ersten virtuellen Arbeitsspeicherbereiche der ersten virtuellen Maschine zugehörig ist, wobei die erste Zugriffsanforderung eine von der Mehrzahl von ersten Kennungen der Arbeitsspeicherbereiche enthält, die den ersten virtuellen Arbeitsspeicherbereich und den zugehörigen ersten physischen Arbeitsspeicherbereich identifizieren, wobei die erste Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den ersten virtuellen Arbeitsspeicherbereich und den zugehörigen ersten physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der ausgewählten ersten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen ersten Kennung des Arbeitsspeicherbereichs; wobei die Mehrzahl von ersten physischen Arbeitsspeicherbereichen der ersten physischen Maschine ersten virtuellen Arbeitsspeicherbereichen der ersten virtuellen Maschine mithilfe eines Mechanismus zum Zuordnen von erstem virtuellen Arbeitsspeicher zugeordnet wird; eine zweite physische Maschine (50), die wiederum aufweist: einen zweiten physischen Arbeitsspeicher, der eine Mehrzahl von zweiten physischen Arbeitsspeicherbereichen (51) enthält, mindestens eine zweite virtuelle Maschine (20), die auf der zweiten physischen Maschine ausgeführt wird, und einen zweiten RDMA-fähigen Netzwerkschnittstellen-Controller (10) zum Bereitstellen eines RDMA-Zugriffs auf den zweiten physischen Arbeitsspeicher der zweiten physischen Maschine unter Verwendung von mehreren zweiten Zuordnungstabellen (40), wobei mindestens einige der zweiten physischen Arbeitsspeicherbereiche einem zweiten virtuellen Arbeitsspeicherbereich einer zweiten virtuellen Maschine zugehörig sind, die auf der zweiten physischen Maschine ausgeführt wird, wobei der zweite Netzwerkschnittstellen-Controller wiederum aufweist: eine zweite Zuordnungseinheit (12), die so konfiguriert ist, dass sie Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen zweiten virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen zweiten physischen Arbeitsspeicherbereich (51) zu identifizieren, zweiten virtuellen Arbeitsspeicherbereichen und den zugehörigen zweiten physischen Arbeitsspeicherbereichen auf Grundlage einer zweiten Zuordnungstabelle (52) zuordnet, wobei die zweite Zuordnungseinheit so konfiguriert ist, dass sie die zweite Zuordnungstabelle aus mehreren zweiten Zuordnungstabellen (40) auf Grundlage einer zweiten Netzwerkkennung der zweiten virtuellen Maschine auswählt, wobei jede der zweiten Zuordnungstabellen unter Verwendung einer Mehrzahl von zweiten Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von zweiten Kennungen der Arbeitsspeicherbereiche einem der zweiten virtuellen Arbeitsspeicherbereiche und einem der zweiten physischen Arbeitsspeicherbereiche zugehörig ist, und eine zweite Verarbeitungseinheit (11), die so konfiguriert ist, dass sie eine zweite Zugriffsanforderung (1) von einem zweiten Client (2) für ein Zugreifen (3) auf einen der zweiten physischen Arbeitsspeicherbereiche empfängt, der einem der zweiten virtuellen Arbeitsspeicherbereiche der zweiten virtuellen Maschine zugehörig ist, wobei die zweite Zugriffsanforderung eine von der Mehrzahl von zweiten Kennungen der Arbeitsspeicherbereiche enthält, die den zweiten virtuellen Arbeitsspeicherbereich und den zugehörigen zweiten physischen Arbeitsspeicherbereich identifizieren, wobei die zweite Verarbeitungseinheit ferner so konfiguriert ist, dass sie für den Client Zugriff auf den zweiten virtuellen Arbeitsspeicherbereich und den zugehörigen zweiten physischen Arbeitsspeicherbereich unter Verwendung der Informationen bereitstellt, die in der zweiten ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen zweiten Kennung des Arbeitsspeicherbereichs; wobei die Mehrzahl von zweiten physischen Arbeitsspeicherbereichen der zweiten physischen Maschine zweiten virtuellen Arbeitsspeicherbereichen der zweiten virtuellen Maschine mithilfe eines Mechanismus zum Zuordnen von zweitem virtuellen Arbeitsspeicher zugeordnet wird; wobei eine virtuelle Maschine, die auf einer der ersten oder der zweiten physischen Maschinen ausgeführt wird, so konfiguriert ist, dass sie von einer der ersten und der zweiten physischen Maschinen auf eine andere der ersten und der zweiten physischen Maschinen migriert (5) werden kann.
  13. Netzwerksystem nach Anspruch 12, wobei, wenn die virtuelle Maschine, die auf einer der ersten oder der zweiten physischen Maschinen ausgeführt wird, von der einen der ersten und der zweiten physischen Maschinen auf eine andere der ersten und der zweiten physischen Maschinen migriert wird, der Netzwerkschnittstellen-Controller der anderen einen der ersten und zweiten physischen Maschinen so konfiguriert ist, dass er zusammen mit Informationen der virtuellen Maschine ein Arbeitsspeicher-Registrierungsprotokoll empfängt.
  14. Netzwerksystem nach Anspruch 12, wobei die virtuelle Maschine, die auf einer der ersten oder der zweiten physischen Maschinen ausgeführt wird, ferner so konfiguriert ist, dass sie von der anderen einen der ersten und der zweiten physischen Maschinen auf die eine der ersten und der zweiten physischen Maschinen migriert werden kann.
  15. Verfahren zum Bereitstellen eines RDMA-Zugriffs auf einen physischen Arbeitsspeicher einer physischen Maschine (30; 50) unter Verwendung von mehreren Zuordnungstabellen (40), wobei der physische Arbeitsspeicher eine Mehrzahl von physischen Arbeitsspeicherbereichen (31; 51) enthält, wobei mindestens einige der physischen Arbeitsspeicherbereiche einem virtuellen Arbeitsspeicherbereich (21) einer virtuellen Maschine (20) zugehörig sind, die auf der physischen Maschine ausgeführt wird, wobei das Verfahren aufweist: Zuordnen (401) von Kennungen der Arbeitsspeicherbereiche, von denen jede angepasst ist, um einen virtuellen Arbeitsspeicherbereich (21) und einen zugehörigen physischen Arbeitsspeicherbereich (31) zu identifizieren, zu virtuellen Arbeitsspeicherbereichen und den zugehörigen physischen Arbeitsspeicherbereichen auf Grundlage einer Zuordnungstabelle (41, 42, 43), wobei die Zuordnungstabelle aus mehreren Zuordnungstabellen (40) auf Grundlage einer Netzwerkkennung der virtuellen Maschine ausgewählt wird, wobei jede der Zuordnungstabellen unter Verwendung einer Mehrzahl von Kennungen der Arbeitsspeicherbereiche indexiert ist, wobei jede der Mehrzahl von Kennungen der Arbeitsspeicherbereiche einem der virtuellen Arbeitsspeicherbereiche und einem der physischen Arbeitsspeicherbereiche zugehörig ist, Empfangen (402) einer Zugriffsanforderung (1) von einem Client (2) für ein Zugreifen (3) auf einen der physischen Arbeitsspeicherbereiche, der einem der virtuellen Arbeitsspeicherbereiche der virtuellen Maschine zugehörig ist, wobei die Zugriffsanforderung eine von der Mehrzahl von Kennungen der Arbeitsspeicherbereiche enthält, die den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich identifizieren, und Bereitstellen (403) von Zugriff auf den virtuellen Arbeitsspeicherbereich und den zugehörigen physischen Arbeitsspeicherbereich für den Client unter Verwendung der Informationen, die in der ausgewählten Zuordnungstabelle enthalten sind, und unter Verwendung der empfangenen Kennung des Arbeitsspeicherbereichs.
DE102016204030.8A 2015-03-13 2016-03-11 Controller, Maschine, System und Verfahren zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine Active DE102016204030B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/657,015 US9904627B2 (en) 2015-03-13 2015-03-13 Controller and method for migrating RDMA memory mappings of a virtual machine
US14/657,015 2015-03-13
US14/948,306 2015-11-21
US14/948,306 US10055381B2 (en) 2015-03-13 2015-11-21 Controller and method for migrating RDMA memory mappings of a virtual machine

Publications (2)

Publication Number Publication Date
DE102016204030A1 DE102016204030A1 (de) 2016-09-15
DE102016204030B4 true DE102016204030B4 (de) 2022-10-27

Family

ID=56801295

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016204030.8A Active DE102016204030B4 (de) 2015-03-13 2016-03-11 Controller, Maschine, System und Verfahren zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine

Country Status (2)

Country Link
US (1) US10055381B2 (de)
DE (1) DE102016204030B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10657095B2 (en) * 2017-09-14 2020-05-19 Vmware, Inc. Virtualizing connection management for virtual remote direct memory access (RDMA) devices
US10521360B1 (en) * 2017-10-18 2019-12-31 Google Llc Combined integrity protection, encryption and authentication
US10402589B1 (en) * 2018-12-20 2019-09-03 Vijay K. Madisetti Method and system for securing cloud storage and databases from insider threats and optimizing performance
US11469890B2 (en) 2020-02-06 2022-10-11 Google Llc Derived keys for connectionless network protocols

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565454B2 (en) 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US20130061047A1 (en) 2011-09-07 2013-03-07 Microsoft Corporation Secure and efficient offloading of network policies to network interface cards
US20140201451A1 (en) 2013-01-16 2014-07-17 International Business Machines Corporation Method, apparatus and computer programs providing cluster-wide page management
WO2016109458A1 (en) 2014-12-29 2016-07-07 Nicira, Inc. Method for providing multi-tenancy support for rdma

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055015B2 (en) 2002-02-25 2006-05-30 Ricoh Company, Ltd. Information processing apparatus in which processes can reduce overhead of memory access and efficiently share memory
EP1552409B1 (de) 2002-08-19 2013-07-24 Broadcom Corporation One-shot-rdma
US7756943B1 (en) 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
US7552298B2 (en) 2006-09-28 2009-06-23 Broadcom Corporation Method and system for deferred pinning of host memory for stateful network interfaces
US20100083247A1 (en) 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
US8255475B2 (en) * 2009-04-28 2012-08-28 Mellanox Technologies Ltd. Network interface device with memory management capabilities
JP5684815B2 (ja) 2010-04-30 2015-03-18 株式会社日立製作所 計算機システム及びその制御方法
CN102694672B (zh) 2011-03-24 2015-07-22 华为技术有限公司 虚拟机参数迁移的方法、设备和虚拟机服务器
US20140164718A1 (en) * 2012-12-07 2014-06-12 Open Kernel Labs, Inc. Methods and apparatus for sharing memory between multiple processes of a virtual machine
CN103530167B (zh) 2013-09-30 2017-04-05 华为技术有限公司 一种虚拟机内存数据的迁移方法及相关装置和集群系统
US9306916B2 (en) 2013-12-25 2016-04-05 Cavium, Inc. System and a method for a remote direct memory access over converged ethernet
CN103763173B (zh) 2013-12-31 2017-08-25 华为技术有限公司 数据传输方法和计算节点
US9548890B2 (en) * 2014-03-17 2017-01-17 Cisco Technology, Inc. Flexible remote direct memory access resource configuration in a network environment
CN103942087B (zh) 2014-03-31 2017-11-17 华为技术有限公司 虚拟机热迁移方法及相关装置和集群系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565454B2 (en) 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US20130061047A1 (en) 2011-09-07 2013-03-07 Microsoft Corporation Secure and efficient offloading of network policies to network interface cards
US20140201451A1 (en) 2013-01-16 2014-07-17 International Business Machines Corporation Method, apparatus and computer programs providing cluster-wide page management
WO2016109458A1 (en) 2014-12-29 2016-07-07 Nicira, Inc. Method for providing multi-tenancy support for rdma

Also Published As

Publication number Publication date
US20160267052A1 (en) 2016-09-15
DE102016204030A1 (de) 2016-09-15
US10055381B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
DE102016204030B4 (de) Controller, Maschine, System und Verfahren zum Migrieren von RDMA-Arbeitsspeicherzuordnungen einer virtuellen Maschine
DE102012221041B4 (de) Ermöglichen des gleichzeitigen Vorhandenseins von Hostrechnern oder virtuellen Maschinen mit identischen Adressen
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE112021006003T5 (de) Intelligente datenebenenbeschleunigung durch auslagern zu verteilten smart- network-interfaces
US9904627B2 (en) Controller and method for migrating RDMA memory mappings of a virtual machine
DE112011103082B4 (de) Mehrere virtuelle Maschinen mit gemeinsamer Nutzung einer einzigen IP-Adresse
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112012003342T5 (de) Dynamisches Anpassen und Begrenzen der Größe des Netzwerkadapterspeichers zur Speicherung von Umsetzungseinträgen für virtuelle Funktionen
DE112013001904B4 (de) Paketvermittlung auf der Ebene 2 ohne Nachschlagetabelle für Ethernet-Switches
US10666508B2 (en) Unified software defined networking configuration management over multiple hosting environments
DE112012002998T5 (de) Virtuelle Netzwerküberlagerungen
DE112008003966T5 (de) Selektives Um-Abbilden einer Netzwerktopologie
DE112014002799B4 (de) Bereitstellen einer sicheren Kundendomäne in einer virtualisierten Mehr-Mieter-Umgebung
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE112013007296T5 (de) Bestimmung eines geeigneten Ziels für einen Initiator durch einen Prozessor auf Steuerungsebene
DE112008002550T5 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE112014000433B4 (de) Verfahren, Computersystem und Computerprogrammprodukt zum Kapseln eines virtuellen Servers in einer Hypervisor-Subpartition
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE102020110143A1 (de) Standortbasierte virtualisierungs-workload-platzierung
DE202014010925U1 (de) Dienstbrücken
DE102020201347A1 (de) Technologien zum abgleichen von sicherheitsanforderungen von funktion-als-dienst in edge-clouds
DE102020201546A1 (de) Technologien zum Bereitstellen von Hardwarebetriebsmitteln als Dienst mit direkter Betriebsmitteladressierbarkeit
DE102020201885A1 (de) Technologien für beschleunigtes hierarchisches schlüssel-caching in edge-systemen
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final