Mobile-Menu

Grundlagen moderner Netzwerktechnologien im Überblick – Teil 64 MAC-Frame Struktur und Hidden Stations bei Wireless LANs nach IEEE 802.11b

Autor / Redakteur: Dr. Franz-Joachim Kauffels / Dipl.-Ing. (FH) Andreas Donner

In dieser Folge besprechen wir die generelle MAC-Frame-Struktur, sowie bestimmte Kontrollfelder und Frametypen, allerdings nur soweit, wie es für das Gesamtverständnis notwendig erscheint. Man sieht hier, wie die gegenüber einer verkabelten Lösung vielen zusätzlichen Funktionen gehandhabt werden müssen. Ein weiteres Problemfeld sind die Hidden Stations.

Komplexe Mechanismen steuern die drahtlose Kommunikation und fangen so Probleme wie Hidden Stations ab; Bild: Dr. Franz-Joachim Kauffels
Komplexe Mechanismen steuern die drahtlose Kommunikation und fangen so Probleme wie Hidden Stations ab; Bild: Dr. Franz-Joachim Kauffels
( Archiv: Vogel Business Media )

In der Abbildung 1 sehen wir das generelle MAC-Frame Format. Dieses generelle Format ist in allen Frames zu finden, die Stationen aussenden, unabhängig vom Frame-Typ. Nach der Bildung des entsprechenden Frames schickt die MAC-Steuerung die Bits des Frames an die Physical Layer Convrgence Procedure-Teilschicht PLCP und beginnt dabei mit dem ersten Bit des Frame Kontrollfeldes und endet mit dem letzten Bit der Frame Check Sequence.

Das Frame Control Feld ist zwei Oktette lang und beinhaltet Kontrollinformation, die von Station zu Station geschickt wird. Der nächste Abschnitt dieses Beitrags zeigt die Teile des Feldes im Einzelnen, zunächst aber zu den anderen Feldern.

Bildergalerie
Bildergalerie mit 6 Bildern

Das Duration/ID-Feld enthält in den meisten Fällen einen „Duration“-Wert, abhängig vom Typ des gesendeten Frames, der die Dauer der nächsten Frame-Übertragung angibt. In Daten- und ACK-Frames spezifiziert das Feld die totale Dauer des nächsten Fragments und der Empfangsbestätigung. Stationen am Netz beobachten das Feld und halten ihre Sendungen entsprechend zurück, um Konflikte zu vermeiden. In Power-Safe-Kontrollframes enthält das Duration/ID-Feld die letzten vierzehn Bits der Assoziationsidentität der sendenden Station. Die zwei letzten Bits erhalten in diesem Fall den Wert 1.

Die vier Adressfelder enthalten in Abhängigkeit vom gesendeten Frametyp unterschiedliche Adresstypen. Diese Adressen können die Basic Service Set Identification BSSID, die Quelladresse und Zieladresse sowie die Adresse der sendenden Station und die Adresse der empfangenden Station sein. Der IEEE 802-Standard definiert eine generelle Adressstruktur, wobei die Adressen 48 Bit lang sind. Die Adressen können entweder individuelle oder Gruppenadressen sein, wobei es zwei verschiedene Arten von Gruppenadressen gibt, nämlich Multicast-Adressen, die tatsächlich eine Auswahl von Stationen adressieren und Broadcast-Adressen, die sich auf alle Stationen eines gegebenen LANs beziehen.

Zwischen den Adressfeldern sitzt das Sequenz-Kontrollfeld. Die linken vier Bits dieses Feldes bestehen aus einem Unterfeld mit einer Fragmentnummer und einer bestimmten MSDU. Die Nummer beginnt mit Null für das erste Fragment und erhöht sich dann bei jeder darauffolgenden Übertragung um Eins. Die nächsten 12 Bits des Frames bilden das Sequenznummern-Unterfeld, welches bei 0 startet und sich dann für jede folgende MSDU-Übertragung um 1 erhöht. Jedes Fragment einer spezifischen MSDU hat die gleiche Sequenznummer. Zu jedem Zeitpunkt darf nur eine MSDU ausstehen. Eine Station kann beim Empfang eines Frames doppelte Frames (z.B. durch Reflexionen oder unterschiedliche Laufwege) mit Hilfe der Sequenz- und Fragmentnummern ausfiltern, weil ein Frame, der die gleichen Nummern hat wie der letzte hereingekommene Frame, offensichtlich dupliziert ist.

Duplizierte Frames können auch auftreten, wenn eine Station einen fehlerfreien Frame erhält, ein ACK an den Sender schickt und das ACK auf dem Weg dorthin zerstört wird. Denn wenn er nach einer gewissen Zeit kein ACK erhält, sendet der Sender das Paket nochmals. Die Zielstation bestätigt übrigens einen angekommen Frame auch dann, wenn der als duplizierter Frame erkannt wurde, weil sonst die sendende Station entweder den Frame noch mal senden oder in einen Fehlerzustand laufen würde.

Das Frame-Body-Feld hat eine Nutzlast variabler Länge und trägt Informationen, die den Frame, der grade gesendet wird, weiter spezifizieren. Wenn es ein Datenframe ist, enthält das Feld eine LLC-Dateneinheit, die MSDU. MAC-Management und Kontrollframes können zudem spezifische Parameter im Frame Body enthalten, die zu der spezifischen Aufgabe, die der Frame ausführt, passen. Muss der Frame gar keine Information befördern, hat das Feld die Länge Null. Die empfangende Station bestimmt die Framelänge aus einem Feld des jeweils Anwendung findenden PHY-Headers.

Um die Übertragung abzusichern, berechnet die MAC-Teilschicht des Senders eine 32 Bit lange Frame-Check-Sequence unter Benutzung des zyklischen Redundanzprüfverfahrens. Für die Berechnung der FCS über alle Felder des MAC-Headers und des Frame Bodys hinweg wird ein Generatorpolynom eingesetzt. Der Koeffizient höchster Ordnung kommt in das Feld. Der Empfänger implementiert die gleiche CRC-Prüfung.

weiter mit: Frame Control Feld

Frame Control Feld

Wir betrachten in diesem Abschnitt das Frame Control Field näher.

Das Protokollversionsfeld zeigt an, welche Version benutzt wird. Für IEEE 802.11b in der Fassung von 1999 hat es den Wert 0. Weitere Werte können allerdings von IEEE immer wieder definiert werden. Das Typfeld bestimmt die Art des Frames, während das Subtyp-Feld die Funktion des Frames bestimmt. Siehe hierzu die Tabellen 1 und 2.

Eine Delivery Traffic Indication Message, DTIM, bestimmt, wie oft die MAC-Teilschicht Multicastverkehr forwardet. Dieser Parameter ist notwendig, um die Stationen zu erreichen, die den Schlummermodus benutzen. Man kann den DTIM-Wert am Access Point einstellen. Setzt man ihn z.B. auf 2, so wird der Access Point alle Multicast-Frames für den BSS aufbewahren und sie nach jedem zweiten Beacon-Frame forwarden. Kleinere DTIM-Intervalle sorgen dafür, dass Frames zeitnäher ausgeliefert werden, allerdings wachen die Schläfer dann auch häufiger auf und brauchen so mehr Strom. Höhere DTIM-Werte verzögern allerdings die Übertragung von Multicast Frames erheblich.

In jedem Frame, der an das Distribution System geht, setzt die MAC-Steuerung das „to-DS“-Feld auf 1. Sonst hat es den Wert 0. Ein Beispiel dafür ist, wenn das Ziel eines Frames in einem BSS eines anderen Access Points liegt. Frames, die vom Distribution System kommen, haben logischerweise das „From-DS“-Feld auf 1. In allen anderen Fällen hat das Feld den Wert 0. Beide Felder werden auf 1 gesetzt, wenn der Frame durch das Distribution-System von einem Access Point zum anderen geschickt wird. Das „More Frag“-Feld bekommt den Wert 1, wenn ein weiteres Fragment der gleichen MSDU in einem späteren Frame folgt.

Die MAC Dienste liefern Fragmentierung und Wiederzusammenbau um die Zerlegung von MSDUs in kleinere Elemente für die Übertragung zu unterstützen. Eine Fragmentierung kann die Zuverlässigkeit der Übertragung erhöhen, da die Wahrscheinlichkeit einer erfolgreichen Übertragung bei einer kleineren Rahmengröße größer ist.

Jede Station kann den nebenläufigen Empfang von Fragmenten und den Wiederzusammenbau von Fragmenten für bis zu drei MSDUs unterstützen. Die MAC-Teilschicht zerlegt nur Frames mit einer Unicast-Adresse. Wegen des daraus resultierenden erheblichen Overheads für das Netz werden keine Broadcast- oder Multicastframes zerlegt.

Wenn die Länge einer zu übertragenden MSDU die im aFragmentationThreshold-Parameter in der MIB der MAC überschreitet, wird das Protokoll die MSDU zerlegen. Jeder fragmentierte Frame besteht aus einem MAC-Header, der für dieses Fragment berechneten FCS und einer Fragmentnummer, die die relative Position des Fragments in der MSDU angibt. Jedes Fragment wird unabhängig von den anderen übertragen und so benötigt man für jedes Fragment ein eigenes ACK von der empfangenden Station.

Das MoreFragment-Feld im Frame-Control-Feld zeigt an, ob ein Frame der letzte einer Reihe von Fragmenten ist oder nicht. Falls die Stationen WEP implementieren, muss noch eine entsprechende Ver- und Entschlüsselung geschehen, ebenfalls auf Fragmentebene. Am Ziel wird die empfangende Station alle Fragmente mit der gleichen Sequenznummer in die korrekte Reihenfolge bringen, um die entsprechende MSDU zu rekonstruieren. Durch die Fragmentnummern kann der Empfänger evtl. duplizierte Fragmente entdecken und entfernen.

Wenn es signifikante Interferenzen gibt oder das Netz hochgradig belastet ist, ist es günstig, die maximale Fragmentlänge weiter herunterzustellen, weil so eine ggf. notwendige Retransmission von Frames schneller geschehen kann. Ist nicht so sehr mit Störungen zu rechnen, ist es besser, die Fragmentlänge größer zu machen. Die Fragmentlänge kann normalerweise zwischen 256 und 2048 Bytes eingestellt werden.

weiter mit: Fragmentierung bei Unicast-Frames

Fragmentierung bei Unicast-Frames

Der wirkliche Wert der Fragmentierung auf dieser Ebene ist übrigens fraglich. Denn man kann die Fragmentierung sinnvollerweise nur bei Unicast-Frames anwenden. Das Verfahren ist optional und verbessert die Performance bei langen Frames und schlechter Qualität des Kanals, wenn also mit einer relativ hohen Wahrscheinlichkeit von der Möglichkeit des Auftretens von Störungen auszugehen ist.

Man kann das Verfahren an die Umgebungsbedingungen anpassen und es kann dabei helfen, Interferenzprobleme, besonders mit Bluetooth, zu lösen. Neben der Anwendung im Rahmen von CSMA/CA ist auch die Anwendung mit dem konfliktfreien RTS/CTS-Verfahren denkbar. Der Preis ist allerdings ein deutlich erhöhter Overhead. Man kann ausrechnen, dass sich bei einer Übertragungsgeschwindigkeit von 11 Mbit/s und einer Aufteilung eines 1.500 Byte langen Frames in drei Fragmente ein Overhead von ca. 37 Prozent ergibt.

Im Retry-Feld kann man sehen, ob der Frame eine Wiederholungssendung für einen ggf. zerstörten oder nicht angekommenen Frame ist. Das Feld hat dann den Wert 1, sonst 0. Man kann die Zeit, die eine Station nach Ausbleiben eines ACKs wartet, bis sie den Frame erneut schickt einstellen, und zwar im Intervall zwischen 1 und 30 Sekunden. Auch die Anzahl der Wiederholungssendungen, bevor die Station endgültig aufgibt, lässt sich einstellen und zwar zwischen 0 und 64.

Das Power Management Feld zeigt an, dass die sendende Station nach Beendigung der Sequenz in den Power Management Mode übergeht. Die MAC-Teilschicht setzt dieses Feld auf 1, wenn in den Dösemodus übergegangen wird. Eine 0 zeigt an, dass die Station voll aktiv ist. Eine empfangende Station kann diese Information dazu nutzen, Übertragungen so einzurichten, dass man es vermeidet, schlafende Stationen zu wecken.

Das More Data Feld bekommt den Wert 1, wenn eine Station zusätzliche MSDUs an eine Station senden möchte, die im Schlafmodus ist. Sonst hat das Feld den Wert 0. Dieses Feature stellt sicher, dass eine Station auch wach bleibt, wenn sie Frames erhalten soll. Man kann das z.B. einsetzen, wenn man mehrere Fragmente einer MSDU überträgt und nicht möchte, dass die Station zwischendurch einschläft.

Eine 1 im WEP Feld sagt der empfangenden Station, dass der Frame Body mit dem WEP-Algorithmus bearbeitet worden ist, das heißt, dass die Daten mit dem geheimen Schlüssel verschlüsselt wurden. Sonst hat das WEP Feld den Wert 0.

Das Order Feld schließlich bekommt für jeden Frame den Wert 1, der in der Dienstklasse „Strictly Ordered“ übertragen wird. Diese 1 weist die empfangende Station an, alle Frames genau in der Reihenfolge des Empfangs zu bearbeiten.

Der IEEE 802.11 Standard unterstützt die gleichen 48 Bit langen MAC-Adressen wie in der gesamten 802 Familie. Die 802.11-Architektur kann mit verschiedenen logischen Medien und Adressräumen umgehen, was sie unabhängig gegenüber der Architektur des Distribution Systems macht. Der Hersteller, von dem man Radiokomponenten und Access Points kauft, garantiert normalerweise, dass die in diesen Systemen geladene MAC-Adresse sich von allen anderen MAC-Adressen, auch die anderer Hersteller, unterscheidet und einmalig ist. Man kann das zwar ändern, läuft aber dann Gefahr, selbst Adresskonflikte zu erzeugen, weil man die Adressierung im Rest der Welt nicht vollständig kennt.

weiter mit: Nach dem Aufbau der Assoziation und der Authentisierung

Nach dem Aufbau der Assoziation und der Authentisierung

Nach dem Aufbau der Assoziation und der Authentisierung zwischen Stationen und Access Points stellen Control-Frames Funktionalität zur Unterstützung bei der Auslieferung von Datenrahmen zur Verfügung. Ein üblicher Ablauf zwischen einer Station A und einem Access Point oder einer anderen Station B wäre RTS von A nach B, CTS von B nach A, Daten von A nach B und ACK von B nach A

Eine Station sendet einen RTS-Frame (Request to Send) an eine andere Station, um die Sendung eines Datenframes auszuhandeln. Durch das aRTSThreshold-Attribut kann man einstellen, dass Stationen immer, nie oder nur bei Frames einer bestimmten Länge ein RTS abschicken. Der Wert des Duration-Feldes in Mikrosekunden ist die Zeit, die eine Station braucht um den Frame, einen CTS-Frame, einen ACK-Frame und drei Zwischenräume zu übertragen.

Nach Empfang eines RTS sendet die Station einen CTS um das Recht zur Sendung für die sendewillige Station anzuerkennen .Stationen achten immer auf die Duration-Angabe und antworten auf einen RTS-Frame, auch wenn die Station nicht konfiguriert wurde, um RTS-Frame-Sequenzen zu initiieren. Der Wert des Duration-Feldes (in Mikrosekunden) ist der Wert des vorangehenden RTS-Duration-Feldes abzüglich der Zeit, die man benötigt, um einen CTS-Frame und sein SIFS-Intervall zu übertragen.

Eine Station, die einen fehlerfreien Frame erhält, kann an den Sender einen ACK-Frame schicken, um den fehlerfreien Empfang zu quittieren. Der Wert des Duration-Feldes ist gleich Null, wenn das More-Fragment-Bit im Frame-Kontroll Feld des vorhergehenden Daten- oder Management-Frames Null ist. Ist dieses Feld 1, enthält das Duration-Feld die Zeitangabe des Duration-Feldes des vorhergehenden Frames abzüglich der Zeit, die man benötigt, um einen ACK-Frame einschließlich seines SIFS Intervalls zu senden.

Wenn eine Station einen Power-Safe-Poll-Frame empfängt, updatet sie ihren Network-Allocation-Vector, NAV, der angibt, wie lange eine Station keine Übertragung initiieren wird. Der NAV enthält damit eine Vorhersage über zukünftigen Verkehr im Netz

Das CF-End-Feld zeigt das Ende einer konfliktfreien Periode an, die Bestandteil der Point Coordination Function, PCF, ist. Das Duration-Feld ist immer 0 und die Receiver Adress enthält die Broadcast Gruppenadresse.

CF-End + CF-ACK bestätigt das durch den CF-End-Frame angezeigte Ende einer konfliktfreien Phase. Das Duration-Feld ist immer 0 und die Receiver Adress enthält die Broadcast-Gruppenadresse.

Hidden Stations

In einem Netzwerk, wie es in Abbildung 4 dargestellt ist, können die Knoten A und B direkt mit dem Access Point kommunizieren, aber wegen des Hindernisses nicht direkt untereinander. Das Problem ist, dass es eine Kollision geben kann, wenn Station A versucht, auf das Medium zu gehen und dabei leider nicht merken kann, dass B bereits sendet. Das nennt man das Problem versteckter Knoten.

Um sich vor Kollisionen durch versteckte Knoten zu schützen, sollte die sendende Station B einen RTS-Frame zum Access Point schicken und damit Service für eine gewisse Zeitspanne verlangen. Wenn der Access Point darauf eingeht, schickt er einen CTS-Frame, der ja in jedem Fall von allen Stationen gehört werden kann. Also versucht keine Station, auch nicht A, während dieser Zeit das Medium zu besetzen.

Der RTS/CTS Austausch funktioniert sowohl als schneller Eingriff bei Kollisionen als auch zur Überprüfung von Wegen. Wenn eine Station, die ein RTS aussendet nicht den dazu passenden Antwort-CTS empfangen kann, kann sie diesen Prozess viel schneller wiederholen, als wenn sie einen langen Frame geschickt hätte und auf diesen wäre kein ACK gekommen. Man braucht den RTS/CTS-Mechanismus nicht für jede Übertragung einzusetzen, weil ja damit auch ein Mehr an Overhead verbunden ist, der sich besonders bei kleinen Datenframes nicht rechtfertigen lässt.