Netzwerkadressen
Netzwerkadressen repräsentieren eine Abbildung von Adressen des Netzwerktyps (beispielsweise IP) auf logische Adressen innerhalb eines Steuerungsnetzwerks. Diese Abbildung wird vom entsprechenden Blocktreiber vorgenommen. Innerhalb eines Ethernet-Netzwerks mit "Class C" IP-Adressen sind die ersten drei Bytes der IP-Adresse für alle Netzwerkgeräte gleich. Folglich genügen die letzten 8 Bit der IP-Adresse als Netzwerkadresse, zumal sie eine eindeutige Abbildung zwischen den beiden Adressen am Blocktreiber erlauben.
Ein Knoten hat für jede Netzwerkverbindung eine andere Netzwerkadresse. Unterschiedliche Netzwerkverbindungen können dieselbe Netzwerkadresse haben, da jede Adresse nur lokal eindeutig sein muss.
Terminologie: Als Netzwerkadresse eines Knotens ohne Angabe der Netzwerkverbindung wird in der Regel die Netzwerkadresse im Hauptnetzwerk bezeichnet.
Die Länge einer Netzwerkadresse wird in Bit angegeben und kann vom Blocktreiber je nach Bedarf gewählt werden. Innerhalb eines Netzwerkbereichs muss für alle Knoten dieselbe Länge verwendet werden. Eine Netzwerkadresse wird von einem Array von Bytes dargestellt gemäß der nachfolgenden Kodierung:
-
Länge der Netzwerkadresse: n Bits
-
Erforderliche Bytes: b = (n + 7) DIV 8
-
Die (n MOD 8) Bits von niederstem Rang des ersten Bytes und alle übrigen (n DIV 8) werden für die Netzwerkadresse benutzt.
Beispiel für das Codieren einer Netzwerkadresse
Länge: 11 Bit
Adresse: 111 1000 1100

- Reserved
-
Reserviert
Knotenadressen
Die Knotenadresse gibt die absolute Adresse eines Knotens innerhalb des Steuerungsnetzwerkes an und ist daher eindeutig innerhalb des gesamten "Netzwerkbaums". Die Adresse setzt sich aus bis zu 15 Adresskomponenten zusammen, von denen jede jeweils 2 Bytes belegt. Je niedriger ein Knoten in der Netzwerkhierarchie angesiedelt ist, desto länger ist seine Adresse.
Die gesamte Knotenadresse besteht aus den Teiladressen aller vorangehenden Knoten und der Teiladresse des Knotens selbst. Jede Teiladresse besteht aus einer oder mehreren Adresskomponenten. Die Länge ist daher immer ein Vielfaches von 2 Bytes. Die Teiladresse eines Knotens besteht aus der Netzwerkadresse des Knotens in seinem Hauptnetzwerk und dem Subnetzindex des Hauptnetzwerkes beim Vater. Die für den Subindex erforderlichen Bits werden vom Router des Vaterknotens festgelegt. Zwischen dem Subnetzindex und der Netzwerkadresse können Füll-Bits eingefügt werden, um zu erreichen, dass die Länge der Teiladresse ein Vielfaches von 2 Bytes ist.
Spezialfälle:
-
Ein Knoten ohne Hauptnetzwerk: Das bedeutet, dass es weder einen Subnetz-Index noch eine Netzwerkadresse im Hauptnetzwerk gibt. In diesem Fall wird die Adresse auf 0x0000 gesetzt.
-
Ein Knoten im Hauptnetzwerk ohne Vater: In diesem Fall wird ein Subnetz-Index der Länge 0 angenommen. Die Teiladresse entspricht der Netzwerkadresse, bei Bedarf erweitert um Füll-Bits.
Beispiel für Knotenadressen

- Main network
-
Hauptnetzwerk
- Network address
-
Netzwerkadresse
- Length of subnet index
-
Länge des Subnetz-Indexes
- Partial address of B
-
Teiladresse von B
- Node address of B
-
Knotenadresse von B
- Reserved
-
Reserviert
Die Knotenadresse wird immer hexadezimal angegeben. Die einzelnen Adresskomponenten
(jeweils von 2 Bytes) werden durch einen Doppelpunkt “:” getrennt. Da dies ein Array
von Bytes darstellt und keinen 16-bit Wert, werden die Komponenten nicht im Intel-Format
angezeigt. Für händisch eingegebene Adressen werden fehlende Stellen in einer Adresskomponente
durch führende Nullen ergänzt: “274
” = “0274
”. Um die Lesbarkeit zu verbessern sollte die Ausgabe auch immer die führenden Nullen
enthalten.
Absolute und relative Adressen
Die Kommunikation zwischen zwei Knoten kann auf relativen oder absoluten Adressen basieren. Absolute Adressen sind identisch mit Knotenadressen. Relative Adressen geben den Pfad vom Sender zum Empfänger an. Sie bestehen aus einem Adressen-Offset und dem absteigenden Pfad hin zum Empfänger.
Der (negative) Adress-Offset beschreibt die Anzahl an Adresskomponenten, um die ein Datenpaket im Baum nach oben durchgereicht werden muss, bevor es vom gemeinsamen Vater wieder nach unten gereicht werden kann. Da Knoten Teiladressen benutzen können, die aus mehr als einer Komponente bestehen, ist die Anzahl der zu passierenden Vaterkomponenten immer gleich dem Adress-Offset. Das bedeutet, dass die Abgrenzung zwischen den Vaterknoten nicht länger eindeutig ist. Deshalb wird der gemeinsame Anfang der Adressen der Kommunikationspartner als Vateradresse verwendet wird. Jede Adresskomponente wird als Aufwärtsschritt gezählt, unabhängig vom aktuellen Vaterknoten. Jeder der durch diese Annahme entstehenden Fehler kann vom entsprechenden Vaterknoten entdeckt werden und muss von ihm entsprechend behandelt werden.
Nach Erreichen des gemeinsamen Vaters wird wie gewohnt der relative Pfad, als Array von Adresskomponenten, nach unten verfolgt. Formal: Die Knotenadresse des Empfängers wird gebildet durch Entfernen der letzten Adressen-Offset-Komponenten aus der Knotenadresse des Senders und durch Anhängen des relativen Pfads an die verbleibende Adresse.
Beispiel für die Bildung von Knotenadressen
Im folgenden Beispiel ist jede Adresskomponente durch einen Buchstaben repräsentiert, ein Punkt trennt jeweils Knoten voneinander. Da ein Knoten mehrere Adresskomponenten tragen kann, gibt es im Beispiel solche, die mit mehrerer Buchstaben vertreten sind.
Knoten A: a.bc.d.ef.g
Knoten B: a.bc.i.j.kl.m
-
Adresse des niedrigsten gemeinsamen Vaters:
a.bc
-
Relative Adresse von A nach B:
-4/i.j.kl.m
(Die Zahl 4 resultiert aus den 4 Komponentend
,e
,f
undg
, die das Datenpaket nach oben durchgereicht werden muss)
Um ein korrektes Arbeiten des Routings zu garantieren, muss die relative Adresse bei jedem Passieren eine Zwischenknotens angepasst werden. Es ist ausreichend, den Adress-Offset anzupassen. Dies wird immer vom Vaterknoten durchgeführt: Wenn ein Knoten ein Datenpaket von einem seiner Subnetze erhält, so wird der Adress-Offset um die Länge der Adresskomponenten dieses Subnetzes erhöht:
-
Wenn der neue Adress-Offset < 0 ist, dann muss das Datenpaket weiter nach oben gereicht werden.
-
Wenn der Adress-Offset >= 0 ist, dann muss das Datenpaket an den Kindknoten gereicht werden, dessen lokale Adresse vom Adress-Offset ausgehend dem relativen Pfad entspricht. Zunächst muss jedoch der Adress-Offset um die Länge der lokalen Adresse des Kindes erhöht werden, damit der Kindknoten die korrekte Adresse sieht.
Eine spezielle Situation entsteht, wenn der oben erwähnte Fehler beim Bestimmen des gemeinsamen Vaters eintritt. In diesem Fall ist der Adress-Offset des wirklichen Vaterknotens negativ, aber dieser Wert ist größer als die Länge der Teiladressen des Subnetzes, von denen das Paket stammt. Damit in diesem Fall der nächste Knoten eine korrekte relative Adresse sieht, muss der betroffene Knoten Folgendes tun: Er muss den Fehler aufdecken, auf Basis der Adresse des Vorgängerknotens und der Längendifferenz die lokale Adresse des Kindknoten berechnen und den Adress-Offset entsprechend anpassen. Auch in diesem Fall bleiben die Adresskomponenten an sich unverändert, nur der Offset wird geändert.
Broadcast-Adressen
Es gibt zwei Arten von Broadcast - global und lokal. Ein globaler Broadcast wird an alle Knoten eines Netzwerks gesandt. Für diesen Zweck ist die leere Knotenadresse mit Länge 0 reserviert.
Lokale Broadcasts werden an alle Geräte eines Netzwerkbereichs geschickt. Zu diesem Zweck werden alle Bits der Netzwerkadresse auf 1 gesetzt. Das ist sowohl in relativen wie auch in absoluten Adressen zulässig.
Ein Blocktreiber muss beide Arten von Broadcast-Adressen bearbeiten können. Das bedeutet: Leere Netzwerkadressen wie auch die Netzwerkadressen, deren Bits sämtlich auf 1 gesetzt wurden, müssen interpretiert und an alle betroffenen Teilnehmer versandt werden.