Conception et implémentation d`un nœud DiffServ actif
Transcription
Conception et implémentation d`un nœud DiffServ actif
Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 UNIVERSITE LIBANAISE UNIVERSITE SAINT-JOSEPH (Faculté de Génie) (Faculté d'Ingénierie) Sous l'égide de l'Agence Universitaire de la Francophonie AUF Diplôme d'Etudes Approfondies Réseaux de télécommunications « Conception et implémentation d’un nœud DiffServ actif » Par Rima TFAILY Encadré par : MM. Yacine GHAMRI Nadjib ACHIR Guy PUJOLLE Soutenance le 19 décembre 2001 devant le jury composé de MM. Samir Tohmé Wajdi Najem Imad Mougharbel Mahmoud Doughan Maroun Chamoun Nicolas Rouhana 1 Président Membre Membre Membre Membre Membre Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Dédicace A ma famille, mon fiancé Ali et mes amis Aux martyrs, aux victimes du terrorisme et de l’injustice Aux prisonniers de guère en Palestine occupée Aux enfants handicapés par les mines A mon pays le Liban ET Pour une vie juste, sans racisme, sans gourmand et sans haine Je dédie ce travail modeste 2 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Remerciements Je remercie tout d’abord mes encadreurs exceptionnels Yacine Ghamri Doudane et Nadjib Achir pour leur encouragement et leurs conseils à tout niveau durant la durée de stage. Je voudrais exprimer ma gratitude au prof. Guy Pujolle, Professeur dans le thème réseaux et performance au Lip6, pour m’avoir fait l’honneur de suivre ce travail. Je n’oublie pas Prof. Imad Mougarbel, directeur administratif du DEA, Prof. Samir Tohmé, directeur académique, et mes enseignants à l’université libanaise et à l’université saint Joseph. Enfin, mes remerciements à tous les membres du thème réseau et performance au laboratoire Lip6 qui ont été gentil et coopératifs. 3 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Résumé : ....................................................................................................8 Chapitre I ................................................................................................11 Introduction ............................................................................................................................ 11 Chapitre II ...............................................................................................13 Le modèle DiffServ.............................................................................................................. 13 I. Introduction ................................................................................................................... 13 II. Objectifs de DiffServ : .................................................................................................. 14 III. Les principes de base : .............................................................................................. 14 IV. Définition du champ DSCP :..................................................................................... 15 V. Les règles d’applications du champ DS : ...................................................................... 15 VI. Le comportement par saut (PHB : Per Hop Behaviour) : ......................................... 15 VI.1 Le service Expedited Forwarding (EF): ................................................................ 15 VI.1.a. Définition: ..................................................................................................... 15 VI.1.b. La description de l’EF PHB : (NB : l’IETF ne spécifie pas les PHBS)........ 16 VI.1.c. Les exigences du service EF: ........................................................................ 16 VI.2 Le service Assured Forwarding (AF):................................................................... 16 VI.2.a. Définition et description du service AF : ...................................................... 16 VI.2.b. Les règles d’application :.............................................................................. 17 VI.2.c. Un PHB par DEFAULT (Best-EFFORT) : ................................................... 18 VII. Le modèle Architectural de DiffServ : ...................................................................... 18 VII.1. Le domaine DS ou « Differentiated Services Domain »:.................................. 18 VII.2. La région DS ou « Differentiated Services Region »:....................................... 18 VII.3. Les TCBs des routeurs de DiffServ : ................................................................ 19 VII.4. Classification et Conditionnement de trafic :.................................................... 21 VII.4.a. « Classifiers » :............................................................................................. 21 VII.4.b. « Conditionners » : ....................................................................................... 21 VII.4.c. « Meter » :................................................................................................. 22 VII.4.d. « Marker » : .............................................................................................. 22 VII.4.e. « Shaper » : ............................................................................................... 22 VII.4.f. « Droppers » : ............................................................................................ 22 VII.4.g. Profils de trafic :........................................................................................... 23 VIII. Complémentarité et grandes tendances:.................................................................... 23 IX. Conclusion :............................................................................................................... 24 Chapitre III..............................................................................................26 Le contrôle par politique et le protocole COPS ............................................................ 26 (COMMON OPEN POLICY SERVICE PROTOCOL) ....................................................... 26 I. Le contrôle par politique ............................................................................................... 26 I.1. Introduction: .......................................................................................................... 26 I.2. Le control par politique:........................................................................................ 26 I.2.a. Un exemple de gestion des ressources par politique: ................................... 27 I.2.b. Architecture politique inter –domaine : ........................................................ 28 II. Le Protocole COPS .......................................................................................................... 29 II.1. Définition du COPS: ............................................................................................. 29 II.2. Vue conceptuelle de la pile COPS : ...................................................................... 29 II.3. Les modèles de la gestion par politique « Policy Management Model »:............. 30 II.3.a. Le modèle Outsourcing( COPS-RSVP):........................................................ 30 II.3.a.1. Le rôle du modèle Outsourcing :.......................................................... 30 4 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 II.3.a.2. Les messages RSVP-COPS :................................................................. 32 II.3.b. Le Modèle Provisioning (COPS_PR) : ......................................................... 32 II.3.b.1. Le rôle de COPS-PR :............................................................................ 32 II.3.b.2. Propriétés du COPS-PR:....................................................................... 33 II.3.b.3. Interaction entre PEP et PDP :............................................................. 33 • Dans le cas ou un PEP démarre :................................................................... 34 • Dans les autres cas : ...................................................................................... 34 III. Conclusion :............................................................................................................... 35 Chapitre IV ..............................................................................................37 Réseaux Actifs....................................................................................................................... 37 I. Les architectures et les applications du réseau actif :.................................................... 37 I.1. Introduction : ......................................................................................................... 37 I.2. Les Réseaux Actifs :.............................................................................................. 37 I.3. Les différentes architectures des réseaux actifs .................................................... 38 I.3.a. L’approche par paquet actif : ....................................................................... 38 I.3.a.1. Le projet « Smart paquets » ................................................................... 39 I.3.a.2. L’Option IP active : ................................................................................. 39 I.3.b. L’approche par nœud actif (Programmables) .............................................. 40 I.3.b.1. L’architecture ANTS (Active Node Transport System). ..................... 40 I.3.c. L’approche par paquets et nœuds actifs: ...................................................... 40 I.3.c.1. L'Architecture SwitchWare :.................................................................. 41 I.4. Quelques applications des réseaux actifs : ............................................................ 41 I.4.a. Le caching:.................................................................................................... 41 I.4.b. Le contrôle de congestion : ........................................................................... 42 I.4.c. Le multicast :................................................................................................. 42 I.4.d. La gestion des réseaux : ................................................................................ 42 I.5. La Sécurité et la Sûreté dans les réseaux actifs:.................................................... 43 I.6. Active Network Encapsulation Protocol (ANEP):................................................ 44 I.7. Conclusion............................................................................................................. 45 II. La plate- forme ANTS................................................................................................... 45 II.1. Introduction : ......................................................................................................... 45 II.2. Les composantes de l’architecture : ( protocoles, code groupe et les capsules) : ............ 46 II.3. Format de la capsule :............................................................................................ 47 II.4. Le modèle d’exécution dans les nœuds actifs : ..................................................... 47 II.5. Le protocole de chargement du code : .................................................................. 48 II.6. Prototype d’implémentation :................................................................................ 49 II.6.a. La Classe nœud : ........................................................................................... 50 II.6.b. La Classe Channel : ...................................................................................... 50 II.6.c. La Classe Capsule :....................................................................................... 51 II.6.d. La Classe Application : ................................................................................. 51 II.6.e. Les extensions du nœud actif:........................................................................ 51 II.6.f. La configuration............................................................................................ 52 II.7. Avantage et limites de ANTS................................................................................ 52 III. Conclusion................................................................................................................. 52 Chapitre V ...............................................................................................54 L’architecture ACDN (Actif Control DiffServ Network) .......................................... 54 I. II. Introduction : ................................................................................................................. 54 L’architecture ACDN .................................................................................................... 54 II.1. Fonction de filtrage ............................................................................................... 56 5 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 II.2. Exemple d’application active : Agrégats adaptés dans un segment du réseau (SATA : Segmented Adaptation of Traffic Agregates) .................................................... 57 III. Implémentation sous ANTS :.................................................................................... 58 III.1. Les disciplines pour les routeurs de bordure :................................................... 60 III.2. Les disciplines pour les routeurs de cœur: ........................................................ 60 III.3. Le « design » de programmation :..................................................................... 60 IV. Conclusion:................................................................................................................ 64 Chapitre VI ..............................................................................................65 Conclusion et Perspectives ................................................................................................. 65 Annexe :.................................................................................................66 Contrôle Actif des Réseaux DiffServ .............................................................................. 66 Introduction ............................................................................................................................... 66 DiffServ ..................................................................................................................................... 67 Le contrôle par politiques.......................................................................................................... 69 Les Réseaux Actifs.................................................................................................................... 70 L’architecture ACDN ................................................................................................................ 71 Fonction de filtrage ............................................................................................................... 73 Conclusion & Perspectives........................................................................................................ 74 Bibliographies ........................................................................................................................... 75 LES REFERENCES: ...........................................................................76 6 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Liste des Figures et des Tableaux Figure 1 : Région DS et Domaine DS......................................................................................... 19 Figure 2 : Blocs de conditionnement de trafic pour le : (a) routeur de bordure, (b) routeur de cœur. ................................................................................................................................ 20 Figure 3 : Blocs de conditionnement de trafic pour le routeur de cœur. ............................... 21 Figure 4 : Classifier & conditionner.......................................................................................... 23 Figure 5 : Exemple de réseau IntServ/DiffServ........................................................................ 24 Figure 6 : Hiérarchie conceptuelle de politique........................................................................ 26 Figure 7 : Modèle de l’architecture par politique .................................................................... 27 Figure 8 : Bandwidth Broker ..................................................................................................... 28 Figure 9 : Modèle client/serveur ................................................................................................ 29 Figure 10 : La pile du COPS ...................................................................................................... 30 Figure 11 : Demander et Reporter une Décision...................................................................... 31 Figure 12 : IntServ/DiffServ, RSVP&COPS ............................................................................ 31 Figure 13 : Le modèle COPS Provisioning. .............................................................................. 32 Figure 14 : Un réseau IP actif .................................................................................................... 37 Figure 15 : Approche par paquet actif ...................................................................................... 38 Figure 16 : Architecture du système Smart Packets...................................................................... 39 Figure 17 : Format du champ Option IP Active ...................................................................... 40 Figure 18 : L’approche par nœud actif. .................................................................................... 40 Figure 19 : Format de l’en tête ANEP....................................................................................... 44 Figure 20 : Format du champ Options...................................................................................... 44 Figure 21 : Hiérarchie de la composition de la capsule ........................................................... 46 Figure 22 : Format de la capsule................................................................................................ 47 Figure 23 : Protocole de chargement sur demande de ANTS. ................................................ 48 Figure 24 : Les principales composantes d’ANTS. .................................................................. 50 Figure 25 : Architecture de contrôle des réseaux DiffServ. .................................................... 54 Figure 26 : Architecture ACDN. ................................................................................................ 56 Figure 27 : Mise à jour de la table des FlowID et fonction de filtrage ................................... 57 Figure 28 : Implémentation du DiffServ Actif.......................................................................... 58 Figure 29 : Scénario (1) de différentiation des services. .......................................................... 59 Figure 30 : Scénario (2) de différentiation des services ........................................................... 59 Figure 31 : Placement de QdS dans la plate forme ANTS. ..................................................... 61 Figure 32 : Hiérarchie des classes (a) ........................................................................................ 62 Figure 33 : Hiérarchie des classes (b) ........................................................................................ 62 Figure 34 : Hiérarchie des classes (c) ........................................................................................ 62 Tableau 1 : Classes de AF........................................................................................................... 17 Tableau 2 : Les classes et les méthodes d’ANTS ...................................................................... 49 7 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Résumé : Initialement, l’Internet était un outil pour une petite communauté d’agences et d’organisations, où des services comme le transfert de fichier « FTP », le courrier électronique « SMTP » et les procédures de connexion à distance dominaient. Cependant, avec l’apparition de nouveaux types d’applications multimédia telles que la vidéoconférence, la téléphonie et le commerce électronique, de nouvelles exigences en qualité de services (QdS) ont vus le jour. Deux approches sont actuellement proposées par l’IETF (Internet Engineering Task Force) pour assurer la QdS : L’approche IntServ et l’approche DiffServ qui est l’objet de notre étude. L’approche DiffServ, ou services différentiés, normalisée actuellement dans le groupe de travail DiffServ de l’IETF, permet d’introduire une nouvelle façon de traiter les flux dans le réseau et de partager les ressources de ce dernier. Dans l’architecture à différentiation de service, la bande passante, le taux de perte et le délai de transit des paquets sont influencés par les opérations de conditionnement de trafic lors de l’entrée dans le réseau ainsi que par les modifications apportées au comportement des routeurs de cœur du réseau. Dans ce type de service, la différenciation s’opère au niveau des agrégats plutôt qu’au niveau des flux eux-mêmes et ce afin de pallier les problèmes de mise à l’échelle. En plus des fonctions permettant la prise en compte de la qualité de service (Modèle DiffServ), l’administrateur du réseau et les fournisseurs de services, auront besoins d’une infrastructure de gestion leurs permettant de configurer, contrôler et maintenir le niveau de QdS demandée. Cette infrastructure peut se baser sur des politiques dérivées des critères associés aux applications. L’une des infrastructures les plus intéressantes pour la mise en place de cette gestion est le modèle de contrôle par politiques. Cette infrastructure est un ensemble de protocoles, modèles d’information, et services permettant de traduire les règles administratives sous la forme de traitements différentiés des paquets dans le réseau. Cependant, ces règles administratives sont actuellement introduites de façon manuelle et statique nécessitant souvent une intervention humaine. En effet, l’administrateur du réseau doit avoir une connaissance quasi complète de ce qui va se passer dans son réseau afin de pouvoir gérer et configurer ses différents éléments. Ce qui induit, un manque de dynamicité et de réactivité aux éventuels dysfonctionnements (non-respect des SLAs). Pour pallier à cela, nous proposons une architecture où le contrôle se fera en deux phases (i) un contrôle par applications actives, où des algorithmes de contrôle distribués sont déployés, par l’administrateur du domaine, dans différents nœuds du réseau, et (ii) un contrôle par politiques actives, qui à partir des informations obtenues par les algorithmes de contrôle distribués, entreprend des décisions au niveau du serveur de politique. Le modèle proposé a donc pour but d’introduire un ensemble de fonctionnalités permettant d’automatiser et de distribuer le contrôle des différents nœuds du réseau. Le paradigme des réseaux actifs permettra une introduction rapide et transparente de ces fonctionnalités. Les réseaux actifs représentent une nouvelle approche de conception de services réseaux. En effet, leur but réside en la conception, le développement et l’implémentation de nouvelles architectures de communications permettant la création, la reconfiguration et le déploiement rapide et sûre de fonctionnalités réseaux avancées. Ces fonctionnalités peuvent aussi bien être des services personnalisés, des protocoles dédiés ou des composants de gestion et de contrôle. En effet, la technologie des réseaux actifs peut être très bénéfique dans ce dernier cas où les réseaux 8 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 actifs vont définir une extension du plan de contrôle. L’avantage de cela est que le plan de données pourra continuer à respecter le traditionnel argument de bout en bout. Le modèle ACDN, que nous proposons, est donc composé des éléments suivants : • Application de Contrôle : C’est l’application qui va permettre d’installer dynamiquement et de façon automatique de nouveau TCBs dans le réseau. Cette application offre également la possibilité de configurer (provisionner) dynamiquement les TCB en déclenchant l’envoi d’une décision de configuration par le PDP. • Station d’administration : L’introduction de nouvelles politiques ainsi que des nouveaux algorithmes de contrôle sera réalisée au travers de cette entité. De nouveaux algorithmes de conditionnement de trafic peuvent également être introduit. Cette station aura également pour tache de vérifier la validité et la conformité des politiques introduites dans le policy repository. • Serveurs de codes : Ces serveurs contiendront les différents codes des applications actives ainsi que des algorithmes de conditionnement de trafic qui seront utilisés dans le réseau. A chacun de ces serveurs sera associé un mécanisme d’installation de code permettant le chargement du code et son installation dans les nœuds. • Fonction de filtrage : Les applications actives étant des applications distribuées constituées d’agents communicants dans la plupart des cas, il est donc nécessaire que les nœuds puissent interpeller et rediriger les paquets destinés à ces applications. Cette redirection est réalisée grâce à la fonction de filtrage. Le but final de notre travail étant d’implémenter un nœud DiffServ actif afin de valider l’architecture proposée et ses composantes. Nous avons choisi d’utiliser l’architecture ANTS1 développée au MIT2, et plus précisément la plate-forme ANTS V1.2, écrite en JAVA et développée par le Loria. Cette version permet à ANTS de fonctionner sur IPv6. L’architecture ANTS introduit la notion de capsule : un paquet contenant du byte code java avec des données utilisateur (payload). Les API3s d’ANTS consistent en une Machine Virtuelle Java (JVM4) augmentée par les classes ANTS. Ces classes implémentent les méthodes permettant aux capsules d’être interprétées, décodées puis transmises. Dans le plan d’implémentation, le nœud DiffServ réside entre le niveau IP et l’environnement d’exécution, plus précisément, au niveau de la classe "Channel". La classe "Channel", sera modifiée pour créer plusieurs files d’attente, chacune correspondant à une classe de service donnée. De plus, au lieu d’une discipline de scheduling FIFO, la discipline Priority Queuing (PQ) sera intégré pour servir les différentes files d’attente selon leurs priorités. Les différents algorithmes de classification et les éléments constituants le TCB seront également intégrés dans cette classe. Notre travail fait partie du projet RNRT Amarage où d’autres partenaires du projet utiliserons notre implémentation pour faire passer des flux Multimédia. Pour cela, nous avons 1 Active Node Transport System Massachusetts Institute of Technology 3 Application Programming Interface 4 Java Virtual Machine 2 9 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 spécifié une hiérarchie de classes générique pour intégrer les différents éléments du TCB. De plus, nous avons offert des interfaces entre les composants de l’architecture ANTS/ACDN pour permettre une extensibilité et utilisabilité facile de notre implémentation. Des études complémentaires sont en cours afin d’introduire et de tester différents algorithmes de contrôle distribués. Nous nous intéressons plus particulièrement, aux sondes de métrologies actives et aux algorithmes de provisionning dynamique. Finalement, Un article, soumit à la conférence JDIR’2002 qui se déroulera en mars à Toulouse, France, résume notre travail. Cet article s’intitule : Contrôle Actif des Réseaux DiffServ Mots clefs : DiffServ, ANTS, réseaux actifs, contrôle par politiques, contrôle actif. 10 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre I Introduction Un des plus grands challenges de ces dernières années est la distribution d’applications multimédia à grande échelle en prenant en considération toutes les exigences de celles-ci. De plus, avec l'explosion de l'Internet de nouvelles perspectives ont émergées, principalement l'intégration de ces nouvelles applications. Cette intégration offre beaucoup d'avantages incluant une grande couverture, une grande flexibilité et un coût réduit. Cependant, tel que l'Internet est conçu actuellement, plusieurs problèmes propres ont été identifiés. Principalement le manque ou l’absence de qualité de service (QdS) adéquate à ce type d’applications. De ce fait de nouvelles réflexions sur la manière d’optimiser l’utilisation de ces réseaux ont vu le jour afin de fournir aux applications des services appropriés à leurs exigences. Une des premières solutions proposées par l’IETF, pour remédier à ce manque, est l’approche IntServ. Cette approche permet de garantir une QdS, par flux, sur le chemin qu’il emprunte dans les réseaux. Le principal inconvénient de cette approche est le passage à l’échelle (c à d la croissance du nombre de flux traversant un nœud). Pour palier à cet inconvénient, une autre approche, DiffServ ou différentiation de services, a été proposée par l’IETF. En effet, cette approche résiste mieux au facteur d’échelle puisqu’elle assure la QdS à des agrégats plutôt qu’aux flux de données individuels. Cette agrégation de flux se traduit en un tri s’effectuant aux nœuds de bordure d’un réseau en fonction des critères de QdS propres à chaque flux. Dans les nœuds de cœur du réseau, Les traitements différentiés s’appliqueront sur des agrégats et non plus sur des flux. Ces traitements, effectués dans les nœuds du réseau, sont appelés algorithmes de conditionnement de trafic et sont organisés en blocs appelés TCB (Traffic Conditionning Bloc). En plus des modèles permettant la prise en compte de la qualité de service (IntServ, DiffServ), l’administrateur du réseau et les fournisseurs de services, auront besoins d’une infrastructure de gestion leurs permettant de configurer, contrôler et maintenir le niveau de QdS demandée. Cette infrastructure peut se baser sur des politiques dérivées des critères associés aux applications. L’une des infrastructures les plus intéressantes pour la mise en place de cette gestion est le modèle de contrôle par politiques. Cette infrastructure est un ensemble de protocoles, modèles d’information, et services permettant de traduire les règles administratives sous la forme de traitements différentiés des paquets dans le réseau. Ces règles administratives sont cependant introduites actuellement de façon manuelle et statique. Un utilisateur voulant souscrire à un service (Service Level Agreement, SLA) devra faire parvenir à l’administrateur du réseau ses exigences en terme de QdS. En fonction des différentes demandes de QdS, l’administrateur introduira donc manuellement les règles administratives appropriées. Cependant aucun moyen n’est actuellement offert pour permettre de contrôler la bonne délivrance des SLAs souscrits par les clients, et surtout il n’existe aucun moyen de remédier à des éventuels dysfonctionnements dans le réseau (non-respect des SLAs, congestion à long terme, …). Une multitude d’algorithmes de contrôle distribués sont actuellement proposés par la communauté de recherche afin de pallier à ces éventuels dysfonctionnements. Comme certains de ces algorithmes nécessitent une architecture très flexible, l’utilisation du paradigme des réseaux actifs peut être un moyen d’intégration rapide de ce genre d’algorithmes dans les architectures courantes telles que DiffServ. Pour atteindre cet objectif, nous proposons dans ce rapport une architecture complète de contrôle pour les réseaux DiffServ. Cette architecture permettra : 11 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 D’administrer dynamiquement le réseau en cas de dysfonctionnement aux travers de politiques actives. D’offrir une infrastructure flexible pour l’introduction d’algorithmes de contrôle distribués sous forme d’applications actives. La suite du rapport est organisée de la manière suivante : Le chapitre 2 est dédié à la présentation de l’approche DiffServ. Au chapitre 3, on présentera le protocole COPS et le contrôle par politique. Une présentation des réseaux actifs se fera au chapitre 4. Le chapitre 5 donne la description détaillée de notre architecture de contrôle actif des réseaux DiffServ (ACDN). Par la suite, On présentera les conclusions et les perspectives au chapitre 6. Finalement, un article résumant ce travail est mis en annexe. Cet article est en cours de soumission pour la conférence JDIR’2002 qui se déroulera à Toulouse (France) en MARS 2002. L’article s’intitule : Contrôle Actif des Réseaux DiffServ 12 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre II Le modèle DiffServ I. Introduction Actuellement, La majeure partie des recherches dans le domaine des réseaux consiste à l’étude de l’introduction de la qualité de service dans l’Internet, dominé par un modèle de service de type best-effort. La qualité de service (QdS), qui est un attribut du service, est orientée utilisateur et se mesure à l’aide des variables d’états qui peuvent être directement observées et mesurées à l’endroit où l’utilisateur accède au service. Elle est généralement assimilée à la discrimination des services ; Elle englobe tous les mécanismes permettant de différencier le trafic et de le caractériser par des critères comme: le délai, la gigue, le taux d’erreur, la bande passante ou le débit. En effet, les mauvaises performances de l’Internet best-effort sont dues essentiellement à la quantité de la bande passante disponible (i.e, les congestions allongent les délais, génèrent de la gigue et provoquent la perte de nombreux paquets). Dans la littérature deux différentes approches pour assurer la QdS se distinguent: l’approche Informatique propose le surdimensionnement du réseau, une solution simple et un service unique pour tous, le best-effort. L’approche Télécom [A.12] propose la gestion de la capacité et les ressources existantes, donc une solution complexe nécessitant des mécanismes de traitement différenciés des différents types de trafics. Augmenter la bande passante est nécessaire comme première étape pour répondre aux contraintes requises par les applications pour assurer la QdS demandée, mais le surdimensionnement a toujours un coût. Cette solution ne résout pas entièrement le problème, même si les ressources sont abondantes. L’approche Télécom est donc nécessaire et l’IETF (Internet Engineering Task Force) propose l’utilisation de l’un des deux grands modèles de services suivants : les services intégrés (INTSERV) et les services différenciés (DIFFSERV). Le service DiffServ enrichit le fonctionnement traditionnel de l’Internet, best effort, d’un certain nombre de possibilités correspondantes à des niveaux de service supérieurs. Le service IntServ donne un niveau de service prévisible et non affecté par les états du réseau. Le modèle INTSERV opère au niveau du flot. Il est basé sur l’idée que des mécanismes de réservation de ressources sont nécessaires pour fournir la QoS et que le réseau IntSrev doit être contrôlé et soumis aux mécanismes de contrôle d’admission. Le modèle IntServ a fait apparaître un certain nombre de difficultés. Premièrement, la granularité très fine au niveau des micro-flux implique une charge de routage très forte ainsi que la gestion d’un très grand nombre de contexte et leur maintien dans tous les nœuds du réseau. Deuxièmement, la charge de signalisation peut être extrêmement importante, et croître avec la taille du réseau et du nombre d’utilisateurs connectés. Cette gestion par micro flux est difficile à supporter sur de gros réseaux et constitue un obstacle important à la scalabilité. Par contre, le modèle DiffServ est basé sur une notion d’agrégat. Un agrégat étant le regroupement des flux homogènes. Ces flux sont classifiés, marqués de façon identique et transportés entre deux nœuds adjacents. Le transport des agrégats n’a pas besoin de signalisation de réservation à travers les nœuds mais un comportement par saut (per Hop Behavior). Ce comportement est basé sur la priorité par classe pour répondre à la QdS demandée sachant que l’agrégation des flux offre des services en quelques classes (par Agrégat). Pour offrir de tels services, DiffServ ne suffit pas. Il est nécessaire de le renforcer d’une fonction de contrôle d’admission. Cette fonction s’assure que le réseau pourra bien délivrer un 13 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 service aussi invariable que possible et conforme aux caractéristiques de la charge demandée. Cependant, cette fonction de contrôle d’admission ne devra introduire aucune signalisation/ état par flux au niveau du cœur du réseau. II. Objectifs de DiffServ : Pour l’IETF, L’objectif numéro un de DiffServ, est donc de fournir un moyen de construire des réseaux facilement extensibles, c’est à dire « scalables », sans nécessairement gérer des états flux par flux, ni de la signalisation inter nœuds. Ceci est obtenu au moyen de l’agrégation des flux en classes offrant des services spécifiques par agrégat. Parmi les autres objectifs, il y a : • Traiter une grande variété de types de service et les provisionner de bout en bout ou à l’intérieur d’un domaine particulier. • Découpler le service de l’application qui l’utilise pour éviter la modification au niveau des applications existantes et pour être capable de fournir des mécanismes efficaces de classification, marquage et conditionnement du traffic5. • Etre indépendant de la signalisation. • Utiliser une classification agrégée dans le cœur du réseau et permettre des implémentations simples de la classification des paquets dans les nœuds de cœur du réseau, (BA classifier). • Permettre une interopérabilité raisonnable avec des nœuds non DiffServ. • Faciliter le déploiement du réseau. III. Les principes de base : Les services différenciés peuvent être soit de bout en bout [A.13], ou inter domaine. Ils sont construits en utilisant une combinaison de : - Positionnement de bits dans l’en-tête du paquet IP, au niveau des nœuds de bord. Il s’agit de positionner/marquer la valeur du champ de l’en tête IP appelé Differentiated Services field ou code point (DSCP). - Déterminer comment ces paquets vont être acheminés par les nœuds à l’intérieur du réseau en utilisant le champ DSCP. - Conditionnement des paquets marqués aux bords du réseau, conformément aux exigences ou règles associées à chaque service. Sur le chemin d’acheminement, la différenciation des services est réalisée en associant le champ DSCP contenu dans l’en-tête du paquet IP à un traitement particulier de « forwarding », au niveau de chaque nœud sur le chemin. Ce traitement s’appelle « Per Hop Behavior (PHB) » ou comportement par saut. Les valeurs de champs DSCPs peuvent être choisies dans une collection de valeurs : • • 5 Soit obligatoires. Soit « recommandées ». Qu’on va détailler dans les prochains paragraphes. 14 Conception et implémentation d’un nœud DiffServ actif • DEA Réseaux de Télécommunications 2000-2001 Soit avec des significations purement locales. IV. Définition du champ DSCP : C’est un champ de remplacement de l’en-tête IP nommé champ DiffServ (DS) défini afin de constituer un ensemble étendu du champ TOS de IPv4 [A.13], et du champ « Traffic Class » de Ipv6. Il est utilisé pour désigner son comportement par saut. De plus, il détermine qu’elle traitement d’acheminement subira un paquet. Seulement, six bits du champ DS sont utilisés comme DSCP pour sélectionner le PHB. La structure du champ DS est la suivante : 0 1 2 3 4 5 6 7 CU DSCP La structure du champ DS DSCP: Differentiated Services CodePoint, CU : non utilisés actuellement. V. • • • • Les règles d’applications du champ DS : Un nœud DS doit supporter l’équivalent d’une table de « mapping » configurable des DSCP sur les PHBs [A.13]. Les spécifications des PHBs doivent inclure un DSCP recommandé par défaut. Les opérateurs peuvent choisir d’utiliser différents DSCP pour un même PHB, soit en addition, soit à la place du défaut recommandé. Les paquets reçus avec un DSCP non reconnu devraient être acheminés comme s’ils étaient marqués avec le PHB par défaut (DE), sans changer leurs DSCPs. Ces paquets ne doivent pas entraîner de dysfonctionnement au niveau des nœuds du réseau, Les nœuds peuvent marquer les DSCP pour fournir le service local ou de bout en bout désiré. Les spécifications des classes de services (SLS) aux nœuds de bordure sont l’objet de « Service Level Agreements, SLA» entre fournisseurs et utilisateurs de services. Ces spécifications ne font pas l’objet de standardisations. VI. Le comportement par saut (PHB : Per Hop Behaviour) : En plus des comportements par défaut (BE), comportement Best-Effort, deux autres services sont définis: VI.1 Le service Expedited Forwarding (EF): VI.1.a. Définition: 15 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 EF est défini comme un traitement d’acheminement appliqué à un agrégat DiffServ où son débit en sortie dans un nœud quelconque doit être supérieur ou égal à une valeur configurable [A.6]. Il correspond à un service critique similaire à un lien dédié ou VLL (Virtuel Leasing Line) dans lequel un débit instantané et un délai instantané sont garantis. EF possède une forte priorité dans les nœuds et doit cependant être contrôlé pour que la somme des capacités provienne des différentes sources et passant par un même nœud ne dépasse pas la capacité de la liaison de sortie. Le trafic en excès est rejeté. VI.1.b. La description de l’EF PHB : (NB : l’IETF ne spécifie pas les PHBS) L’EF PHB peut être utilisé pour simuler un lien dédié caractérisé par : 1) un faible taux d’erreur, 2) un temps de traversée faible, 3) Une gigue minimum, 4) un débit garanti, 5) Un service de bout en bout au travers d’un domaine DS. Cependant, la création d’un tel service implique deux prérequis : Premièrement, Il faut configurer les nœuds de façon que l’agrégat considéré ait un débit maximum de départ indépendant de l’état dynamique du nœud (la charge de processing [A.6], l’état des files et des ressources mémoire influent sur l’état de charge de trafic) et par conséquent, la bufferisation doit être minimale. Deuxièmement, Via les fonctions adéquates de « Dropping : Rejeté les paquets en excès » et de « shaping : retardés les paquets », l’agrégat est conditionné de façon que son débit d’arrivée dans un nœud soit toujours inférieur au débit maximum de départ. VI.1.c. Les exigences du service EF: • Le trafic EF doit être soumis à un débit de façon indépendante de l’intensité de tout autre trafic traversant le nœud. Il doit en moyenne être au moins égal au débit configuré sur une période de temps plus grande ou égale que le temps de transmission d’une MTU [A.6]. • Les débits minimum et maximum peuvent être les mêmes et être configurables via un seul paramètre. Ils doivent être configuré par l’administrateur du réseau. • Afin que le trafic EF ne monopolise pas les ressources d’un nœud, l’implémentation doit prévoir des moyens de ne pas nuire aux autres trafics. Le trafic en excès doit être systématiquement détruit. • La valeur du champ DSCP recommandé pour EF est « 101110 ». VI.2 Le service Assured Forwarding (AF): VI.2.a. Définition et description du service AF : 16 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Le service AF est un moyen pour un opérateur d’un domaine d’offrir différents niveaux de garantie d’acheminement. Ces garanties sont associées à des paquets IP en provenance d’un domaine source particulier [A.7]. A l’inverse de EF, dans AF, il n’y a pas de notion de timing quantifiable (délai et gigue)6. N Classes AF, voir le tableau 1, sont définies dans chaque nœud DS avec leurs ressources d’acheminement associées (buffers, bande passante). Les paquets IP, qui veulent utiliser le service mis à disposition par AF, sont attribués par l’utilisateur ou l’administrateur du domaine DS dans une ou plusieurs de ces classes AF. Cet attribut doit être en accord avec les services auxquels l’utilisateur a souscrit. Il s’agit dans ce cas de groupes de services réellement différenciés et soumis à des règles de priorités et de précédence. A l’intérieur de chaque Classe AF, on associe à un paquet IP une priorité parmi M différents niveaux de priorité d’élimination (drop precedence). Un paquet IP appartenant à la ième Classe AF et ayant une précédence « j » est marqué avec le DSCP AFij avec 1<=i<=N et 1<=j<=M. Actuellement, 4 Classes AF (N=4) et 3 niveaux de précédence dans chaque Classe (M=3) sont prévus. Rien n’empêche de définir des nouvelles classes AF pour des utilisations locales. Tableau 1 : Classes de AF Classe 1 Classe 2 Classe 3 Classe 4 Low Drop Prec. 001010 010010 011010 100010 Haute priorité Med Drop Prec. 001100 010100 011100 100100 Moyenne priorité High Drop Prec. 001110 010110 011110 100110 Basse priorité VI.2.b. Les règles d’application : Afin que DiffServ fonctionne correctement [A.7], plusieurs règles doivent être respectées : Règle 1 : Un nœud DS devra implémenter les 4 Classes AF. Règle 2 : Les paquets appartenant à une Classe AF doivent être acheminés indépendamment des paquets appartenant à d’autres Classes AF. Règle 3 : Un nœud DS ne doit pas agréger plus d’une Classe AF. Règle 4 : Un nœud DS doit allouer via la configuration une quantité minimale de ressources d’acheminement (espace mémoire et bande passante) à chaque classe AF implémentée. Règle 5 : Chaque classe AF doit supporter le débit configuré pour le service correspondant sur des échelles de temps courtes et longues. Règle 6 : Une Classe AF peut aussi être configurer de façon à recevoir plus de ressources d’acheminement que le minimum prévu dans la règle 4 quand des ressources sont non utilisées par d’autres Classes AF. 6 Dans EF, la qualification consiste en la minimisation de ces temps là. 17 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Règle 7 : A l’intérieur de chaque Classe AF, un nœud DS doit accepter les trois niveaux de précédence qui doivent produire au moins deux niveaux de probabilité de perte. On admet généralement que deux niveaux devraient être suffisants pour des contextes de congestion normale. Trois niveaux ne se justifiant que dans des domaines DS où la congestion est potentiellement importante. Règle 8 : Un nœud DS ne doit pas réordonner les paquets IP d’une micro flux quand ils appartiennent à une même classe AF sans se soucier de leurs précédence. VI.3 Un PHB par DEFAULT (Best-EFFORT) : Le PHB par DEFAULT correspond au comportement classique « best effort ». Il doit être présent dans chaque nœud DS [A.7]. Quand il n’existe pas d’autres contrats, SLA, les paquets concernés sont transportés dans cet agrégat. Il est suggéré que les nœuds DS réservent une certaine bande à ces flux de façon que les utilisateurs classiques « best effort » ne soient pas totalement pénalisés. La valeur DSCP recommandé pour le PHB DEFAULT est « 000000 ». Un paquet marqué pour le traitement par défaut, peut être remarqué en sortie d’un domaine en fonction des contrats, SLA convenus entre deux domaines (opérateurs). VII. Le modèle Architectural de DiffServ : L’architecture associée à DiffServ est un modèle simple où le trafic entrant dans un réseau est classifié et a la possibilité d’être conditionné dans les nœuds de bordures du réseau [A.5], et se voit affecter différents « behavior agregates, BA». Chaque BA est identifié par un seul DSCP. A l’intérieur du cœur de réseau, les paquets subissent le traitement adéquat, c’est à dire le PHB associé à leur « DSCP ». VII.1. Le domaine DS ou « Differentiated Services Domain »: Un domaine DS est un ensemble contigu de nœuds sous une administration commune, déterminant en particulier le service de provisionnement « Service Provisionning ». Chaque nœud connaît l’ensemble des PHB implémentés. Il a des limites bien définies consistant en des nœuds de bordure « DS Boundary Nodes » qui au moins classent et conditionnent le trafic entrant [A.5], « Ingress traffic », afin de s’assurer que les paquets sont correctement marqués pour sélectionner un PHB parmi les PHBs supportés à l’intérieur d’un domaine DS. A l’intérieur du domaine, les nœuds sélectionnent le PHB pour les paquets en se basant sur leurs DSCPs. L’administration unique d’un Domaine DS est la responsable de la réservation adéquate des ressources et de leur « provisionning » pour supporter les SLAs offerts à l’intérieur d’un domaine. Les SLAs ne peuvent résulter que d’une analyse statistique du comportement du réseau, en fonctions des différents flux. Etant donné que les services sont seulement différenciés sur une base relative d’allocation de ressources et de gestion des files. Un SLA passe par un «Traffic Conditionning Agreement, TCA » spécifiant les règles à respecter. Ce TCA est de nature purement administrative. VII.2. La région DS ou « Differentiated Services Region »: 18 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Une région DS (figure 1) inclut un ensemble de (un ou plusieurs) domaines DS contigus. Les domaines DS dans la région peuvent supporter des groupes de PHBs différents ainsi que différentes correspondances entre DSCP et PHBs [A.5]. Dans une région et au niveau des nœuds du bord, On doit, soit récupérer le trafic pour le délivrer à l’utilisateur final, soit assurer l’interconnexion avec d’autres domaines, d’où la notion de Transit. Pour fournir un service homogène sur la région, il est nécessaire dans les nœuds de bordure d’établir un SLA qui définit un TCA spécifiant comment le trafic qui transite d’un domaine à l’autre est conditionné à la limite des deux domaines. C’est une tentative de gestion de bout en bout. Mais le problème qui est posé est, comment, en cas d’hétérogénéité inter domaines (réseau IP, ATM,..etc), assurer un service de bout en bout ? Pour résoudre ce problème, la solution idéale est de passer des accords entre les autorités administratives des différents domaines afin de consolider un SLA de bout en bout. Pour que ces opérations soient faisables, chaque domaine doit avoir une connaissance des PHBs standardisés ou non, utilisés dans le ou les domaines voisins, afin de s’y adapter. Mais Ceci n’est pas applicable vu des différents niveaux d’abstractions dans chaque domaine. Les règles d’interconnexion inter domaines pour aboutir à un comportement correct risquent de devenir complexes ou irréalistes. Domaine1DS Région DS Domaine3 DS Domaine2 DS Figure 1 : Région DS et Domaine DS. Les composantes essentielles de l’architecture DiffServ et les éléments de conditionnement de trafic seront expliqués dans les paragraphes suivants. Des services différenciés sont étendus au travers d’un domaine DS en établissant un SLA entre le domaine DS source et le domaine DS en aval [A.5]. Le TCA inter domaines est dérivé des SLAs. Le SLS d’un SLA peut spécifier : la classification du paquet, les règles applicables pour le marquage, les profils de trafic, Les actions à prendre pour des paquets non conformes en termes de profil de trafic. VII.3. Les TCBs des routeurs de DiffServ : On distingue deux types de routeurs dans l’architecture à différentiation de service. Les routeurs de bordure (Edge router) et les routeurs de cœur (Core router). Les routeurs de bordure 19 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 se situent aux frontières d’un domaine et se chargent (i) de la mise en forme d’un flux en fonction de sa spécification de service (SLS : Service Level Specification) et (ii) de la classification du trafic par l’attribution d’une étiquette (DSCP : DiffServ Code Point) à chaque paquet entrant dans le domaine (MF classifier). La valeur de cette étiquette pour un flux donné dépend de son SLS et de son comportement instantané (exemple, Three color Marker, paquet in ou out profile). Une fois étiquetée, le paquet utilise le DSCP pour choisir la file d’attente adéquate (agrégat adéquat), dans les routeurs de cœur, ainsi que le traitement adéquat en cas de congestion. Le comportement du routeur est donc dépendant du DSCP. La figure (2) montre les blocs de conditionnement de trafic (TCB : Traffic Conditionning Bloc) pour chacun des deux types de routeurs présentés plus haut. Le TCB du routeur de cœur peut contenir des fonctionnalités de mise en forme de trafic (figure 3). Ces fonctionnalités sont nécessaires dans le cas où le réseau n’est pas bien dimensionné. Elles sont similaires à celle du routeur de bordure mais elles agissent sur les agrégats et non sur les flux. Ces fonctionnalités sont détaillées dans la section VII.4. Marker1 Meter1 Absolute Dropper1 Classifier /MF Marker2 Meter2 Absolute Dropper2 Marker3 MUX 1 Meter3 Absolute Dropper3 (a) Queue1 Classifier/ BA Shaper/ Scheduler1 Queue2 (b) Figure 2 : Blocs de conditionnement de trafic pour le : (a) routeur de bordure, (b) routeur de cœur. 20 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Meter1 Queue1 Counter1 Absolute Dropper1 Algorithmic Dropper1 Meter2 Mux1 Algorithmic Dropper2 Queue2 Shaper/ Scheduler 1 Queue3 Classifier/ par agrégat Marker1 Algorithmic Dropper3 Queue4 Figure 3 : Blocs de conditionnement de trafic pour le routeur de cœur. VII.4. Classification et Conditionnement de trafic : Les règles de classification de trafic identifie le sous-ensemble de trafic qui peut recevoir un service différencié par conditionnement et/ou mis en correspondance avec un ou plusieurs BA (par remarquage de DSCP) à l’intérieur du domaine DS. Le conditionnement du trafic a en charge de réaliser les opérations suivantes : « Metering » qui est la mesure du trafic, « Shaping » qui réorganise la succession des trames en fonction de l’objectif final en termes de contraintes de débit et de délai. « Policing/ Dropping » qui vérifie que le trafic est bien conforme quantitativement au SLA, et effectue les opérations correctives adéquates, « Marquage » qui assure que le trafic subira un traitement adéquat dans le domaine DS. VII.4.a. « Classifiers » : Il s’agit de trier les paquets selon le contenu de certains champs de l’en tête du paquet. Deux types de « classifiers » sont définis : Le « Behavior Agregate (BA) Classifier » qui classifie les paquets uniquement en fonction du DSCP. Le « MultiField (MF) Classifier » qui classifie les paquets selon des règles beaucoup plus complexes telles que : adresse source/adresse destination, DSCP, protocole, port source et port destination. VII.4.b. « Conditionners » : Les « conditionners » sont composé de 4 composants : 21 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 VII.4.b.1. « Meter » : Le « Meter » mesure les propriétés temporelles d’un train de paquets sélectionné par la fonction « classifier », par rapport au profil de trafic qui leur est associé au niveau du TCA. Il passe les informations aux autres membres du « conditionner » selon que les paquets sont dans et hors profile « in and out of profile » afin de prendre les actions de « policing » adéquates. Il doit également pouvoir fournir les informations nécessaires aux règles d’ingénieries du trafic « Traffic Engineering » associés à chaque flux, quoi que cette possibilité ne soit pas explicitement prévue dans DiffServ. Les règles d’ingénieries du trafic sont appliquées afin de dimensionner le réseau de façon que la probabilité de rejet des paquets sera la plus petite possible. C à d, borner le trafic, dimensionner la file d’attente, etc... VII.4.b.2. « Marker » : Le « Marker » positionne le champ DSCP à une valeur particulière et ajoute le paquet marqué à un agrégat particulier. Le Marker peut être configuré pour « marquer » un paquet avec un simple DSCP ou avec un ensemble de DSCP utilisé pour sélectionner un PHB dans un Groupe des PHBs, selon l’état du « Meter ». C’est le cas des « Multicolore Markers ». Le « Marker » peut également être amené à changer le DSCP d’un paquet, on dit alors qu’il a remarqué le paquet. VII.4.b.3. « Shaper » : Le « Shaper » est utilisé pour retarder les paquets d’un flux pour être remis en conformité avec le profil du trafic. Cette fonction est assez délicate dans la mesure où la taille des « buffers » est finie et que les flux peuvent avoir des contraintes supplémentaires de délais. De plus, si ces buffers sont pleins, les paquets peuvent être perdus. VII.4.b.4. « Droppers » : Cette fonction est également connue sous le nom de « policing ». Elle supprime un certain nombre de paquets afin que le flux de paquets demeure dans le profil du trafic. Les « conditionners » travaillent en relation avec les « classifiers ». Leur fonction est essentielle pour un fonctionnement correct de l’architecture DiffServ. Les « classifiers » et le « conditionners » aux nœuds de bordure sont configurés en fonction de spécification de services « SLS », couvertes par des fonctions administratives non spécifiées actuellement. La figure (4) suivante donne une représentation possible de l’ensemble « classifier » et « conditionner ». Meter Classifier Marker Conditionner 22 Shaper/Drop. Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Figure 4 : Classifier & conditionner7 VII.4.c. Profils de trafic : Un profil de trafic spécifie les propriétés temporelles d’un trafic sélectionné par un « classifier ». Il fournit les règles permettant de vérifier si le paquet est dans ou hors profil. Le profil de trafic est optionnel dans DiffServ. Mais c’est la seule façon de construire des SLAs et TCAs. VIII. Complémentarité et grandes tendances: La QdS n’a aucune importance si elle n’est pas de bout en bout. Dans le cas d’IntServ, on a une QdS dure mais comme vue précédemment, ce modèle est peu scalable. Par contre, DiffServ n’a pas de signalisation mais offre une QdS dite relative et il est scalable. La granularité par micro-flux doit être abandonnée dans le cœur du réseau au profit d’agrégats [A.14], qui peuvent être gérés comme des flux. Elle devra être assurée par RSVP, soit de host à host, soit de proche en proche dans le cas où la classification devrait être faite par les nœuds de bordure. RSVP peut être utilisé soit pour transporter des objets IntServ soit des objets DiffServ. La tendance logique est de faire migrer aux « edges » la gestion des « micro-flux », du routage et des métriques nécessaires au « Traffic Engineering », et à l’intérieur du réseau la gestion des agrégats ; c.-à-d., utiliser DiffServ dans le cœur réseau et IntServ dans les périphéries (réseaux d’accès). Ceci nécessite une mise en correspondance entre les messages RSVP et les PHB. De plus, plusieurs alternatives pour le contrôle d’admission du domaine DIFFSERV se présentent (un contrôle d’admission à chaque nœud DS, sans contrôle d’admission ou autre…..) On se dirige donc vers un scénario où la visibilité de l’utilisateur est IntServ, alors que le système de communication utilise DiffServ, rendant ainsi IntServ un client de DiffServ. La figure (5) illustre un exemple de ce fonctionnement. 7 Le « Meter » est considéré comme optionnel dans la mesure où, initialement, la notion de profil de trafic n’était pas un prérequis dans l’architecture DiffServ 23 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Figure 5 : Exemple de réseau IntServ/DiffServ 1. L’émetteur A génère un message RSVP-PATH contenant les caractéristiques du trafic de l’application ; 2. Le message PATH a pour rôle d’établir les informations d’état et les réservations dans les routeurs de la zone 1 où la garantie de QdS est fournie par des méthodes d’allocation de ressource/flux ; 3. Le message PATH est acheminé d’une manière transparente à travers le réseau de transit DiffServ pour arriver à la zone 2 ; 4. Le message PATH arrive au récepteur B en mettant en place les informations d’allocation de ressources dans les routeurs de la zone 2 ; 5. La station B génère un message RSVP-RESV indiquant le niveau de service. Ce message, en retournant vers l’émetteur, peut être rejeté dans la zone 2 à cause d’un manque de ressources. Sinon, les réservations appropriées sont établies dans les routeurs de la zone 2 ; 6. Les messages RESV traversent la zone DiffServ en « tunnel » jusqu’au routeur ER1. A ce niveau, le message est traité par un module DACS (DiffServ Admission Control) qui compare les ressources demandées aux ressources disponibles au niveau du DiffServ correspondant. Si le message RESV est accepté, le DACS soustrait la capacité demandée de la capacité disponible ; 7. Etablissement des réservations dans les routeurs IntServ de la zone 1 où le message RESV peut également échouer par manque de ressources ; 8. L’émetteur A reçoit le message RESV ; 9. L’émetteur A commence à générer les paquets de la session. Le marquage du champ DSCP se fera au niveau de routeur d’entrée du domaine DiffServ (ingress Router) qui est ici BR1. IX. Conclusion : 24 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 DiffServ est basé sur l’idée qu’il n’est pas nécessaire de prévoir de signalisation inter nœuds et que l’Administration du Réseau peut être dissociée de ses états. Ce qui a mené à la notion d’agrégat, un agrégat étant le regroupement de flux homogènes, classifiés et marqués de façon identique. Les avantages majeurs de la gestion par agrégats sont les suivants : 1) une classification et un marquage plus simples à condition qu’ils soient effectués au plus près de la source, 2) une gestion par agrégats qui propage beaucoup moins de contextes dans le réseau, 3) une meilleure scalabilité, 4) une gestion statistique des ressources optimisant les effets du multiplexage statistique Via les mécanismes de marquage, de re-marquage et de shaping intelligent. Le majeur inconvénient est : L’absence de notification de congestion, qui pourrait permettre une régulation des microflux, mais qui augmentera la complexité du problème. Dans DiffServ, il est nécessaire de gérer l’allocation des ressources du réseau. Afin de réaliser cette gestion, des règles sont associées aux différents flux et agrégats. Cette gestion et le protocole qui s’occupe de l’échange de ces règles sont le sujet du chapitre suivant. 25 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre III Le contrôle par politique et le protocole COPS (COMMON OPEN POLICY SERVICE PROTOCOL) I. Le contrôle par politique I.1. Introduction: Le terme politique [A.9] étant largement utilisé, il est impératif de donner une définition claire dans le contexte des réseaux. Comme point de départ, le terme politique dénote un règlement unifié pour l’accès aux ressources et aux services réseaux en se basant sur des critères administratifs. La figure (6) montre les différents niveaux auxquels un tel règlement peut être exprimé et exercé. La vue réseaux d’une politique s’exprime en terme de performances de bout en bout, de connectivité et d’états dynamiques du réseau. Cette vue se compose de plusieurs vues nodales, auxquelles correspondent les objectifs de la politique et ses besoins au niveau de différents nœuds. Celles ci, à leurs tours, sont composées de règles politiques, lesquelles doivent être vues comme des injonctions atomiques à travers lesquelles différents nœuds du réseau sont contrôlés. Comme chaque nœud possède des mécanismes d’allocation de ressources spécifiques, chaque vue nodale doit finalement être translater en des instructions spécifiques aux dispositifs hardware du nœud. Niveau Réseau (Topologie, Objectifs réseau, Utilisation globale des ressources) Niveau Noeud (régles de politiques, TCAs, objectifs de QoS) niveau dispositif hardware (Classification, gestion des files d'attentes, ordonnencement) Figure 6 : Hiérarchie conceptuelle de politique. Dans le cas du modèle Diffserv, cette décomposition est aussi valide du fait qu’il sépare entre le contrôle par politique et les mécanismes du plan de données [A.10]. Cette séparation permet d’ajuster ou d’ajouter, au besoin, n’importe qu’elle contrôle par politique avec une simple reconfiguration ou organisation « remapping » entre politique et mécanismes. Tous les mécanismes implantés restent inchangeables. Ce contrôle par politique sera détaillé dans les paragraphes suivants au travers d’un exemple de gestion des ressources par politique et d’une architecture politique « inter- domaine ». I.2. Le control par politique: Une politique spécifie les règlements d'accès aux ressources du réseau et aux services en se basant sur des critères administratifs. Ces règles contrôlent quels utilisateurs, applications, ou nœud devraient avoir l'accès à quelles ressources et services et sous quelles conditions [A.10]. 26 Conception et implémentation d’un nœud DiffServ actif PEP DEA Réseaux de Télécommunications 2000-2001 PEP PEP PDP Management tool PEP PDP Policy Repository Policy domain Figure 7 : Modèle de l’architecture par politique Au lieu de configurer les nœuds du réseau individuellement, Les ISP (Internet services provider) et les administrateurs d'entreprise souhaiteraient configurer le réseau à travers une infrastructure par politique. Cette dernière fournit un support pour la traduction de règles administratives en des traitements différentiés des paquets. La figure (7) représente une architecture typique « par politique ». Chaque domaine peut contenir un serveur de politique ou plus dont sa fonction est de choisir les politiques et prendre les décisions pour la configuration des nœuds du réseau. Le serveur de politique a accès à une base de données des politiques (via LDAP ou SQL). Chaque entrée de la politique spécifie une règle de “si une certaine condition se réalise, alors exécute l’action correspondante”. L’administrateur du réseau utilise une « GUI8 management application » pour mettre à jour et surveiller l’évolution de la base de données des politiques. Le serveur de politique consiste en un contrôleur de politique central (CPC) et un ensemble de PDP. Ces derniers sont responsables de déterminer quelles actions sont applicables à quels paquets. Le CPC est là pour assurer la consistance globale entre les décisions prises par les PDPs, et la mise en application (enforcement)9 et l'exécution des actions au niveau des PEP. Un PEP est généralement colocalisé avec un routeur. Certains composants du réseau peuvent être assez puissants et flexibles pour prendre leurs propres décisions politiques et les enforcer. I.2.a. Un exemple de gestion des ressources par politique: Le Bandwidth Broker (BB) est une entité de gestion qui permet l’allocation de ressources intra-domaine et négocie des contrats de trafic inter-domaine [A.10]. Un BB pour chaque domaine peut être configuré avec des politiques d’organisation; Il contrôle les opérations des routeurs de bord. Du point de vue structure politique, un BB inclut la base de données des politiques d’allocation de ressources, tandis que les routeurs de bord sont vue comme PEP. 8 9 graphical user interface Enforcer des décisions d’une politique consiste à traiter les paquets selon les règles qui existent dans la décision. 27 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Figure 8 : Bandwidth Broker Dans son rôle inter-domaine, un BB négocie avec ses domaines voisins, établit des accords bilatéraux avec chacun d'eux, et envoie les paramètres de configuration appropriés à ces routeurs de bordure concernés par ces accords bilatéraux (figure 8). L’agrément bilatéral veut dire qu'un BB a seulement besoin de se co-ordonner avec ses domaines adjacents. La QdS de bout en bout est assurée par les allocations des ressources intra domaine et par leurs concaténations. Les concaténations étant assurée par les accords bilatéraux. Dans un domaine, un BB accomplit l'allocation des ressources à travers un algorithme de contrôle d'admission propre au domaine. Le choix de l'algorithme de contrôle d’admission est indépendant de la négociation inter- domaine. Ces allocations fournies par l’agent BB du PDP peuvent être statiques, dynamiques ou mixtes [A.8] ; Chaque politique permet, par exemple, une facturation différente. Un BB est associé à chaque domaine DiffServ, même si on peut prévoir des hiérarchies de BBs à l’intérieur d’un même domaine. Dans ce cas c’est le BB au sommet de la hiérarchie qui prend en charge cette communication « inter-domaines ». I.2.b. Architecture politique inter –domaine : Dans un réseau multi-domaines, c'est irréaliste et non scalable de supposer un seul point de contrôle administratif pour le réseau tout entier [A.9]. Par conséquent, chaque domaine est placé sous le contrôle administratif d'un PDP. Ces domaines indépendants communiquent afin d’échanger entre eux des informations de contrôle. C’est une communication bilatérale ; Les domaines adjacents négocient pour déterminer la nature et le volume du trafic qui passera au travers leurs limites communes. Comme partie de ce processus, chaque domaine décrit sa demande de QdS au PDP voisin. Ce dernier fournit une décision de l'admission ou de la non admission basée sur : (i) sa disponibilité en ressource, (ii) les arrangements financiers bilatéraux, et (iii) sur l'ensemble des politiques administratives. Chaque PDP exécute trois tâches distinctes: - Négociation de SLAs avec PDPs les domaines avoisinants, - Traduction de SLAs en un ou plusieurs TCAs pour les edges routeurs, - La mise en place des TCAs aux routeurs de bordure correspondants du domaine administré. 28 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Dans le contexte de l'inter-domaine, les routeurs de bordure qui sont à la limite entre deux domaines jouent un rôle spécial dans la mise en application du SLA entre les deux domaines. Notons que, le SLA est un élément Niveau Réseau, alors qu'un TCA est un élément Niveau Nœud (figure 6). Le TCA va être la portion des paramètres du SLA qui sont en rapport avec le rôle du routeur de bordure. Pour que le PDP communique avec les routeurs du domaine qu'il administre, plusieurs protocoles ont été développés. Parmi ceux là, on a le protocole COPS qui est actuellement le candidat le plus utilisé pour cette tache. Ce protocole sera l'objet de la deuxième partie de ce chapitre. II. Le Protocole COPS II.1. Définition du COPS: C’est un protocole du type client/serveur (requête/réponse) développé par le groupe de travail RAP de l’IETF (Ressource Allocation Protocol) pour assurer des fonctions de contrôle d’admissions basées sur des règles politiques [A.1] . Comme vue sur la figure 9, le protocole COPS est utilisé pour échanger, d’une façon bidirectionnelle dynamique, les informations entre un client PEP10 et un serveur des règles PDP11. Il est basé sur le concept du type de client, (i.e il permet d’ajouter de nouveaux types de client sans avoir modifier la base du protocole). PEP PDP COPS Figure 9 : Modèle client/serveur II.2. Vue conceptuelle de la pile COPS : La pile du protocole COPS peut être conceptuellement divisée en trois couches distinctes (figure 10 (a) et (b)) : La couche de base du protocole, la couche qui contient les directives pour un type de client, et la couche qui représente les règles de données. Policy Data Representation Client-Type usage Directives The Base Protocol (a) 10 11 Policy Enforcement Point Policy Decision Point 29 Conception et implémentation d’un nœud DiffServ actif RSVP Policy Data Object COPS-RSVP Client-type=1 DEA Réseaux de Télécommunications 2000-2001 PIB(Policy Information Base) COPS-PR Client-type= COPS COPSClient-type= (b) Figure 10 : La pile du COPS Le client PEP12 a pour rôle de demander une politique d’un serveur PDP qui à son tour lui communique des décisions politiques [A.1]. Il est responsable d’initier une connexion persistante TCP au PDP. Cette connexion sera utiliser pour envoyer des demandes et recevoir des décisions. Il a aussi la capacité de rapporter au PDP (figure 11) qu’il a complété avec succès ou non, l’exécution de ces décisions. De plus, il est responsable de notifier au PDP de tous les états de demande qui ont été changés. II.3. Les modèles de la gestion par politique « Policy Management Model »: La gestion par politique fonctionne suivant l’un de des deux modèles suivant: le modèle Outsourcing (COPS-RSVP) [A.2] et le modèle de Provisionning (COPS-PR) [A.3]. Dans ces deux modèles, le PEP reçoit les décisions politiques « Policy Decisions » et les appliquent au niveau des paquets. Le protocole COPS spécifie les caractères fonctionnels de ces deux modèles. II.3.a. Le modèle Outsourcing( COPS-RSVP): II.3.a.1. Le rôle du modèle Outsourcing : Dans le cas du Outsourcing, le PDP reçoit la demande de politique « Policy Request » d’un PEP (figure 11 et 12), et décide s’il l’autorise ou non [A.2, A.4]. Typiquement, c’est une décision de contrôle d’admission liée à un message RSVP pour la réservation des ressources. Basé sur l’idée de trouver dans le Policy Repository la politique demandée, c- à- d, si l’utilisateur/application qui demande les ressources a le privilège pour les réserver, le PDP permet au message RSVP de traverser le réseau, ou autrement il le rejette. Quand le PEP reçoit un message RSVP qui demande une décision politique, les objets de RSVP sont encapsulés à l’intérieur de l’objet « Signaled ClientSI » dans un message de requête de COPS qui est envoyé au PDP. Le PDP décide si ce message RSVP doit être accepté, envoyer à la ‘Next Hop’ou non accepter ; Puis le PDP envoie une décision au PEP comme une réponse à la requête. Des décisions consécutives peuvent être envoyer pour la même requête, si le PDP voit que la décision politique originale a besoin d’être changé ou supprimé. Dans le cas ou le PDP détecte l’absence d’un objet RSVP essentiel dans la requête, il doit retourner un message d’erreur dans la décision qui indique « Mandatory client-specific info 12 Le client PEP peut être un composant faisant parti d’un routeur supportant RSVP, ou DiffServ ou bien les deux. 30 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 missing ». Dans le cas ou le PDP détecte l’absence d’un objet RSVP optionnel dans la requête, il doit retourner une décision négative. server (PDP) Decision Messages Request Messages COPS Report Messages client (PEP) Figure 11 : Demander et Reporter une Décision Pour chaque message de décision reçu, le PEP envoie un rapport (RPT) au PDP qui inclus les actions qui l’a entrepris (Pour assurer que les décisions sont convenablement installées ou pour détecter une erreur avec n’importe quelle installation), ainsi le PDP sera « up to date » de la politique actuellement installé au niveau du PEP. RSVP a défini l’objet « POLICY DATA » qui joue le rôle d’un cantenaire pour transporter les informations politiques dans le message RSVP. Quand un message RSVP arrive au PEP, le PEP communique l’objet « POLICY DATA » au PDP. Le PDP prend sa décision en se basant, entre autre, sur le contenu de l’objet « POLICY DATA ». Le PDP peut aussi modifier ou remplacer le ‘POLICY DATA’ pour un « Outgoing RSVP message ». Figure 12 : IntServ/DiffServ, RSVP&COPS Le PEP peut avoir la capacité de prendre une décision politique locale via son LPDP (Local Policy Decision Point). Il doit envoyer cette décision locale au PDP via un objet de décision de 31 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 LPDP. Le PDP doit prendre alors la décision finale et l’envoie au PEP lequel doit rester fidèle d’une manière absolue à la décision du PDP. II.3.a.2. Les messages RSVP-COPS : Il existe sept types de messages RSVP. Ils sont transportés dans des paquets IP. Ces types sont : Les messages de réservation (RESV), les messages de route (PATH), les messages de fin de réservation (RESVTEAR), les messages de fin de route (PATHTEAR), le message optionnel de confirmation de réservation (RESVCONF) ,et les messages d’erreur (RESVERR) et (PATHERR). Quatre de ces messages RSVP sont supportés par COPS [A.2]: Path, Resv, PathErr, ResvErr. Par contre, les autres types de message tel que PathTear, ResvTear, et ResvConfirm ne le sont pas. II.3.b. Le Modèle Provisioning (COPS_PR) : II.3.b.1. Le rôle de COPS-PR : Dans le cas du provisioning, quand une nouvelle politique est entrée à la console de gestion, les politiques sont distribuées en temps réel au PDP (Voir figures 12 et 13). Le PDP décide alors si la politique doit ou ne doit pas être installée [A.3]. Si les critères sont satisfaits, le PDP emballe les règles de politique dans un ordre de configuration de telle sorte à ce que le PEP puisse l’interpréter, et envoie les directives au PEP. PDP met l’information de configuration dans le PEP et élimine les états du PEP qui ne plus valables. Le PDP traite simultanément les données politiques qui ont été saisies dans le système de gestion de politique et les informations sur les ressources du réseau pour prendre les décisions politiques et pour envoyer des directives aux PEPs du réseau. Dans ce modèle, il n’y a pas des mécanismes de signalisation de QdS, mais un modèle de ‘PUSH’ est utilisé. Le PDP réagit aux événements externes non venus de PEP tel que : le changement de politique appliqué, l’heure actuelle, expiration de compte …etc, ou venus du PEP ou une combinaison des deux et par suite met l’information de configuration au niveau de PEP. Le « Provisioning » peut être exécuté en gros (par exemple, configuration d’un routeur) ou en partie (par exemple, mettre à jour un DiffServ marking filter). QoS policy rules External policy Event decision point QoS provisioning COPS data provisioning request Donnée data utilisateur PEP Figure 13 : Le modèle COPS Provisioning. 32 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Dans COPS - PR, les demandes politiques décrivent le PEP et les paramètres à configurer plutôt qu'un événement externe. Si un changement se produit dans ces paramètres de base, une demande de mise à jour est envoyée. Les demandes sont tout à fait rares. Les décisions envoyées par le PDP sont prises en réponse à des évènements externes arrivée d’un nouveau flux. Au départ le PDP analyse les règles politiques en considérant les informations externes pour prendre les décisions politiques. Puis ces décisions sont envoyées d’une manière asynchrone du PDP au PEP pour l’exécuter. C’est à dire : le PDP prédit les besoins de configuration, et les envoies au PEP en avance. Au lieu de répondre aux évènements du PEP. Enfin le PEP confirme si l’installation (de configuration) de cette décision est réussie ou non. Les données ‘DATA’ transportée par COPS-PR sont un ensemble de données politique ‘Policy Data’. Ces données sont connues sous le nom de PIB (Policy Information Base = La base de donnée des informations politiques). Les PIBs sont des structure de données proposées pour être utilisé avec le protocole COPS-PR. Elles décrivent politiques et le format des informations politique à échanger entre le PEP et le PDP. La PIB contient des informations qui décrivent techniques de classification et de conditionnement des paquets. La PIB est extensible et flexible pour additionner des nouveaux type de paramètre provisionnel. Un domaine administratif peut avoir une PIB ou plus et des domaines administratifs différents peuvent avoir des ensembles différents de PIBs. Un modèle incluant plusieurs PDPs contrôlant des régions politiques différentes, le clienttype spécifié par le PEP au PDP est unique. Chaque région politique sera déterminée par un client-type qui sera utilisé pour toutes les PIBs existant dans cette région. C à d le PEP devrait traiter indépendamment tous les types de client COPS_PR qui les supporte, i.e leurs instances ne doivent pas être partagées. II.3.b.2. Propriétés du COPS-PR: • COPS – PR assure un transport effectif d'attributs [A.3] et des grandes transactions atomiques de données. • Comme il n’y a qu’une seule connexion entre le client PEP et un serveur PDP pour une région de politique identifiée par un COPS Client-Type, ceci garantit qu’un seul serveur met à jour une configuration particulière de politique à un moment donné. • COPS-PR peut être utilisé pour la configuration des différents types de réseaux de service (DiffServ, MPLS, …etc) au travers la configuration de ses routeurs. • COPS utilise la communication fiable TCP ainsi qu’un mécanisme de partage/synchronisation, par la suite il échange uniquement les mises à jour différentielles [A.1]. Si le serveur ou le client est redémarrés le second le détecte rapidement. • C’est un mécanisme de communication conduit par des événements temps réel. II.3.b.3. Interaction entre PEP et PDP : 33 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 • Dans le cas ou un PEP démarre : Quand un PEP démarre « boot », il ouvre une connexion COPS avec son PDP primaire [A.3]. Une fois la connexion établie, le PEP envoie des informations à propos de lui au PDP sous forme d’une requête de configuration. Ces informations spécifient les caractéristiques de client (type de matériel ’Hardware’; le logiciel utilisé ; information de configuration). Le PDP répond à cette requête de configuration en faisant un téléchargement de toutes les politiques provisionnelles qui sont actuellement approprié pour ce PEP. En recevant ces politiques provisionnelles, le PEP les organise et les installe. S’il y a des conditions qui sont changées au niveau du PDP tel qu’il détecte que ces changements exigent une mise à jour des politiques courantes, le PDP les envoie (Installe, mise à jour, et/ou efface) en politiques au PEP, qui a son tour met à jour convenablement sa configuration locale. Si la configuration de PEP change (carte supprimée, carte ajoutée, nouveau software installé, …) de manière qu’elle ne soit pas couverte par les politiques déjà connus par le PEP ; Le PEP envoie d’une manière asynchrone ces nouvelles informations non sollicité au PDP dans une (Update request configuration). En recevant cette nouvelle information, le PDP envoie au PEP les politiques provisionnelles supplémentaires dont le PEP a besoin, et supprime les politiques qui ne sont plus nécessaires. • Dans les autres cas : Le protocole COPS utilise une connexion TCP, initiée par le PEP. Dès que la connexion est établie, le PEP envoie un message client_open qui spécifie le type du client. Si le PDP supporte le type du client de provisionnement spécifié, le PDP répond avec un message Client Accepte (CAT). Si ce type du client n'est pas supporté, un message Client - close (CC) est retourné par le PDP au PEP, en lui spécifiant éventuellement un serveur alternatif qui peut supporter la politique pour le type de client donné. Après avoir reçu le message CAT, le PEP peut envoyer des requêtes (REQ) au serveur. Le message REQ contient un « Configuration Request context object » et, facultativement, des clientSI du PEP. Les informations fournies par ce PEP devraient inclure les ressources disponibles du client (par exemple, les classes/attributs supportés) et l’information de configuration de la politique par défaut aussi bien que les données sur la politique existante. Le message de la demande de configuration d'un client sert pour : • Donner les informations que le PEP a spécifié dans son message REQ. C'est une demande au PDP pour toutes les données de configuration que le PDP peut avoir et lesquelles sont convenables actuellement pour le PEP, tel que les filtres de contrôle d’accès. Ou encore • 13 Ouvrir un canal qui autorisera le PDP, quand c’est nécessaire, d’envoyer de façon asynchrone les données de la politique au PEP, aussi longtemps que le PEP maintient son état de demande ouvert (c.-à-d., dès que le PEP n'envoie pas de message « DRQ13 » spécifiant le « Client Handle » déjà indiqué dans la requête). Ces données peuvent être Delete Requeste 34 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 des nouvelles données de la politique ou une mise à jour des données envoyées précédemment. Tout changement au niveau du PEP est communiqué au PDP via un message « Updated REQ ». Après l’envoie d’un message REQ, si le PDP a les données de la politique de configuration pour le client, alors ces informations sont encapsulés dans un objet « decision data object » et sont transmise au client dans un message DEC (message de décision) qui spécifie le code de commande " Install " dans l'objet « Decision Flags ». Si aucun filtre n’est défini, le message DEC va simplement spécifier qu'il n'y a pas de filtres en utilisant le commande « NULL Decision » dans l'objet « Decision Flags ». Le PDP copie, dans les deux cas, le « Client Handle » du message REQ dans le message de la décision. Le PDP peut ajouter de nouvelles données d’une politique, il peut aussi mettre à jour ou supprimer des configurations déjà installées en envoyant des messages de décision subséquentes, mais non sollicités par le PEP, avec le même Client Handle. Le PEP a la possibilité de ne plus spécifier le client Handle lorsque ce dernier n'est plus nécessaire, par exemple quand une interface tombe en panne, et pour informer le PDP que le Client Handle doit être effacé par le message DRQ. Le PDP peut aussi commander au PEP l’ouverture d’une nouvelle requête d’état (code de commande « install ») en positionnant le drapeau « Request- state flag » de l’objet « Decision flags » ou en effaçant une requête existante (code de commande « Remove »). Par la suite, le PEP crée une nouvelle requête spécifiant le client Handle ou génère un message delete request DRQ. Les États « request states » existants ne sont affectés par l’échec d’une nouvelle requête grâce à son indépendance. Le PEP doit acquitter le message « DEC » et spécifier quelles actions il a pris en envoyant un message « RPT » sollicité avec un « report-type object » indiquant le " Succès " ou l’"échec ". Le compte-rendu sert à indiquer au PDP que le demandeur peut être notifié si la demande a été acceptée par le réseau ou pas. Si le PEP a besoin de refuser une décision, un message « RPT » est envoyé avec un « Report-Type » et facultativement un « Client specific Information object » qui spécifie les données de la politique qui ont été repoussées. En cas d’échec, le PEP doit toujours retourner à ses états installés précédemment. Le PDP est libre de modifier sa décision et ressayer. Finalement, les messages « Client - close (CC) » sont utilisés pour annuler le message « Client – Open » correspondant. Le message « CC » informe l'autre extrémité que le client type spécifié n'est plus supporté. III. Conclusion : Un domaine de politique est la portion d’un réseau qui est administrée et gérée par un même ensemble de politique. Ces politiques seront stockées dans une entité appelée policy repository. Le PEP est l’élément responsable de l’application et de l’exécution des actions de la politique, c’est également l’élément qui va prendre en charge le traitement des paquets en fonction d’une politique donnée. Le PDP, quant à lui, a pour tache de déterminer quelle action va être appliquée et à quel paquet. Le PDP interprète les règles des politiques, stockées dans le policy repository, pour un ou plusieurs PEPs. Pour cela le PDP se base sur les conditions courantes du réseau ainsi que sur les informations transmises par ces derniers en utilisant un 35 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 protocole de signalisation tels que COPS. En effet le protocole COPS semble être le candidat privilégié par l’IETF pour cette tache. Le PEP peut demander au PDP de prendre des décisions en son nom sur l’occurrence d’un événement (modèle Outsourcing) ou faire une demande de configuration (modèle Provisionning). Dans le cas de DiffServ par exemple, le modèle Outsourcing permettrait de faire un contrôle d’admission au niveau des routeurs de bordures. Le protocole COPS PR, quant à lui, permettrait de transporter les décisions permettant de configurer les TCBs des routeurs de bordure et des routeurs de cœur. Notons cependant qu’aucun mécanisme ne permet à ce jour de mettre en place dynamiquement les TCBs qui sont implantés de façon statique dans les routeurs et utilisent des algorithmes de conditionnement implémentés en hardware. La technologie des réseaux actifs peut donc être efficacement utilisée dans ce but, permettant ainsi de mettre en place dynamiquement les TCBs et de déployer dynamiquement de nouveaux algorithmes de conditionnement aux besoins. Les réseaux actifs sont le sujet du chapitre suivant. 36 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre IV Réseaux Actifs I. Les architectures et les applications du réseau actif : I.1. Introduction : Traditionnellement, la fonction d'un réseau a été la transmission des paquets d'un hôte à un autre. De plus, le traitement dans le réseau à fondamentalement été limité à l’acheminent des paquets , au contrôle de congestion et à la qualité de service (QdS)[B.1]. Ce genre de réseau peut être considéré comme " passif ". Mais, Plusieurs problèmes avec " les réseaux passifs " ont été identifiés: Une difficulté d'intégrer de nouvelles technologies dans l'infrastructure du réseau, la performance faible dû aux opérations redondantes à plusieurs couches protocolaires et la difficulté d’intégrer des nouveaux services dans l’architecture existante. Un autre inconvénient est que, récemment, les applications qui quelquefois exigent des calculs dans le réseau ont émergés, tel que les firewalls, les proxies Web, les routeurs multicast, et les proxies mobile. Ces besoins ont fait apparaître un nouveau type de réseau avec une capacité générique autorisant les utilisateurs à programmer leurs réseaux. Ce nouveau réseau inventé est un réseau actif. I.2. Les Réseaux Actifs : Tout d’abord, pour bien clarifier la notion de réseau actif, il va falloir répondre à la question suivante : Qu'est ce qu'un Réseau actif ? Source Routeur Routeur standard Routeur Client actif Destination Serveu r actif Utilisate Utilisate Réseau Réseau IP Equipement IP_actif IP Equipement Equipement IP_actif Equipement IP Equipement Figure 14 : Un réseau IP actif Un réseau actif est un réseau qui permet à des routeurs intermédiaires d'exécuter des traitements jusqu’à présent destinés à la couche application. Les utilisateurs vont pouvoir programmer le réseau en injectant leurs propres programmes. Ces programmes voyagent à l'intérieur des paquets qui traversent le réseau, et sont exécutés dans les nœuds intermédiaires. 37 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Ceci a pour résultat la modification de l’état du nœud et de son comportement. De ce fait, les nœuds peuvent appliquer un traitement personnalisé à chaque paquet les traversant. Par exemple, un utilisateur d'un réseau actif peut envoyer un programme « trace » à chaque routeur et s'arrange pour que se programme s'exécute quand ses paquets sont traités. La figure (14) illustre comment un routeur d'un réseau IP peut être augmenté pour exécuter tel ou tel traitement personnalisé sur les paquets le traversant. Les routeurs actifs peuvent aussi inter opérer avec les routeurs standards, qui expédient les paquets d'une façon traditionnelle. I.3. Les différentes architectures des réseaux actifs Nous allons voir maintenant quelques architectures pour les réseaux actifs. Les architectures sont groupées selon leur approche de conception: dans quelques architectures les paquets actifs transportent le code exécutable, généralement le code s’exécute sur les données du paquet qui le transporte. D'autres architectures placent le code exécutable dans les nœuds actifs ou programmables et laissent les paquets transporter que des identificateurs pour indiquer quel traitement devra être exécuté sur ces paquets. I.3.a. L’approche par paquet actif : Appelée aussi approche intégrée (integrated approch) [B.1], cette approche (figure 15) est fondamentalement caractérisée par le fait que le code est transporté par le paquet traversant le réseau (au moins une instruction). Quand un paquet arrive dans un nœud actif, son contenu est évalué, de la même façon qu’une imprimante PostScript interprète le contenu de chaque fichier qu’elle reçoit. Après avoir délimité le code dans le paquet, celui-ci est ensuite dispatché sur un environnement d’exécution, ou il peut être évalué d’une manière sûre et efficace. Nous supposons que le programme est composé d’instructions appliquant des traitements simples sur le contenu du paquet, et il peut invoquer des primitives disponibles sur le nœud pour accéder aux ressources du nœud (exp. mémoires). Le résultat de l’exécution peut être une génération d’une ou plusieurs capsules en sortie ainsi qu’une possibilité de changement d’état du nœud. Figure 15 : Approche par paquet actif Deux exemples de ce type d’architecture sont le projet Smart Packets développé a la BBN technology et le projet « Active IP Option ». 38 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 I.3.a.1. Le projet « Smart paquets » Smart Packets [B.1] est un projet de réseaux actifs se concentrant sur l’application de la technologie active pour la gestion et la surveillance des réseaux, sans pour autant surcharger les nœuds. Nœud P Programme de Gestion du Réseau Routeur Routeur D D D ANEP Démon /Machine Virtuelle Réseau Figure 16 : Architecture du système Smart Packets. La figure 16 montre l’architecture du système Smart Packets. Les programmes de gestion du réseau écrits par les utilisateurs produisent des paquets actif (encapsulé dans des trames ANEP, Active Network Encapsulation Protocol). Ces paquets sont donnés au processus démon d’ANEP, qui les injecte dans le réseau. Les paquets peuvent être transmis soit en mode bout–en bout, donc le programme est exécuté par le destinataire, ou en mode saut par saut, dans ce cas, le programme est exécuté à la source, à la destination, et dans tous les nœuds intermédiaires. Le processus démon d’ANEP a principalement deux tâches, la première concerne la réception des paquets, et la seconde l’exécution de la machine virtuelle pour évaluer les paquets. I.3.a.2. L’Option IP active : Active IP Option décrit une extension du mécanisme des options IP qui supportent l’intégration des fragments d’un programme dans des datagrammes. Ces fragments seront évalués lorsqu’ils traversent le réseau [B.1]. Deux options sont définies: La première est utilisée pour porter des fragments du programme qui peuvent être codés dans une variété de langages. La seconde est utilisée pour questionner un routeur actif sur le type de langage qu’il supporte. Ces options actives peuvent exécuter l’acheminement et la copie, et la fusion des fonctions. Un fragment du programme avec le format de la capsule est montré dans la figure (17). 39 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 IP options (IPv4IPv6) IP Header User Data ACTIVE Option Active : 63 Type (var) Code : Tc1 If ! [node]=[destination] ! !………………..! length value Figure 17 : Format du champ Option IP Active I.3.b. L’approche par nœud actif (Programmables) Dans cette approche, appelée aussi approche discrète (discret approach). Les paquets ne transportent pas le code, mais transportent au lieu de cela quelques identifiants ou références à des fonctions prédéfinies résidents dans les nœuds actifs (figure 18). La cause de l’apparition d’une telle architecture est due aux problèmes de l’approche par paquets actifs, principalement la sécurité. La seule façon de minimiser ces problèmes est de restreindre les programmes qui sont transportés par les paquets. Figure 18 : L’approche par nœud actif. Un exemple de ce type d’architecture est le projet ANTS [B.1] [B.2] développe au MIT. I.3.b.1. L’architecture ANTS (Active Node Transport System). Développée au MIT (Massachusetts Institute of Technology), cette architecture introduit la notion de capsule : un paquet contenant du byte code java avec des données utilisateur (payload). Les APIs d’ANTS consistent en la MVJ (Machine Virtuelle Java) augmentée avec des classes ANTS, qui implémentent des méthodes permettant aux capsules d’être décodées et interprétées. Dans ANTS, les capsules peuvent installer un état et invoquer des classes installées par d’autres capsules. La granularité du contrôle peut être soit par flot ou par capsule. I.3.c. L’approche par paquets et nœuds actifs: Dans cette approche, les paquets actifs transportent le code réel. Par contre, les autres codes les plus complexes résident dans les nœuds actifs. Par conséquent, les avantages de ces deux approches antérieures existent dans un seul système [B.1]. Ces architectures permettent aux utilisateurs de choisir l’une ou l’autre approche d'après la nature de leur application. Un exemple typique est l'architecture SwitchWare proposée à l'Université de Pennsylvanie. 40 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 I.3.c.1. L'Architecture SwitchWare : SwitchWare utilise une architecture en couches « layered architecture » pour fournir un compromis entre la flexibilité, la sécurité, les performances, et l’usage [B.1]. Les trois couches définies dans SwitchWare sont : Les Paquets Actifs, les Switchlets, et l’Infrastructure du Routeur Actif. La première couche réalise l’approche par paquets actifs et la deuxième couche réalise l'approche par nœuds actifs. Dans SwitchWare, les paquets actifs portent des programmes constituant à la fois de code et des données, et remplacent l'en-tête et la charge utile d'un paquet conventionnel. Le langage de programmation utilisée est le « Programming language for actif networks, PLAN ». c’est un langage léger et qui permet un accès limité aux ressources sans certification. Cependant, elle exécute des actions autorisées quand c’est exigé. Les Switchlets forment la couche centrale de l'Architecture SwitchWare. Les paquets actifs combinés avec les switchlets peuvent implémenter des protocoles. Les Switchlets peuvent dynamiquement être chargés à travers le réseau, mais elles s’exécutent entièrement dans un routeur particulier. Donc ce sont des fonctions de base ou des extensions dynamiques plutôt que du code mobile. Dans l’implémentation courante, les switchlets sont soumises à une sécurité plus lourde que les paquets actifs. L'infrastructure du routeur active est une base robuste sur laquelle les paquets actifs et les Switchlets sont construits. La sécurité de l'architecture SwitchWare est garantie au niveau de cette couche. I.4. Quelques applications des réseaux actifs : Comme mentionné plus haut, la plus importantes application des réseaux actifs provient directement de sa possibilité de programmer le réseau : de nouveaux protocoles ainsi que des techniques rentables et innovatrices peuvent être facilement déployées dans les nœuds intermédiaires. Nous allons voir dans ce qui suit comment ceci est possible pour : le Multicast, le Caching, le Contrôle de congestion, et finalement la gestion des réseaux. I.4.a. Le caching: Une grande quantité du trafic des réseaux actuellement provient des applications dans lesquelles les clients récupèrent des objets à partir du réseau. L’utilisation de cache dans des endroits proches des clients, donc des points stratégiques, peut réduire considérablement le trafic du réseau ainsi que le temps mis pour rechercher des objets ou des pages HTML dans le cas du World Wide Web. Les réseaux actifs peuvent être utilisés pour fournir un modèle de configuration de cache, où l’on aura besoin d’une petite capacité de mémoire, et où d’importantes réductions dans le taux du trafic et dans la latence peuvent être obtenues. Les récents travaux au Georgia Technologie Institute ont considéré le bénéfice de l’association du cache avec les nœuds à travers le réseau. Le modèle proposé est appelé selforganizing wide-area networking cache [B.1]. L’idée de base est de donner la possibilité de décider ou placer les caches en considérant que tous les nœuds du réseau peuvent enregistrer des objets et compté sur la technologie des réseaux actifs pour maintenir une distribution uniforme des caches dans le réseau. 41 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 I.4.b. Le contrôle de congestion : Certaines conditions de réseaux, entre autre le contrôle de congestion, peuvent dégrader d’une manière significative la qualité du flux de l’application. L’utilisation des modèles standard requérant que l’émetteur s’adapte aux nouvelles conditions du réseau a connu des limitations incluant : le temps pour que l’émetteur détecte le nouvel état du réseau (notification de congestion), réagir, et finalement transmettre les données adaptées aux nouvelles conditions du réseau. Tandis qu’au même moment, le récepteur peut subir d’importantes pertes de données. En transportant des informations sur comment s’adapter aux conditions pouvant se produire dans les nœuds du réseau, les modifications appropriées se feront ou et quand ceci est nécessaire. On peut trouver plusieurs exemples où l’ajout des fonctionnalités des réseaux actifs peut aider à traiter cette congestion, entres autres : - un nœud actif peut gérer la largeur de bande disponible en contrôlant le taux des flux de données (utilisation du buffering), - de plus, si plusieurs flots de données coexistent dans un même nœud et chacun d’entre eux ayant des exigences propres pour le contrôle de congestion, alors le nœud actif peut gérer aussi bien les taux d’arrivée de chaque flot en plus du taux globale dans le nœud. - la transformation des données (compression et autre) peut être accomplie par les nœuds actifs subissant une congestion, ainsi donc, le trafic est réduit sans pour autant perdre des données. - La destruction des paquets non importants est une technique classique pour la réduction des taux de charge sur un nœud. Mais, le plus grand problème est comment différentier les paquets importants des non importants car ceci dépend souvent des applications. Le nœud actif peut très bien scruter le contenu des paquets et détecter les paquets importants des autres, bien sur en prenant en compte les types d’applications. I.4.c. Le multicast : Les nouvelles générations de réseaux auront à gérer une variété d’applications telles que l’audio, la vidéo, ou encore la visioconférence. Bon nombre d’entre elles ont besoin du multicast. L’utilisation d’une architecture de réseau actif peut s’avérer très utile. Les nœuds actifs peuvent résoudre d’une manière efficace plusieurs problèmes tels que l’implosion des paquets NACKs (acquittement négatifs), la retransmission inutile, la duplication des paquets et bien d’autres problèmes. Tandis que l’utilisation d’une architecture de réseau passif fournit seulement des solutions partielles aux problèmes précédents. I.4.d. La gestion des réseaux : L’approche conventionnelle pour la gestion d’un réseau est de scruter les dispositifs (matériels/logiciels) constituant le réseau et ceci depuis une station de gestion centrale. Cette station demande les valeurs de certaines variables pour détecter les anomalies. Cette approche concentre l’intelligence dans la station de gestion. De plus, elle limite considérablement la 42 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 possibilité de traquer les problèmes en temps réel et d’une manière efficace (généralement due au temps de rapatriement des valeurs). Les réseaux actifs sont par conséquence la réponse la plus logique à ces problèmes. Car, en rendant les nœuds du réseau actifs, on peut transporter le centre de gestion dans le cœur du réseau et réduire à la fois le délai de réponse et la largeur de bande nécessaire pour la gestion dans le modèle standard. I.5. La Sécurité et la Sûreté dans les réseaux actifs: La sécurité et la sûreté sont deux propriétés de fiabilité d'un système. Un système sûr fournit la protection contre les erreurs des utilisateurs autorisés à exécuter du code sur un nœud, alors qu’un système sécurisé se protège des erreurs qui peuvent être introduites par des utilisateurs non- autorisés[B.1]. Ces deux aspects sont peut-être les problèmes principaux, actuellement, dans les réseaux actifs. En effet, les opérateurs sont très soucieux de la capacité à gérer plusieurs utilisateurs sur un même équipement, surtout quand ces utilisateurs peuvent déployer des programmes et interagir fortement avec le réseau. Cela nécessite d'avoir des systèmes extrêmement robustes et fiables. Effectivement, Dans un réseau actif, les paquets actifs peuvent abuser : des nœuds actifs (reconfiguration, effacement de la mémoire), des ressources du réseau (consommation constantes de connexions réseau, ou une grande partie des cycles CPU disponibles), ainsi que sur d'autres paquets actifs. De plus, les nœuds actifs peuvent à leur tour abuser des paquets actifs. De ce fait nous remarquons qu’un bon niveau de sécurité et de sûreté est indispensable pour le bon fonctionnement de tout le système. Traditionnellement, la sécurité est souvent réalisée avec des mécanismes d'authentification, de cryptographie mais qui pénalisent considérablement les performances du réseau. Le principe de base de la sûreté et la sécurité est l'accès contrôlé aux ressources. Le contrôle de la ressource est dirigé par une politique qui définit quelles opérations peuvent être exécutées sur ces ressources. L'exemple concret le plus répandu est l'utilisation des listes de contrôles d'accès (ACL) du type <objet , sujet , action> ou plus spécifiquement <ressource>, utilisateur , permissions>. Une liste de contrôles d'accès peut donc être vue comme un ensemble de restrictions qui gouvernent l'accès à un objet . On peut difficilement envisager une politique de sécurité sans utiliser des restrictions. Il y a deux types de vérification envisageables : la vérification dynamique et la vérification statique. La vérification dynamique est très importante car on ne peut pas être sur de l’absence de mauvaises instructions dans le code avant l'exécution. Cela est du aux différences entre les langages de programmation qui empêchent d'effectuer des tests communs. Si l'on utilise un ensemble restreint de langages adaptés, on peut envisager d'effectuer plus de tests statiques. Ceux-ci sont intéressants car ils ne sont pas réalisés qu'une seule fois, quelque soit le nombre d'exécutions, tant que le programme n'est pas modifié. Un exemple de cette approche est utilisée par les concepteurs de PLAN . Une autre approche est de restreindre l'accès aux fonctionnalités d'un langage de programmation général (non dédié aux traitements spécifiques des réseaux partagés). Le 43 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 principal inconvénient est qu'il faut analyser soigneusement les implications en terme de sûreté et de sécurité d'accès aux fonctionnalités ou aux services. Les systèmes hybrides forment une approche plus réaliste. L'analyse statique est capable d'assurer que les programmes sont conformes et la vérification à l'exécution est utilisée pour effectuer des tests qui ne peuvent pas être réalisés pendant l'analyse statique. Un bon exemple est l'utilisation de programmes Java; c'est le langage le plus répandu actuellement dans les réalisations de réseaux actifs. I.6. Active Network Encapsulation Protocol (ANEP): Le développement de nombreux projets de Réseaux Actifs a conduit à la création de formats de paquets actifs spécifiques à chaque équipe de recherche. Afin d'uniformiser cette hétérogénéité, le DARPA a créé le protocole d'encapsulation ANEP [B.6]. La portabilité et l'interopérabilité entre les projets sont donc facilitées. Les paquets ANEP peuvent encapsuler les données de n'importe quel protocole dans un format commun (figure 19) permettant ainsi le transport des paquets actifs. Les champs publics et les valeurs publiques des paquets ANEP sont déterminés par l'ANANA (Active Networks Assigned Numbers Authority). ANEP est indépendant de la technologie de réseau sous-jacente (encapsulation dans UDP, IP, Ethernet...) même si l'encapsulation dans UDP est actuellement la plus utilisée. On peut donc choisir parmi plusieurs schémas d'adressage (IPV4, IPv6). Le protocole ANEP permet aussi l'utilisation d'un CRC et d'une authentification non négociée. 0 7 8 15 16 Version 31 Flags TypeID ANEP Header Length ANEP Packet Length Options Payload Figure 19 : Format de l’en tête ANEP 0 1 2 FLG 15 16 Option Type 31 Option Length Option Payload (Option Value) Figure 20 : Format du champ Options • • Les 8 bits du champ version indiquent le format de l’en-tête utilisé (la version aujourd’hui est ). Seulement, le bit le plus significatif parmi les 8 bits est utilisé dans la version « 1 » et indique si le nœud doit acheminer le paquet ou l’abandonner dans le cas ou il ne connaît pas le contenu du champ type ID. Ce champ « type ID » indique l’environnement d’exécution du message. La valeur «0 » est réservée pour les messages d’erreurs. Le champ « Header length » indique la longueur de l’en-tête du paquet et le champ « packet length » indique sa longueur totale (Chacun est composé de 32 bits). 44 Conception et implémentation d’un nœud DiffServ actif • • DEA Réseaux de Télécommunications 2000-2001 Le champ « Option » est décomposé en 2 bits pour le drapeau et 14 bits du champ « option type » (figure 20) où ses valeurs sont aussi contrôlées par ANANA. Un drapeau égal à zéro indique que l’option est non standard. Le champ « Payload » contient le charge utile du paquet La robustesse de ce protocole apparaît lors de l’implémentation d’un nouvel environnement d’exécution où seulement un nouveau « type ID » et « Option type » sont attribués. Le protocole ANEP offre aux utilisateurs la possibilité de contrôler le routage des paquets dans un environnement d’exécution particulier. Les paquets arrivant à un nœud et contenant un en-tête ANEP valide avec un type ID approprié vont être routés au channel connectés à l’EE convenable présent dans ce nœud. Ces canaux sont crées lors du démarrage du nœud. L’EEs peuvent exécuter des paquets constituant un flux passif crées par des systèmes non actif, simplement par création des canaux appropriés. Ces paquets ne contiennent pas des en-têtes ANEP. Par exemple, un EE qui offre le fonctionnement d’acheminement IPV4, peut être intégré. I.7. Conclusion Comme nous l'avons vu dans ce chapitre, la thématique des réseaux actifs est un domaine de recherche nouveau où rien n'est encore figé. Les approches et les projets sont nombreux pour trouver un juste équilibre entre flexibilité et sécurité. Peu de choses ont été standardisées, ce qui laisse un vaste champ d'exploration. II.La plate- forme ANTS. II.1. Introduction : L’architecture ANTS14 permet de construire et de déployer de nouveau protocoles et services [B.2]. Ils sont automatiquement déployés dans les nœuds intermédiaires et les systèmes terminaux en utilisant les techniques de code mobile. C’est un système de programmation distribué qui fournir un modèle (langage de programmation) afin d’exprimer de nouveaux protocoles dans le terme des opérations aux nœuds. Le service réseau offert par ANTS n’est pas fixe ; il est flexible15. Différentes applications sont capables d’introduire des nouveaux protocoles dans le réseau en spécifiant les routines exécutées aux nœuds qui acheminent leurs données. Les applications peuvent personnaliser le traitement du réseau suivant leurs propres besoins. Ce nouvel traitement a de sens seulement dans le contexte de réseaux actifs. Trois concepts clés ont guidé la conception d’ANTS [B.2] : 14 15 Les nœuds du réseau doivent supporter une variété de protocoles réseaux utilisés simultanément. Les nouveaux protocoles doivent être supportés par un accord mutuel des parties intéressées et non pas de toutes les parties du réseau. Finalement, les nouveaux protocoles doivent être déployés d’une façon dynamique et sans avoir besoin de mettre une portion du réseau « Hors service ». Un réseau basé ANTS se compose d’un groupe de nœuds interconnectés qui exécutent ANTS. Le X-Kernel ANTS fournit la plus haute flexibilité accordée à un langage de programmation et convient pour le déploiement dynamique. 45 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Les trois concepts précédents ont introduit les notions suivantes [B.2]: les paquets que l’on trouve dans les réseaux conventionnels sont ici remplacés par des capsules qui référencent le traitement à effectué sur leurs contenus. tous les nœuds (intermédiaires ou finaux) sont remplacés par des nœuds actifs, permettant l’exécution du code correspondant aux capsules et permet aussi de maintenir des variables d’états dans les nœuds. un mécanisme de distribution du code pour assurer que les routines des capsules sont automatiquement et dynamiquement déployées dans les nœuds du réseau, et plus spécifiquement vers les nœuds qui on ont besoin. Ce prototype est écrit entièrement en JAVA et s’appuie sur le protocole UDP pour échanger les messages. On peut parler de couche réseau virtuelle. Chaque nœud sera en fait un Thread Java qui s’exécutera sur une machine, ou encore un ensemble de Threads Java s’exécutant sur une même machine. II.2. Les composantes de l’architecture : ( protocoles, code groupe et les capsules) : Dans ANTS, on a besoin de combiner les routines d’acheminement aux différents nœuds dans un protocole [B.2]. Ce protocole définit donc le traitement qui se produire dans le réseau. Dans ANTS l’utilisation d’un nouveau protocole est faite en utilisant les capsules, les groupes de code, et les protocoles. La relation entre ces entités est illustrée dans la figure (21). • Code Code réf Code Code Code Données Protocole Unité de protection • Groupe de code Unité de transfère • Code de traitement Unité de traitement • Code implantant service réseau un Seul les capsules d’un même protocole peuvent communiquer entre eux Les capsules manipulent que ne les Organisation du code du protocole en unités de transfère Capsule Unité de transmission Figure 21 : Hiérarchie de la composition de la capsule Une capsule remplace un paquet, sa fonction la plus importante est d’inclure une référence à la routine d’acheminement pour être utilisée pour traiter la capsule à chaque nœud actif. Quelques routines d’acheminement sont disponibles à chaque nœud actif. Par contre d’autres routines sont spécifiques pour certaines applications. Ces routines ne résident pas à chaque nœud, mais doivent être transférées à un nœud à travers le système de distribution du code avant que les capsules de ce type puissent être traitées. 46 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Le groupe de code est une collection de capsules de types liés dont les routines d’acheminements sont transférées comme une seule unité par le système de distribution de code. Le protocole est une collection des groupes de code liés. Par conséquent, le protocole est l’unité par laquelle le réseau est personnalisé. Les capsules dans un seul protocole vont typiquement manipuler l’information partagée dans le réseau. II.3. Format de la capsule : Le format de la capsule [B.2] est présenté dans la figure (22). Chaque capsule porte un identificateur pour son protocole ainsi que le type de la capsule dans ce protocole. Cet identificateur est utilisé pour le démultiplexage des routines d’acheminement. Protocol / Capsule Shared header rest of header …. payload Figure 22 : Format de la capsule Le reste du format de la capsule est composé d’un en-tête partagé qui contient les champs communs à toutes les capsules, un type dépendant de l’en-tête qui peut être mis à jour quand la capsule traverse le réseau, et une charge utile. Les composantes importantes de l’en tête commune sont les adresses sources et destinations et des informations sur les restrictions en termes de ressources à appliquer dans les nœuds. Le reste des champs de la capsule varie selon son type. II.4. Le modèle d’exécution dans les nœuds actifs : Le modèle d’exécution est basé sur l’hypothèse que le premier but du traitement fait dans le réseau actif est pour faciliter la communication. Ce modèle est optimisé pour supporter une forme générale d’acheminement du paquet plutôt qu’un traitement général [B.2]. Il a les caractéristiques suivantes : • La routine d’acheminement d'une capsule est initialisé au niveau de la source et ne peut pas être changé quand elle traverse le réseau. Aussi les capsules qui appartiennent à un protocole ne peuvent pas créer ou manipuler des capsules d’un autre protocole. Par conséquent, un utilisateur ne peut pas contrôler le traitement des capsules d'un autre utilisateur d’une manière involontaires. • Ce n’est pas tous les nœuds du réseau qui ont besoin d’exécuter la routine d’acheminement d’une capsule. Selon les ressources disponibles et la politique de sécurité, quelques nœuds peuvent choisir de ne pas exécuter des capsules. Dans ce cas là, ils accomplissent l’acheminement par défaut, comme dans IP. En outre, les routines peuvent choisir les nœuds où c'est utile d’exécuter leur traitement selon l'emplacement du nœud et ses capacités. • Dès que ces routines peuvent être définies par des utilisateurs non fiables, ils sont limités dans leurs privilèges pour éviter des problèmes de fiabilité. De ce fait, l’exécution du code de l’utilisateur est limitée en terme de consommation mémoire, CPU, et bande passante. 47 Conception et implémentation d’un nœud DiffServ actif • DEA Réseaux de Télécommunications 2000-2001 Par défaut, seulement les capsules qui appartiennent au même protocole peuvent partager des états. Une fois un protocole est crée, il sera fermé dans le sens que les nouveaux types de capsule prétendant appartenir à lui pour manipuler ses données seront interdites. Etant donnée les primitives précédentes, le nœud doit offrir un modèle d’exécution qui les supporte. II.5. Le protocole de chargement du code : Le chargement in-band du code requière que chaque paquet transporte à la fois son code et les valeurs d’états correspondantes afin qu’il soit traité par tous les nœuds qu’il traverse. Donc même si plusieurs paquets consécutifs doivent être traités par le même code, chaque paquet doit transporter son propre code [B.2]. ANTS élimine cette redondance du transport de code en utilisant un protocole de chargement sur demande (demand loading protocol). Au lieu de transporter le code dans chaque paquet, ANTS compte sur les nœuds se situant à l’intérieur de son architecture, d’émettre une requête de demande de code lorsque celui-ci n’est pas disponible dans son cache. Dans l’architecture actuelle d’ANTS, le nœud transmet une requête de demande de code seulement à son voisins en amont, à la réception du code de ce voisin, le nœud enregistre le code dans sa mémoire cache pour une durée de temps finie. Il utilise ensuite ce code pour traiter tous les paquets successif ayant le même identifiant de code. La figure (23) montre le processus complet du protocole de chargement de code d’ANTS. Depuis que ce protocole se charge du transfert du code, les applications ont seulement besoin de fixer les valeurs d’états correspondantes au code dans le paquet transmis dans le réseau. 1 capsule 2 demande réponse Groupe de code 3 4 capsule Groupe de code Nœud précédent Nœud actuel Figure 23 : Protocole de chargement sur demande de ANTS. Le protocole de chargement de code d’ANTS a de nombreuses propriétés bénéfiques. En premier, le code est transmis uniquement aux nœuds qui en font la demande. De plus, les applications n’ont besoin ni de prédéterminer la route des paquets pour transmettre le code à tous 48 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 les nœuds du chemin de données, ni encore de faire une diffusion (broadcast) du code à tous les nœuds du réseau. En outre, puisque la plupart des protocoles réseaux utilisent fréquemment des flots de paquets, le nombre de paquets supplémentaires apportés par le protocole de chargement du code est amorti par le grand nombre de paquets transmis. Bien sur, pour les protocoles utilisant un faible nombre de paquet l’utilisation de ce protocole peut être un handicape pour la transmission. II.6. Prototype d’implémentation : L’implémentation, qui a été faite par ANTS, a été conçue essentiellement pour nous permettre d’évaluer la capacité de l’approche ANTS pour créer et déployer de nouveau protocoles. L’implémentation actuelle est écrite en Java et est exécuté comme un processus de niveau utilisateur sous Linux [B.2]. Le protocole de distribution du code transforme les routines de traitement des capsules en un fichier Java au format « .class ». Java a été choisie à cause de son support pour la sécurité et la mobilité. Sa flexibilité comme un langage de haut niveau et son support de chargement dynamique, multithreading, et les librairies standard ont permis d’évoluer ce design en maintenant un petit code de base. Les composantes principales de l’architecture ANTS (figure 24) sont implémentées en utilisant les classes suivantes : Tableau 2 : Les classes et les méthodes d’ANTS. Classes Méthodes Node Channel Application Capsule address, get, put, routefornode, delivertoapp send, receive, node send, receive, (upcall) node evaluate, length, serialize Quand un nœud ANTS est lancé, il instancie un objet nœud “Node Object”, un objet channel « Channel Object » pour chaque interface réseau et un objet application « Application Object » pour chaque application locale. Les applications peuvent ensuite communiquer en échangeant des capsules entre elles. Les capsules sont envoyées via le nœud local qui les transmet comme des paquets en utilisant les services de la couche liaison classique. Quand des paquets sont reçus de la couche liaison, le channel tente de les convertir en objets « instances » de la sous classe Capsule appropriée. Dès que l’objet capsule est crée, le channel appelle sa méthode « evaluate » en passant l’objet Noeud comme paramètre. Lors de son évaluation, le code de la capsule a accès à la fois au soft state du protocole associé et aux d’autres variables (i.e tables de routage). 49 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 End System End System EE E App App Protocol Active Node Extension Channel Active Node Protocol Extension Channel Capsule Node Active Node Channel Capsule Node Node Figure 24 : Les principales composantes d’ANTS. II.6.a. La Classe nœud : La classe Node représente l’environnement d’exécution d’un seul nœud du réseau incluant son cache et son protocole de distribution de code. Elle offre un ensemble de primitives et de services pouvant être invoquées par : • • • Les capsules, pour exécuter leurs routines d’acheminement et transférer leurs codes. Les applications, pour enregistrer les protocoles et envoyer et recevoir des capsules du réseau. Les extensions, pour attacher des nouveaux services au nœud. Ces primitives donnent l’accès aux variables d’état du nœud. Les routines les plus importantes sont : - adresse() : retourne l’adresse du nœud local. fouteForNode : transmet une capsule vers le nœud spécifié, utilisant la table de routage par défaut (le chemin le plus court). sendToNeighbord() : transmet la capsule vers tous les voisins directs. deliverToApp() : delivre la capsule à l’application attachée au nœud local. time() : retourne la valeur du temps courant. softstate.get() : recherche un objet dans le cache du nœud local. softstate.put() : introduit un objet dans le cache du nœud local. softstate.remove() : supprime un objet du cache du nœud local. II.6.b. La Classe Channel : La classe Channel offre l’interface à la couche liaison, reliant les nœuds via des canaux point à point ou médium partagé [B.2]. Actuellement, ceci est fait sur UDP. Ce choix permet à de petits réseaux d’être construits en exécutant un nœud par machine. Des réseaux plus grands 50 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 peuvent être émulés en exécutant plusieurs nœuds par machine et reliés les nœuds par des canaux UDP. II.6.c. La Classe Capsule : Une capsule est la généralisation d'un paquet. Sa fonction la plus importante vis-à-vis de l'architecture est de contenir une référence vers une routine de forwarding qui sera utilisée pour traiter la capsule dans chaque nœud actif. La création d’une nouvelle capsule se fait toujours en prenant une sous classer de la classe Capsule du package ANTS. La méthode principale d’une capsule contenant les fonctionnalités d’un protocole est la méthode evaluate(Node n), elle est exécutée à chaque nœud traversé par la capsule. Toute nouvelle capsule hérite des méthodes suivantes pour accéder aux zones d’en-tête qui font partie de la classe de base Capsule : - GetSrc() : retourne l’adresse source de la capsule comme un entier sur 32 bits. GetDSt() : retourne l’adresse destination de la capsule comme un entier sur 32 bits. SetDst () : fixe l’adresse destination de la capsule. GetType() : retourne le type de la capsule. Ce type est identifié par une chaîne de caractère. En plus de la procédure evaluate() à redéfinir pour chaque capsule, il faut aussi réécrire les méthodes suivantes : - Code() : initialise une représentation linéaire de l’objet Capsule pour une transmission sur le réseau (sérialisation). Decode () : initialise une occurrence de l’objet Capsule à partir d’une représentation linéaire reçue du réseau (désentialisation). Les deux fonctions ci-dessus sont des fonctions sensibles à la sécurité. II.6.d. La Classe Application : Les programmes qui utilisent les services ANTS sont construit en enrichissant la classe Application. Elle se situe généralement dans les bouts du système et fournit des routines pour injecter des capsules dans le réseau et recevoir des capsules du réseau. La routine la plus importante de cette classe est la méthode receive(Capsule cap) pour pouvoir traiter les capsules et en exploiter le contenu. II.6.e. Les extensions du nœud actif: Les extensions d’un nœud augmentent les services intégrés au nœud avec des composantes plus spécifique pour des traitements particulier. La première extension intégrée est le GroupsManager [B.3], supportant les primitives du multicast. D’autres candidats sont le RSVP, les routines de transcodage, et ainsi de suite. Le nœud actif doit fournir un moyen aux extensions de s’attacher pour qu’elles puissent offrir leurs services aux routines d’acheminement des capsules. Une fois l’extension est attachée et localisée, les capsules peuvent invoquer ses services directement : 51 Conception et implémentation d’un nœud DiffServ actif • • DEA Réseaux de Télécommunications 2000-2001 findExtension() celle ci est appelée, typiquement via un initiateur statique sur la classe capsule, pour organiser un nom d’une extension à son index local. getExtension() elle est appelée au nœud pour renvoyer une référence à une extension particulière. Si l’extension n’est pas présente, une valeur égale a NULL est renvoyée. Une nouvelle extension est développée en sous classant la classe Virtuelle Extension. Elle doit être installée dans le nœud comme faisant partie de la configuration locale. L’interface offerte par le nœud pour assister les extensions est comme suit : • • attachExtension() Elle informe le nœud sur l’extension et permet aux capsules de la trouver. exportClass() Elle permet aux extensions d’exporter des classes eux-mêmes. Sans cet appel, le nœud va refuser l’accès du code de la capsule aux classes. II.6.f. La configuration Pour un but pratique, les expérimentations avec les réseaux actifs nécessitent que la topologie du réseau soit crée. Pour cela ANTS fournit trois fichiers nécessaires pour la configuration et l’exécution : - nomfichier.start : permet de lancer les nœuds et l'application. nomfichier.routes : contient les tables de routage initiales. nomfichier.config : définit la topologie du réseau et les applications à lancer sur chaque nœud. Le fichier nomfichier.routes est créé automatiquement grâce au programme en TCL makeroutes qui calcule les routes à partir du fichier nomfichier.config. Ce dernier est le fichier qui configure le réseau, c'est-à-dire qu'il contient les nœuds, leurs adresses dans ANTS et la correspondance avec les adresses physiques, les applications ainsi que les extensions qui doivent être lancées sur chaque nœud. nomfichier.start est simplement un script de lancement des différents nœuds [B.3]. II.7. Avantage et limites de ANTS Le mécanisme le plus intéressant dans ANTS est sûrement son système de chargement de code à la demande. Ainsi, le code est déployé seulement où l'application en a vraiment besoin. Par contre, ANTS ne gère pas encore les aspects multi-utilisateurs. Au niveau de la gestion des protocoles, ANTS fait l'hypothèse qu'une capsule ne contient pas du code qui monopolise les ressources du nœud. Les traitements doivent être courts. Il faudrait cependant avoir un mécanisme de vérification et de contrôle sur l'exécution des capsules. III. Conclusion. Les réseaux actifs représentent une nouvelle approche pour l’architecture du réseau. Les routeurs peuvent exécuter des traitements sur les données de l'utilisateur et les paquets peuvent transporter des programmes qui seront exécutés dans les nœuds et pourront ensuite changer leur état. Actuellement, la communauté de la recherche est divisée sur l’utilité des réseaux actifs. D'un côté, les réseaux actifs fournissent une infrastructure réseau plus flexible avec des fonctionnalités 52 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 intéressantes. De l'autre côté, ils sont évidemment plus complexes que les réseaux traditionnels et leurs exigences en terme de sécurité sont considérables. Nous avons vu dans ce chapitre un prototype de réseaux actif ANTS permettant un déploiement dynamique et automatique de protocoles réseaux dans des nœuds bien spécifiques du réseau. Donc le réseau est vu comme un système de programmation distribué englobant un protocole de distribution de code et une technique de cache. Finalement, à la question : « les réseaux actifs vont-ils remplacer les réseaux actuels ? », on choisira de rester prudent. En effet, les différents prototypes de réseaux actifs et notamment ANTS se révèlent encore lourds et d'un niveau de sécurité insuffisant. Les performances sont encore faibles et les ressources nécessaires trop importantes pour une utilisation à grande échelle, stable, et performante. Dans le chapitre suivant, nous proposons une architecture de contrôle actif par politique dans un réseau DiffServ. 53 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre V L’architecture ACDN (Actif Control DiffServ Network) Et son implémentation I. Introduction : Dans ce chapitre, nous proposons une architecture permettant d’automatiser et de distribuer le contrôle dans un réseau DiffServ. En effet, l’architecture de contrôle par politique actuellement normalisée par l’IETF pour les réseaux DiffServ souffre d’un manque de dynamicité et de réactivité aux éventuels dysfonctionnements (non-respect des SLAs). Pour pallier à cela, nous proposons une architecture où le contrôle se fera en deux phases (i) un contrôle par applications actives, où des algorithmes de contrôle distribués sont déployés, par l’administrateur du domaine, dans différents nœuds du réseau, et (ii) un contrôle par politiques actives, qui à partir des informations obtenues par les algorithmes de contrôle distribués, entreprend des décisions au niveau du serveur de politique. Ces décisions peuvent mener à l’installation dynamique de nouveaux TCBs. Nous détaillerons également un exemple d’application active qui a fortement inspiré ce travail Cette application a pour titre « segmented Adaptation of traffic agregates » ou bien agrégats adaptés dans un segment du réseau. Le but de cette approche est de faire un contrôle de congestion dépendant de la classe de service (agrégat). Afin de valider l’architecture ACDN proposée, une implémentation est en cours. Nous expliquons, comment la plate forme ANTS peut être étendu afin d’intégrer toutes les composantes d’un nœud DiffServ (TCBs). II. L’architecture ACDN Actuellement, les contrôles sont fait de façon statique nécessitant souvent une intervention humaine. En effet, l’administrateur du réseau doit avoir une connaissance quasi complète de ce qui va se passer dans son réseau afin de pouvoir gérer et configurer ses différents éléments (Figure 25). Le modèle proposé a donc pour but d’introduire un ensemble de fonctionnalités permettant d’automatiser et de distribuer le contrôle des différents nœuds du réseau. Ce modèle exploitera les notions introduites par le paradigme des réseaux actifs pour permettre une introduction rapide et transparente de ces fonctionnalités. Policy Repository station d'administration Plan de contrôle (serveurs) Routeur DiffServ COPS -PR PDP Plan de contrôle (PEP) plan de données (DiffServ) TCB Figure 25 : Architecture de contrôle des réseaux DiffServ. 54 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 L’architecture ACDN16 est une architecture de contrôle tirant partie de la flexibilité des réseaux actifs tout en respectant les spécificités de l’approche DiffServ, ainsi que les spécificités du modèle de contrôle par politique présenté dans le chapitre III. Cette architecture permet d’offrir un cadre général pour un contrôle complet d’un domaine DiffServ. Ce contrôle se fera en deux phases : 1. La première phase, consiste en le déploiement sur les nœuds du réseau, par l’administrateur du réseau ou un ISP, d’applications de contrôle distribuées sous forme d’applications actives (AA). Cette phase est appelée contrôle par applications actives. 2. La seconde phase, consiste en le déploiement et en l’installation de nouveaux TCBs dans les nœuds DiffServ dépendamment de ce qui se passe dans le réseau. En effet, lorsque le réseau est peu chargé, et donc bien dimensionné, un administrateur de réseau peut se contenter d’installer dans les routeur de cœur une version simplifiée du TCB (figure 2b). Cependant, si le besoin s’en fait ressentir, une application de contrôle peut déclencher l’installation d’un nouveau TCB plus complexe (figure 3). La complexité du TCB installé dépendra du problème rencontré dans le réseau, lequel peut être détecté par une application active. Cette phase est appelée contrôle par politiques actives. Le modèle proposé a donc pour but d’introduire un ensemble de fonctionnalités permettant d’automatiser et de distribuer le contrôle des différents nœuds du réseau. Le paradigme des réseaux actifs permettra une introduction rapide et transparente de ces fonctionnalités. La figure (26) montre les différents éléments composant l’architecture ACDN, les rôles respectifs de ces éléments sont : • • • • 16 Application de Contrôle : C’est l’application qui va permettre d’installer dynamiquement et de façon automatique de nouveau TCBs dans le réseau. Cette application offre également la possibilité de configurer (provisionner) dynamiquement les TCB en déclenchant l’envoi d’une décision de configuration par le PDP. Station d’administration : L’introduction de nouvelles politiques ainsi que des nouveaux algorithmes de contrôle sera réalisée au travers de cette entité. De nouveaux algorithmes de conditionnement de trafic (TCA) peuvent également être introduit. Cette station aura également pour tache de vérifier la validité et la conformité des politiques introduites dans le policy repository. Serveurs de codes (AA et TCA) : Ces serveurs contiendront les différents codes des applications actives ainsi que des algorithmes de conditionnement de trafic qui seront utilisés dans le réseau. A chacun de ces serveurs sera associé un mécanisme d’installation de code permettant le chargement du code et son installation dans les nœuds. Fonction de filtrage : Les applications actives étant des applications distribuées constituées d’agents communicants dans la plupart des cas, il est donc nécessaire que les nœuds puissent interpeller et rediriger les paquets destinés à ces applications. Cette direction est réalisée grâce à la fonction de filtrage que l’on détaille plus bas. ACDN : Active Control of DiffServ Network . 55 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 station d'administration Plan de contrôle (serveurs) Serveur de Code (AA) Serveur de code (TCA) Policy Repository Mecanisme d'installation Mecanisme d'installation PDP COPS -PR Application de Contrôle AA Routeur DiffServ Environnement d'execution ANEP Plan de contrôle (PEP) Fonction de Filtrage TCB Plan de donnée (DiffServ) Figure 26 : Architecture ACDN. II.1. Fonction de filtrage Afin que les différents agents, constituants les applications de contrôle distribuées, puissent communiquer entre eux, une fonction de filtrage a été introduite. Cette fonction aura pour tache de reconnaître puis d’intercepter les capsules (paquets actifs) appartenant aux applications actives installées dans le nœud. Comme vu sur la Figure 27, cette fonction se situe en amont du TCB, permettant ainsi de retirer les capsules avant que celles ci ne soient prises en compte par le TCB puis de les remettre sur le chemin des données (Data path). Afin de rester conforme au modèle DiffServ, on notera également que cette fonction doit marquer les paquets (champs DSCP) avant de les mettre sur le chemin des données. Ce marquage se fera selon la QdS que l’administrateur attribuera à son application de contrôle. Une application active pouvant être installé sur un ensemble restreint de nœuds dans le réseau, il est nécessaire que la fonction de filtrage puisse intercepter uniquement les capsules des applications actives que le nœud contient. Pour se faire, la fonction de filtrage utilisera une table de FlowID identifiant chacune des applications actives du nœud. Cet identifiant pourra être le quintuplé (adresse source, adresse destination, N° port source, N° port destination, protocole ID) pour IPv4 ou le champ FlowID pour IPv6. La table des FlowID est mise à jour à chaque fois qu’une application de contrôle distribuée est introduite ou retirée du réseau. Cette mise à jour s’effectue par une application active résidant de façon permanente dans tous les nœuds du réseau. 56 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 MAJ FlowID Environnement d'execution Routeur DiffServ (Architecture ACDN) ANEP Tableau FlowId Fonction de filtrage Plan de donnée (DiffServ) TCB Figure 27 : Mise à jour de la table des FlowID et fonction de filtrage Afin de pallier au problème de mise à l’échelle qui pourra survenir. Le nombre d’applications actives dans un nœud sera limité. II.2. Exemple d’application active : Agrégats adaptés dans un segment du réseau (SATA : Segmented Adaptation of Traffic Agregates) Dans l’architecture DiffServ, et en particulier les sous-classes AF, la congestion peut survenir et des violations de contrat de service peuvent se produire malgré le conditionnement de trafic et le provisionnement des ressources. Les architectures de QdS comptent sur le provisionning des ressources basées sur les classes et donc essayent, d’un coté, de réduire la probabilité d’avoir une congestion et de minimiser l’impact de la congestion sur le trafic privilégié d’un autre côté. L’approche SATA est basée essentiellement sur cet aspect. La congestion peut être vue comme une cause possible d’erreur ou d’un défaut dans la livraison d’un service avec une QdS exigée. Pour cela, il vaut mieux prendre en considération, dans l’architecture de QdS, le besoin d’un modèle de récupération d’erreur. Une des solutions suggérée pour récupérer l’erreur est basée sur trois éléments : le contrôle de congestion agrégé, le contrôle de congestion basé au domaine, et le contrôle de congestion basé sur les classes de service [B.7]. Elle se traduit donc par l'introduction de nouvelles fonctions de contrôle et de gestion dans les architectures existantes. Actuellement, la seule technologie qui permet le déploiement des nouvelles fonctions est la technologie des réseaux actifs et programmable. Ces architectures sont en effet la seule manière de rendre un réseau flexible. Les recherches actuelles pour la mise en oeuvre de QdS DiffServ se divise en deux catégories. Une se concentre sur le conditionnement du trafic et le contrôle d'admission aux extrémités du réseau et l'autre sur le provisionning des ressources au cœur du réseau en définissant les comportements par saut (PHBs). La combinaison du conditionnement de trafic aux bords et le provisionning des nœuds de cœur par la spécification des PHBs est conçue pour offrir des comportements de bout en bout pour un agrégat de trafic. Un tel comportement, limité à un domaine administratif tel un segment du réseau, est connu sous le nom de comportement du domaine « per domain behavior, PDB». Le but ultime de DiffServ étant de composer des services à travers les PDBs. Afin d’éviter la violation de QdS visé dans un segment, des mécanismes de détection d'erreur de la QdS seront déployés aux routeurs de bordure pour signaler le défaut. Les routeurs de bordure à leur tour peuvent choisir de déclencher des techniques de récupération d'erreur. Les actions pour rétablir 57 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 l’erreur seront exécutées sur l’agrégat tout entier conformément au modèle DiffServ. Ces actions peuvent être vues comme faisant partie de SLA bilatéral entre les fournisseurs. Cette méthode ne nécessite aucune connaissance liée au micro flow. La récupération de l'erreur segmentée permettra au réseau de contrôler sa propre utilisation des ressources dans la structure DiffServ. III. Implémentation sous ANTS : Le but de l’implémentation, qui est en cours, est de valider l’architecture et ses composants. Notre implémentation se basera sur la plate-forme développée dans le cadre d’un projet RNRT Amarage. Cette version d’ANTS V1.2, écrit en JAVA, a été développée par le Loria et permet à ANTS de fonctionner sur IPV6. A l’inverse du plan architectural, dans l’implémentation, le nœud DiffServ (figure 28) réside entre l’environnement d’exécution et le niveau IP. Les différents algorithmes du classifier et ceux des éléments constituants le TCB seront intégrés dans ANTS. Les classes « Channel », « AddressChannel »,… « » seront modifiées pour créer plusieurs files d’attente, chacune pour une classe de service donnée. De plus, au lieu d’une discipline de scheduling FIFO, une Priority Queuing (PQ) algorithme est intégré pour servir les différentes files d’attente selon leurs priorités. Control Plane Filtrage Environnement d'Exécution Active Diffserv/ Data Plane ANEP Node OS Active Node ANTS Node OS Niveau IP Router (Hardware) Figure 28 : Implémentation du DiffServ Actif Dans l’architecture DiffServ, le traitement différencié des paquets s’appuie sur trois opérations fondamentales. La classification des flux en classes de service, l’introduction de priorités au sein des classes et la gestion du trafic dans une classe donné. Pour l’implémentation, deux types de flux seront utilisés dans chacun de deux scénarios : Un flux qui modélise le trafic EF/AF (flux prioritaire) et un flux qui modélise le trafic BE (flux non prioritaire), donc deux files d’attentes seront gérées, une pour chaque type de flux (EF, BE). Ces files sont servies par un Ordonnanceur suivant le modèle PQ où la file de la classe EF a une priorité plus haute que la file BE. 58 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Le premier scénario/démonstrateur (figure 29) utilisé afin de tester cette implémentation, représente un domaine qui doit être géré par un PDP. Il est constitué de trois nœuds interconnectés, deux nœuds de bordures et un nœud de cœur. Le trafic est généré par deux sources clients, Sender1 et Sender 2. Ils sont connectés aux routeurs de bordure, edge1 et edge2. Ces deux nœuds de bordure contiennent des TCBs comportant la classification du trafic, le policing et le marquage. Deux récepteurs, receiver1 et receiver2 connectés avec le routeur de cœur, reçoivent les flux envoyés respectivement par sender1 et sender2. Le routeur de cœur implémente une « priority scheduling » algorithme pour les agrégats selon leurs priorités. Le deuxième scénario (figure 30) est plus complexe due à la nécessité d’utilisé un classifier multi field aux routeurs de bordure. Pour ce deuxième scénario, le premier émetteur génère un flux AF, par contre le deuxième génère un flux best effort. Edge Router Edge Router Sender 1 Sender 2 BE EF Classification Policing Marking Core router BE EF Classification Policing Marking Classification Priority Scheduling Receiver 2 Receiver 1 Figure 29 : Scénario (1) de différentiation des services. Receiver 1 AF Sender 1 BE Sender 2 Edge Router Edge Router Classification Policing Marking Priority Scheduling AF Core router BE Classification Policing Marking Classification Priority Priority Scheduling Scheduling Figure 30 : Scénario (2) de différentiation des services Les disciplines installées au niveau des routeurs sont les suivants : 59 Receiver 2 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 III.1. Les disciplines pour les routeurs de bordure : Le Classifieur par flux (Multi field classifier): Il est utilisé aux routeurs de bordure. Dans le premier scénario, dés qu’une seule application à la station du client génère du trafic, on n’a pas besoin des filtres de classification aux routeurs de bordure. Le Marker : Dans notre Démo, on ne mesure pas le trafic avant de marquer ses paquets. Les paquets classés par le classifier seront directement marqués par le DSCP correspondant à leurs classes de service. Ces DSCP sont les suivants : « 000000 » pour le trafic BE et « 101110 » pour le trafic EF. Le tableau 1 « classes de AF », dans le chapitre II, indique les différents DSCPs pour chaque classe AF. Le Policer/ dropper : On utilisera dans notre Démo la discipline « Absolute Droppe r » où tous les paquets qui arrivent à son entré seront rejetés. Le Scheduler : Pour le premier scénario, une discipline de « FIFO » est appliquée aux routeurs de bordure. Par contre, au routeur de cœur, une discipline de « Priority Queuing » est utilisée. III.2. Les disciplines pour les routeurs de cœur: Le classifier par agrégat : un classifier BA sert à classer les paquets selon leurs DSCPs. Le scheduler : Le traitement différentié dans le cœur d’un réseau DiffServ implique deux axes : les classes de service et la notion de priorités. Chacune des files d’attente dans le routeur représente une classe de service. Leurs propriétés, en termes de bande passante ou de retard moyen, dépendent du mécanisme de scheduling. Pour notre démonstrateur, une discipline de priority queuing a été choisie. Priority Queuing, PQ Le modèle PQ utilise plusieurs files d’attente. Les paquets classifiés sont mis dans l’une des files correspondant à sa valeur du DSCP. Les files sont ensuite servies suivant un algorithme spécifique. Celle qui contient les paquets avec la plus haute priorité sera favorisée par rapport aux autres files. Cependant, l’algorithme PQ induit une dégradation de performances. Lorsque le trafic classé prioritaire est anormalement élevé, le trafic non prioritaire peut être rejeté par manque de buffer. III.3. Le « design » de programmation : Notre travail fait partie du projet RNRT Amarage où d’autres partenaires du projet ont besoin d’utiliser notre implémentation pour faire passer leurs flux Multimédia. Pour cela, il est très utile de mettre un « design » flexible pour permettre aux autres partenaires d’insérer facilement des classes, de profiter des interfaces, …etc que nous offrant par notre architecture. La figure suivante (figure 31) montre plus en détaille, le placement de notre module de Qualité de service dans l’architecture de la plate forme ANTS. Notre module se positionne dans la classe Channel et offre une Qualité de Service en appliquant un modèle DiffServ entre les différentes capsules reçues. Cette figure montre aussi les quatre interfaces entre ses composantes: deux interfaces sont entre le système d’exploitation et la classe Channel et les autres sont entre la classe Channel et le nœud DiffServ. Ces interfaces sont : 60 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 “sendToEE”: Cette interface a pour rôle d’envoyer les capsules filtrées par la fonction de « By pass » à l’environnement d’exécution. “receivefromEE”: Cette interface a pour rôle de délivrer les capsules traitées par l’environnement d’exécution au plan de données. “receiveFromOS”: Cette interface a pour rôle de recevoir les paquets arrivant au nœud. “sendToOS”: Cette interface a pour rôle d’envoyer les paquets traités dans le nœud au système d’exploitation pour les transmettre au nœud suivant. Node Channel Réception/Emission de capsules Du Node QoS Réception/Emission de capsules De L’OS OS Figure 31 : Placement de QdS dans la plate forme ANTS. Notre module sera constitué d’une classe Filter et d’une classe TCB (figure 32). La classe Filter s’occupe de « by passer » les capsules a l’environnement d’exécution si elle le souhaite et la classe TCB s’occupe du conditionnement du trafic pour offrir de la qualité de service. La classe TCB est elle-même constituer de plusieurs classes représentant les différents éléments du TCB. Nous décrivons ci-dessous les différentes classes en spécifiant leurs fonctionnalités dans l’architecture. 61 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 ActiveQos TCB ActiveQos CoActiveQos EdActiveQos EdActiveQos1 Filter EdActiveQos2 CoActiveQos2 CoActiveQos1 Figure 32 : Hiérarchie des classes (a) TcbElem Classifier Dropper Meter TCB Scheduler Classifier Meter EdClass Dropper CoClass EdDropp CoDropp Figure 33 : Hiérarchie des classes (b) Capsule QosCapsule OpCapsule MajCapsule DataCapsule Figure 34 : Hiérarchie des classes (c) 62 … Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 La classe ActiveQos : C’est une classe générique qui représente le plan de données d’un nœud DiffServ. Elle comporte la classe TCB et la classe Filter et implémente les quatre interfaces citées ci-dessus. Cette classe initialise un Thread qui s’occupe de recevoir les capsules, les envoyer à l’environnement d’exécution et les délivrer au premier élément du TCB. ActiveQos a deux branches : EdActiveQos et CoActiveQos. La classe EdActiveQos : Cette classe hérite la classe ActiveQos. Elle représente le plan de données de DiffServ au niveau du nœud de bordure. Elle instancie les plans de données aux nœuds de bordure : EdActiveQos1 et EdActiveQos2 La classe CoActiveQos : Pareillement que la classe précédente, sauf que cette classe représente le plan de données du DiffServ au niveau du nœud du cœur. Elle instancie CoActiveQos1 et CoActiveQos2. La classe Filter : Cette classe fait partie de la classe ActiveQos. Elle contient une fonction de « byPass » suivant le flow ID d’une capsule. La fonction « bypass » situant en amont du TCB, permettent de retirer les capsules avant que celles ci ne soient prises en compte par le TCB. Cette fonction doit être capable d’intercepter uniquement les capsules que devons être exécutées sur le nœud actif. La classe FlowId : Elle identifie les flux de chacune des applications actives. Cet identifiant pourra être le quintuplé (adresse source, adresse destination, N°port source, N° port destination, protocole ID) pour IPV4, ou le champ FlowID pour IPV6. Donc cette classe contient le quintuplé du IPV4 et le FlowID du IPV6. La classe TCB : Cette classe représente le trafic conditionning block d’un nœud DiffServ. Elle comporte le classifier, le Dropper, le Scheduler, le Meter, le Marker. La classe TCBElem : Cette classe représente chaque élément du TCB (figure 33). Elle a une branche pour chaque élément : Classifier, Dropper, Scheduler. Elle contient deux fonctions : exec() et deliverToNext(). La fonction « exec » est une fonction abstract. C à d, qu’elle a un rôle spécifique à chaque élément du TCB. Par exemple, la fonction « exec » classifie les paquets entrant dans la classe classifier. Par contre, elle marque les paquets dans le Marker. Cette fonction prend comme paramètre la capsule. Chaque élément du TCB, après avoir reçu la capsule, il la traite et l’envoie à l’élément suivant à travers la fonction « deliverToNext ». Cette fonction prend comme paramètre : la capsule et l’élément suivant à lequel envoie la capsule. La classe Classifier : Cette classe est sous la forme d’un Thread pour recevoir les capsules émises par la classe filter et se charge de les classifier dans des classes de service. 63 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 La classe Scheduler : Cette classe est sous la forme d’un Thread pour lire des capsules à partir des files d’attentes et les envoyer au système d’exploitation pour les transmettre dans le réseau. Seulement, le classifier et le scheduler sont sous forme de thread. Tous les classes qui héritent de la classe TcbElem ont chacun deux branches de classe: Une classe pour l’élément de bordure, l’autre pour l’élément de cœur. Les autres classes déterminent la fonction exec() implémenté dans chaque élément du Tcb. La classe Capsule : Cette classe faisant partie du package ANTS et est la généralisation d’un paquet. Chaque nouvelle capsule se fait toujours en prenant une sous classe de la classe capsule (figure 34). La méthode principale d’une capsule est la méthode evaluate(Node n) qui s’exécute à chaque nœud traversé par la capsule. La classe QosCapsule : Cette classe hérite de la classe Capsule. Elle permet de rendre la capsule fondamentale de ANTS, une capsule qui transporte des indications de ses exigences de Qds. Donc la classe QosCapsule est la généralisation d’un paquet DiffServ dans notre architecture. Toutes les classes des capsules traversant le réseau DiffServ actif sous classe la classe QosCapsule. Ces sous classes sont : OpCapsule, MajCapsule, DataCapsule La classe DataCapsule : Cette classe hérite de la classe QosCapsule. Elle permet aux applications de transmettre les données utilisant les routes par Défaut et en profitant des paramètres de QdS existants (hérité de QosCapsule). La classe OpCapsule : Cette classe représente les capsules qui transportent les codes des algorithmes des applications actives et les mécanismes des éléments du TCB. La classe MajCapsule : Cette classe représente la capsule d’ouverture de la session quand un opérateur désire envoyer son flux. C à d, celles de l’application de mettre à jour le tableau de Flow Id dans chaque nœud. IV. Conclusion: Dans ce chapitre, nous avons proposé une architecture de contrôle actif d'un nœud DiffServ ainsi que donné un exemple d'une application de contrôle active. Nous avons également décrit le modèle d'implémentation qui nous permettra de valider l'architecture proposée et ses composantes. Finalement, on a détaillé la spécification de la hiérarchie des classes pour l'intégration des différents éléments du TCB dans l'approche ANTS. 64 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Chapitre VI Conclusion et Perspectives Plusieurs problèmes ont été identifiés dans l’Internet actuel. Principalement le manque ou l’absence de qualité de service (QdS) adéquate pour les applications multimédia. De ce fait de nouvelles réflexions sur la manière d’optimiser l’utilisation de ces réseaux ont vu le jour afin de fournir aux applications des services appropriés à leurs exigences. Une de ses applications est l’approche DiffServ basé sur la notion d’agrégats pour assurer la QdS. Cependant, L’approche DiffServ nécessite une infrastructure de gestion de QdS. Cette infrastructure doit les permettre de configurer, contrôler et maintenir le niveau de QdS demandée. La configuration d’un réseau DiffServ revient à configurer les TCBs des routeurs de bordure et des routeurs de cœur. Ces TCBs sont actuellement implantés de façon statique dans les routeurs et utilisent des algorithmes de conditionnement implémentés en hardware. Dans ce rapport, nous avons tout d’abord introduit l’architecture de contrôle par politiques pour les réseaux à différentiation de services, afin de faire ressortir les manques liés à cette approche. Les principaux inconvénients de cette architecture résident en sa rigidité. En effet, aucun contrôle n’est effectué afin de vérifier la bonne délivrance des SLAs auxquelles ont souscrit les clients. Et surtout aucune reprise en cas de problème n’est effectuée. Dans ce cadre là, nous avons proposé une architecture de contrôle complète qui à pour but : (i) de faciliter l’introduction de nouveaux algorithmes de contrôles distribué sous forme d’applications actives et (ii) D’automatiser la reconfiguration des nœuds du réseau en cas de problème aux travers de l’installation de nouveaux TCB et/ou de la configuration dynamique des algorithmes de conditionnement de trafic. L’approche ACDN, que nous proposons, se base sur le paradigme des réseaux actifs. Ce choix a été motivé par le besoin d’une infrastructure flexible pour un déploiement rapide et transparent des différentes fonctionnalités introduites. Cette approche semble pallier aux manques listés ci dessus tout en respectant les spécificités du modèle DiffServ, normalisé par l’IETF, et du modèle de contrôle par politiques, également introduit à l’IETF par le groupe de travail RAP. Afin d’implémenter le nœud DiffServ actif, on a choisit la plate-forme active ANTS. Nous avons détaillé comment cette plate-forme peut être étendue afin d’intégrer toutes les composantes d’un nœud DiffServ (TCBs). Des études complémentaires sont en cours afin d’introduire et de tester différents algorithmes de contrôle distribués. En effet, ces applications peuvent tirer partie des possibilités offertes par le paradigme des réseaux actifs. Nous nous intéressons plus particulièrement, aux sondes de métrologies actives et aux algorithmes de provisionning dynamique. Le but final étant de minimiser l’apparition de congestions à long terme et le respect des SLAs souscrits par les clients. Finalement, Un article, soumis à la conférence de JDIR’2002 qui se déroulera en mars à Toulouse, France, résume notre travail. L’article s’intitule : Contrôle Actif des Réseaux DiffServ 65 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Annexe : Contrôle Actif des Réseaux DiffServ Yacine M. GHAMRI-DOUDANE, Rima TFAILY, Nadjib ACHIR et Guy PUJOLLE Laboratoire LIP6 - Université Pierre et Marie CURIE 8, rue du capitaine Scott, 75015 Paris, France. {ghamri , tfaily , achir , pujolle}@rp.lip6.fr Résumé Dans cet article, nous proposons une architecture permettant d’automatiser et de distribuer le contrôle dans un réseau DiffServ. En effet, l’architecture de contrôle par politique actuellement normalisée par l’IETF pour les réseaux DiffServ souffre d’un manque de dynamicité et de réactivité aux éventuels dysfonctionnements (non respect des SLAs). Pour pallier à cela, nous proposons une architecture où le contrôle se fera en deux phases (i) le contrôle par applications actives, où des algorithmes de contrôle distribués sont déployés, par l’administrateur du domaine, dans différents nœuds du réseau, et (ii) le contrôle par politiques actives, qui à partir des informations obtenues par les algorithmes de contrôle distribués, entreprend des décisions au niveau du serveur de politique. Mots clefs : DiffServ, contrôle par politiques, contrôle actif. Introduction Un des plus grands challenges de ces dernières années est la distribution d’applications multimédias à grande échelle en prenant en considération toutes les exigences de celles-ci. De plus, avec l'explosion de l'Internet, de nouvelles perspectives ont émergé, principalement l'intégration de ces nouvelles applications. Cette intégration offre beaucoup d'avantages incluant une grande couverture, une grande flexibilité et un coût réduit. Cependant, tel que l'Internet est conçu actuellement, plusieurs problèmes propres ont été identifiés. Principalement le manque ou l’absence de qualité de service (QdS) adéquate à ce type d’applications. De ce fait de nouvelles réflexions sur la manière d’optimiser l’utilisation de ces réseaux ont vu le jour afin de fournir aux applications des services appropriés à leurs exigences. Une des premières solutions proposées par l’IETF, pour remédier à ce manque, est l’approche IntServ [1]. Cette approche permet de garantir une QdS, par flux, sur le chemin qu’il emprunte dans le réseau. Le principal inconvénient de cette approche est le passage à l’échelle (c à d la croissance du nombre de flux traversant un nœud). Pour pallier à cet inconvénient, une autre approche, DiffServ ou différentiation de services [2,3], a été proposée par l’IETF. En effet, cette approche résiste mieux au facteur d’échelle puisqu’elle assure la QdS à des agrégats plutôt qu’aux flux de données individuels. Cette agrégations de flux se traduit en un tri s’effectuant aux nœuds de bordure d’un réseau en fonction des critères de QdS propres à chaque flux. Dans les nœuds de cœur du réseau, les traitements différentiés s’appliqueront sur des agrégats et non plus sur des flux. Ces traitements, effectués dans les nœuds du réseau, sont appelés algorithmes de conditionnement de trafic et sont organisés en blocs appelés TCB (Traffic Conditionning Bloc). En plus du modèle permettant la prise en compte de la qualité de service (IntServ, DiffServ), l’administrateur du réseau et les fournisseurs de services, auront besoins d’une infrastructure de gestion leurs permettant de configurer, contrôler et maintenir le niveau de QdS 66 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 demandée. Cette infrastructure peut se baser sur des politiques dérivées des critères associés aux applications. L’une des infrastructures les plus intéressantes pour la mise en place de cette gestion est le modèle de contrôle par politiques [4]. Cette infrastructure est un ensemble de protocoles, modèles d’information, et services permettant de traduire les règles administratives sous la forme de traitements différentiés des paquets dans le réseau. Ces règles administratives sont cependant introduites actuellement de façon manuelle et statique [3]. Un utilisateur voulant souscrire à un service (SLA) devra faire parvenir à l’administrateur du réseau ses exigences en terme de QdS. En fonction des différentes demandes de QdS, l’administrateur introduira donc manuellement les règles administratives appropriées. Cependant aucun moyen n’est actuellement offert pour permettre de contrôler la bonne délivrance des SLAs souscrits par les clients, et surtout il n’existe aucun moyen de remédier à des éventuels dysfonctionnements dans le réseau (non respect des SLAs, congestion à long terme, …). Une multitude d’algorithmes de contrôle distribués [5,6,7] sont actuellement proposés par la communauté de recherche afin de pallier à ces éventuels dysfonctionnements. Comme certains de ces algorithmes nécessite une architecture très flexible [7], l’utilisation du paradigme des réseaux actifs peut être un moyen d’intégration rapide de ce genre d’algorithmes dans les architectures courantes telles que DiffServ. Pour pallier à cela, nous proposons dans ce papier une architecture complète de contrôle pour les réseaux DiffServ. Cette architecture permettra : 1. d’administrer dynamiquement le réseau en cas de dysfonctionnement aux travers de politiques actives. 2. D’offrir une infrastructure flexible pour l’introduction d’algorithmes de contrôle distribués sous forme d’applications actives. La suite de l’article est organisée de la manière suivante. La section 2 est dédiée à la présentation de l’approche DiffServ. Dans la section 3 nous présenterons plus en détail le modèle de contrôle par politiques. Une brève présentation des réseaux actifs se fera dans la section 4. Par la suite, la section 5 donne la description détaillée de notre architecture de contrôle actif des réseaux DiffServ (ACDN). Finalement, on présente les conclusions et les perspectives dans la section 6. DiffServ L’approche DiffServ [2], ou services différentiés, normalisée actuellement dans le groupe de travail DiffServ de l’IETF, permet d’introduire une nouvelle façon de traiter les flux dans le réseau et de partager les ressources de ce dernier. Dans l’Internet actuel le réseau fait de son mieux pour transporter les paquets d’un bout à l’autre du réseau sans aucune distinction entre les paquets. Le réseau n’effectue aucune opération de contrôle de flux laissant aux extrémités le soin de se partager la bande passante disponible. Ainsi, les connexions TCP sont supposées utiliser chacune une part équitable de la bande passante qu’elles se partagent. Dans l’architecture à différentiation de service, la bande passante, le taux de perte et le délai de transit des paquets sont influencés par les opérations de conditionnement de trafic lors de l’entrée dans le réseau ainsi que par les modifications apportées au comportement des routeurs de cœur du réseau. Dans ce type de service, la différenciation s’opère au niveau des agrégats plutôt qu’au niveau des flux eux mêmes et ce afin de pallier aux problème de mise à l’échelle. On distingue deux types de routeurs dans l’architecture à différentiation de service. Les routeurs de bordure (Edge router) et les routeurs de cœur (Core router). Les routeurs de bordure se situent aux frontières d’un domaine et se chargent (i) de la mise en forme d’un flux en 67 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 fonction de sa spécification de service (SLS : Service Level Specification) et (ii) de la classification du trafic par l’attribution d’une étiquette (DSCP : DiffServ Code Point) à chaque paquet entrant dans le domaine. La valeur de cette étiquette pour un flux donné dépend de son SLS et de son comportement instantané. Une fois étiqueté, le paquet utilise le DSCP pour choisir la file d’attente adéquate, dans les routeurs de cœur, ainsi que le traitement adéquat en cas de congestion. Le comportement du routeur est donc dépendant du DSCP. Meter1 Marker1 Absolute Dropper1 Classifier /MF Marker2 Meter2 Absolute Dropper2 Marker3 MUX 1 Meter3 Absolute Dropper3 (a) Queue1 Classifier/ BA Shaper/ Scheduler1 Queue2 (b) Figure 1 : Blocs de conditionnement de trafic pour le : (a) routeur de bordure, (b) routeur de cœur. La figure 1 montre les blocs de conditionnement de trafic17 (TCB : Traffic Conditionning Bloc) pour chacun des deux types de routeurs présentés plus haut. Le TCB du routeur de cœur peut contenir des fonctionnalités de mise en forme de trafic (figure 2). Ces fonctionnalités sont nécessaires dans le cas où le réseau n’est pas bien dimensionné. Elles sont similaires à celle du routeur de bordure mais elles agissent sur les agrégats et non sur les flux. 17 Se rapporter à [8], pour une définition complète de chacun des éléments du TCB. 68 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Meter1 Queue1 Counter1 Absolute Dropper1 Algorithmic Dropper1 Meter2 Mux1 Algorithmic Dropper2 Queue2 Shaper/ Scheduler 1 Queue3 Classifier/ par agrégat Marker1 Algorithmic Dropper3 Queue4 Figure 2 : Blocs de conditionnement de trafic pour le routeur de cœur. Le contrôle par politiques Le terme politique [4] étant largement utilisé, il est impératif de donner une définition claire dans le contexte des réseaux. Comme point de départ, le terme politique dénote un règlement unifié pour l’accès aux ressources et aux services réseaux en se basant sur des critères administratifs. La figure 3, dénote différents niveaux auxquels un tel règlement peut être exprimé et exercé. La vue réseaux d’une politique s’exprime en terme de performances de bout en bout, de connectivité et d’états dynamiques du réseau. Cette vue se compose quand à elle de plusieurs vues nodales, auxquelles correspondent les objectifs de la politique et ses besoins au niveau de différents nœuds. Celles ci, à leurs tours, sont composées de règles politiques, lesquelles doivent être vues comme des injonctions atomiques à travers lesquelles différents nœuds du réseau sont contrôlés. Comme chaque nœud possède des mécanismes d’allocation de ressources spécifiques, chaque vue nodale doit finalement être translater en des instructions spécifiques aux dispositifs hardware du nœud. Niveau Réseau (Topologie, Objectifs réseau, Utilisation globale des ressources) Niveau Noeud (régles de politiques, TCAs, objectifs de QoS) niveau dispositif hardware (Classification, gestion des files d'attentes, ordonnencement) Figure 3 : Hiérarchie conceptuelle de politique. 69 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 Policy Repository outil de gestion PEP PDP PDP PEP PEP PEP Figure 4 : Architecture de contrôle par politique. La figure 4, montre un model généralisé de l’architecture de contrôle par politique. Cette figure montre les différents composants d’un domaine de politique, que nous allons détailler plus bas. Un domaine de politique est la portion d’un réseau qui est administrée et gérée par un même ensemble de politique. Ces politiques seront stockées dans une entité appelée policy repository. Le PEP18 est l’élément responsable de l’application et de l’exécution des actions de la politique, c’est également l’élément qui va prendre en charge le traitement des paquets en fonction d’une politique donnée. Le PDP19, quand à lui, a pour tache de déterminer quelle action va être appliquée et à quel paquet. Le PDP interprète les règles des politiques, stockées dans le policy repository, pour un ou plusieurs PEPs. Pour cela le PDP se base sur les conditions courantes du réseau ainsi que sur les informations transmises par ces derniers en utilisant un protocole de signalisation tels que COPS [9]. En effet le protocole COPS semble être le candidat privilégié par l’IETF pour cette tache. Le PEP peut demander au PDP de prendre des décisions en son nom sur l’occurrence d’un événement (modèle Outsourcing [10]) ou faire une demande de configuration (modèle Provisionning [11]). Dans le cas de DiffServ par exemple, le modèle Outsourcing permettrait de faire un contrôle d’admission au niveau des routeurs de bordures. le protocole COPS PR, quand à lui, permettrait de transporter les décisions permettant de configurer les TCBs des routeurs de bordure et des routeurs de cœur. Notons cependant qu’aucun mécanisme ne permet à ce jour de mettre en place dynamiquement les TCBs qui sont implantés de façon statique dans les routeurs et utilisent des algorithmes de conditionnement implémentés en hardware. La technologie des réseaux actifs peut donc être efficacement utilisée dans ce but, permettant ainsi de mettre en place dynamiquement les TCBs et de déployer dynamiquement de nouveaux algorithmes de conditionnement aux besoins. Les Réseaux Actifs Les réseaux actifs [12] représentent une nouvelle approche de conception de services réseaux. En effet, leurs buts résident en la conception, le développement et l’implémentation de nouvelles architectures de communications permettant la création, la reconfiguration et le déploiement rapide et sûre de fonctionnalités réseaux avancées. Ces fonctionnalités peuvent aussi bien être des services personnalisés, des protocoles dédiés ou des composants de gestion et de 18 19 Policy Enforcement Point Policy Decision Point 70 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 contrôle. Ce paradigme apparaît donc comme étant tout à fait à l’opposé de l’argument de bout en bout qui guide traditionnellement la conception et la mise en place des architectures de communications actuelles [13]. Les majeur partie des recherches sur les réseaux actifs dans ces débuts ayant été soutenue par la DARPA20 aux états unies [14]. Cette dernière a décomposé l’architecture d’un nœud actif [15] en trois parties majeures (Figure 5). Les applications actives (AAs) représentant des codes spécifiques à un environnent d’exécution particulier et déployées par les clients. L’environnement d’exécution (EE) lequel agit comme un programme fournissant une interface à travers laquelle des services réseaux élémentaires sont accédés. Le système d’exploitation du nœud actif (NodeOS) quand à lui fournit les fonctionnalités de base à partir desquelles les environnements d’exécution construisent les abstractions qui sont présentées aux applications actives. Au niveau du NodeOS le protocole ANEP [16] s’occupera également du multiplexage/démultiplexage des flux destinés et provenant des différents environnements d’exécutions. AA : Application Active AA : Application Active AA : Application Active EE : Environement d'Exécution EE : Environement d'Exécution ANEP Node OS Figure 5 : Architecture d’un nœud actif. Actuellement la communauté de recherche est très divisée sur l’utilité de ce type d’architecture. D’une part, les réseaux actifs fournissent une infrastructure réseau très flexible dont tout type de flux peut tiré parti. D’autre part, ces réseaux sont extrêmement plus complexes à mettre en œuvre que les réseaux traditionnels et soulèvent des problèmes de sécurité considérables. Cependant cet inconvénient apparaît être moins contraignant dans le cas ou l’accès aux ressources actives est limité à un ensemble restreint d’utilisateurs. Pour ces différentes raisons nous préconisons l’utilisation des réseaux actifs non pas par n’importe quel type de clients plutôt par des administrateurs de réseaux et des fournisseurs de services. Ces derniers pourront donc développer et déployer différents types de politiques de contrôle et de gestion dans leurs réseaux. En effet, la technologie des réseaux actifs peut être très bénéfique dans ce cadre précis où les réseaux actifs vont définir une extension du plan de contrôle indépendamment du plan de données qui pourra continuer à respecter le traditionnel argument de bout en bout. L’architecture ACDN Actuellement, les contrôles sont fait de façon statique nécessitant souvent une intervention humaine. En effet, l’administrateur du réseau doit avoir une connaissance quasi complète de ce qui va se passer dans son réseau afin de pouvoir gérer et configurer ses différents éléments (Figure 6). Le modèle proposé a donc pour but d’introduire un ensemble de fonctionnalités 20 La DARPA est l’organisme de recherche dépendant du ministère de la défense américain. 71 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 permettant d’automatiser et de distribuer le contrôle des différents nœuds du réseau. Ce modèle exploitera les notions introduites par le paradigme des réseaux actifs pour permettre une introduction rapide et transparente de ces fonctionnalités. Policy Repository station d'administration Plan de contrôle (serveurs) Routeur DiffServ plan de données (DiffServ) COPS -PR PDP Plan de contrôle (PEP) TCB Figure 6 : Architecture de contrôle des réseaux DiffServ. L’architecture ACDN21 est une architecture de contrôle tirant partie de la flexibilité des réseaux actifs tout en respectant les spécificités de l’approche DiffServ ainsi que les spécificités du modèle de contrôle par politique présenté plus haut. Cette architecture permet d’offrir un cadre général pour un contrôle complet d’un domaine DiffServ. Ce contrôle se fera en deux phases : 1. La première phase, consiste en le déploiement sur les nœuds du réseau, par l’administrateur du réseau ou un ISP, d’applications de contrôle distribuées sous forme d’applications actives (AA). Cette phase est appelée contrôle par applications actives. 2. La seconde phase, consiste en le déploiement et en l’installation de nouveaux TCBs dans les nœuds DiffServ dépendamment de ce qui se passe dans le réseau. En effet, lorsque le réseau est peut chargé, et donc bien dimensionné, un administrateur de réseau peut se contenter d’installer dans les routeur de cœur une version simplifiée du TCB (cf. Figure 1b). Cependant, si le besoin s’en fait ressentir, une application de contrôle peut déclencher l’installation d’un nouveau TCB plus complexe (cf. Figure 2). La complexité du TCB installé dépendra du problème rencontré dans le réseau, lequel peut être détecté par une application active. Cette phase est appelée contrôle par politiques actives. Le modèle proposé a donc pour but d’introduire un ensemble de fonctionnalités permettant d’automatiser et de distribuer le contrôle des différents nœuds du réseau. Le paradigme des réseaux actifs permettra une introduction rapide et transparente de ces fonctionnalités. La figure 7 montre les différents éléments composant l’architecture ACDN, les rôles respectifs de ces éléments sont : • Application de Contrôle : C’est l’application qui va permettre d’installer dynamiquement et de façon automatique de nouveau TCBs dans le réseau. Cette 21 ACDN : Active Control of DiffServ Network . 72 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 application offre également la possibilité de configurer (provisionner) dynamiquement les TCB en déclenchant l’envoi d’une décision de configuration par le PDP. • Station d’administration : L’introduction de nouvelles politiques ainsi que des nouveaux algorithmes de contrôle sera réalisée au travers de cette entité. De nouveaux algorithmes de conditionnement de trafic (TCA) peuvent également être introduit. Cette station aura également pour tache de vérifier la validité et la conformité des politiques introduites dans le policy repository. • Serveurs de codes (AA et TCA) : Ces serveurs contiendront les différents codes des applications actives ainsi que des algorithmes de conditionnement de trafic qui seront utilisés dans le réseau. A chacun de ces serveurs sera associé un mécanisme d’installation de code permettant le chargement du code et son installation dans les nœuds. • Fonction de filtrage : Les applications actives étant des applications distribuées constituées d’agents communicants dans la plupart des cas, il est donc nécessaire que les nœuds puissent interpeller et rediriger les paquets destinés à ces applications. Cette direction est réalisée grâce à la fonction de filtrage que l’on détaille plus bas. station d'administration Plan de contrôle (serveurs) Serveur de Code (AA) Serveur de code (TCA) Policy Repository Mecanisme d'installation Mecanisme d'installation PDP COPS -PR Application de Contrôle AA Routeur DiffServ Environnement d'execution ANEP Plan de contrôle (PEP) Fonction de Filtrage TCB Plan de donnée (DiffServ) Figure 7 : Architecture ACDN Fonction de filtrage Afin que les différents agents, constituants les applications de contrôle distribuées, puissent communiquer entre eux, une fonction de filtrage a été introduite. Cette fonction aura pour tache 73 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 de reconnaître puis d’intercepter les capsules (paquets actifs) appartenant aux applications actives installées dans le nœud. Comme vu sur la Figure 8, cette fonction se situe en amont du TCB, permettant ainsi de retirer les capsules avant que celles ci ne soient prises en compte par le TCB puis de les remettre sur le chemin des données (Data path). Afin de rester conforme avec le modèle DiffServ, on notera également que cette fonction doit marquer les paquets (champs DSCP) avant de les mettre sur le chemin des données. Ce marquage se fera selon la QdS que l’administrateur attribuera à son application de contrôle. Une application active pouvant être installé sur un ensemble restreint de nœuds dans le réseau, il est nécessaire que la fonction de filtrage puisse intercepter uniquement les capsules des applications actives que le nœud contient. Pour se faire, la fonction de filtrage utilisera une table de FlowID identifiant chacune des applications actives du nœud. Cet identifiant pourra être le quintuplé (adresse source, adresse destination, N° port source, N° port destination, protocole ID) pour IPv4 ou le champ FlowID pour IPv6. La table des FlowID est mise à jour à chaque fois qu’une application de contrôle distribuée est introduite ou retirée du réseau. Cette mise à jour s’effectue par une application active résidant de façon permanente dans tous les nœuds du réseau. MAJ FlowID Environnement d'execution Routeur DiffServ (Architecture ACDN) ANEP Tableau FlowId Fonction de filtrage Plan de donnée (DiffServ) TCB Figure 8 : Mise à jour de la table des FlowID et fonction de filtrage Afin de pallier au problème de mise à l’échelle qui pourra survenir. Le nombre d’applications actives dans un nœud sera limité. Conclusion & Perspectives Dans ce document, nous avons tous d’abord introduit l’architecture de contrôle par politiques pour les réseaux à différentiation de services, afin de faire ressortir les manques liés à cette approche. Les principaux inconvénients de cette architecture résident en sa rigidité. En effet, aucun contrôle n’est effectué afin de vérifier la bonne délivrance des SLAs auxquelles ont souscrit les clients. Et surtout aucune reprise en cas de problème n’est effectuée. Dans ce cadre là, nous avons proposé une architecture de contrôle complète qui à pour but : (i) de faciliter l’introduction de nouveaux algorithmes de contrôles distribués sous forme d’applications actives et (ii) d’automatiser la reconfiguration des nœuds du réseau en cas de problème aux travers de l’installation de nouveaux TCB et/ou de la configuration dynamique des algorithmes de conditionnement de trafic. L’approche ACDN se base sur le paradigme des réseaux actifs. Ce choix a été motivé par le besoin d’une infrastructure flexible pour un déploiement rapide et transparent des différentes fonctionnalités introduites. Cette approche semble pallier aux manques listés ci dessus tout en 74 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 respectant les spécificités du modèle DiffServ, normalisé par l’IETF, et du modèle de contrôle par politiques, également introduit à l’IETF par le groupe de travail RAP. Des études complémentaires sont en cours afin d’introduire et de tester différents algorithmes de contrôle distribués. En effet, ces applications peuvent tirer partie des possibilités offertes par le paradigme des réseaux actifs. Nous nous intéressons plus particulièrement, aux sondes de métrologies actives et aux algorithmes de provisionning dynamique. Le but finale étant de minimiser l’apparition de congestions à long terme et le respect des SLAs souscrits par les clients. Bibliographies [1] WROCLAWSKI J., « The Use of RSVP with IETF Integrated Services », RFC 2210, September 1997. [2] BLAKE S., ET AL., « An Architecture for Differentiated Services », RFC 2475, December 1998. [3] NICHOLS K., JACOBSON V., ZHANG L., « A Two-bit Differentiated Services Architecture for the Internet », RFC 2638, July 1999. [4] RAJAN R., VERMA D., KAMAT S., FELSTAINE E., AND HERZOG S., « A policy framework for integrated and differentiated services in the Internet », IEEE Network Magazine, vol. 13, no. 5, pp. 6-41, September / October 1999. [5] LIAO R.F., and CAMPBELL A.T., « Dynamic Core Provisioning for Quantitative Differentiated Service », 9th International Workshop on Quality of Service (IEEE/ACM/IFIP IWQOS 2001), Karlsruhe, Germany, June 2001. [6] LIAO R.F., and CAMPBELL A.T., « Dynamic Edge Provisioning for Core IP Networks », 8th International Workshop on Quality of Service (IEEE/ACM/IFIP IWQOS 2000), Pittsburgh, USA, June 2000. [7] DE MEER H., AND O’HANLON P., « Segmented Adaptation of Traffic Aggregates », 9th International Workshop on Quality of Service (IEEE/ACM/IFIP IWQOS 2001), Karlsruhe, Germany, June 2001. [8] FINE M., ET AL., « Differentiated Services Quality of Service Policy Information Base », Internet Draft, draft-ietf-diffserv-pib-04.txt, Juillet 2001. [9] DURHAM D., ET AL., « The COPS (Common Open Policy Service) Protocol », RFC 2748, January 2000. [10] HERZOG S., ET AL., « COPS usage for RSVP », RFC 2749, January 2000. [11] CHAN K., ET AL., « COPS Usage for Policy Provisioning (COPS-PR) », RFC 3084, March 2001. [12] PSOUNIS K., « Active Networks : Applications, Security, Safety, and Architectures », IEEE Communications Surveys Magazine, 1st quarter issue, 1999. [13] BHATTACHARJEE S., CALVERT K., ZEGURA E., « Active Networking and the end to end argument, in Proceedings of ICNP `97, Atlanta, GA, Oct. 1997. [14] http://www.darpa.org/activenets/ [15] CALVERT K. L., « Architectural Framework for Active Networks », Draft, DARPA AN Working Group, Juillet 1999. [16] ALEXANDER D. S., ET AL., « Active Network Encapsulation Protocol », Draft, DARPA AN Working Group, Juillet 1997. Fin de l’article 75 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 LES REFERENCES: A. références DiffServ et COPS [1] RFC 2748 , Common Open Policy Service Protocol ", January 2000. [2] RFC 2749 "COPS usage for RSVP " , January 2000. [3] RFC 3084,“COPS usage for policy provisioning (COPS-PR)”; March 2001. [4] Cisco systems ; http://www.cisco.com ; Documentation:”COPS for RSVP”. [5] RFC 2475 : Informational : « An Architecture for Differentiated Services », December 1998. [6] RFC 2598 : Standard Track « An Expedited Forwarding PHB », June 1999. [7] RFC 2597 Standard Tracks « Assured Forwarding PHB Group », June 1999. [8] RFC 2638 « A Two-bit Differentiated Architecture for the Internet », July 1999. [9] A Policy Framework for integrated and Differentiated services in the Internet. [10] Internet Quality of service: an overview [12] http:://www.qosforum.com, QOS Protocols and architectures, July1999 [13] RFC 2474: Definition of the Differentiated services field (DS field) in the Ipv4 and Ipv6 headers , December 1998 [14]E.Horlait, N.Rouhana, Qualité de service dans l’architecture TCP /IP, Laboratoire LIP6, Mars 2000. B. Références réseaux actifs : [1] IEEE Communications surveys; Active Networks : Applications, Security, Safety, And Architectures. Konstantinos Psounis, Stanford University; 1999 [2] IEEE Openarch 98; ANTS: A ToolKit for Building and Dynamically Deploying Network Protocols, David J. Wetherall, John V. Guttage and David L. Tennenhouse; April 1998 [3] Developing Network Protocols With the ANTS ToolKit, David Wetherall ; August 1997 [4] Les Réseaux Programmables 1.0; Olivier Festor, Isabelle Chrisment, Eric Fleury. [5] Directions in Active Networks; Kenneth L. Clavert, Samrat Bhattacharjee, Ellen Zegura Http://www.tns.lcs.mit.edu/publications/ieeecomms97.html. 76 Conception et implémentation d’un nœud DiffServ actif DEA Réseaux de Télécommunications 2000-2001 [6] RFC Draft , Active Network Encapsulation Protocol (ANEP); D.Scott alexander, Bob Braden, Garl A.Gunter, Alden W.Jackson, Angelos D. Keromytis, Gar J.Minden, David Wetherall. Http://www.cis.upenn.edu/~switchware/ANEP [7] Segmented Adaptation of Traffic Affregates, Hermann de Meer and piers O’Hman. Department of Computer Science, University College London. 77