Index

Networking

-

Databases

-

Packet Inspection Mechanismen

Stateless Packet Inspection (SPI)

Stateless Packet Inspection ist eine grundlegende Form der Paketinspektion, bei der einzelne Pakete unabhängig voneinander betrachtet werden, ohne den Verbindungszustand zu berücksichtigen.

Stateless PI betrachtet hauptsächlich Header-Informationen wie Quell- und Ziel-IP-Adressen, Quell- und Ziel-Ports sowie Protokollinformationen und Flags.

Situationsabhängig kann SPI auch Teile des Paketinhalts einsehen, beispielsweise wenn bestimmte Anwendungen zum Einsatz kommen oder eine Entscheidung dies erfordert.

Es wird häufig zur einfachen Filterung von Paketen basierend auf vordefinierten Regeln verwendet.

-

Stateful Packet Inspection (SPI)

Im Gegensatz zu Stateless Packet Inspection betrachtet Stateful Packet Inspection den Verbindungszustand.

Hierbei werden nicht nur einzelne Pakete, sondern auch der Zustand der Kommunikation zwischen den Teilnehmern überwacht.

Dies ermöglicht eine bessere Kontrolle und Analyse des Netzwerkverkehrs, da Zusammenhänge zwischen Paketen erkannt werden können.

Stateful PI wird oft verwendet, um Firewalls und Intrusion Detection/Prevention Systems (IDS/IPS) zu betreiben.

-

Deep Packet Inspection (DPI)

Deep Packet Inspection geht noch einen Schritt weiter als Stateful PI, indem es den gesamten Inhalt eines Pakets analysiert und nicht nur die Header-Informationen.

DPI kann den Payload eines Pakets auf schädliche Inhalte oder bestimmte Muster überprüfen.

Es wird oft zur Identifizierung von Anwendungsprotokollen, zur Erkennung von Angriffen und zur Anwendungssteuerung eingesetzt.

DPI wird unter anderem zur Vorratsdatenspeicherung, zum Abhören von Informationen und zur Zensur oder Inhaltsmanipulation genutzt.

-

Application Layer Inspection

Dieser Mechanismus konzentriert sich speziell auf den Anwendungsbereich.

Er analysiert den Inhalt von Paketen auf Anwendungsebene, um spezifische Anwendungsprotokolle, Daten oder Dienste zu erkennen.

Dies ermöglicht eine feinere Kontrolle über den Netzwerkverkehr, um beispielsweise den Zugriff auf bestimmte Anwendungen zu steuern oder zu priorisieren.

-

Behavioral Analysis

Diese Methode basiert auf der Überwachung von Verhaltensmustern im Netzwerkverkehr.

Es werden Modelle erstellt, die normales Verhalten definieren und Abweichungen davon können auf potenzielle Anomalien oder Angriffe hinweisen.

Diese Technik wird ebenfalls oft in IDS/IPS verwendet.

-

Signature-Based Inspection

Signature-Based Inspection oder Signature Matching, bezieht sich auf die Identifizierung von spezifischen Mustern oder Signaturen im Netzwerkverkehr.

Diese Muster können auf bekannte Angriffe, Viren, Malware oder andere bösartige Aktivitäten hinweisen.

Die Inspektion erfolgt durch den Vergleich der Paketinhalte und Signaturen mittels entsprechenden Datenbanken.

Wird eine Übereinstimmung gefunden, kann eine Benachrichtigung oder Blockierung ausgelöst werden.

-

Header Inspection

Header Inspection bezieht sich auf die Analyse der Header-Informationen eines Datenpakets.

Diese Informationen enthalten unter anderem Quell- und Ziel-IP-Adressen, Portnummern und Protokolltypen.

Die Header-Informationen liefern Einsicht in die Art des Datenverkehrs, wie den verwendeten Dienst oder die Anwendung.

Basierend auf diesen Informationen können Sicherheitsrichtlinien erstellt werden, um den Datenverkehr zu kontrollieren, zu priorisieren und zu filtern.

Header Inspection beschränkt sich, anders als SPI, ausschließlich auf die Paketheader-Informationen, bietet eine oberflächliche Analyse und wird meist für einfache Steuerungs- und Filteranforderungen verwendet.

-

Mikroarchitektonische Technologien und Komponenten in modernen Hochleistungsprozessoren

Out-of-Order Execution (OOOE)

Ein "Out-of-Order Execution"-Paradigma erhöht die Auslastung der Komponenten des Prozessors, indem es ermöglicht, Anweisungen weiter unten im Instruction Stream (Anweisungsstrom) eines Programms parallel mit vorhergehenden Anweisungen oder manchmal sogar vor diesen auszuführen.

Moderne Prozessoren arbeiten intern mit Mikro-Operationen (Micro-ops), die den Befehlssatz der Architektur emulieren --> Befehle werden in Mikro-Operationen umgewandelt

Sobald alle Mikro-Operationen, die einer Anweisung entsprechen, sowie alle vorhergehenden Anweisungen abgeschlossen wurden, können die Anweisungen zurückgezogen werden.

Dabei werden ihre Änderungen an Registern und anderen architektonischen Zuständen durchgeführt und Speicherplatz im Umsortierungs-Puffer freigegeben.

Resultierend werden die Anweisungen in der Reihenfolge der Programm-Ausführung zurückgezogen.

-

Speculative Execution

Oft kennt der Prozessor den future Instruction Stream eines Programms nicht im Voraus.

Ein solcher Fall tritt beispielsweise auf, wenn die Out-of-Order Execution eine bedingte Branch Instruction erreicht, deren Richtung von vorhergehenden Instruktionen abhängt, deren Ausführung noch nicht abgeschlossen ist.

In solchen Fällen kann der Prozessor seinen aktuellen Registerzustand beibehalten bzw. "festsetzen", eine Prediction über den Pfad treffen, den das Programm wahrscheinlich einschlagen wird, und spekulativ Instruktionen entlang des Pfads ausführen.

Wenn sich die Prediction als richtig herausstellt, werden die Ergebnisse der spekulativen Ausführung bestätigt (bzw. gespeichert), was einen Leistungsvorteil gegenüber der Untätigkeit während des Wartens bringt.

Andernfalls, wenn der Prozessor feststellt, dass er den falschen Pfad eingeschlagen hat, verwirft er die spekulative Berechnung, indem er seinen Registerzustand reverted und auf dem richtigen Pfad weitermacht.

Man bezeichnet Instruktionen, die fälschlicherweise ausgeführt werden (als Ergebnis einer Fehlvorhersage), aber möglicherweise mikroarchitektonische Traces hinterlassen, als vorübergehende (transient) Instruktionen.

Obwohl die spekulative Ausführung den architektonischen Zustand des Programms beibehält, als ob die Ausführung dem richtigen Pfad gefolgt wäre, können mikroarchitektonische Elemente nach der vorübergehenden Ausführung einen anderen (aber gültigen) Zustand haben als zuvor.

Die spekulative Ausführung auf modernen CPUs kann mehrere hundert Instruktionen im Voraus laufen lassen. Die Begrenzung wird normalerweise durch die Größe des Umsortierungspuffers (Reorder Buffer) in der CPU bestimmt.

Beispielsweise hat der Umsortierungspuffer innerhalb der Intel Sunny Cove Mikroarchitektur ausreichend Kapazität um bis zu 352 Mikro-Operationen zu halten

Da es keine eins-zu-eins Relation zwischen der Anzahl der Mikro-Operationen und Instruktionen gibt, hängt die Begrenzung davon ab, welche Instruktionen genau verwendet werden.

-

Branch Prediction

Moderne Programme enthalten häufig Verzweigungen (z. B. Schleifen oder bedingte Anweisungen), die den Fluss der Befehle beeinflussen.

Wenn der Prozessor auf eine Verzweigung stößt, weiß er möglicherweise nicht, welcher Zweig (z. B. "if"- oder "else"-Zweig) ausgeführt wird.

Die Prozessorpipeline kann in diesem Fall stoppen, um die richtige Verzweigungsrichtung abzuwarten.

Die Branch Prediction-Technik versucht, vorherzusagen, welcher Zweig wahrscheinlich ausgeführt wird, und setzt die Ausführung auf der Grundlage dieser Vorhersage fort.

Wenn die Vorhersage korrekt ist, wird die Pipeline nicht unterbrochen, was die Leistung erhöht.

Wenn die Vorhersage jedoch falsch ist, werden die ausgeführten Befehle verworfen, und die Pipeline wird zurückgesetzt.

Durch OOOE und Branch Prediction werden die Pipelines effizienter genutzt und Bottlenecks/Fehlerquellen minimiert.

-

Pipeline

Eine Pipeline ist eine mikroarchitektonische Komponente, die die Ausführungsgeschwindigkeit von Befehlen erhöht.

Die Pipeline unterteilt die Verarbeitung eines Befehls in mehrere aufeinanderfolgende Schtufen, sodass mehrere Befehle gleichzeitig in verschiedenen Stadien der Ausführung sein können.

Diese parallele Verarbeitung erhöht die Effizienz des Prozessors und minimiert die Ausführungszeit der Befehle.

Mit Pipelines verbundene Herausforderungen, wie Abhängigkeiten zwischen Befehlen, welche durch die Pipeline unterbrochen werden könnten oder mögliche Verzögerungen aufgrund von Verzweigungen und Speicherzugriffen, können durch Techniken wie Branch Prediction (Voraussage von Verzweigungen) und Out-of-Order Execution (außerordentliche Befehlsausführung), bewältigt werden.

-

Memory Hierarchy

Um den Geschwindigkeitsunterschied zwischen dem schnellen Prozessor und dem langsamen Speicher zu überbrücken, verwenden Prozessoren eine Hierarchie von sukzessiv kleineren aber schnelleren Caches.

Die Caches unterteilen den Speicher in festen Größenabschnitten, die als "Lines" bezeichnet werden, wobei typische Größen für Lines 64 oder 128 Bytes betragen.

Benötigt der Prozessor Daten aus dem Speicher, so prüft er zuerst, ob der L1-Cache eine Kopie enthält.

Im Falle eines Cache-Hits (benötigte Daten im Cache gefunden), werden die Daten aus dem L1-Cache abgerufen und verwendet.

Im Falle eines Cache-Miss, wird das Verfahren wiederholt, um zu versuchen, die Daten aus den nächsten Cache-Ebenen und schließlich aus dem externen Speicher abzurufen.

Ist ein Lesevorgang abgeschlossen, werden die Daten in der Regel im Cache gespeichert (und ein zuvor zwischengespeicherter Wert wird entfernt, um Platz zu schaffen), falls sie demnächst erneut benötigt werden.

Moderne Prozessoren haben üblicherweise drei Cache-Level (es gibt Ausführungen mit vier Level), wobei jeder Kern Zugriff auf seinen eigenen L1- und L2-Cache hat und alle Kerne sich einen gemeinsamen L3-Cache teilen (oder L4 falls vorhanden).

Ein Prozessor muss sicherstellen, dass die L1- und L2-Caches pro Kern kohärent sind, indem er ein Cache-Kohärenzprotokoll verwendet, das oft auf dem MESI-Protokoll basiert.

Insbesondere die Verwendung des MESI-Protokolls oder einiger seiner Varianten bedeutet, dass eine Speicher-Schreiboperation auf einem Kern dazu führt, dass Kopien derselben Daten in den L1- und L2-Caches anderer Kerne als ungültig markiert werden.

Dies bedeutet, dass zukünftige Zugriffe auf diese Daten auf anderen Kernen die Daten nicht schnell aus dem L1- oder L2-Cache laden können.

Wenn dies wiederholt an einem bestimmten Speicherort geschieht, wird dies als "Cache-Line-Bouncing" bezeichnet.

Da der Speicher mit einer Zeilengranularität zwischengespeichert wird, kann dies sogar auftreten, wenn zwei Kerne auf verschiedene nahegelegene Speicherorte zugreifen, die auf dieselbe Cache-Linie abgebildet werden.

Dieses Verhalten wird als "False Sharing" bezeichnet und ist als Quelle von Leistungsproblemen bekannt.

-

Modified Exclusive Shard Invalid Protokoll (MESI)

Das "MESI-Protokoll" ist ein kohärenzprotokoll, das in Mehrkernprozessoren verwendet wird, um sicherzustellen, dass der Cache verschiedener Prozessorkerne kohärent bleibt (Prozessoren erhalten konsistente Datenansicht bei Zugriff auf gemeinsamen Speicher).

Es verwaltet und koordiniert den Cache-Speicher eines multiprozessorfähigen Systems und verhindert Dateninkonsistenzen und Fehlverhalten.

Die verschiedenen Zustände, in denen sich der Cache (im Rahmen des MESI-Protokolls) für eine spezifische Speicheradresse befinden kann, heißen: Modified, Exclusive, Shared und Invalid.

Modified: Der Cache hat eine exklusive Kopie des Speicherwerts, die gegenüber dem Haupt- oder gemeinsamen Speicher verändert wurde. Dies bedeutet, dass die Daten im Cache anders sind als die im Hauptspeicher.

Exclusive: Der Cache hat eine exklusive Kopie des Speicherwerts, der jedoch mit dem Hauptspeicher übereinstimmt und nicht geändert wurde.

Shared: Der Cache hat eine Kopie des Speicherwerts, der mit dem Hauptspeicher übereinstimmt, und dieser Wert kann von anderen Caches geteilt werden.

Invalid: Der Cache enthält ungültige oder veraltete Daten für die betreffende Speicheradresse.

-

Second Level Address Translation (SLAT)

SLAT wird in Prozessoren zur Leistungsverbesserung und Effizienzerhöhung von Virtualisierungsumgebungen genutzt. Läuft eine virtuelle Maschine auf einem physischen Host, ist sie von einem Virtualisierungslayer (Hypervisor) umgeben.

Die VM interagiert mit dem virtuellen Speicher, der vom Hypervisor alloziert wurde. Diese virtuellen Speicheradressen zeigen nicht direkt auf den physischen Speicher des Hosts.

Die physischen Speicheradressen sind die tatsächlichen Speicherorte im physischen RAM des Computers. Wenn die VM auf ihren virtuellen Speicher zugreifen möchte, muss dieser Zugriff auf die entsprechenden physischen Speicheradressen abgebildet werden, damit die CPU des physischen Hosts den tatsächlichen Daten im Arbeitsspeicher abrufen kann.

Dieser Übersetzungsprozess wird als "Seitenübersetzung" bezeichnet. Er erfolgt normalerweise durch die Verwendung von Übersetzungstabellen, die als "Page Tables" bezeichnet werden. Diese Tabellen enthalten Zuordnungen zwischen virtuellen Speicheradressen und physischen Speicheradressen.

Ohne SLAT wurde diese Übersetzung vom Hypervisor durchgeführt. Wollte eine VM auf ihren virtuellen Speicher zugreifen, musste der Hypervisor die korrespondierende physische Adresse in der Page Table nachschlagen und den Speicherzugriff vermitteln.

Second Level Address Translation wird auch Nested Page Tables (AMD) oder Extended Page Tables (Intel) genannt und fügt eine zusätzliche Ebene von Übersetzungstabellen hinzu, welche sich direkt auf der CPU befinden.

Dadurch kann die CPU die Seitenübersetzung deutlich schneller und effizienter durchführen, was wiederum die Speicherzugriffzeiten in Virtualisierungsumgebungen verkürtzt und die Gesamtleistung der VMs erhöht.

Aufgrund der effizienteren Speicherverwaltung ermöglich es SLAT mehr VMs auf einem physischen Host auzuführen (höhere Dichte)

-

Verfahren und Algorithmen im Bereich neurale Netze

-

Qualitätssicherung, Sicherheit und Funktionsweisen im Bereich der Übertragungsprotokolle

-

Methoden und Technologien im Bereich der Bildverarbeitung und Rendering

Bildinterpolation (Frame Interpolation)

-

Arten der verschiedenen Festplattenverbund-Konfigurationen

Redundant Array of independent Disks (RAID)

RAID-Systeme haben (abhängig von Ausführung) in erster Linie die Aufgabe die Datenverfügbarkeit, Ausfallsicherheit und Leistung zu verbessern. Das erreicht man, in dem die Daten redundant auf mehreren Festplatten gespeichert werden, die zu einem logischen Laufwerk zusammengefasst sind.

häufige RAID-Konfigurationen
Betrieb RAID 0 RAID 1 RAID 5 RAID 6
Redundanz nein ja ja ja
min. Datenträger 2 2 3 4
Rechenaufwand sehr gering sehr gering mittel (XOR) hoch
Kapazität bei 2 Platten 2 1 - -
Kapazität bei 3 Platten 3 - 2 -
Kapazität bei 4 Platten 4 2 3 2
Kapazität bei 5 Platten 5 - 4 3

-

RAID 0

-

RAID 1

-

weitere in Arbeit und in Überarbeitung

Weiterleitung