參考鏈接
http://pavelhan.tech/post/2021-01-12-00-WiFi中的BeaconTIM與DTIM概念總結/
https://www.cnblogs.com/god-of-death/p/8098643.html
https://blogs.arubanetworks.com/industries/802-11-tim-and-dtim-information-elements/
https://dot11ap.wordpress.com/timdtimatim/
TIM和DTIM
TIM:每一個Beacon的幀中都有一個TIM 信息元素 ,它主要用來由AP通告它管轄下的哪個STA有信息現在緩存在AP中,而在TIM中包含一個 Bitmap control 字段,它最大是251個字節,每一位映射一個STA,當為1時表示該位對應的STA有信息在AP中。總之,收到 與自己關聯的TIM就要發送PS-POLL幀來與AP取來聯系並取得它的緩存幀了。標准的TIM中僅僅指示AP緩存的單播信息。
DTIM:這個是TIM的特殊情況,當發送幾個TIM之后,就要發送一個DTIM,其除了緩存單播信息,也同時指示AP緩存的組播或廣播信息,一旦AP發送了DTIM, STA就必須處於清醒,因為廣播或組播無重發機制,不醒來數據就收不到了。
也就是說DTIM里面會指示是否有組播數據,也會指示是否有單播數據。
如果beacon包含的DTIM里面有組播數據,也包含了單播的數據。STA會馬上喚醒,接受組播數據,接受完成之后,會繼續接收單播數據。
功耗優化
需要根據DTIM Period來設置。
DTIM Count - This field indicates how many beacon frames till the next DTIM.
A DTIM count field of 0 indicates that TIM is a DTIM.
A DTIM count field of 1 indicates the next beacon is a DTIM.
DTIM Period - This field indicates the beacon intervals till a DTIM.
A DTIM period field of 1 indicates every other beacon is a DTIM.
A DTIM period field of 3 indicates every third beacon is a DTIM.
A DTIM period field of 5 indicates every fifth beacon is a DTIM.
STA通過listen interval來設置監聽beacon的間隔。可以設置成和DTIM的間隔一樣,或者是DTIM Period的倍數。
這樣一來,每次DTIM到來的時候,既可以接收廣播數據,也可以接收單播的數據。
- 舉例說明:
STA里面都會有一個關於接收DTIM間隔的最大值。
例如STA最大值監聽間隔是5,而路由器的DTIM period是1。那么剛好可以每5個beacon醒來一次接收數據。
例如STA最大值監聽間隔是5,而路由器的DTIM period是3。那么STA為了同步,就必須每3個beacon醒來一次接受數據。這樣功耗就高了一些。
例如STA最大值監聽間隔是10,而路由器的DTIM period是3。那么STA為了同步,就必須每9個beacon醒來一次接受數據。功耗就降低了。