# Multiprotocol Label Switching

MPLS im TCP/IP-Protokollstapel :
| Anwendung | HTTP | BGP | LDP |
| Transport | TCP | UDP | |
| Internet | IP | IP | IP |
| — | MPLS | MPLS | MPLS |
| Netzzugang | ATM | FR | Ethernet |
Multiprotocol Label Switching (MPLS) ermöglicht die verbindungsorientierte Übertragung von Datenpaketen in einem verbindungslosen Netz entlang eines zuvor aufgebauten („signalisierten“) Pfads. Dieses Vermittlungsverfahren wird überwiegend von Betreibern großer Transportnetze eingesetzt, die Sprach- und Datendienste auf Basis von IP anbieten (große Internetprovider).

## Technische Basis

MPLS wurde eingeführt, um verschiedene Vorteile verbindungsorientierter Vermittlung in ansonsten verbindungslosen Netzen nutzen zu können. Hierzu gehört einerseits die Ermöglichung einer schnelleren Verarbeitung eines Paketes durch eine vereinfachte Adressierung mit Hilfe sogenannter Labels; dieser Vorteil gegenüber traditionellem Longest Prefix Match-Forwarding wurde jedoch mittlerweile durch fortgeschrittene Technik (ASICs) relativiert. Andererseits ermöglicht MPLS dem Netzbetreiber die Vorgabe definierter Pfade in seinem Netz, was mit traditionellen Routingprotokollen wie Open Shortest Path First (OSPF) oder IS-IS nicht möglich ist. Folgende Arten der Datenübertragung mit oder ohne voreingestellte Verbindung werden unterschieden:

### Übertragung ohne feste Verbindung

    Können Daten von einem Endgerät spontan an einen Empfänger gesendet werden, und jeder dazwischenliegende Netzknoten (in der Regel Router) kann eigenständig entscheiden, wie er die Daten weiterzuleiten hat, so spricht man von verbindungsloser Datenübertragung. In einem verbindungslosen Netz können Daten grundsätzlich zu beliebiger Zeit und in beliebiger Menge im Vermittlungssystem eintreffen, weshalb das Vorhandensein benötigter Ressourcen für den Transport bestimmter Daten nicht garantiert werden kann. Dieses Netz hat ein stochastisches und eher zufälliges Verhalten.

### Übertragung mit fester Verbindung

    Muss vor dem Senden von Daten durch ein Endgerät erst ein Pfad durch das Netz zum Empfänger signalisiert werden, spricht man von verbindungsorientierter Datenübertragung. In diesem Fall werden die Netzknoten (in der Regel Switches) mit den notwendigen Verbindungsinformationen versehen, um die gesendeten Daten korrekt weiterleiten zu können (Label Switching). Das Netz weist ein deterministisches und kontrollierbares Verhalten auf. Ressourcen in den Vermittlungssystemen können während der Signalisierungsphase reserviert werden.

## Geschichte

Noch Mitte der 1990er Jahre überwog in großflächigen Kommunikationsnetzen (WANs) der Anteil an Sprachkommunikation (Telefonie) deutlich den Anteil an Datenkommunikation. Aufgrund der oben beschriebenen Unterschiede zwischen verbindungsorientierter (→Telefongespräche) und verbindungsloser (→Datenpakete im Internet) Übertragung, betrieben Telekommunikationsunternehmen getrennte Netze für die Daten- und für die Sprachübertragung, was erhebliche Kosten verursachte. Eine netzweite Dienstqualität (QoS, Quality of Service) existierte nicht. Vorhandene Sprachnetze boten diese Dienstqualitäten zwar für Sprachdienste an, doch die erforderlichen Bandbreiten zur Datenübertragung waren nicht vorhanden oder extrem teuer.
Die Einführung von ATM löste diese Problematik in vielen Teilbereichen. Sprache und Daten konnten nun über eine gemeinsame Infrastruktur übertragen werden. Allerdings stellte das ATM-Transportnetz keine IP-Routing-Funktionalitäten für die IP-basierte Datenübertragung (Internet) zur Verfügung. Diese geschah weiterhin in Routern.
Die Routing-Systeme erhielten durch den Einsatz von ATM jedoch die Möglichkeit, wesentlich höhere Datenübertragungsraten zu nutzen. Die Signalisierung von Verbindungswegen bleibt dem ATM-Netz überlassen, während die IP-Router verbindungslos, also stochastisch, ihre IP-Datenpakete übertragen. Eine netzweite Dienstqualität, um Daten und Sprache unter Nutzung der hohen Bandbreiten zu integrieren, existiert hingegen nicht. Hierdurch entstanden sogenannte Overlay-Architekturen, bei welchen die IP-Schicht die darunterliegende ATM-Transportschicht zwar nutzt, aber beide trotzdem unabhängig voneinander agieren. Beispiele für diesen Overlay Ansatz sind IP over ATM (RFC 2225) und Multiprotocol over ATM (MPoA).
Die verfügbaren Routersysteme erreichten durch die neu verfügbaren hohen Bandbreiten ihre Kapazitätsgrenzen. Zudem stellte das Zerlegen und Zusammenfügen von IP-Paketen (bis zu 1536 Byte oder mehr) in ATM-Zellen (53 Byte) eine schwer überwindbare Grenze für Geschwindigkeiten über 622 Mbit/s dar. Bedingt durch die hohe Anzahl von Punkt-zu-Punkt-Verbindungen zwischen den Routern, insbesondere bei vollständig vermaschten Netzen, führt der Einsatz traditioneller Topologie-/Routing-Protokolle (IGPs) wie OSPF, RIP oder IS-IS zu erheblichem zusätzlichen Signalisierungsverkehr („n-square-Problematik“: Zwischen $n$ Punkten existieren bei vollständiger Vermaschung $(n^{2}-n)/2$ Kanten). Dadurch kollabieren Router oder entwickeln sich zu permanenten Engpässen im Netz. Die Übertragung unterschiedlicher Dienste (Sprache, Daten, Video) über eine einheitliche und vereinfachte Plattform existiert nicht.
MPLS bietet für die oben genannten Problempunkte Lösungen an.

## Grundidee

MPLS bietet seit Ende der 1990er Jahre die Möglichkeit, überlastete Routing-Systeme zu entlasten und somit die verfügbaren Bandbreiten der Weitverkehrs-Übertragungsleitungen besser auszulasten.
Die Idee ist es, Datenpakete nicht mehr länger von einem Router zum nächsten Router (Hop-by-Hop) weiterzuleiten, und in jedem Router aufs Neue die Entscheidung für den günstigsten Weg zu treffen (kompletter IP-Lookup in der sogenannten Forwarding-Table), sondern diese an einem Eingangspunkt (Ingress-Router) auf einem vorsignalisierten Datenpfad zu senden und erst wieder am Ausgangspunkt (Egress-Router) die herkömmliche Hop-by-Hop-Weiterleitung von IP zu nutzen. Idealerweise liegen Ingress- und Egress-Router an den Grenzen eines Netzes. Dieses Vorgehen entlastet einen Großteil der Router erheblich: Auf allen MPLS-fähigen Zwischenstationen, sogenannten Label-Switched-Routern (LSR) werden lediglich die den MPLS-Paketen vorgeschalteten Labels ausgewertet. Dies erfolgt bereits direkt oberhalb der Sicherungsschicht (Layer 2) und kann sehr leicht in entsprechender Hardware mit hoher Geschwindigkeit erfolgen – im Gegensatz hierzu erfordern Forwarding-Entscheidungen bei traditionellem IP-Routing den erheblich aufwändigeren Longest Prefix Match.
MPLS bietet ein verbindungsorientiertes Verkehrsverhalten wie ATM für Datenpakete. Die Pfade werden vor der Paketweiterleitung einmalig aufgebaut (signalisiert) und stehen ab dann zur Verfügung. Zudem können mit Hilfe zusätzlicher Protokolle oder Protokollerweiterungen, wie CR-LDP oder RSVP-TE, Ressourcen auf den Routern reserviert oder die Wegewahl gezielt beeinflusst werden. Dies erlaubt, in einem gewissen Rahmen, QoS für die kombinierte Übertragung von Sprache, Daten und Video, netzweit zu realisieren.
Trotzdem kann MPLS auch mit RSVP keine Bandbreiten reservieren, wie es ATM ermöglicht. Es ist möglich, ein gewisses deterministisches Verkehrsverhalten anzunähern, aber IP-Routing/Forwarding ist in seinem Verhalten stochastisch, auch unter Nutzung von MPLS.
Der anfängliche Geschwindigkeitsvorteil von MPLS in der Datenweiterleitung ist heutzutage nicht mehr relevant, da moderne Routingsysteme durchweg das IP-Forwarding in Hardware realisiert haben.

## Funktionsweise

Die Nutzung von MPLS in IP-Netzen setzt eine funktionierende logische und physische IP-basierte Netzinfrastruktur (MPLS-fähige Router) voraus. MPLS agiert hier primär in den Grenzen eines sogenannten Autonomous System (AS). Zudem ist die Verwendung eines Interior Gateway Protocol (IGP) wie OSPF oder IS-IS, sinnvoll. Theoretisch möglich, aber wenig praktikabel, wäre auch die Nutzung statischer Routen in Kombination mit IBGP.

### Aufbau der MPLS-Pfade

Nachdem sichergestellt ist, dass die Router eines autonomen Systems (AS) sich alle gegenseitig „sehen“ können (dies stellen z. B. OSPF oder IS-IS sicher), werden nun die MPLS-Wege (Pfade) zwischen den einzelnen Routern geschaltet. Diese Pfade nennt man Label Switched Path (LSP). Der Anfangsknoten eines LSPs wird als Ingress-Router bezeichnet, der Endpunkt als Egress-Router. Typischerweise liegen diese Anfangs- und Endknoten an Eingangs- und Ausgangspunkten eines AS (AS Boundary Router).
Das Schalten der LSPs kann vollständig manuell, halbautomatisch oder vollautomatisch erfolgen. Die manuelle Variante erfordert die Konfiguration jedes Routers, den ein LSP durchläuft. Bei autonomen Systemen in der Größenordnung von mehreren Dutzend Routern ist dieses Verfahren ineffizient. Die halbautomatische Variante erfordert nur die manuelle Konfiguration von Teilen des LSPs, also zum Beispiel der Weg über die ersten drei Router. Der Rest der Wegfindung für den LSP wird dem IGP überlassen. Die vollautomatische Variante verlässt sich bei der Festlegung des Pfades für einen LSP vollständig auf das IGP. Somit erzielt man hinsichtlich der Pfadoptimierung keinerlei Vorteil. Allerdings erfolgt die Datenweiterleitung in den Routern nun auf Layer 2 (Label-Swapping, also Austauschen/Ändern von Labeln) statt auf Layer 3.

### Durchleiten von IP-Paketen

Sobald ein IP-Paket ein MPLS-Netz betritt, wird es am Ingress-Router mit einem zusätzlichen MPLS-Header (s. u.) versehen. Betrachtet man die ISO-Schicht-Informationen (siehe auch ISO/OSI-Referenzmodell) eines Datenpaketes, so wird dieser Header zwischen der Schicht-3-Information (Network-Layer-Header) und der Schicht-2-Information (Link-Layer-Header) eingefügt. Diesen Vorgang des Einfügens nennt man Push-Operation. Wird das Label eines LSPs durch einen Router entfernt, nennt man dies eine Pop-Operation. Das Austauschen des Labels durch einen Router auf dem Pfad eines LSPs nennt man Swap-Operation. Dazu ist notwendig, dass Label 2 und Label 3 jeweils eigene Verbindungsinformationen speichern (Bandbreite, Latenzen und Ziel), um Daten ohne Fehler über MPLS weiterleiten zu können.

### Penultimate Hop Popping

Penultimate Hop Popping (PHP) beschreibt den Sachverhalt, dass ein MPLS-Label (bei gestackten LSPs das äußere Label) bereits im vorletzten Router eines LSPs entfernt wird. Dieser sogenannte PHP-Router kennt, bedingt durch das IGP, den Weg zum Egress-Router und leitet das Datenpaket zu diesem auf normalem Weg weiter. Damit spart man im Egress-Router die POP-Operation, er muss lediglich das entpackte Paket anhand der Routing-Informationen weiterleiten.

## Entwicklung von MPLS

Der Vorteil von MPLS zeigt sich erst, wenn zusätzliche Dienste, basierend auf der MPLS-Technik, zum Einsatz kommen. Solche – mittlerweile weitestgehend standardisierten – Dienste sind zum heutigen Zeitpunkt:

### Traffic Engineering

    Ist die gezielte Steuerung der Wegwahl für den Datenverkehr eines Netzes. Diese Anwendung ermöglicht zum Beispiel einem Netzbetreiber, seinen Kunden gezielt besonders breitbandige und verzögerungsarme Datenwege anzubieten. Zur Bereitstellung von Ressourcen für optimierte Wege durch ein Netz kann beispielsweise RSVP-TE zum Einsatz kommen.

### Layer-2-VPN

    Virtuelle Private Netze (VPNs) auf der OSI-Schicht 2, mit Punkt-zu-Punkt-Verbindungen. Diese ermöglichen es, ATM-Verbindungen (VPI/VCI), Ethernet-VLANs oder Frame-Relay-Pfade (VCs=Virtual Circuits) unterschiedlicher Netze direkt über ein IP-MPLS-Netz miteinander zu verbinden. Es wird dem Kunden am Übergabepunkt ein Anschluss auf Schicht 2 des OSI-Modells übergeben. Ein Anwendungsbeispiel wäre ein Internetdienstanbieter, der DSL-Zugänge in Deutschland anbietet, aber keine eigene, landesweite, Infrastruktur besitzt, um seine ATM-basierten DSLAMs (Digital Subscriber Line Access Multiplexer) zu einem zentralen BRAS zu verbinden. Hierzu nutzt er dann einen anderen Transport-Provider mit IP-MPLS-Infrastruktur, der die ATM-VPIs/VCIs transparent zum zentralen BRAS-Standort führt. Die DSLAMs und das BRAS-System bekommen vom Transport-Provider eine ATM-Schnittstelle zur Verfügung gestellt, obwohl dessen Infrastruktur rein IP-basiert ist. Man spricht hier auch von Pseudo-Wire-Emulation (PWE3 Circuits). Es werden also Leitungen/Pfade emuliert. Die Ingress-/Egress-Router bezeichnet man in diesem Fall als Label Edge Router (LER), die Router auf dem Pfad des LSPs als Label Switch Router (LSR). Die LSPs werden in der Praxis mit einem separaten Protokoll (z. B. LDP oder L2TPv3) zwischen den LERs automatisch signalisiert. Es besteht aber auch die Möglichkeit die LSPs manuell zu konfigurieren. Ein Layer-2-VPN stellt sich wie ein virtueller ATM-/Frame-Relay-/Ethernet-Switch mit Punkt-zu-Punkt-Verbindungen dar.

### Virtual Private LAN Service (VPLS)

    Dies ist eine Variante der Layer-2-VPNs mit Fokussierung auf Ethernet-basierte Infrastrukturen, also Punkt-zu-Mehrpunkt-Verbindungen, was dem Broadcast-Verhalten von Ethernet Rechnung trägt. Als Signalisierungsprotokolle kommt überwiegend LDP, aber auch BGP zum Einsatz. Am Übergabepunkt bekommt der Kunde einen gebridgten LAN-Port zur Verfügung gestellt. Eine VPLS-Instanz stellt sich wie ein virtueller LAN-Switch dar.

### Layer-3-VPNs

    Virtuelle Private Netze (VPNs) auf der OSI-Schicht 3. Diese ermöglichen es, komplette geroutete Netz-Infrastrukturen von Kunden transparent über ein Provider-MPLS-Transportnetz abzubilden. Es wird dem Kunden am Übergabepunkt ein Anschluss auf Schicht-3 des OSI-Modells übergeben, also ein gerouteter Anschluss mit statischer Route oder einem IGP. Weitere Details hierzu finden sich zum Beispiel im RFC 4364. Die LSPs werden in der Praxis mittels LDP signalisiert. Ein Layer-3-VPN stellt sich wie ein virtueller IP-Router dar (was aber nicht mit den proprietären „Virtuellen-Router“-Konzepten einiger Hersteller zu verwechseln ist).

### G-MPLS (Generalized MPLS)

    Es erweitert den Wirkungsbereich von MPLS hin zur optischen Übertragungs-Infrastruktur. Dieser Ansatz soll die automatische Signalisierung optischer Pfade (also zum Beispiel einzelne Wellenlängen einer WDM/DWDM Schnittstelle, SDH-Pfade oder eine komplette Schnittstelle) beim Aufbau eines LSPs miteinbeziehen. Die Signalisierung der Topologie erweitert also ihren Wirkungskreis weg von der IP-Transportschicht innerhalb eines AS hin zur darunter liegenden Infrastruktur-Transportschicht. Standardisierungsansätze für die Architektur, das funktionale Modell und Anforderungen hierzu finden sich unter den Suchbegriffen ASON/ASTN (Automatic Switched Optical Network /Automatic Switched Transport Network).
Grundsätzlich führt die MPLS-Technologie die unabhängige Paketvermittlung (verbindungslos) zurück zur Leitungsvermittlung durch LSPs (verbindungsorientiert). Damit werden einige Vorteile der IP-basierten Kommunikation von jedem zu jedem (Any-to-Any), mit all ihrer Flexibilität und guten Skalierbarkeit, durch die Stärken verbindungsorientierter Kommunikation eingeschränkt (Komplexität, n-square-Problematik etc.).
Mittlerweile werden in nahezu allen großen Endkunden-WANs MPLS-Lösungen umgesetzt. Um jedoch die stetig zunehmende Nachfrage nach höheren Bandbreiten weiterhin erfüllen zu können, wurde eine Weiterentwicklung der herkömmlichen WANs zu hybriden WANs vorgenommen, bei welchen die Vorteile der MPLS-Technologie mit denen von VPNs kombiniert werden.

## Aufbau von MPLS-Paketen

Grundsätzlich gibt es bei MPLS zwei verschiedene Möglichkeiten, ein Paket zu labeln. Die eine, zum Beispiel bei IP, sieht einen sogenannten MPLS Shim Header vor, der zwischen dem Layer 2 Header und dem Layer 3 Header eingeschoben wird. Dieser Header wird jedoch meist MPLS Label Stack (Entry) genannt. Bei verbindungsorientierten Netzen hingegen, wie ATM oder Frame Relay, kann das Label in den Layer 2 Header mit eingefügt werden; es existiert dann kein gesonderter MPLS Label Stack Entry.

### MPLS Label Stack Entry

Der MPLS Label Stack Entry ist kein Header im eigentlichen Sinne; das Wort Shim drückt aus, wie kurz er ist. Er hat eine Länge von 4 Byte (32 Bit), erzeugt also wenig Overhead und kann darüber hinaus sehr schnell verarbeitet werden. Das Herzstück des MPLS Label Stack Entrys ist das MPLS-Label. Das Label bestimmt insbesondere, über welchen Pfad (LSP, Label Switched Path) das Paket durch das MPLS-Netz geleitet werden soll.
Mit den 32 Bit des MPLS Label Stack Entrys werden vier Zusatzinformationen vermittelt:
* Label (MPLS Label; 20 Bit): Kenn-Informationen eines LSPs (vergleichbar einer Telefon-Rufnummer). Es ist wichtig zu verstehen, dass dieses Label nur eine lokale Gültigkeit besitzt, also nur zwischen zwei Routern auf dem Weg eines LSPs verwendet wird und nicht auf dem gesamten Weg vom Ingress- zum Egress- bzw. PHP-Router.
* TC (Traffic Class; 3 Bit): Werden zur Übermittlung von Differentiated Services-Informationen verwendet.
* S (Bottom of Stack; 1 Bit): Definiert, ob es sich bei dem LSP um einen geschachtelten LSP handelt, ob also ein weiterer LSP im LSP transportiert wird. Hierbei gibt das Flag an, ob noch weitere MPLS-Labels folgen, oder ob dieser MPLS Label Stack Entry das letzte Label des Label-Stacks darstellt.
* TTL (Time to Live; 8 Bit): Definiert, wie viele MPLS-Router das Paket noch durchlaufen darf (Limit: 255 Router)

### MPLS-Labelstack

Normalerweise wird jedem Paket genau ein Label zugeordnet. Wenn man allerdings mehrere LSPs ineinander verschachteln will, dann kann man einem MPLS-Paket auch mehrere Label zuordnen. Diese werden dann im sogenannten Label-Stack zusammengefasst:
Deutlich sichtbar ist hier der Gebrauch des Bottom of Stack-Flags. Die Auswertung erfolgt von links nach rechts, nach dem „Bottom of Stack“ folgt direkt der Layer 3 Header.

### Einbettung des MPLS-Labelstacks

Je nachdem, ob ein verschachtelter oder ein einfacher LSP vorliegt, wird ein MPLS-Labelstack – bestehend aus einem oder vielen MPLS Label Stack Entrys – eingeschoben.
| Layer 2 Header (z. B. Ethernet) | MPLS Label Stack / MPLS Label Stack Entry | Layer 3 Header (z. B. IP) | Layer 4 Header (z. B. TCP) | Payload |

## Normen und Standards

* RFC 3031 – MPLS Architecture. (englisch).
* RFC 3032 – MPLS Label Stack Encoding. (englisch).
* RFC 3036 – LDP Specification. (aktualisiert durch RFC 5036, englisch).
* RFC 3212 – CR-LDP Extensions. (englisch).
* RFC 3209 – RSVP-TE. (englisch).
* RFC 3945 – GMPLS Architecture. (englisch).