Mobilité IPv6

squaddinnerladyΛογισμικό & κατασκευή λογ/κού

2 Ιουλ 2012 (πριν από 4 χρόνια και 11 μήνες)

314 εμφανίσεις


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
1

Sommaire


1. Présentation............................................................................................................................2
1.1. L’adressage d’un nœud mobile.......................................................................................2
1.2. Que fait un nœud mobile lorsqu'il quitte le réseau maison ?...........................................2
1.3. Quel est le rôle de l'agent maison ?.................................................................................3
1.4. Comment un paquet arrive à destination d'un nœud mobile ?........................................3
1.5. Comment est mise à jour la table de correspondance ?...................................................3
1.6. Comment un nœud mobile détecte-t-il le changement de zone ?....................................3
1.7. Comment mettre en œuvre la mobilité sous FreeBSD....................................................4
2. Installation..............................................................................................................................5
2.1 Compilation du noyau......................................................................................................5
2.2 Installation des fichiers utilisateurs (userland).................................................................6
2.3 Création et configuration des fichiers IPSEC...................................................................6
3. Configuration..........................................................................................................................7
4. Scénarii de tests......................................................................................................................9
4.1. Le coup du ping...............................................................................................................9
4.2. La pratique.....................................................................................................................10
4.2.1 Autoconfiguration....................................................................................................10
4.2.2 Le Correspondant envoie un ping sur le Mobile Home..........................................17
Conclusion................................................................................................................................23




Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
2


La mobilité sous IPv6 doit permettre à un agent mobile de changer de réseau sans que
ses correspondants ne soient affectés par ce changement. L’intérêt de IPv6 est de proposer des
mécanismes d’auto-configuration mais aussi de permettre la mise en œuvre de la mobilité de
façon transparente pour le réseau visité et le correspondant. Nous nous proposons de tester la
mobilité sous une plateforme FreeBSD à l’aide de l’implantation fournie par le groupe Kame
(www.kame.net).

1. Présentation

Le principe de la mobilité est simple. Un émetteur peut envoyer des paquets au nœud
mobile de deux manières. Soit en utilisant directement l'adresse mobile (i.e. l’adresse courante
du nœud mobile), dans ce cas il est nécessaire de connaître cette adresse mobile qui n’est que
temporaire. Soit en utilisant l'adresse maison : ce sont alors les mécanismes de mobilité IPv6
qui s’occupent de lier adresse maison et temporaire.
L’intérêt évident de la mobilité ipv6 est que le nœud mobile soit toujours accessible
par son adresse maison.

1.1. L’adressage d’un nœud mobile
Un nœud mobile peut être adressé de deux façons :

- soit en utilisant son adresse maison ou "home address". Il s’agit d’une adresse IP
permanente et indépendante de la localisation courante du nœud mobile. Cette adresse maison
est relative au sous-réseau IP maison du nœud mobile (il s’agit du réseau d’appartenance);
- soit en utilisant son adresse mobile ou "care of address". Il s’agit d’une adresse IP
temporaire et dépendante de la localisation courante du nœud mobile. Cette adresse mobile est
relative au sous-réseau IP de raccordement du nœud mobile. Elle peut être obtenue par des
mécanismes d'auto-configuration d'adresse.
Il est clair que mettre en œuvre la mobilité, c’est s’attacher à rendre opérationnel les
cas où le nœud mobile n'est pas raccordé à son réseau maison.

1.2. Que fait un nœud mobile lorsqu'il quitte le réseau maison ?
Quand un nœud mobile quitte le réseau maison pour être rattaché à un réseau étranger
ou "foreign network", il obtient d'abord une adresse mobile et prévient ensuite un routeur du
réseau maison du changement. Ce routeur est appelé agent maison ou "home agent" du nœud
mobile.




Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
3

1.3. Quel est le rôle de l'agent maison ?
L'agent maison doit maintenir pour chaque nœud mobile enregistré une entrée dans
une table de correspondance "home address" vs "care of address". Cette entrée contient
l'adresse mobile, un numéro d'identification pour l'authentification et une durée de vie de la
correspondance.
Communément, cette table est appelée "binding cache" ou "location registry".
Quand un paquet arrive au réseau maison pour le nœud mobile, l'agent maison
intercepte le paquet, consulte sa table et détermine ainsi la localisation du nœud mobile. Le
paquet est ainsi re-routé.

1.4. Comment un paquet arrive à destination d'un nœud mobile ?
L'émetteur connaît l'adresse maison du nœud mobile. Il émet son paquet à cette
adresse. L'agent maison intercepte ce paquet et le re-route vers le nœud mobile. Le nœud
mobile s'aperçoit alors que le nœud n'a pas été envoyé directement par l'émetteur et lui envoie
un paquet de mise à jour de sa table de correspondance. L'émetteur connaît ainsi l'adresse
mobile et l'utilisera pour ses prochains paquets.

1.5. Comment est mise à jour la table de correspondance ?
La table de correspondance ou "binding cache" est mise à jour à la réception de
messages de contrôle de mobilité. Ces messages sont échangés entre le nœud mobile et les
nœuds pouvant gérer cette mobilité (le "home agent").
A cette étape, il est important que les messages soient authentifiés car sinon il est
facile d'intercepter les communications en se basant sur les mécanismes de re-routage de
l'agent maison.

1.6. Comment un nœud mobile détecte-t-il le changement de zone ?
Un nœud mobile détecte un changement de zone lorsqu'il reçoit un message du routeur
où la partie adresse du réseau ne correspond pas à ce qu'il a dans son adresse mobile. Il doit
alors obtenir une nouvelle adresse mobile et prévenir l'agent maison ainsi que les nœuds
correspondants. Durant cette opération de mise à jour, il continue de recevoir les paquets à
son ancienne adresse mobile.






Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
4

1.7. Comment mettre en œuvre la mobilité sous FreeBSD

Kame project met à disposition une implantation de la mobilité pour les distributions
BSD sous IPv6. Cette implantation (SNAP kit) est en cours de développement et de nouvelles
versions sortent chaque mois. Nous désirons vérifier s’il est possible de mettre en œuvre la
mobilité IPv6 sous FreeBSD-4.7.

Nous récupérons sur le site www.kame.net le dernier SNAP kit :
 kame-20030224-freebsd47-snap.tgz

Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
5

2. Installation

Nous choisissons de mettre la distribution dans le répertoire /root mais cela n’a aucune
importance.

 Décompression des fichiers dans /root :
>cd /root
>gzip –d kame-20030224-freebsd47-snap.tgz
>tar –xvf kame-20030224-freebsd47-snap.tar

On obtient alors un répertoire kame/
>cd kame

 Création de l’arbre de liens. En effet, suivant les distributions BSD, les arborescences
des fichiers système et des librairies sont différentes. Comme d’après le fichier
VERSION le symbole de notre distribution freeBSD-4.7 est freebsd4 nous créons
l’arbre de liens :

>make TARGET=freebsd4 prepare

Rem : cette étape est indispensable sans quoi aucune compilation n’est possible.

2.1 Compilation du noyau

On suit les instructions su fichier INSTALL. Après avoir sauvegardé son propre noyau on
peut en générer un nouveau.

 Sauvegarde du noyau
>cp /kernel /kernel.previous
>cd /usr
>mkdir include.clean
>cp include/* include.clean/.

 Génération du nouveau noyau
>cd kame/freebsd4/sys/i386/conf
>cp GENERIC.KAME CONFIGFILE
>emacs CONFIGFILE
Ajouter les lignes concernant la mobilité :
o options MIP6
o options MIP6_DEBUG
o pseudo-device hif 1
o options NEW_STRUCT_ROUTE

>cd ../../compile/CONFIGFILE



Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
6

 Compilation et mise en place du noyau
>make depend
>make
>make install


2.2 Installation des fichiers utilisateurs (userland)

>cd /kame/freebsd4
>make includes
>make install-includes
>make
>make install
>fastboot



2.3 Création et configuration des fichiers IPSEC

 Création des fichiers
>mkdir /usr/local/v6/etc/mobileip6
>mkdir /usr/local/v6/etc/mobileip6/mobile_node_0
>cd /usr/local/v6/etc/mobileip6/mobile_node_node_0

 Config file :
mobile_node=2001:660:304:248:2e0:18ff:fec7:b777
home_agent=2001:660:304:248:2d0:b7ff:fe26:3792
transport_spi_mn_to_ha=2000
transport_spi_ha_to_mn=2001
transport_protocol=esp
transport_algorithm=blowfish-cbc
transport_secret="THIS_IS_MY_SECRET!!!"
tunnel_spi_mn_to_ha=2002
tunnel_spi_ha_to_mn=2003
tunnel_uid_mn_to_ha=2002
tunnel_uid_ha_to_mn=2003
tunnel_algorithm=blowfish-cbc
tunnel_secret="THIS_IS_MY_SECRET!!!"

 Création des fichiers de paramètres
>mip6makeconfig.sh mobile_node_0
o Pour le mobile node
>mip6seccontrol.sh -m installall
o Pour le home agent
>mip6seccontrol.sh -g installall

Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
7


3. Configuration

 On s’est bien sûr configuré en Ipv6 sur les différentes machines :
o Pour le Mobile Node, le Home Agent et le Correspondant :
ipv6_enable="YES"
ipv6_network_interfaces="fxp0"
o Pour le routeur :
ipv6_enable="YES"
ipv6_defaultrouter="NO"
ipv6_static_routes=""
ipv6_gateway_enable="YES"
ipv6_router_enable="YES"
ipv6_router="/usr/sbin/route6d"
ipv6_router_flags=""

ipv6_network_interfaces="fxp0 fxp1 ep0"
ipv6_ifconfig_fxp0="2001:660:304:0248::53 prefixlen 64"
ipv6_ifconfig_fxp1="2001:660:304:0250::133 prefixlen 64"
ipv6_ifconfig_ep0="2001:660:304:0249::67 prefixlen 64"

ipv6_default_interface="fxp0 fxp1 ep0"
rtadvd_enable="YES”
rtadvd_interfaces="fxp0 fxp1 ep0”


 Pour le Home agent , créer rtadvd.conf dans /usr/local/v6/etc et ajouter :
fxp0:\
:maxinterval#60:mininterval#40:


 Pour le Home Agent et le Mobile Node, copier les fichiers
>cp /kame/freebsd/etc/rc /etc
>cp /kame/freebsd/etc/rc.mobileip6 /etc
>cp /kame/freebsd/etc/rc.network6 /etc


 Pour le Home Agent et le Mobile Node, dans le fichier rc.conf on augmente le PATH
PATH=/usr/local/v6/sbin:/usr/local/v6/bin:${PATH}











Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
8

 Démarrer le Home Agent
o Dans /etc/rc.conf
ipv6_mobile_enable="YES"
ipv6_mobile_config_dir="/usr/local/v6/etc/mobileip6"
ipv6_mobile_nodetype="home_agent"
ipv6_mobile_home_link="fxp0"
o On « reboot »
o On réalise en shell les actions suivantes :
ifconfig fxp0 inet6 2001:660:304:248:fdff:ffff:ffff:fffe anycast
sysctl -w net.inet6.ip6.forwarding=1
had fxp0
rtadvd -m fxp0
mip6control -g


 Démarrer le Mobile Node
o On modifie /etc/rc.conf :
ipv6_mobile_enable="YES"
ipv6_mobile_config_dir="/usr/local/v6/etc/mobileip6"
ipv6_mobile_nodetype="mobile_node"
ipv6_mobile_home_prefixes="2001:660:304:248 ::/64"
o On redémarre pour qu’il soit pris en considération
o On réalise en shell les actions suivantes :
mip6control -H 2001:660:304:248:: -P 64
mip6control -m


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
9


4. Scénarii de tests




















Les différentes adresses :
Home Agent : 2001:660:304:248:2d0:b7ff:fe26:3792
Mobile Node : 2001:660:304:248:2d0:b7ff:fe85:ff31
Correspondant : 2001:660:304:250:2d0:b7ff:fe8f:4e5c

Dans un souci de facilité, nous avons compléter le fichier hosts situer dans le répertoire /etc.
Pour "pinger" le home agent : > pingv6 homev6
Pour le Mobile Node : > ping6 mobilev6
Pour le correspondant : > ping6 corv6

4.1. Le coup du ping

Le principe en est simple. On lance un ping qu’on laisse tourner en boucle durant toute
la durée des tests. On lance ce ping depuis le correspondant pour solliciter des Echo Reply du
nœud mobile ou vis-versa.
On commence le test en laissant le nœud mobile dans son réseau mère, puis on
débranche ce nœud. Le ping se bloque alors : le nœud mobile ne reçoit plus rien (il est
déconnecté) et n’envoie donc plus des messages echo ou de réponse.
Après quoi on branche le nœud mobile sur le réseau visité. On constate alors une
remise en route du ping sans aucune intervention de l’utilisateur.
Routeur
Home Agent
Mobile Node
Correspondant
Réseau Mère
Réseau Visité
2001

:660

:304

:249

::

2001

:660

:304

:250

::

2001

:660

:304

:248

::


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
10

4.2. La pratique

4.2.1 Autoconfiguration


Lorsque l'on change le Mobile Node de réseau, il doit être capable de se reconfigurer
et d'obtenir une adresse valable dans son nouvel environnement.

Comme vous avez pu le voir plus haut, nous avons configuré notre réseau pour que
l'obtention d'adresse se fasse de manière automatique.
Ainsi nous obtenons lorsque nous bougeons le nœud :

pc240-07# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.197.55 netmask 0xfffffff0 broadcast 192.168.197.63
inet6 fe80::2e0:18ff:fec7:b777%fxp0 prefixlen 64 scopeid 0x1
inet6 2001:660:304:250:2e0:18ff:fec7:b777 prefixlen 64 detached
autoconf
inet6 2001:660:304:249:2e0:18ff:fec7:b777 prefixlen 64 autoconf
ether 00:e0:18:c7:b7:77
media: Ethernet autoselect (100baseTX)
status: active
fxp1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:d0:b7:85:ff:31
media: Ethernet autoselect (none)
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
hif0: flags=8841<UP,RUNNING,SIMPLEX,MULTICAST> mtu 1280
inet6 2001:660:304:248:2e0:18ff:fec7:b777 prefixlen 128 home
faith0: flags=8002<BROADCAST,MULTICAST> mtu 1500
gif0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 1280
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x9

On remarque sur l'interface fxp0, deux adresses une avec les attributs "detached autoconf" ce
qui signifie qu'elle a obtenu cette adresse dynamiquement mais que cette dernière n'est
actuellement plus valide et la deuxième qui correspond à son adresse actuelle.
On s'aperçoit bien qu'il a changé de réseau.

Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
11

Le mobile envoie régulièrement un message pour prévenir le « home agent » de son adresse.


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
12

Puis il envoie le même message en anycast sur le sous-réseau.



Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
13

Le « home agent » répond ensuite au « mobile node » qu’il a bien pris en compte son
message.



Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
14

En cas de changement de réseau, les messages échangés sont les suivants, ils sont cryptés
comme nous l’avons vu précédemment. Le « mobile node » est maintenant dans le sous
réseau 249.




Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
15

















Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
16





Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
17

4.2.2 Le Correspondant envoie un ping sur le Mobile Home


4.2.2.1. Le Mobile Home est dans son réseau mère

>ping6 mobilev6









































Routeur
Home Agent
Mobile Node
Correspondant
Réseau Mère
Réseau Visité
2001

:660

:304

:249

::

2001

:660

:304

:250

::

2001

:660

:304

:248

::


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
18
























Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
19



Comme on peut le voir, lorsque le « mobile node » est dans son réseau, le message ne passe
pas par le « home agent ».











Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
20

4.2.2.1. Le Mobile Home est dans le réseau visité





















Routeur
Home Agent
Mobile Node
Correspondant
Réseau Mère
Réseau Visité
2001

:660

:304

:249

::

2001

:660

:304

:250

::

2001

:660

:304

:248

::

1

2

3

4


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
21

















Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
22



Ici on voit très clairement que l’on passe par le « home agent », qui ajoute un nouvel entête
pour router vers le « mobile node » , la réponse passe par le « home agent ».


Mobilité IPv6



-------------------------------------------------------------------------------------------------------------
Nicolas Baudinot le 8/03/2003
Nicolas Pagnot
Christophe Mayer
23

Conclusion


Ce projet nous a permis de mieux comprendre et mettre en œuvre la mobilité sous IPv6 sur
une plate-forme FreeBSD. La distribution Kame.net fonctionne bien mais nécessite une
configuration longue du fait d’un manque de précision dans les étapes d’installation. Cette
distribution évolue beaucoup et certains fichiers d’aide ne sont pas en phase avec le code
développé. Ainsi, les newsletters que nous avons lues indiquent des manipulations qui sont
inutiles avec les dernières sources du code. Au contraire, certaines manipulations
fondamentales ne sont pas indiquées alors qu’elles sont fondamentales (par ex : sysctl -
w…forwarding=1, copier le kame/rc.network6 dans /etc). Malgré ces difficultés nous avons
réussi à tester la mobilité avec succès.