Wikipedia · einfach zusammengefasst · Stand
Netzwerkprozessor
Netzwerkprozessoren können durch Techniken wie massive Parallelverarbeitung und Pipelining viele Pakete gleichzeitig und unabhängig voneinander bearbeiten.
Inhalt5 Abschnitte
Definition und Bedeutung
Ein Netzwerkprozessor (englisch Network Processor, NP, auch Network Processing Unit, NPU) ist ein programmierbarer Mikroprozessor, der speziell für die Verarbeitung und Weiterleitung von Datenpaketen in Kommunikationsnetzen optimiert ist. Er verbindet hohe Verarbeitungsgeschwindigkeit mit Programmierbarkeit: Anders als eine vollständig festgelegte Schaltung kann er angepasst werden, um neue Dienste oder Protokolle zu unterstützen.
Durch massive Parallelverarbeitung und Pipelining kann ein Netzwerkprozessor viele voneinander unabhängige Pakete gleichzeitig bearbeiten. Pipelining bedeutet, dass die Verarbeitung in aufeinanderfolgende Arbeitsschritte zerlegt wird, die parallel an verschiedenen Paketen ausgeführt werden. Die erreichbare Wirespeed-Datenübertragungsrate, also die Verarbeitung mit voller Leitungsgeschwindigkeit, betrug bei aktuellen Prozessoren bis zu 200 Gbit/s duplex (Stand 2013). Duplex bezeichnet dabei die Datenübertragung in beide Richtungen.
Einsatz und Paketverarbeitung
Netzwerkprozessoren werden im Zugangsnetz eingesetzt, beispielsweise in DSLAMs, Basisstationen, Intrusion-Prevention-Systemen, Firewalls und Systemen zur Deep Packet Inspection. Im Kernnetz arbeiten sie unter anderem in Switches und Routern. Besonders Netzwerkprozessoren für hohe Datenraten übernehmen Aufgaben der Schichten 2 bis 4 des OSI-Modells: Ethernet auf Schicht 2, IP auf Schicht 3 und TCP auf Schicht 4.
Die Paketverarbeitung umfasst häufig folgende Schritte:
• Media Access Control übernimmt Funktionen wie Ethernet Framing oder bei ATM die Zerlegung und Wiederzusammensetzung von Zellen.
• Beim Header Parsing werden die Kopfdaten eines Pakets ausgelesen. Durch Pattern Matching, also den Vergleich mit bekannten Mustern, wird es beispielsweise als VLAN-markiertes Ethernet-, IPv4- oder IPv6-Paket klassifiziert. Pakete für Netzsteuerung und -kontrolle können an eine externe CPU weitergegeben werden. Dieser Kontrollpfad heißt auch „Slow Path“.
• Die Zugriffssteuerung beschränkt mit Paketfiltern die Kommunikation, etwa anhand bestimmter Quell- oder Zieladressen.
• Beim Address Learning wird nach dem Empfang eines Ethernetpakets die MAC-Adresse des Senders zusammen mit der Nummer des Empfangsports direkt in die Source Address Table (SAT) eingetragen. IP-Routingtabellen werden dagegen normalerweise indirekt durch Routingprotokolle wie BGP oder OSPF aktualisiert.
• Beim Tabellen-Lookup wird in einer Adress- oder Routingtabelle nach dem Ziel beziehungsweise der nächsten Teilstrecke gesucht. Ein übliches Verfahren ist der Longest Prefix Match, bei dem der längste passende Adresspräfix gewählt wird.
• Beim Header Update werden Kopfdaten protokollgerecht geändert, beispielsweise durch den Austausch eines MPLS-Labels oder das Herabsetzen des Time-to-Live-Werts.
• Traffic Management und Queuing steuern nach der Routingentscheidung den Verkehrsfluss. Dabei sollen konfigurierte Quality-of-Service-Parameter (QoS), also Vorgaben zur Dienstgüte, durch Traffic Shaping und Traffic Policing eingehalten werden. Abhängig von diesen Vorgaben und der Priorität werden Pakete in unterschiedliche Ausgangswarteschlangen eingeordnet.
Architektur und Funktionsweise
Da die einzelnen Arbeitsschritte der Paketverarbeitung vergleichsweise einfach sind, verwenden die meisten Netzwerkprozessoren effiziente, funktional reduzierte RISC-Prozessoren. Diese heißen Prozessorelemente. Komponenten gewöhnlicher Prozessoren wie Caches, Memory-Management Units (MMU) und Gleitkommaeinheiten (FPU) fehlen häufig.
Der Programmablauf hängt stark davon ab, wann Datenpakete verfügbar sind. Deshalb werden manche Netzwerkprozessoren nicht als befehlsgetriebene Von-Neumann-Systeme, sondern mit einer Datenfluss-Architektur umgesetzt. Nach der Flynnschen Klassifikation gehört diese zur Klasse MISD (Multiple Instruction, Single Data).
Hohe Verarbeitungsgeschwindigkeiten entstehen neben hohen Taktraten vor allem durch Parallelisierung und Pipelining. Drei typische Anordnungen der Prozessorelemente sind:
• Bei parallelen Prozessor-Pipelines wird jedes ankommende Paket einer von mehreren Pipelines zugeteilt und durchläuft diese vollständig. Ein Beispiel ist Cisco Toaster.
• Eine Pipeline aus Parallelprozessoren ähnelt einer reinen Pipeline aus superskalaren Prozessorelementen. Die Elemente können unterschiedliche Typen besitzen. Ein Beispiel ist EZChip NP.
• In einem Prozessorpool stehen mehrere identische Prozessorelemente bereit. Ein Scheduler, also eine Verteilungssteuerung, weist die Pakete freien Elementen zu. Beispiele sind Intel IXP und Alcatel-Lucent FP.
Spezialblöcke, Koprozessoren und Programmierung
Für besonders rechenintensive Aufgaben enthalten die meisten Netzwerkprozessoren fest codierte Funktionsblöcke. Dazu gehören Engines für Hash- und CRC-Berechnungen, Statistik, Pattern Matching und Bandbreitenmanagement. Diese Blöcke sind nicht frei programmierbar, sondern nur innerhalb enger Grenzen konfigurierbar.
Häufig unterstützen externe Koprozessoren den Netzwerkprozessor. Dazu zählen General Purpose Processors (GPPs) für das Control Plane Management, Knowledge Based Processors und Sicherheits-Koprozessoren.
Die hohe Leistung beruht vielfach auf effizienten, hardwarenah umgesetzten Funktionen. Deshalb erfolgt die Programmierung meist systemnah in Assembler oder C und ähnelt der Programmierung eines Mikrocontrollers. Nur wenige der verfügbaren Netzwerkprozessoren lassen sich in ANSI C mit einer standardmäßigen GNU Toolchain programmieren.
Abgrenzung, Entwicklung und Markt
Kommunikationsprozessoren verarbeiten Pakete im Datenpfad mit niedrigeren Bitraten von 1–10 Gbit/s und sind deshalb preisgünstiger. Beispiele sind Caviums OCTEON- und Freescales PowerQUICC-Chips. Sie integrieren einen oder mehrere Standardprozessorkerne, etwa auf Basis von MIPS oder ARM, und ermöglichen Paketverarbeitung auf den höheren Netzwerkschichten 4 bis 7 sowie die Verarbeitung von Kontrollprotokollen.
Konfigurierbare ASSPs konkurrieren bei hohen Datenraten mit Netzwerkprozessoren. Sie sind konfigurierbar, aber nicht programmierbar, und dadurch weniger komplex. Sie werden häufig für Ethernet-Paketverarbeitung auf Schicht 2 verwendet. Ein Beispiel sind Broadcoms StrataXGS-Chips der Reihe BCM56xxx.
Netzwerkprozessoren entstanden als Reaktion auf die stark wachsenden Datenraten und Funktionsanforderungen von IP-Routern Ende der 1990er Jahre. Programmierbare Spezialprozessoren sollten die zuvor eingesetzten, fest definierten ASICs ersetzen. Cisco und Juniper verwendeten im Jahr 2000 mit Toaster 2 beziehungsweise Internet Processor II die ersten selbst entwickelten Netzwerkprozessoren. Intel brachte kurz darauf mit dem IXP1200 den ersten frei erhältlichen Netzwerkprozessor heraus.
Während des Internetbooms entstanden zahlreiche Hersteller; Anfang 2003 vermarkteten bereits 30 Chiphersteller Netzwerkprozessoren. Nach dem Platzen der Dotcom-Blase gingen die Investitionen der Netzbetreiber zurück, viele Anbieter wurden zahlungsunfähig und der Markt konzentrierte sich durch Übernahmen. Genannt werden unter anderem Avago/LSI/Agere, Broadcom/Sandburst, Netronome/Intel, Marvell/Xelerated und PMC-Sierra/Wintegra. Der Markt für frei erhältliche Netzwerkprozessoren wurde 2012 auf 350 Mio. US-Dollar geschätzt und war seit 2005 jährlich um mehr als 6 % gewachsen. Zugleich wurde das Geschäft für reine Chiphersteller schwieriger, weil große Kunden zunehmend eigene Prozessoren entwickelten.
Zu den wichtigen Entwicklungen gehörten Broadcoms BCM88030 als erster frei erhältlicher Netzwerkprozessor mit 100 Gbit/s duplex sowie Alcatel-Lucents FP3 und Ciscos nPower mit jeweils 400 Gbit/s simplex. Der FP3 war seit 2011 die dritte Generation der FP-Serie und der erste Prozessor mit diesem Durchsatz. Ericsson stellte 2013 den SNP 4000 mit 200 Gbit/s simplex vor, dessen Software unter SMP Linux mit einer GNU-C/C++-Toolchain entwickelt werden konnte. EZChip war bei verkäuflichen High-End-Netzwerkprozessoren führend; sein NP-2/NP-3 war der erste 10-Gbit/s-Netzwerkprozessor mit integriertem Traffic Manager. Intel war 2006 Marktführer, verkaufte seine IXP-Sparte jedoch Ende 2007 an Netronome. Weitere Hersteller eigener oder übernommener Produktfamilien waren unter anderem Huawei, Juniper, Marvell und PMC-Sierra.