WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Projet d'une API IPSEC pour la mobilité et le multihoming

( Télécharger le fichier original )
par Xavier FERRER CABALLERO
Supélec - Ingénieur réseau 2008
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

4.3.2 Serveurs Multithread

Pour la création des deux serveurs principaux multithread de l'API_IPsec, on utilise les fonctions de création de threads du standard POSIX, les Pthreads, qu'offre Linux de manière gratuite1. Le serveur server_main_apps fait la connexion avec les applications utilisant par défaut le PORT_APPAPI 5010 et l'adresse IP de l'interface 0 de la machine où il s'exécute. De même manière, le serveur server_main_rems fait la connexion avec les API_IPsec distantes utilisant par défaut le PORT_APIAPI 5011 et la même adresse IP. L'API_IPsec doit bien créer et exécuter les deux serveurs principaux pour

1 La librairie de pthreads a été développée l'année 1995 par l'IEEE, donc pour les utiliser il fallait payer une taxe. Puis, l'année 1998 le MIT a développé les pmpthreads avec presque les mêmes fonctions. Enfin, pour Linux il existe depuis 2003 une version GNU qui est la qu'on utilise dans ce projet.

 

Etude d'IPsec
Projet d'une API_IPSEC pour la Mobilite et le Multihoming

 
 

avoir un fonctionnement correct. Pour cette raison, on a développé un protocole synchronisé qui annule le lancement de l'API_IPsec lorsque l'un ou l'autre des serveurs ne se lance pas. On reviendra plus tard sur ce point.

Un fois les serveurs initialisés, chacun entre dans une boucle oil écoutent et acceptent les connexions. Ils créent un serveur dédié, soit un server_app soit un server_rem, pour servir chaque connexion acceptée et ainsi traiter les messages et réaliser les opérations que lui demandent. Ces serveurs dédiés sont aussi threads qui sont registrés et contrôlés par le thread principal père. Il peut avoir un maximum de MAX_APPLICATIONS threads server_app et de MAX_REMOTES threads server_rem.

Dans la définition de l'API_IPsec on a cité comme une des principales limitations pour cette première version la gestion de données partagées entre les différents threads. La solution drastique prise a été de limiter le nombre maximum d'applications et d'API_IPsec distantes à un.

Figure 21. Exemple du serveur thread principal "app_main_server" et de ses serveurs threads dédiés "server_appi"

Ensuite on détaille dans le schéma suivant le protocole de création de serveurs principaux. En effet, l'API_IPsec doit bien créer les deux serveurs et de manière synchronisé. Pour cela, on s'appuie sur la création d'une variable global « contmain », d'une variable de condition «contmain_cv» et d'une variable mutex « contmain_mutex » (un sémaphore). La première permet d'envoyer signaux entre les différents threads ou de les attendre. La deuxième sert à pouvoir accéder à la variable global ou à la variable de condition de manière unique et sans problèmes de collisions avec les autres threads qui peuvent aussi les utiliser. Alors, le protocole suit l'ordre suivant : une phase d'initialisation, avec l'établissement des sockets d'écoute des deux serveurs ("socket & bind" du server_main_apps, puis du server_main_rems). À chaque étape de l'initialisation, des messages sont remontés grâce aux signaux. Si les connexions s'établissent correctement ils s'autorisent l'un à l'autre d'accéder à la boucle d'acceptations d'applications ou d'API_IPsec distantes. Par contre, au moindre problème de connexion, les deux serveurs principaux sont annulés.

 

Etude d'IPsec
Projet d'une API_IPSEC pour la Mobilite et le Multihoming

 
 

Après la création des serveurs principaux, le processus d'API_IPsec reste dans une boucle oil il attend les signaux soit des serveurs principaux soit des serveurs dédiés. Si un signal reçu est dû à la bonne initialisation des serveurs principaux on l'ignore. Si un signal reçu de part des serveurs dédiés indique RESTART (par exemple à cause d'une synchronisation important due à un changement d'adresse) il faut annuler tous les threads (dans cette première version, maximum on annulera 4 threads : deux serveurs principaux et deux dédiés), obtenir la nouvelle adresse IP et démarrer la création des serveurs principaux. Puis, n'importe quel autre message fait quitter l'API_IPsec, soit un EXIT pour attendre la bonne finalisation des threads, soit un signal inconnu ou de mal initialisation des serveurs principaux qui forcera l'annulation des threads.

Voici le schéma :

Figure 22. Protocole de création et maintenance des serveurs principaux

 

Etude d'IPsec
Projet d'une API_IPSEC pour la Mobilité et le Multihoming

 
 

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le doute est le commencement de la sagesse"   Aristote