Unsere betrachtete Firma oder Hochschule könnte nun beispielsweise vier unabhängige Teilnetze betreiben. Das hätte aber den Nachteil, daß die "übrige Welt" mehrere Netzwerkadressen kennen und auch wissen muß, welche Bereiche über welche Adressen erreichbar sind. Das ist nicht wünschenswert, vor allem wegen des Aufwands bei den doch nicht seltenen "Umstrukturierungen".
Die Lösung unseres Problems besteht darin, daß sich die Einrichtung eine Netzadresse (d.h. einen Adreßraum) zuteilen läßt, den sie dann in eigener Regie weiter in sogenannte Subnetze unterteilen kann. Der Hostteil der Adresse wird dabei weiter in einen Subnetz-Anteil und die Adresse des Hosts innerhalb eines Subnetzes unterteilt:
Am einfachsten ist dies zu verstehen, wenn wir bei einer Klasse-B-Adresse den Hostteil von 16 Bit in einen 8-Bit-Subnetz-Anteil und einen 8-Bit-Hostanteil aufteilen. Dann entspricht der Subnetz-Anteil der 3. Zahl in der Dezimal-IP-Notation und der Hostanteil der 4. Zahl:
Wegen der Adressen mit Sonderbedeutung (siehe Abschnitt 1.3.1) könnten wir jetzt theoretisch 255 Subnetze mit je 254 Rechnern bilden. In der Literatur findet man unterschiedliche Angaben dazu, ob es ein Subnetz mit der Subnetz-Nummer 0 geben kann. Praktisch wird empfohlen, die Subnetz-Nummer 0 nicht zu vergeben, weil es wohl IP-Implementierungen gibt (oder gegeben hat), die das fehlinterpretieren können. Damit kommen wir auf 254 Subnetze. Im folgenden Bild sind einige davon dargestellt:
Damit ist in Router 1 folgende Routingtabelle erforderlich:
Ziel | nächster Router oder direkt verbundenes Netz | Interface |
---|---|---|
Subnetz 133.7.1 | Subnetz 133.7.1 | B |
Subnetz 133.7.3 | Subnetz 133.7.3 | A |
default | 133.7.3.2 (Router 2) | A |
Beachten Sie, daß wir hier für die Punkt-zu-Punkt-Verbindung zwischen Router 2 und Router 3 ein eigenes "Subnetz" eingerichtet haben. Das ist nicht in jedem Fall notwendig, macht die Sache aber überschaubarer.
Im Router 2 muß folgendes eingestellt sein:
Ziel | nächster Router oder direkt verbundenes Netz | Interface |
---|---|---|
Subnetz 133.7.1 | 133.7.3.5 | B |
Subnetz 133.7.3 | Subnetz 133.7.3 | B |
Subnetz 133.7.2 | 133.7.2.5 | C |
Subnetz 133.7.4 | 133.7.2.5 | C |
Subnetz 133.7.7 | 133.7.2.5 | C |
default | 143.23.1.1 (Router 4) | A |
In Ergänzung zum letzten Eintrag kann es wieder sinnvoll sein, für die übrigen Teilnehmer am Netz 143.23 direkte Routingeinträge vorzusehen.
Ermitteln Sie wieder die Einstellungen im Router 3!
Die Subnetzmaske gibt an, welcher Teil der Adresse die Zugehörigkeit zu einem bestimmten Subnetz bestimmt. Die im Beispiel verwendete Subnetzmaske 255.255.255.0 hat die Binärschreibweise
11111111 11111111 11111111 00000000Die ersten 24 Bit legen also das Netz fest, die letzten 8 Bit den Host innerhalb des Netzes.
0xffffff00
Man kann natürlich auch andere Einteilungen vornehmen, beispielsweise 10 Bit für den Hostanteil, so daß dann 6 Bit für den Subnetzanteil bleiben:
11111111 11111111 11111100 00000000In der gebräuchlicheren Dezimalschreibweise ist das 255.255.252.0. Die Subnetze wären dann 133.7.0, 133.7.4, 133.7.8, 133.7.12 usw.
Bei den für Sonderzwecke reservierten Adreßbelegungen ergeben sich mit der Subnetzbildung zwei weitere Varianten:
Wieviele Subnetze kann man jetzt bilden? Wieviele Rechner können sich in jedem Subnetz befinden?
Auf zwei Sonderfälle sei noch hingewiesen:
11111111 11111111 11100101 00000000Da die entstehende Adreßzuordnung aber unübersichtlicher wird, ist eine soche Subnetzmaske im Normalfall nicht empfehlenswert.
11111111 11111111 11111111 00000000geeignet ist. Es existieren aber auch einige (wenige) große Netze mit mehr als 3000 Rechnern, was eine Subnetzmaske von
11111111 11111111 11110000 00000000nahelegen würde. Solche Subnetze könnten dann maximal 4094 Rechner beinhalten.
Man könnte nun den zugeteilten Klasse-B-Adreßraum zur Hälfte mit der ersten Subnetzmaske und zur Hälfte mit der zweiten verwenden. Damit ergeben sich
Bei einer derartigen Vorgehensweise muß man aber genau prüfen, ob die verwendeten Router (und Routing-Protokolle) auch unterschiedliche Subnetzmasken unterstützen, was nicht selbstverständlich ist. Diese Eigenschaft findet man unter der Abkürzung VLSM (Variable Length Subnet Masks).
Zusammenfassend wollen wir uns wieder eine Beschreibung des IP-Routing-Algorithmus ansehen, diesmal allerdings in einer modifizierten Form, die die Behandlung der Subnetz-Adressierung einschließt. Das Gerüst stammt wiederum aus Band 1 von Comers Internetworking with TCP/IP. Als Parameter werden das zu routende Datagramm sowie die Routing-Tabelle verwendet.
Es wird angenommen, daß die Routing-Tabelle pro Eintrag die Subnetzmaske, das Ziel sowie die Adresse des nächsten Routers bzw. des direkt verbundenen Netzes enthält. Das Ziel sowie die Subnetzmaske werden als beliebige (unstrukturierte) 32-Bit-Werte aufgefaßt, so daß man die bisher zu unterscheidenden Fälle (hostspezifische Route, Default-Route, ...) stark vereinheitlichen und vereinfachen kann, wie der folgende Algorithmus zeigt:
Folgende Beispiele sollen den obigen Algorithmus illustrieren:
zu beschreibende Route | Ziel | Subnetzmaske |
---|---|---|
hostspezifische Route | IP-Adresse des Hosts | 255.255.255.255 |
Default-Route | 0.0.0.0 | 0.0.0.0 |
Route zu Klasse-B-Netz ohne Subnetze | IP-Adresse des Klasse-B-Netzes | 255.255.0.0 |
In dem oben dargestellten Beispiel (rechter Bildteil) wollen wir nun eine Modifikation einführen:
Die Subnetze 133.7.4 und 133.7.7 nutzen ein gemeinsames physisches Netz und auch einen gemeinsamen Anschluß am Router 3 (z.B. weil gerade nicht genug Geld für weitere Router-Interfaces vorhanden war).
Unter welchen Voraussetzungen und mit welchen Folgen wird das funktionieren?