Struktur von Adressen

Überblick

Im Folgenden wird die Struktur der folgenden Adresstypen beschrieben:

Netzwerkadressen

Netzwerkadressen entsprechen der Zuordnung (Mapping) von Adressen eines Netzwerktyps (z. B. IP-Adressen) zu logischen Adressen innerhalb eines Steuerungsnetzwerks. Dieses Mapping wird vom entsprechenden Blocktreiber vorgenommen. Innerhalb eines Ethernet-Netzwerks mit IP-Adressen der Klasse C sind die ersten drei Bytes der IP-Adresse für alle Netzwerkgeräte identisch. Daher reichen die letzten acht Bits der IP-Adresse als Netzwerkadresse aus, da am Blocktreiber ein eindeutiges Mapping zwischen zwei Adressen möglich ist.

Ein Knoten besitzt für jede Netzwerkverbindung separate Netzwerkadressen. Verschiedene Netzwerkverbindungen können die gleiche Netzwerkadresse haben, da diese Adresse nur lokal für jede Netzwerkverbindung eindeutig sein muss.

Terminologie: Im Allgemeinen bezieht sich die Netzwerkadresse eines Knotens ohne Angabe einer Netzwerkverbindung auf die Netzwerkadresse im Hauptnetz.

Die Länge einer Netzwerkadresse wird in Bit angegeben und kann je nach Bedarf vom Blocktreiber gewählt werden. In einem Netzwerksegment muss für alle Knoten dieselbe Länge verwendet werden.

Eine Netzwerkadresse wird als Array von Bytes mit der folgenden Kodierung dargestellt:

  • Länge der Netzwerkadresse: n Bit

  • Erforderliche Bytes: b = (n + 7) DIV 8

  • Die (n MOD 8) niederwertigen Bits des ersten Bytes und alle übrigen (n DIV 8) Bytes werden für die Netzwerkadresse verwendet.

Beispiel - Netzwerkadresse

Länge: 11 Bits

Adresse: 111 1000 1100

Beispiel für Kodierung einer Netzwerkadresse

Knotenadressen

Die Knotenadresse gibt die absolute Adresse eines Knotens in einem Steuerungsnetzwerk an und ist daher eindeutig innerhalb der gesamten Baumstruktur. Die Adresse umfasst bis zu 15 Adresskomponenten, die aus jeweils 2 Bytes bestehen. Je niedriger ein Knoten in der Netzwerkhierarchie angesiedelt ist, desto länger ist seine Adresse.

Die Knotenadresse besteht aus den Teiladressen aller Vorgänger des Knotens und des Knotens selbst. Jede Teiladresse besteht aus einer oder mehreren Adresskomponenten. Die Länge ist daher stets ein Vielfaches von 2. Die Teiladresse eines Knotens wird aus der Netzwerkadresse des Knotens in seinem Hauptnetzwerk und aus dem Subnetzindex des Hauptnetzwerks im Elternknoten gebildet. Die für den Subnetzindex erforderlichen Bits werden vom Router des Elternknotens ermittelt. Füll-Bits werden zwischen Subnetzindex und Netzwerkadresse eingefügt, um sicherzustellen, dass die Länge der Teiladresse ein Vielfaches von 2 Byte ist.

Sonderfälle:

  • Knoten hat kein Hauptnetzwerk: Im Hauptnetzwerk ist weder ein Subnetzindex noch eine Netzwerkadresse vorhanden. In diesem Fall wird die Adresse auf 0x0000 festgelegt.

  • Knoten im Hauptnetzwerk, aber ohne Vaterobjekt: In diesem Fall wird ein Subnetzindex mit einer Länge von 0 Bit angenommen. Die Teiladresse entspricht der Netzwerkadresse, die bei Bedarf durch Füll-Bits ergänzt wird.

Beispiel - Knotenadresse

Knotenadresse werden stets in hexadezimaler Schreibweise dargestellt. Die einzelnen Adresskomponenten (2 Bytes in jedem Fall) werden durch einen Doppelpunkt getrennt (:). Die Bytes innerhalb einer Komponente werden der Reihe nach ohne Trennzeichen angezeigt (siehe Beispiel oben). Da dies ein Byte-Array, aber keinen 16-Bit-Wert darstellt, werden die Komponenten nicht im Format Little Endian angezeigt. Bei manuell eingegebenen Adressen werden fehlende Stellen in einer Adresskomponente von links mit führenden Nullen aufgefüllt: 274 = 0274. Um die Lesbarkeit zu verbessern, sollte die Ausgabe stets die führenden Nullen enthalten.

Absolute und relative Adressen

Die Kommunikation zwischen zwei Knoten kann auf relativen oder absoluten Adressen beruhen. Absolute Adressen sind identisch mit Knotenadressen. Relative Adressen geben einen Pfad vom Sender zum Empfänger an. Sie bestehen aus einem Adressoffset und einem absteigenden Pfad zum Empfänger.

Der (negative) Adressoffset beschreibt die Anzahl an Adresskomponenten, um die ein Paket in der Baumstruktur nach oben gereicht werden muss, bevor es von einem gemeinsamen Vaterobjekt wieder nach unten gereicht werden kann. Da Knoten Teiladressen verwenden können, die aus mehr als einer Adresskomponente bestehen, ist die Anzahl an zu passierenden Elternknoten stets gleich dem Adressoffset. Damit wird die Trennung zwischen zwei übergeordneten Knoten eindeutig. Aus diesem Grund wird der gemeinsame Anfangsteil der Adressen der Kommunikationspartner als Vaterobjekt-Adresse verwendet. Jede Adresskomponente zählt als Stufe nach oben, unabhängig von den tatsächlichen Elternknoten. Jeder durch diese Annahmen eingeführte Fehler kann vom jeweiligen Elternknoten entdeckt werden und muss vom Knoten richtig behandelt. werden.

Bei Erreichen des gemeinsamen Vaterobjekts wird anschließend der relative Pfad (ein Array von Adresskomponenten) auf die normale Weise nach unten verfolgt.

Formal: Die Knotenadresse des Empfängers wird gebildet, indem die letzten Adressoffset-Komponenten aus der Knotenadresse des Senders entfernt werden und der relative Pfad an die verbleibende Adresse gehängt wird.

Beispiel

In dem Beispiel stellt ein Buchstabe eine Adresskomponente dar, während die einzelnen Knoten durch Punkte getrennt werden. Da ein Knoten mehrere Adresskomponenten haben darf, kann er im Beispiel aus mehreren Buchstaben bestehen.

Knoten A: a.bc.d.ef.g

Knoten B: a.bc.i.j.kl.m

  • Adresse des niedrigsten gemeinsamen Vaterobjekts: a.bc

  • Relative Adresse von A zu B: -4/i.j.kl.m (Die Zahl -4 ergibt sich aus den 4 Komponenten d, e, f und g. Daher muss das Paket erstellt werden.)

Die relative Adresse mus mit jedem Passieren durch einen intermediären Knoten angepasst werden. Es reicht aus, den Adressoffset anzupassen. Dies wird stets vom Elternknoten durchgeführt: Wenn ein Knoten ein Paket aus einem seiner Subnetze empfängt, wird der Adressoffset um die Länge der Adresskomponente dieses Subnetzes vergrößert.

  • Wenn der neue Adressoffset kleiner als 0 ist, muss das Paket zum Elternknoten weitergeleitet werden.

  • Ist der Adressoffset 1 ≥ , muss das Paket zu dem Kindknoten weitergeleitet werden, dessen lokale Adresse sich an der Position befindet, die durch den Adressoffset innerhalb der relativen Adresse beschrieben wird. Zuerst muss der Adressoffset um die Länge der lokalen Adresse des Kindknotens vergrößert werden, um sicherzustellen, dass der Knoten die richtige Adresse sieht.

Eine spezielle Situation entsteht, wenn der oben beschriebene Fehler während der Bestimmung des gemeinsamen Vaterobjekts auftritt. In diesem Fall ist der Adressoffset am „realen“ gemeinsamen Vaterobjekt negativ, der Betrag ist jedoch größer als die Länge der Teiladresse des Subnetzes, aus dem das Paket stammt. Der Knoten muss diese Situation erkennen, die lokale Adresse des nächsten Kindknotens auf Basis der Adresse des vorherigen Knotens und der Längendifferenz berechnen und den Adressoffset so anpassen, dass der nächste Knoten die richtige relative Adresse sieht. Es bleiben auch die Adresskomponenten selbst unverändert und nur der Adressoffset wird geändert.

Broadcast-Adressen

Es gibt zwei Arten von Broadcasts: globale und lokale. Ein globaler Broadcast wird an alle innerhalb eines Steuerungsnetzwerks gesendet. Für diesen Zweck ist die leere Knotenadresse (Länge 0) reserviert.

Lokale Broadcasts werden an alle Geräte eines Netzwerksegments gesendet. Dazu werden alle Bits der Netzwerkadresse auf 1 gesetzt. Dies ist sowohl bei relativen als auch absoluten Adressen möglich.

Ein Blocktreiber muss beide Broadcast-Adressen verarbeiten können. D. h., leere Netzwerkadressen und Netzwerkadressen, deren sämtliche Bits auf 1 gesetzt wurden, müssen interpretiert und als Broadcast gesendet werden.