I. Introduction▲
Ce tutoriel aborde les concepts de subnetting et supernetting, et s'adresse particulièrement aux administrateurs réseau qui ont en charge la gestion d'espaces d'adresses IP (communément appelés blocs IP). Clés de voûte du design IP, ces deux notions viennent en réponse à la question suivante : étant donné un bloc IP, un certain nombre de réseaux à déployer, contenant chacun un certain nombre de stations à adresser, comment gérer au mieux cet espace d'adresses IP ?
Après un rappel sur les classes d'adresses IP, j'aborderai les notions de VLSM et supernet. J'illustrerai ensuite ces concepts en les appliquant à une architecture OSPF multi-area en utilisant le simulateur de réseau de routeurs GNS.
II. Classes d'adresses▲
Il existe cinq classes d'adresses IP qui sont : la classes A, la B, la C, la D et la E. Les classes D et E, respectivement multicasts et expérimentales, ne sont pas utilisées pour adresser des stations IP et n'entrent donc pas dans le sujet de cet article.
La réunion des classes A, B et C couvre l'espace d'adressage 1.0.0.0 - 223.255.255.255 subdivisé suivant le schéma suivant.
Au sein de chacune des classes, il existe un sous-espace d'adresses appelées adresses RFC1918. Ces adresses ne sont pas routées sur l'Internet, on les appelle également adresses IP privées.
III. Subnetting IP et VLSM▲
Le schéma précédent montre que tout réseau IP possède nativement un masque. Et malheureusement, par abus de langage, on parlera parfois de « réseau 10.0.0.0 » pour désigner 10.0.0.0/8, de « réseau 128.0.0.0 » pour 128.0.0.0/16 ou de « réseau 192.0.0.0 » pour 192.0.0.0/24. À une époque où les masques variables (on parle également de masques réduits) sont légion, gardons en tête qu'un réseau IP n'a aucune signification sans son masque associé !
Attardons-nous un peu sur la manipulation de longueur de masques réseau, communément appelée VLSM (Variable Length Subnet Mask) parce que la maîtrise de ces opérations est au cœur du sujet qui nous intéresse. Énonçons le 1er principe de base des manipulations VLSM.
1er principe : étant donné un bloc IP, le masque réduit définit le nombre de réseaux disponibles ainsi que le nombre maximal de stations qu'il est possible d'adresser dans chacun de ces réseaux.
On peut également formuler ce principe de la façon suivante : le nombre maximal de stations à adresser impose la longueur du masque réduit.
À nos calculettes donc, et prenons pour exemple le bloc 128.16.0.0/19…
Le schéma des classes d'adresses indique que ce bloc appartient à l'espace d'adressage de classe B (masque natif /16). Le /19 indique que trois bits supplémentaires sont utilisés pour adresser les réseaux. Les bits restants de l'adresse IP, soit 13 bits, permettront d'adresser les stations sur chacun de ces réseaux. En décomposant le 3e octet en binaire, les réseaux résultants seront de la forme 128.16.nnn00000.0, où n peut prendre la valeur 0 ou 1.
Ainsi, 128.16.0.0/19 définit huit sous-réseaux qui sont :
- 128.16.00000000.0 soit 128.16.0.0/19Â ;
- 128.16.00100000.0 soit 128.16.32.0/19Â ;
- 128.16.01000000.0 soit 128.16.64.0/19Â ;
- 128.16.01100000.0 soit 128.16.96.0/19Â ;
- 128.16.10000000.0 soit 128.16.128.0/19Â ;
- 128.16.10100000.0 soit 128.16.160.0/19Â ;
- 128.16.11000000.0 soit 128.16.192.0/19Â ;
- 128.16.11100000.0 soit 128.16.224.0/19.
Quant à la partie host de ces huit blocs, 213 adresses IP, soit 8192, seront disponibles par sous-réseau. En revanche, les « extrémités » de ces sous-blocs sont réservées au réseau logique (partie host à 0) et au local broadcast ou adresse de diffusion du sous-réseau (partie host à 1). Donc au total, il y aurait possibilité d'adresser 8190(8192-2=8190) stations sur chacun de ces sous-réseaux /19.
Là où les choses commencent à se compliquer un peu, c'est lorsqu'on doit subdiviser un bloc IP en plusieurs sous-blocs de largeur variable. Le 2e principe du VLSM va nous être d'une grande utilité.
2e principe du VLSM : lorsqu'on est amenés à subdiviser un bloc IP en plusieurs sous-réseaux sur un point de routage, on alloue les sous-blocs du plus grand au plus petit et on fait en sorte que les sous-blocs soient contigus.
Illustrons ceci avec le scénario suivant :
- un routeur possède trois interfaces pour connecter trois réseaux IP N1, N2 et N3. L'administrateur réseau impose les conditions suivantes :
- capacité d'adressage de N1, 40 hosts,
- capacité d'adressage de N2, 80 hosts,
- capacité d'adressage de N3, 140 hosts,
- utilisation au mieux du bloc 128.203.0.0/20Â ;
- la première étape consiste à trouver le nombre de hosts bits, ce qui correspond à la puissance 2 immédiatement supérieure du nombre de stations :
- N1Â : 40 hosts donc 6 bits (25 < 40 <26),
- N2Â : 80 hosts donc 7 bits (26 < 80 <27),
- N3Â : 140 hosts donc 8 bits (27 < 140 <28)Â ;
- par conséquent, nous pouvons maintenant dimensionner les masques puisque nous connaissons le nombre de bits réservés aux stations (le bloc alloué 128.203.0.0/20 utilise déjà les quatre premiers bits du 3 octet) :
- masque N1, 255.255.255.192 (/26),
- masque N2, 255.255.255.128 (/25),
- masque N3, 255.255.255.0 (/24)Â ;
- On applique maintenant le 2 principe énoncé plus haut :
- 1er bloc, le plus grand, N3. Masque 255.255.255.0 (/24) soit 128.203.0.0/24. Cet espace d'adressage s'étend de 128.203.0.0 à 128.203.0.255 (253 stations),
- vient ensuite le 2e bloc, N2. Masque 255.255.255.128 (/25). On utilise le sous-bloc contigu à N3. Ce sera donc 128.203.1.0/25. Cet espace d'adressage s'étend de 128.203.1.0 à 128.203.1.127 (126 stations),
- enfin, le plus petit sous-réseau, N1. Masque 255.255.255.192 /(26). On utilise le sous-bloc contigu à N2, soit 128.203.1.128/26 qui représente l'espace d'adressage 128.203.1.128 à 128.203.1.191 (62 stations).
En utilisant cet algorithme, l'adressage IP est optimisé au maximum, impossible de faire mieux. Si vous êtes férus en programmation, c'est un très joli challenge… Je l'avais codé en C dans les années 2000 pour un gros client qui l'utilise toujours ! C'est la façon dont les ISP gèrent leurs espaces d'adressage IP. Le deuxième intérêt de cette méthode est qu'il prépare le travail pour le supernetting comme je vais vous le montrer dans la partie suivante.
IV. Supernetting IP▲
Concrètement, le supernetting IP est l'opération inverse du subnetting. La littérature le désigne par CIDR (Classless Inter-Domain Routing). Étant donné plusieurs réseaux IP, comment représenter cet espace d'adressage à l'aide d'un couple (réseau_logique, masque) ? En somme, comment agréger toutes ces routes IP ? Outre une meilleure gestion des espaces d'adressage dans un système autonome, le principal atout du supernetting est la réduction des tables de routage.
En effet, en reprenant notre scénario précédent, supposons que le routeur qui connecte les réseaux 128.203.0.0/24, 128.203.1.0/25 et 128.203.1.128/26 ait à propager sa table de routage locale (par le biais bien sûr d'un protocole qui propage également les masques de sous-réseau tels OSPF, RIPv2, BGP, etc.). Si nous pouvons trouver un couple judicieux (reseau_logique, masque), le routeur enverra une seule route IP au lieu de trois. Autant de ressources mémoires et CPU économisées !
Plus précisément, revenons à la forme binaire des 3e et 4e octets des masques réseaux attachés à ce routeur :
- N1Â (/26) 255.255.11111111.11000000Â ;
- N2Â (/25) 255.255.11111111.10000000Â ;
- N3Â (/24) 255.255.11111111.00000000.
Il apparaît clairement qu'il est possible d'inclure l'ensemble des réseaux N1, N2 et N3 en utilisant le masque 255.255.11111110.00000000 soit /23. Le meilleur supernet CIDR qu'on puisse trouver pour annoncer ces trois routes IP est 128.203.0.0/23. Cet espace d'adresses s'étend depuis 128.203.0.0 jusqu'à 128.203.1.255. D'autre part, d'après ce qui précède, il est évident que le supernet CIDR censé annoncer plusieurs subnets d'un même réseau de classe A, B ou C (on parle du major network) aura toujours un masque inférieur ou égal au plus petit des masques des subnets.
Le schéma suivant illustre l'imbrication des sous-blocs IP que nous avons utilisés dans ce scénario :
On constate ici que les subnets IP N1, N2 et N3 couvrent quasiment tout le CIDR. Il reste quelques adresses disponibles (le sous-bloc 128.203.1.192/26). Notre CIDR « gaspille » une soixantaine d'adresses IP, ce qui est somme toute un très bon résultat. Ces adresses seront parfois utiles pour déployer de nouveaux réseaux en cas de besoin. Encore une fois, et sans rentrer dans la démonstration, l'algorithme que j'ai illustré ici avec ce scénario est la seule méthode qui permette d'optimiser au mieux un bloc IP éclaté en plusieurs sous-réseaux. Parce que par construction, au fil du découpage des sous-blocs, on déplace le dernier bit du masque réseau « vers la droite »…
Dans le cas général, il faut revenir à l'écriture binaire pour trouver le supernet le plus fin qui permette d'annoncer plusieurs réseaux issus du même major network. En revanche, il est très dangereux de modifier des tables de routage par introduction de CIDR sur un gros réseau sans étudier avec minutie la façon dont sont distribués les sous-blocs IP. Parce qu'il y a toujours le risque qu'un sous-bloc soit utilisé quelque part en aval du routeur qui annonce le CIDR… Ce sera notamment le cas de sous-blocs qui seraient « masqués » derrière des routes par défaut par exemple. Les paquets à destination de ces réseaux suivraient immanquablement le chemin du CIDR (cas de misrouting). Dans ce cas de figure, il est parfois judicieux d'optimiser les tables de routage en utilisant deux, voire trois CIDR lorsque les sous-blocs manquants ont été identifiés. Les exercices 3, 4 et 5 que je propose un peu plus loin dans ce document illustrent ce type de situation.
Dans certaines architectures, on évitera l'emploi des CIDR parce qu'on préférera propager les réseaux de façon explicite. Les tables de routage sont alors scrutées en permanence par des scripts qui remontent des alarmes lorsque certains réseaux disparaissent (réseaux de trading et datacenters par exemple ou bien encore loopbacks de routeurs).
Un autre inconvénient survient également lorsqu'un réseau contenu dans un CIDR n'est plus joignable. Le CIDR étant toujours annoncé, les stations tenteront d'émettre vers le réseau et c'est le routeur source du CIDR qui enverra un ICMP (Internet Control Message Protocol) Destination Unreachable, au lieu de la gateway locale de la station.
V. Exercices▲
Voici quelques exercices de calculs de subnets et supernets.
V-A. Exercice 1 ▲
On dispose du bloc d'adresses IP 10.10.0.0/16. Allouer au mieux les réseaux suivants :
- N1 : 110 adresses ;
- N2 : 27 adresses ;
- N3 : 50 adresses ;
- N4Â : 200 adresses.
Donnez le plus fin supernet pour annoncer ces réseaux.
V-B. Exercice 2 ▲
Même exercice en prenant le bloc 192.168.20.0/24 :
- N1 : 8 adresses ;
- N2 : 4 adresses ;
- N3Â : 10 adresses.
Supernet ?
V-C. Exercice 3 ▲
Saurez-vous résoudre cette égalité ?
- 10.64.0.0/13 - 10.64.0.0/14 =
V-D. Exercice 4 ▲
Puis celle-ci ?
- 10.100.0.0/17 - 10.100.64.0/19 - 10.100.0.0/18 =
VI. Application : architecture OSPF multi-area▲
Pour illustrer ce tutoriel, j'utilise le simulateur réseau GNS3. Pour ceux qui voudraient le reproduire, il suffit de charger l'IOS d'un routeur Cisco capable de délivrer cinq interfaces Ethernet (j'utilise ici un modèle 7206).
Grand classique du lab CCIE Routing & Switching, ce lab se propose de regarder certains aspects du routage IP dans une architecture OSPF multi-area basée sur un design IP VLSM.
Voici la topologie : trois areas OSPF fédérées par l'area backbone :
On impose les contraintes suivantes :
- le bloc IP alloué à cet Autonomous System est 10.96.0.0/13 ;
- toutes les interconnexions point-Ã -point sont /30Â ;
- tous les routeurs possèdent une loopback /32 propagée dans l'Autonomous Sytem ;
- les border routeurs injectent une route CIDR dans leurs areas.
En outre, pour dimensionner les subnets dans les différents areas, on fournit le tableau suivant qui donne le nombre d'adresses IP à pourvoir par interface routée (réseau logique et local broadcast inclus).
Area | SW | adresses |
Area 0 | SW1 | 50 |
 | SW2 | 110 |
 | SW3 | 200 |
Area 1 | SW4 | 60 |
 | SW5 | 25 |
 | SW6 | 140 |
Area 2 | SW7 | 300 |
 | SW8 | 40 |
 | SW9 | 70 |
Area 3 | SW10 | 50 |
 | SW11 | 30 |
 | SW12 | 160 |
Si vous avez suivi ce tutoriel, et muni d'une calculette, vous aurez vite fait de bâtir un design IP dans les règles de l'art…
Détaillons un peu le design IP de l'area 0. Avant toute chose, et pour fixer les idées, 10.96.0.0/13 couvre l'espace d'adresses 10.96.0.0 à 10.103.255.255.
Le plus grand bloc d'adresses IP à pourvoir concerne SW3, 200 adresses. La puissance de 2 immédiatement supérieure est 28 (256), donc les stations seront adressées sur huit bits. D'où le masque du réseau associé /24. En prenant le réseau 10.96.0.0/24, on utilise le sous-bloc qui s'étend de 10.96.0.0 à 10.96.0.255.
Vient ensuite SW2. 110 < 27. Les hosts seront adressés sur sept bits. D'où le masque /25. On prend le sous-bloc contigu au réseau précédent, à savoir 10.96.1.0/25. C'est l'ensemble des adresses depuis 10.96.1.0 jusqu'à 10.96.1.127.
Enfin SW1. 50 < 26. Hosts codés sur six bits. D'où masque réseau /26. Le bloc /26 contigu au réseau précédent est 10.96.1.128/26. C'est l'espace d'adresses 10.96.1.128 - 10.96.1.191.
Passons maintenant au CIDR de cette area. On sait qu'il sera au plus /24. On décompose en binaire les 3e et 4e octets des sous-blocs :
- /24 255.255.11111111.00000000Â ;
- /25 255.255.11111111.10000000Â ;
- /26 255.255.11111111.11000000.
Ce qui fournit le masque du CIDR 255.255.11111110.00000000, Ã savoir /23.
Pour vérification, 10.96.0.0/23 est l'espace d'adresses 10.96.0.0 - 10.96.1.255 qui inclut bien tous les sous-blocs précédents. N'oublions pas les interconnexions entre les routeurs et leurs loopbacks. Par convention, pour les loopbacks, on prendra les dernières adresses disponibles du pool CIDR (ne pas utiliser la dernière adresse qui est un local broadcast). En ce qui concerne les interconnexions, on procède de la même manière que les sous-blocs précédents, on allouera des sous-blocs /30 réduits à quatre adresses IP.
Les tableaux suivants récapitulent les réseaux choisis dans chaque area :
SW | adresses | masque | réseau logique | local broadcast |
SW1 | 50 | 255.255.255.192 | 10.96.1.128 | 10.96.1.191 |
SW2 | 110 | 255.255.255.128 | 10.96.1.0 | 10.96.1.127 |
SW3 | 200 | 255.255.255.0 | 10.96.0.0 | 10.96.0.255 |
Interco R1 - R2 | 255.255.255.252 | 10.96.1.192 | 10.96.1.195 | |
Interco R1 - R3 | 255.255.255.252 | 10.96.1.196 | 10.96.1.199 | |
Interco R2 - R3 | 255.255.255.252 | 10.96.1.200 | 10.96.1.203 | |
Loopback R1 10.96.1.254/32 | Â | AREA 0 | Â | |
Loopback R2 10.96.1.253/32 | CIDR 10.96.0.0/23 | Â | ||
Loopback R3 10.96.1.252/32 | Â | Â | Â |
SW | adresses | masque | réseau logique | local broadcast |
SW4 | 60 | 255.255.255.192 | 10.96.3.0 | 10.96.3.63 |
SW5 | 25 | 255.255.255.224 | 10.96.3.64 | 10.96.3.95 |
SW6 | 140 | 255.255.255.0 | 10.96.2.0 | 10.96.2.255 |
Interco R1 - R4 | 255.255.255.252 | 10.96.3.96 | 10.96.3.99 | |
Interco R1 - R5 | 255.255.255.252 | 10.96.3.100 | 10.96.3.103 | |
Interco R4 - R5 | 255.255.255.252 | 10.96.3.104 | 10.96.3.107 | |
Interco R4 - R6 | 255.255.255.252 | 10.96.3.108 | 10.96.3.111 | |
Loopback R4 10.96.3.254/32 | Â | Â | ||
Loopback R5 10.96.3.253/32 | CIDR 10.96.2.0/23 | Â | ||
Loopback R6 10.96.3.252/32 | Â | Â | Â |
SW | adresses | masque | réseau logique | local broadcast |
SW7 | 300 | 255.255.254.0 | 10.96.4.0 | 10.96.5.255 |
SW8 | 40 | 255.255.255.192 | 10.96.6.128 | 10.96.6.191 |
SW9 | 70 | 255.255.255.128 | 10.96.6.0 | 10.96.6.127 |
Interco R2 - R7 | 255.255.255.252 | 10.96.6.192 | 10.96.6.195 | |
Interco R7 - R16 | 255.255.255.252 | 10.96.6.196 | 10.96.6.199 | |
Interco R16 - R17 | 255.255.255.252 | 10.96.6.200 | 10.96.6.203 | |
Loopback R7 10.96.7.254/32 | Â | AREA 2 | Â | |
Loopback R11 10.96.7.253/32 | CIDR 10.96.4.0/22 | Â | ||
Loopback R12 10.96.7.252/32 | CIDR 10.96.2.0/23 | Â |
SW | adresses | masque | réseau logique | local broadcast |
SW10 | 50 | 255.255.255.192 | 10.96.9.0 | 10.96.9.63 |
SW11 | 30 | 255.255.255.224 | 10.96.9.64 | 10.96.9.95 |
SW12 | 160 | 255.255.255.0 | 10.96.8.0 | 10.96.8.255 |
Interco R3 - R14 | 255.255.255.252 | 10.96.9.96 | 10.96.9.99 | |
Interco R3 - R13 | 255.255.255.252 | 10.96.9.100 | 10.96.9.103 | |
Interco R13 - R15 | 255.255.255.252 | 10.96.9.104 | 10.96.9.107 | |
Interco R15 - R14 | 255.255.255.252 | 10.96.9.108 | 10.96.9.111 | |
Loopback R13 10.96.9.254/32 | Â | Â | ||
Loopback R14 10.96.9.253/32 | CIDR 10.86.8.0/23 | Â | ||
Loopback R15 10.96.9.252/32 | Â | Â | Â |
Afin de peupler au maximum les tables de routage, je propose de configurer les routeurs sans CIDR dans un premier temps. D'après les quatre tableaux qui précèdent, on peut déjà prévoir deux caractéristiques des tables de routage :
- 38 entrées (9+10+9+10) ;
- 7 masques réseau (255.255.254.0, 255.255.255.0, 255.255.255.128, 255.255.255.192, 255.255.255.224, 255.255.255.252, 255.255.255.255).
Enfin, si on s'intéresse particulièrement au border routeur R1, on peut dire en plus que sa table de routage contiendra 19 entrées inter-areas (IA) qui correspondent aux réseaux IP listés dans les tableaux des areas 2 et 3.
Vérifions donc la table de routage de R1 :
R1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 38 subnets, 7 masks
O 10.96.3.104/30 [110/2] via 10.96.3.102, 00:01:12, GigabitEthernet4/0
[110/2] via 10.96.3.98, 00:01:12, GigabitEthernet3/0
O IA 10.96.9.96/30 [110/3] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
O 10.96.3.108/30 [110/2] via 10.96.3.98, 00:01:12, GigabitEthernet3/0
O IA 10.96.9.100/30 [110/3] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
C 10.96.3.96/30 is directly connected, GigabitEthernet3/0
O IA 10.96.9.104/30 [110/4] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
C 10.96.3.100/30 is directly connected, GigabitEthernet4/0
O IA 10.96.9.108/30 [110/4] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
O IA 10.96.9.64/27 [110/4] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
O 10.96.3.64/27 [110/2] via 10.96.3.102, 00:01:12, GigabitEthernet4/0
O IA 10.96.8.0/24 [110/5] via 10.96.1.194, 00:01:12, GigabitEthernet0/0
O IA 10.96.9.0/26 [110/4] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O 10.96.2.0/24 [110/2] via 10.96.3.98, 00:01:26, GigabitEthernet3/0
O 10.96.3.0/26 [110/3] via 10.96.3.98, 00:01:26, GigabitEthernet3/0
O 10.96.0.0/24 [110/3] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O 10.96.1.0/25 [110/2] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O IA 10.96.6.0/25 [110/5] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O IA 10.96.4.0/23 [110/3] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O IA 10.96.7.253/32 [110/4] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O IA 10.96.7.252/32 [110/5] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O IA 10.96.7.254/32 [110/3] via 10.96.1.194, 00:01:26, GigabitEthernet0/0
O 10.96.3.253/32 [110/2] via 10.96.3.102, 00:01:26, GigabitEthernet4/0
O 10.96.3.252/32 [110/3] via 10.96.3.98, 00:01:26, GigabitEthernet3/0
C 10.96.1.254/32 is directly connected, Loopback0
O 10.96.1.253/32 [110/2] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O 10.96.3.254/32 [110/2] via 10.96.3.98, 00:01:27, GigabitEthernet3/0
O 10.96.1.252/32 [110/3] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O IA 10.96.9.254/32 [110/4] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O IA 10.96.9.253/32 [110/4] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O IA 10.96.9.252/32 [110/5] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O 10.96.1.200/30 [110/2] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O IA 10.96.6.200/30 [110/4] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
O IA 10.96.6.196/30 [110/3] via 10.96.1.194, 00:01:27, GigabitEthernet0/0
C 10.96.1.192/30 is directly connected, GigabitEthernet0/0
O IA 10.96.6.192/30 [110/2] via 10.96.1.194, 00:01:39, GigabitEthernet0/0
C 10.96.1.196/30 is directly connected, GigabitEthernet1/0
C 10.96.1.128/26 is directly connected, GigabitEthernet2/0
O IA 10.96.6.128/26 [110/4] via 10.96.1.194, 00:01:39, GigabitEthernet0/0
La table de routage est bien conforme à nos prévisions.
Il est également possible de connaître la mémoire utilisée par la table de routage :
R1#sh ip route summary
IP routing table name is Default-IP-Routing-Table(0)
IP routing table maximum-paths is 32
Route Source Networks Subnets Overhead Memory (bytes)
connected 0 6 784 912
static 0 0 0 0
ospf 1 0 32 2112 4864
Intra-area: 13 Inter-area: 19 External-1: 0 External-2: 0
NSSA External-1: 0 NSSA External-2: 0
internal 1 1172
Total 1 38 2896 6948
Elle mobilise actuellement 6948 octets. On retrouve par ailleurs le nombre total d'entrées (38). À noter que la table de routage occupe le même espace mémoire sur l'un des routeurs quelconques de l'AS puisqu'ils possèdent la même copie de la base de données topologique. Vérifions ceci sur le routeur R15 par exemple :
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router ospf 1
R1(config-router)#area 0 range 10.96.0.0 255.255.254.0
R1(config-router)#area 1 range 10.96.2.0 255.255.254.0
R1(config-router)#^Z
R1#
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router ospf 1
R2(config-router)#area 0 range 10.96.0.0 255.255.254.0
R2(config-router)#area 2 range 10.96.4.0 255.255.252.0
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router ospf 1
R3(config-router)#area 0 range 10.96.0.0 255.255.254.0
R3(config-router)#area 3 range 10.96.8.0 255.255.254.0
R3(config-router)#^Z
R3#
Voyons maintenant l'effet provoqué par la configuration du CIDR.
Pour rappel, voici les CIDR à configurer : 10.96.0.0/23 pour l'area 0, 10.96.2.0/23 pour l'area 1, 10.96.4.0/22 pour l'area 2 et 10.96.8.0/23 pour l'area 3. Les CIDR se configurent sur les border routeurs R1, R2 et R3. Sur chacun d'eux, je configure le supernet qui est lié aux areas qu'il connecte :
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router ospf 1
R1(config-router)#area 0 range 10.96.0.0 255.255.254.0
R1(config-router)#area 1 range 10.96.2.0 255.255.254.0
R1(config-router)#^Z
R1#
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router ospf 1
R2(config-router)#area 0 range 10.96.0.0 255.255.254.0
R2(config-router)#area 2 range 10.96.4.0 255.255.252.0
R2(config-router)#^Z
R2#
R3#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#router ospf 1
R3(config-router)#area 0 range 10.96.0.0 255.255.254.0
R3(config-router)#area 3 range 10.96.8.0 255.255.254.0
R3(config-router)#^Z
R3#
Voyons maintenant l'impact de ce changement, sur R15 par exemple. Voici sa table de routage :
R15#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 13 subnets, 7 masks
O 10.96.9.96/30 [110/2] via 10.96.9.109, 00:07:06, FastEthernet2/0
O 10.96.9.100/30 [110/2] via 10.96.9.105, 00:07:06, GigabitEthernet1/0
C 10.96.9.104/30 is directly connected, GigabitEthernet1/0
C 10.96.9.108/30 is directly connected, FastEthernet2/0
O 10.96.9.64/27 [110/2] via 10.96.9.109, 00:07:06, FastEthernet2/0
C 10.96.8.0/24 is directly connected, GigabitEthernet3/0
O 10.96.9.0/26 [110/2] via 10.96.9.105, 00:07:06, GigabitEthernet1/0
O IA 10.96.2.0/23 [110/5] via 10.96.9.109, 00:02:44, FastEthernet2/0
[110/5] via 10.96.9.105, 00:02:44, GigabitEthernet1/0
O IA 10.96.0.0/23 [110/3] via 10.96.9.109, 00:00:49, FastEthernet2/0
[110/3] via 10.96.9.105, 00:00:49, GigabitEthernet1/0
O IA 10.96.4.0/22 [110/4] via 10.96.9.109, 00:01:26, FastEthernet2/0
[110/4] via 10.96.9.105, 00:01:26, GigabitEthernet1/0
O 10.96.9.254/32 [110/2] via 10.96.9.105, 00:07:08, GigabitEthernet1/0
O 10.96.9.253/32 [110/2] via 10.96.9.109, 00:07:08, FastEthernet2/0
C 10.96.9.252/32 is directly connected, Loopback0
Les routes inter-areas sont réduites à trois entrées. On reconnaît bien les supernets configurés sur les trois borders routeurs. Quant au supernet 10.96.8.0/23, il n'apparaît pas dans la table de routage de R15 puisque ces routes sont locales à l'area 3 (le router R3 n'injecte pas ce summary dans l'area 3).
Quant à la mémoire, on constate un réel gain :
R15#sh ip ro summ
IP routing table name is Default-IP-Routing-Table(0)
IP routing table maximum-paths is 32
Route Source Networks Subnets Overhead Memory (bytes)
connected 0 4 496 608
static 0 0 0 0
ospf 1 0 9 768 1368
Intra-area: 6 Inter-area: 3 External-1: 0 External-2: 0
NSSA External-1: 0 NSSA External-2: 0
internal 1 1172
Total 1 13 1264 3148
puisque la table de routage de R15 n'occupe plus que 3148 octets, ce qui constitue un gain de presque 50 % de mémoire par le simple ajout de six commandes sur trois border routeurs !
Il est facile d'imaginer le bénéfice d'un tel réglage sur des routeurs gérant plusieurs milliers de routes IP !
VII. Solutions des exercices▲
VII-A. Exercice 1 ▲
Dans l'ordre décroissant de grandeur, les sous-réseaux seront déterminés par les masks suivants :
- N4Â : /24Â ;
- N1Â : /25Â ;
- N3Â : /26Â ;
- N2Â : /27.
Une solution possible consisterait à démarrer le premier sous-réseau à l'adresse 10.10.10.0 par exemple. Les sous-réseaux seraient donc :
- N4Â : 10.10.10.0/24 (10.10.10.0 Ã 10.10.10.255)Â ;
- N1Â : 10.10.10.11.0/25 (10.10.11.0 Ã 10.10.11.127)Â ;
- N3Â : 10.10.11.128/26 (10.10.11.128 Ã 10.10.11.191)Â ;
- N2Â : 10.10.11.192/27 (10.10.11.192 Ã 10.10.11.223).
Le supernet le plus fin pour annoncer ces quatre sous-réseaux serait donc 10.10.10.0/23.
VII-B. Exercice 2 ▲
En démarrant le premier sous-bloc à 192.168.20.0, une solution possible est :
- N3Â : 192.168.20.0/28Â ;
- N1Â : 192.168.20.16/29Â ;
- N2Â : 192.168.20.24/30.
Avec le supernet 192.168.20.0/27 correspondant.
VII-C. Exercice 3 ▲
Déterminons d'abord les espaces d'adressage :
- 10.64.0.0/13 couvre le sous-bloc 10.64.0.0 Ã 10.71.255.255Â ;
- 10.64.0.0/14 couvre le sous-bloc 10.64.0.0 Ã 10.67.255.255.
La soustraction est donc le sous-bloc 10.68.0.0 à 10.71.255.255. En examinant la forme binaire des trois derniers octets de ce sous-bloc, l'espace d'adressage s'écrit 10.010001xx.xxxxxxxx.xxxxxxxx où x prend toutes les valeurs 0 et 1. C'est donc le supernet 10.68.0.0/14.
VII-D. Exercice 4▲
Examinons les espaces d'adressage couverts :
- 10.100.0.0/17 : 10.100.0.0 → 10.100.127.255 ;
- 10.100.0.0/18 : 10.100.0.0 → 10.100.63.255 ;
- 10.100.64.0/19 : 10.100.64.0 → 10.100.95.255.
La soustraction de (1) et (2) donne le sous-bloc 10.100.64.0 → 10.100.127.255.
Puis la soustraction de (3) donne le sous-bloc final 10.100.96.0 → 10.100.127.255 de forme binaire (sur les deux derniers octets) :
- 10.100.011xxxxx.xxxxxxxx
où x prend toutes les valeurs 0 et 1.
Le supernet résultant est donc 10.100.96.0/19.
VIII. Conclusions▲
Voilà , cette présentation est maintenant terminée et j'espère que ces notions de subnetting, de supernetting et de CIDR n'ont maintenant plus de secret pour vous et que vous manipulez maintenant avec aisance les nouvelles notations de masque de réseau.
Je tiens à remercier kdmbella pour sa relecture technique ainsi que ClaudeLeloup pour la relecture orthographique de ce tutoriel.
N'hésitez pas à commenter cet article ! 15 commentaires