WiFiLab nesdílí se pásmo, sdílí se čas

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

CSMA/CA: proč se to nechová jako Ethernet

Drátový Ethernet umí kolizi detekovat: vysílá a zároveň poslouchá, a když uslyší něco jiného, než posílá, přestane. Rádio to neumí — vlastní vysílač je o osmdesát decibelů silnější než cokoli, co dorazí zvenčí, takže během vysílání není slyšet vůbec nic.

Wi-Fi proto kolizím předchází (collision avoidance) místo aby je detekovala, a dělá to takhle:

ABDIFSDIFS43214321odpočetrámec Arámec BKOLIZE — obojí je ztraceno0 µs50 µs100 µs150 µs200 µsNikdo nemluví, dokud je ticho a dokud mu nedojde odpočet.Kolizi nikdo neuslyší — vysílač při vysílání neposlouchá.Pozná se jen z toho, že nepřijde potvrzení.
  1. DIFS = SIFS + 2 × slot = 34 µs

    Stanice chce vysílat. Nejdřív musí slyšet kanál volný po celý DIFS — 34 mikrosekund. Teprve pak se smí hnout.

  2. backoff ∈ {0 … 15}

    A ještě nesmí. Vylosuje si náhodné číslo z 0 až 15 — kdyby začaly všechny naráz, srazí se pokaždé.

  3. A: 3 → 2 → 1 → 0

    Každou volnou devítimikrosekundovou prodlevu ubere jedna. Když někdo mezitím začne vysílat, odpočet se ZASTAVÍ a pokračuje potom.

  4. Arámec

    Kdo dojde na nulu první, vysílá. Ostatní ho slyší, zastaví si odpočet a počkají.

  5. SIFS = 16 µs < DIFS

    Příjemce po SIFS potvrdí. SIFS je kratší než DIFS schválně — potvrzení tak nikdy nemusí soutěžit o médium.

  6. kolize → CW: 15 → 31 → 63 …

    Když si dvě stanice vylosují totéž číslo, začnou naráz. Nikdo nic nedekóduje, potvrzení nepřijde, obě zdvojnásobí okno a losují znovu.

Šest kroků na časové ose. Ve třetím zamrzne odpočet stanice B, protože slyší A. V posledním si obě vylosují totéž číslo — a to je kolize, o které se nikdo nedozví, dokud nepřijde potvrzení.
  1. Poslouchej. Kanál musí být volný po celý DIFS (34 µs na 5 GHz).
  2. Losuj. Náhodné číslo z 0 až 15 (soutěžní okno, CW).
  3. Odpočítávej. Každá volná prodleva (9 µs) ubere jedna. Když někdo začne vysílat, odpočet zamrzne a pokračuje po skončení — proto se stanice, která už dlouho čeká, dostane na řadu dřív.
  4. Vysílej. Kdo dojde na nulu první.
  5. Čekej na potvrzení. Přijde po SIFS, který je kratší než DIFS — potvrzení tedy médium nikdy nesoutěží.
  6. Když nepřijde, zdvojnásob okno (15 → 31 → 63 … 1023) a losuj znovu.

Tři důsledky, které tvarují všechno ostatní

Kanál je vždycky celý něčí. Nikdy nevysílají dva naráz úmyslně. Sdílí se čas, ne pásmo — a proto je měnou téhle labky mikrosekunda.

Kolize stojí celý rámec. Vysílač se o ní dozví až tím, že nedorazí potvrzení, tedy po uplynutí celého rámce plus SIFS plus ACK. Na Ethernetu stála kolize 51 µs; tady stojí třeba 400.

Zpoždění je náhodné z principu. Odpočet je losovaný, takže dvě po sobě jdoucí zprávy nemají stejné zpoždění ani na prázdné síti. To je jitter, který se nedá vyladit — dá se jen změřit a počítat s ním. Regulátor, který na to není připravený, to uvidí jako šum na měření (viz ServoLab).

Priority: EDCA

Novější Wi-Fi umí čtyři přístupové kategorie s různým DIFS a různým oknem. Hlas a video dostanou kratší čekání než data:

kategorieAIFSCWmink čemu
hlas (VO)34 µs3nejkratší čekání
video (VI)34 µs7
best effort (BE)43 µs15výchozí
pozadí (BK)79 µs15zálohy, aktualizace

Označit řídicí provoz jako hlasový je nejlevnější zlepšení latence, které v robotické Wi-Fi existuje — okno 3 místo 15 znamená průměrný odpočet 13 µs místo 67. Funguje to ovšem jen tehdy, když to dělají všichni na kanálu; jedna stanice, která značky ignoruje, výhodu smaže.

Proč je SIFS kratší než DIFS. Není to detail, je to celá konstrukce protokolu. Kdo už jednou médium získal, dokončí výměnu (data → potvrzení, RTS → CTS → data → ACK) s odstupy SIFS, a nikdo jiný se mezi to nevejde, protože všichni ostatní čekají DIFS. Kratší mezera znamená vyšší prioritu, a je to jediný prioritní mechanismus, který 802.11 mělo prvních deset let.

Vzorce v této kapitole

DIFS — mezirámcová mezera
DIFS = SIFS + 2·slot [µs] kap. 3
CW — soutěžní okno
CW: 15 → 31 → … → 1023 [slotů] kap. 3