# Mobile IP

Mobile IP ist ein Netzprotokoll-Standard der Internet Engineering Task Force (IETF), der entworfen wurde, um Benutzern von mobilen Geräten wie Notebooks den Wechsel von einem Rechnernetz in ein anderes zu ermöglichen und dabei gleichzeitig eine feste IP-Adresse zu behalten.
Mobile IP stellt einen effizienten und skalierenden Mechanismus für die Mobilität von Rechnern im Internet bereit. Mit Mobile IP ist es möglich, dass mobile Rechner ihren Zugangspunkt zum Internet ändern und trotzdem ihre (statische) IP-Adresse beibehalten. Dies stellt sicher, dass Verbindungen der Transportschicht bestehen bleiben, während ein Netzwechsel stattfindet.

## Ausgangssituation

IP entstand zu einer Zeit, als mobile Rechner, die jederzeit und an jedem Ort auf das Internet zugreifen würden, kaum denkbar waren. Ein mobiler Rechner kann jedoch ohne Änderung an den ursprünglichen Protokollen keine Daten mehr empfangen, sobald er das Netz verlässt, für das er ursprünglich konfiguriert wurde. In einem Netzwerk auf TCP/IP-Basis hat er wie alle anderen Knoten eine eindeutige IP-Adresse, die die Zugehörigkeit zu einem bestimmten Subnetz erkennen lässt. Verlässt er das bisherige Netz, muss er eine neue topologisch korrekte IP-Adresse erhalten, deren Netzwerkteil zum Adressbereich des neuen Subnetzes gehört. Eine manuelle Änderung der Konfiguration ist für viele Anwender nicht zumutbar, der Protokollstapel sollte selbstständig auf den Wechsel reagieren.
DHCP (Dynamic Host Configuration Protocol) unterstützt die Mobilität, indem es die automatische Konfiguration neu angeschlossener Rechner ermöglicht. Der Ortswechsel resultiert auch dann jedoch in einer Änderung der IP-Adresse. Bietet ein mobiler Rechner selbst Dienste an, wird er dann von seinen Kommunikationspartnern ggf. nicht mehr im Netz gefunden. Zwar ermöglicht DNS (Domain Name System) ein Mapping eines logischen Namens auf eine IP-Adresse, jedoch dauert es eine Weile, bis sich Änderungen im Netz verbreitet haben. Häufige, rasche Änderungen des Mappings wären aufgrund einer Vielzahl nötiger Aktualisierungsnachrichten zu aufwändig.
Zudem verlassen sich Protokolle höherer Schichten auf IP-Adressen, beispielsweise TCP, dessen Verbindungen durch Paare von IP-Adressen und Ports (Sockets), gekennzeichnet sind. Ein Wechsel der IP-Adresse während einer offenen TCP-Verbindung lässt diese zusammenbrechen. Behält ein Knoten aber trotz eines Ortswechsels seine Adresse, so ändert sich der Weg durch das Netz. Das Routing versagt.
Unter Berücksichtigung dieser Probleme sollte IP im Hinblick auf Mobilitätsunterstützung erweitert werden.

## Motivation und Anforderungen

Durch Mobile IP soll erreicht werden, dass ein mobiler Rechner stets über eine permanente IP-Adresse erreichbar ist, auch wenn er sich von Netz zu Netz bewegt. Dies ermöglicht die Aufrechterhaltung von Verbindungen auf höheren Schichten, zum Beispiel TCP. Folgende Anforderungen müssen erfüllt sein:

### Kompatibilität

    Änderungen an der bestehenden Infrastruktur (Knoten, Anwendungen, Protokolle) sollen nicht notwendig sein. Es sollen die gleichen Adressformate und Routingverfahren genutzt werden können.

### Transparenz

    Die Mobilität soll für Schichten oberhalb der Vermittlungsschicht unsichtbar sein, damit sie unverändert arbeiten können. Für TCP bedeutet dies etwa, dass der Rechner, zu dem eine Verbindung besteht, seine IP-Adresse behält.

### Skalierbarkeit

    Die Anzahl mobiler Endgeräte kann sich ändern, ohne dass das Verfahren modifiziert werden muss.

### Effizienz

    Die übertragene Datenmenge soll möglichst gering sein.

### Sicherheit

    Alle Pakete, die dem Einfügen des Mobilrechners in das Netz dienen, müssen authentifiziert werden. Dies umfasst die Integrität der Daten sowie den Beweis ihrer Herkunft.

## Überblick und Grundbegriffe

Die Funktionsweise von Mobile IP kann mit einem Nachsendeauftrag der Post verglichen werden. Ein Empfänger ändert seinen Aufenthaltsort und bekommt eine neue Adresse. Er beauftragt das Postamt an seinem alten Aufenthaltsort mit einem Nachsendeauftrag. Die Empfängeradresse der an ihn gerichteten Briefe wird dort mit der neuen Zieladresse überklebt, so dass die Sendungen an die neue Adresse weitergeleitet werden können. Die Post am neuen Aufenthaltsort kann die Sendung anschließend dem Empfänger zuleiten, ohne dass der Sender vom Umzug des Empfängers weiß.
Analog dazu ermöglicht es Mobile IP, mobile Rechner auch bei Wechsel des Netzes unter einer festen (der "ursprünglichen") Adresse anzusprechen, ohne dass der Kommunikationspartner von seiner Mobilität Kenntnis erlangt. Die laufende Kommunikation kann so aufrechterhalten werden.
Das Subnetz, für das der Mobilrechner ursprünglich konfiguriert wurde, wird als Heimatnetz (Home Network) bezeichnet. Das Teilnetz, in dem sich der Mobilrechner aktuell aufhält, wird als Fremdnetz (Foreign Network) bezeichnet.
Der Heimatagent (Home Agent) ist ein Knoten im Heimatnetz, an dem sich ein Mobilrechner registriert, sofern er sich in einem Fremdnetz befindet. Er soll an den Mobilrechner adressierte Pakete abfangen und an ihn weiterleiten. Wechselt der Mobilrechner in ein Fremdnetz, muss er sich dort bei einem Fremdagenten (Foreign Agent) anmelden. Dieser speichert Informationen über den Mobilrechner, z. B. dessen topologisch korrekte IP-Adresse (Care-of-Adresse). Der Fremdagent kann gleichzeitig als Standardrouter für den Mobilrechner dienen, falls dieser selbst Daten aus dem Fremdnetz hinaus schicken will.
Die IP-Adresse des Mobilrechners im Heimatnetz wird als Heimatadresse (Home Address) bezeichnet. Sie wird auch beim Wechsel in ein anderes Netz beibehalten. Die Care-of-Adresse (CoA, Care-of-Address) ist die topologisch korrekte IP-Adresse, unter der ein Mobilrechner in einem Fremdnetz erreichbar ist. Sie entspricht normalerweise einer IP-Adresse des Fremdagenten, bei dem sich der Mobilrechner zuvor angemeldet hat.
Die gegenüber IP entwickelten Protokollerweiterungen umfassen im Wesentlichen drei Mechanismen:
* Agent Discovery: Ermöglicht es dem Mobilrechner, potenzielle Agenten aufzufinden.
* Registrierung: Ermöglicht es dem Mobilrechner, seinen Heimatagenten über seine Care-of-Adresse zu informieren.
* Tunneling: Vereinbarungen über Weiterleitungsregeln von Paketen.

## Vorbereitende Maßnahmen

Bevor der Datentransport zwischen einem Kommunikationspartner und dem Mobilrechner, der sein Heimatnetz verlassen hat, beginnen kann, sind einige Vorbereitungen notwendig.

### Agent Discovery

Der Mobilrechner muss jederzeit seinen aktuellen Aufenthaltsort sowie potenzielle Agenten ermitteln können. Dieser Informationsprozess wird als Agent Discovery bezeichnet und besteht aus zwei Arten von Meldungen, dem Agent Advertisement und dem Agent Solicitation. Beide verwenden eine Erweiterung von ICMP (Internet Control Message Protocol), einem Protokoll zum Austausch von Fehlermeldungen und Nachrichten für die Steuerung der Datenübertragung zwischen Netzwerkgeräten.
Unter Agent Advertisement versteht man in regelmäßigen Abständen als Broadcast abgesetzte Nachrichten von Heimat- oder Fremdagenten, die ihren Dienst möglichen Mobilrechnern in ihrem Subnetz anbieten. Durch Abhören dieser Nachrichten kann der Mobilrechner feststellen, ob er sich in seinem Heimatnetz oder einem fremden Teilnetz befindet und welcher sein aktueller Fremdagent ist. Er kann außerdem erfahren, ob sich sein Aufenthaltsort seit dem letzten Advertisement verändert hat. Agent Advertisements können folgende Angaben enthalten:
* Ob der Agent als Heim- oder Fremdagent zur Verfügung steht,
* Ob sich der Mobilrechner beim Fremdagenten registrieren muss, auch bei Verwendung einer Co-Located Care-of-Adresse,
* Unterstützte Kapselungsverfahren,
* Die Ankündigung einer verfügbaren Care-of-Adresse (im Falle eines Fremdagenten),
* Die Gültigkeitsdauer einer Registrierung.
Alternativ kann der Mobilrechner ein Agent Solicitation aussenden, eine explizite Aufforderung an mögliche Agenten, ein Agent Advertisement zu schicken. So kann er erzwingen, dass sich potenzielle Agenten sofort zu erkennen geben und damit die Wartezeit verkürzt wird.

### Zuteilung einer Care-of-Adresse

Um im Fremdnetz ansprechbar zu sein, benötigt der Mobilrechner eine Care-of-Adresse, die zum Adressbereich des aktuellen Subnetzes gehört. Sie definiert, wohin letztlich die an den Mobilrechner gerichteten Pakete geschickt werden. Hat sich der Mobilrechner im Fremdnetz bei einem Fremdagenten registriert, so kann ihm nun eine Foreign Agent Care-of-Adresse zugewiesen werden. Dies ist in der Regel eine IP-Adresse des Fremdagenten. Mehrere Mobilrechner können dieselbe Foreign Agent Care-of-Adresse verwenden.
Letztlich besitzt ein Mobilrechner also zwei IP-Adressen, die permanente Heimatadresse und eine temporäre Care-of-Adresse. Möglichen Kommunikationspartnern ist der Mobilrechner nur unter seiner Heimatadresse bekannt.

### Registrierung des Mobilrechners im Heimatnetz

Nachdem der Mobilrechner eine Care-of-Adresse erhalten hat, kann der aktive Fremdagent eine Registrierungsanforderung an den Heimatagenten weiterleiten, um diesen über den neuen Aufenthaltsort des Mobilrechners zu informieren. Dies ist notwendig, damit Pakete korrekt an ihn weitergeleitet werden können. Die Registrierungsanforderung enthält unter anderem die Heimatadresse des Mobilrechners, die IP-Adresse des Heimatagenten sowie die Care-of-Adresse als Endpunkt des Tunnels. Außerdem wird das Tunneling-Verfahren angegeben, über das der Datentransport zwischen Heimat- und Fremdagent laufen soll, sowie Parameter für die Authentifizierung.
Der Heimatagent sichert diese Informationen in einer Registrierungstabelle (Binding Table) und kann damit jeden Mobilrechner erreichen, der sich bei ihm registriert hat. Anschließend schickt der Heimatagent eine Antwort an den Fremdagenten zurück, der sie an den Mobilrechner weiterleitet. Kehrt ein Mobilrechner später in sein Heimatnetz zurück, meldet er sich nach einem Agent Discovery direkt beim Heimatagenten ab und empfängt selbst wieder die für ihn bestimmten Pakete. Es ist keine Unterstützung durch Mobile IP mehr nötig.

## Datentransfer

Nach Abschluss der vorbereitenden Maßnahmen kann der Datentransfer mittels Mobile IP beginnen.

### Übertragung vom Sender in das Heimatnetz

Der Sender kann sich entweder innerhalb oder außerhalb des Heimatnetzes des Mobilrechners aufhalten. Natürlich kennt er nur die Heimatadresse des Mobilrechners, nicht dessen aktuelle Care-of-Adresse. Möchte er Daten an den Mobilrechner senden, so trägt er dessen Heimatadresse als Zieladresse ein, seine eigene Adresse als Quelladresse. Das Paket gelangt durch die gewöhnlichen IP-Routingverfahren zu dem Router, der für das Heimatnetz zuständig ist und damit schließlich immer zuerst in das Heimatnetz. Dies ist möglich, da die Heimatadresse logisch zu dem Netz gehört, mit dem der Heimatagent verbunden ist.

### Übertragung vom Heimatagenten zum Mobilrechner

Der Heimatagent fängt an den Mobilrechner gerichtete IP-Pakete stellvertretend ab. Dazu gibt er sich durch Proxy ARP als der Mobilrechner aus. Er gibt in der ARP-Nachricht zwar die IP-Adresse des Mobilrechners an, jedoch seine eigene MAC-Adresse. Anstatt das abgefangene Paket nun zu einem Knoten weiterzuleiten, der sich physisch im Heimatnetz befindet, wird das Paket in Richtung des Fremdagenten „umgeleitet“ (Tunneling). Für die Weiterleitung ist Kapselung notwendig. Hierunter wird allgemein verstanden, dass ein empfangenes Paket zum Nutzdatenteil eines neuen Paketes wird, dem ein neuer, äußerer Header vorangestellt wird. Der umgekehrte Fall wird als Entkapselung bezeichnet. Beide Mechanismen finden normalerweise Anwendung, wenn Datenpakete an darunter- bzw. darüber liegende Schichten des Schichtenmodells übergeben werden. In Mobile IP erfolgt dies jedoch innerhalb der gleichen Protokollschicht.
Dem empfangenen IP-Paket wird ein äußerer Header vorangestellt. Header und Nutzdaten des empfangenen Paketes werden zur Nutzlast des neuen Paketes. Die Router betrachten nur die IP-Adressen im äußeren Header. Der Heimatagent sucht in seiner Registrierungstabelle einen Eintrag für die im Paket angegebene Zieladresse (Heimatadresse) und liest die korrespondierende Care-Of-Adresse aus. Diese wird nun im äußeren Header als Zieladresse eingetragen, die Adresse des Heimatagenten als Quelladresse. Einzige Änderung am inneren Header ist die Reduzierung der Lebensdauer des Paketes (TTL, Time to Live) um 1. Aus Sicht des Originalpaketes weist so der gesamte Tunnel, unabhängig von der Anzahl der tatsächlich durchquerten Router, eine Länge von 1 auf. So kann sich der Mobilrechner so verhalten, als wäre er direkt mit dem Heimatnetz verbunden, was ebenfalls der Forderung nach Transparenz entspricht. Ein Tunnel ist eine virtuelle Punkt-zu-Punkt-Verbindung zwischen zwei Netzwerkknoten, zwischen denen eine beliebige Anzahl von Subnetzen liegen darf. Die Kapselung ist notwendig, damit die zu sendenden Pakete am Anfangs- und Endpunkt des Tunnels verstanden werden. Das Paket wird schließlich durch den Tunnel vom Heimatagenten (Anfangspunkt) zum Fremdagenten (Endpunkt) befördert. Der Fremdagent als Endpunkt des Tunnels und Inhaber der Care-of-Adresse empfängt das Paket, entfernt den äußeren Header (Entkapselung) und leitet es schließlich über die Verbindungsschicht an die Hardwareadresse des Mobilrechners weiter. Der Fremdagent muss nicht notwendigerweise Eingangsrouter des Fremdnetzes sein, er kann sich auch an einer anderen Stelle innerhalb des Fremdnetzes befinden. Der Mobilrechner ist sich seiner Mobilität insofern nicht bewusst, als er das Paket mit den gleichen Adressangaben empfängt, wie es auch im Heimatnetz der Fall gewesen wäre.

## Der Mobilrechner als Sender

Möchte der Mobilrechner selbst Daten senden, so schickt er sie nicht an den Heimatagenten, sondern direkt an seinen Kommunikationspartner. Er trägt als Quelladresse eines IP-Paketes seine Heimatadresse ein, als Zieladresse die Adresse des Empfängers. Das Paket wird nun über den Fremdagenten – falls dieser als Standardrouter für den Mobilrechner agiert – durch herkömmliches IP-Routing zum Empfänger übertragen.

### Probleme des Standardverfahrens

Stellt man die Empfangs- und Sendevorgänge entsprechend dieser Beschreibung grafisch dar, ergibt sich eine Dreiecksstruktur, weshalb das Verfahren auch als Triangle Routing bezeichnet wird. Der effiziente und auf den ersten Blick sehr simple Mechanismus ist jedoch nicht immer anwendbar.
Router oder Firewalls können aus Sicherheitsgründen Pakete mit verdächtigen IP-Adressen filtern. Dies kann sich sowohl auf Quell- als auch auf Zieladressen beziehen. Die vom Mobilrechner beim Senden als Quelladresse angegebene Heimatadresse ist im Fremdnetz natürlich nicht topologisch korrekt, könnte also durchaus als Fälschung interpretiert werden. Des Weiteren kann ein Ingress-Filter eingeschaltet werden, um Netze vor unerwünschtem Eingangsdatenverkehr zu schützen. Als ungültig können z. B. Pakete aufgefasst werden, deren Quelladresse im eigenen Netz liegt, die aber von außen kommen. So soll verhindert werden, dass sich fremde Rechner als interne Rechner ausgeben. Die in den Paketen des Mobilrechners als Quelladresse angegebene Heimatadresse kann also durchaus als Täuschungsversuch interpretiert werden. Dies kann dazu führen, dass der Mobilrechner keine Pakete in sein eigenes Heimatnetz schicken kann und damit die Funktionsweise von Mobile IP beeinträchtigen. Zur Abhilfe müsste der Filter so konfiguriert werden, dass er Pakete passieren lässt, deren Quelladresse zwar zum eigenen Netz gehört, der Sender aber gleichzeitig als Mobilrechner im Heimatnetz registriert ist.
Davon abgesehen kann auch die Paketlebensdauer ein Problem darstellen. Befindet sich der Mobilrechner im Heimatnetz, so benötigen die Pakete eine bestimmte Lebensdauer, um ihre jeweiligen Empfänger zu erreichen. Wechselt der Mobilrechner nun in ein Fremdnetz, könnten mehr Hops (Sprünge) als zuvor im Heimatnetz benötigt werden, um den Empfänger zu erreichen. Die im Paket angegebene Lebensdauer müsste ggf. erhöht werden, was jedoch der Forderung nach Transparenz widerspricht.

### Reverse Tunneling

Um die erläuterten Probleme zu lösen, wurde Reverse Tunneling als zusätzliches Verfahren entwickelt und in den RFCs 3024 und 3344 beschrieben. Hierbei werden Pakete des Mobilrechners auf dem Rückweg wieder zum Heimatagenten getunnelt. Der Fremdagent kapselt die Pakete des Mobilrechners und trägt im äußeren Header als Quelladresse die Care-of-Adresse ein, als Zieladresse die Adresse des Heimatagenten. Am Ende des Tunnels empfängt der Heimatagent das Paket, entkapselt es und schickt das Originalpaket, das als Zieladresse die Adresse des Kommunikationspartners und als Quelladresse die Heimatadresse enthält, in Richtung der Zieladresse über herkömmliche Routingverfahren an den Kommunikationspartner weiter. Offensichtlich ist dieses Verfahren weniger effizient als das Triangle Routing, kann aber aus den oben genannten Gründen notwendig sein.

## Funktionsweise

Um die Beibehaltung der festen IP-Adresse zu gewährleisten, wird jedes Endgerät von Mobile IP mit zwei Adressen ausgestattet: Die primäre Adresse ist die sog. Home Address, die sekundäre ist die Care-Of-Address (COA).
Wenn der mobile Rechner (Mobile Host) sein Heimatnetz verlässt und sich in einem fremden Netz anmeldet, bekommt er von diesem eine COA zugewiesen, die er seinem Home Agent (einem speziellen Rechner in seinem Heimatnetz) mitteilt. Beim Datenverkehr leitet dieser Home Agent nun ankommende Datenpakete an die COA und damit an den Mobile Host weiter (IP-in-IP-Kapselung).
Will dagegen der mobile Rechner Pakete verschicken, so kann er diese im Normalfall ohne den Umweg über den Home-Agent verschicken, da die normalen IP-Routing-Mechanismen dafür sorgen, dass das Paket sein Ziel erreicht.
Kehrt der mobile Rechner in sein Heimatnetz zurück, meldet er sich beim Foreign-Agent wieder ab, so dass an ihn gerichtete Pakete wieder ohne Umweg über den Home-Agent zugestellt werden.

### ARP im Heimatnetz

Durch die Mitnahme der Home Address durch den mobilen Rechner ergibt sich für Rechner, die sich im Heimatnetz des mobilen Rechners befinden, die Problematik, dass sie diesen nicht mehr erreichen, nachdem er das Heimatnetz verlassen hat. Durch den Einsatz von Gratuitous-ARP und eines ARP-Proxys können die dem Heimatnetz fernen mobilen Nodes jedoch weiterhin erreicht werden. Dazu gibt sich der Home Agent bei ARP-Requests, durch ARP-Proxying, als der fehlende mobile Rechner aus.
Für die Verwaltung des Datenverkehrs gibt es zwei Varianten.

### Co Located Care-Of-Address

Hier übernimmt der Mobile Host das Forward Management. Er benutzt die Home Address (für die höheren Protokollschichten) und die COA (für die niedrigen) dabei gleichzeitig. Die COA wird dem Mobile Host dabei aus einem lokalen IP-Adresspool (z. B. via DHCP) zugewiesen, wie es auch bei einem stationären Host geschehen würde. Deshalb können die lokalen Router nicht unterscheiden, ob der Host ein mobiler oder ein stationärer ist.
Der Vorteil liegt hier darin, dass auf der lokalen Infrastruktur aufgesetzt werden kann und kein Foreign Agent notwendig ist.

### Foreign Agent Care-Of-Address

Hier wird dem Mobile Host die COA von einem speziellen Rechner (Foreign-Agent) des fremden Netzes zugewiesen. Dazu muss sich der Mobile Host zuvor beim Foreign-Agent anmelden (Er bekommt KEINE Adresse aus dem fremden Netz). Der Foreign-Agent übernimmt bei dieser Variante die Weiterleitung der Daten vom HA zum Mobile Host (und bei reverse tunneling auch umgekehrt vom Mobile Host zum HA).
Um sich beim Foreign Agent anzumelden, benötigt der Mobile Host zunächst dessen Adresse.

### Finden des Foreign Agent

* Der Mobile Host sendet, nachdem er im fremden Netz angekommen ist, erst einmal eine ICMP Router Solicitation-Nachricht.
* Der Foreign Agent antwortet mit einer gewöhnlichen ICMP Router Advertisement-Nachricht, die durch eine Mobility Agent Advertisement Extension erweitert ist. In dieser befinden sich alle Informationen, die der Mobile Host benötigt.
* Nun kann sich der Mobile Host mittels der Mobile IP Registrierungsprozedur registrieren lassen.

## Zukunft

Für IPv6 gibt es erweiterte Varianten wie Mobile IPv6, Hierarchical Mobile IPv6 und Fast Mobile IPv6. Dank der erweiterten Routing-Fähigkeiten von IPv6 ist hier u. a. die Möglichkeit hinzugekommen, Pakete ohne Umweg über den Home-Agent direkt an den mobilen Rechner zu schicken. Vor allem werden auch Paketverluste beim Netzwechsel verringert oder vermieden, um auch zeitkritische Anwendungen unterbrechungsfrei verwenden zu können. Mit Proxy Mobile IPv6 (RFC 5213) wird das Mobilitätsmanagement ganz auf Netzseite implementiert, und die verbesserte Mobilität kann damit ohne Änderungen an den Endgeräten allen Nutzern zur Verfügung gestellt werden.