Licence d'Informatique - Projet tutoré

SNMPHP : une plate-forme de supervision

Résumé :

On se propose de réaliser une plate-forme d'administration réseau, articulée autour des protocoles SNMP et RMON, en utilisant des pages dynamiques en PHP (ou n'importe quel autre langage aussi répandu, facile à installer et déployer, et disposant d'une bonne bibliothèque SNMP). Les principaux atouts de cette plate-forme face aux produits commerciaux (HP/OV, TopTools, Tivoli...) seront ses besoins modestes, et sa modularité - le principe étant de fournir des briques de base en PHP, suffisamment simples pour qu'un administrateur réseau puisse constituer facilement son propre tableau de bord de supervision.

Mots clefs :

SNMP - RMON - HPOV - TOPTOOLS - TIVOLI - PHP - APACHE - PYTHON - MIB - TRAP - COMMUNITY - PUBLIC - MANAGER - SUPERVISION - RESEAU

Connaissances requises :

Intérêt

Pour des étudiants intéressés par l'administration réseau, ce projet les place directement au coeur du problème. De plus, savoir utiliser le langage PHP est aujourd'hui un atout non négligeable, permettant de réaliser des sites Web dynamiques (ce qui se monnaye assez bien aujourd'hui), ou bien de construire des petites applications pratiques de façon extrêmement rapide.

Le projet pourra être testé sur des commutateurs HP Procurve (qui disposent de nombreuses fonctionalités avancées : VLAN, QOS...) ; puis, en travaillant avec le CRI, sur le réseau de l'Université.

Enfin, aucune plate-forme open source satisfaisante n'est disponible à ce jour : ce projet est l'occasion d'apporter une contribution utile au mouvement du libre.

Description détaillée :

Les réseaux locaux les plus répandus actuellements sont les réseaux Ethernet. Un réseau Ethernet est constitué de matériels comme des commutateurs (switches), des concentrateurs (hubs) ; qui servent à relier entre eux les équipements (ordinateurs, routeurs, imprimantes...). Certains de ces matériels sont "administrables", c'est-à-dire qu'on peut les interroger à distance, depuis n'importe quel point du réseau, afin de consulter divers compteurs de traffics ou l'état de tel ou tel paramètre du matériel.

Le protocole standard de fait pour l'administration du matériel réseau est SNMP (Simple Network Management Protocol). Il repose sur UDP/IP. On peut résumer SNMP à quelques principes :

Sous Linux, il est possible de se familiariser avec SNMP en installant un démon SNMP (par exemple, le package Debian snmpd), et les outils SNMP snmpwalk, snmpget, snmpput (disponibles dans le package Debian snmp). L'outil tkmib est aussi très pratique, car il permet de se promener graphiquement dans une MIB.

Une station de supervision réseau sert à plusieurs choses : surveiller l'activité et le traffic réseau, détecter les problèmes réseau (saturation, problèmes de matériel...), mais aussi lorsque le matériel le permet, établissement d'une carte du réseau, en incluant non seulement le matériel réseau mais aussi ordinateurs, imprimantes... Parfois, on peut l'utiliser pour réaliser la configuration avancée du matériel (par exemple, la division en VLANs).

Comme les administrateurs réseau ont tous des besoins très différents, aucun programme de supervision n'est vraiment adapté à toutes les situations. Le but de ce projet n'est pas de créer la plate-forme à tout faire, mais plutôt d'en fournir une qui soit très modulaire, de façon à ce qu'il soit très simple d'ajouter des fonctionalités.

C'est pour cette raison qu'elle devra utiliser un système de génération dynamique de pages HTML : il est beaucoup plus courant de savoir écrire des pages HTML que de savoir utiliser une bibliothèque graphique ; et même si la plupart des administrateurs connaissent un toolkit, ce ne sera pas toujours le même ; alors que la plupart d'entre eux connaissent HTML.

Le langage utilisé pourrait être PHP, car il ressemble beaucoup au shell et à Perl, mais il est mieux adapté au Web. Un autre langage peut être choisi (python ou tcl, par exemple), du moment que ce langage dispose d'une bibliothèque SNMP. Une mini-application utilisant PHP et SNMP a déjà été écrite, permettant de visualiser graphiquement sur un switch quels sont les ports occupés et libres, et la vitesse du lien (10 ou 100 mégabits/seconde, half ou full duplex).

Travail à effectuer :

Ce dernier point constitue la clef de voûte de l'application, et nécessite une réflexion dès le début du projet : comment faire dialoguer des modules entre eux, et accessoirement : comment permettre à l'utilisateur de visualiser les différents modules et les connexions possibles entre eux ? Il peut être intéressant de s'inspirer d'outils de développement visuels (Visual XXX, mais surtout les builders qt et gtk, qui utilisent des concepts - signaux et slots - plus avancés).