• l’année dernière
Cette vidéo, proposée par l'Institut Polytechnique de Paris pour la Task-Force IPv6 et l'Arcep présente le protocole SRv6 (Segment Routing over IPv6 dataplane).

Kevin Jiokeng, maitre de conférences en informatique, spécialité réseau, présente le protocole Segment Routing et B.I.E.R sur les supports de cours créés avec Thomas Clausen, également professeur à l'école polytechnique.

Une seconde vidéo de Polytechnique Paris se consacre à BIERv6 (Bit Index Explicit Replication IPv6 encapsulation) : https://www.dailymotion.com/video/x8qhupv

La stratégie de déploiement est expliquée par Jean-Charles Bisecco dans la vidéo suivante : https://www.dailymotion.com/video/x8qhuza

Licence Creative Commons BY-SA 4.0 Institut Polytechnique de Paris
Transcription
00:00 Bonjour, je suis Kevin Jokin, maître de conférence en informatique spécialité réseau à l'École Polytechnique.
00:08 Dans cette série de vidéos, nous allons aborder le fonctionnement de deux protocoles relativement récents
00:14 qui ouvrent des possibilités nouvelles dans les réseaux modernes
00:18 ou encore qui permettent de simplifier des fonctions réseau à l'aide d'IPv6.
00:23 Il s'agit des protocoles SAV6 et BLV6 pour segment routing with IPv6 et bit index explicit replication with IPv6, respectivement.
00:35 Les supports que je vais utiliser dans ces vidéos ont été adaptés de ceux de mon collègue Thomas Clausen,
00:41 lui aussi professeur à l'École Polytechnique.
00:44 Les objectifs de ces vidéos sont donc naturellement de vous permettre
00:50 de comprendre ces concepts de segment routing et de voir comment ces approches nous permettent
00:57 de programmer la couche réseau ou encore de programmer avec la couche réseau en fait.
01:03 Ceci permettra également de voir comment il est encore possible et toujours de faire évoluer la couche réseau
01:11 et pourquoi cela est nécessaire tout en gardant des mécanismes existants pour une rétrocompatibilité.
01:18 Alors, sans plus tarder, allons dans le vif du sujet.
01:23 Dans cette première vidéo, nous allons commencer par aborder le concept du segment routing pour IPv6,
01:29 c'est-à-dire SAV6, en présentant également quelques cas d'utilisation pour bien illustrer son utilité.
01:38 Mais avant, rappelons d'abord quelques principes du routail sur Internet.
01:43 Commençons par un petit récapitulatif d'un instant.
01:47 Le fonctionnement des réseaux est découpé en plusieurs couches,
01:51 chacune d'elles faisant tourner un ou plusieurs protocoles.
01:54 Dans le modèle TCP/IP, on en distingue quatre.
01:58 La couche application, qui se charge de gérer les échanges spécifiques aux applications.
02:03 La couche transport permet d'assurer les propriétés de bout en bout de la communication.
02:09 La couche réseau, quant à elle, gère la façon dont les données doivent circuler pour aller d'un point A à un point B à travers un réseau multisort.
02:20 Et au plus bas de la pile, la couche liaison des données s'occupe de la façon dont les données accèdent et circulent sur un lien.
02:29 En réalité, il faudrait séparer cette pile en deux groupes.
02:33 La couche applicative, pour le fonctionnement de l'application d'intérêt d'une part,
02:38 et les trois autres couches d'autre part pour l'acheminement de ces données à travers le réseau à proprement parler.
02:46 Ici, nous nous intéresserons à des mécanismes de la couche réseau.
02:51 Pour la couche réseau, donc, il existe une notion de source et de destination.
02:57 En général, une source ou destination est un terminal de réseau,
03:02 ayant une ou plusieurs interfaces réseau qui peuvent être physiques ou virtuelles.
03:09 Tout ce que la couche réseau est censée faire, c'est rejeter le paquet, ou le faire suivre, ou encore délivrer le paquet localement.
03:19 Voici ce que nous avons classiquement sur Internet.
03:23 Lorsqu'un équipement source veut transmettre un paquet, c'est-à-dire la donnée,
03:28 ainsi qu'une entête indiquant comment cela doit être traité sur le réseau, vers une destination.
03:35 Dans ce cas par exemple, un serveur distant à travers Internet, on va faire appel à plusieurs routeurs.
03:42 En fait, on modélise généralement Internet comme un graphe de ces routeurs interconnectés,
03:48 ayant pour rôle de transmettre les paquets qu'ils reçoivent venant d'une source et allant vers une destination,
03:55 à l'aide d'un protocole de routage.
03:58 Chaque routeur a en effet une connaissance de ce graphe, et exécute sur ce graphe un algorithme de calcul du plus court chemin.
04:07 Typiquement, c'est l'algorithme de Dijkstra, ou une variante de celui-ci.
04:12 L'important est que tous les routeurs s'accordent, de façon à ce que l'algorithme donne des résultats similaires, ou au moins compatibles.
04:21 Cet algorithme aboutit donc à la formation, sur chaque nœud, d'une table de routage indiquant le prochain saut vers lequel transmettre un paquet reçu,
04:32 si celui-ci a une destination donnée.
04:35 Ceci permet donc un routage saut par saut.
04:39 Ainsi, si notre ordinateur dans ce cas veut envoyer sa donnée vers le serveur distant,
04:45 il enverra d'abord au routeur le plus proche, au sens de la configuration réseau, qui correspond aussi souvent à la proximité physique.
04:54 Ce routeur va donc examiner sa table de routage et envoyer le paquet au prochain routeur,
05:01 qui va à son tour faire pareil pour l'envoyer au nœud suivant,
05:07 et ainsi de suite jusqu'à ce que le paquet soit reçu par la destination finale.
05:13 Ceci constitue le routage de saut en saut, c'est-à-dire que chaque routeur va inspecter la destination indiquée dans l'entête du paquet,
05:23 ainsi que sa table de routage pour ensuite prendre une décision autonome sur ce qu'il fera du paquet.
05:31 Cela a donc l'avantage que les routeurs peuvent réagir localement au changement et rerouter le trafic.
05:39 Aussi, pas besoin de transporter dans l'entête l'information concernant le chemin que doit suivre le paquet.
05:48 Mais l'inconvénient ici est que la source ne peut pas définir des points intermédiaires par où doit passer le paquet.
05:57 Et pourtant, dans certains cas, on a envie de « programmer » le circuit que doit suivre le paquet dans le réseau.
06:08 On peut en effet vouloir que notre paquet suive un chemin bien établi, allant par exemple d'abord à un serveur,
06:16 puis à un autre avant d'arriver à la destination finale.
06:20 Plus encore, l'on pourrait vouloir que chacun de ces serveurs exécute une fonction particulière à la réception du paquet,
06:29 avant de le transférer vers le point de traitement suivant.
06:34 Dans ce cas, il faudrait transporter dans l'entête du paquet l'information sur le chemin qu'il doit emprunter
06:42 et faire en sorte que les nœuds concernés soient capables d'inspecter et d'interpréter ce que la source voudrait comme action à ces endroits-là du réseau.
06:53 Mais la couche réseau telle qu'on la connaît aujourd'hui ne sait pas faire ce type de traitement.
07:01 C'est ici qu'intervient le segment routing.
07:04 Le segment routing est, essentiellement, une architecture de traitement de données en pipeline, déployée en tant que fonction réseau.
07:14 Le segment routing est donc une fonction réseau qui permet au routeur de transférer des paquets à des points de traitement,
07:22 c'est-à-dire des adresses IP, de façon transparente et compatible au fonctionnement en l'absence du segment routing.
07:31 Pour ce faire, SAV6 va utiliser un mécanisme déjà prévu par IPv6, le fait que des paquets peuvent avoir des extensions d'entête.
07:43 Ces extensions d'entête seront tout simplement ignorées par les routeurs qui ne les comprennent pas,
07:49 c'est-à-dire que ceux-ci ne feront que forwarder les paquets vers la destination.
07:55 A l'inverse, ceux qui les comprennent pourront inspecter ces entêtes, effectuer l'action correspondante,
08:03 mettre à jour le contenu de l'entête et forwarder le paquet.
08:07 Dans SAV6, l'extension d'adresse contiendra une liste d'adresses IPv6 qui sont routables,
08:15 de façon à ce que le système de routage déjà déployé dans le réseau, c'est-à-dire l'Interior Gateway Protocol, par exemple OSPF ou AS-AS,
08:26 puisse transférer le paquet.
08:30 Plus encore, puisque un noeud dans IPv6 peut avoir une multitude d'adresses IP,
08:36 il pourra, par exemple, identifier chaque fonction au sens informatique, c'est-à-dire aussi procédure, à une adresse IPv6.
08:47 Ceci permettra donc à la source ou bien au premier routeur dans le domaine segment routing
08:54 d'insérer une telle entête SR permettant de diriger le paquet vers une chaîne de traitement spécifique sur le réseau.
09:03 Concrètement, lorsqu'un équipement voudra envoyer un tel paquet,
09:08 il va donc mentionner le premier segment dans le champ de destination du paquet IPv6 avant de l'envoyer sur le réseau.
09:17 Le réseau se chargera à son tour d'acheminer ce paquet par les mécanismes de routage déjà existants.
09:26 Rappelons ici que les routeurs ne supportant pas SRv6 vont simplement forwarder le paquet en ignorant l'entête SR.
09:36 Une fois arrivé au niveau du premier segment, celui-ci va exécuter l'action indiquée dans cette instruction
09:44 et mettre à jour la liste des segments.
09:47 Ceci se fera en mettant à jour le champ de destination du paquet avec le prochain segment.
09:54 Le paquet mis à jour sera alors renvoyé sur le réseau
09:59 et le processus continuera ainsi jusqu'à ce qu'il n'y ait plus rien à traiter dans l'entête d'extension du paquet.
10:07 Pour le rendre pratiquement possible et efficace sur du matériel réel,
10:12 il y a bien sûr beaucoup d'autres détails à prendre en compte auxquels nous ne nous intéressons pas ici.
10:20 De ce que nous avons déjà vu, voici quelques points essentiels à retenir au sujet de SRv6.
10:27 SRv6 permet la réutilisation des fonctions de forwarding déjà existantes dans le réseau
10:35 en ignorant éventuellement la partie segment routing de l'entête.
10:40 Ceci se fait en utilisant les entêtes d'extension déjà prévues par IPv6
10:46 dans une structure de données de type liste-chaînée.
10:50 Ceci permet donc de faire en sorte que l'état concernant le chemin à emprunter par le paquet
10:56 soit sauvegardé dans l'entête de ce paquet lui-même.
11:00 Cet état-là est en fait une série d'instructions sur le traitement du paquet.
11:05 En ce sens, SRv6 permet de « programmer » avec la couche réseau,
11:11 en ce sens que chaque segment est une instruction encodée dans une adresse IPv6.
11:20 Ces fonctions peuvent être des choses triviales,
11:24 comme simplement acheminer le paquet ou le transférer,
11:28 ou encore des procédures plus arbitraires, standardisées ou non.
11:33 Puisque les routeurs intermédiaires ou systèmes intermédiaires
11:38 vont se contenter de lire l'adresse de destination et d'effectuer un forwarding tout à fait classique,
11:45 ceci permet à SRv6 de ne pas augmenter la charge de traitement
11:51 et de ne nécessiter la maintenance d'aucun état supplémentaire.
11:56 Les points de traitement identifiés dans l'entête du paquet, quant à eux,
12:01 vont inspecter cette entête supplémentaire et pourraient effectuer des actions supplémentaires
12:07 comme l'exécution des fonctions identifiées dans les segments
12:11 ainsi que la mise à jour de la liste des segments.
12:15 Ceci a aussi pour conséquence secondaire de réduire la complexité du réseau,
12:20 c'est-à-dire réduire la complexité pour les routeurs,
12:25 plus nécessaire de maintenir des sessions, des états ou une signalisation périodique.
12:33 Maintenant, allons un peu plus dans le détail sur la structure de ces instructions ou segments.
12:40 Avec SRv6, chaque routeur va se faire assigner un préfixe plutôt qu'une simple adresse IPv6.
12:48 Tous les paquets allant vers ce préfixe vont être routés vers ce paquet, je veux dire vers ce nœud,
12:56 à travers les mécanismes de routage déjà existants dans le réseau,
13:00 par exemple BGP ou un IGP comme OSPF ou AS-AS.
13:05 Dans la plage définie par ce préfixe, il est possible pour un routeur d'allouer des adresses à des SIDs,
13:14 pour « segment identifiers », en fait des identifiants de fonctions.
13:20 Le SID est composé d'une « localisation », un locator en réalité en anglais,
13:27 qui est typiquement routable sur Internet comme déjà mentionné,
13:31 et ensuite un identifiant pour une fonction, qui sera typiquement opaque, définie et gérée localement.
13:40 Cette fonction peut également avoir des paramètres optionnels et aussi à définir localement.
13:48 Il peut aussi y avoir des SIDs locaux, alloués sur un nœud, mais pas annoncés par l'IGP, Interior Gateway Protocol.
13:59 Cela demandera donc que le paquet atteigne le nœud d'abord.
14:04 Un des cas d'utilisation du segment routing, c'est le reroutage rapide, en anglais « fast rerouting ».
14:12 Imaginons un scénario où le nœud A voudrait envoyer un paquet vers le nœud H.
14:18 Avec l'aide de l'IGP déjà déployée dans le réseau, il a une connaissance du plus court chemin vers la destination
14:26 et l'envoie vers le nœud suivant sur ce chemin.
14:30 Si par exemple ce nœud C détecte une rupture du lien vers le nœud suivant,
14:37 il doit normalement rejeter le paquet et attendre que l'IGP converge,
14:42 ce qui peut prendre un certain temps en fonction de la taille du réseau.
14:47 Avec SRV6, plutôt que de perdre le paquet et de se mettre dans une sorte d'attente passive,
14:55 ce nœud peut effectuer un reroutage rapide en calculant un chemin alternatif,
15:01 dans notre cas ADEGH par exemple, et en l'indiquant dans l'entête du paquet.
15:09 Les autres routeurs pourront alors forwarder le paquet selon le mécanisme que nous avons vu précédemment,
15:16 permettant ainsi de sauver ce paquet et tous les autres en attendant la convergence du protocole de routage.
15:25 Un autre exemple d'utilisation de SRV6, c'est, comme nous l'avons déjà mentionné,
15:31 le chaînage de services dans les architectures de traitement en pipeline.
15:36 Si nous avons par exemple un studio de production ou d'enregistrement,
15:41 nous pouvons imaginer que ce studio pourrait enregistrer les images d'un génie américain.
15:47 Il est traité à la façon d'une chaîne, de façon répartie,
15:53 avec plusieurs serveurs réalisant des fonctions diverses.
15:58 Bien sûr, tout cela se ferait dans le même datacenter, ou peut-être pas.
16:04 Ensuite, on pourrait bien sûr imaginer d'envoyer la vidéo à travers différents nœuds de traitement,
16:10 pour différentes langues par exemple.
16:14 SRV6 est donc clairement un avantage apporté par IPv6,
16:20 car, de façon classique, nous savons qu'une adresse IP est un identifiant pour un point de raccordement à Internet.
16:29 Avec IPv4, les adresses IP étaient rares,
16:33 ce qui a conduit à l'adoption et la démocratisation des protocoles de translation d'adresses NAT,
16:39 pour permettre notamment à plusieurs interfaces de partager la même adresse.
16:45 De l'autre côté, SRV6, aujourd'hui, profite de la multitude d'adresses fournies par IPv6
16:52 pour les utiliser comme identifiants de fonctions de traitement pour un paquet donné.
16:58 Une adresse peut alors être ici, une instruction comprenant l'identifiant d'une fonction à traiter,
17:05 ainsi que les paramètres de cette fonction, dans les architectures de traitement de données en chaîne.
17:12 Et cela est supporté comme une fonction de la couche réseau.
17:17 Avant de conclure cette vidéo, mentionnons quelques autres aspects relatifs au segment routing.
17:24 En fait, il existe deux variantes du segment routing, l'une pour MPLS et l'autre pour IPv6.
17:33 La variante MPLS vise à alléger la complexité du protocole de distribution des étiquettes MPLS,
17:40 LDP pour Label Distribution Protocol en anglais.
17:45 Elle permet aussi de réduire la nécessité de conserver les chemins MPLS dans l'état.
17:52 La variante IPv6, que nous avons présentée dans cette vidéo,
17:57 permet d'importer les fonctionnalités attractives de MPLS
18:01 et notamment d'unifier certaines opérations, comme le fast rerouting,
18:06 en tant que fonction réseau généraliste.
18:10 Notons que dans cette vidéo, nous avons suivi plusieurs détails.
18:14 Des détails qui sont importants, mais pas essentiels pour la compréhension du fonctionnement de ce protocole.
18:21 Il y a eu beaucoup de travail sur SRV6, et il y en a encore en cours,
18:27 pour avancer vers sa standardisation et son déploiement large échelle.
18:32 Nous voici donc au terme de cette vidéo sur SRV6.
18:36 Merci de nous avoir suivis jusqu'ici.
18:39 Dans la prochaine vidéo, nous prendrons un petit rafraîchissement avec le protocole BIER.
18:45 Merci.

Recommandations