Julien De Bona
Free Software, Cooking, and Everything


Test d'OLSR

Publié le 2006-03-21.

OLSR est un protocole de routage dynamique.  Le but était de faire fonctionner OLSR et donc d'avoir un premier contact avec ce protocole. Il a été mené par moi et Benoît Barbier, avec pour ordinateurs mon Mini-ITX nommé espresso (Debian Sarge + carte Wifi rt2500), mon iBook nommé grappa (Debian Sid + carte Wifi USB zd1201) et le portable de Benoît nommé pc23 (Debian Sarge + carte Intel ipw2200 [Centrino]). Le test s'est déroulé en Roture.

Installation et configuration d'OLSR

Récupérer olsrd 0.4.10 sur http://www.olsr.org. Ensuite, l'extraire, aller dans le répertoire créé et taper make. On retrouve alors un exécutable olsrd, que l'on peut directement lancer, ce qui suffit pour les tests. On peut alors créer un fichier de configuration (voir plus bas) et lancer le service: ./olsrd -f olsrd.conf. Pour conserver les messages tout en les consultant en direct, on peut par exemple utiliser tee: ./olsrd -f olsrd.conf 2>&1 | tee fichier.log

Espresso

Le Mini-ITX était connecté à Internet et faisait tourner un serveur OpenVPN donnant accès à Internet et bien sûr olsrd avec le fichier de configuration suivant, où on demande un max de logs et où on fait tourner le service sur eth2:

DebugLevel 9
Interface "eth2" {
}

L'adresse IP d'espresso est 192.168.129.1/24.

Pc23

La configuration de pc23 est similaire, mais il ne fait tourner qu'olsr. Le fichier de configuration est semblable à celui d'espresso. Son adresse IP est 192.168.129.142/24.

Grappa

Grappa fait tourner olsr, mais sur wlan0 au lieu d'eth0 comme sur les autres. Il fait aussi tourner un client OpenVPN créant un tunnel avec Espresso. Ce tunnel permet d'avoir un accès à Internet. Son adresse IP est 192.168.129.141/24. Le tunnel est une connexion point à point dont les extrémités sont 192.168.1.1 (espresso) et 192.168.1.2 (grappa). La table de routage de grappa ressemble donc à ceci:

julien@grappa:~$ /sbin/route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.1.1     0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.129.0   0.0.0.0         255.255.255.0   U     0      0        0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 tun0

Le test

Le test consiste à positionner les ordinateurs différemment l'un par rapport à l'autre (à portée/hors portée) et à réaliser des pings. Un autre test est le test de l'accès à Internet via le VPN depuis grappa.

Le cas simple

Il s'agit de faire des pings des ordinateurs en 1 hop (lien direct). Rien à dire, sinon que ça marche. En examinant la table de routage, on voit des routes directes pour les ordinateurs à portée.

Deux hops

On place grappa hors de vue d'espresso (pas de ping), puis on place pc23 entre les deux, en lien direct avec chacun d'eux (ping direct). De là, grappa peut pinger espresso, et peut surfer sur Internet gràce au VPN. Sur espresso, on peut voir que pc23 est mentionné comme passerelle pour accéder à grappa.

Exemple de session

Voici quelques extraits du journal d'olsrd sur grappa lors de cette session de tests.

Grappa voit espresso mais pas pc23

**RECALCULATING MPR**
Two hop neighbors: 0
************** TABLES ****************
Routing table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
192.168.129.1   192.168.129.1   1       wlan0
Old table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
**************************************
Updating kernel routes...
(ioctl)Adding route with metric 1 to 192.168.129.1/255.255.255.255 via 192.168.129.1/wlan0.
Updating kernel HNA routes...
HNA table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
mid set: 17:00:58.542009
DUP TABLE:
#### Grappa voit pc23 directement et espresso par l'intermédiaire de pc23
**RECALCULATING MPR**
Two hop neighbors: 1
Setting 192.168.129.142 as MPR
************** TABLES ****************
Routing table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
192.168.129.1   192.168.129.142 2       wlan0
192.168.129.142 192.168.129.142 1       wlan0
Old table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
192.168.129.1   192.168.129.1   1       wlan0
192.168.129.142 192.168.129.142 1       wlan0
**************************************
Updating kernel routes...
(ioctl)Deleting route with metric 1 to 192.168.129.1/255.255.255.255 via 192.168.129.1/wlan0.
(ioctl)Adding route with metric 2 to 192.168.129.1/255.255.255.255 via 192.168.129.142/wlan0.
Updating kernel HNA routes...
HNA table:
ROUTING TABLE
DESTINATION     NEXT HOP        HOPCNT  INTERFACE
mid set: 17:04:48.220986
DUP TABLE:
--- 17:04:48.22 ------------------------------------------------- HNA SET
IP net          netmask         GW IP
--- 17:04:48.22 ---------------------------------------------------- LINKS
IP address       hyst   LQ     lost   total  NLQ    ETX
192.168.129.142  1.000  0.000  0      0      0.000  0.00
192.168.129.1    0.250  0.000  0      0      0.000  0.00
--- 17:04:48.22 ------------------------------------------------ NEIGHBORS
IP address       LQ     NLQ    SYM   MPR   MPRS  will
192.168.129.1    0.000  0.000  NO    NO    NO    3
192.168.129.142  0.000  0.000  YES   YES   NO    3
--- 17:04:48.22 ------------------------------------------------- TOPOLOGY
Source IP addr   Dest IP addr     LQ     ILQ    ETX

Petite conclusion

Bien que ce soit lent (mais il est possible qu'espresso n'ait pas émis à pleine puissance lors du test), le routage dynamique via OLSR a bien fonctionné, et il ne s'applique que sur le réseau pour lequel olsrd est configuré, ce qui permet de conserver d'autres routes pour accéder à d'autres rées réseaux (VPN, Internet).


tags: linux, reseau

Quelques tags ...