**Mobile IPv6** on IPv6-protokollan laajennus, joka mahdollistaa jatkuvan yhteyden liikkuvaan asemaan samalla IP-osoitteella oletusreitittimen vaihtumisesta huolimatta. Mobile IPv6 perustuu täysin IPv6-protokollaan. Itse asiassa mobiilius on vain yksi otsikkokenttä IPv6-otsikossa (Mobility Header). 

Tässä protokollan ominaisuuksien perässä on niiden englanninkieliset nimet selvennykseksi ja väärinkäsitysten välttämiseksi. Suomennokset eivät ole virallisia vaan ne ovat tekijän suomennoksia.

Kuvaus protokollasta
--------------------

Mobile IPv6-verkon komponentit ovat:
*Asiakassolmu* (*mobile node*), *kotireititin* (*home agent*), *vastaanottava solmu* (*correspondent node*). Tukiasemat ja muut langattoman verkon komponentit eivät kuulu protokollaan, koska ne toimivat siirtoyhteyskerroksen tasolla.

Asiakassolmulla on aina olemassa kotiosoite. Kotiosoite on osoite, jonka prefix on asiakassolmun kotiverkon prefix. Kun asiakassolmu on kotiverkossaan, reititetään IP-paketit suoraan asiakassolmulle normaalin menettelyn mukaisesti. Silloin kun asiakassolmu ei ole kotiverkossaan, on sillä yksi tai useampi tilapäisosoite (care-of address). Näillä tilapäisosoitteilla voidaan löytää se verkko, jossa asiakas tietyllä hetkellä on. Reititys asiakkaalle tässä tapauksessa kulkee joko asiakkaan kotireitittimen kautta tunnelointia hyväksi käyttäen tai sitten suoraan asiakkaalle, jos vastaanottavalla solmulla on tiedossa sidos (binding) asiakassolmun kotiosoitteen ja tilapäisosoitteen välillä. Tässä tapauksessa reititys asiakassolmun ja vastaanottavan solmun välillä hoidetaan uudella Mobile IPv6-protokollaa varten kehitetyllä tavalla: vastaanottava solmu käyttää uutta reititysotsikkoa ja asiakassolmu kotiosoite-optiota. Vielä Mobile IPv4-protokollassa joutuivat kaikki paketit kulkemaan asiakassolmun kotiagentin kautta, mikä lisää viivettä ja verkon kuormaa. IPv6-protokollan hienous piilee myös siinä, että se on täysin läpinäkyvää ylemmille kerroksille; esimerkiksi kuljetuskerroksella ei ole mitään tietoa käytetystä reititys-otsikosta.

Verkkopalvelut, lähinnä DHCP (DHCPv6) ja DNS, riippuvat verkko-operaattorin toteutuksesta. Kuitenkin Mobile IPv6 mahdollistaa joko tilattoman tai tilallisen osoitteistuksen. Se, miten asiakas hankkii itselleen Internet-reititykseen kelpaavan osoitteen (Global Aggretable Unicast Address), ei liity tähän selvitykseen. Asiakassolmu voi muodostaa osoitteensa joko verkon prefixin avulla osana Neighbour Discovery-protokollaa (ND) tai käyttää DHCPv6-palvelinta. Verkossa tulee myös olla tuki IPv6-protokollan nimipalvelulle, AAAA-tietueille.

Internet-liikenteen mahdollistaminen
------------------------------------

Kuten alussa todettiin, langattomien verkkojen päätarkoitus on palvella mobiilia asiakasta. Mobile IPv6-protokolla toteuttaa tämän hienosti.

### Reititystesti (Return routability)

Reititystestillä selvitetään onko asiakassolmun osoitteet (kotiosoite ja väliaikainen osoite) todella Internet-reitityksen saavutettavissa. Asian toteamiseksi käytetään neljää sanomaa seuraavassa järjestyksessä:

1. *Home Test Init:* Asiakassolmu lähettää sanoman kotireitittimensä kautta. Sanoma sisältää *evästeen* (*cookie*), jonka vastaanottava solmu palauttaa. Näin asiakassolmu tietää keskustelevansa oikean solmun kanssa.
2. *Care-Of Test Init:* Asiakassolmu lähettää sanoman suoraan vastaanottavalle solmulle. Tämäkin sanoma sisältää evästeen.

Menettelyllä vastaanottava solmu on saanut tietää asiakassolmun käyttämät osoitteet.

Home Test: Vastaanottava solmu lähettää sanoman asiakassolmun kotireitittimen kautta asiakkaalle. Sanoma sisältää sekä asiakkaan evästeen että avainarvon. Sanoman kohdalla täytyy huomata, että asiakassolmun ja kotireitittimen välillä tulee olla sidos, jotta kotireititin osaa kaapata sanoman ja tunneloida sen asiakkaalle.

Care-Of Test: Vastaanottaja lähettää sanoman suoraan asiakassolmulle. Sanoma sisältää asiakkaan evästeen ja avainarvon.

Vastaanottaja toteaa testin läpimenon CoT-sanoman jälkeen, kun asiakassolmu lähettää sidospäivitys-sanoman (Binding Update) vastaanottajalle. Tämä sanoma sisältää HoT- ja CoT-sanomien sisältämät avainarvot. Vasta saatuaan vahvistuksen päivitys-sanomalla vastaanottaja luo sidoksen asiakassolmun kotiosoitteen ja väliaikaisen osoitteen välille.

### Uusi Reititysotsikko (Type 2 Routing Header)

Uudella reititysotsikolla mahdollistetaan reitityksen optimointi ja läpinäkyvyys sovelluskerroksille. Tällöin asiakassolmun väliaikainen osoite on IPv6-paketin kohdeosoitteena ja kotiosoite reititysotsikossa. Paketin saapuessa asiakkaalle, purkaa se reititysotsikon ja käyttää sitä lopullisena kohdeosoitteena paketille.

Tyypin kaksi reititysotsikko eroaa IPv6-spesifikaation mukaisesta reititysotsikosta siinä, että siihen voidaan liittää vain yksi IPv6-osoite (asiakassolmun kotiosoite).

### Kotiosoiteoptio (Home Address Option)

Kotiosoiteoptio lisätään kohdeoption (Destination Option) laajennuskenttään (Extension Header). Se mahdollistaa vastaanottavan solmun sovelluskerrokselle läpinäkyvän reitityksen samalla tavalla kuin reititysotsikko asiakassolmulle. Asiakassolmu käyttää optiota informoidakseen vastaanottajaa kotiosoitteestaan. Vastaanottava solmu käsittelee jokaisen option erikseen. Se ei luo uutta sidosta option perusteella eikä se saa muuttaa sidostauluaan.

### Sidoksista

Sidosten avulla mahdollistetaan asiakassolmun liikkuminen eri verkkojen välillä. Sidosten avulla myös mahdollistetaan Internet-reititys asiakassolmun ja vastaanottavan solmun välillä. Solmut säilyttävät sidokset muistissaan niin kauan kuin ne ovat voimassa. Sidoksilla on elinaika, joka voidaan uudistaa. Sidokset muodostetaan aina asiakassolmun kotiosoitteen ja väliaikaisen osoitteen välille. Asiakassolmu tiedottaa väliaikaisesta osoitteestaan muita solmuja sidospäivitys–sanomalla (Binding Update). Kotireitittimen on vastattava sanomaan sidoshyväksyntä–sanomalla (Binding Acknowledgment), muita solmuja ei velvoiteta vastaamaan asiakassolmulle.

Protokolla sisältää myös sidospyyntö–sanoman (Binding request). Tällä sanomalla vastaanottava solmu voi uudistaa sidoksensa asiakassolmun kanssa, vaikka sidos olisikin jo poistunut sen muistista; kun sidosta ei ole, kaikki data reititetään asiakassolmun kotireitittimen kautta. Mikäli asiakassolmu haluaa säilyttää sidoksen vastaanottavan solmun kanssa, käynnistää se reititystesti-prosessin. Jos asiakassolmu ei tarvitse sidosta enää, hylkää se vastaanottavan solmun sidospyyntö–sanoman.

Asiakassolmun käynnistyessä valitsee se kotireitittimen ND-protokollan mukaisesti. Verkkokerroksen hand-overin tapahtuessa valitsee se samalla menetelmällä oletusreitittimensä. Tässä täytyy huomata, että tällöin kotireititin säilyy koko ajan samana. Tällöin on asiakassolmun informoitava myös kotireititintään uudesta väliaikaisesta osoitteesta.

Solmun saadessa sidospäivitys –sanoman tulee sen tarkastaa onko jo sen muistissa olemassa rivi asiakassolmun kotiosoitteelle. Jos on, on riviä päivitettävä. Jos vastaavaa riviä ei löydy, on solmun lisättävä asiakkaan sidos muistiinsa. 

### Liikkuminen verkosta toiseen

Verkkokerroksen handoverin havaitseminen perustuu ND-protokollaan. Sen huomaaminen mahdollisimman nopeasti on elintärkeää mobiileissa verkoissa, mutta toisaalta päivitysprosessi ei myöskään saisi turhaan aktivoitua, koska verkon topologia voi aiheuttaa hetkellisen oletusreitittimen katoamisen tai vaikka datansiirron keskeytymisen. 

Tämä tapa pätee vain verkkokerroksen hand-overin huomaamiseen ja se yleensä huomataan silloin, kun asiakassolmulla on tiedonsiirto menossa. Protokollan täytyy kuitenkin varautua myös siirtoyhteyskerroksen hand-overeihin. Jos tällainen tapahtuu, ei ND-protokolla enää toimi, koska ND toimii verkkokerroksessa. Sen takia solmun tuleekin käyttää kaikki olemassa oleva tieto verkkoyhteytensä tilasta eli huomioida myös siirtoyhteyskerroksen hand-overit.

Asiakassolmun huomatessa hand-overin asiakassolmu suorittaa duplikaattien etsinnän (Duplicate Address Detection) omalle Link-Local –osoitteelleen ja valitsee oletusreitittimen ND-protokollan avulla. Tämän jälkeen asiakas muodostaa uuden väliaikaisen osoitteen ja mainostaa sen kotireitittimelle. Tämän jälkeen päivittää asiakassolmu myös muille vastaanottaville solmuille uuden väliaikaisen osoitteensa.

Ongelmia
--------

MobileIP käyttää kolmioreititystä, eli asiakkaat lähettävät verkoista, joihin ovat siirtyneet, dataa palvelimille vanhoilla IP-osoitteilla. Mikäli uusien verkkojen Internet-operaattorit noudattavat hyvää netikettiä, ne suojaavat Internetin muita asukkaita omien asiakkaidensa hyökkäyksiltä - näihin suojauksiin kuuluu asiakkaiden liikenteen suodattaminen niin, että asiakkaat saavat liikennöidä vain omalla osoitteellaan. Suunnitteluperiaatteiltaan MobileIP:ssä asiakas vain "väärentää" IP-osoitteensa, koska se ei pane nykyistä IP-osoitettaan paketteihin vaan vanhansa. Tätä paikkaamaan MobileIP:hen on kehitetty reverse tunneling (RFC 3024).

Muita vaihtoehtoja
------------------

* HIP - Host Identity Payload
* Dynaaminen DNS
* 2. kerroksen liikkuvuusratkaisut: GPRS, WLAN IAPP

Standardit
----------

* RFC 6275 - Mobility Support in IPv6

Aiheesta muualla
----------------

* Lars Strand: Linux Mobile IPv6 HOWTO (Mobile IPv6 käyttö Linuxissa) *tldp.org*.  20.4.2004.  (englanniksi)