WIFI power save 模式下的資料收發

趟石過河發表於2012-06-20
PS模式下的資料收發
工作在PS 模式下的STA 一般會盡量保持在Doze 狀態,只在必要的
時候轉換到Awake 狀態。在Doze 狀態的STA 無法偵聽通道,這導致PS
模式下STA 收發資料的方式跟Active 模式下有所不同,特別是接收資料
的方式大相徑庭。
發向PS 模式的STA 的資料會在AP 處快取,在AP 週期性地廣播的
Beacon 幀中包含一個資料指示表TIM(Traffic Indication Map),TIM 指
明當前所有有資料在AP 處快取的STA。處在Doze 狀態的STA 並不知道
何時有資料被快取,因此STA 必須週期性的接收來自AP 的Beacon 以確
定本身是否有資料被快取。AP 廣播Beacon 的週期為Beacon-Interval,STA
接收Beacon 的週期為Listen-Interval,STA 可以自由選擇Beacon-Interval
的整數倍作為自己的Listen-Interval。STA 每隔Listen-Interval 接收Beacon
並解碼其中的TIM,如果TIM 指示沒有資料快取,STA 就可以立刻轉入
Doze 狀態,如果TIM 指示其有資料快取,STA 就要向AP 發一個競選控
制包Poll,AP 在收到Poll 後就可以向該Poll 的源STA 傳送一個為它快取
的資料包(如圖4-2)。如果有多個處於PS 模式的STA 在收到同一個Beacon
之後都要接收資料,那麼這些STA 傳送Poll 的機制同傳送資料一樣,也
遵循CSMA/CA。Poll 的機制使得STA 在接收資料方面同傳送資料一樣具

在有STA 處在PS 模式的WLAN 裡,除了發向特定PS 模式STA 的
單播(Unicast)資料包外,那些廣播(Broadcast)和組播(Multicast)數
據包某些時候也需要在AP 快取。AP 每隔DTIM-Interval 時間在Beacon
震中包含DTIM(Delivery TIM)指示資訊,以指示其後有廣播或組播數
據傳送。那些希望接收廣播和組播資料的STA 則要每隔DTIM-Interval 轉
為Awake 接收Beacon,並在有廣播或組播資料時接收(如圖4-中第3 行
所示),而那些對能量消耗極敏感的STA 可以選擇不接收DTIM(如圖
4-中第4 行所示)。
無論TIM 還是DTIM 都只能指示一個資料包被STA 接收,而不能標明
每個STA 有幾個包被AP 快取。為了解決這個問題,AP 在向STA 傳送數
據包時用幀頭控制位元More-Data 標明是否仍有資料快取在AP 處。處於
PS 模式的STA 在接收資料時根據More-Data 位元決定是否繼續保持
Awake;若More-Data=0,則STA 立刻可以轉入Doze,若More-Data=1,
則STA 則要繼續保持Awake,競爭傳送Poll 或接收其餘的廣播(或組播)
包,直到收到下一個Beacon 為止。STA 從PS 模式轉換到Active 模式,
AP 將盡快將為其快取的資料包傳送給該STA。綜上,快取、競爭收包的
機制可以使處於PS 模式的STA 不會丟失資料包。
PS 模式下的STA 在傳送資料包的時候同Active 模式下沒有區別,只
是在需要傳送之前轉為Awake 狀態,傳送成功後隨時可以轉為Doze 狀態。
但是由於虛載波偵聽機制(參見2.1 節)的要求,STA 在傳送前必須確定
其他STA 不在傳送資料,而剛從Doze 狀態轉化到Awake 狀態的STA 因
為過去一段時間沒有偵聽通道中的MAC 幀,其NAV 不準確,因此,在發
送資料前,STA 必須偵聽通道,等到收到發自其他STA 的MAC 幀,正確
設定了自己的NAV 之後,才可以開始採用正常的CSMA/CA 機制傳送數
據。當然如果剛Awake 的STA 偵聽了足夠長時間後仍沒有收到任何MAC
幀,也可以開始傳送。

相關文章