DE202017105777U1 - System for hardware-independent RDMA - Google Patents
System for hardware-independent RDMA Download PDFInfo
- Publication number
- DE202017105777U1 DE202017105777U1 DE202017105777.1U DE202017105777U DE202017105777U1 DE 202017105777 U1 DE202017105777 U1 DE 202017105777U1 DE 202017105777 U DE202017105777 U DE 202017105777U DE 202017105777 U1 DE202017105777 U1 DE 202017105777U1
- Authority
- DE
- Germany
- Prior art keywords
- processing
- packet
- processing units
- application
- thread
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2475—Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0659—Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
- H04L41/0661—Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities by reconfiguring faulty entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
- H04L43/0835—One way packet loss
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Environmental & Geological Engineering (AREA)
- Multi Processors (AREA)
Abstract
System, das umfasst:einen Arbeitsspeicher, der Paketverarbeitungsanweisungen speichert; undeine oder mehrere dedizierte Paketverarbeitungseinheiten in Verbindung mit dem Arbeitsspeicher und mit einer oder mehreren Anwendungsverarbeitungseinheiten, wobei die eine oder die mehreren dedizierten Paketverarbeitungseinheiten zum Ausführen der Paketverarbeitung dediziert sind, wobei jeder der einen oder mehreren dedizierten Paketverarbeitungseinheiten ein Verarbeitungs-Thread zugewiesen ist, wobei die eine oder die mehreren dedizierten Paketverarbeitungseinheiten konfiguriert sind zum:Empfangen eines Pakets von einer Anwendung, die in einer der Anwendungsverarbeitungseinheiten ausgeführt wird, in einem ersten Verarbeitungs-Thread;Verarbeiten durch Software definierter Behandlungsroutinenoperationen, die durch Befehle in dem empfangenen Paket initiiert werden, ohne die Operation an einen Anwendungs-Thread abzusenden, in dem ersten Verarbeitungs-Thread.A system comprising: a memory storing packet processing instructions; and one or more dedicated packet processing units in communication with the random access memory and with one or more application processing units, wherein the one or more dedicated packet processing units are dedicated to perform packet processing, wherein each of the one or more dedicated packet processing units is assigned a processing thread, the one or the plurality of dedicated packet processing units are configured to: receive a packet from an application executing in one of the application processing units in a first processing thread; processing by software defined handler operations initiated by instructions in the received packet without the operation to submit to an application thread in the first processing thread.
Description
HINTERGRUNDBACKGROUND
Einige Hochleistungscomputersysteme nutzen Netzschnittstellencontroller (NIC), die eine CPU-effiziente Kommunikation mit niedriger Latenzzeit zwischen Maschinen ermöglichen. Insbesondere ist die Remote-Direct-Memory-Access-Technologie (RDMA-Technologie) eine Technik, in der eine NIC-Hardwarevorrichtung ausreichend Funktionalität implementiert, um zu ermöglichen, dass eine Maschine auf den Arbeitsspeicher einer anderen Maschine effizient zugreift, ohne den Overhead von Universal-Softwarevernetzungsstapeln zu erleiden, die in zeitlich geteilt genutzten Hostprozessoren ausgeführt werden. NICs mit dieser Funktionalität werden gelegentlich als „Smart-NICs“ bezeichnet, da sie erheblich mehr Funktionalität als ein allgemeiner NIC implementieren, der einfach durch den Host erzeugte Pakete sendet und empfängt. Die Funktionen eines Smart-NIC enthalten einen zuverlässigen Transport in dem NIC sowie eine Folge von „Tätigkeiten“, die spezifische Funktionen wie etwa einen RDMA-Lesevorgang und einen RDMA-Schreibvorgang implementieren.Some high-performance computer systems use network interface controllers (NICs), which enable CPU-efficient communication with low latency between machines. In particular, Remote Direct Memory Access (RDMA) technology is a technique in which a NIC hardware device implements sufficient functionality to allow one machine to efficiently access the memory of another machine without the overhead of Suffer from universal software networking stacks running in shared host processors. NICs with this functionality are sometimes referred to as "smart NICs" because they implement much more functionality than a generic NIC that simply sends and receives packets generated by the host. The functions of a smart NIC include reliable transport in the NIC as well as a series of "activities" that implement specific functions such as an RDMA read and an RDMA write.
Universal-Hostvernetzungsstapel, die in herkömmlichen NICs ausgeführt werden, sind nicht in der Lage, dieselben Sicherheiten niedriger Latenzzeit wie dedizierte hardwaregestützte Smart-NICs sicherzustellen. Zunächst sind Kernel-gestützte Vernetzungsstapel hauptsächlich dafür ausgelegt, Kerne mit anderen Anwendungen und Diensten zeitlich zu multiplexieren. Wegen der Unterbrechungsbehandlung und Kontextumschaltung mit nicht vorhersagbaren Scheduler-Verzögerungen führt die zeitmultiplexierte Nutzung eines Prozessors unvermeidlich zu einer Latenzzeitauswirkung. Zweitens müssen zeitmultiplexiert genutzte Vernetzungsstapel unter Verwendung eines Betriebssystemaufrufs aufgerufen werden, was ein nicht trivialer Overhead ist. Drittens implementieren herkömmliche Hostvernetzungsstapel keine Tätigkeiten, um gut definierte Funktionen wie etwa RDMA-Lesevorgang und RDMA-Schreibvorgang inline mit dem Transport auszuführen. Stattdessen müssen sie eine ankommende Anforderung an einen Anwendungs-Thread absetzen, wobei die Aktion des Absetzens eines Anwendungs-Threads einen erheblichen CPU-Overhead und eine erhebliche CPU-Latenzzeit hervorruft.Universal host networking stacks running on legacy NICs are unable to provide the same low-latency credentials as dedicated hardware-enabled smart NICs. First, kernel-based networking stacks are primarily designed to time-multiplex the cores with other applications and services. Because of interrupt handling and context switching with unpredictable scheduler delays, time-division multiplexed use of a processor inevitably results in a latency impact. Second, time-multiplexed networking stacks must be invoked using an operating system call, which is a non-trivial overhead. Third, conventional host networking stacks do not implement activities to perform well-defined functions such as RDMA read and RDMA write inline with the transport. Instead, they must make an incoming request to an application thread, and the action of dropping an application thread causes significant CPU overhead and significant CPU latency.
Hardwaregestützte Smart-NICs haben mehrere Probleme. Zunächst sind sie unflexibel gegen Änderung. Es ist entweder schwierig oder unmöglich, den NIC mit neuen Tätigkeiten, neuen Überlastabwehralgorithmen oder mit Fehlerbehebungen zu erweitern. Zweitens haben hardwaregestützte Smart-NICs häufig andere Anforderungen an die umgebenden Systeme, wie etwa, dass sie eine verlustfreie Netz-Fabric erfordern.Hardware-based Smart NICs have several issues. First, they are inflexible against change. It is either difficult or impossible to extend the NIC with new activities, new overload defense algorithms, or bug fixes. Second, hardware-based smart NICs often have different requirements for the surrounding systems, such as requiring a lossless network fabric.
In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes durch das Gebrauchsmuster zu schützen und Gegenstand des Gebrauchsmusters sind nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. Falls die Beschreibung auf Verfahren Bezug nimmt, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtung oder Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz begehrt wird.In accordance with the requirements of the utility model law to protect the utility model and subject of the utility model are only devices as defined in the appended claims, but no method. Where the description refers to methods, these references are merely illustrative of the device or devices for which protection is sought from the appended claims.
ZUSAMMENFASSUNGSUMMARY
Die vorliegende Offenbarung schafft ein Computersystem, das eine oder mehrere Verarbeitungseinheiten Paketsoftware widmet, wobei andere Verarbeitungseinheiten gleichzeitig Anwendungssoftware ausführen. In einigen Beispielen verwendet das System dynamische Lastinformationen, um die Anzahl der Verarbeitungseinheiten, die für die Paketverarbeitung dediziert sind, dynamisch zu erhöhen und zu verringern. Das System kann Signale wie etwa Warteschlangenlänge, Warteschlangeneinreihungs-Latenzzeit und Anteil der Belegt-Verarbeitungsschleifen verwenden, um Überlastbedingungen zu detektieren. Ferner kann das System einen Mechanismus zum Herstellen gemeinsam genutzter Arbeitsspeichergebiete zum Zusammenwirken mit anderen Anwendungen enthalten. Die Mechanismen für gemeinsam genutzten Arbeitsspeicher schaffen eine Abstraktion eines Pro-Anwendungs-„Befehls“ und von Pro-Anwendungs-„Fertigstellungswarteschlangen“. Das System kann Pro-Anwendungs-Befehlswarteschlangen abfragen, um die Ankunft neuer Anforderungen zu detektieren. Außerdem stellt der Mechanismus die Detektion eines Anwendungsabschlusses sowie eine Fähigkeit für eine Anwendung, Abschnitte ihres Adressenraums für den Empfang und für die Sendung von Daten freizulegen, bereit. In einigen Beispielen enthält das System ferner eine Grundstruktur, um durch Software definierte Behandlungsroutinen wie etwa „Tätigkeiten“ inline mit Threads, die Paketverarbeitungs- und Transportsoftware ausführen, auszuführen. Die Behandlungsroutinen können RDMA-Fähigkeiten implementieren. Ferner kann das System eine Paketerfassung, Paketverarbeitung, eine Verarbeitung durch Software definierter Behandlungsroutinen und zuverlässige Transportoperation, alle innerhalb desselben Threads, implementieren.The present disclosure provides a computer system that devotes one or more processing units to package software, with other processing units simultaneously executing application software. In some examples, the system uses dynamic load information to dynamically increase and decrease the number of processing units dedicated to packet processing. The system may use signals such as queue length, queue enqueue latency and share of busy processing loops to detect overload conditions. Further, the system may include a mechanism for establishing shared memory areas to interact with other applications. The shared memory mechanisms create an abstraction of a per-application "command" and per-application "completion queues". The system can query pro-application command queues to detect the arrival of new requests. In addition, the mechanism provides detection of application termination as well as an ability for an application to expose portions of its address space for receipt and transmission of data. In some examples, the system further includes a framework for executing software-defined handlers, such as "tasks" in-line with threads executing packet processing and transport software. The handlers can implement RDMA capabilities. Further, the system may implement packet capture, packet processing, software-defined handler processing, and reliable transport operation, all within the same thread.
Ein Aspekt der Offenbarung schafft ein System, das einen Arbeitsspeicher, der Paketverarbeitungsanweisungen speichert, und eine oder mehrere dedizierte Paketverarbeitungseinheiten in Verbindung mit dem Arbeitsspeicher und mit einer oder mehreren Anwendungsverarbeitungseinheiten enthält. Die eine oder die mehreren dedizierten Paketverarbeitungseinheiten sind zum Ausführen der Paketverarbeitung dediziert und jeder der einen oder mehreren dedizierten Paketverarbeitungseinheiten ist ein Verarbeitungs-Thread zugewiesen. Die eine oder die mehreren dedizierten Paketverarbeitungseinheiten sind zum Empfangen eines Pakets von einer Anwendung, die in einer der Anwendungsverarbeitungseinheiten ausgeführt wird, in einem ersten Verarbeitungs-Thread und zum Verarbeiten durch Software definierter Behandlungsroutinenoperationen, die durch Befehle in dem empfangenen Paket initiiert werden, ohne die Operation an einen Anwendungs-Thread abzusenden, in dem ersten Verarbeitungs-Thread konfiguriert. In einigen Beispielen sind der eine oder die mehreren Prozessoren ferner zum Ausführen eines Transports für die empfangenen Pakete und zum Ausführen eines Transports für verarbeitete Pakete, die gesendet werden sollen, konfiguriert, wobei das Ausführen der Transporte in dem ersten Verarbeitungs-Thread ausgeführt wird. Der Transport kann mit der einen oder den mehreren Anwendungsverarbeitungseinheiten ohne Kontextumschaltung oder Systemaufrufe über eine Schnittstelle verbunden sein. Ferner können der eine oder die mehreren Prozessoren zum Abfragen einer oder mehrerer Befehlswarteschlangen, wobei jede Befehlswarteschlange spezifisch für eine Anwendung ist, wobei das empfangene Paket von der einen oder den mehreren Befehlswarteschlangen ausgespeichert wird, und zum Eingeben von Fertigstellungen in eine Fertigstellungswarteschlange konfiguriert sein. Die Befehls- und die Fertigstellungswarteschlangen können in einem gemeinsam genutzten Arbeitsspeicher enthalten sein, wobei der gemeinsam genutzte Arbeitsspeicher zwischen der einen oder den mehreren Verarbeitungseinheiten und einer zweiten Verarbeitungseinheit, die spezifisch für die Anwendung ist, gemeinsam genutzt wird. Die eine oder die mehreren dedizierten Paketverarbeitungseinheiten können Verarbeitungskerne eines Mehrkernprozessors sein. In einigen Beispielen liegt ein solcher Mehrkernprozessor in einem Netzschnittstellencontroller (NIC), der über eine Schnittstelle mit einer Engine verbunden ist, die einen Arbeitsspeicher enthält, der die zugewiesenen Threads speichert.One aspect of the disclosure provides a system that stores a memory that stores packet processing instructions and one or more dedicated packet processing units in conjunction with the memory and with one or more application processing units contains. The one or more dedicated packet processing units are dedicated to performing packet processing, and each of the one or more dedicated packet processing units is assigned a processing thread. The one or more dedicated packet processing units are for receiving a packet from an application executing in one of the application processing units in a first processing thread and for processing by software-defined handler operations initiated by instructions in the received packet without Send operation to an application thread configured in the first processing thread. In some examples, the one or more processors are further configured to perform a transport for the received packets and to perform a transport for processed packets to be sent, wherein the carrying out of the transports is performed in the first processing thread. The transport may be connected to the one or more application processing units without context switching or system calls via an interface. Furthermore, the one or more processors may be configured to query one or more command queues, each command queue being specific to an application, the received packet being staged by the one or more command queues, and configured to enter completions into a completion queue. The command and completion queues may be included in a shared memory where the shared memory is shared between the one or more processing units and a second processing unit specific to the application. The one or more dedicated packet processing units may be processing cores of a multi-core processor. In some examples, such a multi-core processor resides in a network interface controller (NIC) interfaced with an engine that includes a memory that stores the assigned threads.
In einem anderen Aspekt der Offenbarung wird ein System geschaffen, das einen oder mehrere Arbeitsspeicher, eine erste Menge von Verarbeitungseinheiten in Verbindung mit dem einen oder den mehreren Arbeitsspeichern, wobei die erste Menge von Verarbeitungseinheiten dafür konfiguriert sind, ausschließlich die Paketverarbeitung auszuführen, und eine zweite Menge von Verarbeitungseinheiten in Verbindung mit dem einen oder den mehreren Arbeitsspeichern und mit der ersten Menge von Verarbeitungseinheiten, wobei die zweite Menge von Verarbeitungseinheiten dafür konfiguriert sind, ausschließlich Anwendungen auszuführen, enthält. Jeder der ersten Verarbeitungseinheiten ist ein Verarbeitungs-Thread zugewiesen, wobei der Verarbeitungs-Thread durch eine der ersten Verarbeitungseinheiten ausführbar ist, um empfangene Pakete zu verarbeiten, für die empfangenen Pakete einen Transport auszuführen, durch Software definierte Behandlungsroutinenoperationen zu verarbeiten und für zu sendende Pakete einen Transport auszuführen. Ferner kann das System zwischen der ersten Menge von Verarbeitungseinheiten und der zweiten Menge von Verarbeitungseinheiten einen gemeinsam genutzten Arbeitsspeicher wie etwa gemeinsam genutzte Arbeitsspeicherringe enthalten. In einigen Beispielen steht jede der zweiten Menge von Verarbeitungseinheiten über eine getrennte Menge gemeinsam genutzter Arbeitsspeicherringe in Verbindung, wobei die Menge Senderinge und Empfangsringe umfasst. Ferner kann der gemeinsam genutzte Arbeitsspeicher wenigstens eine Befehlswarteschlange und wenigstens eine Fertigstellungswarteschlange enthalten. Die erste Menge von Verarbeitungseinheiten können dafür konfiguriert sein, Befehlswarteschlangen für jede Anwendung abzufragen und Fertigstellungen nach Abschließen von Paketverarbeitungsoperationen in die Fertigstellungswarteschlangen einzugeben.In another aspect of the disclosure, a system is provided that includes one or more random access memories, a first set of processing units in communication with the one or more random access memories, wherein the first set of processing units are configured to execute exclusively the packet processing, and a second Amount of processing units associated with the one or more random access memories and with the first set of processing units, wherein the second set of processing units is configured to execute only applications. Each of the first processing units is assigned a processing thread, the processing thread being executable by one of the first processing units to process received packets, carry out a transport for the received packets, process software-defined handler operations, and one for packets to be sent Transport. Further, the system may include a shared memory such as shared memory rings between the first set of processing units and the second set of processing units. In some examples, each of the second set of processing units communicates via a separate set of shared memory rings, the set comprising transmitter rings and receive rings. Further, the shared memory may include at least one instruction queue and at least one completion queue. The first set of processing units may be configured to query instruction queues for each application and to enter completions after completion of packet processing operations in the completion queues.
In einem abermals anderen Aspekt der Offenbarung wird ein Verfahren geschaffen, das das Empfangen eines Pakets von einer Anwendung, die in einem zweiten Prozessor, der für die Anwendungsverarbeitung dediziert ist, ausgeführt wird, mit einem ersten Prozessor, der für das Ausführen der Paketverarbeitung und für das Ausführen eines ersten Verarbeitungs-Threads dediziert ist, und das Verarbeiten durch Software definierter Behandlungsroutinenoperationen, die durch Befehle in dem empfangenen Paket initiiert werden, ohne zusätzliche Threads aufzurufen, in dem ersten Verarbeitungs-Thread enthält. Ferner kann das Verfahren das Ausführen eines Transports für die empfangenen Pakete mit dem ersten Prozessor, der den ersten Verarbeitungs-Thread ausführt, und das Ausführen eines Transports für verarbeitete Pakete, die gesendet werden sollen, mit dem ersten Prozessor, der den ersten Verarbeitungs-Thread ausführt, enthalten.In yet another aspect of the disclosure, there is provided a method of receiving a packet from an application executing in a second processor dedicated for application processing, having a first processor operative to perform packet processing and for is dedicated to executing a first processing thread, and processing by software defined handler operations initiated by instructions in the received packet, without invoking additional threads, in the first processing thread. Further, the method may include performing a transport for the received packets with the first processor executing the first processing thread and performing a transport for processed packets to be sent with the first processor containing the first processing thread executes included.
Figurenlistelist of figures
-
1 ist ein Blockschaltplan eines beispielhaften Systems in Übereinstimmung mit Aspekten der Offenbarung.1 FIG. 10 is a block diagram of an exemplary system in accordance with aspects of the disclosure. FIG. -
2 ist ein Blockschaltplan einer beispielhaften Engine des Systems aus1 .2 Figure 12 is a block diagram of an example engine of thesystem 1 , -
3 ist eine schematische Darstellung, die eine Kommunikation unter Verwendung eines gemeinsam genutzten Arbeitsspeichers in Übereinstimmung mit Aspekten der Offenbarung darstellt.3 FIG. 10 is a schematic diagram illustrating communications using shared memory in accordance with aspects of the disclosure. FIG. -
4 ist eine Funktionsdarstellung, die das Zugreifen auf Arbeitsspeicher in Übereinstimmung mit Aspekten der Offenbarung darstellt.4 FIG. 13 is a functional diagram illustrating accessing memory in accordance with aspects of the disclosure. FIG. -
5 ist eine schematische Darstellung, die eine Kommunikation zwischen zwei beispielhaften Systemen in Übereinstimmung mit Aspekten der Offenbarung darstellt.5 FIG. 10 is a schematic diagram illustrating communication between two exemplary systems in accordance with aspects of the disclosure. FIG. -
6 stellt ein beispielhaftes Paket in Übereinstimmung mit Aspekten der Offenbarung dar.6 illustrates an exemplary package in accordance with aspects of the disclosure. -
7 ist ein Ablaufplan eines beispielhaften Verfahrens in Übereinstimmung mit Aspekten der Offenbarung.7 FIG. 10 is a flowchart of an example method in accordance with aspects of the disclosure. FIG. -
8 stellt eine Verarbeitungsschleifenaufteilungs-Verarbeitungszeit unter Aktivitäten in Übereinstimmung mit Aspekten der Offenbarung dar.8th illustrates a processing loop partition processing time among activities in accordance with aspects of the disclosure.
AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION
ÜbersichtOverview
Die Offenbarung ist auf ein System gerichtet, das eine Mehrzahl von Prozessoren wie etwa Verarbeitungskernen enthält, wobei ein oder mehrere erste Prozessoren der Mehrzahl für Paketverarbeitungssoftware dediziert sind und wobei ein oder mehrere zweite Prozessoren der Mehrzahl für das Ausführen von Anwendungssoftware dediziert sind. Der eine oder die mehreren ersten Prozessoren, die für die Paketverarbeitung dediziert sind, können Universalkerne sein. Einer passenden Anzahl dedizierter Prozessoren werden ein oder mehrere Software-Threads zugewiesen. Jeder Verarbeitungs-Thread führt in einer Belegt-Verarbeitungsschleife die folgenden Aktionen, aber nicht notwendig in der spezifizierten Reihenfolge, aus: Verarbeiten ankommender Pakete, Ausführen eines zuverlässigen Transports für empfangene Pakete, Verarbeiten durch Software definierter Behandlungsroutinenoperationen (z. B. Tätigkeitsoperationen), Ausführen eines zuverlässigen Transports für Übertragungspakete, Abfragen von Befehlswarteschlangen für jede Anwendung. Somit fragt z. B. ein Thread wie etwa durch Beobachten eines Netzproblems (z. B. Signale für Stauung, Ausfälle, Verzögerung usw.), Ändern von Transportparametern in Ansprechen darauf und Benachrichtigen über irgendeinen Paketverlust in der Übertragung Empfangswarteschlangen (Rx-Warteschlangen) auf ankommende Pakete ab und führt er einen zuverlässigen Transport für die ankommenden Pakete von der Rx-Warteschlange aus. In einigen Beispielen könnte der Thread, der einen zuverlässigen Transport für ankommende Pakete von der Rx-Warteschlange ausführt, wie etwa über den Empfang eines NAK oder eines doppelten ACK eine erneute Sendung verlorengegangener Pakete auslösen. Das Ausführen des zuverlässigen Transports erzeugt Quittierungen und plant die Verarbeitung von Tätigkeitsoperationen. Zum Beispiel kann für jede Tätigkeitsoperation eine bestimmte Zustandsmaschine zum Verarbeiten dieser Tätigkeitsoperation ausgewählt werden. Das Ausführen der Tätigkeitsoperationen kann das Planen von Sendepaketen (Tx-Paketen) enthalten. Für die Tx-Pakete wird wie etwa durch das Erzeugen von Quittierungen und durch das erneute Senden verlorengegangener Pakete ebenfalls ein zuverlässiger Transport ausgeführt. Der Thread fragt für jede Anwendung, die mit dem NIC kommuniziert, eine oder mehrere Befehlswarteschlangen des gemeinsam genutzten Arbeitsspeichers z. B. auf zusätzliche zu verarbeitende Befehle ab. Während irgendeine dieser Aktionen ausgeführt wird, kann der Thread ebenfalls Fertigstellungen schreiben, um Anwendungen über eine fertiggestellte Arbeit zu benachrichtigen. Zum Beispiel kann die Zustandsmaschine Metadaten auf gemeinsam genutzte Arbeitsspeicherverbindungen schreiben, die unter dem dedizierten Prozessor und dem einen oder den mehreren zweiten Prozessoren gemeinsam genutzt werden.The disclosure is directed to a system including a plurality of processors, such as processing cores, wherein one or more first processors of the plurality are dedicated to packet processing software and wherein one or more second processors of the plurality are dedicated to executing application software. The one or more first processors dedicated to packet processing may be universal cores. A suitable number of dedicated processors are assigned one or more software threads. Each processing thread executes the following actions in a busy processing loop, but not necessarily in the specified order: processing incoming packets, performing a reliable transport for received packets, processing by software defined handler operations (e.g., task operations), executing reliable transport for transmission packets, command queue queries for each application. Thus, z. For example, a thread such as by monitoring a network problem (e.g., congestion, failure, delay, etc. signals), changing transport parameters in response thereto, and notifying any packet loss in the transmission, will send receive queues (Rx queues) to incoming packets and it performs a reliable transport for the incoming packets from the Rx queue. In some examples, the thread that performs reliable transport for inbound packets from the Rx queue, such as receiving a NAK or a duplicate ACK, could trigger retransmission of lost packets. Executing the reliable transport generates acknowledgments and schedules the processing of task operations. For example, for each operation operation, a particular state machine may be selected to process that operation. Executing the activity operations may include scheduling transmission packets (Tx packets). For the Tx packets, such as by generating acknowledgments and retransmitting lost packets, reliable transport is also performed. The thread asks one or more shared memory command queues for each application that communicates with the NIC. B. on additional to be processed commands. While any of these actions are being performed, the thread may also write completions to notify applications of a completed work. For example, the state machine may write metadata to shared memory connections that are shared among the dedicated processor and the one or more second processors.
Dadurch, dass in dedizierten Verarbeitungskernen ausgeführt wird, ist ein Kern stets zur sofortigen Verarbeitung ankommender Pakete verfügbar. Pakete können ohne Systemaufruf-Overhead und ohne Unterbrechungen zu dem Hardware-NIC gesendet und von ihm empfangen werden. Die Software-Threads können in einer privilegierten oder in einer unprivilegierten Betriebsart ausgeführt werden.By running in dedicated processing cores, a kernel is always available for immediate processing of incoming packets. Packets can be sent to and received from the hardware NIC without system call overhead and interrupts. The software threads can be executed in a privileged or in an unprivileged mode.
Zum Zusammenwirken zwischen dem NIC und Anwendungen können Befehls- und Fertigstellungswarteschlangen verwendet werden, wobei sie blockierungsfrei sein können. Eine Anwendung, die den NIC zu verwenden wünscht, baut durch Aufbauen einer Intra-Maschinenverbindung unter Verwendung eines vorhandenen Kommunikationsprimitivs wie etwa eines Unix-Domänen-Sockets oder ähnlichem über einen Anfangskanal eine Kommunikation mit dem NIC auf. Wenn dieser Anfangskanal aufgebaut worden ist, verwendet die Anwendung Betriebssystemmechanismen, um ein Gebiet des gemeinsam genutzten Arbeitsspeichers mit dem NIC aufzubauen.For interaction between the NIC and applications, command and completion queues may be used, and they may be non-blocking. An application wishing to use the NIC establishes communication with the NIC via an intra-machine connection using an existing communication primitive such as a Unix domain socket or the like via an initial channel. When this initial channel has been established, the application uses operating system mechanisms to build a shared memory area with the NIC.
Es wird eine Grundstruktur implementiert, um Tätigkeiten inline mit einem Transportverarbeitungs-Thread auszuführen. Die Grundstruktur ist mit Erweiterbarkeit ausgelegt, so dass Anwendungsentwickler ohne erhebliche Nacharbeit neue Tätigkeiten erzeugen können. Das Wire-Format enthält einen „Betriebscode“, um die auszuführende Tätigkeitsoperation zu spezifizieren.A basic structure is implemented to perform activities inline with a transport processing thread. The basic structure is designed with extensibility so that application developers can create new activities without significant rework. The wire format contains an "operation code" to specify the operation to be performed.
Beispielhafte SystemeExemplary systems
Jeder Anwendungsprozessor
Jede Anwendung kann eine zugeordnete Clientbibliothek
Der gemeinsam genutzte Arbeitsspeicher
Die Engine
Die Engine
Die Engine
Der Arbeitsspeicher
Die Anweisungen
Der eine oder die mehreren Prozessoren
Jeder Kern
Die durch die Threads
In Übereinstimmung mit einem Beispiel können dynamische Lastinformationen verwendet werden, um eine Anzahl von Verarbeitungseinheiten, die für die Paketverarbeitung dediziert sind, dynamisch zu erhöhen oder zu verringern. Zum Beispiel kann eine erste Anzahl von Kernen Prozesse ausführen, während die Engine
Obgleich
Obgleich
Anfangs baut die Clientbibliothek
Der gemeinsam genutzte Tx-Arbeitsspeicherring
Über die gemeinsam genutzten Arbeitsspeicherringe
In Übereinstimmung mit einem Beispiel versucht sich die Clientbibliothek
In die gemeinsam genutzten Arbeitsspeicherringe können Nachrichten mit variabler Länge eingespeichert und aus ihnen ausgespeichert werden. Wie in
In einigen Beispielen kann auf die Clientanwendung ein Gegendruck ausgeübt werden, wenn die Befehlswarteschlange voll wird. Zum Beispiel kann die Engine
Die Engine
In Übereinstimmung mit einem Beispiel speichert der Client
In Übereinstimmung mit einem weiteren Beispiel ermöglichen „Sendevorgänge“, dass eine Anwendung unaufgefordert Daten von dem lokalen Arbeitsspeicher an einen durch die ferne Anwendung bereitgestellten Puffer sendet. Das Gebiet
Zwischen zwei Clients kann eine bidirektionale Folge von Operationen ausgetauscht werden. Diese Folge von Operationen kann als ein Datenstrom bezeichnet werden. Wenn an die Engine
Jedem Fenster
Ein zuverlässiger ungeordneter Datagrammtransport zwischen zwei Engines kann als ein Netzfluss bezeichnet werden. Datenströme multiplexieren auf einen Netzfluss. Einem Netzfluss ist ein Stauungsfenster zugeordnet. Eine Viele-zu-viele-Karte zwischen Netzflüssen und Datenströmen kann als ein Flow Mapper bezeichnet werden. Der Flow Mapper ist für die Planung von Datenströmen auf Netzflüsse verantwortlich. Jeder Flow Mapper entspricht einer fernen Engine. Somit entspricht jeder Datenstrom über seine Adresse einem Flow Mapper. Jeder Flow Mapper besitzt ein oder mehrere Netzflüsse zu dieser fernen Engine. Wenn ein Netzfluss Gelegenheit hat, ein Paket zu senden, bittet er den Flow Mapper, der seinerseits Ströme wählt, um das Paket zu füllen. Kleine Nachrichten von mehreren Datenströmen werden auf denselben Fluss multiplexiert und können in einem einzelnen Paket gestapelt werden. Auf jeden Fluss können einschließlich auf der Sub-Paketebene mehrere Datenströme, einschließlich Datenströmen von verschiedenen Clients, multiplexiert werden.Reliable, unordered datagram transport between two engines can be referred to as a network flow. Data streams are multiplexed onto a network flow. A network flow is assigned a congestion window. A many-to-many map between network flows and data streams may be referred to as a flow mapper. The Flow Mapper is responsible for planning data flows on network flows. Each flow mapper corresponds to a remote engine. Thus every data stream via its address corresponds to a flow mapper. Each flow mapper has one or more network flows to this remote engine. When a network flow has an opportunity to send a packet, it asks the flow mapper, who in turn chooses streams to fill the packet. Small messages from multiple streams are multiplexed onto the same stream and can be stacked in a single packet. Multiple data streams, including data streams from different clients, can be multiplexed to each flow, including at the sub-packet level.
Das Transportprotokoll ist eine Implementierung eines Netzflusses und stellt eine zuverlässige geordnete Lieferung beliebiger Datagramme bereit. Der parametrische Abschnitt des Transportprotokolls ist in
Beispielhafte VerfahrenExemplary methods
Im Block
Im Block
Im Block
Im Block
Im Block
Im Block
Im Block
Jede der obigen Tasks kann in demselben Verarbeitungs-Thread ausgeführt werden. Zum Beispiel können solche Operationen im Gegensatz dazu, dass ein neuer Thread aufgeweckt wird, um eine bestimmte Operation auszuführen, in demselben Thread wie die anderen ausgeführt werden.Any of the above tasks can be performed in the same processing thread. For example, unlike a new thread being woken up to perform a particular operation, such operations may be performed in the same thread as the others.
Da das hier beschriebene System und die hier beschriebenen Verfahren einen „Smart“-NIC unter Verwendung von Universalcomputervorrichtungen emulieren, bieten diese Systeme und Verfahren erhebliche Kosteneinsparungen. Zum Beispiel kann vorhandene Hardware aktualisiert werden, anstatt große Mengen an Hardware zu ersetzen. Darüber hinaus sollten dadurch, dass es dedizierte Verarbeitungskerne für die Paketverarbeitung gibt, immer Betriebsmittel für ankommende Befehle verfügbar sein. In einigen Beispielen können unter erheblichen Lasten zusätzliche Verarbeitungskerne beauftragt werden. Zum Beispiel können zusätzlichen Prozessoren Threads zugewiesen werden, um Prozesse wie etwa die in Verbindung mit
Da diese und andere Änderungen und Kombinationen der oben diskutierten Merkmale genutzt werden können, ohne von dem wie durch die Ansprüche definierten Gegenstand abzuweichen, ist die vorstehende Beschreibung beispielhafter Aspekte nur als Veranschaulichung anstatt als Beschränkung des wie durch die Ansprüche definierten Gegenstands zu nehmen. Selbstverständlich ist die Darstellung der hier gegebenen Beispiele (sowie Aussagen, die als „wie etwa“, „z. B.“, „enthaltend“ und dergleichen formuliert sind) nicht so zu interpretieren, dass sie den beanspruchten Gegenstand auf die spezifischen Beispiele beschränken; vielmehr sollen die Beispiele nur einige von vielen möglichen Aspekten darstellen.As these and other changes and combinations of the features discussed above may be utilized without departing from the subject matter as defined by the claims, the foregoing description of exemplary aspects is to be considered as illustrative rather than restrictive of the subject matter as defined by the claims. Of course, the illustration of the examples given herein (as well as statements formulated as "such as", "for example", "containing" and the like) should not be interpreted as limiting the claimed subject matter to the specific examples; rather, the examples are just a few of many possible aspects.
Claims (20)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/393,529 | 2016-12-29 | ||
US15/393,529 US10541927B2 (en) | 2016-12-29 | 2016-12-29 | System and method for hardware-independent RDMA |
Publications (1)
Publication Number | Publication Date |
---|---|
DE202017105777U1 true DE202017105777U1 (en) | 2018-04-05 |
Family
ID=60043327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202017105777.1U Active DE202017105777U1 (en) | 2016-12-29 | 2017-09-22 | System for hardware-independent RDMA |
Country Status (4)
Country | Link |
---|---|
US (1) | US10541927B2 (en) |
EP (1) | EP3563249A1 (en) |
DE (1) | DE202017105777U1 (en) |
WO (1) | WO2018125335A1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190044860A1 (en) * | 2018-06-18 | 2019-02-07 | Intel Corporation | Technologies for providing adaptive polling of packet queues |
JP7251648B2 (en) * | 2019-10-08 | 2023-04-04 | 日本電信電話株式会社 | In-server delay control system, in-server delay control device, in-server delay control method and program |
CN112087332B (en) * | 2020-09-03 | 2022-06-21 | 哈尔滨工业大学 | Virtual network performance optimization system under cloud edge cooperation |
CN114520711B (en) * | 2020-11-19 | 2024-05-03 | 迈络思科技有限公司 | Selective retransmission of data packets |
US11489775B1 (en) * | 2021-05-10 | 2022-11-01 | Citrix Systems, Inc. | Vertical auto-scaling of a networking stack |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5063500A (en) | 1988-09-29 | 1991-11-05 | Ibm Corp. | System for executing segments of application program concurrently/serially on different/same virtual machine |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US6904519B2 (en) | 1998-06-12 | 2005-06-07 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
US7949766B2 (en) | 2005-06-22 | 2011-05-24 | Cisco Technology, Inc. | Offload stack for network, block and file input and output |
US20130086311A1 (en) * | 2007-12-10 | 2013-04-04 | Ming Huang | METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
JPWO2010032533A1 (en) * | 2008-09-19 | 2012-02-09 | 日本電気株式会社 | Network protocol processing system and network protocol processing method |
US9329912B2 (en) * | 2012-07-13 | 2016-05-03 | Freescale Semiconductor, Inc. | Core-affine processing on symmetric multiprocessing systems |
US9356986B2 (en) * | 2014-08-08 | 2016-05-31 | Sas Institute Inc. | Distributed stream processing |
US9459903B2 (en) * | 2014-09-24 | 2016-10-04 | Intel Corporation | Techniques for routing service chain flow packets between virtual machines |
US9747249B2 (en) | 2014-12-29 | 2017-08-29 | Nicira, Inc. | Methods and systems to achieve multi-tenancy in RDMA over converged Ethernet |
US10108422B2 (en) * | 2015-04-28 | 2018-10-23 | Liqid Inc. | Multi-thread network stack buffering of data frames |
-
2016
- 2016-12-29 US US15/393,529 patent/US10541927B2/en active Active
-
2017
- 2017-09-22 DE DE202017105777.1U patent/DE202017105777U1/en active Active
- 2017-09-26 EP EP17781278.1A patent/EP3563249A1/en not_active Withdrawn
- 2017-09-26 WO PCT/US2017/053443 patent/WO2018125335A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2018125335A1 (en) | 2018-07-05 |
EP3563249A1 (en) | 2019-11-06 |
US20180191623A1 (en) | 2018-07-05 |
US10541927B2 (en) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE202017105777U1 (en) | System for hardware-independent RDMA | |
DE69433293T2 (en) | Network transfer method for systems with virtual memory | |
DE112013006063B4 (en) | Failover for a communication channel in a high performance data processing network | |
DE102015108145B4 (en) | Local service chaining with virtual machines and virtualized containers in software-defined networking | |
DE69220093T2 (en) | PROCESSING NETWORK FOR DISTRIBUTED APPLICATION PROGRAMS. | |
DE69230093T2 (en) | Multiprocessor system | |
DE102020132078A1 (en) | RESOURCE ALLOCATION BASED ON APPLICABLE SERVICE LEVEL AGREEMENT | |
DE3879947T2 (en) | DISTRIBUTED FILE SERVER ARCHITECTURE. | |
DE112020002754T5 (en) | SYSTEM AND METHODS TO FACILITATE EFFICIENT MESSAGE MATCHING IN A NETWORK INTERFACE CONTROLLER (NIC) | |
DE60030767T2 (en) | DATA ALLOCATION TO THREADS IN A MULTI-THREADED NETWORK PROCESSOR | |
DE60201682T2 (en) | ARRANGEMENT FOR GENERATING MULTIPLE VIRTUAL QUEUE COUPLES FROM A COMPRESSED QUEUE BASED ON COMMON ATTRIBUTES | |
DE112012004550B4 (en) | State migration method, system and apparatus for a remote direct memory access adapter in a virtual environment | |
DE102018210537A1 (en) | Micro-services architecture | |
DE112017003294B4 (en) | Technologies for scalable sending and receiving of packets | |
DE102017126197A1 (en) | Device and method for scalable traffic shaping in a receiver with a time-indexed data structure | |
DE4208924A1 (en) | Communication between processors in parallel processing computers - is achieved by transmission between computers involving real and virtual memory sectors | |
DE112010003554T5 (en) | Symmetrical direct migration of virtual machines | |
DE112007001135T5 (en) | Sharing data through partitions in a partitionable system | |
DE102012105068A1 (en) | Accelerator with support for virtual machines | |
DE102022205478A1 (en) | INTERBUS MEMORY MAPPING | |
DE112022002284T5 (en) | OUTSOURCE OF THE NETWORK LAYER 7 TO AN INFRASTRUCTURE PROCESSING UNIT FOR A MESH SERVICE NETWORK | |
DE102022126611A1 (en) | SERVICE MESH OFFSET TO NETWORK DEVICES | |
DE102004052412A1 (en) | Method and apparatus for dynamically switching between queries and interrupt to handle network traffic | |
DE102021207394A1 (en) | MERGE PACKETS BASED ON HINTS GENERATED BY THE NETWORK ADAPTER | |
DE112010004809B4 (en) | Multi-granular data stream processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE |
|
R207 | Utility model specification | ||
R150 | Utility model maintained after payment of first maintenance fee after three years | ||
R151 | Utility model maintained after payment of second maintenance fee after six years |