802.11 MAC層介紹(一)

1. 訪問機制

CSMA/CA:  Carrier Sense Multiple Access with Collision Avoidance
WiFi採用帶衝突避免的載波監聽多路訪問機制來控制對傳輸媒介的訪問

不同於以太網,WiFi沒有明確的衝突碰撞檢測機制
WiFi MAC層指定了如下規則來檢測衝突碰撞

- 使用介質前,speaker必須指示將使用多久,通知其他潛在speakers在使用介質所需要等待的時間
- 直到前一個speaker指示的時間後,其他speaker才能使用介質
- 當收到肯定確認後,speaker才認爲數據成功傳輸
- If two participants happen to start speaking at the same time, they are unaware they are speaking over each other. 
  The speakers determine they are speaking over each other because they do not receive confirmation that their voices were heard.
- 當發送的數據沒有收到肯定確認時,speaker會等待一個隨機時間然後再次使用介質發送沒有成功的數據

當沒有收到肯定確認時,WiFi MAC層認爲檢測到了碰撞

2. MAC子層功能

MAC子層包括DCF和PCF

DCF: Distributed Coordination Function
PCF: Point Coordination Function

2.1 載波監聽(Carrier Sense)

STA有兩種方法來判斷當前介質是否空閒

- 檢查PHY層,是否有carrier存在
- 使用虛擬carrier-sense功能,NAV(Network Allocation Vector )

NAV是MAC層提供的一種定時器,保存了其他STA使用介質的持續時間
其他STA發送的數據中帶有的Duration大於所保存的時間時,STA就更新自己的NAV
當NAV爲0並且PHY層指示當前介質可用時,STA才能發送數據

2.2 DCF

DCF是基於CSMA/CA的接入方法,儘可能避免衝突,可以自動高效地共享介質

DCF提供基本模式和RTS/CTS模式兩種介質訪問方式
利用競爭窗口的二進制指數回退機制協調多個STA對共享鏈路的訪問,避免出現因爭搶介質而無法通信的情況
其核心思想是利用二進制指數回退機制減輕數據分組的碰撞以及實現發生碰撞後對分組的有限重傳控制

STA發送數據幀時,首先檢測介質的狀態
如果介質空閒且持續一個DIFS時間(DCF InterFrame Space)後
- 在基本模式下立即發送數據幀
- 在RTS/CTS模式下,發送RTS幀
並同時檢測有沒有發生分組碰撞

如果發生碰撞,STA隨機在[0,Wi]之間均勻選取一個值Random()
ØWi被稱作競爭窗口,其大小依賴於數據分組重新傳輸次數
 
CWmin ≤CW≤CWmax
並計算出backoff timer(=Random() * slot time)

隨後,當STA探測到介質空閒時間等於一個slot time時,計數器減1
而當檢測到介質忙時,計數器值保持不變
並在介質空閒時間等於DIFS時,重新激活延時計數器且STA繼續監測介質
直到計數器值減到0時STA才發送MAC幀

另外,爲了避免某STA長時間佔用信道,STA在兩次連續的數據幀發送之間也必須進行隨機延遲。


2.3 應答幀

某些幀需要接收STA迴應一個應答幀,稱爲ACK幀
ACK幀的傳輸不需要等待backoff timer
而是等待SIFS(Short Interframe Space)時間
SIFS通常比DIFS少2個slot time

2.4 隱藏節點問題和RTS/CTS

RTS: Request to send
CTS: Clear to send

由於信號的緣故(距離太遠),某些STA之間無法直接通信,無法感知彼此的存在,
若此時同時給處於兩者之間的STA發送幀,導致中間STA佷尷尬
因爲只有中間STA知道發生了衝突
此時,需要使用RTS/CTS來解決該問題

STA發送RTS幀,預約介質的使用權和要求接收STA保持沉默
接收STA以CTS應答,CTS幀要求附近的STA保持沉默直到過程結束
然後開始幀的傳輸過程


RTS/CTS通常用在高用量的環境下以及傳輸競爭比較顯著的場合

2.5 幀分片(Frame Fragmentation)

幀分片的作用在於提高無線介質中傳輸的可靠性
將一個完整幀分爲幾個更小的幀來分別傳輸,每個分片幀都需要ACK
這樣當某個分片幀出現錯誤時,只需要重新傳輸該幀即可
然而這也可能增加MAC層過載問題(Overhead)

注意:
- 幀分片只發生在單播幀中
- 每個分片幀具有相同的幀序列號和遞增的幀編號

2.6 PCF

PCF作爲DCF的補充,是一種可選的介質訪問機制
提供了不必通過競爭即可使用介質的服務,爲了滿足實時業務需求
用於Infrastructure模式網絡架構中,由AP進行協調

PCF以週期的形式進行幀的傳輸
每個週期包括一個無競爭階段和一個競爭階段
- 無競爭階段(CFP: Contention-Free Period)
- 競爭階段(CP: Contention Period)
CFP階段傳輸實時業務,PCF起作用
CP階段傳輸非實時業務,DCF起作用

~~~好像使用較少,後續再補充

3. MAC幀格式

MAC幀基本格式如下圖所示:


3.1  Frame Control字段


- Protocol Version: 目前爲0
- Type: 幀類別,有下面三種,每個類別又有一些子類別(見Subtype)

00: 管理幀(Management Frame)
01: 控制幀(Control Frame)
10: 數據幀(Data Frame)
11: 保留未使用

- Subtype: 幀子類別,與Type共同來決定一個幀的類型,詳細如下表所示


- To DS/From DS:  指示幀目的地是否爲DS(分佈式系統),可以簡單地理解爲是否【發往/來自】AP


- More fragments: 指示是否還有分片(除去最後一個分片)
- Retry: 指示當前幀是否爲重傳幀,接收方收到後會刪掉重複幀
- Power management: 指示STA的電源管理模式, 1表示STA在數據交換完成後進入省電(Power-Save)模式,對於AP恆爲0
- More data: 指示AP爲進入省電模式的STA進行幀緩存(來自DS)
- WEP: 指示frame body是否使用WEP加密
- Order: 指示將進行嚴格次序(StrictlyOrdered)傳送

3.2 其他字段

- Duration/ID: 可以用在下面三個場景中

 
@1 Duration,第15位置0,用於設定NAV,數值代表預計使用介質的微秒
@2 在CFP幀中,第14位置0,第15位置1,其他值爲0,字段值爲32768,讓其他沒有收到Beacon幀的STA公告無競爭週期
@3 在PS-Poll(省電-輪詢)幀中,第14、15位同時置1,用於從省電模式醒來的STA發送AID(關聯標識符)以取得在AP中的緩存幀

- Address : 有以下幾種類型,由幀類型決定使用哪幾個地址字段,通常有三個, SA、DA和BSSID

BSSID, 基本服務集標識符
DA, 目的地址
SA, 源地址
RA, 接收端地址
TA, 發送端地址

- Sequence Control: 包含兩個子字段, 4位的分片編號(Fragment Number)和12位的順序編號(Sequence Number)

 
順序編號4096的模數,從0開始,每處理一個上層封包就加1
若上層封包分片處理,所有幀分片採用相同順序編號
對於重傳幀,順序編號不變

- Frame Body: 幀主體也稱數據字段(Data field),用於傳遞上層有效載荷(Payload),可爲0
- FCS: 幀校驗序列,採用循環冗餘校驗(CRC)碼,計算範圍包括MAC頭中所有字段及幀主體

3.3 幀主體數據

不同於以太網,802.11的Frame Body以802.2的邏輯鏈路控制(LLC)來封裝不同類型的網絡協議
有兩種封裝方式: RFC 1042、802.1H
下圖是802.11裏的IP封裝


下一篇<802.11 MAC層介紹(二) >

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章