-
Stand der Technik
-
Die Erfindung betrifft ein Verfahren zum Klassifizieren eines Datensegments bezüglich dessen Weiterverarbeitung nach dem Oberbegriff des Anspruchs 1.
-
Es ist bekannt, dass Kommunikationscontroller für Netzwerke wie bspw. CAN (Controller Area Network), Extended CAN oder FlexRay Filterfunktionen für jeweilige Datenpakete aufweisen können, um nur einen Ausschnitt des Netzwerkverkehrs herauszufiltern und zu beobachten.
-
Für Netzübergangseinheiten bzw. Gateways können Datenpaket-Filter aufgrund der großen Kommunikationsmatrizen unter großem Aufwand bzgl. des Datenspeichers realisiert werden. Insbesondere die gestiegene Anzahl von Netzwerktypen und die gestiegene Anzahl von Teilnetzen im Automobilbereich erschweren die Konstruktion einer flexiblen Gateway-Einheit zwischen unterschiedlichen Netzwerken.
-
Aus der Veröffentlichung "Cuckoo hashing" der Autoren Rasmus Pagh und Glemming Friche Rodler ist das sogenannte Kuckucks-Hashing bekannt.
-
Offenbarung der Erfindung
-
Das der Erfindung zu Grunde zu liegende Problem wird durch ein Verfahren nach dem Anspruch 1 gelöst. Vorteilhafte Weiterbildungen sind in den Unteransprüchen angegeben. Wichtige Merkmale für die Erfindung finden sich ferner in der nachfolgenden Beschreibung und in den Zeichnungen. Die Merkmale sind sowohl in Alleinstellung als auch in Kombination für die Erfindung wichtig, ohne dass hierauf nochmals hingewiesen wird.
-
Zur Ermittlung eines Parameters zur Weiterverarbeitung eines Datensegments wird ein entsprechender Schlüssel für eine Lookup-Tabelle in Abhängigkeit von einem ersten und einem zweiten Tabelleneintrag einer jeweiligen Hash-Tabelle mittels einer Auswahlfunktion ausgewählt. Vorteilhaft kann durch die Verwendung zweier Hash-Tabellen und zweier unterschiedlicher Hash-Funktionen das Verfahren terminierend ausgeführt werden, wobei gleichzeitig die Anzahl von Fehlermittlungen des Schlüssels und damit einem fehlerhaften Durchlassen von Datensegmenten stark reduziert wird.
-
In einer vorteilhaften Ausführungsform ermittelt eine erste Hash-Funktion einen ersten Teilbereich der Header-Information als ersten Hash-Wert. Dadurch wird eine einfache Hash-Funktion bereitgestellt, die ohne weiteres terminierend ausgeführt werden kann.
-
In einer vorteilhaften Ausführungsform ermittelt die zweite Hash-Funktion einen zweiten Teilbereich der Header-Information oder einen Festwert als zweiten Hash-Wert. Dadurch wird eine einfache Hash-Funktion bereitgestellt, die ohne weiteres terminierend ausgeführt werden kann.
-
In einer vorteilhaften Ausführungsform wird ein Passierbit-Index in Abhängigkeit von einer vorab festgelegten Kennung und in Abhängigkeit von einer Kennung einer Eingangsschnittstelle, von der das Datensegment stammt, ermittelt. In Abhängigkeit von zwei Passierbits, die sich an einer durch den Passierbit-Index festgelegten Stelle in jeweiligen Bitfolgen der Tabelleneinträge befinden, wird der Schlüssel für die Lookup-Tabelle ausgewählt. Durch den Einsatz der Passierbits aus den Bitfolgen der jeweiligen Tabelleneinträge wird vorteilhaft die Nicht-Injektivität der verwendeten Hash-Funktion ausgeglichen werden. Dies erlaubt es insbesondere bezogen auf die Eingangsschnittstelle bei einer Kollision durch zumindest abschnittsweise gleichen Inhalt der Header-Information zu entscheiden, ob Hash-Tabelleneinträge geöffnet d.h. auf sie abgebildete Datensegmente verwendet werden oder nicht um so eine exaktere Filterung der Datensegmente zu erreichen.
-
In einer vorteilhaften Ausführungsform umfasst die Header-Information eine Extended-CAN-Kennung, wobei der erste Teilbereich einen ersten Teil der Extended-CAN-Kennung oder einen Teil davon umfasst, und wobei der zweite Teilbereich einen zweiten Teil der Extended-CAN-Kennung oder einen Teil davon umfasst.
-
In einer vorteilhaften Ausführungsform werden zur Ermittlung des ersten und/oder zweiten Teilbereichs eine Anzahl von Bits, insbesondere drei Bits, der Extended-CAN-Kennung ausgeblendet.
-
In einer vorteilhaften Ausführungsform umfasst die Header-Information eine Standard-CAN-Kennung, wobei der erste Teilbereich die Standard-CAN-Kennung umfasst, und wobei der zweite Teilbereich an allen Stellen Null ist.
-
In einer vorteilhaften Ausführungsform umfasst die Header-Information eine Flexray-Kennung, wobei der erste Teilbereich die Flexray-Kennung, ein Flexray-Kanal-Bit und einen ersten Teil eines Flexray-Zyklus-Felds umfasst, und wobei der zweite Teilbereich einen zweiten Teil des Flexray-Zyklus-Felds umfasst.
-
In einer vorteilhaften Ausführungsform wird ein zweiter Schlüssel für die Lookup-Tabelle in Abhängigkeit von einer vorab festgelegten Kennung und in Abhängigkeit von einer Kennung der Eingangsschnittstelle, von der das Datensegment stammt, ermittelt, wobei der Parameter zur Weiterverarbeitung des Datensegments in Abhängigkeit von dem ersten Schlüssel und dem zweiten Schlüssel aus der Lookup-Tabelle ermittelt wird.
-
In einer vorteilhaften Ausführungsform wird der erste und zweite Schlüssel für ein erstes der Datensegmente eines der Datenblöcke gespeichert, wobei in Abhängigkeit von dem gespeicherten ersten und dem gespeicherten zweiten Schlüssel die Parameter zur Weiterverarbeitung der Mehrzahl von Datensegmenten aus der Lookup-Tabelle ermittelt werden.
-
In einer vorteilhaften Ausführungsform identifiziert einer der Parameter zur Weiterverarbeitung des Datensegments eine Warteschlange, in die das Datensegment geschrieben wird.
-
In einer vorteilhaften Ausführungsform identifiziert einer der Parameter zur Weiterverarbeitung des Datensegments eine Verarbeitungseinheit, der das Datensegment zugeführt wird.
-
In einer vorteilhaften Ausführungsform wird das Datensegment verworfen, wenn auf Basis des ersten Schlüssels und/oder auf Basis des zweiten Schlüssels keine Parameter zur Weiterverarbeitung des Datensegments aus der Lookup-Tabelle ermittelt werden.
-
Ein Schaltkreis zur Ausführung des Verfahrens wird zu einer Konfigurationszeit außerhalb des Schaltkreises konfiguriert, wobei die erste Hash-Tabelle und die zweite Hash-Tabelle mittels des Kuckucks-Hashing gefüllt werden. Dies hat den Vorteil, dass die Anzahl der fehlerhaft weitergeleiteten Datensegmente stark reduziert wird. Dies liegt daran, dass das Kuckucks-Hashing vorteilhaft eine bessere Verteilung der Tabelleneinträge in beiden Tabellen erreicht.
-
Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in den Figuren der Zeichnungen dargestellt sind. Für funktionsäquivalente Größen und Merkmale werden in allen Figuren auch bei unterschiedlichen Ausführungsformen die gleichen Bezugszeichen verwendet.
-
Nachfolgend werden beispielhafte Ausführungsformen der Erfindung unter Bezugnahme auf die Zeichnung erläutert. In der Zeichnung zeigen:
-
1–3 jeweils ein schematisches Blockdiagramm;
-
4, 5 und 6 jeweils eine schematische Header-Information; und
-
7 ein schematisches Ablaufdiagramm.
-
1 zeigt ein schematisches Blockdiagramm 2. Ein Datensegment 4 wird von einer Eingangsschnittstelle 6 bereitgestellt. Das Datensegment 4 umfasst eine vorab festgelegte Kennung chid, die auch als channel identifier bezeichnet wird. Des Weiteren umfasst das Datensegment 4 eine Kennung devid der Eingangsschnittstelle 6. Des Weiteren umfasst das Datensegment 4 einen Datenbereich 8, der auch als Payload des Datensegments 4 bezeichnet wird. Des Weiteren kann das Datensegment 4 weitere Informationen aufweisen, bspw. die Position das Datensegment 4 als Teil eines mehrere Datensegmente 4 umfassenden Datenblocks.
-
Ein Datenpaket 10 eines gekapselten Netzwerkprotokolls umfasst eine Header-Information 12 sowie einen Datenbereich 14. Wie in 1 dargestellt umfasst der Datenbereich 8 des Datensegments 4 nur einen Teil des Datenpakets 10. Beispielhaft ist das Datensegment 4 in 1 ein erstes von mehreren Datensegmenten 4 zur Übertragung des Datenpakets 10.
-
Einem Block 16 werden die vorab vereinbarte Kennung chid, die Kennung devid der Eingangsschnittstelle 6 sowie im Falle eines ersten Datensegments 4 die Header-Information 12 des Datenpakets 10 zugeführt. In Abhängigkeit von den zugeführten Größen ermittelt der Block 16 Parameter 20 zur Weiterverarbeitung des Datensegments 4 aus einer nachfolgend erläuterten Lookup-Tabelle. Damit klassifiziert der Block 16 ein Datensegment 4 bezüglich dessen Weiterverarbeitung in einer Datentransporteinheit, insbesondere in einem Netzwerkprozessor, wobei die Datentransporteinheit zumindest den Block 16 und einen Block 18 umfasst, wobei dem Block 18 die Parameter 20 sowie das entsprechende Datensegment 4 zugeführt werden. Gemäß einem Pfeil 22 leitet der Block 18 Datensegmente 4, für die Parameter 20 ermittelt werden konnten, an eine oder mehrere nicht dargestellte Ausgangsschnittstellen weiter.
-
Bei dem Datenpaket 10 kann es sich beispielsweise um einen CAN-Datenpaket, ein FlexRay-Datenpaket, ein XCP-Datenpaket (universal measurement calibration protocol), einen CCP-Datenpaket (CAN calibration protocol) oder ein Ethernet-Datenpaket handeln. Selbstverständlich sind in diesem Zusammenhang auch weitere, hier nicht genannte Netzwerkprotokolle denkbar.
-
Einer der Parameter 20 identifiziert bspw. eine Warteschlange innerhalb des Blocks 18 zur Weiterverarbeitung des Datensegments 4, womit der Parameter 20 eine Verarbeitungseinheit zur Weiterverarbeitung des Datensegments 4 eindeutig identifiziert, da jede Warteschlange fest einer Datenverarbeitungseinheit zugeordnet ist.
-
Vorteilhaft sind alle hier beschriebenen Verfahren so ausgestaltet, dass der Block 16 terminierend, d.h. in einer endlichen Anzahl an Abarbeitungsschritten auf eine Eingabe in Form eines Datensegments 4 eine Ausgabe in Form von Parametern 20 erzeugt. Mithin kann der Block 16 vorteilhaft als integrierter Schaltkreis ausgebildet sein. Ein integrierter Schaltkreis umfasst bspw. einen ASIC (application specific integrated circuit) oder aber einen FPGA (field programmable gate array).
-
2 zeigt in einem schematischen Blockdiagramm einen Ausschnitt des Blocks 16, der ein Datensegment 4 bezüglich dessen Weiterverarbeitung klassifiziert, indem Parameter für die Weiterverarbeitung des Datensegments ermittelt werden. Selbstverständlich umfasst die Klassifizierung eines einzelnen Datensegments auch die Klassifizierung eines Datenblocks, der mehrere Datensegmente aufweist. So kann beispielsweise, wie nachfolgend erläutert, eine Header-Information in einem ersten Datensegment eines Datenblocks vorteilhaft dazu genutzt werden, um entsprechende Parameter zu ermitteln, die auch für die auf das erste Datensegment folgende Datensegmente des Datenblocks für dessen Weiterverarbeitung Anwendung finden.
-
Einem Block 24 werden die vorab festgelegte Kennung chid und die Kennung devid der Eingangsschnittstelle 6 zugeführt. In Abhängigkeit von der vorab festgelegten Kennung chid und der Kennung devid der Eingangsschnittstelle 6 werden die Ausgangsgrößen des Blocks 24 gebildet. Der Block 24 greift auf eine erste vorkonfigurierbare Tabelle 26 und eine zweite vorkonfigurierbare Tabelle 28 zu. In einem ersten Fall kann mittels der Tabelle 26 anhand der Kennung devid der Eingangsschnittstelle 6 ein zweiter Schlüssel 30 ermittelt werden. In einem anderen Fall kann unter Zuhilfenahme der vorab vereinbarten Kennung chid zusätzlich zu der Kennung devid über die Tabelle 28 der zweite Schlüssel 30 in Abhängigkeit von der Kennung devid der Eingangsschnittstelle 6 und der vorab vereinbarten Kennung chid ermittelt werden. Über den zweiten Schlüssel 30 können bspw. Speicherbereiche in der Lookup-Tabelle 32 adressiert werden, die einer der Eingangsschnittstellen 6 zugeordnet sind oder aber einer der Eingangsschnittstellen 6 und der vorab vereinbarten Kennung chid zugeordnet sind.
-
Einem Bereich 64 werden der zweite Schlüssel 30 und ein erster Schlüssel 34 zugeführt. Aus dem zweiten Schlüssel 30 und dem ersten Schlüssel 34 wird ein Lookup-Schlüssel 36 gebildet, bspw. durch Addition des zweiten Schlüssels 30 und des ersten Schlüssels 34. Bei der Addition stellt der erste Schlüssel 34 beispielsweise einen Offset zu dem zweiten Schlüssel 30 dar. Selbstverständlich sind auch andere Kombinationen des zweiten Schlüssels 30 und des ersten Schlüssels 34 denkbar, um den Lookup-Schlüssel 36 zu ermitteln.
-
Ein Block 40 greift auf die vorkonfigurierbare Lookup-Tabelle 32 in Abhängigkeit von dem Lookup-Schlüssel 36 zu und ermittelt somit aus der Lookup-Tabelle 32 Parameter 20 für die Weiterverarbeitung des sich in Bearbeitung befindenden Datensegments 4. Über eine Information 84 wird dem Block 40 mitgeteilt, ob es sich bei dem untersuchten Datensegment 4 um ein letztes, erstes oder mittleres Datensegment 4 eines Datenblocks oder Datenpakets 10 handelt. Kann der Block 40 für den zugeführten Lookup-Schlüssel 36 in der Lookup-Tabelle 32 keinen bzw. keine Parameter 20 zur Weiterverarbeitung des Datensegments 4 ermitteln, so wird das Datensegment 4 nicht weiterverarbeitet und verworfen. Durch das Verwerfen eines Datensegments 4, das durch eine Vorkonfiguration in der Lookup-Tabelle 32 nicht erfasst wird, müssen vorteilhaft keine Filterelemente vor der Eingangsschnittstelle 6 im Bereich des jeweiligen Netzwerkes vorgesehen werden und die Filterung der Datenströme unterschiedlicher Teilnetze bzw. Netzwerktypen kann vorteilhaft zentralisiert durch den Block 16 ausgeführt werden. Darüber hinaus stellt eine Hardware-Implementierung des Blocks 16 eine weitere Verbesserung dar.
-
Gemäß dem Signal 42 wird einem Block 44 signalisiert, welches der Eingangssignale des Blocks 44 als erster Schlüssel 34 weitergeleitet wird.
-
Der Block 46 ermittelt einen ersten Schlüssel 34a in Abhängigkeit von der vorab festgelegten Kennung chid.
-
Der Block 48 erzeugt einen ersten Schlüssel 34b in Abhängigkeit von Header-Informationen 12 eines Datenpakets 10 und in Abhängigkeit von einem Signal 52, wobei das Signal 52 durch den Block 24 erzeugt wird und den Block 48 mitteilt, welches Protokoll und welcher Bereich der Header-Informationen 12 ausgewertet werden sollen.
-
Bei einem Block 50 handelt es sich um einen XCP-Klassifizierer für das XCP (universal measurement calibration protocol), das über das Ethernet-Protokoll transportiert wird. Der Block 24 teilt dem Block 50 über das Signal 54 mit, an welcher Stelle der XCP-Header in den Daten vorhanden ist, da XCP bspw. über Ethernet, CAN oder FlexRay übertragen wird und sich damit die Header-Information 12 der Netzwerktypen unterscheiden und damit auch die Position des XCP Headers an anderer bzw. unterschiedlicher Position vorhanden ist. Über ein Signal 56 werden dem Block 50 Informationen bzgl. der Startposition des XCP Headers in dem Header 12 und Informationen bzgl. der Kodierung des XCP Headers übermittelt.
-
Ein Block 65 dient somit zur Erzeugung und Auswahl des ersten Schlüssels 34. Insbesondere durch Auswertung der Header-Information 12 wird der erste Schlüssel 34 gebildet. So kann eine FRAME-ID (Datenrahmenidentifikation) aus der Header-Information 12, und insbesondere eine Ursprungsadresse und/oder eine Zieladresse in der Header-Information 12 vorteilhaft so ausgewertet werden, dass ein eineindeutiger Zusammenhang zwischen devid, chid, Header-Information 12 und den Parametern 20, d.h. einem Eintrag in der Lookup-Tabelle 32 herstellbar ist.
-
Der Block 68 greift auf eine erste Hash-Tabelle 72 und eine zweite Hash-Tabelle 74 zu. Der Block 68 erzeugt einen ersten Schlüssel 34e. Der Block 24 führt dem Block 68 einen nachgehend erläuterten Passierbit-Index 76 zu, der in Abhängigkeit von den Kennungen devid und chid beispielsweise mit einer entsprechenden Umsetzungstabelle ermittelt wird.
-
3 zeigt ein schematisches Blockdiagramm des Blocks 68 aus 2. Die Header-Information 12 wird einem Block 80 zur Erzeugung eines ersten Hash-Werts 82 zugeführt. Die Header-Information 12 wird einem Block 84 zur Erzeugung eines zweiten Hash-Werts 86 zugeführt. Der Block 80 verknüpft eine Bitmaske 88 mit der Header-Information 12 gemäß einer UND-Operation, wobei niederwertige Bits der Header-Information 12 den ersten Hash-Wert 82 bilden. Der Block 68 ermittelt in nicht dargestellter Form einen TLV-Typ (TLV: Type Length Value) der Header-Information 12, d.h. ob es sich bei der Header-Information 12 um Standard-CAN, Extended-CAN oder Flexray handelt. Damit werden bevorzugt 13 Bits aus dem TLV-Format der Header-Information 12 herausgesucht und zu dem ersten Hash-Wert 82 zusammengesetzt. Die Bitmaske 88 und der Block 80 werden allgemein als erste Hash-Funktion 92 bezeichnet. Die erste Hash-Funktion 92 ermittelt in Abhängigkeit von dem TLV-Typ der Header-Information 12 die Bitmaske 88.
-
Der Block 84 verknüpft eine Bitmaske 90 mit der Header-Information 12 gemäß einer UND-Operation, wobei höherwertige Bits der Header-Information 12 den zweiten Hash-Wert 86 bilden. Damit werden bevorzugt 13 Bits aus dem TLV-Format der Header-Information 12 herausgesucht und zu dem zweiten Hash-Wert 86 zusammengesetzt. Die Bitmaske 90 und der Block 84 werden allgemein als zweite Hash-Funktion 94 bezeichnet. Die zweite Hash-Funktion 94 ermittelt in Abhängigkeit von dem TLV-Typ der Header-Information 12 die Bitmaske 90. Der erste Hash-Wert 82 und der zweite Hash-Wert 86 umfassen in der bevorzugten Ausführungsform jeweils 13 Bits. Selbstverständlich kann auch eine andere Anzahl von Bits aus der Header-Information 12 für die Hash-Werte 82 und 86 gewählt werden.
-
Der erste Hash-Wert 82 indiziert einen ersten Tabelleneintrag 96 in der ersten Hash-Tabelle 72. Der zweite Hash-Wert 86 indiziert einen zweiten Tabelleneintrag 98 in der zweiten Hash-Tabelle 74. Der erste Tabelleneintrag 96 der ersten Hash-Tabelle 72 umfasst einen ersten Bezeichner 100, eine erste Bitfolge 102 und eine zweite Bitfolge 104. Der zweite Tabelleneintrag 98 der zweiten Hash-Tabelle 74 umfasst einen zweiten Bezeichner 110, eine erste Bitfolge 112 und eine zweite Bitfolge 114.
-
Einem Block 106 werden der erste Bezeichner 100, der zweite Hash-Wert 86, der erste Hash-Wert 82, der zweite Bezeichner 110, der Passierbit-Index 76, einen Verwurfs-Schlüssel 118 und einen Passier-Schlüssel 120 zugeführt. Des Weiteren werden dem Block 106 auch die Bitfolgen 102, 104, 112 und 114 der jeweiligen Einträge 96 und 98 zugeführt. Der Block 106, dessen Funktion in 7 näher erläutert ist, wählt entweder den Verwurfs-Schlüssel 118 oder den Passier-Schlüssel 120 als ausgewählten Schlüssel 122 aus und leitet den Schlüssel 122 an einen Block 124 weiter. Der Passier-Schlüssel 120 zeigt in der Lookup-Tabelle 32 auf einen Eintrag, der Parameter 20 zur Weiterverarbeitung enthält. Ein Parameter 20 zur Weiterverarbeitung zeigt beispielsweise auf eine Anzahl von einer oder mehrerer Warteschlangen, in die das Datensegment 4 eingestellt wird. So können Multicast-Gruppen von Warteschlangen gebildet werden, wobei das Datensegment 4 in jede Warteschlange der Multicast-Gruppe eingestellt wird.
-
Der Verwurfs-Schlüssel 118 hingegen zeigt auf einen Eintrag in der Lookup-Tabelle 32, der Parameter 20 enthält, die entweder zu einem Verwerfen des Datensegments 4 oder zu einer Weiterleitung an eine Debug-Warteschlange führt. Die Debug-Warteschlange wird durch eine Debug-Funktion ausgewertet, um die empfangenen Datensegmente 4 beispielsweise zu einer Fehlersuche in dem empfangenen Datenverkehr entsprechend aufzubereiten. Selbstverständlich können auch für den Verwurfs-Schlüssel 118 Multicast-Gruppen von Debug-Warteschlangen gebildet werden.
-
Der Block 124 wählt entweder einen Default-Schlüssel als ersten Schlüssel 34e aus, wenn kein Frameinhalt in dem Datensegment 4 vorhanden ist, d.h. wenn der TLV-Typ nicht vom Typ CAN oder vom Typ FlexRay ist. Oder der Block 124 wählt den gerade ermittelten Schlüssel 122 als ersten Schlüssel 34e aus. Dies wird mit einem Signal 126 dem Block 124 mitgeteilt.
-
4 zeigt eine schematische Header-Information 12a eines Extended-CAN Protokolls, wobei die Header-Information 12 eine Extended-CAN-Kennung umfasst. Die Extended-CAN-Kennung 128 umfasst einen ersten Teil 130, der eine Anzahl von 11 Bits umfasst, und einen zweiten Teil 132, der eine Anzahl von 18 Bits umfasst. Gemäß der ersten Hash-Funktion 92 werden eine Anzahl von Bits, vorliegend eine Anzahl von drei Bits 134, der niederwertigen Bits des zweiten Teils 132 nicht berücksichtigt und der erste Hash-Wert 82 ergibt sich aus dem ersten Teil 130 und den zwei niederwertigsten Bits des zweiten Teils 132. Der zweite Hash-Wert 86 ergibt sich gemäß der zweiten Hash-Funktion 94 aus den restlichen 13 höherwertigen Bits des zweiten Teils 132. Selbstverständlich können die nicht berücksichtigten Bits 134 auch an einer anderen Stelle gewählt werden.
-
Der erste Hash-Wert 82 wird auch als erster Teilbereich der Header-Information 12 bezeichnet, wobei der erste Teilbereich niederwertige Bits der Header-Information 12 adressiert. Der zweite Hash-Wert 86 wird auch als zweiter Teilbereich der Header-Information 12 bezeichnet, wobei der zweite Teilbereich höherwertige Bits der Header-Information 12 adressiert.
-
5 zeigt eine schematische Header-Information 12b eines Standard-CAN-Protokolls, wobei diese eine Anzahl von 11 Bits umfassende Standard-CAN-Kennung 136 und zwei weitere Bits 138 und 140 umfasst. Der erste Hash-Wert 82 wird aus der Header-Information 12b gemäß der ersten Hash-Funktion 92 gebildet. Der zweite Hash-Wert 86 wird mit einem Festwert, beispielsweise mit nur Nullen oder nur Einsen, gefüllt.
-
6 zeigt eine schematische Header-Information 12c eines Flexray-Protokolls mit einer Flexray-Kennung 142, ein Flexray-Kanal-Bit 144 und ein Flexray-Zyklus-Feld 146. Gemäß der ersten Hash-Funktion 92 wird der erste Hash-Wert 82 gebildet. Gemäß der zweiten Hash-Funktion 94 wird der zweite Hash-Wert 86 gebildet.
-
7 zeigt ein schematisches Ablaufdiagramm des Blocks 106 aus 2. An einer Stelle 148 wird geprüft, ob es sich bei dem untersuchten Datensegment 4 mit der Header-Information 12 um ein Datensegment 4 eines gekapselten Extended-CAN-Protokolls handelt. In einem Schritt 150 wird, wenn es sich um das Extended-CAN-Protokoll handelt, ein erstes Passierbit an einer durch den Passierbit-Index 76 bestimmten Stelle der Bitfolge 102 und ein zweites Passierbit an der durch den Passierbit-Index 76 bestimmten Stelle der Bitfolge 112 ermittelt. In einem Schritt 152 wird, wenn es sich um kein Extended-CAN-Protokoll handelt, das erste Passierbit an der durch den Passierbit-Index 76 bestimmten Stelle der Bitfolge 104 und das zweite Passierbit an der durch den Passierbit-Index 76 bestimmten Stelle der Bitfolge 114 ermittelt. Die Bitfolgen 102 und 112 werden für Extended-CAN vorkonfiguriert. Die Bitfolgen 104 und 114 werden für die anderen gekapselten Netzwerkprotokolle wie Standard-CAN und Flexray vorkonfiguriert.
-
An einer Stelle 154 werden das erste und zweite Passierbit ausgewertet. Sind beide Passierbits Eins, d.h. sind die beiden Passierbits nach boolscher Algebra "wahr", so wird in dem Schritt 156 der Passier-Schlüssel 120 zur Weiterleitung ausgewählt, andernfalls, d.h. ist mindestens eines der beiden Passierbits Null bzw. nach boolscher Algebra "falsch", wird zu einer Stelle 158 gewechselt.
-
An der Stelle 158 wird die Header-Information 12 mit dem ersten Bezeichner 100 verknüpft. Lässt sich der erste Bezeichner 100 zumindest in einem Teilbereich der Header-Information 12 auffinden, so wird in den Schritt 156 gewechselt, andernfalls wird zu einer Stelle 160 gewechselt.
-
An der Stelle 160 wird die Header-Information 12 mit dem zweiten Bezeichner 110 verknüpft. Lässt sich der zweite Bezeichner 110 zumindest in einem Teilbereich der Header-Information 12 auffinden, so wird in den Schritt 156 gewechselt, andernfalls wird in einem Schritt 162 der Verwurfs-Schlüssel 118 zur Weiterleitung ausgewählt.
-
In einer bevorzugten Ausführungsform werden der erste Bezeichner 100 und der zugehörige erste Hash-Wert 82 als disjunkte Teile der Header-Information 12 gewählt. Ebenso werden der zweite Bezeichner 110 und der zweite Hash-Wert 86 als disjunkte Teile der Header-Information 12 gewählt. Umfasst die Header-Information 12 eine Anzahl von 29 Bits, so werden eine Anzahl von 13 niederwertigen Bits als erster Hash-Wert 82 ermittelt und eine Anzahl von 16 höherwertigen Bits als erster Bezeichner 100. Eine Anzahl von 13 höherwertigen Bits wird als zweite Hash-Wert 86 ermittelt und eine Anzahl von 16 niederwertigen Bits wird als zweiter Bezeichner 110 ermittelt. Selbstverständlich ist auch eine andere Aufteilung, auch in Bereiche, die nicht die gesamte Anzahl an Bits der Header-Information 12 ausnutzen, möglich. Selbstverständlich kann auch die gesamte Header-Information 12 als Bezeichner 100 bzw. 110 abgespeichert werden. Mithin ist es während der Laufzeit vorteilhaft möglich, zum einen die empfangene Header-Information 12 mit einer erwarteten Header-Information gemäß dem Bezeichner 100 bzw. 110 zu vergleichen und zum anderen durch die reduzierte Anzahl von 29 auf 16 Bits den Speicherplatz für die Bezeichner 100, 110 klein zu halten. Somit wird ein Kompromiss zwischen benötigtem Speicherplatz und sicherer Erkennung und Zuordnung der Header-Information 12 geschaffen. Die Erzeugung der Tabelleneinträge 96 und 98 geschieht während der Konfigurationszeit, die Verwendung der Tabelleneinträge 96 und 98 geschieht während der Laufzeit.
-
Der erste Schlüssel 34e für die Lookup-Tabelle 32 wird in Abhängigkeit von dem ersten und zweiten Tabelleneintrag 96, 98 mittels einer Auswahlfunktion gemäß dem Block 106 ausgewählt. Die Abhängigkeit des ersten Schlüssels 34e von dem ersten und zweiten Tabelleneintrag 96, 98 bedeutet, dass beide Tabelleneinträge 96, 98 abgefragt werden, um den ersten Schlüssel 34e zu ermitteln.
-
Zur Konfiguration des Schaltkreises werden zu der Konfigurationszeit außerhalb des Schaltkreises bzw. auf einer Prozessoreinheit die erste Hash-Tabelle 72 und die zweite Hash-Tabelle 74 mittels des Kuckucks-Hashing gefüllt. Hierzu wird bei einem neuen einzufügenden Eintrag mit der ersten Hash-Tabelle 72 gestartet, der Kuckuck-Hashing-Algorithmus fügt den neuen Eintrag in der Hash-Tabelle 72 ein, falls dort Platz ist. Ist der entsprechende Platz belegt, wird versucht, den dortigen Eintrag in die Hash-Tabelle 74 zu verschieben. Ist dort auch ein belegter Platz vorhanden, wird wiederum versucht, den dortigen Eintrag in die Hash-Tabelle 72 zu verschieben. Kann der Eintrag nicht eingefügt werden, da alle Verschiebungsversuche des Kuckucks-Hashings zwischen den Tabellen erfolglos geblieben sind, wird mit der Hash-Tabelle 74 gestartet. Ist auch ein Einfügen in die Hash-Tabelle 74 erfolglos, so werden entweder in den beiden Bitfolgen 102 und 112 oder in den beiden Bitfolgen 104 und 114, d.h. in Abhängigkeit vom Vorliegen einer Header-Information 12 gemäß Extended-CAN, an einer durch den Passierbit-Index 76 bestimmten Stelle die Bits auf Eins gesetzt. Der Passierbit-Index 76 bestimmt sich in Abhängigkeit von den Kennungen devid und chid, die gemeinsam eine von mehreren Eingangsschnittstellen 6 identifizieren. Sind die erste und zweite Hash-Tabelle 72, 74 fertiggestellt, werden diese auf den integrierten Schaltkreis in entsprechende Speicher geladen. Durch das Vorsehen und Verwenden der Passierbits ist es während der Laufzeit möglich, Hashing-Kollisionen aufzulösen. Insbesondere wird damit darauf verzichtet, diese Kollisionen während der Laufzeit zu erkennen. Es werden jedoch die obigen Maßnahmen im Sinne des Vorsehens der Hash-Werte und der Passierbits ergriffen, um möglichst viele Hashing-Kollisionen während der Laufzeit effizient aufzulösen. Auf der anderen Seite können nicht alle möglichen Kollisionen vorhergesehen werden, weshalb eine reduzierte Leakage, d.h. eine Kollision die zu einer Falschbehandlung der Datensegmente 4 führt, in Kauf genommen wird.