Prérequis
- IPv4 et ses classes d'adresses
- Subnetting avec CIDR (Classless Inter-Domain Routing)
Introduction
Je voulais faire une petite parenthèse sur le subnetting. Lors de mes études on m'avait appris le subnetting au travers de la notation CIDR (Classless Inter-Domain Routing). Le principe est simple mais on aboutit à un partage des sous-réseaux tout à fait régulier. Si vous avez un réseau de classe C et que vous le partagez selon ce principe simple vous aurez X sous-réseaux qui pourront adresser chacun Y machines. Le souci de cette approche c'est le gaspillage des adresses qui se fait d'autant plus ressentir qu'on dispose d'une plage d'adresse conséquente. Comprendre qu'on aura tendance à davantage ressentir le gaspillage sur un partage d'une plage de classe A que sur une plage de la classe C.Si j'ai 200 utilisateurs en tout dans une organisation et qu'on lui attribue un réseau dans chacune des classes utiles voilà ce qui se passe :
- Classe A : (2^24) - 2 = 16777216 - 2 = 16777214 adresses utilisables
Soit 16777214 - 200 = 16777014 adresses gaspillées. - Classe B : (2^16) - 2 = 65536 - 2 = 65534 adresses utilisables
Soit 65534 - 200 = 65334 adresses gaspillées. - Classe C : (2^8) - 2 = 256 - 2 = 254 adresses utilisables
Soit 254 - 200 = 54 adresses gaspillées.
Une organisation de 200 personnes peut très bien décider d'utiliser le réseau tel quel mais elle risque fort d'avoir des pertes conséquentes sur celui-ci car le domaine de collision n'est pas négligeable (avis perso, je n'ai pas encore rencontré de gros réseaux mais déjà chez moi avec 2 machines j'ai un peu de pertes et plus on a de machines plus on a de pertes donc...). C'est l'une des raisons qui pousse à faire du subnetting.
Admettons que l'effectif des services soit réparti comme suit (on oublie les routeurs et autres matériels nécessitant une adresse IP pour ces explications ) :
- 43 personnes à la compta
- 57 personnes à la vente
- 55 personnes au service technique
- 45 personnes au service logistique
Je vais vous faire un petit tableau récapitulatif du découpage des sous-réseaux.
Nom | Effectif | Bloc | @ réseau | @ de diffusion | Plage d'adresses utilisables |
---|---|---|---|---|---|
Compta | 43 | 64 | 210.54.21.0/26 | 210.54.21.63 | 210.54.21.1 ~ 62 |
Vente | 57 | 64 | 210.54.21.64/26 | 210.54.21.127 | 210.54.21.65 ~ 126 |
S. tech. | 55 | 64 | 210.54.21.128/26 | 210.54.21.191 | 210.54.21.129 ~ 190 |
S. logis. | 45 | 64 | 210.54.21.192/26 | 210.54.21.255 | 210.54.21.193 ~ 254 |
VLSM
C'est ici que les choses commencent à devenir fun. Dans la précédente section j'ai introduis le subnetting disons "classique" qui permet de découper un réseau en parts régulières.Pour une raison quelconque notre organisation à décidée de revoir sa structure interne comme suit :
- 3 personnes à la compta
- 57 personnes à la vente
- 73 personnes au service technique
- 27 personnes au service logistique
Oui 20% du personnel à viré mais le point important à voir c'est que le service ayant le plus d'effectif est constitué de 73 personnes et ne rentre plus dans un bloc de 64 mais de 128 adresses. Si on devait utiliser la même logique que précédemment à savoir partager en parts égales nous obtiendrions 4×(128-2) = 504 adresses utilisables soit bien plus que ce que nous offre un réseau de classe C (ça reste envisageable avec un supernetting. cf. § Supernetting) soit 254 adresses utilisables. D'autre part un des services ne comporte plus que 3 personnes donc le gaspillage d'adresses serait énorme.
Comment faire alors ?
Simplement permettre l'utilisation de blocs de tailles différentes comme illustré dans le tableau suivant :
Nom | Effectif | @ allouées | Bloc | Masque | Nota° CIDR |
---|---|---|---|---|---|
Compta | 3 | 6 | 8 | 255.255.255.248 | /29 |
Vente | 57 | 62 | 64 | 255.255.255.192 | /26 |
S. tech. | 73 | 126 | 128 | 255.255.255.128 | /25 |
S. logis. | 27 | 30 | 32 | 255.255.255.224 | /27 |
On va mettre en premier les plus gros blocs d'adresses c'est-à-dire ceux dont la notation CIDR donne le plus petit nombre :
Nom | Effectif | Bloc | @ réseau | @ de diffusion | Plage d'adresses utilisables |
---|---|---|---|---|---|
S. tech. | 73 | 128 | 210.54.21.0 | 210.54.21.127 | 210.54.21.1 ~ 126 |
Vente | 57 | 64 | 210.54.21.128 | 210.54.21.191 | 210.54.21.129 ~ 190 |
S. logis. | 27 | 32 | 210.54.21.192 | 210.54.21.223 | 210.54.21.193 ~ 222 |
Compta | 3 | 8 | 210.54.21.224 | 210.54.21.231 | 210.54.21.225 ~ 230 |
Non utilisé | N/A | 3×8 | 210.54.21.232 | 210.54.21.255 | N/A |
Et voilà le travail ! Il reste encore 3 blocs de 8 adresses à pourvoir ou un bloc de 16 et un bloc de 8 si on préfère.
Notes complémentaires
L'exemple de VLSM qui a été vu ici est vraiment très semblable à ce que propose CIDR mais il est possible d'aller plus loin dans le raisonnement et ce de manière imbriquée et récursive de sorte que vos adresses de sous-réseau semblent correspondre à un certain format.Pour illustrer cette idée je vais raisonner sur une adresse de classe B.
Maintenant prenons notre organisation 20 ans plus tard. Elle a bien prospéré et emploi disons 20000 personnes à travers le monde.
Je ne vais pas faire les calculs détaillés mais juste développer un point.
VLSM est un magnifique outil pour organiser son adressage réseau.
Admettons que notre organisation a désormais des filiales en France, au Grand Duché du Luxembourg, en Allemagne, en Pologne et au Japon. Puis dans chaque pays on prévois 3 filiales, chaque filiale comprend 4 services, etc...
Notre adressage qui était encore organisé dans une logique de blocs compactes du plus gros au plus petit devient en quelque sorte plus disparate et répond à un formatage ou sérialisation au travers de son masque de sous-réseau.
Nous allons en effet séquentiellement attribuer des bits au pays puis aux filiales et enfin aux services par exemple.
- 5 pays -> 3 bits soit 8 possibilités.
- 3 filiales ->2 bits soit 4 possibilités.
- 4 services par filiale -> 2 bits soit 4 possibilités.
XXXXXXXX.XXXXXXXX.AAABBCCX.XXXXXXXX
Il suffit ensuite de faire des tableaux pour organiser la répartition des adresses :
- CODE AAA
- 000 France
- 001 Luxembourg
- 010 Allemagne
- 011 Pologne
- 100 Japon
- 101 N/A
- 110 N/A
- 111 N/A
- CODE BB
- France
- 00 Metz -> 000 00
- 01 Grenoble -> 000 01
- 10 Bordeaux -> 000 10
- 11 N/A -> 000 11
- Luxembourg
- 00 Luxembourg -> 001 00
- 01 Esch -> 001 01
- 10 Bettembourg -> 001 10
- 11 N/A -> 001 11
- ...
- Japon
- 00 大阪 -> 100 00
- 01 京都 -> 100 01
- 10 名古屋 -> 100 10
- 11 N/A -> 100 11
- 大阪
- Compta -> 100 00 00
- 10101100.00010000.1000000X.XXXXXXXX
- @ réseau -> 10101100.00010000.10000000.00000000
-> 172.16.128.0/23 - @ de diffusion -> 10101100.00010000.10000001.11111111
->172.16.129.255/23 - Vente -> 100 00 01
- 10101100.00010000.1000001X.XXXXXXXX
- @ réseau -> 10101100.00010000.10000010.00000000
->172.16.130.0/23 - @ de diffusion -> 10101100.00010000.10000011.11111111
->172.16.131.255/23 - Service technique -> 100 00 10
- 10101100.00010000.1000010X.XXXXXXXX
- @ réseau -> 10101100.00010000.10000100.00000000
->172.16.132.0/23 - @ de diffusion -> 10101100.00010000.10000101.11111111
->172.16.133.255/23 - Service logistique -> 100 00 11
- 10101100.00010000.1000011X.XXXXXXXX
- @ réseau -> 10101100.00010000.10000110.00000000
-> 172.16.134.0/23 - @ de diffusion -> 10101100.00010000.10000111.11111111
-> 172.16.135.255/23
Supernetting
En 2 mots c'est comme on peut le deviner le principe inverse du Subnetting. Cela consiste donc à emprunter des bits à la partie réseau pour les attribuer à la partie hôte.L'un des principaux usages du supernetting est la simplification des tables de routage.
Exemple :
Admettons qu'un routeur prenne en charge plusieurs réseaux privés de classe C :
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.2.0/24
- ...
Ces réseaux sont tous distincts et ne se voient pas. Pourtant le routeur à son niveau peu définir une règle reliant tous ces réseaux en isolant la partie commune des adresses en binaire entre elles.
On supposera que le dernier réseau utilisé est 192.168.32.0/24
- 192.168.0.0 -> 11000000.10101000.00000000.00000000
- 192.168.32.0 -> 11000000.10101000.00100000.00000000
Bonus
Je me suis amusé à refaire un plan d'adressage en partant de l'exemple donné par l'article de Linux-France.org (cf. § Documentation) mais le diagramme devrait aider à mieux comprendre en tant qu'appui visuel.Je vous donne le tableau de mon découpage.
Nom | Besoin | Attribué | Masque | @ Réseau | @ de diffusion | Plage d'adresses |
---|---|---|---|---|---|---|
A | 15 | 30 | /27(224) | 120.1.50.0 | 120.1.50.31 | 120.1.50.(1-30) |
B | 12 | 30 | /27(224) | 120.1.50.32 | 120.1.50.63 | 120.1.50.(33-62) |
C | 15 | 30 | /27(224) | 120.1.50.64 | 120.1.50.95 | 120.1.50.(65-94) |
D | 6 | 14 | /28(240) | 120.1.50.96 | 120.1.50.111 | 120.1.50.(97-110) |
E | 2 | 2 | /30(252) | 120.1.50.112 | 120.1.50.115 | 120.1.50.(113-114) |
F | 2 | 2 | /30(252) | 120.1.50.116 | 120.1.50.119 | 120.1.50.(117-118) |
Documentation
- Article chez Cisco.com
- Article chez Linux-France.org
- Article chez iprezo.org : Clair, net, précis, concis.
- Vidéo formation Egilia sur YouTube