Le 30 /01/2013 Composant de supervision des interfaces réseaux d un OS Encadré par: Réalisé par : M. Sébastien LERICHE - Al Mostafa SAHIM - Amine KARIM
Sommaire Introduction I. Cadre du projet II. Accès aux informations réseaux sous Linux Architecture de Linux Les appels Système IOCTL Les psuedo-fichiers Comparaison des méthodes d accès au informations de débit III. Gestion des événements ( Signaux ) IV. Principe d implémentation V. Démonstration Conclusion 2/22
Introduction Réponse à un besoin nouvelle manière de concevoir des programmes interactifs: ISTAR ou I* Système à base de composants capables de communiquer via des événements 3/22
I. Cadre du projet réaliser un composant utilisable dans ISTAR qui puisse fournir des évènements sur les changements au niveau des interfaces réseau d'un système d'exploitation. Superviser l état des interfaces réseaux Superviser les adresses IP des interfaces Superviser les adresses MAC des interfaces Superviser la stagnation du débit des interfaces Le composant est développé en langage C et notre choix de l OS a porté sur Linux. 4/22
II. Accès aux informations réseaux sous Linux Architecture Linux : http://www.ibm.com/developerworks/linux/library/l-linux-kernel/figure2.jpg 5/22
II. Accès aux informations réseaux sous Linux Les appels Système IOCTL: IOCTL signifiant input-output control Appel système pour des opérations d'entrée/sortie spécifiques à un périphérique Il reçoit un paramètre spécifiant un code-requête à exécuter Il est à noter que la commande ifconfig utilise ioctl pour récupérer les informations ( adresse IP, flags, adresse MAC ) qu elle affiche, on peut facilement vérifier ces appels par la commande $ strace ifconfig 6/22
II. Accès aux informations réseaux sous Linux Les appels Système IOCTL (prototype) : La fonction ioctl, côté utilisateur a ce prototype: int ioctl(int fd, int cmd, char *argp) où : fd = Le descipteur de fichier dans le réseau. cmd = Les commandes de ioctl argp= Les arguments de ioctl 7/22
II. Accès aux informations réseaux sous Linux Les appels Système IOCTL (Arguments ): struct ifreq { char ifr_name[ifnamsiz]; /* nom interface */ union { struct sockaddr ifr_addr; struct sockaddr ifr_dstaddr; struct sockaddr ifr_broadaddr; struct sockaddr ifr_netmask; struct sockaddr ifr_hwaddr; short ifr_flags; int ifr_ifindex; int ifr_metric; int ifr_mtu; struct ifmap ifr_map; char ifr_slave[ifnamsiz]; char ifr_newname[ifnamsiz]; char *ifr_data; }; }; 8/22
II. Accès aux informations réseaux sous Linux Les appels Système IOCTL (commandes) : SIOCGIFNAME Récupérer les noms des interfaces connectés SIOCGIFHWADDR, SIOCSIFHWADDR Récupérer les adresses MAC SIOCGIFCONF Récupérer la liste des adresses IP. 9/22
II. Accès aux informations réseaux sous Linux Les appels Système IOCTL (commandes) : SIOCSIFHWBROADCAST Fixer l'adresse de broadcast du périphérique à partir de ifr_hwaddr. SIOCGIFMTU, SIOCSIFMTU Lire ou écrire le MTU (Maximum Transfer Unit) du périphérique avec ifr_mtu. 10/22
$ strace ifconfig II. Accès aux informations réseaux sous Linux Les pseudo-fichiers 11/22
II. Accès aux informations réseaux sous Linux Contenu du pseudo-fichier /proc/net/dev 12/22
II. Accès aux informations réseaux sous Linux Contenu du pseudo-fichier /sys/class/net/x/statistics /rx_packets 13/22
II. Accès aux informations réseaux sous Linux Comparaison des méthodes d accès au informations de débit critère source /proc/net/dev / sys / class / x / statistics/ Portabilité Facilité d accès à l information Nombre de fichiers en jeu 14/22
III. Gestion des événements ( Signaux ) Utilisation des signaux imposé par le cahier des charges. Emission d un signal : Par le processus : via les commandes kill ou alarm Exemple : alarm(2); Le processus courant recevra le signal SIGALRM dans deux secondes. 15/22
III. Gestion des événements ( Signaux ) Réception et traitement d un signal : Ignorer le signal : signal (Num_Sig, SIG_IGN) Reprendre le traitement par défaut : signal(num_sig, SIG_DFL) Adopter un traitement spécifique : signal(num_sig, fonction) 16/22
IV. Principe d implémentation Fonction de supervision de l état des interfaces T= t lo IP MAC Em1 IP MAC T= t + 1s lo IP MAC Em1 IP MAC Wlan0 IP MAC 17/22
IV. Principe d implémentation Fonction de supervision de la stagnation du débit T= t lo Rx_pakcets Tx_packets Em1 Rx_packets Tx_packets Si Rx_packets (t)==rx_packets(t+1) Et Tx_packets (t)==tx_packets(t+1) T= t + 1s lo Rx_packets Tx_pakctes Em1 Rx_pakctes Tx_packets Débit stagne au niveau de l interface. 18/22
V. Démonstration 19/22
Conclusion Les objectifs atteints Composant de supervision des interfaces réseaux de Linux Le travail restant L intégration du composant dans le projet ISTAR Développement de composant pour d autres OS 20/22
Bibliographie http://www.infres.enst.fr/~dupouy/pdf/bci/3- ESetSignauxBCI-07.pdf http://brunogarcia.chez.com/unix/docs/signaux. html http://linux.die.net/man/7/netdevice http://lii-enac.fr/en/architecture/istar/docs/libscookbook/libs-cookbook.html 21/22
Le 30 /01/2013 Composant de supervision des interfaces réseaux d un OS Encadré par: Réalisé par : M. Sébastien LERICHE - Al Mostafa SAHIM - Amine KARIM 22/22