DE102006008466A1 - Accelerating unit for processing of data packets, has control input for transmission of data packet processing information, where computation means are provided for checksum calculation of packets - Google Patents

Accelerating unit for processing of data packets, has control input for transmission of data packet processing information, where computation means are provided for checksum calculation of packets Download PDF

Info

Publication number
DE102006008466A1
DE102006008466A1 DE200610008466 DE102006008466A DE102006008466A1 DE 102006008466 A1 DE102006008466 A1 DE 102006008466A1 DE 200610008466 DE200610008466 DE 200610008466 DE 102006008466 A DE102006008466 A DE 102006008466A DE 102006008466 A1 DE102006008466 A1 DE 102006008466A1
Authority
DE
Germany
Prior art keywords
data
unit
acceleration unit
checksum
acceleration
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.)
Granted
Application number
DE200610008466
Other languages
German (de)
Other versions
DE102006008466B4 (en
Inventor
Jörg-Christian Dipl.-Ing. Niemann
Christian Dipl.-Ing. Sauer
Mario Dr. Ing. Porrmann
Ulrich Prof. Dr. Rückert
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.)
Intel Corp
Original Assignee
Infineon Technologies AG
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
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE200610008466 priority Critical patent/DE102006008466B4/en
Publication of DE102006008466A1 publication Critical patent/DE102006008466A1/en
Application granted granted Critical
Publication of DE102006008466B4 publication Critical patent/DE102006008466B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums

Abstract

The unit has a control input for transmission of data packet processing information. The computation means are provided for a checksum calculation of the packets, so that the checksum is formed as a complement of a sum of data complements of the data packets. The unit is alternatively controlled by the control input for the examination or recalculation of the checksum and for the treatment of a Layer-3-checksum and/or a Layer-4-checksum. Independent claims are also included for the following: (1) accelerating device for the processing of data packets, with an acceleration unit (2) method for the calculation of a checksum of data.

Description

Die vorliegende Erfindung betrifft eine Beschleunigungseinheit für die Verarbeitung von Datenpaketen sowie ein Verfahren zur Berechnung von Prüfsummen derartiger Datenpakete. Insbesondere betrifft die vorliegende Erfindung einen Hardwarebeschleuniger zur Verarbeitung von Datenpaketen und Prüfsummen für eingebettete On-Chip-Systeme.The The present invention relates to an acceleration unit for processing of data packets and a method for calculating checksums of such data packets. In particular, the present invention relates a hardware accelerator for processing data packets and checksums for embedded On-chip systems.

Vernetzte Systeme wie das Internet oder auch lokale Netzwerke (LAN, Local Area Network) kommunizieren auf der Basis von Netzwerkprotokollen über den Austausch von Paketen. Ein derartiges Protokoll ist zum Beispiel das Internet Protocol Version 4 (IPv4). Datenpakete bestehen dabei aus Nutzdaten und zusätzlichen Protokollinformationen, die unter anderem die Weiterleitung der Datenpakete durch das jeweilige Netzwerk ermöglichen, indem sie beispielsweise Quell- und Zieladresse enthalten, und die Integrität des Pakets beispielsweise durch Prüfsummen oder die so genannte Time-to-live (TTL), welche eine maximale Verweildauer des Datenpakets im Netzwerk festlegt, gewährleisten. Jeder Knoten in dem jeweiligen Netzwerk muss zur Verarbeitung der Pakete diese Protokollinformationen prüfen und gegebenenfalls vor einer Weiterleitung der Datenpakete die Protokollinformationen modifizieren.networked Systems like the Internet or local area networks (LAN, Local Area Network) communicate on the basis of network protocols via the Exchange of parcels. Such a protocol is for example the Internet Protocol version 4 (IPv4). Data packets exist from user data and additional Protocol information, including the forwarding of the Allow data packets through the respective network, for example by Source and destination address, and the integrity of the package for example, by checksums or the so-called time-to-live (TTL), which specifies a maximum retention period of the data packet in the network determines, guarantee. Each node in each network needs to process the Packages check this log information and, if necessary, before forwarding the data packets modify the protocol information.

Für die Verarbeitung der Datenpakete in den Knoten gibt es eine Vielzahl von möglichen Hardware-Realisierungen. So können anwendungsspezifische Bausteine (ASICs, Application Specific Integrated Circuits) auf Netzwerkkarten (NICs, Network Interface Cards) die Verarbeitung übernehmen, es werden jedoch auch Standardprozessoren (CPUs, Central Processing Units) hierzu verwendet. Im Laufe der letzten Jahre haben sich zudem vor allem für Einsatzgebiete mit hoher Datenlast spezielle Netzwerkprozessoren (NPUs, Network Processing Units) etabliert. Dabei handelt es ich um besonders auf das Anwendungsgebiet der Datenpaketverarbeitung spezialisierte Einheiten. Diese NPUs sind programmierbar und erlauben eine sehr flexible Gestaltung der notwendigen Verarbeitungsschritte, was im Hinblick auf den Wandel der Datenbeschaffenheit und der verwendeten Netzwerkprotokolle durch neue Entwicklungen und der damit verbundenen Dienste von großem Vorteil ist. Dabei gibt es derzeit eine Vielzahl etablierter Netzwerkprotokolle und -mechanismen, die aufgrund ihrer häufigen Verwendung zu einem festen Bestandteil der Netzwerktechnologie geworden sind. Hierzu zählen unter anderem das bereits erwähnte Internet Protocol Version 4 (IPv4) auf der so genannten Netzwerkschicht 3 sowie viele der in diesem Protokoll gekapselten Netzwerkprotokolle auf der Netzwerkschicht 4 (Layer-4-Protokolle, wie zum Beispiel TCP, UDP, ICMP, IEMP, ST-II, EGP, HMP, IRTP, OSPF, USPSv2, NETBLT, ENCAP, OSPFIGP und andere). Alle diese Protokolle verwenden eine Prüfsumme (check_sum), die auf einem 16 Bit Einer-Komplement-Summen-Ansatz beruht, wie er zum Beispiel in dem Request for Comments (rfc) 1071 der Network Working Group von R. Braden, D. Borman und C. Partridge beschrieben wurde.For processing There are a lot of possible data packets in the nodes Hardware implementations. So can application-specific components (ASICs, Application Specific Integrated Circuits) on network cards (NICs, Network Interface Cards) Take over processing, however, standard processors (CPUs, Central Processing Units) used for this purpose. In addition, over the last few years have become especially for applications with high data load special network processors (NPUs, Network Processing Units). I am especially concerned about that the application field of data packet processing specialized units. These NPUs are programmable and allow a very flexible design the necessary processing steps, what in terms of change the nature of the data and the network protocols used new developments and related services are of great benefit is. There are currently a large number of established network protocols and mechanisms which, due to their frequent use, have become fixed Become part of the network technology. These include under the one mentioned earlier Internet Protocol version 4 (IPv4) on the so-called network layer 3 as well as many of the network protocols encapsulated in this protocol on the network layer 4 (Layer 4 protocols, such as TCP, UDP, ICMP, IEMP, ST-II, EGP, HMP, IRTP, OSPF, USPSv2, NETBLT, ENCAP, OSPFIGP and others). All these protocols use a checksum (check_sum), which is based on a 16 bit one's complement sums approach based, for example, in the Request for Comments (rfc) 1071 the Network Working Group of R. Braden, D. Borman and C. Partridge has been described.

Eine Berechnung und/oder Überprüfung dieser Prüfsumme ist in nahezu allen Netzwerkknoten nötig, beispielsweise bei Endgeräten im Endverbraucherbereich wie beispielsweise Firewalls oder bei Geräten im Kernnetzwerk wie beispielsweise Routern.A Calculation and / or verification of this checksum is necessary in almost all network nodes, for example end user devices such as firewalls or devices in the core network such as Routers.

Diese Prüfsummenberechnung und/oder -überprüfung wird herkömmlicherweise beispielsweise durch Software, welche auf Standardprozessoren oder auch auf Paketprozessoren läuft, realisiert. Beispiele hierfür sind in der US 2003/0088689 A1 oder der US 6,212,569 B1 beschrieben.This checksum calculation and / or verification is conventionally realized, for example, by software running on standard processors or on packet processors. Examples of this are in US 2003/0088689 A1 or the US 6,212,569 B1 described.

Derartige Softwarelösungen haben jedoch den Nachteil, dass sie relativ langsam sind, was insbesondere im Hinblick auf die ständig steigenden Datenraten im weltweiten Netzwerkverkehr nachteilig ist.such software solutions However, they have the disadvantage that they are relatively slow, which in particular with regard to the constantly rising data rates in global network traffic is disadvantageous.

Des Weiteren wurden Hardwarelösungen entwickelt, welche speziell zur Paketverarbeitung bestimmter Protokolle ausgestaltet wurden. Derartige Hardwarelösungen sind beispielsweise in der US 6,173,333 B1 oder in J. R. Hess et al., „Implementation and Evaluation of a Prototype Reconfigurable Router", FCCM 1999 beschrieben. Der Nachteil der dort beschriebenen Lösungen besteht in der geringen Flexibilität, da sie nur für spezielle Protokolle einsetzbar sind bzw. eine Umstellung zwischen Protokollen eine Verwendung von Field Programmable Gate Arrays (FPGAs) oder ähnlicher Bausteine und eine entsprechende Umprogrammierung erfordert, was mit deutlich erhöhten Systemkosten verbunden ist.Furthermore, hardware solutions have been developed, which have been specially designed for the packet processing of certain protocols. Such hardware solutions are for example in the US 6,173,333 B1 or in JR Hess et al., "Implementation and Evaluation of a Prototype Reconfigurable Router", FCCM 1999. The disadvantage of the solutions described therein is the low flexibility, since they can only be used for special protocols or a change between protocols Use of field programmable gate arrays (FPGAs) or similar devices and reprogramming is required, resulting in significantly increased system costs.

Es ist daher eine Aufgabe der vorliegenden Erfindung, eine Beschleunigungseinheit für die Verarbeitung von Datenpaketen und insbesondere für die Verarbeitung von Prüfsummen derartiger Datenpakete zu schaffen, welche flexibel für verschiedene Protokolle einsetzbar ist und welche eine Verarbeitung hoher Datenraten ermöglicht.It It is therefore an object of the present invention to provide an acceleration unit for the Processing of data packets and in particular for processing checksums to create such data packets which are flexible for different protocols can be used and which allows processing of high data rates.

Diese Aufgabe wird gelöst durch eine Beschleunigungseinheit nach Anspruch 1. Die abhängigen Ansprüche definieren bevorzugte oder vorteilhafte Ausgestaltungen der Beschleunigungseinheit. Des Weiteren wird ein Verfahren nach Anspruch 18 zur Berechnung von Prüfsummen von Datenpaketen bereitgestellt, welches insbesondere in der erfindungsgemäßen Beschleunigungseinheit implementierbar ist.These Task is solved by an acceleration unit according to claim 1. Defining the dependent claims preferred or advantageous embodiments of the acceleration unit. Furthermore, a method according to claim 18 for calculation of checksums provided by data packets, which in particular in the acceleration unit according to the invention is implementable.

Erfindungsgemäß wird eine Beschleunigungseinheit zur Verarbeitung von Datenpaketen bereitgestellt, welche einen Steuereingang zur Übermittlung von Informationen bezüglich eines zu verarbeitenden Datenpakets und an dem zu verarbeitenden Datenpaket durchzuführender Aufgaben an die Beschleunigungseinheit und eine Berechnungseinheit, welche zur Berechnung von Prüfsummen von Datenpaketen ausgestaltet ist, umfasst.According to the invention is a Acceleration unit provided for processing data packets, which a control input for transmission of information regarding of a data packet to be processed and to be processed Data package to be performed Tasks to the acceleration unit and a calculation unit, which for the calculation of checksums is designed by data packets comprises.

Eine derartige Beschleunigungseinheit ist zum Berechnen von Prüfsummen von Datenpaketen flexibel in verschiedenen Umgebungen wie Routern, Endgeräten und dergleichen einsetzbar. Über den Steuereingang können beispielsweise eine Adresse eines zu verarbeitenden Datenpakets in einem internen oder externen Speicher und/oder Informationen bezüglich von für das Datenpaket verwendeten Protokollen übergeben werden. Zudem kann beispielsweise eingestellt werden, ob eine Prüfsumme berechnet oder überprüft werden soll. Da das Berechnen und Überprüfen von Prüfsummen zu den zeitaufwändigen Aufgaben bei der Verarbeitung und Weiterleitung von Datenpaketen gehört, kann mit einer derartigen Beschleunigungseinheit eine bedeutende Zeitersparnis erzielt werden.A Such acceleration unit is for calculating checksums of data packets flexible in different environments such as routers, terminals and can be used. about the control input can For example, an address of a data packet to be processed in an internal or external memory and / or information regarding for the Data packet used to pass logs. In addition, can For example, be set whether a checksum to be calculated or checked should. Because calculating and checking checksums to the time-consuming Tasks in the processing and forwarding of data packets belongs, can save a considerable amount of time with such an acceleration unit be achieved.

Die Berechnung der Prüfsumme erfolgt dabei bevorzugt als Einer-Komplement einer Einer-Komplement-Summe von 16-Bit-Wörtern, welche beispielsweise aus benachbarten Oktetts (Bytes) des Datenpakets gebildet werden können. Diese Art der Berechnung wird bei vielen derzeit verwendeten Protokollen benutzt und macht somit die erfindungsgemäße Beschleunigungseinheit für alle diese Protokolle einsetzbar.The Calculation of the checksum takes place preferably as a one's complement of a one's complement sum of 16-bit words which for example, from adjacent octets (bytes) of the data packet can be formed. This type of calculation is used in many currently used protocols uses and thus makes the acceleration unit according to the invention for all these Protocols can be used.

Bevorzugt weist dabei die Berechnungseinheit, welche eine Arithmetisch/Logische Einheit (ALU) umfassen kann, eine Bitbreite auf, welches ein Vielfaches von 16 Bit ist. In diesem Fall können entsprechend mehrere 16 Bit Integer zusammengefasst und dann summiert werden, um die Einer-Komplement-Summe zu bilden, und das so erhaltene Ergebnis kann dann gefaltet werden, das heißt ein höherwertiger Anteil zu einem niedrigwertigen Anteil bitweise addiert werden, um die letztendliche Prüfsumme zu erhalten. Bei der Überprüfung eines Datenpakets wird dann entsprechend die Prüfsumme selbst in die Berechnung mit eingezogen. Dieses Verfahren zum Berechnen der Prüfsumme ist auch unabhängig von der erfindungsgemäßen Beschleunigungseinheit einsetzbar.Prefers has the calculation unit, which is an arithmetic / logical Unit (ALU) may have a bit width which is a multiple of 16 bits. In this case, you can several 16-bit integers are combined and then summed up be to the one's complement sum and the result obtained can then be folded, this means a higher quality Share to a minor proportion bit by bit, the final checksum to obtain. When checking a Data packets will then be included in the calculation according to the checksum itself with retired. This method of calculating the checksum is also independent of can be used the acceleration unit according to the invention.

Zur Durchführung dieses Verfahrens kann die Berechnungseinheit insbesondere einen ersten Eingang und einen zweiten Eingang umfassen, wobei zur Bildung der Summe über die volle Bitbreite der Berechnungseinheit der erste Eingang mit einem Dateneingang, welchem sukzessive die entsprechenden Daten des Datenpakets zuführbar sind, verbunden ist, während der zweite Eingang mit einem Ausgang der Berechnungseinheit verschaltet ist. Für die oben erwähnte Faltung kann dann beispielsweise mittels eines Multiplexers der erste Eingang ebenfalls mit dem Ausgang verschaltet werden, so dass beispielsweise dem ersten Eingang ein niedrigwertiger Anteil und dem zweiten Eingang ein höherwertiger Anteil des Ausgangs zugeführt wird.to execution This method, the calculation unit in particular a first input and a second input, wherein the formation the sum over the full bit width of the calculation unit, the first input with a data input, which successively the corresponding data of the data packet can be supplied are connected, while the second input is connected to an output of the calculation unit is. For the mentioned above Folding can then be done, for example, by means of a multiplexer first input also be interconnected with the output, so that for example, the first input a low-valued share and the second input a higher proportion supplied to the output becomes.

Die erfindungsgemäße Beschleunigungseinheit kann weiterhin Steuermittel zur Steuerung der Berechnung, beispielsweise einen Zustandsautomaten, umfassen.The Inventive acceleration unit may further control means for controlling the calculation, for example a state machine.

Die erfindungsgemäße Beschleunigungseinheit ist bevorzugt derart ausgestaltet, dass sie direkt auf einen Speicher zugreifen kann, in welchem das zu verarbeitende Datenpaket abgelegt ist. Eine Anbindung der erfindungsgemäßen Beschleunigungseinheit zu einer Umgebung, insbesondere einem übergeordneten Prozessor zur Paketverarbeitung, kann beispielsweise über einen Bus, aber auch direkt erfolgen.The Inventive acceleration unit is preferably configured such that it directly to a memory in which the data packet to be processed is stored is. A connection of the acceleration unit according to the invention to an environment, especially a parent processor for Packet processing, for example, can be done via a bus, but also directly.

Die Erfindung wird nachfolgend unter Bezugnahme auf die beigefügte Zeichnung anhand bevorzugter Ausführungsbeispiele näher erläutert. Es zeigen:The Invention will now be described with reference to the accompanying drawings using preferred embodiments explained in more detail. It demonstrate:

1 ein Blockschaltbild, welches schematisch die Einbettung einer erfindungsgemäßen Beschleunigungseinheit in eine Systemumgebung zeigt, 1 1 is a block diagram which schematically shows the embedding of an acceleration unit according to the invention in a system environment,

2 ein detailliertes Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßen Beschleunigungseinheit, 2 a detailed block diagram of an embodiment of an acceleration unit according to the invention,

3 ein Flussdiagramm, welches einen Arbeitsablauf in der Beschleunigungseinheit von 2 zeigt, 3 a flowchart showing a workflow in the acceleration unit of 2 shows,

4 ein Ausführungsbeispiel eines Steuerregisters der Beschleunigungseinheit von 2, 4 an embodiment of a control register of the acceleration unit of 2 .

5 ein Diagramm zur Veranschaulichung des erfindungsgemäßen Verfahrens zur Berechnung von Prüfsummen, 5 a diagram illustrating the method according to the invention for calculating checksums,

6 ein erstes Ausführungsbeispiel der Anbindung einer erfindungsgemäßen Beschleunigungseinheit an ihre Umgebung, 6 A first embodiment of the connection of an acceleration unit according to the invention to its environment,

7 ein zweites Ausführungsbeispiel der Anbindung einer erfindungsgemäßen Beschleunigungseinheit an ihre Umgebung, und 7 A second embodiment of the connection of an acceleration unit according to the invention to its environment, and

8 ein drittes Ausführungsbeispiel einer Anbindung einer erfindungsgemäßen Beschleunigungseinheit an ihre Umgebung. 8th A third embodiment of a connection of an accelerator according to the invention unit to their environment.

1 zeigt schematisch die Kopplung einer erfindungsgemäßen Beschleunigungseinheit 1 mit einer übergeordneten Kontrolleinheit 2. Diese übergeordnete Kontrolleinheit 2 kann dabei ein Zentralprozessor (CPU), ein Netzwerkprozessor (NPU) oder eine andere Steuereinheit sein. Die Beschleunigungseinheit 1 und die Kontrolleinheit 2 sind auf einem Chip 3 als so genanntes System-on-Chip integriert. Dabei kann, wie später erläutert werden wird, die Beschleunigungseinheit 1 selbst über einen Speicher verfügen, oder ein Speicher kann der Beschleunigungseinheit 1 über eine Busanbindung oder eine Network-on-Chip(NoC)-Anbindung zugängig gemacht werden. 1 schematically shows the coupling of an acceleration unit according to the invention 1 with a higher-level control unit 2 , This superior control unit 2 This can be a central processor (CPU), a network processor (NPU) or another control unit. The acceleration unit 1 and the control unit 2 are on a chip 3 integrated as a so-called system-on-chip. In this case, as will be explained later, the acceleration unit 1 even have a memory, or a memory can be the acceleration unit 1 be made accessible via a bus connection or a network-on-chip (NoC) connection.

Dem Chip 3 werden dabei, wie durch einen Pfeil 4 angedeutet, eintreffende Datenpakete zugeführt (so genannter ingress). Bei der Verarbeitung oder Weiterleitung der Datenpakete müssen diese zunächst auf Integrität, das heißt auf ein mit einem jeweilig verwendeten Protokoll konformes Format überprüft werden. Dies geschieht im Wesentlichen durch eine Überprüfung einer in den Datenpaketen vorhandenen Prüfsumme. Diese Überprüfung wird in der Beschleunigungseinheit 1 vorgenommen. Nach dieser Überprüfung werden die Datenpakete in der Kontrolleinheit 2 weiter verarbeitet.The chip 3 be there, like an arrow 4 indicated, incoming data packets supplied (so-called ingress). When processing or forwarding the data packets, they must first be checked for integrity, that is to say in a format which complies with a respective protocol used. This is essentially done by checking a checksum present in the data packets. This review will be in the acceleration unit 1 performed. After this check, the data packets in the control unit 2 further processed.

In ähnlicher Weise wird bei einem durch einen Pfeil 5 angedeuteten Versenden von Paketen (egress) die Beschleunigungseinheit 1 beispielsweise angewiesen, die in das Paket einzutragende Prüfsumme zu berechnen. Dabei kann die Beschleunigungseinheit 1 vorzugsweise direkt auf einen Speicher, in welchem die zu bearbeitenden Pakete gespeichert sind, zugreifen, so dass der Beschleunigungseinheit 1 von der Kontrolleinheit 2 nur eine entsprechende Adresse mitgeteilt werden muss (so genannter Direct Memory Access, DMA). Das Berechnen und Abspeichern der Prüfsumme bzw. das Überprüfen der Prüfsumme erfolgt dann ohne weiteres Eingreifen der Kontrolleinheit 2, welche auf diese Weise entlastet wird, und für ihre eigentlichen Aufgaben zur Verfügung steht. Zudem kann, wie im Folgenden detailliert erläutert werden wird, die Beschleunigungseinheit 1 derart ausgestaltet sein, dass die Berechnung und Überprüfung von Prüfsummen wesentlich schneller als in einem Standardprozessor erfolgen kann.Similarly, at a by an arrow 5 indicated sending of packets (egress) the acceleration unit 1 For example, instructed to calculate the checksum to be entered in the packet. In this case, the acceleration unit 1 preferably directly accessing a memory in which the packets to be processed are stored, so that the acceleration unit 1 from the control unit 2 only a corresponding address must be communicated (so-called Direct Memory Access, DMA). The calculation and storage of the checksum or checking the checksum is then carried out without further intervention of the control unit 2 , which is relieved in this way, and is available for their actual tasks. In addition, as will be explained in detail below, the acceleration unit 1 be designed such that the calculation and verification of checksums can be done much faster than in a standard processor.

Die Beschleunigungseinheit 1 kann auch zur Übernahme von weiteren Routineaufgaben bei der Weiterleitung von Datenpaketen ausgestaltet sein. Beispielsweise kann die Beschleunigungseinheit 1 ausgestaltet sein, die zulässige Verbleibenszeit im Netzwerk des Pakets, die so genannte Time-to-live (TTL), zu dekrementieren, was bei jeder Weiterleitung erfolgt und was für den Einsatz der Beschleunigungseinheit 1 beispielsweise in Routern vorteilhaft ist. Die Beschleunigungseinheit 1 stellt also allgemein einen Hardwarebeschleuniger zur Verarbeitung von Datenpaketen dar.The acceleration unit 1 can also be configured to take over other routine tasks in the forwarding of data packets. For example, the acceleration unit 1 be designed to decrement the allowable time spent in the network of the packet, the so-called time-to-live (TTL), what happens at each forwarding and what the use of the acceleration unit 1 For example, in routers is advantageous. The acceleration unit 1 So generally represents a hardware accelerator for processing data packets.

Ein Ausführungsbeispiel der Beschleunigungseinheit 1 wird im Folgenden unter Bezugnahme auf 2-5 näher erläutert. Dabei zeigt 2 ein Blockschaltbild des Ausführungsbeispiels der Beschleunigungseinheit 1, während 3 ein Flussdiagramm der Arbeitsweise der Beschleunigungseinheit 1 aus 2 zeigt. 4 und 5 beziehen sich auf Details der Beschleunigungseinheit 1 aus 2.An embodiment of the acceleration unit 1 is below with reference to 2 - 5 explained in more detail. It shows 2 a block diagram of the embodiment of the acceleration unit 1 , while 3 a flow chart of the operation of the acceleration unit 1 out 2 shows. 4 and 5 refer to details of the acceleration unit 1 out 2 ,

Auf der linken Seite von 2 sind schematisch Eingänge der Beschleunigungseinheit 1 dargestellt. Ein Reset-Eingang reset_n kann zum Rücksetzen der Beschleunigungseinheit benutzt werden, während ein Takteingang clk zum Zuführen eines Taktsignals dient. Dieses Taktsignal kann ein auf dem Chip 3 von 1 allgemein verwendetes Taktsignal sein, oder das Taktsignal kann für die Beschleunigungseinheit 1 gesondert erzeugt werden. Zur Erzeugung des Taktsignals kann dabei jede herkömmliche Vorrichtung wie beispielsweise ein Quarzoszillator, ggf. in Verbindung mit einer Phasenregelschleife, verwendet werden.On the left side of 2 are schematic inputs of the acceleration unit 1 shown. A reset input reset_n can be used to reset the acceleration unit, while a clock input clk is used to supply a clock signal. This clock signal can be on the chip 3 from 1 be commonly used clock signal, or the clock signal may be for the acceleration unit 1 be generated separately. In this case, any conventional device such as, for example, a quartz oscillator, possibly in conjunction with a phase-locked loop, can be used to generate the clock signal.

Ein Eingang check_enable dient zur Aktivierung bzw. Deaktivierung der Beschleunigungseinheit 1. Ein Eingang bus_wait_n wird bei Anbindung der Beschleunigungseinheit 1 an einen Datenbus benutzt. Die Eingänge reset_n, clk, check_enable und bus_wait_n sind dabei in dem dargestellten Ausführungsbeispiel als Ein-Biteingänge ausgestaltet, das heißt sie können entweder aktiviert oder deaktiviert sein.An input check_enable is used to activate or deactivate the acceleration unit 1 , An input bus_wait_n becomes when the acceleration unit is connected 1 used on a data bus. The inputs reset_n, clk, check_enable and bus_wait_n are configured in the illustrated embodiment as a one-bit inputs, that is, they can either be activated or deactivated.

Ein in dem dargestellten Ausführungsbeispiel 32 Bit breiter Dateneingang data_in dient zum Einlesen der durch die Beschleunigungseinheit zu verarbeitenden Datenpakete bzw. der benötigten Teile hiervon. Die Breite des Eingangs data_in wird dabei allgemein bevorzugt entsprechend einer internen Verarbeitungsbreite der Beschleunigungseinheit 1 gewählt. Über den Dateneingang data_in eingelesene Daten werden in einem ersten Datenregister 6 gespeichert.A 32-bit data input in the illustrated embodiment data_in is used to read the data packets to be processed by the acceleration unit or the required parts thereof. The width of the input data_in is generally preferred according to an internal processing width of the acceleration unit 1 selected. Data read in via the data input data_in are stored in a first data register 6 saved.

Des Weiteren weist die Beschleunigungseinheit 1 aus 1 einen Eingang ctrl_in_en zum Aktivieren eines Steuerregisters 12 auf, wobei mit dem Steuerregister 12 ein 16 Bit breiter Steuereingang ctrl_in verknüpft ist. Die Bitbreite des Steuereingangs bestimmt sich allgemein aus der Anzahl der zur Steuerung nötigen Informationen. An dem Steuereingang ctrl_in anliegende Steuersignale werden nur dann berücksichtigt bzw. verarbeitet, wenn das Steuerregister 12 über den Eingang ctrl_in_en aktiviert ist.Furthermore, the acceleration unit 1 out 1 an input ctrl_in_en to activate a control register 12 on, being with the control register 12 a 16 bit wide control input is ctrl_in linked. The bit width of the control input is generally determined by the number of information required for control. Control signals applied to the control input ctrl_in are only taken into account or processed when the control register 12 is activated via the input ctrl_in_en.

Schließlich weist die Beschleunigungseinheit 1 einen 32 Bit breiten Adresseingang addr_start_in auf, über welchen der Beschleunigungseinheit 1 eine Startadresse eines zu verarbeitenden Datenpakets in einem Speicher übergeben wird. Diese Startadresse wird in einem Adressregister 13 gespeichert. Wiederum ist die Breite von 32 Bit lediglich als Beispiel zu verstehen, sie hängt im Wesentlichen von der Kapazität des jeweils zur Speicherung der Datenpakete verwendeten Speichers ab.Finally, the acceleration unit points 1 a 32-bit address input addr_start_in on which the acceleration unit 1 a start address of a data packet to be processed is transferred in a memory. This start address is in an address register 13 saved. Again, the width of 32 bits is to be understood as an example only, it essentially depends on the capacity of the memory used for storing the data packets.

Ein beispielhafter Aufbau des Steuerregisters 12 und somit auch des Steuersignals ctrl_in ist in 4 dargestellt, in welcher die Funktion der 16 Bits (Bit 0 bis Bit 15) kurz beschrieben sind. Die genaue Funktion der verschiedenen Bits des Steuerregisters wird später bei der Darstellung der Arbeitsweise der erfindungsgemäßen Berechnungseinheit unter Bezugnahme auf 3 erläutert.An exemplary structure of the control register 12 and thus also the control signal ctrl_in is in 4 in which the function of the 16 bits (bit 0 to bit 15) are briefly described. The detailed operation of the various bits of the control register will be described later in the description of the operation of the calculation unit according to the present invention with reference to FIG 3 explained.

Wie weiter in 2 gezeigt, ist das erste Datenregister 6 mit einem ersten Eingang eines Multiplexers 7 verschaltet. Ein Ausgang des Multiplexers 7 ist mit einem ersten Eingang ALU_IN1 einer Arithmetisch/Logischen Einheit (Arithmetic Logic Unit, ALU) 8 verschaltet. Die Arithmetisch/Logische Einheit 8 wird durch ein Steuersignal CTRL_ALU angesteuert. Wie später erläutert werden wird, wird die Arithmetisch/Logische Einheit 8 hauptsächlich dazu benutzt, eine Einser-Komplement-Summe der an dem ersten Eingang ALU_IN1 und einem zweiten Eingang ALU_IN2 anliegenden Werte zu bilden. Diese Werte werden als 32 Bit breites Ausgangssignal alu_out ausgegeben und in einem zweiten Datenregister 10 gespeichert. Ein Überlauf bei der Summenbildung (carry) wird an einem Ausgang ALU_CARRY_OUT ausgegeben und in einem Übertragsregister 9 zwischengespeichert, um bei dem nächsten Berechnungsschritt der Arithmetischen/Logischen Einheit 8 an einem Übertragseingang ALU_CARRY_IN zugeführt zu werden.As in further 2 shown is the first data register 6 with a first input of a multiplexer 7 connected. An output of the multiplexer 7 is connected to a first input ALU_IN1 of an Arithmetic Logic Unit (ALU) 8th connected. The Arithmetic / Logical Unit 8th is driven by a control signal CTRL_ALU. As will be explained later, the arithmetic / logical unit becomes 8th mainly used to form a one's complement sum of the values applied to the first input ALU_IN1 and a second input ALU_IN2. These values are output as a 32-bit output signal alu_out and in a second data register 10 saved. An overflow in the carry is issued at an output ALU_CARRY_OUT and in a carry register 9 cached at the next calculation step of the arithmetic / logic unit 8th to be supplied at a carry input ALU_CARRY_IN.

Über eine Verbindung hhw, beispielsweise eine Leitung, kann der Inhalt des zweiten Datenregisters 10 an dem zweiten Eingang ALU_IN2 angelegt werden. Wahlweise hierzu kann über die Verbindung hhw die höherwertigen 16 Bit des zweiten Datenregisters 10 an dem zweiten Eingang ALU_IN2 angelegt werden, während die niedrigwertigen 16 Bit über eine Verbindung lhw und den Multiplexer 7 an dem ersten Eingang ALU IN1 angelegt werden können.Via a connection hhw, for example a line, the content of the second data register 10 be created at the second input ALU_IN2. Alternatively, via the connection hhw, the more significant 16 bits of the second data register 10 at the second input ALU_IN2, while the low order 16 bits are connected via a connection lhw and the multiplexer 7 can be applied to the first input ALU IN1.

Diese und weitere Funktionen innerhalb der Berechnungseinheit 1 werden durch eine Steuerung 11, welche bevorzugt in Form eines endlichen Automaten (finite state machine) realisiert ist, gesteuert. Die Verbindungen zwischen der Steuereinrichtung 11 und den übrigen Komponenten der Beschleunigungseinheit 1 sind zur Vereinfachung nicht dargestellt.These and other functions within the calculation unit 1 be through a controller 11 , which is preferably realized in the form of a finite state machine. The connections between the controller 11 and the other components of the acceleration unit 1 are not shown for simplicity.

Weiterhin umfasst die Beschleunigungseinheit 1 aus 2 ein Zählregister 14, in welchem die Anzahl von verarbeiteten Datenwörtern eines Datenpakets gezählt werden kann, ein temporäres Register 15 zum Zwischenspeichern von benötigten Daten wie beispielsweise der bereits erwähnten Time-to-live, wobei das Zählregister 14 und das temporäre Register 15 bei dem dargestellten Ausführungsbeispiel jeweils eine Breite von 16 Bit haben. Schließlich umfasst die Beschleunigungseinheit 1 noch ein Header-Längenregister 16, in welchem eine Länge eines Internet-Headers eines Datenpakets gespeichert werden kann, sowie ein 3 Bit breites Prüfsummenzählregister 17, welches bei der Berechnung und Überprüfung von Prüfsummen benutzt wird. Das Header-Längenregister 16 weist eine Breite von 4 Bits auf.Furthermore, the acceleration unit comprises 1 out 2 a counting register 14 in which the number of processed data words of a data packet can be counted, a temporary register 15 for caching required data such as the already mentioned time-to-live, wherein the count register 14 and the temporary register 15 each have a width of 16 bits in the illustrated embodiment. Finally, the acceleration unit includes 1 another header length register 16 in which a length of an Internet header of a data packet can be stored, and a 3-bit checksum count register 17 , which is used in the calculation and verification of checksums. The header length register 16 has a width of 4 bits.

Auf der rechten Seite der Beschleunigungseinheit 1 aus 2 sind die Ausgänge der Beschleunigungseinheit dargestellt. Die Beschleunigungseinheit 1 weist in dem dargestellten Ausführungsbeispiel einen Datenausgang data_out von 32 Bit Breite auf, welcher mit dem zweiten Datenregister 10 verknüpft wird. Zudem weist die Beschleunigungseinheit 1 einen Steuerausgang ctrl_out von 16 Bit Breite auf, über welchen das Steuerregister 12 ausgelesen werden kann. Über einen Ausgang addr_out können schließlich Adressdaten, beispielsweise der Speicherort berechneter Prüfsummen, ausgegeben werden. Ein Ausgang bus_request dient wiederum zur Ansteuerung eines Datenbusses. Ein Ausgang r_w dient beispielsweise zur Ansteuerung eines Speichers und gibt an, ob in den Speicher geschrieben oder aus dem Speicher gelesen werden soll. Ein Ausgang ipv4 gibt an, ob die verarbeiteten Daten dem IPv4 (Internet Protocol Version 4)-Protokoll entsprechen. Ein Ausgang packet_error zeigt an, ob ein Datenpaket, dessen Prüfsumme überprüft wurde, fehlerhaft ist. Schließlich zeigt ein Ausgang check_ready an, wenn eine Überprüfung beendet ist. In diesem Fall kann beispielsweise das nächste Datenpaket zur Überprüfung oder zur Prüfsummenberechnung an die Beschleunigungseinheit 1 übergeben werden. Zu bemerken ist, dass einander entsprechende Ein- und Ausgänge wie z.B. ctrl_in und ctrl_out sowohl separat als auch als bidirektionale Ein/Ausgänge realisiert werden können.On the right side of the acceleration unit 1 out 2 the outputs of the acceleration unit are shown. The acceleration unit 1 has in the illustrated embodiment, a data output data_out 32 bits wide, which with the second data register 10 is linked. In addition, the acceleration unit points 1 a control output ctrl_out of 16 bits wide, over which the control register 12 can be read out. Finally, address data, for example the location of calculated checksums, can be output via an output addr_out. An output bus_request in turn serves to control a data bus. An output r_w, for example, serves to drive a memory and indicates whether it should be written to memory or read from memory. An ipv4 output indicates whether the processed data complies with the IPv4 (Internet Protocol Version 4) protocol. An output packet_error indicates whether a data packet whose checksum has been checked is incorrect. Finally, an output will indicate check_ready when a check is completed. In this case, for example, the next data packet for checking or for checksum calculation to the acceleration unit 1 be handed over. It should be noted that corresponding inputs and outputs such as ctrl_in and ctrl_out can be realized both separately and as bidirectional inputs / outputs.

Es ist darauf hinzuweisen, dass die in 2 dargestellten Bitbreiten lediglich beispielhaft zu verstehen sind. Insbesondere sind auch Realisierungen mit höherer Bitbreite, z.B. mit einer 64-Bit Arithmetisch/Logischen Einheit und entsprechend angepassten Ein- und Ausgängen, denkbar. Auch sind die Bitbreiten nicht auf Vielfache von 16 Bit beschränkt.It should be noted that the in 2 shown bit widths are to be understood as exemplary only. In particular, implementations with a higher bit width, for example with a 64-bit arithmetic / logic unit and correspondingly adapted inputs and outputs, are also conceivable. Also, the bit widths are not limited to multiples of 16 bits.

Der Einsatzbereich der erfindungsgemäßen Beschleunigungseinheit und auch des Gesamtsystems von 1 liegt insbesondere in der Verarbeitung und Weiterleitung von Netzwerkverkehr auf dem so genannten Layer 3 (Internet Protocol) und höher. Die Arbeitsschritte einer derartigen Verarbeitung werden nun für das Beispiel eines Internet-Protokolls (Layer 3) und gegebenenfalls eines einkapsulierten Layer-4-Protokolls (zum Beispiel TCP/UDP) anhand des Flussdiagramms von 3 näher erläutert.The field of application of the acceleration unit according to the invention and also of the overall system of 1 lies in particular in the processing processing and forwarding of network traffic on the so-called layer 3 (Internet Protocol) and higher. The steps of such processing will now be used for the example of an Internet Protocol (Layer 3 ) and, optionally, an encapsulated Layer 4 protocol (for example, TCP / UDP) using the flowchart of FIG 3 explained in more detail.

Die Überprüfung/Neuberechnung von Prüfsummen, insbesondere im Rahmen der Überprüfung oder Neuberechnung eines Headers für das Layer-3-Protokoll, wird in Schritt 18 in 3 gestartet und beginnt, wenn am Eingang check_enable von 2 die Überprüfung gestartet wird, beispielsweise indem eine logische 1 an diesem Eingang angelegt wird. In Schritt 19 werden dann benötigte Daten an die Beschleunigungseinheit 1 übergeben. Diese benötigten Daten umfassen insbesondere die Startadresse des zu verarbeitenden Datenpakets, welche über den Adresseingang addr_start_in aus 2 zugeführt wird, sowie ein dem Steuereingang ctrl_in zugeführtes Signal, welches insbesondere angibt, ob eine Layer-3-Verarbeitung (IP Protocol) und/oder eine Layer-4-Verarbeitung (TCP/UDP) stattfinden soll, wofür Bits 0 und 4 des in 4 dargestellten Steuerregisters zuständig sind. Dabei bestimmt Bit 4, ob eine Layer-4-Verarbeitung und Bit 0, ob eine Layer-3-Verarbeitung vorgenommen werden soll. Zudem wird festgelegt, ob es sich um Little- oder Big-Endian-Daten handelt (Bit 15), wobei dies angibt, ob die höherwertigen oder niedrigwertigen Oktette oder Bytes eines Datenworts (16-Bit-Worts) im jeweils ersten Oktett angeordnet sind. Des Weiteren wird angegeben, ob Prüfsummen überprüft oder neu berechnet werden sollen (Bit 5 für IP Protocol und Bit 1 für TCP/UDP-Protokoll), und es wird festgelegt, ob das Layer-4-Protokoll ein TCP oder ein UDP-Protokoll ist (Bit 3). Letzteres ist selbstverständlich nur dann erforderlich, wenn in Bit 0 angegeben ist, dass eine Layer-4-Verarbeitung stattfinden soll.The check / recalculation of checksums, particularly in the context of the review or recalculation of a header for the Layer 3 protocol, is in step 18 in 3 started and starts when check_enable at the entrance of 2 the check is started, for example by applying a logical 1 to this input. In step 19 then required data to the acceleration unit 1 to hand over. These required data include in particular the start address of the data packet to be processed, which via the address input addr_start_in off 2 is fed, as well as the control input ctrl_in signal supplied, which indicates in particular whether a layer-3 processing (IP Protocol) and / or a layer 4 processing (TCP / UDP) should take place, for which bits 0 and 4 of in 4 control register are responsible. In this case, bit 4 determines whether layer 4 processing and bit 0 whether layer 3 processing should be performed. In addition, it determines whether they are Little or Big Endian data (Bit 15), indicating whether the high order or low order octets or bytes of a data word (16-bit word) are located in the first octet. It also specifies whether checksums should be scanned or recalculated (IP Protocol 5 bit and TCP / UDP protocol 1 bit), and whether the Layer 4 protocol is a TCP or UDP protocol (Bit 3). Of course, the latter is only required if it is specified in bit 0 that layer 4 processing should take place.

Schließlich kann auch festgelegt werden, ob das vollständige Paket oder nur das Ergebnis der Überprüfung an die übergeordnete Kontrolleinheit zurückgegeben werden soll (Bit 14).Finally, can Also be determined, whether the full package or just the result to the review the parent Control unit returned should be (bit 14).

Wenn Bit 4 gesetzt ist, also eine Layer-3-Verarbeitung stattfinden soll, wird in Schritt 20 überprüft, ob eine Überprüfung der Prüfsumme (Bit 5 gesetzt) oder eine Neuberechnung der Prüfsumme (Bit 5 des Steuerregisters nicht gesetzt) erfolgen soll. Diese und die im Folgenden beschriebenen Überprüfungen werden insbesondere durch den endlichen Zustandsautomaten 11 aus 2 durchgeführt. Soll die Prüfsumme überprüft werden, so wird diese Überprüfung in Schritt 21 durchgeführt. Das Ergebnis dieser Überprüfung wird in Schritt 23 ausgewertet. Falls die Prüfsumme bzw. Checksumme nicht korrekt ist, wird ein entsprechender Eintrag im Steuerregister vorgenommen (im Beispiel von 4 wird Bit 6 auf 0 gesetzt), und das Paket wird verworfen, womit das Verfahren für dieses Paket beendet ist (Schritt 42). Ist die Prüfsumme korrekt, so wird dies ebenfalls ins Steuerregister eingetragen (Schritt 27), das heißt Bit 6 wird auf 1 gesetzt.If bit 4 is set, so a layer 3 processing should take place, in step 20 Checks whether a check of the checksum (bit 5 set) or a recalculation of the checksum (bit 5 of the control register not set) should take place. These and the checks described below are made especially by the finite state machine 11 out 2 carried out. If the checksum is to be checked, this check will be made in step 21 carried out. The result of this review will be in step 23 evaluated. If the checksum or checksum is incorrect, a corresponding entry is made in the control register (in the example of 4 bit 6 is set to 0), and the packet is discarded, completing the procedure for this packet (step 42 ). If the checksum is correct, this is also entered in the control register (step 27 ), that is, bit 6 is set to 1.

Soll die Prüfsumme neu berechnet werden, wird dies in Schritt 22 durchgeführt. Details zur Prüfsummenberechnung bzw. -überprüfung werden später erläutert. Ein erfolgreiches Berechnen der Prüfsumme wird ebenfalls in Bit 6 des Steuerregisters als „ok" vermerkt. In Schritt 25 wird dann überprüft, ob nur das Ergebnis oder das gesamte Paket mit der berechneten Prüfsumme zurückgegeben werden soll (Bit 14 des Steuerregisters). Soll nun nur das Ergebnis zurückgegeben werden, wird in Schritt 28 die berechnete Prüfsumme zur späteren Ausgabe zwischengespeichert, beispielsweise in einem externen Speicher. Ansonsten wird in Schritt 29 an der Stelle, an der in dem Speicher die Prüfsumme des Datenpakets gespeichert ist, die neue Prüfsumme eingetragen und somit das Datenpaket direkt aktualisiert.If the checksum is to be recalculated, this will be done in step 22 carried out. Details on checksum calculation and verification will be explained later. A successful calculation of the checksum is also noted in bit 6 of the control register as "ok." In step 25 it is then checked whether only the result or the entire packet with the calculated checksum should be returned (bit 14 of the control register). If now only the result is to be returned, in step 28 the calculated checksum is cached for later output, for example, in an external memory. Otherwise, in step 29 at the point at which the checksum of the data packet is stored in the memory, the new checksum is entered and thus the data packet is updated directly.

Die Schritte 26, 27, 28 und 29 beenden jeweils den Abschnitt 43, in welchem die für das Layer-3-Protokoll nötigen Berechnungen ausgeführt werden.The steps 26 . 27 . 28 and 29 finish each section 43 in which the calculations necessary for the Layer 3 protocol are carried out.

Nach den Schritten 27-29 wird in Schritt 30 des Blocks 44 mit der Behandlung eines einkapsulierten Layer-4-Protokolls begonnen. In Schritt 30 wird überprüft, ob ein einkapsuliertes Layer-4-Protokoll behandelt werden soll, was in Bit 0 des Steuerregisters 12 aus 4 festgelegt wird. Falls nein, wird zu Schritt 41 übergegangen und dann das Verfahren beendet, falls ja, wird in Schritt 31 festgestellt, ob es sich bei dem Layer-4-Protokoll um ein TCP-(Transmission Cotrol Protocol) oder UDP-Protokoll (User Datagramm Protocol) handelt. Dies wird in Bit 3 des Steuerregisters 12 aus 4 angegeben. Können mehr Layer-4-Protokolle als TCP und UDP zur Anwendung kommen, können beispielsweise die nicht benutzten Bits 8-12 des Steuerregisters genutzt werden, um diese weiteren Layer-4-Protokolle zu kennzeichnen. Gleiches gilt im Übrigen für den Fall, dass mehr als ein Layer-3-Protokoll Anwendung findet.After the steps 27 - 29 will be in step 30 of the block 44 started handling an encapsulated Layer 4 protocol. In step 30 it is checked whether an encapsulated Layer 4 protocol should be handled, which is in bit 0 of the control register 12 out 4 is determined. If not, go to step 41 passed over and then the process ends, if so, in step 31 Determines whether the Layer 4 protocol is a Transmission Cotrol Protocol (TCP) or User Datagram Protocol (UDP). This will be in bit 3 of the control register 12 out 4 specified. If more Layer 4 protocols than TCP and UDP are used, for example, the unused bits 8-12 of the control register can be used to identify these other Layer 4 protocols. Incidentally, the same applies in the event that more than one layer-3 protocol is used.

Die Schritte 32-41 entsprechen im Wesentlichen den für das Layer-3-Protokoll durchgeführten Schritten 20-29. So wird in Schritt 32 überprüft, ob die Prüfsumme überprüft oder neu berechnet werden soll, was durch Bit 1 festgelegt wird. Soll die Prüfsumme überprüft werden, geschieht dies in Schritt 33, und das Ergebnis dieser Prüfung wird in Schritt 35 ausgewertet, wobei im Falle einer nicht korrekten Prüfsumme dies im Steuerregister in Bit 2 in Schritt 38 eingetragen wird und das Paket verworfen wird, während, wenn die Prüfsumme korrekt ist, dies in Schritt 39 im Steuerregister in Bit 2 vermerkt wird.The steps 32 - 41 are essentially the same as the Layer 3 protocol steps 20 - 29 , So in step 32 checks whether the checksum is to be checked or recalculated, which is determined by bit 1. If the checksum is to be checked, this is done in step 33 , and the result of this test will be in step 35 evaluated in the case of an incorrect checksum in the control register in bit 2 in step 38 is entered and the package is discarded while, if the checksum is correct, this in step 39 is noted in the control register in bit 2.

Soll die Prüfsumme hingegen neu berechnet werden, wird dies in Schritt 34 vorgenommen und die erfolgreiche Berechnung in Schritt 36 im Steuerregister in Bit 2 vermerkt. In Schritt 37 wird wiederum ähnlich Schritt 25 Bit 14 des Steuerregisters ausgewertet. Soll nur das Ergebnis zurückgeliefert werden, wird die berechnete Prüfsumme, gegebenenfalls mit einer in Schritt 28 zwischengespeicherten Layer-3-Prüfsumme, an die durch den Eingang addr_start_in vorgegebenen Adresse geschrieben. Es kann jedoch prinzipiell auch eine andere Adresse zur Ausgabe vorgesehen sein, oder es kann sogar ein separater Ausgang hierfür an der Berechnungseinheit 1 vorgesehen sein. Andernfalls wird in Schritt 41 die entsprechende Speicherstelle des zu bearbeitenden Pakets mit der neu berechneten Prüfsumme aktualisiert. Nach jedem der Schritte 38-41 wird das Verfahren, das heißt die Bearbeitung des jeweiligen Datenpakets, in Schritt 42 beendet.On the other hand, if the checksum is to be recalculated, this will be done in step 34 made and the successful calculation in step 36 noted in the control register in bit 2. In step 37 will again be similar step 25 Bit 14 of the control register is evaluated. If only the result is to be returned, the calculated checksum, if necessary with one in step 28 cached Layer 3 checksum, written to the address specified by the input addr_start_in. However, it is also possible in principle to provide a different address for the output, or it may even be a separate output for this purpose at the calculation unit 1 be provided. Otherwise, in step 41 updates the corresponding memory location of the package to be processed with the newly calculated checksum. After each of the steps 38 - 41 the procedure, that is the processing of the respective data packet, in step 42 completed.

Es ist zu bemerken, dass mittels Bit 7 des Steuerregisters zusätzlich angegeben werden kann, dass die Lebenszeit (Time-to-live) des Pakets um 1 erniedrigt werden soll. Wird dies vorgenommen, ist in jedem Fall eine Neuberechnung der Layer-3-Prüfsumme nötig, da sich durch die Dekrementierung der Lebenszeit die Prüfsumme ändert.It It should be noted that also specified by means of bit 7 of the control register can be that the lifetime (time-to-live) of the package by 1 lowers shall be. If this is done, in any case, a recalculation the Layer 3 checksum needed because By decrementing the lifetime, the checksum changes.

Im Folgenden soll nun die Berechnung der Prüfsummen anhand von 5 näher erläutert werden. Das vorgestellte Berechnungsverfahren basiert auf dem in dem eingangs zitierten Request for Comments (rfc) 1071 vorgestellten Verfahren. Bei diesem Verfahren werden zunächst benachbarte Oktette, das heißt Bytes, des zu behandelnden Teils des Datenpakets (des Layer-3-Headers oder des Layer-4-Datagramms) zu 16-Bit-Worten gepaart, und die Summe der Einer-Komplemente dieser 16-Bit-Worte wird gebildet. Das Einer-Komplement einer Bitfolge ist dabei entsprechend der üblichen Bezeichnung diejenige Bitfolge, bei welcher alle Bits der ursprünglichen Bitfolge invertiert sind. Beispielsweise wäre das Einer-Komplement von 001 110. Als Prüfsumme wird dann das Einer-Komplement der so berechneten Summe verwendet. Zum Überprüfen der Prüfsumme wird die Summe der Einer-Komplemente über sämtliche Oktette zuzüglich der Prüfsumme berechnet. Wenn das Ergebnis nur gesetzte Bits aufweist, ist die Prüfsumme korrekt bzw. die Integrität des Teils des Datenpakets, für welches die Prüfsumme gilt, bestätigt.In the following, the calculation of the checksums based on 5 be explained in more detail. The presented calculation method is based on the method presented in the Request for Comments (rfc) 1071 quoted above. In this method, adjacent octets, that is bytes, of the portion of the data packet to be treated (the Layer 3 header or the Layer 4 datagram) are first paired into 16-bit words, and the sum of the one's complements of these 16 -Bit words is formed. The one's complement of a bit sequence is, according to the usual designation, the bit sequence in which all bits of the original bit sequence are inverted. For example, the one's complement would be 001 110. The checksum then uses the one's complement of the sum thus calculated. To check the checksum, the sum of the one's complements is calculated over all octets plus the checksum. If the result has only bits set, the checksum is correct, or the integrity of the part of the data packet for which the checksum is validated.

Zur Beschleunigung dieses Verfahrens wird gemäß der vorliegenden Erfindung die Berechnung bzw. Überprüfung der Prüfsumme mit einer größeren Bitbreite als 16 Bit ausgeführt, im Beispiel von 2 mit einer Breite von 32 Bit. Es werden daher in einem Abschnitt 48 von 5 immer n × 16 Bit breite Wörter 45 und 46 in Schritten 47 aufaddiert, wobei die Bitbreite in 5 durch n × 216 symbolisiert ist. Im Falle von 2 ist n beispielsweise gleich 2, das heißt es werden 32 Bit breite Wörter addiert.To speed up this method, according to the present invention, the calculation or check of the checksum is carried out with a bit width greater than 16 bits, in the example of FIG 2 with a width of 32 bits. It will therefore be in a section 48 from 5 always n × 16 bit wide words 45 and 46 in steps 47, wherein the bit width in 5 symbolized by n × 2 16 . In case of 2 For example, n is equal to 2, that is, 32-bit wide words are added.

Im Ausführungsbeispiel von 2 wird dieses Aufaddieren vorgenommen, indem das Ergebnis jeder Addition über die Verbindung hhw auf den zweiten Eingang ALU_IN2 der Arithmetisch/Logischen Einheit 8 zurückgeführt wird und zu diesem vorherigen Ergebnis das nächste 32-Bit-Wort, welches über den Dateneingang data_in, das erste Datenregister 6 und den Multiplexer 7 dem ersten Eingang ALU_IN1 zugeführt wird, addiert wird. Dabei wird über das Übertragsregister 9 auch ein Übertrag bei der Summation mitberücksichtigt.In the embodiment of 2 This addition is done by adding the result of each addition via the connection hhw to the second input ALU_IN2 of the arithmetic / logic unit 8th is returned to this previous result and the next 32-bit word, which via the data input data_in, the first data register 6 and the multiplexer 7 is supplied to the first input ALU_IN1 is added. This is done via the carry register 9 also includes a carryover in the summation.

Wurden auf diese Weise alle relevanten Daten addiert, wird das Ergebnis dieses Aufaddierens „gefaltet", bis eine 16 Bit breite Summe entsteht. Für diese Faltung werden jeweils die niedrigsten 16 Bit über eine Verbindung lhw und den Multiplexer 7 auf den ersten Eingang ALU_IN1 gegeben, während die übrigen höherwertigen Bits auf den Eingang ALU_IN2 gegeben werden. Ist n eine Zweierpotenz, kann prinzipiell auf diese Weise auch immer die untere Hälfte auf den ersten Eingang ALU_IN1 und die obere Hälfte der Bits auf den Eingang ALU_IN2 gegeben werden. Im dargestellten Beispiel mit 32 Bit würden beispielsweise Bit 0-15 auf den Eingang ALU_IN1 und die Bits 16-31 auf den Eingang ALU_IN2 gegeben werden und dann addiert werden, wodurch eine 16-Bit-Summe entsteht, deren Einer-Komplement dann als Prüfsumme verwendet wird. Ist n > 2, sind, wenn immer die niedrigsten 16 Bit auf ALU_IN1 gegeben werden, n – 1 Schritte zur Faltung erforderlich, bei n eine Zweierpotenz (n = 21) kann dies auf i Schritte reduziert werden, indem immer wie beschrieben die niedrigere Hälfte der Bits auf den einen Eingang und die höhere Hälfte der Bits auf den anderen Eingang gegeben wird.If all the relevant data has been added in this way, the result of this addition is "folded" until a 16-bit-wide sum is produced, for which convolution the lowest 16 bits are connected via a connection lhw and the multiplexer 7 given to the first input ALU_IN1, while the remaining higher order bits are given to the input ALU_IN2. If n is a power of two, then in principle the lower half can always be given to the first input ALU_IN1 and the upper half of the bits to the input ALU_IN2. For example, in the 32-bit example shown, bits 0-15 would be applied to the input ALU_IN1 and bits 16-31 would be applied to the input ALU_IN2 and then added together, resulting in a 16-bit sum whose one's complement is then used as the checksum becomes. Is n> 2, whenever the lowest 16 bits are placed on ALU_IN1, n - 1 steps for folding required for n a power of two (n = 2 1) this can be reduced to i steps by always as described the lower Half of the bits are given to one input and the higher half of the bits to the other input.

Mathematische gesehen wird bei diesem beschleunigten Berechnungsverfahren ausgenutzt, dass die Berechnungsvorschrift zur Berechnung der Prüfsumme invariant gegenüber der Größe des so genannten Restklassenrings, auf welchem das anfängliche Aufsummieren durchgeführt wird, ist. Aufgrund der abschließenden Faltung durch fortgesetzte Addition von Teilergebnissen im Restklassenring 216 ist das Gesamtergebnis dann invariant gegenüber der Größe 2n×16,n > 1, der zur Berechnung der Teilergebnisse verwendet wurde. Somit können die anfänglichen Teilberechnungen auf Vielfachen von 16 Bit breiten Datenwörtern durchgeführt werden, was die Berechnung beschleunigt. Insbesondere ist auch eine Realisierung mit größerer Datenbreite als 32 Bit möglich, hierzu muss dann eine entsprechende Arithmetisch/Logische Einheit 8 vorgesehen werden. Diese kann auch eine einstellbare (parametrisierbare) Datenbreite aufweisen, in diesem Fall muss dann die Anbindung an die übergeordnete Kontrolleinheit und das übrige System ebenfalls für flexible Datenbreiten ausgelegt sein. Zu bemerken ist auch, dass die Datenbreite nicht auf Vielfache von 16 Bit beschränkt ist, die Berechnung kann selbstverständlich auch z.B. mit einer 36-Bit Arithmetisch/Logischen Einheit durchgeführt werden, wobei dann je nach Realisierung gegebenenfalls nicht alle Bits zur Berechnung genutzt werden.Mathematically, this accelerated calculation method makes use of the fact that the calculation rule for calculating the checksum is invariant with respect to the size of the so-called residual class ring on which the initial totalizing is performed. Due to the final convolution by continued addition of partial results in the residual class ring 2 16 , the overall result is then invariant with respect to the quantity 2 n × 16 , n> 1, which was used to calculate the partial results. Thus, the initial sub-calculations can be performed on multiples of 16-bit wide data words, which speeds up the computation. In particular, a realization with a larger data width than 32 bits is possible, this then has a corresponding arithmetic / logical unit 8th be provided. This can also have an adjustable (parametrisierbare) data width, in this case then the connection to the higher-level control unit and the rest of the system also be designed for flexible data widths. It should also be noted that the data width is not limited to multiples of 16 bits, the calculation can of course also be carried out, for example, with a 36-bit arithmetic / logic unit, in which case, depending on the implementation, not all bits may be used for the calculation.

Die Ausführungszeit bei der Prüfsummenberechnung ist dabei näherungsweise umgekehrt proportional zur verwendeten Datenbreite bei der Berechnung. Die mögliche Datenbreite wird dabei im Wesentlichen durch die mögliche Speicher- bzw. Busanbindung der Beschleunigungseinheit 1 bestimmt.The execution time in the checksum calculation is approximately inversely proportional to the data width used in the calculation. The possible data width is essentially due to the possible memory or bus connection of the acceleration unit 1 certainly.

Im Folgenden soll diesbezüglich näher auf verschiedene Möglichkeiten zur Anbindung der Beschleunigungseinheit 1 an das übrige System eingegangen werden.In the following, it is intended to explain in more detail various possibilities for connecting the acceleration unit 1 to the rest of the system.

In 6 ist die Beschleunigungseinheit 1 über einen lokalen Bus 54 oder über ein On-Chip-Netzwerk (NoC) mit der übergeordneten Kontrolleinheit verbunden. Ein Dual Ported Memory 51 dient dabei als lokaler Paketspeicher, die Kommunikation mit dem Bus 54 geschieht über einen Zustandsautomaten 52, welcher die benötigten Daten in den Speicher 51 schreibt und aus ihm ausliest sowie die erforderlichen Daten über den Bus 54 empfängt und an die Beschleunigungseinheit 1 weitergibt bzw. deren Ergebnisse in umgekehrte Richtung weiterleitet. Der lokale Bus kann dabei beispielsweise ein Wishbone-Bus sein. Die Integration der Einheit aus Zustandsautomat, Speicher 51 und Beschleunigungseinheit 1 erfolgt dabei über einen Wrapper 53, welcher auch die Schnittstellenkonvertierung von dem Bus 54 zu dem Zustandsautomaten 52 übernimmt.In 6 is the acceleration unit 1 over a local bus 54 or connected via an on-chip network (NoC) to the higher-level control unit. A dual ported memory 51 serves as a local packet memory, the communication with the bus 54 happens via a state machine 52 which stores the required data in the memory 51 writes and reads from it as well as the required data over the bus 54 receives and to the acceleration unit 1 passes on or their results forward in the opposite direction. The local bus can be, for example, a Wishbone bus. The integration of the unit from state machine, memory 51 and acceleration unit 1 takes place via a wrapper 53 which also handles the interface conversion from the bus 54 to the state machine 52 takes over.

Die Bezeichnungen der Verbindungen in 6 entsprechen dabei im Wesentlichen den Zeichnungen der Ein- und Ausgänge der Beschleunigungseinheit 1 aus 2. ctrl fasst den Steuereingang ctrl_in und den entsprechenden Ausgang ctrl_out aus 2 zusammen, diese Verbindung dient also zum Beschreiben und Auslesen des Steuerregisters 12. data_out und data_in bezeichnen die Pfade zum Beschreiben des Speichers 51 mit den Daten bzw. zum Auslesen der Datenpakete durch die Zustandsmaschine 52, check_data in und check_data_out bezeichnen das Einlesen der zu überprüfenden Daten über den Eingang data_in aus 2 bzw. das Ausgeben der Daten über den Ausgang data_out aus 2.The names of the compounds in 6 essentially correspond to the drawings of the inputs and outputs of the acceleration unit 1 out 2 , ctrl extracts the control input ctrl_in and the corresponding output ctrl_out 2 together, this connection is therefore used to describe and read the control register 12 , data_out and data_in denote the paths to describe the memory 51 with the data or for reading the data packets by the state machine 52 , check_data in and check_data_out indicate the reading of the data to be checked via the input data_in 2 or outputting the data via the output data_out 2 ,

7 zeigt eine Abwandlung der Anbindung aus 6 ohne internen Speicher 51. Hier erfolgt der Zugriff auf einen Speicher ebenfalls über den Bus 54 und wird durch den Zustandsautomaten 52 vermittelt. Ansonsten entspricht die Anordnung von 7 derjenigen von 6. 7 shows a modification of the connection 6 without internal memory 51 , Here access to a memory is also via the bus 54 and gets through the state machine 52 taught. Otherwise, the arrangement of 7 those of 6 ,

Bei den Ausführungsbeispielen von 6 und 7 kann eine Burstlänge des Buszugriffs der Beschleunigungseinheit 1 bzw. der gesamten in dem Wrapper 53 zusammengefassten Einheit bevorzugt eingestellt werden, so dass während der Paketverarbeitung auch andere Komponenten den Bus 54 nutzen können und somit Blockierungen des Buszugriffs weitestgehend verhindert werden.In the embodiments of 6 and 7 may be a burst length of the bus access of the acceleration unit 1 or the whole in the wrapper 53 summarized unit preferably be set so that during the packet processing, other components of the bus 54 can be used and thus blocks the bus access are largely prevented.

In 8 ist schließlich eine dritte Variante der Systemanbindung gezeigt. Hier kommuniziert bezüglich der Steuersignale (zum Beispiel Zugriff auf das Steuerregister) die Beschleunigungseinheit 1 direkt mit einer übergeordneten Kontrolleinheit 2, welche der übergeordneten Kontrolleinheit 2 aus 1 entspricht. Die übergeordnete Kontrolleinheit 2 verwaltet direkt die eingehenden und ausgehenden Datenpakete (ingress und egress). Die Beschleunigungseinheit 1 und die übergeordnete Kontrolleinheit 2 greifen auf einen gemeinsamen Speicher 51 zu, dessen Anbindung im Wesentlichen derjenigen des Speichers 51 aus 6 entspricht, wobei hier jedoch nicht über den Zustandsautomaten 52 der Speicher beschrieben wird, sondern direkt über die übergeordnete Kontrolleinheit, welche wie durch einen Pfeil addr angedeutet auch die Adressierung vornimmt.In 8th Finally, a third variant of the system connection is shown. Here, with respect to the control signals (for example, access to the control register), the acceleration unit communicates 1 directly with a higher-level control unit 2 , which is the parent control unit 2 out 1 equivalent. The superior control unit 2 Manages directly the incoming and outgoing data packets (ingress and egress). The acceleration unit 1 and the higher-level control unit 2 access a shared memory 51 to, whose connection is essentially that of the memory 51 out 6 but here is not about the state machine 52 the memory is described, but directly via the higher-level control unit, which as indicated by an arrow addr also performs the addressing.

Zusammenfassend wird mit der vorliegenden Erfindung eine Beschleunigungseinheit bereitgestellt, welche mit flexibler Berechnungsbreite Prüfsummen in IP Headern (Layer 3) oder Layer-4-Datagrammen wie TCP- oder UDP-Datagrammen berechnen und überprüfen kann. Dabei werden Little- und Big-Endian-Systeme, variable Header- und Paketlängen und sowohl eine gerade als auch eine ungerade Anzahl von Bytes in den jeweiligen Datenpaketrahmen unterstützt, da die vorgestellten Verfahren zur Berechnung und Überprüfung von diesen Größen unabhängig sind. Die Anbindung kann auf verschiedene Weise erfolgen, wie insbesondere in 6-8 dargestellt. Durch entsprechende Ausgestaltung des Zustandsautomaten 52 und des Wrappers 53 aus 6 und 7 können verschiedene Busprotokolle und proprietäre Schnittstellen unterstützt werden. Zusätzlich zur Prüfsummenberechnung und -überprüfung können Zusatzfunktionen wie beispielsweise eine Dekrementierung der Time-to-live oder ein automatisches Erkennen einer IP-Version (beispielsweise IPv4 oder IPv6) vorgesehen sein. Es kann nur das Ergebnis, das heißt die berechnete Prüfsumme, zurückgegeben werden, oder es können direkt die nötigen Modifikationen in dem jeweiligen Paket vorgenommen werden.In summary, the present invention provides an acceleration unit which, with flexible calculation width, can calculate and check checksums in IP headers (Layer 3) or Layer 4 datagrams such as TCP or UDP datagrams. This supports little and big endian systems, variable header and packet lengths, and both even and odd numbers of bytes in the respective data packet frames because the methods of calculation and verification presented are independent of these quantities. The connection can be made in various ways, such as in particular 6 - 8th shown. By appropriate design of the state machine 52 and the wrapper 53 out 6 and 7 Various bus protocols and proprietary interfaces can be supported. In addition to checksum computation and verification, additional features such as time-to-live decrementing or automatic detection of an IP version (such as IPv4 or IPv6) may be provided. Only the result, that is the calculated checksum, can be returned, or the necessary modifications can be made directly in the respective package.

Der in 2 dargestellte 32 Bit breite Beschleunigungseinheit 1 entspricht einer Systemkomplexität von weniger als 6000 Gatteräquivalenten bzw. in 90 nm Technologie einer Siliziumfläche von weniger als 0,019 mm2. Einer entsprechend ausgestalteter 64 Bit breiter Beschleunigungseinheit 1 würde eine Systemkomplexität von weniger als 14.200 Gatteräquivalenten bzw. einer Siliziumfläche von weniger als 0,044 mm2 entsprechen. Somit ist die erfindungsgemäße Beschleunigungseinheit einfach zu realisieren.The in 2 illustrated 32-bit wide acceleration unit 1 corresponds to a system com Plexity of less than 6000 gate equivalents or in 90 nm technology of a silicon area of less than 0.019 mm 2 . A suitably designed 64-bit wide acceleration unit 1 would correspond to a system complexity of less than 14,200 gate equivalents and a silicon area of less than 0.044 mm 2, respectively. Thus, the acceleration unit according to the invention is easy to implement.

Claims (21)

Beschleunigungseinheit (1) zur Verarbeitung von Datenpaketen, mit einem Steuereingang (ctrl_in) zur Übermittlung von Informationen bezüglich eines zu verarbeitenden Datenpakets und bezüglich von der Beschleunigungseinheit durchzuführenden Aufgaben, und mit Berechnungsmitteln (6, 7, 8, 9, 10), welche zum Berechnen einer Prüfsumme der Datenpakete ausgestaltet sind.Acceleration unit ( 1 ) for processing data packets, with a control input (ctrl_in) for transmitting information relating to a data packet to be processed and for tasks to be performed by the acceleration unit, and with calculation means ( 6 . 7 . 8th . 9 . 10 ), which are designed to calculate a checksum of the data packets. Beschleunigungseinheit (1) nach Anspruch 1, dadurch gekennzeichnet, dass die Berechnungsmittel (6, 7, 8, 9, 10) derart ausgestaltet sind, dass die Prüfsumme als Einer-Komplement der Summe von Einer-Komplementen von Daten des Datenpakets gebildet wird.Acceleration unit ( 1 ) according to claim 1, characterized in that the calculation means ( 6 . 7 . 8th . 9 . 10 ) are configured such that the checksum is formed as a one's complement of the sum of one's complements of data of the data packet. Beschleunigungseinheit (1) nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) über den Steuereingang (ctrl_in) wahlweise zur Überprüfung oder zur Neuberechnung einer Prüfsumme ansteuerbar ist.Acceleration unit ( 1 ) according to claim 1 or 2, characterized in that the acceleration unit ( 1 ) via the control input (ctrl_in) is selectively controllable for checking or recalculating a checksum. Beschleunigungseinheit nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) über den Steuereingang (ctrol_in) zur Behandlung einer Layer-3-Prüfsumme und/oder einer Layer-4-Prüfsumme ansteuerbar ist.Acceleration unit according to one of the preceding claims, characterized in that the acceleration unit ( 1 ) can be controlled via the control input (ctrol_in) for handling a layer-3 checksum and / or a layer-4 checksum. Beschleunigungseinheit (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) Steuermittel (11) zum Steuern der Beschleunigungseinheit umfasst.Acceleration unit ( 1 ) according to one of the preceding claims, characterized in that the acceleration unit ( 1 ) Control means ( 11 ) for controlling the acceleration unit. Beschleunigungseinheit (1) nach Anspruch 5, dadurch gekennzeichnet, dass die Steuermittel einen endlichen Zustandsautomaten (11) umfassen.Acceleration unit ( 1 ) according to claim 5, characterized in that the control means comprise a finite state machine ( 11 ). Beschleunigungseinheit (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Berechnungsmittel (6, 7, 8, 9, 10) eine Arithmetisch/Logische Einheit (8) mit einem ersten Eingang (ALU_IN1), einem zweiten Eingang (ALU_IN2) und einem Ausgang (alu_out) umfasst, wobei die Arithmetisch/Logische Einheit (8) zur Kombination eines an dem ersten Eingang anliegenden Wertes mit einem an dem zweiten Eingang (ALU_IN2) anliegenden Wertes ausgestaltet ist.Acceleration unit ( 1 ) according to one of the preceding claims, characterized in that the calculation means ( 6 . 7 . 8th . 9 . 10 ) an arithmetic / logical unit ( 8th ) comprising a first input (ALU_IN1), a second input (ALU_IN2) and an output (alu_out), the arithmetic / logic unit ( 8th ) is configured to combine a value applied to the first input with a value applied to the second input (ALU_IN2). Beschleunigungseinheit (1) nach Anspruch 7, dadurch gekennzeichnet, dass eine Bitbreite der Arithmetisch/Logischen Einheit (8) ein Vielfaches einer Bitbreite der Prüfsumme ist.Acceleration unit ( 1 ) according to claim 7, characterized in that a bit width of the arithmetic / logical unit ( 8th ) is a multiple of a bit width of the checksum. Beschleunigungseinheit (1) nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) einen Dateneingang (data_in) umfasst, und dass der erste Eingang (ALU_IN1) und der zweite Eingang (ALU_IN2) der Arithmetischen/Logischen Einheit (8) derart mit dem Dateneingang (data_in) und dem Ausgang (alu_out) der Arithmetische/Logischen Einheit (8) verschaltet ist, dass dem ersten Eingang (ALU_IN1) wahlweise ein an dem Dateneingang (data_in) oder ein Anteil eines von der Arithmetisch/Logischen Einheit (8) ausgegebenen Wertes zuführbar ist und dem zweiten Eingang (ALU_IN2) wahlweise ein von der Arithmetisch/Logischen Einheit (8) ausgegebener Wert oder ein von dem ersten Anteil unterschiedlicher zweiter Anteil des von der Arithmetisch/Logischen Einheit (8) ausgegebenen Wertes zuführbar ist.Acceleration unit ( 1 ) according to claim 7 or 8, characterized in that the acceleration unit ( 1 ) comprises a data input (data_in), and that the first input (ALU_IN1) and the second input (ALU_IN2) of the arithmetic / logic unit ( 8th ) with the data input (data_in) and the output (alu_out) of the arithmetic / logic unit ( 8th ) is connected to the first input (ALU_IN1) optionally one at the data input (data_in) or a portion of one of the arithmetic / logic unit ( 8th ) and the second input (ALU_IN2) optionally one of the arithmetic / logic unit ( 8th ) value or one of the first portion different second portion of the output from the arithmetic / logical unit ( 8th ) value can be supplied. Beschleunigungseinheit (1) nach Anspruch 9, dadurch gekennzeichnet, dass die Arithmetisch/Logische Einheit einen Multiplexer (7) zum wahlweisen Zuführen umfasst.Acceleration unit ( 1 ) according to claim 9, characterized in that the arithmetic / logic unit comprises a multiplexer ( 7 ) for selectively feeding. Beschleunigungseinheit (1) nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) zur Dekrementierung einer Lebenszeit von Datenpaketen ausgestaltet ist.Acceleration unit ( 1 ) according to one of the preceding claims, characterized in that the acceleration unit ( 1 ) is designed to decrement a lifetime of data packets. Beschleunigungseinheit (1) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) zum Direktzugriff auf einen Speicher (51) ausgestaltet ist.Acceleration unit ( 1 ) according to one of the preceding claims, characterized in that the acceleration unit ( 1 ) for direct access to a memory ( 51 ) is configured. Beschleunigungseinrichtung zur Verarbeitung von Datenpaketen, mit einer Beschleunigungseinheit (1) nach einem der vorhergehenden Ansprüche, und mit Anbindungsmitteln (52, 53) zur Vermittlung der Kommunikation der Beschleunigungseinheit (1) mit einem Bus (54) und/oder einem On-Chip Verbindungsnetzwerk.Acceleration device for processing data packets, with an acceleration unit ( 1 ) according to one of the preceding claims, and with connection means ( 52 . 53 ) for the communication of the acceleration unit ( 1 ) with a bus ( 54 ) and / or an on-chip interconnect network. Beschleunigungseinrichtung nach Anspruch 13, dadurch gekennzeichnet, dass die Anbindungsmittel (52, 53) einen Zustandsautomaten (52) und/oder einen Wrapper (53) umfassen.Acceleration device according to claim 13, characterized in that the attachment means ( 52 . 53 ) a state machine ( 52 ) and / or a wrapper ( 53 ). Beschleunigungseinrichtung zur Verarbeitung von Datenpaketen, mit einer Beschleunigungseinheit (1) nach einem der Ansprüche 1-12, und mit einer Kontrolleinheit (2) zur Verarbeitung und Weiterleitung der Datenpakete, wobei zumindest eine Berechnung und/oder Überprüfung von Prüfsummen der Datenpakete durch die Beschleunigungseinheit (1) durchführbar ist.Acceleration device for processing data packets, with an acceleration unit ( 1 ) according to any one of claims 1-12, and with a control unit ( 2 ) for processing and Forwarding of the data packets, wherein at least one calculation and / or verification of checksums of the data packets by the acceleration unit ( 1 ) is feasible. Beschleunigungseinrichtung nach einem der Ansprüche 13-15, dadurch gekennzeichnet, dass die Beschleunigungseinrichtung einen Speicher (51) umfasst.Acceleration device according to one of Claims 13-15, characterized in that the acceleration device has a memory ( 51 ). Beschleunigungseinrichtung nach einem der Ansprüche 13-16, dadurch gekennzeichnet, dass die Beschleunigungseinrichtung zum Zugriff auf einen externen Speicher ausgestaltet ist.Acceleration device according to one of claims 13-16, characterized that the accelerator device for access to an external Memory is configured. Verfahren zum Berechnen einer Prüfsumme von Daten, wobei die Prüfsumme eine Breite von p Bits aufweist, wobei p eine natürliche Zahl ist, umfassend die folgenden Schritte: Zusammenfassen von für die Prüfsumme zu berücksichtigende Daten der Datenpakete zu Datenwörtern mit n × p Bit Breite, wobei n eine natürliche Zahl größer 1 ist, Kombinieren der n × p Bit breiten Datenwörter, um ein kombiniertes n × p Bit breites Datenwort zu bilden, und Kombinieren von Teilen des kombinierten n × p Bit breiten Datenwortes, um die p Bit breite Prüfsumme zu bilden.A method of calculating a checksum of data, wherein the checksum has a width of p bits, where p is a natural number is, comprising the following steps: summarizing for the checksum consider Data packet data to data words with n × p Bit width, where n is a natural Number is greater than 1, Combining the n × p Bit wide data words, around a combined n × p Bit wide data word, and combining parts of the combined n × p Bit wide data word to form the p bit wide checksum. Verfahren nach Anspruch 18, dadurch gekennzeichnet, dass p = 16 ist.Method according to claim 18, characterized that p = 16. Verfahren nach Anspruch 18 oder 19, dadurch gekennzeichnet, dass das Verfahren zur Berechnung einer Summe von Einer-Komplementen der zu berücksichtigenden Daten ausgestaltet ist.Method according to claim 18 or 19, characterized in that the method for calculating a sum of one's complements of to be considered Data is designed. Beschleunigungseinheit (1) nach einem der Ansprüche 1-12, dadurch gekennzeichnet, dass die Beschleunigungseinheit (1) zur Durchführung des Verfahrens nach einem der Ansprüche 18-20 ausgestaltet ist.Acceleration unit ( 1 ) according to any one of claims 1-12, characterized in that the acceleration unit ( 1 ) is configured for carrying out the method according to one of claims 18-20.
DE200610008466 2006-02-23 2006-02-23 Flexible acceleration unit for processing data packets Active DE102006008466B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200610008466 DE102006008466B4 (en) 2006-02-23 2006-02-23 Flexible acceleration unit for processing data packets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610008466 DE102006008466B4 (en) 2006-02-23 2006-02-23 Flexible acceleration unit for processing data packets

Publications (2)

Publication Number Publication Date
DE102006008466A1 true DE102006008466A1 (en) 2007-08-30
DE102006008466B4 DE102006008466B4 (en) 2011-07-21

Family

ID=38319783

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610008466 Active DE102006008466B4 (en) 2006-02-23 2006-02-23 Flexible acceleration unit for processing data packets

Country Status (1)

Country Link
DE (1) DE102006008466B4 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8554978B2 (en) 2010-05-12 2013-10-08 Wago Verwaltungsgesellschaft Mbh Automation appliance and method for accelerated processing of selected process data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047304A (en) * 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
US6173333B1 (en) * 1997-07-18 2001-01-09 Interprophet Corporation TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
DE10105626A1 (en) * 2000-03-07 2001-09-27 Ibm Cyclic redundancy code calculation method for transmitted data stream with calculation of cyclic redundancy code using protected data frame as input sequence
US6976205B1 (en) * 2001-09-21 2005-12-13 Syrus Ziai Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173333B1 (en) * 1997-07-18 2001-01-09 Interprophet Corporation TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
US6047304A (en) * 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
DE10105626A1 (en) * 2000-03-07 2001-09-27 Ibm Cyclic redundancy code calculation method for transmitted data stream with calculation of cyclic redundancy code using protected data frame as input sequence
US6976205B1 (en) * 2001-09-21 2005-12-13 Syrus Ziai Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HESS, Jason R.; LEE, David C.; HARPER, Scott J. (u.a.): Implementation and Evaluation of a Proto- type Reconfigurable Router. FCCM '99, 1999, S.1-7
HESS, Jason R.; LEE, David C.; HARPER, Scott J. (u.a.): Implementation and Evaluation of a Prototype Reconfigurable Router. FCCM '99, 1999, S.1-7 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8554978B2 (en) 2010-05-12 2013-10-08 Wago Verwaltungsgesellschaft Mbh Automation appliance and method for accelerated processing of selected process data

Also Published As

Publication number Publication date
DE102006008466B4 (en) 2011-07-21

Similar Documents

Publication Publication Date Title
DE69729040T2 (en) Network transmission
EP1846827B1 (en) Method for transmitting data in messages via a communications link of a communications system and communications module, subscriber of a communications system and associated communications system
EP2115948B1 (en) Method and installation for the optimized transmission of data between a control device and a plurality of field devices
DE69937185T2 (en) METHOD AND APPARATUS FOR PACKAGE TRANSPORT HUNTING WITH A REDUCED NUMBER OF MEMORY ACCESS
EP1940654B1 (en) Method for connecting a FlexRay user comprising a microcontroller to a FlexRay communication connection via a FlexRay communication control device, and FlexRay-communication system for producing said method
EP2882145A1 (en) Method and filter assembly for buffering information about incoming messages transmitted over a serial bus of a communication network in a node of the network
WO2006015910A1 (en) Message administrator and method for controlling access to data of the message memory of a communications component
DE102005048581B4 (en) Subscriber interface between a FlexRay communication module and a FlexRay subscriber and method for transmitting messages via such an interface
WO2007039634A2 (en) User interface which is between a microcontroller and a flexray-communication component, flexray-user and method for transmitting messages via said type of interface
WO2019166888A1 (en) Master-slave bus system and method for operating a bus system
EP1776808B1 (en) Method for storing messages in a message memory and corresponding message memory
DE60320685T2 (en) METHOD AND SYSTEM FOR IMPLEMENTING QUICK CHECKS IN A GPRS COMMUNICATION SYSTEM USING TUNNELS
DE102006008466B4 (en) Flexible acceleration unit for processing data packets
WO2000007093A1 (en) Storage device and a method for operating the storage device
DE102007049044A1 (en) Data exchange device i.e. communication structure, for e.g. application specific integrated circuit, has function modules for processing interface-related functions, and master unit including number of signal inputs
WO2005002145A1 (en) Assembly and method for managing a memory
DE10347762B4 (en) Method for storing transmission units and network communication device
DE102022116903B3 (en) Method for operating a network of a motor vehicle using a network system of the motor vehicle, computer program product and network system
DE102018010209A1 (en) Master-slave bus system and method for operating a bus system
WO2022090065A1 (en) Method for monitoring data traffic between control devices of a motor vehicle and vehicle equipped accordingly
DE102023205742A1 (en) EARLY AND EFFICIENT PACKAGE CUTTING
WO2022090064A1 (en) Method for monitoring a data network in a motor vehicle, switch device, and motor vehicle
WO2021028186A1 (en) Network distributor, automation network and method for transmitting data in an automation network
DE102007049043A1 (en) Routing module i.e. hardware-based routing module, for exchanging data between e.g. controller area network bus systems, and/or functional systems of communication network in motor vehicle, has routing unit formed as integrated circuit
DE10228823A1 (en) Method for operating an isochronous, cyclical communication system

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R018 Grant decision by examination section/examining division
8127 New person/name/address of the applicant

Owner name: LANTIQ DEUTSCHLAND GMBH, 85579 NEUBIBERG, DE

R081 Change of applicant/patentee

Owner name: LANTIQ DEUTSCHLAND GMBH, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 81669 MUENCHEN, DE

Effective date: 20110325

Owner name: LANTIQ BETEILIGUNGS-GMBH & CO. KG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 81669 MUENCHEN, DE

Effective date: 20110325

R020 Patent grant now final

Effective date: 20111022

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

R081 Change of applicant/patentee

Owner name: INTEL CORP., SANTA CLARA, US

Free format text: FORMER OWNER: LANTIQ DEUTSCHLAND GMBH, 85579 NEUBIBERG, DE

Owner name: LANTIQ BETEILIGUNGS-GMBH & CO. KG, DE

Free format text: FORMER OWNER: LANTIQ DEUTSCHLAND GMBH, 85579 NEUBIBERG, DE

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R081 Change of applicant/patentee

Owner name: INTEL CORP., SANTA CLARA, US

Free format text: FORMER OWNER: LANTIQ BETEILIGUNGS-GMBH & CO. KG, 85579 NEUBIBERG, DE

R082 Change of representative
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012700000

Ipc: H04L0045000000