PROCEDE DE TRADUCTION D'ADRESSE PERMETTANT DE FACILITER L'UTILISATION D'UN ADRESSAGE DE TYPE IP " ANYCAST ".
La présente invention concerne un procédé de traduction d'adresse permettant de faciliter l'utilisation d'un adressage de type IP « anycast » ou analogue.
D'une manière générale, on sait qu'une machine ou un poste informatique appartenant à un réseau IP qui utilise un protocole de type Internet ou analogue, est identifié par une adresse dite « adresse IP ».
L'adresse « anycast » est un type d'adressage particulier défini pour les réseaux IP. Elle consiste à affecter une adresse IP non plus à une machine unique, mais à un groupe pouvant représenter un service qui est dénommé « groupe anycast ». Dans ce cas, plusieurs machines peuvent partager la même adresse IP. On dit alors que la machine est abonnée au « groupe anycast » identifié par son adresse IP.
Les adresses anycast sont prises dans un espace d'adressage « unicast » conventionnel, et rien ne permet de reconnaître a priori une adresse « anycast » d'une adresse « unicast » normale. Le routage des paquets « anycast » au sein du réseau s'effectue donc comme routage « unicast » classique.
Une adresse « anycast » n'identifiant pas une machine de manière unique, il est donc interdit d'émettre des paquets de données IP avec une adresse source anycast.
IP dont l'adresse de destination est une adresse « anycast ». De même, on désignera par « Bordure de réseau » ou « frontière » un endroit où deux réseaux sont interconnectés.
Par ailleurs, on sait que dans une architecture classique de type client/serveur, les terminaux accèdent à travers le réseau à un service hébergé par un serveur.
Pour des raisons de charge ou de qualité de service, ce service peut être hébergé par plusieurs serveurs qui se partagent la charge et qui sont placés à des endroits assurant la meilleure qualité aux clients. La sélection des serveurs à utiliser est en général le fruit d'un processus plus ou moins complexe mettant en œuvre un serveur de noms (DNS), des portails et des équilibreurs de charge.
L'utilisation de l'adressage « anycast » permet de simplifier la mise en place du service. Son principe consiste à faire utiliser la même adresse anycast à tous les clients voulant accéder au service. Par contre, l'utilisation de l'adressage anycast présente quelques difficultés, car il impose l'utilisation de fonctions logicielles, au niveau des clients et les serveurs, qui ne sont pas disponibles aujourd'hui dans toutes les machines.
L'invention a donc tout d'abord pour but de supprimer cet inconvénient en fournissant un procédé permettant l'utilisation de l'adressage anycast de façon transparente pour les clients et les serveurs.
En fait, le principal problème de la communication « anycast » consiste en ce que les paquets successifs vers une adresse anycast n'arrivent pas forcément au même destinataire. Par conséquent, une adresse anycast ne peut être utilisée dans les champs adresse source des paquets, car elle ne permet pas d'identifier une source de manière unique. Cela pose une série de problèmes de fonctionnement pour les communications imposant de conserver des états chez les participants à la
Protocol) en sont un exemple de poids.
Des applications en mode non connecté peuvent aussi poser problème quand elles imposent de vérifier la cohérence entre adresse source de la réponse et adresse destination de la question. Le service d'échange de clés dynamiques LKE et le serveur de noms DNS en sont des exemples. Cette incomptabilité avec les protocoles à état fait que l'adressage anycast est aujourd'hui inutilisable pour la plupart des applications.
Par ailleurs, il existe un autre problème qui freine le déplacement de l'adressage « anycast » : les membres d'une communication utilisant l'adressage anycast doivent s'assurer qu'ils n'utilisent pas les adresses « anycast » comme adresses sources. Ceci impose un traitement logiciel qui, aujourd'hui, n'est pas disponible dans la plupart des systèmes d'exploitation utilisés sur les clients et les serveurs.
L'invention a également pour but de résoudre ces problèmes.
A cet effet, elle propose un procédé permettant d'utiliser l'adressage anycast pour des communications de type client/serveur sans avoir à implanter des fonctions logicielles spécifiques ni dans les serveurs, ni dans les clients.
Selon l'invention, ce procédé met en œuvre un mécanisme qui est implanté dans des nœuds de réseau intermédiaires tels que, par exemple, des routeurs, situés sur le chemin entre les clients et les serveurs, comprend des moyens permettant d'effectuer une traduction d'adresse IP (« Address translation ») au niveau des couches réseau (par opposition au niveau applicatif), cette traduction d'adresse étant effectuée à une bordure de réseau telle que par exemple une frontière administrative.
des clients ou au niveau des serveurs.
En fait, pour ces derniers, il s'agit d'adresses conventionnelles (dites « unicast »). Ainsi, ce procédé n'impose pas de modifications aux clients et aux serveurs.
Ce procédé peut être utilisé afin de déployer plus aisément un service qui implique la connexion de clients à un ensemble de serveurs. Si ce serveur met en œuvre des fonctions avancées du réseau, alors les serveurs doivent être situés non loin des clients. Cette contrainte impose de répartir les serveurs un peu partout dans le réseau. L'établissement de visioconférence à la demande est un exemple de ce type de service.
Ce procédé permet alors aux clients d'accéder au service par la même adresse de destination, quelle que soit leur localisation sur le réseau.
Ce procédé peut être utilisé dans le cadre de services de type serveur Web, caches http, CDN, ..., vidéoconférences ou visioconférences, VPN...distribués. Il s'avère particulièrement adapté à des réseaux IPV6 dans la mesure où la réservation d'adresses anycast n'y pose pas de problème (vaste espace d'adressage).
Ce procédé n'élimine pas les problèmes induits par l'utilisation d'une traduction d'adresse IP de niveau réseau (IPSEC, SSH ...). Toutefois, on constate que ces problèmes ne réduisent que fort peu le champ d'application du procédé, car les applications précédemment mentionnées y sont peu vulnérables. En outre, dans le cas où elles le sont, le positionnement du mécanisme se fait aussi à l'endroit où est implanté le service, ce qui permet de résoudre le problème.
En fait, ce procédé est particulièrement bien adapté aux services des fournisseurs d'accès Internet (ISP) dans lesquels les serveurs sont tous gérés par une même entité administrative.
Un mode d'exécution de l'invention sera décrit ci-après, à titre d'exemple non limitatif, avec référence aux dessins annexés dans lesquels :
La figure 1 est une représentation schématique permettant d'illustrer le principe du procédé selon l'invention ;
La figure 2 est un diagramme illustrant l'enchaînement temporel des opérations exécutées par le procédé selon l'invention.
Dans l'exemple illustré sur la figure 1, on a représenté un réseau d'interconnexion qui assure les liaisons avec :
- au moins un poste client H qui est connecté à un premier réseau NI (ou un site SI), lui-même connecté au réseau d'interconnexion NI par l' intermédiaire d'un routeur anycast pour les clients ARh,
- au moins un premier serveur AS2 connecté à un deuxième réseau N2, lui- même connecté au réseau d'interconnexion NI par l'intermédiaire d'un routeur anycast pour serveur ARs2,
- au moins un troisième serveur AS3 connecté à un troisième réseau N3, lui- même connecté au réseau d'interconnexion NI par l'intermédiaire d'un routeur anycast pour serveur ARs3.
Dans cet exemple, on considérera le cas où le poste H cherche à accéder à un service qui est hébergé par les serveurs AS2 ou AS3 et dont l'adresse anycast est nommée ANY. Au sens du routage réseau, le serveur AS2 est le serveur le plus proche.
Les serveurs AS2 et AS3 prennent respectivement les adresses AS2g et AS3g.
Les routeurs ARhl, ARs2 et ARs3 sont des machines constituant des nœuds intermédiaires du réseau dans lequel le mécanisme selon l'invention est implanté.
Le poste client Hl prend une adresse Hl. Il dispose d'une route par défaut vers le service dont l'adresse est ANY/n (n étant la longueur du préfixe réseau) dont la passerelle est constituée par le routeur ARhl.
Les adresses anycast pour l'ensemble des services autorisés sont prises dans des préfixes connus. Il peut en exister plusieurs, par exemple : ANY/m (m étant la longueur du préfixe), ANYl/p, ANY2/x ... Les adresses anycast utilisées pour le service voulu sont prises dans le préfixe ANY/n (où n est la longueur du préfixe et n > m)...
Comme précédemment mentionné, le procédé selon l'invention consiste à effectuer une traduction d'adresse IP ici dans les nœuds réseau intermédiaires, ici dans les routeurs ARhl de manière à éviter l'implantation de fonctions logicielles spécifiques dans les serveurs et dans les clients.
Ainsi, lorsqu'un client émet sur son poste H une requête pour utiliser un service associé à un groupe anycast, les initialisations suivantes doivent être effectuées au préalable :
l'inscription d'un serveur AS3 en configurant le noeud de bordure ARs3 du serveur AS3 délivrant le service (en utilisant une adresse qui ne fait pas partie du sous réseau du client lorsque le serveur est situé à l'intérieur du site client),
le routeur ARhl, la configuration des routeurs ARs2 et ARs3 pour que l'adresse ANY corresponde à l'adresse AS2g et AS3g des serveurs AS2 et AS3.
Ensuite, le comportement du système utilise le mécanisme suivant dont l'enchaînement temporel est illustré figure 2 :
1. Le client utilise sur son poste H une adresse anycast (ANY) (bloc B ) comme adresse de destination pour envoyer sa requête.
Grâce au procédé selon l'invention, lorsque la requête passe dans le routeur ARhl, celui-ci crée un état (par exemple un état stocké dans une table d'état) et alloue une adresse (PRhl : X notée PRIX) (bloc B2) disponible dans le préfixe réseau PRhl pour la connexion associée à cette requête. Le routeur ARhl traduit l'adresse IP source de la requête en la nouvelle adresse PRIX (bloc B2).
Le réseau (en particulier les routeurs ARhl, ARs2 et ARs3) route la requête vers le serveur le plus proche, ici le serveur (AS2).
Le routeur ARs2 traduit l'adresse IP destination en une nouvelle adresse AS2g (bloc B3) par un mécanisme classique. Le choix du serveur (sélection de l'AS) (bloc B ) est lui aussi réalisé par un mécanisme classique.
2. Le serveur choisi (pas forcément celui qui a reçu la requête, e.g. AS3 (figure 2) répond à la requête (bloc B5).
Grâce au procédé selon l'invention, la table d'état du routeur ARhl est mise à jour de manière à mémoriser l'association (H,ANY) avec (PRIX, AS3g) (blocs B5, B6).
sera utilisé pendant toute la durée d'une même connexion).
La figure 2 illustre les connexions successives :
par le mécanisme du routeur ARhl adresse source H - adresse destination ANY (bloc B7)/adresse source
PRIX - adresse destination AS3g (bloc B8),
- par le mécanisme du routeur AS3 adresse source PRIX - adresse destination AS3g (bloc B8)/adresse source AS3g - adresse destination PRIX (bloc B9) ,
- par le mécanisme du routeur ARhl adresse source AS3g - adresse destination PRIX (bloc B9)/adresse source
ANY - adresse destination H (bloc B10).
On constate que dans ce processus, aucun traitement réseau particulier n'est requis dans le poste client ou au niveau des serveurs, lesquels utilisent une adresse anycast sans en avoir conscience.
En fait, pour les postes clients et les serveurs, il s'agit d'adresses conventionnelles (unicast). Ainsi, le procédé selon l'invention n'impose pas de modifications des postes clients ou des serveurs.
Il intervient seulement au niveau du routeur ARhl .
Ce procédé ne prend pas en compte la sélection du meilleur serveur en fonction de critères applicatifs qui conduiraient ici à sélectionner le serveur AS2 : cette sélection est optionnelle.
affectés aux serveurs AS est le suivant :
1. Les routeurs ARs sont configurés pour que les adresses des serveurs AS, situés derrière eux, soient associés à l'adresse anycast du service. Ainsi, par exemple :
a. Le routeur ARs2 est configuré de manière à ce que l'adresse AS2g du serveur AS2 soit associée à l'adresse anycast du service : ANY/n,
b. Le routeur ARs3 est configuré de manière à ce que l'adresse AS3g du routeur AS3 soit associée à l'adresse anycast du service : ANY/n.
2. Les routeurs ARs annoncent une route vers l'adresse ANY/n dans le protocole de routage du réseau d'interconnexion.
3. Les routeurs ARs sont configurés pour capter les paquets qui ont une adresse de destination comprise dans ANY/n.
4. Quand un tel paquet arrive dans un routeur ARs (par exemple ARs2) :
a. Le routeur ARs reconnaît le paquet et retrouve l'association ANY/n <=> adresse du serveur AS (par exemple l'adresse AS2g),
b. Le routeur ARs traduit le paquet au niveau du réseau : l'adresse source demeure inchangée, l'adresse destination est traduite de l'adresse anycast ANY à l'adresse du serveur AS (par exemple AS2g). Aucun état n'est conservé sur cette transformation,
(AS2g dans l'exemple).
En ce qui concerne les routeurs ARh affectés aux postes clients, ces routeurs font l'objet des traitements suivants :
1. Ces routeurs ARh sont configurés avec des préfixes routables globalement, qui sont dédiés au mécanisme selon l'invention, par exemple Prhl/k à raison d'au moins un préfixe par routeur ARh ;
2. Ces routeurs ARh sont configurés pour capter les paquets ayant pour adresse de destination, une adresse ayant pour préfixe Prhl/k ;
3. Ces routeurs ARh sont configurés pour capter des paquets ayant pour adresse de destination les adresses anycast des services autorisés dans le site, à savoir : ANY/m (m longueur du préfixe), ANY2/x...
4. Quand un paquet arrive dans un routeur ARh (par exemple ARhl) avec pour adresse de destination ANY :
a. Le routeur ARh reconnaît le paquet (adresse de destination ANY),
b. Le routeur ARh regarde si le flux auquel appartient le paquet est déjà connu, le flux étant défini par l'adresse source, l'adresse de destination, le port source, le port de destination, le protocole utilisé (TCP, UDP,
...)
i. Si le flux n'est pas connu :
" Le routeur ARh sélectionne une adresse non utilisée dans le préfixe Prhl/k (par exemple PRIX),
" Le routeur ARh translate le paquet (adresse source traduite de Hl à PRIX, adresse de destination inchangée),
" Le routeur ARh crée un état sur le flux comprenant
— l'adresse source (Hl)
— l'adresse destination (ANY)
— le port source
— le port destination — le protocole utilisé (TCP, UDP, ...)
— l'adresse sélectionnée PRIX
— la date d'expiration (heure courante plus une durée de validité configurable)
— l'adresse du serveur sélectionné (vide à ce stade)
" Le routeur ARh relaie le paquet vers sa destination ANY,
ii. Si le flux est connu (il a été trouvé dans la liste des états sur les flux) :
" Le routeur ARh traduit le paquet (adresse source traduite de
Hl à PRIX, adresse destination passant de ANY à l'adresse du serveur sélectionné trouvé dans l'état sur le flux (par exemple AS3g), " Le routeur ARh remet à jour la date d'expiration de l'état sur le flux,
" Le nouveau paquet est alors relayé vers sa nouvelle destination (AS3g dans cet exemple).
Quand un paquet arrive dans un routeur ARh (par exemple ARhl) avec une adresse de destination comprise dans Prhl/k :
a. Le routeur ARh reconnaît le paquet (adresse de destination PRIX),
b. Ce routeur ARh regarde si le flux auquel appartient le paquet est déjà connu (en cherchant dans la liste des états sur les flux, celui qui correspond à PRIX).
i. Si le flux n'est pas connu, on supprime le paquet,
ii. Si le flux est connu :
1. Le routeur ARh traduit le paquet (adresse source traduite de AS3g à ANY, adresse destination passe de PRIX à Hl,
2. Le routeur ARh remet à jour la date d'expiration de l'état sur le flux,
3. Le nouveau paquet est alors relayé vers sa nouvelle destination (Hl dans cet exemple).
6. Le routeur ARh vérifie dans la liste des états sur les flux si des états ont expiré :
Si l'heure actuelle est postérieure à la date de l'expiration sur le flux, alors on supprime l'état.
Dans les exemples précédemment décrits, le procédé ne prend pas en compte la sélection du meilleur serveur disponible, étant entendu que la qualité du serveur est caractérisée par un ensemble de critères tels que :
La distance réseau par rapport au client,
- La charge des ressources du serveur utilisé par le service selon les cas, ces ressources peuvent être :
• Le nombre de ressources déjà gérées par le serveur,
• Le disque dur,
• La mémoire RAM,
• La CPU,
• Les interfaces réseau du serveur, • Etc
Optionnellement, il sera donc possible d'effectuer une sélection des meilleurs serveurs, par exemple en effectuant les trois étapes suivantes :
" Une étape de découverte du plus proche serveur qui est un problème de routage réseau par lequel l'adressage anycast présente beaucoup d'intérêt,
" Une étape de répartition de la charge qui est un problème applicatif dans lequel le réseau ne peut pas jouer de rôle significatif,
" Une étape où le serveur élu répond à la requête du client.