# Mobile IP

Mobile IP (o MIP) è un protocollo di comunicazione standard IETF (Internet Engineering Task Force) progettato per consentire agli utenti con dispositivi mobili di spostarsi da una rete all'altra mantenendo un indirizzo IP permanente. Mobile IP per IPv4 è descritto nell'IETF RFC 5944 e le estensioni sono definite nell'IETF RFC 4721. Mobile IPv6, implementazione di mobile IP per la prossima generazione del protocollo Internet, IPv6, è descritta nella RFC 6275.

## Introduzione

Il Mobile IP consente l'instradamento indipendentemente dalla posizione dei datagrammi IP su Internet. Ogni nodo mobile è identificato dal suo indirizzo di casa (home address) indipendentemente dalla sua posizione corrente in Internet. Quando è lontano dalla sua rete domestica, un nodo mobile è associato ad un care-of address che identifica la sua posizione corrente e il suo home address è associato all'endpoint locale di un tunnel al suo home agent. Mobile IP specifica come un nodo mobile si registra con il suo home agent e come l'home agent instradi i datagrammi al nodo mobile attraverso il tunnel.

## Applicazioni

In molte applicazioni (ad es. VPN, VoIP), cambiamenti improvvisi nella connettività di rete e nell'indirizzo IP possono essere causa di problemi. Mobile IP è stato progettato per supportare una connettività Internet continua e priva di interruzioni.
L'IP mobile si trova spesso in ambienti cablati e wireless in cui gli utenti devono spostare i propri dispositivi mobili tra più sottoreti LAN. Esempi di utilizzo sono il roaming tra sistemi wireless sovrapposti, ad esempio IP su DVB, WLAN, WiMAX e BWA.
L'IP mobile non è richiesto nei sistemi cellulari come il 3G, per fornire trasparenza quando gli utenti Internet migrano tra torri cellulari, poiché questi sistemi forniscono i propri meccanismi di trasferimento del livello di collegamento dati e roaming. Tuttavia, viene spesso utilizzato nei sistemi 3G per consentire la mobilità IP senza interruzioni tra diversi domini PDSN (packet data serving node).

## Principi operativi

L'obiettivo del Mobile IP è mantenere la connessione TCP tra un host mobile e un host statico riducendo gli effetti dei cambiamenti di posizione mentre l'host mobile è in movimento, senza dover cambiare il TCP/IP sottostante. Per risolvere il problema, l'RFC consente a una sorta di agente proxy di agire da intermediario tra un host mobile e un correspondent host.
Un nodo mobile ha due indirizzi: un home address permanente e un care-of address (CoA), il quale è associato alla rete che il nodo mobile sta visitando. Due tipi di entità comprendono un'implementazione Mobile IP:
* Un agente domestico (HA - home agent) memorizza le informazioni sui nodi mobili il cui indirizzo di casa permanente si trova nella rete dell'agente domestico. L'HA funge da router sulla rete domestica di un mobile host (MH) che esegue il tunneling dei datagrammi per la consegna all'MH quando è lontano da casa, mantenendo una directory di posizione (LD) per l'MH;
* Un agente esterno (FA - foreign agent) memorizza le informazioni sui nodi mobili che visitano la sua rete. Gli agenti esterni rendono noti anche i care-of address, che vengono utilizzati dal Mobile IP. Se non è presente alcun agente esterno nella rete host, il dispositivo mobile deve occuparsi di ottenere un indirizzo e rendere noto il medesimo con i propri mezzi. Il FA funge da router sulla rete che ospita il MH fornendogli servizi di routing durante la registrazione. Il FA estrae e consegna i datagrammi all'MH che sono stati inoltrati dall'HA dell'MH.
Il cosiddetto Care of Address è un punto terminale di un tunnel verso un MH, per i datagrammi inoltrati al MH mentre è lontano dalla rete domestica.
* Foreign agent care-of address: l'indirizzo di un agente esterno presso il quale MH si registra;
* co-located care-of address: un indirizzo locale ottenuto esternamente che riceve un MH.
Un Mobile Node (MN) è in grado di capire se è connesso alla propria rete domestica o si è spostato su una rete esterna. HA e FA trasmettono la loro presenza su ciascuna rete a cui sono collegati. L'RFC 2002 ha specificato che MN utilizza il rilevamento degli agenti per individuare queste entità. Quando è connesso a una rete esterna, un MN deve determinare il care-of-address dell'agente esterno offerto da ciascun agente esterno sulla rete.
Un nodo che necessita di comunicare con il nodo mobile utilizza l'home address permanente del nodo mobile come indirizzo di destinazione a cui inviare i pacchetti. Poiché l'indirizzo home appartiene logicamente alla rete associata all'home agent, i normali meccanismi di instradamento IP inoltrano questi pacchetti all'home agent. Invece di inoltrare questi pacchetti a una destinazione che si trova fisicamente nella stessa rete dell'agente domestico, l'home agent reindirizza questi pacchetti verso l'indirizzo remoto attraverso un tunnel IP incapsulando il datagramma con una nuova intestazione IP, usando il care-of address del nodo mobile.
Quando funge da trasmettitore, un nodo mobile invia i pacchetti direttamente all'altro nodo di comunicazione, senza l'inoltro all'home agent, utilizzando il suo home address permanente come indirizzo di origine per i pacchetti IP. Questa è nota come modalità di routing triangolare o "ottimizzazione del percorso" (RO). Se necessario, l'agente esterno potrebbe utilizzare il tunneling inverso instradando i pacchetti del nodo mobile all'home agent, che a sua volta li inoltra al nodo in comunicazione. Ciò è necessario nelle reti i cui router gateway verificano che l'indirizzo IP di origine dell'host mobile appartenga alla loro sottorete scartando, in caso contrario, il pacchetto. In Mobile IPv6 (MIPv6), il "tunneling inverso" è il comportamento predefinito, mentre RO è un comportamento opzionale.

## Sviluppo

Alcuni miglioramenti alla tecnica Mobile IP, come Mobile IPv6 e Hierarchical Mobile IPv6 (HMIPv6) definiti in RFC 5380, sono stati apportati per migliorare le comunicazioni mobili in determinate circostanze, rendendo i processi più sicuri ed efficienti.
Il passaggio di handover rapidi per Mobile IPv6 è descritto in IETF RFC 5568.
I ricercatori hanno creato un supporto per la rete mobile senza richiedere alcuna infrastruttura pre-implementata come attualmente richiesto dal MIP. Uno di questi esempi è il protocollo IPMN (Interactive Protocol for Mobile Networking), che promette di supportare la mobilità su una normale rete IP solo dai confini della rete mediante una comunicazione intelligente tra l'IP degli endpoint e il modulo a livello applicativo con una migliore qualità del servizio.
I ricercatori stanno anche lavorando al supporto per la rete mobile tra intere sottoreti con supporto da Mobile IPv6. Un esempio è il Network Mobility (NEMO) Network Mobility Basic Support Protocol del IETF Network Mobility Working Group, che supporta la mobilità per intere reti mobili che si muovono e si collegano a diversi punti di Internet. Il protocollo è un'estensione di Mobile IPv6 e consente la continuità della sessione per ogni nodo della rete mobile durante lo spostamento da rete a rete.

### Modifiche in IPv6 per Mobile IPv6

* Una serie di opzioni di mobilità da includere nei messaggi sulla mobilità
* Una nuova opzione Home address per l'intestazione Opzioni di destinazione
* Una nuova intestazione Routing di tipo 2
* Nuovi messaggi Internet Control Message Protocol per IPv6 (ICMPv6) per scoprire l'insieme di agenti domestici e ottenere il prefisso del collegamento home
* Modifiche ai messaggi e alle opzioni di rilevamento del router e altre opzioni di Neighbor Discovery
* Gli agenti esterni non sono più necessari

## Glossario
### Rete domestica

    La rete domestica di un dispositivo mobile è la rete all'interno della quale il dispositivo riceve il proprio indirizzo IP identificativo (home address).

### Home address

    L'home address di un dispositivo mobile è l'indirizzo IP assegnato al dispositivo all'interno della sua rete domestica.

### Rete esterna

    Una rete esterna è la rete in cui opera un nodo mobile quando è lontano dalla sua rete domestica.

### Care-of address

    Il care-of address di un dispositivo mobile è l'indirizzo IP nativo della rete del dispositivo quando opera in una rete esterna.

### Home agent

    Un home agent è un router sulla rete domestica di un nodo mobile che canalizza i datagrammi per la consegna al nodo mobile quando è lontano da casa. Mantiene le informazioni sulla posizione corrente (indirizzo IP) per il nodo mobile. Viene utilizzato con uno o più agenti esterni.

### Foreign agent

    Un agente esterno è un router che memorizza le informazioni riguardanti i nodi mobili che visitano la sua rete. I foreign agent rendono noti anche indirizzi i care-of address utilizzati da Mobile IP.

### Binding

    Il binding è l'associazione dell'indirizzo domestico con un care-of address.