Nous allons implémenter une station passive, qui écoutera le port UDP 520 (utilisation de la bibliothèque pcap), et maintiendra à jour une table de routage à l'aide des informations ainsi recueillies. Cette implémentation se basera sur le RFC 2453 définissant RIPv2 et sera effectuée sous GNU/Linux.
Nous pourrons nous inspirer du projet NX-Routed qui consiste en une implémentation sous licence GPL de RIPv2 comme décrit dans le RFC 2453 (http://sourceforge.net/projects/nx-routed) dont la version actuelle est la version 0.99.2, ainsi que du démon Unix routed qui implémente divers protocoles de routage, dont RIP, et qui représente le démon « officiel » de la plupart des distributions GNU/Linux, sous licence GPL lui aussi.
Nous devrons donc créer une table de routage et réaliser toutes les fonctions nous permettant d'en faire la mise à jour (peut-être réalisé assez simplement en C++). Pour faciliter le traitement des messages RIP, nous allons utiliser une structure identifiant un paquet RIPv1 ou RIPv2 que nous appliquerons au message capturé pour pouvoir atteindre les différents champs du paquet.
L'utilisation de C++ comme langage de programmation nous permet de réutiliser toute une série d'objets que nous avons déjà à notre disposition pour gérer notamment les adresses et les opérations d'affichage, de conversion ou de comparaison sur celles-ci à travers les classes C++ du projet Libemu (http://asmssm.sourceforge.net), qui propose une implémentation sous licence BSD d'un protocole de découverte de sources et de contrôle dans les réseaux Multicast basés sur le modèle réseau SSM.
Frédéric Beck 2004-02-18