CSMA/CA: Definition und Erklärung des Verfahrens
CSMA ist ein grundlegendes Verfahren, das die Kommunikation von mehreren Teilnehmern auf einem gemeinsam genutzten und dezentral organisierten Übertragungsmedium regelt. Inzwischen gibt es dies allerdings in drei verschiedenen Varianten, die abhängig vom Übertragungsmedium sind. Während man CSMA/CA vor allem in Funknetzen einsetzt, ist CSMA/CD für Ethernet entwickelt, und CSMA/CR kommt in Controller Area Networks (CAN) zum Einsatz, die man vor allem in Autos und Maschinen verwendet.
Um zu verstehen, was genau hinter Carrier Sense Multiple Access with Collision Avoidance steckt, ist es sinnvoll, die Bestandteile einzeln zu betrachten:
- Carrier Sense (CA): Ausgangsgedanke ist, dass Teilnehmer nur Daten über das Netz versenden dürfen, wenn das Übertragungsmedium frei ist. Die Trägerzustandserkennung überprüft daher jederzeit den Kanal. Erst wenn dieser frei ist, werden Daten versendet.
- Multiple Access (MA): Mehrere Stationen teilen sich ein Übertragungsmedium. Dabei ist es entscheidend für eine funktionierende Kommunikation, dass sich alle an ein verbindliches Protokoll halten.
- Collision Avoidance (CA): Ein komplexer Ablaufplan versucht dafür zu sorgen, dass zwei oder mehr Teilnehmer nicht gleichzeitig eine Übertragung beginnen. So werden Kollisionen vermieden. Sollten dennoch Überlagerungen auftreten, wird dies erkannt und die Übertragung erneut versucht.
Was ist CSMA/CA und wofür braucht man es?
In einem Local Area Network (LAN) teilen sich alle Netzwerkteilnehmer ein Übertragungsmedium – ein Kabel, den sogenannten Bus. Drahtlose Netzwerke kennen naturgemäß keine Kabel, doch auch im WLAN senden und empfangen alle beteiligten Geräte über nur ein Übertragungsmedium, nämlich einen bestimmten Funkbereich. Insofern ist WLAN (IEEE 802.11) mit den frühen Halbduplex-Ethernet-Netzen vergleichbar. Somit muss auch für ein drahtloses Netz ein Protokoll bestehen, das die Nutzung des Mediums regelt.
Die wichtigste Regel, das kennt man auch von anderen Kommunikationssituationen mit mehreren Teilnehmern (etwa einem Gespräch mit der Familie am Esstisch), lautet: Es darf immer nur eine Person gleichzeitig senden. Wenn alle durcheinander sprechen, kann niemand mehr die Wortbeiträge verstehen. Auch in Netzwerken können sich die Beiträge, in diesem Fall in Form von Datenpaketen, überlagern. Dies nennt man eine Kollision: Die Datenpakete treffen aufeinander und verfremden so ihre Inhalte.
CSMA/CA versucht die Häufigkeit solcher Kollisionen zu verringern und gibt gleichzeitig einen Plan vor, wie im Falle einer Kollision vorgegangen werden soll. Das Protokoll ist auch deshalb wichtig, weil in den drahtlosen Netzen die Sendungen aufgrund der verwendeten Technik nicht so geordnet ablaufen können wie bei einem Kabel. In einem dezentralen Netz ist es notwendig, dass alle Teilnehmer gemeinsam einem Regelwerk folgen und so untereinander die Kommunikation organisieren.
Das Hidden-Station-Problem
Die technischen Unterschiede zwischen kabelgebundenen und drahtlosen Netzwerken führen auch zum sogenannten Hidden-Station-Problem. Stationen in einem Funknetzwerk haben nur eine begrenzte Reichweite. So kann es passieren, dass sich Teilnehmer in einem Netzwerk gegenseitig nicht wahrnehmen.
Es ist vorstellbar – und nicht unwahrscheinlich –, dass zwei Stationen, die sich gegenseitig nicht wahrnehmen, eine Station, die zwischen ihnen liegt, gleichzeitig erreichen möchten. Übertragungen können sich am Empfängerknoten überlagern und so dazu führen, dass die Daten verloren gehen. Beide Sender erkennen die Kollision nicht und starten daher keinen neuen Sendungsversuch. CSMA/CA kann dieses Problem allein nicht beheben, weshalb man eine optionale Erweiterung geschaffen hat: RTS/CTS („Request to Send“ und „Clear to Send“).
CSMA/CA vs. CSMA/CD
CSMA/CA passt das Verfahren zum Umgang mit Kollisionen (CSMA/CD), das man bei Halbduplex-Ethernet-Netzwerken einsetzt, an die Herausforderungen von Funknetzwerken an. CSMA/CD versucht dabei weniger, Kollisionen zu vermeiden. Stattdessen versteht das Protokoll Kollisionen als Selbstverständlichkeiten und etabliert einen Mechanismus, wie die Netzwerkteilnehmer im Falle einer Kollision verfahren müssen, um zu verhindern, dass Kollisionen auch beim zweiten Versuch direkt wieder auftreten: Eine zufällige Zeitspanne (Backoff), die Stationen nach einer fehlgeschlagenen Übertragung abwarten müssen, damit nicht wieder beide beteiligten Teilnehmer zum gleichen Zeitpunkt anfangen zu senden, soll dies bewerkstelligen.
Ein drahtloses Netzwerk lässt sich nicht so sicher überwachen, wie dies bei einem kabelgebundenen Netz der Fall ist. Kollisionen können durch einen zweiten Sender verursacht werden, der außerhalb der Reichweite des ersten liegt. Beide haben keine Möglichkeit, den Sendungsversuch des anderen wahrzunehmen. Deshalb muss der Fokus darauf liegen, die Wahrscheinlichkeit von Kollisionen zu verringern. CSMA/CA zieht den Backoff im Ablauf nach vorne und setzt ihn so bereits vor dem ersten Sendungsvorgang ein. Dies sorgt dafür, dass es unwahrscheinlicher wird, dass Teilnehmer gleichzeitig mit einer Übertragung beginnen und so Kollisionen verursachen.
Die Funktionsweise von CSMA/CA
Grundidee hinter CSMA/CA ist das Prinzip „Listen before Talk“. Das heißt, dass zunächst überprüft werden muss, ob die Leitung frei („idle“) ist, bevor die Station mit einer Übertragung beginnen darf. Doch dies ist nur der erste Schritt. Weitere Funktionen innerhalb des Verfahrens sorgen dafür, dass Kollisionen zu einem großen Teil vermieden werden können.
Distributed Coordination Function (DCF)
Die Distributed Coordination Function (DCF) regelt innerhalb von CSMA/CA den Zeitraum, den eine Station wartet, bevor sie bei einem freien Medium die Übertragung einleitet. Auch für weitere Aktionen weist DCF den Netzteilnehmern bestimmte Time Slots zu und schafft so eine verbindliche zeitliche Gliederung. Dieses Verfahren ist der Schwerpunkt der Collision Avoidance. Durch die komplexe Zeitstruktur wird die Vermeidung von Kollisionen erst ermöglicht. Beim Erstellen der zeitlichen Gliederung berücksichtigt DCF verschiedene Intervalle.
- DCF Interframe Space (DIFS): Im ersten Schritt müssen Teilnehmer das Netzwerk für die Dauer des DIFS überwachen, um festzustellen, ob dieses gerade frei ist. Für CSMA/CA bedeutet dies, dass zum Zeitpunkt des Sendens keine andere Station in Reichweite sendet. Der DIFS ergibt sich aus dem SIFS und der doppelten Slotzeit und ist zwischen 28 und 50 µs lang.
- Contention Window: Wenn Teilnehmer feststellen, dass der Kanal frei ist, warten sie zunächst noch eine zufällige Zeitspanne, bevor sie mit dem Versand beginnen. Diese Dauer entspricht dem sogenannten Contention Window. Dieses Zeitfenster verdoppelt sich mit jeder auftretenden Kollision und entspricht somit dem Binary Exponential Backoff (BEB), wie man ihn von CSMA/CD kennt.
- Short Interframe Space (SIFS): Nach dem Senden des Datenpakets verschickt der Empfängerknoten eine Benachrichtigung – falls zusätzlich das RTS/CTS-Verfahren angewendet wird. Vor dem Abschicken wartet allerdings auch diese Station eine festgelegte Zeitspanne ab. SIFS ist die Zeit, die es braucht, ein Datenpaket zu verarbeiten. Die Dauer ist abhängig vom verwendeten IEEE-802.11-Standard und liegt zwischen 10 µs und 16 µs.
Die Slotzeit bezeichnet die Zeit, die Daten brauchen, um die maximale Länge des Netzwerks zu durchlaufen. Bei drahtlosen Netzwerken ist diese abhängig vom verwendeten Standard und liegt zwischen 9 µs und 20 µs.
Request to Send & Clear to Send (RTS/CTS)
Die Frames Request to Send (RTS) und Clear to Send (CTS) sind Teil der optionalen Erweiterung CSMA/CA RTS/CTS. Dieses Verfahren ist der eigentlichen Datenübertragung vorgelagert. Wenn ein Teilnehmer feststellt, dass das Übertragungsmedium frei ist, sendet das Gerät zunächst einen RTS-Frame an den Teilnehmer, der Empfänger der Daten sein soll. Hiermit macht der Ausgangsrechner deutlich, dass er eine Übertragung starten möchte und dabei das Übertragungsmedium für eine gewisse Zeit belegen wird.
Der Empfänger wiederum sendet einen CTS-Frame an den ursprünglichen Sender. Hierüber werden zum einen – wie auch schon mit dem RTS-Frame – alle anderen Teilnehmer in der Reichweite darüber informiert, dass das Übertragungsmedium derzeit belegt ist, und zum anderen erhält der Sender die Freigabe zur Übertragung. Erst dann beginnt das ursprüngliche Gerät mit der Übertragung der Daten. Nun ist es für die Teilnehmer in einem drahtlosen Netzwerk nicht möglich, Kollisionen oder andere Störungen bei der Übertragung festzustellen. Aus diesem Grund ist es notwendig, dass die Empfängerstation eine Bestätigung (ACK) sendet, wenn das Datenpaket korrekt angekommen ist.
Bleibt der ACK-Frame aus, geht der Sender der Daten davon aus, dass es zu einer Komplikation gekommen ist, und sendet das Datenpaket erneut. Dabei hat die Station ein Vorzugsrecht, das Medium zu benutzen – muss also nicht erneut warten, bis der Kanal frei ist. Die drei Frame-Arten bestehen jeweils aus mehreren Feldern.
- Frame Control: Das in jedem 802.11-Frame enthaltene FC-Feld ist 2 Byte groß (16 Bit) und wiederum in mehrere Elemente unterteilt:
- Protocol Version: Gibt die Version des verwendeten Protokolls an.
- Type: Gibt an, ob es sich um einen Control Frame (wie bei RTS/CTS und ACK), Data Frame oder Management Frame handelt.
- Sub-Type: Spezifiziert den Typus des Frames, indem eine von 25 Unterkategorien angegeben wird.
- To Distribution System: Ist gesetzt, wenn der Frame an ein Distribution System geht.
- From Distribution System: Ist gesetzt, wenn der Frame von einem Distribution System kommt.
- More Fragments: Hat nur dann Inhalt, wenn noch mehr Frames folgen (nur bei Data Frames und Management Frames relevant).
- Retry: Gibt an, ob und wie oft der Versand des Frames schon versucht wurde.
- Power Management: Zeigt den Stromsparmodus an.
- More Data: Gibt an, dass mehr Daten versendet werden sollen.
- WEP: Gibt Auskunft darüber, ob die Daten mit WEP verschlüsselt sind.
- Order: Teilt dem Empfänger mit, ob die Daten in der richtigen Reihenfolge versendet werden.
- Duration: Gibt die Zeit an, die der Sender für die Datenübertragung benötigt. Diese Information ist entscheidend für den Network Allocation Vector. Auch dieses Feld ist 2 Byte groß.
- Receiver Address: Enthält die MAC-Adresse des Empfängers (6 Byte).
- Transmitter Address: Enthält die MAC-Adresse des Absenders (6 Byte); nur erforderlich für RTS, nicht für CTS und ACK.
- Frame Check Sequence: Bei der 4 Byte langen Blockprüfzeichenfolge handelt es sich um eine Prüfsumme. Hiermit kann die empfangende Station feststellen, ob der Data Frame so angekommen ist, wie es geplant war. Der Sender errechnet hierfür die Prüfsumme aus den Daten des Frames. Der gleiche Vorgang findet auch auf Seiten des Empfängers statt, wenn der Frame bei ihm angekommen ist. Sollte das Ergebnis des Empfängers mit dem übereinstimmen, was der Sender als FCS an den Frame angehängt hat, war die Übertragung erfolgreich.
Bis auf das Feld, das die Transmitter Address angibt, sind grundsätzlich alle Felder in RTS, CTS und ACK enthalten. Das Absenderfeld ist allerdings nur interessant bei der ersten Kontaktaufnahme, damit der Empfänger weiß, mit welchem Knoten er nun kommuniziert.
Durch die Erweiterung des CSMA/CA-Protokolls durch RTS/CTS ist es möglich, Kollisionen auf den anfänglichen RTS-Frame zu reduzieren. So ist es trotzdem wahrscheinlich, dass zwei Teilnehmer gleichzeitig einen Request to Send an dieselbe Station senden. In einem solchen Fall sendet der Empfänger allerdings keinen CTS-Frame, da die RTS-Frames nicht korrekt angekommen sind. Somit kann RTS/CTS das Hidden-Station-Problem lösen: Auch wenn die beiden Sender sich gegenseitig aufgrund der begrenzten Reichweite nicht wahrnehmen, sind nur die RTS-Frames gefährdet und nicht die eigentlichen Daten. Im Anschluss greift CSMA/CA, und die Übertragung kann geordnet stattfinden.
Durch den RTS/CTS-Austausch wird zwar das Hidden-Station-Prinzip gelöst, die Erweiterung sorgt aber für eine andere Schwierigkeit – das Exposed-Station-Problem. Die Situation ist zunächst die gleiche wie beim Hidden-Station-Problem: Eine Station befindet sich in der Mitte von zwei anderen Stationen, die sich gegenseitig nicht erreichen können. Eines der beiden Geräte möchte nun Daten an die Station in der Mitte senden. Alle erreichbaren Knotenpunkte empfangen den CTS-Frame, der sie von einer Sendung abhält. Das umgeht das Hidden-Station-Problem – schafft dabei aber ein neues.
Eine dritte Station wird nun nämlich vom Senden abgehalten, auch dann, wenn eigentlich eine ganz andere, vierte Station das Ziel der Sendung wäre. Diese Übertragung würde keine Kollision erzeugen und wird dennoch unterbunden, was zu einer Verlangsamung des ganzen Netzes führt.
Network Allocation Vector (NAV)
Bevor ein Gerät im Netzwerk mit einer Übertragung beginnt, sendet dieses zunächst eine Information (im Duration-Feld des RTS-Frames) an alle anderen Teilnehmer. So teilt die Station mit, wie lange das Netz durch die Übertragung belegt sein wird. Jedes andere Gerät trägt diese Information in seinen ganz persönlichen Netzbelegungsvektor ein (bei dem es sich mathematisch gesehen nicht wirklich um einen Vektor handelt). Dieser wird intern verwaltet und gibt die Zeit an, ab wann ein Sendungsversuch wieder möglich ist. Der Network Allocation Vector (NAV) zählt fortlaufend herunter und wird nur durch neue Informationen von anderen Stationen wieder aufgefüllt.
Ein NAV kann den Timer um maximal 33 ms (32.767 µs) hochsetzen. Das ist die Maximaldauer, für die ein Sender das Medium blockieren darf. Die Geräte im Netzwerk sind, während der Netzbelegungsvektor noch nicht abgelaufen ist, inaktiv. Dies spart Energie. Erst wenn der Zähler auf 0 steht, wird der Teilnehmer wieder aktiv und überprüft das Netz. Der NAV passt sich nicht nur durch den RTS an, sondern wird auch durch CTS und ACK beeinflusst. Letzteres ist für alle Teilnehmer das Signal, den NVA wieder auf 0 zu setzen: Das Medium ist wieder frei.
Der Ablauf des CSMA/CA-Verfahrens im Überblick
Wenn Teilnehmer in einem drahtlosen Netzwerk den Vorgaben von Carrier Sense Multiple Access with Collision Avoidance folgen, müssen bestimmte Schritte eingehalten werden: Zunächst überwachen die Stationen das Übertragungsmedium. Das bedeutet im Falle von WLAN, dass der Carrier Sense den Funkkanal überwacht und dabei prüft, ob andere Netzteilnehmer – soweit sie für das jeweilige Gerät sichtbar sind – gerade senden.
Stellt sich heraus, dass das Übertragungsmedium derzeit belegt ist, wird ein zufälliger Backoff eingeleitet: Die Station wartet eine zufällige Zeitspanne, bis eine erneute Überprüfung einsetzt. Allen anderen Stationen, die nicht gerade mit Senden oder Empfangen beschäftigt sind, geht es genauso. Die durch den Zufall bestimmte Wartezeit sorgt dafür, dass die Teilnehmer nicht gleichzeitig beginnen, das Netzwerk zu überprüfen, und somit auch nicht gleichzeitig mit der Übertragung von Daten beginnen können. Dies geschieht aber nur dann, wenn der Station nicht ohnehin aufgrund des Netzbelegungsvektors (NAV) klar ist, dass das Medium belegt ist.
Sollte das Netz frei sein, leitet die Station DCF ein: Zunächst wird also der Kanal für die Dauer des DIFS weiter überprüft. Sollte er auch für diese Zeitspanne frei bleiben, startet ein zufälliger Backoff und erst dann beginnt der RTS/CTS-Austausch – falls dieser zusätzliche Mechanismus verwendet wird. Ist der Request to Send erfolgreich beim Empfänger angekommen und somit keine Kollision eingetreten, erhält der Sender durch den CTS-Frame die Erlaubnis, das Übertragungsmedium zu belegen.
Gleichzeitig werden alle anderen Teilnehmer darüber informiert, dass das Netzwerk gerade benutzt wird. Dadurch setzen diese ihren Netzbelegungsvektor wieder hoch und warten, bis sie erneut überprüfen, ob der Kanal frei ist. Nun beginnt die Station mit der Übertragung. Ist diese beendet, wartet der Empfänger für die Dauer eines SIFS und antwortet anschließend mit einem ACK-Frame, um dem Sender den vollständigen Empfang zu bestätigen und den Netzbelegungsvektor auf 0 zu setzen – das Netz ist frei für eine neue Übertragung.
CSMA/CA löst einige Probleme, die in drahtlosen Netzwerken auftreten und nicht durch CSMA/CD gelöst werden können. Dennoch ist das Verfahren auch nicht ohne Nachteile: Zum einen können gewisse Problemfälle so nicht vollständig gelöst werden und zum anderen bringt CSMA/CA neue Schwierigkeiten mit sich.
Vorteile | Nachteile |
---|---|
Hilft effektiv gegen Datenkollisionen | Etabliert Wartezeiten |
Dank Rückmeldungen gehen Daten nicht unbemerkt verloren | Verursacht zusätzlichen Datenverkehr |
Vermeidet mit der Erweiterung RTS/CTS unnötigen Datenverkehr | Löst das Hidden-Station-Problem nur durch Erweiterung mit RTS/CTS |
Schafft das Exposed-Station-Problem durch RTS/CTS |
Was sind koordinierte Mehrfachzugriffe?
Da das CSMA/CA-Verfahren bei weitem nicht perfekt ist, gibt es Bestrebungen, es zu erweitern. So sollen Schwachpunkte ausgemerzt werden. Zwei Verfahren, die beide den Ansatz von koordinierten Mehrfachzugriffen verfolgen, sind zwar ausgearbeitet, werden aber aus verschiedenen Gründen kaum eingesetzt. Koordinierte Mehrfachzugriffe etablieren eine zentrale Organisationsstelle: Die Zugriffsrechte der einzelnen Stationen auf das Übertragungsmedium sollen dabei nicht mehr ausschließlich untereinander koordiniert werden. Stattdessen laufen Anfragen über den Access Point (z. B. über den WLAN-Router).
Point Coordination Function
Die Point Coordination Function (PCF) wird zusätzlich in das CSMA/CA-Verfahren eingegliedert und ersetzt oder ergänzt die Distributed Coordination Function (DCF). Der Access Point fungiert als Koordinator (Point Coordinator) und spricht die Stationen innerhalb des Netzes gezielt an. Bevor dies nicht geschehen ist, darf niemand das Übertragungsmedium belegen. Für die Ordnung der einzelnen Stationen besitzt der Koordinator eine sogenannte Polling-Liste.
Dieser Liste nach wird jeder Netzteilnehmer entweder einfach nacheinander oder der Priorität nach geordnet gefragt, ob er eine Übermittlung vornehmen möchte. Bevor der Access Point allerdings die Nachfrage beginnt, läuft wie bei DFC eine Zeitspanne ab, allerdings in der Länge eines PIFS. Der PCF Interframe Space ist um eine Slotzeit kürzer als der DIFS und hat damit eine höhere Priorität. PCF greift damit früher als DCF.
Das Verfahren liefert einen Ansatz, um das Hidden-Station-Problem zu lösen: Durch eine gute Positionierung des Access Points kann die benötigte Reichweite halbiert werden. Durch PCF müssen die Teilnehmer sich nicht mehr gegenseitig wahrnehmen. Es reicht, wenn der Access Point mittig platziert ist und so sternförmig alle Stationen erreichen kann.
Die Point Coordination Function erzeugt allerdings eine andere Schwachstelle: Um die Technik nutzen zu können, müssen alle Netzwerkteilnehmer die Fähigkeit zu PCF besitzen. Dies ist aber bei weitem nicht immer der Fall. Wenn Geräte nicht am PCF-Vorgang teilnehmen, werden sie und ihre Übertragungswünsche einfach ignoriert. Deshalb hat man ein alternierendes System entwickelt: Hierbei können sich PCF und DCF abwechseln, um allen Geräten im Netzwerk die Möglichkeit zur Übertragung zu geben. Dafür stellt der Access Point zwei Zeitspannen zur Verfügung: Zum einen gibt es die Contention Free Period (CFP), in der PCF für koordinierte Mehrfachzugriffe sorgt, und die Contention Period (CP), in der DCF gilt und Kollisionen wie oben beschrieben mithilfe von CSMA/CA vermieden werden. Eingeleitet wird diese Alternierung durch einen Beacon Frame, den der Koordinator an alle Stationen sendet.
Hybrid Coordination Function Controlled Channel Access (HCCA)
Das andere Verfahren mit koordinierten Mehrfachzugriffen, der HCF Controlled Channel Access, orientiert sich stark am PCF-Verfahren. HCCA regelt allerdings den Wechsel zwischen der Contention Period und der Contention Free Period anders. Statt eines alternierenden Systems etabliert HCCA die Möglichkeit, dass der Access Point jederzeit von CP auf CFP umschalten kann – die sich beim HCCA aber Controlled Access Phase (CAP) nennt. In diesem Zeitraum koordiniert der Hybrid Coordinator (auch hier der Access Point), wer wann Daten verschicken darf, und zwar auf Basis der Priorität. Diese ermittelt der Koordinator über Traffic Classes (TC), die Stationen mitangeben. So können verschiedenen Klassen unterschiedliche Prioritäten zugeordnet werden.
Hinzu kommt, dass bei HCCA der Übertragungszeitraum zu einer Transmit Opportunity (TXOP) wird. Diese beschreibt eine Zeitspanne, in der Sender nicht nur einen Frame verschicken dürfen, sondern so viele Datenframes, wie es innerhalb der TXOP-Phase möglich ist. Wenn ein Frame zu groß für die Periode sein sollte, muss dieser aufgebrochen und in mehreren Teilen verschickt werden. So verhindert man, dass langsamere Stationen schnellere ausbremsen.
In der Zeit der Contention Period gilt hingegen der Enhanced Distributed Channel Access (EDCA). Auch hinter EDCA steckt eine Ordnung nach Prioritäten. Diese Ordnung wird aber nicht durch eine zentrale Stelle organisiert, stattdessen ordnen sich die teilnehmenden Stationen untereinander, wie man es von DCF kennt. Knotenpunkte, die wichtigen Traffic zu übermitteln haben, brauchen nicht einen vollen DIFS abzuwarten. Stattdessen pausieren solche Stationen nur für die Länge des Arbitration Interframe Space (AIFS). Um genau zu sein, gibt es verschiedene AIFS, die – abhängig von der Priorität – durchnummeriert sind. Dabei hat AIFS1 die höchste Prioritätsstufe und ist deshalb kleiner als der DIFS, aber länger als ein SIFS. Auch bei EDCA gilt TXOP.