-
Gebiet der Spezifikation
-
Diese Offenbarung betrifft allgemein das Gebiet der Computer-Vernetzung, und insbesondere, obwohl nicht ausschließlich, ein System und ein Verfahren für Intrusionserkennung für ein Controller Area Network.
-
Hintergrund
-
In einigen modernen Rechenzentren ist die Funktion einer Vorrichtung oder eines Gerätes möglicherweise nicht an eine bestimmte, fixierte Hardware-Konfiguration gebunden. Vielmehr können Verarbeitungs-, Arbeitsspeicher-, Speicherungs- und Beschleunigerfunktionen in einigen Fällen von unterschiedlichen Stellen zusammengefasst werden, um einen virtuellen „Verbundknoten“ zu bilden. Ein modernes Netzwerk kann ein Rechenzentrum einschließen, das eine große Zahl von generischen Hardware-Servereinrichtungen beherbergt, die zum Beispiel in einem Serverrack enthalten sind und von einem Hypervisor gesteuert werden. Jedes Hardwaregerät kann eine oder mehrere Instanzen eines virtuellen Gerätes, wie z. B. eines Workload-Servers oder eines virtuellen Desktops, ausführen. Datenverarbeitungsgeräte können auch außerhalb eines Rechenzentrums untergebracht sein, wie z. B. individuelle Datenverarbeitungsgeräte oder Spezialgeräte (z. B. solche, die ein Automobil steuern).
-
Figurenliste
-
Die vorliegende Offenbarung lässt sich am besten anhand der folgenden detaillierten Beschreibung erklären, wenn sie mit den begleitenden Figuren gelesen wird. Es ist zu betonen, dass im Einklang mit der branchenüblichen Standardpraxis verschiedene Merkmale nicht unbedingt maßstabsgetreu gezeichnet sind und lediglich zu Darstellungszwecken verwendet werden. Wenn ein Maßstab dargestellt ist, stellt er explizit oder implizit nur ein illustratives Beispiel bereit. In anderen Ausführungsformen können die Abmessungen der verschiedenen Merkmale zur Klarheit der Diskussion beliebig vergrößert oder verkleinert werden.
- 1 ist ein Blockdiagramm eines Kraftfahrzeugs, das gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation ein Controller Area Network (CAN) beherbergen kann.
- 2 ist ein Blockdiagramm von Systemen, die gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation mit einem CAN verbunden sind.
- 3 ist ein Blockdiagramm eines CAN-Bus-Datenrahmens gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 4 ist ein Blockdiagramm einer Symbolic Aggregate Approximation (SAX)-Wertetabelle gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 5 ist ein Blockdiagramm einer SAX-Sequenztabelle gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 6 ist ein Blockdiagramm einer SAX-Frequenztabelle gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 7 ist ein Diagramm, das die Erkennung einer Anomalie darstellt, die eine potenzielle Intrusion anzeigen kann, gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 8 ist ein Flussdiagramm eines Verfahrens zur Durchführung einer Anomalieerkennung gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 9 veranschaulicht ein Beispiel einer Entfernungsberechnung gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 10 ist ein Blockdiagramm von Komponenten einer Rechenplattform gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
- 11 ist ein Blockdiagramm einer Zentraleinheit (CPU) gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Ausführungsformen der Offenbarung
-
Die folgende Offenbarung stellt viele verschiedene Ausführungsformen oder Beispiele zum Implementieren unterschiedlicher Merkmale der vorliegenden Offenbarung bereit. Spezifische Beispiele von Komponenten und Anordnungen werden nachstehend beschrieben, um die vorliegende Offenbarung zu vereinfachen. Diese sind natürlich lediglich Beispiele und sollten nicht als einschränkend betrachtet werden. Ferner kann die vorliegende Offenbarung Referenznummern und/oder -buchstaben in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Einfachheit und Klarheit und diktiert an sich keine Beziehung zwischen den verschiedenen erörterten Ausführungsformen und/oder Konfigurationen. Unterschiedliche Ausführungsformen können unterschiedliche Vorteile haben, und es ist nicht unbedingt ein bestimmter Vorteil von irgendeiner Ausführungsform erforderlich.
-
Eine moderne Rechenplattform, wie z. B. eine von Intel® bereitgestellte Hardware-Plattform oder eine ähnliche, kann eine Funktion zum Überwachen der Geräteleistung und zur Entscheidungsfindung über Ressourcenbereitstellung enthalten. Zum Beispiel kann in einem großen Rechenzentrum, wie es womöglich von einem Cloud Service Provider (CSP) bereitgestellt wird, die Hardware-Plattform rackmontierte Server mit Rechenressourcen, wie z. B. Prozessoren, Arbeitsspeicher, Speicherpools, Beschleuniger und anderen ähnlichen Ressourcen, einschließen. Wie hierin verwendet, umfasst „Cloud Computing“ vernetzte Rechenressourcen und Technologie, die allgegenwärtigen (oft weltweiten) Zugriff auf Daten, Ressourcen und/oder Technologie ermöglichen. Cloud-Ressourcen sind im Allgemeinen durch große Flexibilität gekennzeichnet, um Ressourcen gemäß aktuellen Arbeitslasten und Anforderungen dynamisch zuzuweisen. Dies kann zum Beispiel über Virtualisierung erreicht werden, wobei Ressourcen, wie z. B. Hardware, Speicherung und Netzwerke über eine Software-Abstraktionsschicht und/oder Containerisierung einer virtuellen Maschine (VM) bereitgestellt werden, wobei Instanzen von Netzwerkfunktionen in „Containern“ bereitgestellt werden, die voneinander getrennt sind, die aber das zugrunde liegende Betriebssystem, den Arbeitsspeicher und Treiberressourcen teilen. Eine Hardware-Plattform kann auch andere Arten von Rechensystemen umfassen, einschließlich eingebetteter Systeme und Systeme wie die in den nachstehenden 10 und 11 dargestellten.
-
Ein modernes Kraftfahrzeug kann ein kompliziertes Netzwerk von Steuergeräten, Sensoren, Eingängen und anderen Datensystemen umfassen, die miteinander kommunizieren müssen, um optimalen Betrieb des Fahrzeugs zu gewährleisten. Dies kann in so genannten intelligenten Autos zu einem besonders komplizierten Problem werden, wobei das Fahrzeug nicht nur Informationen dem Endbenutzer oder Betreiber des Fahrzeugs bereitstellt, sondern auch die Kontrolle über einige oder alle Funktionen des Fahrzeugs übernimmt, entweder unter bestimmten eingeschränkten Umständen oder, im Falle von selbstfahrenden Autos, völlig autonom. Ein modernes Fahrzeug kann nicht nur die elektronische Steuereinheit (ECU), die seit Jahrzehnten in modernen Fahrzeugen anzutreffen ist, sondern auch Sensoren, Computer-Visionssysteme, Detektoren, Infotainmentsysteme und Verkehrsvernetzungs-(V2X)-Kommunikation enthalten (d. h. Fahrzeug-zu-Fahrzeug- oder Fahrzeug-zu-Infrastruktur-Kommunikationssysteme, was bedeutet, dass das Fahrzeug nicht nur mit seinen eigenen Teilsystemen, sondern auch mit externen Systemen, wie z. B. anderen Fahrzeugen, Verkehrsinformationen, Wetterinformationen und ähnlichen, kommunizieren kann).
-
Die Einführung von V2X in das Fahrzeugnetzwerk bietet einen wesentlichen neuen Angriffsvektor für bösartige Akteure. Früher war das Fahrzeug ein völlig eigenständiges Netzwerk mit wenig oder keinem Netzwerkzugang von außen, wohingegen die Einführung von V2X bedeutet, dass bösartige Akteure jetzt eine Zugangsschnittstelle in viele Fahrzeugnetzwerke haben. Dies bietet Angreifern die Gelegenheit, bösartige Nutzdaten, wie z. B. Injektions- oder Spoofing-Angriffe, einzuführen, wohingegen früher solche Angriffe nahezu unmöglich gewesen wären, ohne eine Komponente im Fahrzeug selbst physisch zu beeinträchtigen.
-
Der Controller Area Network (CAN)-Bus entstand in Reaktion auf die Forderung, dass die Teilsysteme eines Fahrzeugs in der Lage sein sollten, miteinander zu kommunizieren. Der CAN-Bus ist durch eine robuste Norm definiert, die es verschiedenen Geräten gestattet, miteinander zu kommunizieren, insbesondere in Umgebungen, denen es an einem zentralisierten Hostcomputer oder einer anderen zentralen Steuereinheit mangelt. Der CAN-Bus arbeitet auf einem seriellen Multimaster-Monitor, wobei jedes Gerät als Knoten bekannt ist. Ein Knoten kann alles Mögliche sein, von einem einfachen Sensor mit einer einzigen periodischen Ausgabe bis hin zu einem äußerst komplexen eingebetteten Computer, der hochentwickelte Software ausführt. Zum Zeitpunkt dieses Schreibens wird die neueste Iteration des CAN-Busses durch die ISO-Spezifikation 11898-2 der Internationalen Organisation für Standardisierung definiert, die eine High-Speed-CAN-Bus-Einheit definiert, der einen linearen Bus verwendet, der an jedem Ende mit 120-Ohm-Widerständen terminiert ist. Der CAN-Bus verwendet ein Differenzialsignalübertragungsmodell, in dem seine physische Implementierung zwei mit CANH und CANL bezeichnete Leitungen enthält. Wenn der Knoten auf „Low“ steht, nehmen CANH und CANL jeweils Signale von 3,5 V und 1,5 V an, die als „dominante“ Signale bekannt sind. Wenn der Knoten auf „High“ steht, nehmen CANH und CANL ein 1,5-V-Signal an, das als „rezessiv“ bekannt ist. Der Abschlusswiderstand setzt die beiden Leitungen passiv auf eine nominale Differenzspannung von 1,5 Volt zurück, wenn sie nicht angesteuert werden.
-
Der CAN-Bus wurde ursprünglich in einer Zeit entworfen, als die meisten Automobile praktisch keine Konnektivität nach außen hatten, weshalb die Gefahr einer Intrusion kein so bedeutender Sorgenfaktor war, wie er es heute ist (z. B. hatten die Knoten in einem Kraftfahrzeug keine Kommunikationsfähigkeit außerhalb des Fahrzeugs selbst). Daher wurde der CAN-Bus-Standard ursprünglich ohne jegliche native Sicherheitsfunktionen konzipiert. Aber im modernen Automobilsektor, in dem der CAN-Bus noch immer einen de facto-Standard darstellt, ist der Bus von außerhalb des fahrzeuginternen Netzwerks erreichbar geworden. Insbesondere hat die Einführung von V2X-Knoten, die mit dem CAN-Bus verbunden sind, die Angriffsfläche erweitert und es für externe Akteure möglich gemacht, den CAN-Bus zu erreichen und bösartige Aktionen aus der Ferne auszuführen. Dies kann besonders in Fällen, in denen das Fahrzeug volle oder teilweise autonome Kontrolle hat, problematisch sein. In solchen Fällen können Intrusionen in das CAN-Bus-Netzwerk ein kritisches Sicherheitsproblem repräsentieren.
-
Zum Beispiel könnte ein Angreifer Nachrichten in den CAN-Bus injizieren, die Daten im CAN-Bus verfälschen oder einen gültigen Knoten oder ein ECU auf dem CAN-Bus imitieren könnten, und dadurch das System veranlassen könnten, von sicheren Betriebsnormen abzuweichen.
Da es dem CAN-Bus an einem nativen Authentifizierungsmechanismus mangelt, können illegitime Nachrichten von dem System als authentische Nachrichten aufgefasst werden. In manchen Fällen können kryptographische Mechanismen für Datenursprungsauthentifizierung verwendet werden, um eine Vertrauensdomäne in den CAN-Bus einzuführen. Doch selbst das mag den Fall eines beeinträchtigten ECU nicht mildern und kann somit scheinbar authentische Nachrichten senden, die Nutzdaten eines Angreifers enthalten.
-
Um die Sicherheit eines CAN-Bus-Netzwerks, z. B. eines Kraftfahrzeugs, zu verbessern, ist es vorteilhaft, ein Intrusionserkennungssystem (IDS) einzuführen, das den Bus automatisch überprüfen und Anomalien erkennen kann. Es ist möglich, ein solches IDS auf Meldungshäufigkeit zu basieren, was zum Erkennen von Injektionsangriffen erfolgreich sein kann.
-
Es ist jedoch vorteilhaft, auch in der Lage zu sein, Spoofing-Angriffe zu erkennen. Während maschinelle Lernalgorithmen für diesen Zweck geeignet sein mögen, erfordern sie Angriffsmuster während einer Trainingsphase, was bedeutet, dass sie möglicherweise nicht in der Lage sind, Angriffe in Echtzeit zu erkennen. Daher, um ein verbessertes IDS bereitzustellen, veranschaulicht die vorliegende Spezifikation ein auf Symbolic Aggregate Approximation (SAX) basiertes Verfahren, das mehrere Datenströme von Zeitreihen verwendet, um inhärente Muster in den Daten zu beobachten. Dies befähigt das System, Anomalien im CAN-Bus (oder einem anderen Netzwerk) zu erkennen und diese Anomalien als mögliche Intrusionen oder sonstige Fehler zu identifizieren.
-
Ausführungsformen des Intrusionserkennungssystems der vorliegenden Spezifikation beruhen auf der Tatsache, dass in vielen Netzwerken, wie z. B. fahrzeuginternen Netzwerken, die meisten Nachrichten regelmäßig zum CAN-Bus gesendet werden, und dass der Inhalt der meisten der Nachrichtennutzlasten entweder konstant bleibt oder sich über einen bestimmten Zeitraum nur inkremental ändert. Daher bildet der CAN-Bus-Nutzdatenstrom ein Muster für einen gegebenen Betriebskontext. Beachten Sie, dass, während der CAN-Bus in bestimmten Teilen dieser Spezifikation als konkretes Beispiel eines speziellen Busses verwendet wird, der aus dem hierin beschriebenen IDS Nutzen ziehen kann, es lediglich als ein nicht einschränkendes und illustratives Beispiel verstanden werden sollte. Das IDS dieser Spezifikation kann auf viele unterschiedliche Arten von Netzwerken angewandt werden und mag in Netzwerken oder Bussen, die keine eingebaute oder native Unterstützung für Geräte- oder Nachrichtenauthentifizierung haben, besonders vorteilhaft sein. Andere Arten von Netzwerken oder Bussen mögen von dem IDS der vorliegenden Spezifikation profitieren, einschließlich über ein nicht einschränkendes Beispiel eines Ethernet, das anfällig für interne Nachrichtenherstellung sein kann und Gefahr läuft, verbundene Geräte bösartigen Nutzdaten auszusetzen, die mit gültigen Authentisierungstags ausgesendet werden können.
-
Wenn ein Angreifer zum Beispiel einen Spoofing-Angriff durchführt, wie etwa Ändern der Motorumdrehungs- oder Getriebewerte, oder einen Injektionsangriff, wie etwa Einfügen von gefälschten Nachrichten, ist die Wahrscheinlichkeit groß, dass jene etablierten Muster verletzt werden.
-
Demzufolge können Anomalien in Datenstrommustern von Zeitreihen als Beweis einer potenziellen Intrusion aufgefasst werden.
-
Zeitreihen-Anomalieerkennung beinhaltet einen breiten Bereich von Implementierungen, wie etwa „gleitender Durchschnitt“, der einen Durchschnitt von Zahlen innerhalb eines Zeitraums berechnet. Einige existierende Zeitreihen-Anomalieerkennungsverfahren stützen sich auf eine eindimensionale Zeitreihe. Die CAN-Bus-Daten können Nachrichten entlang mehreren Dimensionen enthalten, wobei jede Dimension unterschiedliche Nachrichtentypen repräsentiert. Zum Beispiel kann jeder Nachrichtentyp eine andere Art von Eingabe von einem unterschiedlichen System repräsentieren.
-
Innerhalb eines CAN-Busses können jedoch inhärente Muster über mehrere Dimensionen oder Nachrichtentypen beobachtet werden. Zum Beispiel kann ein Gangwechsel zu einer gleichzeitigen Geschwindigkeitsänderung und einer Bremsauslösung führen. Diese Nachrichten fallen miteinander zusammen. In einem allgemeineren Sinn kann von einer Nachricht B gesagt werden, dass sie mit einer Nachricht A korreliert. Zum Beispiel, wenn der Wert der Nachricht A 00 ist, ist der Wert der Nachricht B 00; wenn der Wert der Nachricht A 08 ist, ist der Wert der Nachricht B 04. In manchen Fällen halten diese Korrelationen deterministisch, weil viele Systeme innerhalb eines Fahrzeugs voneinander abhängig sind. Ein Zeitreihen-Anomalieerkennungssystem, das nur auf Nachricht A oder Nachricht B als getrennte Datenströme blickt, ist möglicherweise nicht in der Lage, eine Intrusion zu kennzeichnen, wenn eine von ihnen abweicht. Doch eine Beobachtung, dass der Wert der Nachricht A 08 und der Wert der Nachricht B 00 ist, stimmt nicht mit der bekannten deterministischen Korrelation überein und bietet somit einen höheren Vertrauensgrad der Korrelation mit einer Intrusion oder Anomalie. Daher kann diese zugrunde liegende Korrelation zwischen mehreren Dimensionen oder Nachrichtentypen verwendet werden, um ein Ausgangsmuster zu erzeugen. Das Intrusionserkennungsmodell der vorliegenden Spezifikation kann jede Abweichung von einem Ausgangswert erkennen, um eine potenzielle Anomalie zu melden.
-
Ein System und Verfahren zur Bereitstellung einer Intrusionserkennung für ein Controller Area Network wird nun mit besonderer Bezugnahme auf die beigefügten FIGUREN beschrieben. Es sei darauf hingewiesen, dass in allen FIGUREN bestimmte Referenznummern wiederholt werden können, um anzuzeigen, dass ein spezielles Gerät oder ein Block ganz oder im Wesentlichen über die FIGUREN gleich bleibend ist. Es ist jedoch nicht beabsichtigt, eine bestimmte Beziehung zwischen den verschiedenen offenbarten Ausführungsformen zu implizieren. In bestimmten Beispielen kann eine Gattung von Elementen durch eine spezielle Referenznummer („Element 10“) gekennzeichnet sein, während individuelle Arten oder Beispiele der Gattung durch eine Zahl mit Bindestrich („erstes spezielles Element 10-1“ und „zweites spezielles Element 10-2“) gekennzeichnet sein kann.
-
1 ist ein Blockdiagramm eines Kraftfahrzeugs 100, das gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation ein Controller Area Network (CAN) beherbergen kann.
-
Das Fahrzeug 100 kann eine Anzahl von Einheiten enthalten, die in einem Bus, wie etwa einem CAN-Bus, zu Knoten werden können. Zum Beispiel kann das Fahrzeug 100 eine primäre elektronische Steuereinheit (ECU) 104 enthalten, die solchen ECUs ähnlich sein kann, die allgemein in Autos verwendet werden, um solche Dinge wie Luft-Kraftstoff-Gemische, Beschleunigung, Kraftstoffeinspritzung und ähnliche Funktionen zu steuern. In einigen Beispielen mag ein gewöhnliches ECU die Geschwindigkeit oder Richtung des Autos nicht direkt steuern, aber es kann eine Anzahl von Signalen in Reaktion auf die Eingaben des Benutzers, wie etwa elektronische Lenkungssteuerung, Bremsen, Beschleunigung und Ähnliches, verarbeiten. In Ausführungsformen der vorliegenden Offenbarung kann das Fahrzeug 100 eine V2X-Schnittstelle enthalten, die dazu ausgelegt ist, eine Fahrzeug-zu-Fahrzeug- und eine Fahrzeug-zu-Infrastruktur-Kommunikation durchzuführen, wie oben erläutert.
-
Das Fahrzeug 100 kann auch eine Anzahl von anderen Sensoren und Prozessoren enthalten, und die Anzahl und Art dieser Elemente kann auf den Typ des Fahrzeugs bezogen sein. Zum Beispiel kann ein kostengünstiges Low-End-Fahrzeug nur eine kleine Anzahl von Sensoren aufweisen, während ein Fahrzeug mit elektronischen Assistenzfunktionen einen viel größeren Satz an Funktionen aufweisen kann, und ein autonomes, selbstfahrendes Auto kann sogar einen noch größeren Satz an Funktionen haben, um die Selbstfahrfunktion zu unterstützen. In einem anschaulichen und nicht einschränkenden Beispiel kann das Fahrzeug 100 einen Tachometer 140, Reifendrucksensoren 108, einen Ultraschallsensor 128, ein Radar 124, eine Frontkamera 116, eine Heckkamera 112, Spurhaltesensoren 120 und Umgebungstemperatursensoren 136 enthalten. Andere Sensoren und Teilsysteme können in einem nicht einschränkenden Beispiel einen Drehzahlmesser, einen Kompass, ein GPS, einen Beschleunigungsmesser, ein automatisches Bremssystem, eine automatische Antriebsschlupfregelung, Lenkungssteuerungs-Teilsysteme und sonstige enthalten.
-
Jedes dieser Systeme muss möglicherweise zu bestimmten Zeitpunkten mit einem oder mehreren anderen der Systeme kommunizieren. Um mit anderen Systemen zu kommunizieren, mag ein Knoten auf dem CAN-Bus eine Nachricht auf dem CAN-Bus übertragen mit einer Kopfzeile, welche die Quelle der Nachricht und optional auch das Ziel der Nachricht identifiziert.
Da der CAN-Bus auf eine Rundsendeart arbeitet, können alle der Knoten auf dem CAN-Bus die Nachricht empfangen, und jene Knoten, die nicht das Ziel sind, oder die die Nachricht nicht benötigen, können die Nachricht einfach verwerfen oder ignorieren.
-
2 ist ein Blockdiagramm von Systemen, die gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation mit einem CAN verbunden sind.
-
In diesem Beispiel enthält der CAN-Bus 200 eine High-Leitung 202 und eine Low-Leitung 203. Wie oben erläutert, und wie in der CAN-Bus-Spezifikation aufgeführt, können Knoten auf einem CAN-Bus kommunizieren, indem sie Signale in die High-Leitung und die Low-Leitung einspeisen, um logische Nullen und Einsen zu repräsentieren. Wie in der Spezifikation definiert, werden die High-Leitung 202 und die Low-Leitung 203 an ihren Enden durch ein Paar von 120-Ohm-Widerständen terminiert.
-
In einem anschaulichen und nicht einschränkenden Beispiel sind an dem CAN-Bus 200 eine Anzahl von Knoten angebracht, die eine ECU 204, einen Ultraschallsensor 228, einen Spurhaltesensor 220, einen Tachometer 240, eine V2X-Schnittstelle 232, eine Heckkamera 212, eine Frontkamera 216, Reifendrucksensoren 208, Radar 224 und ein fahrzeuginternes Netzwerk-Gateway 250 umfassen.
-
Gemäß dem CAN-Bus-Standard können die verschiedenen Knoten auf dem CAN-Bus 200 als Peer-Knoten betrachtet werden, und ein Knoten wird nicht unbedingt als „Master-Knoten“ ausgewählt oder festgelegt. Das fahrzeuginterne Netzwerk-Gateway 250 kann jedoch spezielle Sicherheitsfunktionen haben. Insbesondere kann das fahrzeuginterne Netzwerk-Gateway 250 dazu ausgelegt sein, den CAN-Bus 200 zu überwachen, mögliche Anomalien zu erkennen und die möglichen Anomalien als mögliche Intrusionen zu identifizieren. In dem Fall, dass das fahrzeuginterne Netzwerk-Gateway 250 eine Anomalie oder Intrusion identifiziert, kann es auch dazu ausgelegt sein, geeignete Abhilfemaßnahmen zu ergreifen, wie etwa Warnen eines Bedieners des Fahrzeugs, Abfragen eines externen Sicherheitsanbieters über die V2X-Schnittstelle 224 und möglicherweise Zwingen des Fahrzeugs in eine sichere Ruheposition, bis die Anomalie beseitigt und das Fahrzeug wieder sicher betrieben werden kann.
-
3 ist ein Blockdiagramm eines CAN-Bus-Datenrahmens 300 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Wie in 3 dargestellt, enthält der CAN-Bus-Datenrahmen 300 ein 1-Bit-Rahmenanfangsflag 304, gefolgt von einer Nachrichten-ID 308. Die Nachrichten-ID 308 kann zwischen 11 und 29 Bits enthalten, die den Satz von Signalen identifizieren, die im Datenfeld übertragen wurden.
Der CAN-Bus-Datenrahmen 300 enthält auch ein Steuerfeld 312, das Steuerdaten bereitstellt, z. B. wenn dies ein standardmäßiger oder erweiterter Rahmen ist, und a, um Fernrahmen anzufordern.
Das Steuerfeld 312 enthält auch vier Bits, welche die Länge des Datenfelds angeben.
-
Die Nutzdaten des CAN-Bus-Datenrahmens 300 sind in einem Datenfeld 316 enthalten, das zwischen 0 und 8 Bytes (0 bis 64 Bits) enthalten kann. Dies wird von einem Feld für zyklische Redundanzprüfung (CRC) 320 gefolgt, das für Fehlererkennung verwendet wird. Ein ACK-Feld 324 wird zum Übertragen von Bestätigungen verwendet. Und 7-Bit-Rahmenende 328 terminiert den CAN-Bus-Datenrahmen 300.
-
Wie oben dargestellt, enthält der CAN-Bus-Datenrahmen 300 bis zu 8 Bytes von Nutzdaten im Datenfeld 316. Abhängig von der Anwendung, kann das Datenfeld weiter in Teilfelder partitioniert sein, die spezifischen Inhalt tragen. Zum Beispiel kann ein spezifisches Teilfeld verwendet werden, um die Umdrehungen pro Minute (RPM), Radwinkel, Geschwindigkeit oder andere Datenpunkte zu tragen. Im Automobilkontext ist beobachtet worden, dass die Mehrzahl von CAN-Bus-Nachrichten in regelmäßigen Zeitintervallen gesendet werden. Daher ist es durch Untersuchen einer Sequenz derselben Art von Nachrichten (zum Beispiel mit derselben Nachrichten-ID) möglich, bestimmte vorhersehbare Muster zu beobachten. Muster können auch in einer Sequenz von Nachrichten beobachtet werden, die mehrere Arten von Nachrichten abdeckt.
-
Eine Nachrichtensequenz M auf dem CAN-Bus kann als M = {..., mi-l, mi, mi+l, ... } modelliert werden, wobei mi eine der Nachrichten ist und i die Nachrichtenreihenfolge beschreibt. Jede Nachricht mi kann bis zu 8 Bytes von Daten im Datenfeld 316 enthalten, die als Di = {..., dj} modelliert werden können, wobei Di 1 Byte ist und 1 ≤ j ≤ 8. Jedes individuelle Byte kann als ein individueller Dezimal- oder Hexadezimalwert zwischen 0 und 255 (oder im Falle von hexadezimal, zwischen 0 und FF) interpretiert werden.
-
In Anbetracht des jten Bytes aller auf dem CAN-Bus innerhalb eines Zeitraums übertragenen Nachrichten, kann eine numerische Zeitreihe beobachtet werden. Betrachten wir zum Beispiel einen Fall, in dem das erste Byte ausgewählt wird, und in dem das erste Byte jedes CAN-Bus-Datenrahmens als ein Wert zwischen 0 und 255 aufgezeichnet wird.
-
Beobachtend ist festgestellt worden, dass diese Zeitreihe gemäß einem regulären Datenmuster modelliert werden kann. Beachten Sie, dass unterschiedliche Arten von Nachrichten dieselben oder ähnliche Datennutzlasten haben könnten, doch über eine Zeitreihe tendiert das Untersuchen eines festen Bytes einer Reihe von CAN-Bus-Datenrahmen dazu, ähnliche Diagramme zu ergeben.
-
Daher, wenn ein Angreifer einen Angriff auf den CAN-Bus durchführt, z. B. über Injektion oder Spoofing, unterbricht die bösartige Nutzlast die normale Reihe des Datenstroms, um somit eine Abweichung vom normalen Muster zu repräsentieren. Die vorliegende Spezifikation verwendet ein Zeitreihen-Anomalienachweisverfahren, um Anomalien im Datenstrom zu identifizieren, und identifiziert sie als potenziell bösartig.
-
Beachten Sie, dass einige traditionelle Zeitreihen-Anomalieerkennungsverfahren für einen einzelnen Zeitreihen-Thread verwendet werden, wohingegen der CAN-Bus mehrere Zeitreihennachrichten in einem einzelnen Datenstrom enthalten kann. Daher, um Anomalieerkennungsmodelle an den CAN-Bus-Datenstrom anzupassen, wird ein neuartiger Algorithmus auf der Basis von Symbolic Aggregate Approximation (SAX) angewandt.
-
Bezug nehmend auf 4, ist 4 ein Blockdiagramm einer Symbolic Aggregate Approximation (SAX)-Wertetabelle 400 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Die SAX-Wertetabelle 400 repräsentiert eine SAX-Ausführungsform, wobei ein 8-Bit-Wert (z. B. ein einzelnes identifiziertes Byte innerhalb des Datenfelds 316 von 300) in acht verschiedene „Eimer“ unterteilt wird. Hier werden acht Eimer als ein anschauliches Beispiel verwendet, doch in der Praxis kann eine beliebige Anzahl von Eimern verwendet werden. Darüber hinaus hat in diesem Beispiel jeder Eimer die gleiche Größe wie jeder andere Eimer, doch das ist nicht in allen Fällen notwendig.
-
In manchen Fällen kann ein Adressraum in Regionen von größerem oder kleinerem Interesse aufgeteilt werden, wobei für die Regionen von höherem Interesse eine Eimergröße von höherer Granularität, und für Regionen von geringerem Interesse eine Eimergröße von niedrigerer Granularität verwendet werden kann.
-
In der Praxis kann ein 8-Bit-Adressraum mit 256 Werten in eine beliebige Anzahl von Eimern zwischen einem Eimer am Ende mit niedriger Auflösung (mit anderen Worten, alle 256 Werte werden in einem Eimer gruppiert) und 256 Eimern am Ende mit hoher Auflösung (mit anderen Worten, jeder Wert hat seinen eigenen individuellen Eimer) unterteilt werden.
Diese extremen Fälle haben einen begrenzten praktischen Wert. Aus praktischer Sicht ist es wertvoll, eine gewisse Anzahl von Eimern, wie etwa zwei, vier, acht, 16, oder eine andere Anzahl von Eimern auszuwählen, die einen angemessenen Kompromiss zwischen Auflösung und einfacher Verarbeitbarkeit liefert.
-
Während acht Eimer als anschaulicher Wert für den Zweck der 4 - 6 ausgewählt worden sind, sei auch darauf hingewiesen, dass das hierin beschriebene Verfahren auch experimentell mit lediglich vier Eimern angewandt worden ist und erfolgreiche Ergebnisse in diesem Falle erzielt hat.
-
In der Ausführungsform mit acht Eimern wird der 8-Bit-Adressraum in Wertbereiche (von gleichen oder unterschiedlichen Größen, abhängig von der Ausführungsform) unterteilt, wobei jedem Bereich ein durch einen Buchstabenwert identifizierter Eimer zugewiesen wird. Zum Beispiel wird der Bereich von 0 bis 31 dem Eimer A, der Bereich von 32 bis 63 dem Eimer B, der Bereich von 64 bis 95 dem Eimer C, der Bereich von 96 bis 127 dem Eimer D, der Bereich von 128 bis 159 dem Eimer E, der Bereich von 160 bis 191 dem Eimer F, der Bereich von 192 bis 223 dem Eimer G, und der Bereich von 224 bis 255 dem Eimer H zugewiesen.
-
SAX ist ein Verfahren zum Umwandeln einer rohen Zeitreihe in eine gruppierte Repräsentation. Im Allgemeinen werden alle möglichen Werte in n Eimer unterteilt, wobei ein Eimer durch ein Zeichen im SAX-Verfahren repräsentiert wird. Zum Beispiel repräsentieren die Eimer A bis H in der SAX-Wertetabelle 400 jeweils ein Zeichen in dem SAX-Verfahren.
-
Bezug nehmend auf 5, ist 5 ein Blockdiagramm einer SAX-Sequenztabelle 500 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Die SAX-Sequenztabelle 500 veranschaulicht den „Sequenz“-Aspekt des SAX-Verfahrens. Die SAX-Sequenztabelle 500 veranschaulicht ein Beispiel, in dem ein 8-Bit-Adressraum in acht Eimer mit einer Zwei-Zeichen-Sequenz unterteilt wird. Mit anderen Worten, beim Berechnen der Zeitreihe wird ein Schiebefenster auf die Sequenz angewandt, wobei jedes individuelle Zeichen als der erste Posten in einer Zwei-Zeichen-Sequenz agiert. Daher werden in diesem Beispiel die möglichen Sequenzen durch die Tabelle 500 identifiziert, nämlich als die Sequenzen AA bis HH.
-
Dies reduziert einen potenziell großen und schwerfälligen binären Datenstrom in eine besser verwaltbare Form von diskreten Sequenzen. Beachten Sie, dass, falls beispielsweise eine Drei-Zeichen-Sequenz gewählt worden wäre, eine dritte Dimension zu der Tabelle 500 hinzugefügt werden würde, und die Sequenzen von AAA bis HHH reichen würden. Im Allgemeinen kann man sich SAX-Sequenztabellen 500 als ein multidimensionales Array vorstellen, wobei ein n × n-Raster in jeder Dimension des Arrays enthalten ist.
-
Bezug nehmend auf 6, ist 6 ein Blockdiagramm einer SAX-Frequenztabelle 600 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Die SAX-Frequenztabelle 600 führt Buch über das Auftreten jedes dieser diskreten Sequenzwerte innerhalb einer Eingabezeichenfolge. In dem Beispiel von 6 wurde eine pseudozufällige Eingabezeichenfolge 602 erzeugt. Die Eingabezeichenfolge 602 beginnt mit den Zeichen BFCDFDCGAGF. Die Eingabezeichenfolge 602 wird dann in Zwei-Zeichen-Sequenzen unterteilt, mit anderen Worten BF, FC, CD, DF, FD, DC, CG, GA, AG, GF und so weiter. Eine Anzahl des Auftretens jedes Zeichens kann in der SAX-Frequenztabelle 600 aufrechterhalten werden.
-
Allgemein ausgedrückt, wird ein n × n-Raster eingerichtet, um die Frequenzen jeder Teilsequenz zu enthalten, wobei n die Anzahl von Eimern in dem SAX-Modell ist. Die Frequenzen aller Teilsequenzen können in dem entsprechenden Slot in der SAX-Frequenztabelle 600 aufgezeichnet werden. Dieses Raster kann auch als „Zeitreihen-Bitmap“ bezeichnet werden.
-
Der Abstand zwischen zwei n × n-Bitmaps A und B kann mathematisch als dist
definiert werden. Der Abstand zwischen zwei Bitmaps kann dann als Anomaliewert zu jedem Zeitmoment gemessen werden. Beachten Sie, dass der Abstand zwischen zwei Elementen nicht von gleichem Gewicht für jeden anderen Abstand sein muss. Ausführungsformen können bestimmten Elementen mehr oder weniger Gewicht beimessen.
-
Bezug nehmend auf 7, ist 7 ein Diagramm 700, das die Erkennung einer Anomalie darstellt, die eine potenzielle Intrusion anzeigen kann, gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Das Diagramm 700 veranschaulicht ein reales experimentelles Ergebnis der Messung einer SAX-Zeitreihe in einem Zeitfenster.
-
In einem Experiment wurde ein bösartiges Paket absichtlich in den Datenstrom eingefügt. Wie in Diagramm 700 sichtbar ist, hat die potenzielle Intrusion 704 einen Abstand von der vorhergehenden Reihe, der einen definierten Anomalie-Schwellenwert 708 überschreitet. Da die potenzielle Intrusion 704 den Schwellenwert 708 überschreitet, wird sie als Anomalie identifiziert und kann dann weiter analysiert werden, so dass eine Abhilfemaßnahme ergriffen werden kann.
-
8 ist ein Flussdiagramm eines Verfahrens 800 zur Durchführung einer Anomalieerkennung gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Beachten Sie, dass einige oder alle Schritte des Verfahrens 800 durchgeführt werden können, zum Beispiel durch das fahrzeuginterne Netzwerk-Gateway 250 von 2, das in Hardware enthalten sein kann, wie z. B. die in den 9 und 10 der vorliegenden Spezifikation dargestellte Hardware. Das Verfahren 800 kann durch ein oder mehrere Logikelemente durchgeführt werden, die auf einer Hardware-Plattform beherbergt sind, die eine beliebige Kombination von Hardware, Software, Firmware oder sonstiger geeigneter Logikelemente umfassen kann. In der ganzen Beschreibung des Verfahrens 800 können bestimmte Aktionen angegeben sein, die von der „Logik“ durchzuführen sind, die als eine beliebige Logik aufzufassen ist, die gemäß den Lehren der vorliegenden Spezifikation implementiert wird.
-
In Block 804 schiebt die Logik zwei verkettete Zeitfenster, hierin als Wcur und Wpast bezeichnet, über die Zeitreihe. Angenommen, dass jede Bitmap über eine Sequenz von voraufgezeichneten Nachrichten mit einem Zeitfenster Sw erzeugt wird, dann verwaltet die Logik zwei getrennte Bitmaps: Bpast über das vergangene Fenster Wpast, und Bcur über das aktuelle Fenster Wcur.
-
In Block 808 aktualisiert die Logik die Zeitreihen-Bitmaps Bcur und Bpast für die zwei Fenster. Nehmen wir zum Beispiel an, dass die Logik bei der Zeit 0 beginnt. Bpast kann unter Verwendung von Daten aufgebaut sein, die innerhalb eines ersten Zeitfensters Sw beobachtet werden (d. h., {Sw, 2Sw}). Nachdem die zwei Bitmaps zur Zeit t = 2Sw erstellt worden sind, kann die Erkennung durch Berechnen des Abstands zwischen den zwei Bitmaps unter Verwendung der oben beschriebenen Funktion dist gestartet werden, wodurch ein Anomaliewert bei jedem Zeitschritt erzeugt wird.
-
In Block 812 berechnet die Logik die Differenz zwischen den beiden Fenstern. Diese Differenz kann gemäß der oben beschriebenen Funktion dist berechnet werden, wodurch ein Anomaliewert bei jedem Zeitschritt erzeugt wird.
-
Sobald die Erkennung beginnt, werden die beiden Bitmaps bei jedem Zeitschritt unter Verwendung eines Schiebefenstermechanismus aktualisiert. Insbesondere wird Bcur bei jedem Zeitschritt ti aktualisiert, indem das bei ti beobachtete neue Datenzeichen hinzugefügt und das bei Wcur beobachtete älteste Datenzeichen verworfen wird, d. h. die mit [ti - Sw, ti] beobachtete Datensequenz wird in Bcur aufrechterhalten. Bpast wird auf ähnliche Weise aktualisiert, d. h. es zeichnet Daten während des Fensters [ti - 2Sw, ti - Sw] auf.
-
Bezug nehmend auf 9, veranschaulicht 9 ein Beispiel einer Entfernungsberechnung gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
-
Zum Zweck der Vereinfachung der Abbildung veranschaulicht 9 eine Ausführungsform, in der nur vier Eimer bereitgestellt werden, doch die Sequenzgröße ist trotzdem 2, wie in vorhergehenden Ausführungsformen. Einfach ausgedrückt, kann gesagt werden, dass der Abstand die Summe der Absolutwerte der zellenweisen Differenzen zwischen den beiden Tabellen ist. Daher unterscheiden sich Bpast 904 und Bcur 908 in 9 um einen Wert von 11. Diese Zahl wird erreicht, indem jede Zelle in Bpast 904 mit ihrer entsprechenden Zelle in Bcur 908 verglichen wird. Wenn eine Differenz besteht, wird der Absolutwert der betreffenden Differenz dem Gesamtabstand hinzugefügt.
In diesem Fall beträgt der Abstand 11. Beachten Sie, dass die Zellen kein gleiches Gewicht haben müssen.
Unterschiedliche Gewichte können unterschiedlichen Zelle zugewiesen werden.
-
Nun wieder auf 8 Bezug nehmend, bestimmt die Logik im Entscheidungsblock 816, ob die Differenz zwischen den beiden Fenstern einen Schwellenwert überschreitet. Falls die Differenz den Schwellenwert nicht überschreitet, wird keine Anomalie erkannt, und in Block 898 ist das Verfahren abgeschlossen.
-
Falls die Differenz jedoch den Schwellenwert überschreitet, dann kann die Logik in Block 820 eine potenzielle Anomalie markieren, die als eine potenzielle Intrusion identifiziert werden kann. Nachdem die Anomalie als potenzielle Intrusion identifiziert worden ist, kann eine Abhilfemaßnahme ergriffen werden. Beachten Sie, dass zusätzlich zu der Erkennung einer Differenz über dem Schwellenwert, die Erkennung einer Anomalie ferner die Erkennung enthalten kann, dass eine Korrelation verletzt ist (z. B. besteht eine bekannte Korrelation zwischen den Dimensionen A und B, und eine Anomalie wird erkannt, wenn die SAX-Differenz zwischen den Rahmen über dem Schwellenwert T liegt, und wenn die Korrelation zwischen A und B über die beiden Rahmen verletzt ist). Alternativ dazu kann eine Anomalie erkannt werden, wenn die Differenz zwischen den Rahmen über dem Schwellenwert T liegt, oder wenn die Korrelation zwischen A und B verletzt ist. Beachten Sie auch, dass die Korrelation der beiden Dimensionen hier als nicht einschränkendes Beispiel verwendet wird, doch in der Praxis kann die Korrelation zwischen drei oder mehr Dimensionen liegen.
-
Beachten Sie ferner, dass, während oben einige Beispiele von Abhilfemaßnahmen gegeben werden, diese Beispiele illustrativ und nicht einschränkend sind, und es sollte verstanden werden, dass in Reaktion auf eine erkannte Intrusion eine beliebige geeignete Abhilfemaßnahme ergriffen werden kann.
-
In Block
898 ist das Verfahren abgeschlossen.
Tabelle 1. Parameter für IDS auf Zeitreihenbasis
Parameter | Beispielwerte |
Eimernummer (n) | 4 |
Blockgröße (C) | 1 Byte |
Fenstergröße (Sw) | 2 Sekunden |
Teilsequenzlänge (Ls) | 2 Byte |
Teilsequenz-Überlappungslänge (L0) | 1 Byte |
Schwellenwert (T) | 3.000 |
-
Die obige Tabelle 1 bietet Beispiele von Parametern, die in einer Ausführungsform der vorliegenden Spezifikation verwendet werden, die experimentell verwendet wurde, um die hierin offenbarten Verfahren zu überprüfen. Beachten Sie, dass die hier offenbarten Werte für unterschiedliche Fälle angepasst werden können, wie etwa unterschiedliche Typen von Autos, unterschiedliche Typen von Leinwänden, unterschiedliche Prozessorgeschwindigkeiten oder andere Faktoren. Die Eimerzahl und Blockgröße bestimmen die Granularität des Musters. Der Schwellenwert des Anomaliewertes bestimmt, wie genau Anomalien erkannt werden können. Der Schwellenwert sollte niedrig genug sein, um echte Anomalien zu erfassen, aber hoch genug, um Falschmeldungen zu vermeiden.
-
Um Falschmeldungen zu reduzieren, kann in einigen Ausführungsformen zuerst eine Konfigurationsphase durchgeführt werden, um Daten zu sammeln und einen angemessenen Anomaliewert zu bestimmen, die gewählt werden kann, um höher als der höchste Differenzwert in einer Zeitreihe ohne Intrusionen oder andere Anomalien zu sein. Die Fenstergröße wird dafür gewählt, wie weit voraus nach anomalen Mustern Ausschau zu halten ist, und in manchen Fällen ist es sinnvoll, die Fenstergröße so einzustellen, dass die meisten regelmäßigen Nachrichten mindestens zwei- oder dreimal erfasst werden. Die Fenstergröße kann auch auf einer referenzierten Zeitreihe eingestellt werden, um eine angemessene Fenstergröße heuristisch zu beschließen.
-
In dem experimentellen Beispiel war die Eimergröße 4, und die Blockgröße war 1 Byte, die von dem 8-Byte-Muster in der Nutzlast des CAN-Bus-Datenrahmens ausgewählt wurden. Die Fenstergröße war 2 Sekunden, und die Teilsequenzlänge war zwei Byte. Die Teilsequenz-Überlappungslänge war 1 Byte. Anders ausgedrückt, war jede Teilsequenz zwei Zeichen lang und überlappte um ein Zeichen mit der vorhergehenden Sequenz. Der ausgewählte Schwellenwert für die Differenz war 3.000.
-
Eine Bewertung wurde unter Verwendung eines CAN-Bus-Datensatzes von einem echten Fahrzeug durchgeführt. Dies umfasste einen Injektionsangriff, bei dem Nachrichten der dominantesten Nachrichten-ID und Nachrichten einer beliebigen Nachrichten-ID eingefügt wurden, zusammen mit Spoofing-Angriffen, bei denen Getriebewerte und Drehzahlwerte gefälscht wurden.
-
Eine beispielhafte Implementierung der Lehren der vorliegenden Spezifikation verfolgte jeden 8-Byte-Datenstrom und meldete Anomalien, wo Anomaliewerte die Schwellenwerte überschritten. Beachten Sie, dass die Schwellenwerte für jeden Bytestrom unterschiedlich eingestellt werden können und durch einen normalen Datenstrom im Voraus referenziert werden können, um Falschmeldungen zu reduzieren.
-
Unter Verwendung der obigen Einrichtung wurden die simulierten Angriffe erfolgreich von der Logik erkannt. Obwohl nicht identisch mit dem Diagramm 700 von 7, lieferten die simulierten Angriffe ähnliche Spitzen in dem Datenmuster, die als Anomalien identifizierbar waren und somit als potenzielle Intrusionen markiert werden konnten.
-
10 ist ein Blockdiagramm von Komponenten einer Rechenplattform 1002A gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. In der dargestellten Ausführungsform sind die Plattformen 1002A, 1002B und 1002C zusammen mit der Verwaltungsplattform 1006 des Rechenzentrums und der Datenanalyse-Engine 1004 über das Netzwerk 1008 miteinander verbunden. In anderen Ausführungsformen kann ein Computersystem eine beliebige geeignete Anzahl von Plattformen (d. h. eine oder mehrere) umfassen. In einigen Ausführungsformen (z. B. wenn ein Computersystem nur eine einzige Plattform enthält) kann die Systemverwaltungsplattform 1006 ganz oder teilweise auf einer Plattform 1002 enthalten sein. Eine Plattform 1002 kann Plattformlogik 1010 mit einer oder mehreren Zentraleinheiten (CPUs) 1012, Arbeitsspeicher 1014 (die eine beliebige Anzahl von unterschiedlichen Modulen umfassen können), Chipsätze 1016, Kommunikationsschnittstellen 1018 und andere geeignete Hardware und/oder Software umfassen, um einen Hypervisor 1020 oder ein anderes Betriebssystem auszuführen, die in der Lage sind, Arbeitslasten auszuführen, die mit den auf der Plattform 1002 laufenden Anwendungen verbunden sind. In einigen Ausführungsformen kann eine Plattform 1002 als Hostplattform für ein oder mehrere Gastsysteme 1022 fungieren, welche diese Anwendungen aufrufen. Plattform 1002A kann eine beliebige geeignete Rechenumgebung repräsentieren, wie z. B. eine Hochleistungs-Rechenumgebung, ein Rechenzentrum, eine Infrastruktur eines Kommunikationsdienstanbieters (z. B. ein oder mehrere Teile eines Evolved Packet Core), eine speicherinterne Rechenumgebung, ein Computersystem eines Fahrzeugs (z. B. eines Automobils oder Flugzeugs), eine Internet-der-Dinge-Umgebung, ein industrielles Steuersystem, eine andere Rechenumgebung oder eine Kombination davon.
-
In verschiedenen Ausführungsformen der vorliegenden Offenbarung werden akkumulierte Belastung und/oder Raten von akkumulierter Belastung von einer Vielzahl von Hardware-Ressourcen (z. B. Cores und Uncores) überwacht und Einrichtungen (z. B. Systemverwaltungsplattform 1006, Hypervisor 1020 oder ein anderes Betriebssystem) der Computer-Plattform 1002A können Hardware-Ressourcen der Plattformlogik 1010 zuweisen, um Arbeitslasten im Einklang mit der Belastungsinformation durchzuführen. In einigen Ausführungsformen können Selbstdiagnosefunktionen mit der Belastungsüberwachung kombiniert werden, um den Zustand der Hardware-Ressourcen genauer zu bestimmen. Jede Plattform 1002 kann Plattformlogik 1010 enthalten. Die Plattformlogik 1010 umfasst unter anderem Logik, welche die Funktionalität der Plattform 1002 ermöglicht, eine oder mehrere CPUs 1012, Arbeitsspeicher 1014, einen oder mehrere Chipsätze 1016 und Kommunikationsschnittstellen 1028. Obwohl drei Plattformen dargestellt sind, kann die Computer-Plattform 1002A mit einer beliebigen geeigneten Anzahl von Plattformen verbunden sein. In verschiedenen Ausführungsformen kann sich eine Plattform 1002 auf einer Leiterplatte befinden, die in einem Chassis, Rack oder einer anderen geeigneten Struktur installiert ist, die mehrere Plattformen umfasst, die durch das Netzwerk 1008 (das z. B. ein Rack oder einen Backplane-Switch umfassen kann) zusammengekoppelt sind.
-
Die CPUs 1012 können jeweils eine beliebige geeignete Anzahl von Prozessorkernen und Unterstützungslogik (z. B. Uncores) umfassen. Die Kerne können miteinander, mit dem Arbeitsspeicher 1014, mit mindestens einem Chipsatz 1016 und/oder mit einer Kommunikationsschnittstelle 1018 durch einen oder mehrere Controller gekoppelt sein, die sich auf der CPU 1012 und/oder dem Chipsatz 1016 befinden. In bestimmten Ausführungsformen ist eine CPU 1012 in einem Sockel ausgebildet, der permanent oder abnehmbar mit der Plattform 1002A gekoppelt ist. Obwohl vier CPUs dargestellt sind, kann eine Plattform 1002 eine beliebige geeignete Anzahl von CPUs umfassen.
-
Der Arbeitsspeicher 1014 kann ohne Einschränkung eine beliebige Form von flüchtigem oder nicht flüchtigem Speicher, magnetische Medien (z. B. ein oder mehrere Bandlaufwerke), optische Medien, Direktzugriffsspeicher (RAM), Nurlesespeicher (ROM), Flash-Speicher, Wechselmedien oder eine beliebige andere geeignete Lokal- oder Remote-Speicherkomponente oder Komponenten umfassen. Der Arbeitsspeicher 1014 kann für kurze, mittlere und/oder langfristige Speicherung von der Plattform 1002A verwendet werden. Der Arbeitsspeicher 1014 kann beliebige geeignete Daten oder Informationen speichern, die von der Plattformlogik 1010 genutzt werden, einschließlich in einem computerlesbaren Medium integrierte Software und/oder in Hardware eingebaute oder anderweitig gespeicherte codierte Logik (z. B. Firmware). Der Arbeitsspeicher 1014 kann Daten speichern, die von Kernen der CPUs 1012 genutzt werden. In einigen Ausführungsformen kann der Arbeitsspeicher 1014 auch Speicherplatz für Befehle umfassen, die von den Kernen der CPUs 1012 oder anderen Verarbeitungselementen (z. B. auf Chipsätzen 1016 befindliche Logik) ausgeführt werden können, um mit der Manageability Engine 1026 oder anderen Komponenten der Plattformlogik 1010 verbundene Funktionalität bereitzustellen. Eine Plattform 1002 kann auch ein oder mehrere Chipsätze 1016 aufweisen, die eine beliebige geeignete Logik umfassen können, um den Betrieb der CPUs 1012 zu unterstützen. In verschiedenen Ausführungsformen kann der Chipsatz 1016 sich auf demselben Chip oder Paket wie eine CPU 1012 oder auf ein oder mehreren Chips oder Paketen befinden. Jeder Chipsatz kann eine beliebige geeignete Anzahl von CPUs 1012 unterstützen. Ein Chipsatz 1016 kann auch ein oder mehrere Controller aufweisen, um andere Komponenten der Plattformlogik 1010 (z. B. Kommunikationsschnittstelle 1018 oder Arbeitsspeicher 1014) mit ein oder mehreren CPUs zu koppeln. In der dargestellten Ausführungsform enthält jeder Chipsatz 1016 auch eine Manageability Engine 1026.
Eine Manageability Engine 1026 kann eine beliebige geeignete Logik enthalten, um den Betrieb des Chipsatzes 1016 zu unterstützen. In einer speziellen Ausführungsform ist eine Manageability Engine 1026 (die auch als Innovation Engine bezeichnet werden kann) in der Lage, Echtzeit-Telemetriedaten von dem Chipsatz 1016, der (den) CPU(s) 1012 und/oder dem von dem Chipsatz 1016 verwalteten Arbeitsspeicher 1014, anderen Komponenten der Plattformlogik 1010 und/oder verschiedenen Verbindungen zwischen Komponenten der Plattformlogik 1010 zu sammeln. In verschiedenen Ausführungsformen enthalten die gesammelten Telemetriedaten die hierin beschriebenen Belastungsinformationen.
-
In verschiedenen Ausführungsformen arbeitet eine Manageability Engine 1026 als ein asynchroner Out-of-Band-Compute-Agent, der in der Lage ist, sich mit den verschiedenen Elementen der Plattformlogik 1010 zu verbinden, um Telemetriedaten mit keiner oder minimaler Unterbrechung der auf den CPUs 1012 laufenden Prozesse zu sammeln. Zum Beispiel kann die Manageability Engine 1026 ein dediziertes Verarbeitungselement (z. B. einen Prozessor, Controller oder andere Logik) auf dem Chipsatz 1016 enthalten, das die Funktionalität der Manageability Engine 1026 bereitstellt (z. B. durch Ausführen von Softwarebefehlen), um somit Verarbeitungszyklen der CPUs 1012 für Operationen zu sparen, die mit den von der Plattformlogik 1010 durchgeführten Arbeitslasten verbunden sind. Darüber hinaus kann die dedizierte Logik für die Manageability Engine 1026 in Bezug auf die CPUs 1012 asynchron arbeiten, und kann zumindest einige der Telemetriedaten sammeln, ohne die Belastung der CPUs zu erhöhen.
-
Eine Manageability Engine 1026 kann die gesammelten Telemetriedaten verarbeiten (spezifische Beispiele der Verarbeitung von Belastungsinformationen werden hierin bereitgestellt). In verschiedenen Ausführungsformen meldet die Manageability Engine 1026 die gesammelten Daten und/oder die Ergebnisse ihrer Verarbeitung an andere Elemente in dem Computersystem, wie z. B. einem oder mehreren Hypervisoren 1020 oder anderen Betriebssystemen und/oder Systemverwaltungssoftware (die auf einer beliebigen geeigneten Logik, wie z. B. einer Systemverwaltungsplattform 1006 ausgeführt werden können). In bestimmten Ausführungsformen kann ein kritisches Ereignis, wie z. B. ein Kern, in dem sich ein übermäßiger Belastungsbetrag angesammelt hat, vor dem normalen Intervall zum Berichten von Telemetriedaten gemeldet werden (z. B. kann eine Benachrichtigung unmittelbar nach der Erkennung gesendet werden).
-
Außerdem kann die Manageability Engine 1026 programmierbaren Code enthalten, der konfigurierbar ist, um festzulegen, welche CPU(s) 1012 ein bestimmter Chipsatz 1016 verwaltet und/oder welche Telemetriedaten gesammelt werden können.
-
Die Chipsätze 1016 enthalten auch jeweils eine Kommunikationsschnittstelle 1028. Die Kommunikationsschnittstelle 1028 kann für die Übermittlung von Signalen und/oder Daten zwischen dem Chipsatz 1016 und ein oder mehreren E/A-Einrichtungen, ein oder mehreren Netzwerken 1008 und/oder ein oder mehreren mit dem Netzwerk 1008 gekoppelten Geräten (z. B. Systemverwaltungsplattform 1006) verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 1028 verwendet werden, um Netzwerkverkehr, wie z. B. Datenpakete, zu senden und zu empfangen. In einer bestimmten Ausführungsform umfasst eine Kommunikationsschnittstelle 1028 ein oder mehrere physische Netzwerk-Schnittstellencontroller (NICs), die auch als Netzwerk-Schnittstellenkarten oder Netzwerkadapter bekannt sind. Ein NIC kann elektronische Schaltungen enthalten, um unter Verwendung eines beliebigen geeigneten physischen Schicht- und Datenverbindungsschicht-Standards, wie z. B. Ethernet (z. B. gemäß Definition durch den Standard IEEE 802.3), Fiber Channel, InfiniBand, Wi-Fi oder eines anderen geeigneten Standards zu kommunizieren. Ein NIC kann ein oder mehrere physische Ports enthalten, die mit einem Kabel (z. B. einem Ethernet-Kabel) gekoppelt werden können. Ein NIC kann Kommunikation zwischen einem beliebigen geeigneten Element des Chipsatzes 1016 (z. B. Manageability Engine 1026 oder Switch 1030) und einem anderen mit dem Netzwerk 1008 gekoppelten Gerät ermöglichen. In verschiedenen Ausführungsformen kann ein NIC mit dem Chipsatz integriert sein (d. h. er kann sich auf derselben integrierten Schaltung oder Leiterplatte wie der Rest der Chipsatzlogik befinden), oder er kann sich auf einer anderen integrierten Schaltung oder Leiterplatte befinden, die elektromechanisch mit dem Chipsatz gekoppelt ist.
-
In bestimmten Ausführungsformen, können Kommunikationsschnittstellen 1028 die Übermittlung von Daten (z. B. zwischen der Manageability Engine 1026 und der Rechenzentrums-Verwaltungsplattform 1006), die mit durch die Manageability Engine 1026 durchgeführten Verwaltungs- und Überwachungsfunktionen verbunden sind, erlauben. In verschiedenen Ausführungsformen kann die Manageability Engine 1026 Elemente (z. B. ein oder mehrere NICs) der Kommunikationsschnittstellen 1028 nutzen, um die Telemetriedaten (z. B. an die Systemverwaltungsplattform 1006) zu melden, um die Nutzung von NICs der Kommunikationsschnittstelle 1018 für Operationen zu reservieren, die mit den von der Plattformlogik 1010 durchgeführten Arbeitslasten verbunden sind.
-
Switches 1030 können mit verschiedenen Ports (z. B. durch NICs bereitgestellt) der Kommunikationsschnittstelle 1028 gekoppelt werden und Daten zwischen diesen Ports und verschiedenen Komponenten des Chipsatzes 1016 (z. B. ein oder mehrere mit CPUs 1012 gekoppelte Peripheral Component Interconnect Express (PCIe)-Leitungen) umschalten. Switches 1030 können als physischer oder virtueller Switch (d. h. Software) ausgebildet sein.
-
Die Plattformlogik 1010 kann eine zusätzliche Kommunikationsschnittstelle 1018 enthalten. Ähnlich den Kommunikationsschnittstellen 1028, können die Kommunikationsschnittstellen 1018 für die Übermittlung von Signalen und/oder Daten zwischen der Plattformlogik 1010 und ein oder mehreren Netzwerken 1008 und ein oder mehreren mit dem Netzwerk 1008 gekoppelten Geräten verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 1018 verwendet werden, um Netzwerkverkehr, wie z. B. Datenpakete, zu senden und zu empfangen. In einer bestimmten Ausführungsform umfassen die Kommunikationsschnittstellen 1018 ein oder mehrere physische NICs. Diese NICs können Kommunikation zwischen einem beliebigen geeigneten Element der Plattformlogik 1010 (z. B. CPUs 1012 oder Arbeitsspeicher 1014) und einem anderen mit dem Netzwerk 1008 gekoppelten Gerät ermöglichen (z. B. Elemente von anderen Plattformen oder Remote-Computergeräten, die durch ein oder mehrere Netzwerke mit dem Netzwerk 1008 gekoppelt sind).
-
Die Plattformlogik 1010 kann beliebige geeignete Arten von Arbeitslasten empfangen und durchführen. Eine Arbeitslast kann eine beliebige Anfrage zur Nutzung ein oder mehrerer Ressourcen der Plattformlogik 1010, wie z. B. ein oder mehrere Kerne oder verbundene Logik, enthalten. Zum Beispiel kann eine Arbeitslast eine Anfrage zum Instanziieren einer Softwarekomponente, wie z. B. eines E/A-Gerätetreibers 1024 oder Gastsystems 1022; eine Anfrage zum Verarbeiten eines Netzwerkpakets, das von einer virtuellen Maschine 1032 oder einem von der Plattform 1002A externen Gerät (wie z. B. einem mit dem Netzwerk 1008 gekoppelten Netzwerkknoten) empfangen wird; eine Anfrage zum Ausführen eines mit einem Gastsystem 1022 verbundenen Prozesses oder Threads, eine auf der Plattform 1002A laufende Anwendung, einen Hypervisor 1020 oder ein anderes auf der Plattform 1002A laufendes Betriebssystem; oder eine andere geeignete Verarbeitungsanfrage umfassen.
-
Eine virtuelle Maschine 1032 kann ein Computersystem mit seiner eigenen dedizierten Hardware emulieren. Eine virtuelle Maschine 1032 kann ein Gastbetriebssystem auf dem Hypervisor 1020 ausführen. Die Komponenten der Plattformlogik 1010 (z. B. CPUs 1012, Arbeitsspeicher 1014, Chipsatz 1016 und Kommunikationsschnittstelle 1018) können virtualisiert werden, so dass es für das Gastbetriebssystem den Anschein hat, dass die virtuelle Maschine 1032 ihre eigenen dedizierten Komponenten aufweist.
-
Eine virtuelle Maschine 1032 kann einen virtualisierten NIC (vNIC) enthalten, der von der virtuellen Maschine als ihre Netzwerk-Schnittstelle verwendet wird. Ein vNIC kann einer Media Access Control (MAC)-Adresse oder einem anderen Identifikator zugewiesen werden, um somit zu ermöglichen, dass mehrere virtuelle Maschinen 1032 in einem Netzwerk individuell adressierbar sind.
-
VNF 1034 kann eine Software-Implementierung eines Funktionsbausteins mit definierten Schnittstellen und einem Verhalten umfassen, die in einer virtualisierten Infrastruktur eingesetzt werden können. In bestimmten Ausführungsformen kann eine VNF 1034 ein oder mehrere virtuelle Maschinen 1032 umfassen, die kollektiv spezifische Funktionalitäten bereitstellen (z. B. Wide Area Network (WAN)-Optimierung, Virtual Private Network (VPN)-Terminierung, Firewall-Operationen, Lastausgleichsoperationen, Sicherheitsfunktionen usw.). Eine auf der Plattformlogik 1010 laufende VNF 1034 kann die gleiche Funktionalität wie traditionelle Netzwerkkomponenten bereitstellen, die durch dedizierte Hardware implementiert werden. Zum Beispiel kann eine VNF 1034 Komponenten enthalten, um beliebige geeignete NFV-Arbeitslasten durchzuführen, wie etwa virtualisierte Evolved Packet Core (vEPC)-Komponenten, Mobilitätsverwaltungseinheiten, 3rd Generation Partnership Project (3GPP)-Steuerung und Datenebenenkomponenten usw.
-
SFC 1036 ist eine Gruppe von VNFs 1034, die als Kette organisiert sind, um eine Reihe von Operationen, wie etwa Netzwerkpaket-Verarbeitungsoperationen, durchzuführen. Dienstfunktionsverkettung kann die Fähigkeit bieten, eine geordnete Liste von Netzwerkdiensten (z. B. Firewalls, Lastausgleicher), die in dem Netzwerk zusammengeheftet sind, zu definieren, um eine Dienstkette zu erzeugen.
-
Ein Hypervisor 1020 (auch als Virtual-Machine-Monitor bekannt) kann Logik umfassen, um Gastsysteme 1022 zu erzeugen und auszuführen. Der Hypervisor 1020 kann von virtuellen Maschinen ausgeführte Gastbetriebssysteme mit einer virtuellen Betriebsplattform versehen (d. h. es erscheint für die virtuellen Maschinen, dass sie auf getrennten physischen Knoten laufen, wenn sie tatsächlich auf einer einzigen Hardware-Plattform konsolidiert sind) und die Ausführung der Gastbetriebssysteme durch Plattformlogik 1010 verwalten. Dienste des Hypervisors 1020 können durch Virtualisieren in Software oder durch hardwareunterstützte Ressourcen oder beides bereitgestellt werden, die minimalen Software-Eingriff erfordern. Mehrfache Instanzen einer Vielzahl von Gastbetriebssystemen können durch den Hypervisor 1020 verwaltet werden. Jede Plattform 1002 kann eine getrennte Instanziierung eines Hypervisors 1020 haben.
-
Der Hypervisor 1020 kann ein nativer oder softwareunabhängiger Hypervisor sein, der direkt auf der Plattformlogik 1010 läuft, um die Plattformlogik zu steuern und die Gastbetriebssysteme zu verwalten. Alternativ dazu kann der Hypervisor 1020 ein gehosteter Hypervisor sein, der auf einem Hostbetriebssystem läuft und die Gastbetriebssysteme von dem Hostbetriebssystem abstrahiert. Der Hypervisor 1020 kann einen virtuellen Switch 1038 enthalten, der den virtuellen Maschinen von Gastsystemen 1022 virtuelle Schalt- und/oder Routingfunktionen bereitstellen kann. Der virtuelle Switch 1038 kann eine logische Schaltstruktur aufweisen, welche die vNICs der virtuellen Maschinen 1032 miteinander koppelt, um somit ein virtuelles Netzwerk zu erzeugen, durch das die virtuellen Maschinen miteinander kommunizieren können.
-
Der virtuelle Switch 1038 kann ein Softwareelement enthalten, das unter Verwendung von Komponenten der Plattformlogik 1010 ausgeführt wird. In verschiedenen Ausführungsformen kann der Hypervisor 1020 mit einer beliebigen Entität (z. B. einem SDN-Controller) in Kommunikation stehen, was den Hypervisor 1020 veranlassen kann, die Parameter des virtuellen Switches 1038 als Reaktion auf sich ändernde Bedingungen in der Plattform 1002 (z. B. die Hinzufügung oder Löschung von virtuellen Maschinen 1032 oder die Identifizierung von Optimierungen, die vorgenommen werden können, um die Leistung der Plattform zu erhöhen) neu zu konfigurieren.
-
Der Hypervisor 1020 kann auch Ressourcenzuordnungslogik 1044 enthalten, die Logik zum Bestimmen der Zuordnung von Plattformressourcen auf der Basis der Telemetriedaten (die Belastungsinformationen enthalten können) enthalten kann. Die Ressourcenzuordnungslogik 1044 kann auch Logik zum Kommunizieren mit verschiedenen Komponenten der Plattformlogik 1010 Entitäten der Plattform 1002A enthalten, um eine solche Optimierung zu implementieren, wie etwa Komponenten der Plattformlogik 1010.
-
Eine beliebige geeignete Logik kann eine oder mehrere dieser Optimierungsentscheidungen treffen. Zum Beispiel Systemverwaltungsplattform 1006; Ressourcenzuordnungslogik 1044 des Hypervisors 1020 oder eines anderen Betriebssystems; oder andere Logik der Computer-Plattform 1002A können fähig sein, solche Entscheidungen zu treffen. In verschiedenen Ausführungsformen kann die Systemverwaltungsplattform 1006 Telemetriedaten von mehreren Plattformen 1002 empfangen und Arbeitslastplatzierung über mehrere Plattformen verwalten. Die Systemverwaltungsplattform 1006 kann mit Hypervisors 1020 (z. B. in einer Out-of-Band-Weise) oder anderen Betriebssystemen der verschiedenen Plattformen 1002 kommunizieren, um von der Systemverwaltungsplattform geleitete Arbeitslastplatzierungen zu implementieren.
-
Die Elemente der Plattformlogik 1010 können in einer beliebigen geeigneten Weise zusammengekoppelt werden. Zum Beispiel kann ein Bus beliebige dieser Komponenten zusammenkoppeln. Ein Bus kann einen beliebigen bekannten Interconnect enthalten, wie z. B. einen Mehrstationenbus, einen Mesh-Interconnect, einen Ring-Interconnect, einen Pointto-Point-Interconnect, einen seriellen Interconnect, einen parallelen Bus, einen kohärenten Bus (z. B. cache-kohärent), eine geschichtete Protokollarchitektur, einen Differentialbus oder einen Gunning Transceiver Logic (GTL)-Bus.
-
Elemente der Computer-Plattform 1002A können in einer beliebigen geeigneten Weise zusammengekoppelt sein, z. B. durch ein oder mehrere Netzwerke 1008. Ein Netzwerk 1008 kann ein beliebiges geeignetes Netzwerk oder eine Kombination von einem oder mehreren Netzwerken sein, die unter Verwendung von ein oder mehreren geeigneten Netzwerkprotokollen arbeiten. Ein Netzwerk kann eine Reihe von Knoten, Punkten und verbundenen Kommunikationspfaden zum Empfangen und Senden von Informationspaketen repräsentieren, die durch ein Kommunikationssystem übertragen werden. Zum Beispiel kann ein Netzwerk ein oder mehrere Firewalls, Router, Switches, Sicherheitsanwendungen, Antivirus-Server oder andere nützliche Netzwerkgeräte aufweisen.
-
11 ist ein Blockdiagramm einer Zentraleinheit (CPU) 1112 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Obwohl die Figur der CPU 1112 eine bestimmte Konfiguration darstellt, können die Kerne und andere Komponenten der CPU 1112 in einer beliebigen geeigneten Weise angeordnet sein. Die CPU 1112 kann einen beliebigen Prozessor oder eine Verarbeitungsvorrichtung, wie z. B. einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code umfassen. Die CPU 1112 in der dargestellten Ausführungsform enthält vier Verarbeitungselemente (Kerne 1130 in der dargestellten Ausführungsform), die asymmetrische Verarbeitungselemente oder symmetrische Verarbeitungselemente enthalten können. Die CPU 1112 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
-
Beispiele von Hardware-Verarbeitungselementen enthalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das in der Lage ist, einen Zustand für einen Prozessor, wie z. B. einen Ausführungszustand oder architektonischen Zustand, zu halten. Mit anderen Worten, in einer Ausführungsform bezieht sich ein Verarbeitungselement auf eine beliebige Hardware, die in der Lage ist, unabhängig mit Code in Verbindung zu sein, wie z. B. ein Software-Thread, ein Betriebssystem, eine Anwendung oder sonstiger Code. Ein physischer Prozessor (bzw. ein Prozessorsockel) bezieht sich in der Regel auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl von anderen Verarbeitungselementen, wie z. B. Kerne oder Hardware-Threads, enthält.
-
Ein Kern kann sich auf Logik beziehen, die auf einer integrierten Schaltung angeordnet ist, die in der Lage ist, einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene architektonische Zustand mit mindestens einigen dedizierten Ausführungsressourcen verbunden ist. Ein Hardware-Thread kann sich auf eine beliebige Logik beziehen, die auf einer integrierten Schaltung angeordnet ist, die in der Lage ist, einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen architektonischen Zustände Zugang zu Ausführungsressourcen teilen. Eine physische CPU kann eine beliebige geeignete Anzahl von Kernen enthalten. In verschiedenen Ausführungsformen können Kerne ein oder mehrere ungeordnete Prozessorkerne oder ein oder mehrere geordnete Prozessorkerne enthalten. Die Kerne können jedoch individuell von einem beliebigen Kerntyp, wie z. B. einem nativen Kern, einem Software-verwalteten Kern, einem Kern, der ausgelegt ist, um eine native Befehlssatzarchitektur (ISA) auszuführen, einem Kern, der ausgelegt ist, um eine übersetzte ISA auszuführen, einem codesignten Kern oder einem sonstigen bekannten Kern, ausgewählt werden. In einer heterogenen Kernumgebung (d. h. asymmetrische Kerne) kann eine Form von Übersetzung, wie z. B. eine binäre Übersetzung, genutzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen.
-
In der dargestellten Ausführungsform enthält der Kern 1130A einen ungeordneten Prozessor, der eine Front-End-Einheit 1170 enthält, die dazu verwendet wird, eingehende Befehle abzurufen, verschiedene Verarbeitungen (z. B. Caching, Decodierung, Sprungvorhersage usw.) durchzuführen und Befehle/Operationen zu einer ungeordneten (OOO) Engine weiterzuleiten. Die OOO-Engine führt weitere Verarbeitung an decodierten Befehlen durch.
-
Ein Front-End 1170 kann ein Decodiermodul enthalten, das gekoppelt ist, um Logik abzurufen, um abgerufene Elemente zu decodieren. In einer Ausführungsform enthält die Abruflogik individuelle Sequenzer, die jeweils mit Thread-Slots der Kerne 1130 verbunden sind. Normalerweise ist der Kern 1130 mit einer ersten ISA verbunden, die auf dem Kern 1130 ausführbare Befehle definiert/spezifiziert. Oft enthalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Teil des Befehls (als Opcode bezeichnet), der einen auszuführenden Befehl oder eine Operation referenziert/spezifiziert. Das Decodiermodul kann eine Schaltung enthalten, die diese Befehle anhand ihrer Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weiterleitet, wie durch die erste ISA definiert. In einer Ausführungsform erkennen die Decodierer der Kerne 1130 dieselbe ISA (oder einen Teilsatz davon). Alternativ dazu kann in einer heterogenen Kernumgebung ein Decodierer von ein oder mehreren Kernen (z. B. Kern 1130B) eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine unterschiedliche ISA) erkennen.
-
In der dargestellten Ausführungsform enthält die ungeordnete Engine eine Zuordnungseinheit 1182, um decodierte Befehle, die in der Form von ein oder mehreren Mikrobefehlen oder µops vorliegen können, von der Front-End-Einheit 1170 zu empfangen und den entsprechenden Ressourcen, wie z. B. Registern usw., zuzuordnen. Als Nächstes werden die Befehle einer Reservierungsstation 1184 bereitgestellt, die Ressourcen reserviert und für Ausführung auf einer von einer Vielzahl von Ausführungseinheiten 1186A-1186N plant. Verschiedene Arten von Ausführungseinheiten können vorhanden sein, darunter zum Beispiel arithmetisch-logische Einheiten (ALUs), Lade- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs), Gleitkomma-Ausführungseinheiten usw. Die Ergebnisse von diesen unterschiedlichen Ausführungseinheiten werden einem Neuordnungspuffer (ROB) 1188 bereitgestellt, der ungeordnete Ergebnisse nimmt und sie in der korrekten Programmordnung zurückgibt.
-
In der dargestellten Ausführungsform ist sowohl die Front-End-Einheit 1170 als auch die ungeordnete Engine 1180 mit unterschiedlichen Stufen einer Speicherhierarchie gekoppelt. Insbesondere ist ein Befehlsebenencache 1172 dargestellt, der wiederum mit einem Mid-Level-Cache 1176 gekoppelt ist, der wiederum mit einem Last-Level-Cache 1195 gekoppelt ist. In einer Ausführungsform ist der Last-Level-Cache 1195 in einer chipinternen Einheit 1190 (manchmal auch Uncore genannt) implementiert.
Der Uncore 1190 kann mit dem Systemspeicher 1199 kommunizieren, der in der dargestellten Ausführungsform über eingebettetes DRAM (eDRAM) implementiert ist. Die verschiedenen Ausführungseinheiten 1186 innerhalb einer OOO-Engine 1180 stehen mit einem First-Level-Cache 1174 in Kommunikation, der auch mit dem Mid-Level-Cache 1176 in Kommunikation steht. Zusätzliche Kerne 1130B - 1130D können ebenfalls mit dem Last-Level-Cache 1195 gekoppelt sein.
-
In bestimmten Ausführungsformen kann sich der Uncore 1190 in einem Spannungsbereich und/oder einem Frequenzbereich befinden, der von den Spannungsbereichen und/oder Frequenzbereichen der Kerne getrennt ist. Das heißt, der Uncore 1190 kann von einer Versorgungsspannung gespeist werden, die sich von den Versorgungsspannungen für die Speisung der Kerne unterscheidet, und/oder kann bei einer Frequenz arbeiten, die sich von den Betriebsfrequenzen der Kerne unterscheidet.
-
Die CPU 1112 kann auch eine Leistungssteuereinheit (PCU) 1140 enthalten. In verschiedenen Ausführungsformen kann die PCU 1140 die Versorgungsspannungen und die Betriebsfrequenzen steuern, die an jeden der Kerne (auf einer Kern-Basis) und an den Uncore angelegt werden. Die PCU 1140 kann einen Kern oder Uncore auch anweisen, einen Ruhezustand anzunehmen (in dem weder Spannung noch Takt zugeführt werden), wenn keine Arbeitslast durchgeführt wird.
-
In verschiedenen Ausführungsformen kann die PCU 1140 ein oder mehrere Belastungseigenschaften einer Hardware-Ressource, wie z. B. der Kerne und des Uncores, erkennen. Eine Belastungseigenschaft kann eine Anzeige eines Belastungsbetrags umfassen, der auf die Hardware-Ressource ausgeübt wird. Eine Belastungseigenschaft kann zum Beispiel Folgendes sein: eine an die Hardware-Ressource angelegte Spannung oder Frequenz; ein Leistungspegel, ein an der Hardware-Ressource erfasster Strompegel oder Spannungspegel; eine an der Hardware-Ressource erfasste Temperatur; oder eine andere geeignete Messung. In verschiedenen Ausführungsformen können mehrere Messungen (z. B. an unterschiedlichen Stellen) einer bestimmten Belastungseigenschaft durchgeführt werden, wenn die Belastungseigenschaft zu einem bestimmten Zeitpunkt erfasst wird. In verschiedenen Ausführungsformen kann die PCU 1140 Belastungseigenschaften in einem beliebigen geeigneten Intervall erkennen.
-
In verschiedenen Ausführungsformen ist die PCU 1140 eine von den Kernen 1130 getrennte Komponente. In bestimmten Ausführungsformen läuft die PCU 1140 mit einer Taktfrequenz, die zu den von den Kernen 1130 verwendeten Taktfrequenzen unterschiedlich ist. In einigen Ausführungsformen, bei denen die PCU ein Mikrocontroller ist, führt die PCU 1140 Befehle gemäß einer ISA aus, die zu einer von den Kernen 1130 verwendeten ISA unterschiedlich ist.
-
In verschiedenen Ausführungsformen kann die CPU 1112 auch einen nicht flüchtigen Speicher 1150 enthalten, um Belastungsinformationen (wie z. B. Belastungseigenschaften, inkrementale Belastungswerte, akkumulierte Belastungswerte, Belastungsakkumulationsraten oder andere Belastungsinformationen), die mit den Kernen 1130 oder dem Uncore 1190 verbunden sind, zu speichern, so dass die Belastungsinformationen bei Stromausfall erhalten bleiben.
-
Das Vorgenannte umreißt Merkmale der ein oder mehreren Ausführungsformen des hierin offenbarten Gegenstands. Diese Ausführungsformen werden bereitgestellt, um es einer Person, die über normale Kenntnisse des Fachgebiets (PHOSITA) verfügt, zu ermöglichen, die verschiedenen Aspekte der vorliegenden Offenbarung besser zu verstehen. Bestimmte wohlbekannte Begriffe sowie zugrunde liegende Technologien und/oder Standards können genannt werden, ohne ausführlich beschrieben zu werden. Es wird erwartet, dass die PHOSITA Hintergrundwissen oder Informationen von diesen Technologien und Standards besitzt oder darauf zugreifen kann, die ausreichend sind, um die Lehren der vorliegenden Spezifikation zu praktizieren.
-
Die PHOSITA wird verstehen, dass sie die vorliegende Offenbarung jederzeit als Basis zum Entwerfen oder Modifizieren anderer Prozesse, Strukturen oder Variationen benutzen kann, um die gleichen Zwecke auszuführen und/oder die gleichen Vorteile der hierin vorgestellten Ausführungsformen zu erzielen. Die PHOSITA wird auch erkennen, dass solche gleichwertigen Konstruktionen nicht von dem Sinn und Umfang der vorliegenden Offenbarung abweichen, und dass sie verschiedene Änderungen, Ersetzungen oder Veränderungen daran vornehmen kann, ohne von dem Sinn und Umfang der vorliegenden Offenbarung abzuweichen.
-
In der vorstehenden Beschreibung werden bestimmte Aspekte von einigen oder allen Ausführungsformen ausführlicher beschrieben, als das zum Praktizieren der angehängten Ansprüche unbedingt notwendig ist. Diese Details werden zum Zweck der Bereitstellung von Kontext und Veranschaulichung der offenbarten Ausführungsformen nur durch nicht einschränkendes Beispiel bereitgestellt. Solche Details sollten nicht als erforderlich verstanden werden, und sollten nicht als Einschränkungen in die Ansprüche „eingelesen“ werden. Der Ausdruck kann auf „eine Ausführungsform“ oder „Ausführungsformen“ hinweisen.
Diese Ausdrücke und jegliche anderen Verweise auf Ausführungsformen sind umfassend auszulegen, um auf eine beliebige Kombination von ein oder mehreren Ausführungsformen zu verweisen. Darüber hinaus könnten die mehreren Merkmale, die in einer bestimmten „Ausführungsform“ offenbart werden, genauso gut auch über mehrere Ausführungsformen verteilt sein. Wenn zum Beispiel die Merkmale 1 und 2 in „einer Ausführungsform“ offenbart werden, kann Ausführungsform A das Merkmal 1 haben, aber nicht das Merkmal 2, während Ausführungsform B das Merkmal 2 haben kann, aber nicht das Merkmal 1.
-
Diese Spezifikation kann Abbildungen in einem Blockdiagrammformat bereitstellen, wobei bestimmte Merkmale in getrennten Blöcken offenbart werden. Diese sind umfassend auszulegen, um zu offenbaren, wie verschiedene Merkmale interagieren, aber es ist nicht beabsichtigt zu implizieren, dass diese Merkmale notwendigerweise in getrennter Hardware oder Software enthalten sind.
Wenn darüber hinaus ein einzelner Block mehr als ein Merkmal in demselben Block offenbart, müssen diese Merkmale nicht unbedingt in derselben Hardware und/oder Software enthalten sein. Zum Beispiel könnte der „Speicher“ eines Computers unter gewissen Umständen zwischen mehreren Ebenen von Cache- oder Lokalspeicher, Hauptspeicher, batteriegepuffertem flüchtigem Speicher und verschiedenen Formen von Dauerspeicher, wie z. B. Festplatte, Speicherserver, optische Disk, Bandlaufwerk oder ähnlichen Speichern verteilt sein. In bestimmten Ausführungsformen können einige der Komponenten ausgelassen oder zusammengefasst werden. Generell können die in den Figuren dargestellten Anordnungen in ihren Repräsentationen logischer sein, wohingegen eine physische Architektur verschiedene Permutationen, Kombinationen und/oder Hybride dieser Elemente enthalten kann. Unzählige mögliche Konstruktionskonfigurationen können verwendet werden, um die hierin umrissenen operativen Ziele zu erreichen.
Dementsprechend hat die zugehörige Infrastruktur eine Fülle von Ersatzanordnungen, Entwurfsoptionen, Gerätemöglichkeiten, Hardwarekonfigurationen, Software-Implementierungen und Ausstattungsoptionen.
-
Es können hierin Verweise auf ein computerlesbares Medium gemacht werden, das ein materielles und nicht flüchtiges computerlesbares Medium sein kann. Wie in dieser Spezifikation und in den ganzen Ansprüchen verwendet, ist ein „computerlesbares Medium“ so zu verstehen, dass es ein oder mehrere computerlesbare Medien desselben oder eines anderen Typs enthält. Ein computerlesbares Medium kann in Form eines nicht einschränkenden Beispiels ein optisches Laufwerk (z. B. CD/DVD/Blu-Ray), ein Festplattenlaufwerk, ein Festkörperlaufwerk, einen Flash-Speicher oder ein anderes nicht flüchtiges Medium einschließen. Ein computerlesbares Medium könnte auch eines der folgenden Elemente einschließen: einen Nurlesespeicher (ROM), eine FPGA oder ASIC, die dazu ausgelegt ist, die gewünschten Befehle auszuführen, gespeicherte Befehle zum Programmieren einer FPGA oder ASIC, um die gewünschten Befehle auszuführen, einen Intellectual Property (IP)-Block, der in Hardware in andere Schaltungen integriert werden kann, oder Befehle, die direkt in Hardware oder Mikrocode auf einem Prozessor codiert sind, wie z. B. einem Mikroprozessor, Digitalsignalprozessor (DSP), Mikrocontroller, oder in einer beliebigen anderen geeigneten Komponente, einem Gerät, einem Element oder einem Objekt, wo dies angemessen und auf bestimmten Bedürfnissen basiert ist. Ein nicht flüchtiges Speichermedium ist hierin ausdrücklich vorgesehen, eine beliebige nicht flüchtige, für spezielle Zwecke ausgelegte oder programmierbare Hardware einzuschließen, die dazu ausgelegt ist, die offenbarten Operationen bereitzustellen, oder einen Prozessor zu veranlassen, die offenbarten Operationen durchzuführen.
-
In dieser ganzen Spezifikation und in den Ansprüchen können verschiedene Elemente „kommunikativ“, „elektrisch“, „mechanisch“ oder anderweitig miteinander „gekoppelt“ sein. Eine solche Kopplung kann eine direkte Punkt-zu-Punkt-Kopplung sein oder zwischengeschaltete Geräte enthalten. Zum Beispiel können zwei Geräte über einen Controller, der die Kommunikation erleichtert, kommunikativ miteinander gekoppelt sein. Geräte können über zwischengeschaltete Geräte, wie z. B. Signalverstärker, Spannungsteiler oder Puffer, elektrisch miteinander gekoppelt sein. Mechanisch gekoppelte Geräte können indirekt mechanisch gekoppelt sein.
-
Ein hierin offenbartes „Modul“ oder eine „Engine“ kann auf eine Software, einen Softwarestapel, eine Kombination von Hardware, Firmware und/oder Software, eine Schaltung, die dazu ausgelegt ist, die Funktion der Engine oder des Moduls auszuführen, oder ein beliebiges computerlesbares Medium, wie oben offenbart, verweisen oder diese einschließen. Solche Module oder Engines können unter geeigneten Umständen auf oder in Verbindung mit einer Hardware-Plattform bereitgestellt werden, die Hardware-Rechenressourcen, wie z. B. einen Prozessor, einen Arbeitsspeicher, einen Massenspeicher, Verbindungen, Netzwerke und Netzwerk-Schnittstellen, Beschleuniger oder andere geeignete Hardware einschließen können. Eine solche Hardware-Plattform kann als einzelne monolithische Vorrichtung (z. B. in einem PC-Formfaktor), oder mit einigen oder einem Teil der verteilten Funktionen (z. B. einem „Verbundknoten“ in einem High-End-Rechenzentrum, wo Rechen-, Arbeitsspeicher-, Speicher- und andere Ressourcen dynamisch zugeordnet werden können und nicht zueinander lokal sein müssen) bereitgestellt werden.
-
Es können hierin Flussdiagramme, ein Signalflussdiagramm oder andere Abbildungen offenbart sein, die in einer bestimmten Reihenfolge durchgeführte Operationen zeigen. Wenn nicht anderweitig ausdrücklich vermerkt oder in einem bestimmten Kontext nicht unbedingt erforderlich, ist die Reihenfolge nur als ein nicht einschränkendes Beispiel zu verstehen. Darüber hinaus können in Fällen, in denen eine Operation als einer anderen folgend dargestellt ist, auch andere Zwischenoperationen auftreten, die verbunden oder unverbunden sein können. Einige Operationen können auch gleichzeitig oder parallel durchgeführt werden. In Fällen, in denen eine Operation als „basierend auf“ oder „entsprechend“ einem anderen Posten oder einer Operation angegeben ist, sollte dies als implizierend verstanden werden, dass die Operation zumindest teilweise auf dem anderen Posten oder der Operation basiert oder zumindest teilweise dem anderen Posten oder der Operation entspricht. Dies sollte nicht als implizierend aufgefasst werden, dass die Operation allein oder ausschließlich auf dem Posten oder der Operation basiert oder allein oder ausschließlich dem Posten oder der Operation entspricht.
-
Jegliches hierin offenbarte Hardware-Element kann leicht ganz oder teilweise in einem System-on-a-Chip (SoC), das eine Zentraleinheit-(CPU)-Baugruppe einschließt, bereitgestellt werden. Ein SoC repräsentiert eine integrierte Schaltung (IC), die Komponenten eines Computers oder eines anderen elektronischen Systems auf einem einzelnen Chip integriert. Daher können zum Beispiel Client-Geräte oder Servereinrichtungen ganz oder teilweise in einem SoC bereitgestellt werden. Das SoC kann digitale, analoge, Mischsignal- und Hochfrequenzfunktionen enthalten, die alle auf einem einzelnen Chipsubstrat bereitgestellt werden können. Andere Ausführungsformen können ein Multichip-Modul (MCM) enthalten, bei dem eine Vielzahl von Chips in einer einzelnen Elektronik-Baugruppe angeordnet und dazu ausgelegt sind, durch die Elektronik-Baugruppe eng miteinander zu interagieren.
-
Generell kann jeder passend konfigurierte Schaltkreis oder Prozessor jede Art von Befehlen ausführen, die mit den Daten verbunden sind, um die hierin aufgeführten Operationen zu erzielen. Jeder hierin offenbarte Prozessor könnte ein Element oder einen Artikel (zum Beispiel Daten) von einem Zustand oder Ding zu einem anderen Zustand oder Ding transformieren.
Darüber hinaus könnten die in einem Prozessor verfolgten, gesendeten, empfangenen oder gespeicherten Informationen in einer (einem) beliebigen Datenbank, Register, Tabelle, Cache, Warteschlange, Steuerliste oder Speicherstruktur auf der Basis von bestimmten Bedürfnissen und Implementierungen bereitgestellt werden, von denen alle in einem beliebigen geeigneten Zeitrahmen referenziert werden könnten. Jedes der hierin offenbarten Speicher- oder Ablageelemente sollte gegebenenfalls als innerhalb der breiten Begriffe „Speicher“ und „Speicherung“ eingeschlossen ausgelegt werden.
-
Computerprogrammlogik, welche die hierin beschriebene Funktionalität ganz oder teilweise implementiert, ist in verschiedenen Formen ausgebildet, darunter, aber keineswegs eingeschränkt auf, eine Quellcodeform, eine computerausführbare Form, Maschinenbefehle oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (zum Beispiel durch einen Assembler, Compiler, Linker oder Locator erzeugte Form). In einem Beispiel enthält Quellcode eine Reihe von Computerprogrammbefehlen, die in verschiedenen Programmiersprachen implementiert sind, wie z. B. einen Objektcode, eine Assemblersprache, oder eine Hochsprache, wie etwa OpenCL, FORTRAN, C, C++, JAVA oder HTML, für Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen, wie etwa Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer computerausführbaren Form (z. B. über einen Interpreter) vorliegen, oder der Quellcode kann (z. B. über einen Translator, Assembler oder Compiler) in eine computerausführbare Form oder in eine Zwischenform, wie z. B. Bytecode, konvertiert sein. Gegebenenfalls kann irgendeines der Vorgenannten verwendet werden, um geeignete diskrete oder integrierte Schaltungen aufzubauen, ob sequentiell, kombinatorisch, Zustandsmaschinen oder anderweitig.
-
In einer beispielhaften Ausführungsform kann eine beliebige Anzahl von elektrischen Schaltungen der FIGUREN auf einer Platine einer verbundenen elektronischen Vorrichtung implementiert werden. Die Platine kann eine allgemeine Leiterplatte sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung aufnehmen und ferner Verbinder für andere Peripheriegeräte bereitstellen kann. Jeder geeignete Prozessor und Speicher kann auf der Basis von bestimmten Konfigurationsbedürfnissen, Verarbeitungsforderungen und Rechendesigns passend mit der Platine gekoppelt werden. Beachten Sie, dass mit den hierin bereitgestellten zahlreichen Beispielen die Interaktion in Form von zwei, drei, vier oder mehr elektrischen Komponenten beschrieben werden kann. Dies ist jedoch lediglich zum Zweck der Klarheit und Beispielgebung durchgeführt worden. Es ist darauf hinzuweisen, dass das System in jeder geeigneten Weise konsolidiert oder rekonfiguriert werden kann. Zusammen mit ähnlichen Designalternativen können beliebige der dargestellten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, von denen alle innerhalb des breiten Umfangs dieser Spezifikation liegen.
-
Zahlreiche andere Änderungen, Ersetzungen, Variationen, Veränderungen und Modifikationen können von einer fachkundigen Person festgestellt werden, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solche Änderungen, Ersetzungen, Variationen, Veränderungen und Modifikationen als in den Umfang der angehängten Ansprüche fallend einschließt. Um das United States Patent and Trademark Office (USPTO) und, zusätzlich, jeden Leser irgendeines Patents, das auf diese Anmeldung hin ausgestellt wird, beim Interpretieren der hieran angehängten Ansprüche zu unterstützen, möchte der Antragsteller anmerken, dass der Antragsteller: (a) nicht die Absicht hat, dass irgendeiner der angehängten Ansprüche den Absatz sechs (6) der 35 U.S.C.-Sektion 112 (pre-ALA) oder Absatz (f) derselben Sektion (post-AIA) aufzurufen, wie er am Tag der Anmeldung hiervon existiert, es sei denn, die Ausdrücke „Mittel für“ oder „Schritte für“ werden speziell in den bestimmten Ansprüchen verwendet; und (b) nicht die Absicht hat, diese Offenbarung durch irgendeine Erklärung in der Spezifikation in irgendeiner Weise einzuschränken, die nicht anderweitig ausdrücklich in den angehängten Ansprüchen reflektiert ist.
-
Beispielhafte Implementierungen
-
Die folgenden Beispiele werden durch Abbildung bereitgestellt.
-
Beispiel 1 enthält eine Rechenvorrichtung, die Folgendes umfasst: eine Hardware-Plattform; eine Netzwerk-Schnittstelle, um kommunikativ eine Verbindung mit einem Bus herzustellen, dem es an nativer Unterstützung für Authentifizierung mangelt; und eine Anomalieerkennungs-Engine, die auf der Hardware-Plattform arbeitet und für Folgendes ausgelegt ist: Empfangen eines ersten Datenstroms über eine erste Zeit, wobei der erste Datenstrom Daten über eine Vielzahl von Dimensionen umfasst, wobei Daten der Vielzahl von Dimensionen miteinander korreliert sind; Symbolisieren und Approximieren des ersten Datenstroms, was Berechnen einer ersten Fenstersumme umfasst; Empfangen eines zweiten Datenstroms über eine zweite Zeit, die in Länge im Wesentlichen der ersten Zeit gleich ist, wobei der zweite Datenstrom Daten über die Vielzahl von Dimensionen von dem ersten Datenstrom umfasst; Symbolisieren und Approximieren des zweiten Datenstroms, was Berechnen einer zweiten Fenstersumme umfasst; Berechnen einer Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme; Ermitteln, dass die Differenz einen Schwellenwert überschreitet, und dass die Korrelation über die Vielzahl von Dimensionen unterbrochen ist; und Markieren einer potenziellen Anomalie.
-
Beispiel 2 enthält die Rechenvorrichtung von Beispiel 1, wobei Symbolisieren und Approximieren Folgendes umfassen: Unterteilen des Datenstroms in Rahmen; Symbolisieren zumindest eines Teils jedes Rahmens, wobei das Symbolisieren das Unterteilen eines Datenraums von potenziellen Werten für Dateneinheiten des Rahmens in eine Vielzahl von n Eimersymbolen und das Zuweisen eines Symbols zu jeder Dateneinheit entsprechend ihrem Eimer umfasst; und Berechnen einer ersten Summe über die Zeit, wobei das Berechnen der Fenstersumme das Unterteilen des Datenstroms in eine Vielzahl von Sequenzen von Längensymbolen Ls umfasst, wobei jede Sequenz mit der vorhergehenden Sequenz um Lo Symbole überlappt, und Zusammenzählen der Anzahl von Vorkommen jeder Sequenz.
-
Beispiel 3 enthält die Rechenvorrichtung von Beispiel 2, wobei das Zusammenzählen der Anzahl von Vorkommen jeder Sequenz das Aufzeichnen der Zählung in einem n × n × LS Array umfasst, wobei jede Zelle in dem Array einen möglichen Wert für eine Symbolsequenz repräsentiert.
-
Beispiel 4 enthält die Rechenvorrichtung von Beispiel 3, wobei das Berechnen der Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme das Berechnen eines Absolutwertes der zellenweisen Differenz zwischen jeder Zelle in dem Array und das Summieren der Absolutwerte der zellenweisen Differenzen umfasst.
-
Beispiel 5 enthält die Rechenvorrichtung von Beispiel 1, wobei die Dateneinheit ein 8-Bit-Byte ist, und wobei der Teil jedes Rahmens ein festes Byte jedes Rahmens ist.
-
Beispiel 6 enthält die Rechenvorrichtung von Beispiel 5, wobei das feste Byte das erste Byte ist.
-
Beispiel 7 enthält die Rechenvorrichtung von Beispiel 1, wobei n = 8 ist.
-
Beispiel 8 enthält die Rechenvorrichtung von Beispiel 1, wobei n = 4 ist.
-
Beispiel 9 enthält die Rechenvorrichtung von Beispiel 8, wobei Lo = 1 ist.
-
Beispiel 10 enthält die Rechenvorrichtung von Beispiel 9, wobei die erste Zeit zwei Sekunden beträgt.
-
Beispiel 11 enthält die Rechenvorrichtung von Beispiel 10, wobei der Schwellenwert 3.000 beträgt.
-
Beispiel 12 enthält die Rechenvorrichtung von einem der Beispiele 1 - 11, wobei die Anomalieerkennungs-Engine ferner dazu ausgelegt ist, die Anomalie als eine potenzielle Intrusion zu identifizieren.
-
Beispiel 13 enthält die Rechenvorrichtung von Beispiel 12, wobei die Anomalieerkennungs-Engine ferner dazu ausgelegt ist, eine Abhilfemaßnahme zu ergreifen, oder einen Sicherheitsagenten zu benachrichtigen, eine Abhilfemaßnahme zu ergreifen.
-
Beispiel 14 enthält die Rechenvorrichtung von einem der Beispiele 1 - 11, wobei der Bus ein Controller Area Network (CAN)-Bus für ein Automobil ist.
-
Beispiel 15 enthält die Rechenvorrichtung von Beispiel 14, wobei die Rechenvorrichtung dazu ausgelegt ist, als ein fahrzeuginternes Netzwerk-Gateway für den CAN-Bus zu fungieren.
-
Beispiel 16 enthält ein oder mehrere materielle, nicht flüchtige computerlesbare Speichermedien, auf denen ausführbare Befehle für Folgendes gespeichert sind: kommunikatives Koppeln einer Netzwerk-Schnittstelle mit einem Bus, dem es an nativer Unterstützung für Authentifizierung mangelt; Empfangen eines ersten Datenstroms über eine erste Zeit, wobei der erste Datenstrom Daten über eine Vielzahl von Dimensionen umfasst, wobei Daten der Vielzahl von Dimensionen miteinander korreliert sind; Symbolisieren und Approximieren des ersten Datenstroms, was Berechnen einer ersten Fenstersumme umfasst; Empfangen eines zweiten Datenstroms über eine zweite Zeit, die in Länge im Wesentlichen der ersten Zeit gleich ist, wobei der zweite Datenstrom Daten über die Vielzahl von Dimensionen von dem ersten Datenstrom umfasst; Symbolisieren und Approximieren des zweiten Datenstroms, was Berechnen einer zweiten Fenstersumme umfasst; Berechnen einer Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme; Ermitteln, dass die Differenz einen Schwellenwert überschreitet, und dass die Korrelation über die Vielzahl von Dimensionen unterbrochen ist; und Markieren einer potenziellen Anomalie.
-
Beispiel 17 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 16, wobei Symbolisieren und Approximieren Folgendes umfassen: Unterteilen des Datenstroms in Rahmen; Symbolisieren zumindest eines Teils jedes Rahmens, wobei das Symbolisieren das Unterteilen eines Datenraums von potenziellen Werten für Dateneinheiten des Rahmens in eine Vielzahl von n Eimersymbolen und das Zuweisen eines Symbols zu jeder Dateneinheit entsprechend ihrem Eimer umfasst; und Berechnen einer ersten Summe über die Zeit, wobei das Berechnen der Fenstersumme das Unterteilen des Datenstroms in eine Vielzahl von Sequenzen von Längensymbolen LS umfasst, wobei jede Sequenz mit der vorhergehenden Sequenz um Lo Symbole überlappt, und Zusammenzählen der Anzahl von Vorkommen jeder Sequenz.
-
Beispiel 18 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 16, wobei das Zusammenzählen der Anzahl von Vorkommen jeder Sequenz das Aufzeichnen der Zählung in einem n × n × Ls Array umfasst, wobei jede Zelle in dem Array einen möglichen Wert für eine Symbolsequenz repräsentiert.
-
Beispiel 19 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 17, wobei das Berechnen der Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme das Berechnen eines Absolutwertes der zellenweisen Differenz zwischen jeder Zelle in dem Array und das Summieren der Absolutwerte der zellenweisen Differenzen umfasst.
-
Beispiel 20 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 16, wobei die Dateneinheit ein 8-Bit-Byte ist, und wobei der Teil jedes Rahmens ein festes Byte jedes Rahmens ist.
-
Beispiel 21 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 20, wobei das feste Byte das erste Byte ist.
-
Beispiel 22 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 16, wobei n = 8 ist.
-
Beispiel 23 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 16, wobei n = 4 ist.
-
Beispiel 24 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 23, wobei o = 1 ist.
-
Beispiel 25 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 24, wobei die erste Zeit zwei Sekunden beträgt.
-
Beispiel 26 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 25, wobei der Schwellenwert 3.000 beträgt.
-
Beispiel 27 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von einem der Beispiele 16 - 26, wobei die Befehle ferner dazu ausgelegt sind, die Anomalie als eine potenzielle Intrusion zu identifizieren.
-
Beispiel 28 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 27, wobei die Befehle ferner dazu ausgelegt sind, eine Abhilfemaßnahme zu ergreifen, oder einen Sicherheitsagenten zu benachrichtigen, eine Abhilfemaßnahme zu ergreifen.
-
Beispiel 29 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von einem der Beispiele 16 - 26, wobei der Bus ein Controller Area Network (CAN)-Bus für ein Automobil ist.
-
Beispiel 30 enthält die ein oder mehreren materiellen, nicht flüchtigen computerlesbaren Medien von Beispiel 29, wobei der Bus ein fahrzeuginternes Netzwerk-Gateway für den CAN-Bus ist.
-
Beispiel 31 enthält ein computerimplementiertes Verfahren zum Bereitstellen von Anomalieerkennung auf einem Bus, dem es an nativer Unterstützung für Authentifizierung mangelt, das Folgendes umfasst: kommunikatives Koppeln einer Netzwerk-Schnittstelle mit dem Bus; Empfangen eines ersten Datenstroms über eine erste Zeit, wobei der erste Datenstrom Daten über eine Vielzahl von Dimensionen umfasst, wobei Daten der Vielzahl von Dimensionen miteinander korreliert sind; Symbolisieren und Approximieren des ersten Datenstroms, was Berechnen einer ersten Fenstersumme umfasst; Empfangen eines zweiten Datenstroms über eine zweite Zeit, die in Länge im Wesentlichen der ersten Zeit gleich ist, wobei der zweite Datenstrom Daten über die Vielzahl von Dimensionen von dem ersten Datenstrom umfasst; Symbolisieren und Approximieren des zweiten Datenstroms, was Berechnen einer zweiten Fenstersumme umfasst; Berechnen einer Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme; Ermitteln, dass die Differenz einen Schwellenwert überschreitet, und dass die Korrelation über die Vielzahl von Dimensionen unterbrochen ist; und Markieren einer potenziellen Anomalie.
-
Beispiel 32 enthält das Verfahren von Beispiel 31, wobei Symbolisieren und Approximieren Folgendes umfassen: Unterteilen des Datenstroms in Rahmen; Symbolisieren zumindest eines Teils jedes Rahmens, wobei das Symbolisieren das Unterteilen eines Datenraums von potenziellen Werten für Dateneinheiten des Rahmens in eine Vielzahl von n Eimersymbolen und das Zuweisen eines Symbols zu jeder Dateneinheit entsprechend ihrem Eimer umfasst; und Berechnen einer ersten Summe über die Zeit, wobei das Berechnen der Fenstersumme das Unterteilen des Datenstroms in eine Vielzahl von Sequenzen von Längensymbolen Ls umfasst, wobei jede Sequenz mit der vorhergehenden Sequenz um LO Symbole überlappt, und Zusammenzählen der Anzahl von Vorkommen jeder Sequenz.
-
Beispiel 33 enthält das Verfahren von Beispiel 31, wobei das Zusammenzählen der Anzahl von Vorkommen jeder Sequenz das Aufzeichnen der Zählung in einem n × n × Ls Array umfasst, wobei jede Zelle in dem Array einen möglichen Wert für eine Symbolsequenz repräsentiert.
-
Beispiel 34 enthält das Verfahren von Beispiel 32, wobei das Berechnen der Differenz zwischen der ersten Fenstersumme und der zweiten Fenstersumme das Berechnen eines Absolutwertes der zellenweisen Differenz zwischen jeder Zelle in dem Array und das Summieren der Absolutwerte der zellenweisen Differenzen umfasst.
-
Beispiel 35 enthält das Verfahren von Beispiel 31, wobei die Dateneinheit ein 8-Bit-Byte ist, und wobei der Teil jedes Rahmens ein festes Byte jedes Rahmens ist.
-
Beispiel 36 enthält das Verfahren von Beispiel 35, wobei das feste Byte das erste Byte ist.
-
Beispiel 37 enthält das Verfahren von Beispiel 31, wobei n = 8 ist.
-
Beispiel 38 enthält das Verfahren von Beispiel 31, wobei n = 4 ist.
-
Beispiel 39 enthält das Verfahren von Beispiel 38, wobei o = 1 ist.
-
Beispiel 40 enthält das Verfahren von Beispiel 39, wobei die erste Zeit zwei Sekunden beträgt.
-
Beispiel 41 enthält das Verfahren von Beispiel 40, wobei der Schwellenwert 3.000 beträgt.
-
Beispiel 42 enthält das Verfahren von einem der Beispiele 31 - 41, das ferner das Identifizieren der Anomalie als eine potenzielle Intrusion umfasst.
-
Beispiel 43 enthält das Verfahren von Beispiel 31, das ferner das Ergreifen einer Abhilfemaßnahme oder das Benachrichtigen eines Sicherheitsagenten, eine Abhilfemaßnahme zu ergreifen, umfasst.
-
Beispiel 44 enthält das Verfahren von einem der Beispiele 31 - 41, wobei der Bus ein Controller Area Network (CAN)-Bus für ein Automobil ist.
-
Beispiel 45 enthält das Verfahren von Beispiel 44, wobei der Bus ein fahrzeuginternes Netzwerk-Gateway für den CAN-Bus ist.
-
Beispiel 46 enthält eine Vorrichtung, die Mittel zum Durchführen des Verfahrens von einem der Beispiele 31 - 45 umfasst.
-
Beispiel 47 enthält die Vorrichtung von Beispiel 46, wobei die Mittel zum Durchführen des Verfahrens einen Prozessor und einen Speicher umfassen.
-
Beispiel 48 enthält die Vorrichtung von Beispiel 47, wobei der Speicher maschinenlesbare Befehle umfasst, die, wenn sie ausgeführt werden, die Vorrichtung veranlassen, das Verfahren von einem der Beispiele 31 - 45 durchzuführen.
-
Beispiel 49 enthält die Vorrichtung von einem der Beispiele 46 - 48, wobei die Vorrichtung ein Computersystem ist.
-
Beispiel 50 enthält mindestens ein computerlesbares Medium, das Befehle enthält, die, wenn sie ausgeführt werden, ein Verfahren implementieren, oder eine Vorrichtung realisieren, wie in einem der Beispiele 31 - 49 abgebildet.