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.