CIDR et VLSM

Le CIDR


En 1992, la RFC 1338 (Supernetting: an Address Assignment and Aggregation Strategy) propose d'abolir la notion de classe qui n'était plus adaptée à la taille d'Internet.
Le Classless Inter-Domain Routing (CIDR), est mis au point en 1993 afin de diminuer la taille de la table de routage contenue dans les routeurs. Pour cela, on agrège plusieurs entrées de cette table en une seule.
La distinction entre les adresses de classe A, B ou C a été ainsi rendue obsolète, de sorte que la totalité de l'espace d'adressage unicast puisse être gérée comme une collection unique de sous-réseaux indépendamment de la notion de classe. Le masque de sous-réseau ne peut plus être déduit de l'adresse IP elle-même, les protocoles de routage compatibles avec CIDR, dits classless, doivent donc accompagner les adresses du masque correspondant. C'est le cas de Border Gateway Protocol dans sa version 4, utilisé sur Internet (RFC 1654 A Border Gateway Protocol 4, 1994), OSPF, EIGRP ou RIPv2. Les registres Internet régionaux (RIR) adaptent leur politique d'attribution des adresses en conséquence de ce changement.



La notation avec un slash ( / )



Cette notation suit le même modèle que la notation classique. C'est à dire, que c'est un couplage de l'adresse IP d'un hôte à son masque de sous-réseau. Mais le point particulier ici, c'est qu'au lieu de donner l'expression "brute" du masque de sous-réseau dans la notation, on se contente de spécifier le nombre de bits masqués pour obtenir ce masque. La notation précédente en notation avec un slash devient 192.168.1.45/24.
Cela veut dire que l'adresse IP 192.168.1.45 est associée à un masque ayant 24 bits de masqués.
La notation avec un slash semble devenir la plus courante et la plus utilisée aujourd'hui notamment avec le succès du CIDR


Exemple simple  !

192.168.10.0/23 représenterait une fusion de deux sous-réseaux de la classe C, 192.168.10.0 et 192.168.11.0 ayant chacun un masque de sous-réseau de… 255.255.255.0.


Cela dit, avec l'adressage CIDR, le masque /23 nous donne l'équation suivante :


192.168.10.0/23 (adressage CIDR) = 192.168.10.0/24 (ou 255.255.255.0) + 192.168.11.0/24 (ou 255.255.255.0)


Exemple


Comment résumer une route

Étape 1 : détecter les réseaux ayant le même préfixe


Dans cette étape, nous avons pris quatre réseaux ayant le même préfixe (/24) : il s'agit de 192.168.0.0, 192.168.1.0, 192.168.2.0 et 192.168.3.0.



Étape 2 : convertir des réseaux en binaire


Ensuite, nous avons converti chaque adresse réseau en binaire. Pourquoi ? Parce que c'est important pour l'étape 3.



Subnet 1 : 192.168.0.0/24 soit 11000000. 10101000. 00000000.00000000/24

Subnet 2 : 192.168.1.0/24 soit 11000000. 10101000. 00000001.00000000/24
Subnet 3 : 192.168.2.0/24 soit 11000000. 10101000. 00000010.00000000/24
Subnet 4 : 192.168.3.0/24 soit 11000000. 10101000. 00000011.00000000/24


Étapes 3 et 4 : détecter les motifs entre les sous-réseaux en binaire (étape 3) et les compter (étape 4)



Tous ces sous-réseaux ont 11000000.10101000.000000 en commun. Comptons le nombre de bits : il y en a 22
Donc : 11000000.10101000.00000000.00000000/22 soit 192.168.0.0/22


Le VLSM

L'utilisation de masque de longueur variable (Variable-Length Subnet Mask, VLSM) permet le découpage de l'espace d'adressage en blocs de taille variable, permettant une utilisation plus efficace de l'espace d'adressage.
Le calcul du nombre d'adresses d'un sous-réseau est le suivant, 2taille de l'adresse - masque.
Un fournisseur d'accès internet peut ainsi se voir allouer un bloc /19 (soit 232-19 = 213 = 8192 adresses) et créer des sous-réseaux de taille variable en fonction des besoins à l'intérieur de celui-ci : de /30 pour des liens points-à-point à /24 pour un réseau local de 200 ordinateurs. Seul le bloc /19 sera visible pour les réseaux extérieurs, ce qui réalise l'agrégation et l'efficacité dans l'utilisation des adresses.







Son utilité

Pour comprendre à quoi sert l’implémentation des masques de sous-réseaux variables, nous allons considérer un scénario.
Vous avez un réseau de 250 hôtes. Vous voulez réduire la congestion de ce dernier et décidez de le subnetter en plusieurs sous-réseaux. Grâce aux techniques du subnetting , vous décidez de le subnetter en cinq réseaux de 50 hôtes chacun.

PS : Il est impossible d’obtenir cinq réseaux de 50 hôtes pile chacun (d’ailleurs, c’est une mauvaise pratique de choisir un masque qui nous donne exactement le nombre d’hôtes dont nous avons besoin). À la rigueur, nous pourrons obtenir cinq réseaux pouvant contenir au moins 50 hôtes. Dans ce cas, le réseau pourrait contenir un maximum de 62 hôtes si on masque 2 bits

250 = 2^6-2  (6 bits pour la partie hote)

Vous obtenez alors vos cinq sous-réseaux et vous êtes contents : le but est atteint.

Maintenant, imaginez que vous êtes un administrateur réseau employé dans une entreprise. Vous avez un sous-réseau 192.168.100.0/24. Votre patron vous dit qu’il souhaite une segmentation par fonctions,
Il vous donne les spécifications suivantes :


·         Un sous-réseau de 50 hôtes, uniquement pour les secrétaires de l’entreprise.
·         Deux sous-réseaux de 12 hôtes chacun, pour les techniciens et les comptables.
·         Un sous-réseau de 27 hôtes pour les développeurs d’applications.

Pour une meilleure compréhension de ce qui nous est demandé, considérons le schéma ci-dessous auquel vous devez vous référer.








Les cercles rouges représentent les sous-réseaux que nous voulons obtenir. Nous avons au total cinq routeurs :


·         routeur_AE, qui relie le réseau A et E ;
·         routeur_link, qui relie les réseaux F, G et H au réseau E ;
·         etc.

PS : les réseaux F, G et H sont en orange pour une raison précise. Il s'agit en fait des interfaces de liaison.

implémentation des masques à longueurs variables

Pour comprendre le calcul des masques variables, nous allons implémenter cela dans un réseau local. La solution au scénario ci-dessus se fera comme dans un TD.

Les prérequis pour pouvoir suivre et comprendre ce TD sont :



·         Maîtrise de la notion de masque de sous-réseau et son utilité.
·         Maîtrise des 8 premières puissances de 2.
·         Maîtrise de la conversion du binaire au décimal et l’inverse.
·         Maîtrise de la notion du subnetting et sa procédure.
·         Maîtrise de la notion de passerelle et son rôle.
·         Maîtrise de l’adressage CIDR et sa notation.


Étape 1 : se focaliser sur le sous-réseau qui a le plus grand nombre d’hôtes







Nous allons commencer par localiser le sous-réseau qui a le plus grand nombre d’hôtes, le sous-réseau A en l’occurrence (50 hôtes).
Combien de bits devons-nous utiliser pour avoir au moins 50 hôtes ?
2^6 -2 = 62 Nous allons donc devoir garder 6 bits de la partie « host » de notre masque.
En binaire, nous obtenons donc : 11000000 . 10101000 . 11001000 . nnhhhhhh avec n les bits disponibles pour le réseau, et h les bits qu’on ne doit pas masquer pour obtenir au moins 50 hôtes.


Étape 2 : choisir un network ID pour l’étape 1

Une fois que nous avons résolu le plus grand sous-réseau, il nous faut choisir quel subnet ID donner à ce sous-réseau. Nous avons retenu, dans l’étape 1, que nous n’avions que 2 bits pour le sous-réseau, ce qui donne (en se focalisant sur le 4e octet

Citation

00hhhhhh ;
01hhhhhh ;
10hhhhhh ;
11hhhhhh.


En remplaçant le h (pour hôte) par 0 (puisque nous ne les masquons pas), on obtient le network ID pour chaque sous-réseau, soit les suivants :

Citation

00000000 = .0
01000000 = .64
10000000 = .128
11000000 = .192


N'ayant que 2 bits masqués pour le sous-réseau, on peut donc utiliser un masque de /26 ou 255.255.255.192 pour chacun de ses sous-réseaux obtenus, juste comme on ferait dans un réseau utilisant l’adressage par classe.

Voilà. Nous avons 4 network ID, vous pouvez choisir n’importe lequel pour le sous-réseau A. Dans ce TD, nous choisissons au hasard .64, soit la notation 192.168.100.64/26 (Network ID/masque). Les autres sous-réseaux devront se contenter des trois sous-réseaux restants


Étape 3 : Se focaliser sur le second plus grand sous-réseau

Le second plus grand sous-réseau contient dans notre exemple 27 hôtes pour les développeurs d’applications. Il s’agit du sous-réseau B. Nous allons refaire les calculs de l’étape 1. Nous n’allons donc pas détailler cela. Nous aurons besoin d’au moins 5 bits pour les hôtes (25-2 = 30, 30>27, donc O.K.). En binaire, nous avons :

Citation

11000000 . 10101000 . 11001000 . nnnhhhhh

N’est-ce pas ? Alors, nous pouvons faire toutes les combinaisons possibles avec les trois bits pour n, n’est-ce pas ? Faux !

Faux ! Nous n’avons besoin que de 5 bits. C'est logique puisque nous en avons trois consacrés au sous-réseau, non ?

Oui, mais non ! Si vous le faites ainsi, vous êtes en train de subnetter le network ID originel soit le 192.168.100.0, alors que c’est ce que nous avons déjà fait dans l’étape 1, en masquant 2 bits pour le réseau. Mais ici, nous voulons subnetter un subnet. C’est totalement différent, nous allons donc prendre un sous-réseau déjà obtenu dans l’étape 1 et le re-subnetter à nouveau

Dans l’étape 1, nous avions obtenu 4 combinaisons, soit 4 network ID. Nous avons sélectionné le 255.255.255.192 soit le /26 pour le sous-réseau A. Il nous reste donc trois network ID disponibles, soit :

Citation

00000000 = .0/26
01000000 = .64/26 // sous-réseau A
10000000 = .128/26
11000000 = .192/26


Choisissons le .128 dont le network ID sera 192.168.100.128/26, ce qui donne en binaire (focus sur le 4e octet) : 10000000. Or nous n’avons besoin que de 5 bits disponibles pour les hôtes, alors qu’ici nous en avons 6. Nous allons donc supprimer un bit pour les hôtes et l’allouer au sous-réseau.

Citation

10n00000.

Voilà ! Nous avons donc 3 bits pour le sous-réseau et 5 pour les hôtes. Maintenant, nous pouvons donc créer deux sous-réseaux à partir du sous-réseau original.
C’est cela l’intérêt du VLSM, on subdivise encore un sous-réseau. Nous avons donc :

Citation

10000000 = .128
10100000 = .160


En résumé, voici ce que nous avons fait :


·         1. Nous disposions à l'origine d'un Network ID de 192.168.100.0/24.
·         2. Nous l’avons subdivisé pour obtenir un sous-réseau ayant un masque de 192.168.100.64/26 et pouvant contenir au moins 50 hôtes.
·         3. Nous avons pris le sous-réseau obtenu dans l’étape 2 et l’avons re-subnetté en deux sous-réseaux (.128 et .160) qui auront un masque de... /27.

Ici également, nous pouvons choisir n'importe quel Network ID : choisissons le premier, soit .128/27. Le sous-réseau restant (.160/27) pourrait être utilisé dans le futur, s'il y a agrandissement du sous-réseau.
Voici la liste des Network ID que nous avons obtenus depuis l’étape 1 :

Citation

00000000 = .0/26 | libre pour être re-subnetté
01000000 = .64/26 | sous-réseau A
10000000 = .128/26 | Nous ne pouvons plus l’utiliser, il a été re-subnetté
10000000 = .128/27 | Nous prenons celui-ci pour le sous-réseau B
10100000 = .160/27 | nous gardons celui-ci pour le futur



Étape 4 : se focaliser sur le troisième plus vaste sous-réseau

Le troisième plus vaste sous-réseau est le réseau C et D de 12 hôtes chacun. Cette étape est exactement la répétition des étapes 1 et 3, avec les mêmes calculs. Nous avons besoin d’au moins 12 hôtes. 2^2-2 = 14, ce qui nous suffit. Nous allons donc garder 4 bits pour les hôtes et disposerons donc de 4 bits pour la partie réseau du masque. Au lieu de reprendre le Network ID de base et masquer 4 bits comme nous l'aurions fait dans un cas de subnetting classique, nous allons devoir re-subnetter un subnet déjà subnetté comme nous l’avons fait dans l’étape 3. Vous avez le choix : vous pouvez décider de re-subnetter le 192.168.100.0/26, 192.168.100.128/27 ou 192.168.100.160/27. Pour ce TD, choisissez 192.168.100.160/27. Nous avons donc ceci en binaire :

Citation


10100000

Nous avons 5 bits libres pour les hôtes, ce qui était suffisant pour le réseau B qui nécessitait 27 hôtes. Mais pour le réseau C ou D, nous aurons une perte de 27-12 = 15 hôtes, et c’est ce que nous voulons éviter. Nous allons donc retirer un bit de la partie hôte et l’allouer à la partie réseau de notre masque de manière à avoir 4 bits pour les hôtes et 4 pour la partie réseau car 24-2 = 14, ce qui nous convient.
Nous avons donc :


Citation

101n0000

·         10 représente ici les deux bits consacrés au réseau au départ dans l’étape 1. C’est notre motif de base : nous ne devons pas le changer, le reste de nos subnets en binaire doit commencer par 00.
·         1 représente le bit sur lequel nous nous sommes concentrés dans l’étape 3.
·         n est le bit supplémentaire que nous allons ajouter à la partie réseau du masque de manière à ne rester qu’avec 4 bits pour les hôtes.

Grace à ce bit de plus que nous avons, nous pouvons donc avoir deux combinaisons (soit le laisser à 0 ou le masquer à 1), ce qui nous donne la possibilité d’obtenir deux autres sous-réseaux à partir du sous-réseau de base, ce qui nous donne (avec le focus sur le 4e octet toujours) :


Citation

10100000 = .160
10110000 = .176

Il ne nous reste plus qu’à trouver le nouveau masque pour ces deux nouveaux sous-réseaux, ce qui est simple puisque nous n’avons qu’à compter le nombre de bits masqués. Soit 11111111.11111111.11111111.11110000, puisque nous n’avons que 4 bits pour les hôtes, le reste des bits est donc masqué pour la partie réseau.
Nous aurons donc un masque de 255.255.255.240 ou /28 pour la notation CIDR.
Résumons donc tous les subnets obtenus depuis l’étape 1 afin de choisir un Network ID pour les réseaux C et D.

Citation

00000000 = .0/26 | subnet libre pour être re-subnetté
01000000 = .64/26 | déjà utilisé par le sous-réseau A
10000000 = .128/26 | Nous ne pouvons plus utiliser celui-ci, car nous l’avons re-subnetté

11000000 = .192/26 | subnet pour un futur agrandissement
10000000 = .128/27 | déjà utilisé pour le sous-réseau B
10100000 = .160/27 | nous ne pouvons plus l’utiliser, car nous l’avons re-subnetté
10100000 = .160/28 | Prenons celui-ci pour le sous-réseau C
10110000 = .176/28 | Prenons celui-ci pour le sous-réseau D

Cinquième et dernière étape : déterminer les Network ID pour les interfaces de liaison

Regardez sur votre schéma. Comment allons-nous nouer ces sous-réseaux entre eux ? Par un routeur bien entendu, et c’est exactement ce que fait le routeur routeur_link dans le schéma. Mais comme chaque routeur, il possède deux interfaces de liaison. Il faut donc deux adresses IP pour relier F et E, deux pour relier G et E, et deux pour relier H et E.

Nous pouvons le faire les yeux fermés en binaire, nous n'avons besoin de 2 bits car 22-2 = 2. Ça tombe pile-poil. ;) Nous devons donc choisir un sous-réseau libre pour être re-subnetté. Vous pouvez choisir celui que vous voulez parmi les sous-réseaux libres que nous avons obtenu jusqu’ici. Pour suivre ce TD, choisissez le sous-réseau 00000000/26.

Ici également, nous nous rendons compte que ce sous-réseau a été subnetté de manière à obtenir au moins 50 hôtes (sous-réseau A), voilà pourquoi 6 bits sont disponibles pour les hôtes. Or nous n’avons besoin que de deux bits. Qu’allons-nous faire ? Exactement ce que nous avons fait dans les étapes précédentes, nous allons allouer 4 bits de plus à la partie réseau du masque pour ne rester qu’avec deux bits pour les hôtes.

Nous obtenons donc ceci :


Citation

00nnnnhh

Maintenant nous avons 4 bits alloués au réseau, ce qui donne la possibilité d’obtenir 16 sous-réseaux (2^4) à partir de ce sous-réseau. Vous devez être capable de déterminer chacun de ces 16 sous-réseaux, mais comme nous sommes gentils aujourd’hui, nous vous écrivons les huit premiers, l’avant-dernier et le dernier.

ous avons donc :


Citation

00000000 = .0/30
00000100 = .4/30
00001000 = .8/30
00001100 = .12/30
00010000 = .16/30
00010100 = .20/30
00011000 = .24/30
00011100 = .28/30
00100000 = .32/30
................................................
................................................
00111000 = .56/30
00111100 = .60/30

PS : chacun de ces sous-réseaux nous donnera deux hôtes disponibles, vous pouvez donc choisir quatre sous-réseaux parmi les 16 pour les interfaces de liaison, c'est-à-dire pour les adresses IP de chaque interface du routeur.
Résumons chacun des sous-réseaux trouvés depuis l’étape 1 :


Citation


00000000 = .0/26 | nous ne pouvons plus utiliser celui-ci, nous l’avons re-subnetté
00000000 = .0/30 | utilisons celui-ci pour le sous-réseau E
00000100 = .4/30 | sous-réseau F
00001000 = .8/30 | sous-réseau G
00001100 = .12/30 | sous-réseau H
01000000 = .64/26 | sous-réseau A
10000000 = .128/26 | Nous ne pouvons plus utiliser celui-ci, car nous l’avons re-subnetté
11000000 = .192/26 | subnet pour un futur agrandissement
10000000 = .128/27 | sous-réseau B
10100000 = .160/27 | nous ne pouvons plus l’utiliser, car nous l’avons re-subnetté
10100000 = .160/28 | sous-réseau C
10110000 = .176/28 | sous-réseau D


conclusion...













Bonne Chance

mohameddouhaji7@gmail.com