Un sous-réseau est une subdivision logique d'un réseau de taille plus importante. Le masque de sous-réseau permet de distinguer la partie de l'adresse commune à tous les appareils du sous-réseau et celle qui varie d'un appareil à l'autre. Un sous-réseau correspond typiquement à un réseau local sous-jacent.
Historiquement, on appelle également sous-réseau chacun des réseaux connectés à Internet.
La subdivision d'un réseau en sous-réseaux permet de limiter la propagation des broadcast, ceux-ci restant limités au réseau local et leur gestion étant coûteuse en bande passante et en ressource au niveau des commutateurs réseau. Les routeurs sont utilisés pour la communication entre les machines appartenant à des sous-réseaux différents.
Sommaire
Masque de sous-réseau
Les adresses IPv4 sont composées de deux parties : le sous-réseau et l'hôte.
On considérait autrefois que l'adresse du réseau était définie par sa classe, et obtenue en appliquant l'opérateur booléen ET bit à bit entre le masque par défaut associé et l'adresse IPv4. La notion de classe est cependant considérée comme désuète depuis l'avènement du routage sans classe. Ni les protocoles de routages actuels (BGP, OSPF, IS-IS), ni les RIR n'en tiennent compte dans l'assignation des adresses IP publiques.
Un masque de sous-réseau (désigné par subnet mask, netmask ou address mask en anglais) est un masque distinguant les bits d'une adresse IPv4 utilisés pour identifier le sous-réseau de ceux utilisés pour identifier l'hôte. L'adresse du sous-réseau est obtenue en appliquant l'opérateur ET binaire entre l'adresse IPv4 et le masque de sous-réseau. L'adresse de l'hôte à l'intérieur du sous-réseau est quant à elle obtenue en appliquant l'opérateur ET entre l'adresse IPv4 et le complément à un du masque.
Les masques de sous-réseau utilisent la même représentation que celles des adresses IPv4. En IPv4, une adresse IP est codée sur 4 octets, soit 32 bits (représentés en notation décimale à point). Un masque de sous-réseau possède lui aussi 4 octets. Bien que la norme IPv4 n'interdise pas que la partie significative du masque contienne des bits à 0, on utilise en pratique des masques constitués (sous leur forme binaire) d'une suite de 1 suivis d'une suite de 0, il y a donc 32 masques réseau possibles.
- Exemple
- adresse 192.168.1.2 et masque 255.255.255.0
192.168.1.2 & 255.255.255.0 = 192.168.1.0 192.168.1.2 & 0.0.0.255 = 0.0.0.2
soit en binaire :
11000000.10101000.00000001.00000010 11000000.10101000.00000001.00000010 & 11111111.11111111.11111111.00000000 & 00000000.00000000.00000000.11111111 = 11000000.10101000.00000001.00000000 = 00000000.00000000.00000000.00000010
- 0 ET 0 = 0
- 0 ET 1 = 0
- 1 ET 0 = 0
- 1 ET 1 = 1
Autrement dit, il suffit pour obtenir l'adresse du sous-réseau de conserver les bits de l'adresse IPv4 là où les bits du masque sont à 1 (un certain nombre de bits en partant de la gauche de l'adresse). La partie numéro d'hôte est, elle, contenue dans les bits qui restent (les plus à droite).
Une forme plus courte est connue sous le nom de « notation CIDR » (Classless Inter-Domain Routing). Elle donne le numéro du réseau suivi par une barre oblique (ou slash, « / ») et le nombre de bits à 1 dans la notation binaire du masque de sous-réseau. Le masque 255.255.224.0, équivalent en binaire à 11111111.11111111.11100000.00000000, sera donc représenté par /19 (19 bits à la valeur 1, suivis de 13 bits 0).
La notation 91.198.174.2/19 désigne donc l'adresse IP 91.198.174.2 avec le masque 255.255.224.0, et signifie que les 19 premiers bits de l'adresse sont dédiés à l'adresse du sous-réseau, et le reste à l'adresse de l'ordinateur hôte à l'intérieur du sous-réseau.
Deux adresses IP appartiennent à un même sous-réseau si elles ont en commun les bits du masque de sous-réseau.
Subdiviser un réseau en sous-réseaux consiste (entre autres) à rajouter des bits 1 au masque de réseau, afin de former un masque de sous-réseau. À partir de la connaissance de l'adresse IPv4 et du masque de sous-réseau il est possible de calculer le nombre d'interfaces que l'on peut numéroter à l'intérieur de chaque sous-réseau. En notant bNID le nombre de bits à 1 dans le masque de réseau et bSID le nombre de bits à 1 supplémentaires dans le masque de sous-réseau, le nombre de sous-réseaux possibles est donné par 2bSID, et le nombre d'hôtes par sous-réseau est 2bHID-2, deux adresses de ce sous-réseau étant réservées au sous-réseau lui-même et au broadcast et ne pouvant pas être utilisées pour numéroter une interface.
/32 désigne un réseau qui ne comporte qu'une seule adresse IP, c'est-à -dire une adresse IP individuelle.
Le masque /31 était autrefois considéré comme inutilisable, car ce réseau ne comporte que deux adresses, dont l'adresse du sous-réseau et l'adresse de broadcast. Pour numéroter des adresses de liens point à point, on utilisait donc des /30, soit quatre adresses dont deux utilisables pour adresser des interfaces. Le RFC 3021[1] permet cependant d'utiliser plus efficacement l'espace d'adressage en permettant le /31 (il n'y a dans ce cas pas d'adresse de broadcast et l'adresse du sous-réseau est utilisée pour numéroter une interface).
Pour tenir compte des 2 dernières valeurs correspondant aux masques /31 et /32 et qui font exception à la formule 232-s-2, nous pouvons avoir recours à la Fonction de Heaviside, notée H(x), qui introduit une fonction seuil à la valeur s=30.
La formule de calcul du nombre d'hôtes de sous-réseau devient donc 232-s-2*H(30-s) et s'applique ainsi à tous les calculs de la dernière colonne du tableau ci-dessous.
CIDR | bits disponibles | Masque de sous-réseau | Nombre d'hôtes par sous-réseau |
---|---|---|---|
/1 | 31 | 128.0.0.0 | 231-2 = 2 147 483 646 |
/2 | 30 | 192.0.0.0 | 230-2 = 1 073 741 822 |
/3 | 29 | 224.0.0.0 | 229-2 = 536 870 910 |
/4 | 28 | 240.0.0.0 | 228-2 = 268 435 454 |
/5 | 27 | 248.0.0.0 | 227-2 = 134 217 726 |
/6 | 26 | 252.0.0.0 | 226-2 = 67 108 862 |
/7 | 25 | 254.0.0.0 | 225-2 = 33 554 430 |
/8 | 24 | 255.0.0.0 | 224-2 = 16 777 214 |
/9 | 23 | 255.128.0.0 | 223-2 = 8 388 606 |
/10 | 22 | 255.192.0.0 | 222-2 = 4 194 302 |
/11 | 21 | 255.224.0.0 | 221-2 = 2 097 150 |
/12 | 20 | 255.240.0.0 | 220-2 = 1 048 574 |
/13 | 19 | 255.248.0.0 | 219-2 = 524 286 |
/14 | 18 | 255.252.0.0 | 218-2 = 262 142 |
/15 | 17 | 255.254.0.0 | 217-2 = 131 070 |
/16 | 16 | 255.255.0.0 | 216-2 = 65 534 |
/17 | 15 | 255.255.128.0 | 215-2 = 32 766 |
/18 | 14 | 255.255.192.0 | 214-2 = 16 382 |
/19 | 13 | 255.255.224.0 | 213-2 = 8 190 |
/20 | 12 | 255.255.240.0 | 212-2 = 4 094 |
/21 | 11 | 255.255.248.0 | 211-2 = 2 046 |
/22 | 10 | 255.255.252.0 | 210-2 = 1 022 |
/23 | 9 | 255.255.254.0 | 29-2 = 510 |
/24 | 8 | 255.255.255.0 | 28-2 = 254 |
/25 | 7 | 255.255.255.128 | 27-2 = 126 |
/26 | 6 | 255.255.255.192 | 26-2 = 62 |
/27 | 5 | 255.255.255.224 | 25-2 = 30 |
/28 | 4 | 255.255.255.240 | 24-2 = 14 |
/29 | 3 | 255.255.255.248 | 23-2 = 6 |
/30 | 2 | 255.255.255.252 | 22-2 = 2 |
/31 | 1 | 255.255.255.254 | 21-0 =2 |
/32 | 0 | 255.255.255.255 | 20-0 =1 |
Masque de sous-réseau variable
On parle de masque de sous-réseau variable (variable-length subnet mask, VLSM) quand un réseau est divisé en sous-réseaux dont la taille n'est pas identique, ceci permet une meilleure utilisation des adresses disponibles. Les protocoles de routage BGP, OSPF, IS-IS, EIGRP et RIPv2 supportent le VLSM car ils indiquent toujours un masque réseau associé à une route annoncée. Le masque variable permet de connaitre les autres masques pour devenir un réseau local.
Exemple
Par exemple, pour l'adresse 91.198.174.2/19Â :
- Le masque de sous-réseau (/19) est 255.255.224.0 ; l'adresse du sous-réseau est donc donnée par :
91.198.174.2 & 255.255.224.0 = 91.198.160.0
soit en binaire :
01011011.11000110.10101110.00000010 & 11111111.11111111.11100000.00000000 = 01011011.11000110.10100000.00000000
- L'adresse de l'hôte au sein du sous-réseau est donnée par la partie restante (01110.00000010), ou par le calcul :
91.198.174.2 & 0.0.31.255 = 0.0.14.2
soit en binaire :
01011011.11000110.10101110.00000010 & 00000000.00000000.00011111.11111111 = 00000000.00000000.00001110.00000010
En résumé, pour cet exemple :
Notation décimale | Notation binaire | |
---|---|---|
Adresse IPv4 | 91.198.174.2 | 01011011.11000110.10101110.00000010 |
Masque de sous-réseau | 255.255.224.0 | 11111111.11111111.11100000.00000000 |
Adresse du sous-réseau | 91.198.160.0 | 01011011.11000110.10100000.00000000 |
Adresse de l'hĂ´te | 0.0.14.2 | 00000000.00000000.00001110.00000010 |
Exemple de division en sous-réseaux
Un administrateur gère un réseau 192.44.78.0/24. Il aimerait décomposer ce réseau en quatre sous-réseaux.
Pour cela, il réserve les deux premiers bits de l'identifiant machine pour identifier ses nouveaux sous-réseaux. Toute adresse IP d'un même sous-réseau aura donc 24 bits en commun ainsi que les deux bits identifiant le sous-réseau. Le masque de sous-réseau peut ainsi être codé de la façon suivante : 11111111.11111111.11111111.11000000 en binaire, ce qui correspondra à 255.255.255.192 en décimal. Les sous-réseaux seront :
- 192.44.78.0/26 (les adresses de 192.44.78.0 Ă 192.44.78.63)
- 192.44.78.64/26 (les adresses de 192.44.78.64 Ă 192.44.78.127)
- 192.44.78.128/26 (les adresses de 192.44.78.128 Ă 192.44.78.191)
- 192.44.78.192/26 (les adresses de 192.44.78.192 Ă 192.44.78.255)
62 adresses de chaque sous-réseau seront utilisables pour numéroter des interfaces.
Sous-réseau zéro
Le sous-réseau zéro était considéré comme un sous-réseau non standard par le RFC 950[2], bien qu'utilisable. La pratique de réserver le sous-réseau 0 et le sous réseau 1 est cependant considérée comme obsolète depuis le RFC 1878. Il s'agit du premier sous-réseau d'un réseau. Par exemple, le sous-réseau 1.0.0.0 avec 255.255.0.0 comme masque de sous-réseau. Le problème avec ce sous-réseau est que l'adresse unicast pour le sous-réseau est la même que l'adresse unicast pour le réseau de classe A complet. Ce problème n'est plus d'actualité puisque cette réserve n'avait été conservée que pour rester compatible avec de vieux matériels ne sachant pas gérer le CIDR.
IPv6
En IPv6 le masque de sous-réseau des adresses unicast est fixé à 64, c'est-à -dire que 64 bits sont réservés à la numérotation de l'hôte dans le sous réseau.
Préfixe | Sous-réseau | Interface |
48 | 16 | 64 |
Le préfixe /48 est assigné par le fournisseur de service Internet (dans 2000::/3).
préfixe | L | ID globale | Subnet | Interface |
7 | 1 | 40 | 16 | 64 |
Dans les deux cas, l'administrateur du réseau dispose de 65536 sous-réseaux qui peuvent chacun contenir 264 soit 1.8×1019 hôtes.
Les adresses link-local (fe80::/64) utilisent également un masque fixe de 64 bits :
Préfixe | Zéro | Interface |
10 | 54 | 64 |
Notes et références
- (en) « Using 31-Bit Préfixes on IPv4 Point-to-Point Links », Request for comments no 3021, .
- (en) « Internet Standard Subnetting Procedure », Request for comments no 950, .