iT邦幫忙

0

Introduction to Computer Networks - IEEE 802.11 Wireless LAN (下)

  • 分享至 

  • xImage
  •  

IEEE 802.11 Frame Format

https://ithelp.ithome.com.tw/upload/images/20230313/20124767lbXcDgolLQ.png

  • Addr
    • Source 和 Destination addresses 都為 48 bits
  • Frame Control
    • To DS 如果為 1 代表這個封包是要 送到 DS 中 (送往基地台)
    • From DS 如果為 1 代表這個封包是 從 DS 傳遞過來的(從基地台收)
    • 如果兩個 bit 都設定為 1,代表要將 這個封包的傳遞需要經過 DS
    • 如果兩個 bit 都設定為 0,代表傳輸不需要經過 DS 可以直接 兩台設備互相傳送
  • Data
    • 最大為 2312 bytes
  • Duration / Conn ID
    • 當設備要發送封包給另一台設備時,為了避免資料 Collision 所以會在發送前先發送 RST 和 CST 用於告訴週邊設備自己即將要傳送或接收資料,在這個期間請不要發送訊號以免發生 Collision,而發送或接收的時間就放在 Duration 這個欄位中。

ToDS and FromDS

https://ithelp.ithome.com.tw/upload/images/20230313/20124767axlRZ0YL4d.png

  • 如果 ToDS 和 FromDS 都為 1 代表 該封包的傳遞需要透過 DS,所以 TA 代表傳送該封包的基地台RA 代表要接收該封包的基地台,而 SA 與 DA 則代表真正發送和接收該封包的設備位置,只有在封包進入到 DS 中才會需要用到 4 個 Address
    • A → AP1 → DS → AP2 →B
  • 如果 ToDS 和 FromDS 都為 0 代表兩個設備直接通訊,所以只需要 SA 和 DA 代表發送的設備與接收的設備。
    • A → B
  • 如果 ToDS 為 1 但 FromDS 為 0 代表該封包要送給基地台 (AP),所以需要 SA 代表發送該封包的設備地址、BSSID 代表基地台的 MAC Address 最後需要 DA 代表接收封包的設備地址。
    • A → AP
  • 如果 ToDS 為 0 但 FromDS 為 1 代表該封包是從基地台 (AP) 傳來的,所以需要傳遞來的基地台的 MAC Address,要接收該封包的設備地址 (DA) 與真正發送這個封包的設備地址 (SA)。
    • AP → B

https://ithelp.ithome.com.tw/upload/images/20230313/20124767GGn4IB2JTU.png

如果今天要從設備 A 發送到設備 E 會有以下幾個步驟,他們會分別帶入不同的 Address

  1. A → AP1:第一步是由設備 A 傳送給 AP1,所以會是 ToDS 為 1 但 FromDS 為 0

https://ithelp.ithome.com.tw/upload/images/20230313/20124767trPwIqt9Gg.png

Address = AP1 , A , E , N/A

  1. AP1 → AP3:接著會透過 DS 將封包由 AP1 送給 AP3,所以會是 ToDS 和 FromDS 都為 1

    https://ithelp.ithome.com.tw/upload/images/20230313/20124767eNo37jO8Zk.png

    Address = AP3 , AP1 , E , A

  2. AP3 → E:最後會由 AP3 將封包傳給設備 E,所以會是 ToDS 為 0 但 FromDS 為 1

    https://ithelp.ithome.com.tw/upload/images/20230313/20124767pcf7F7ueHp.png

    Address = E , AP3 , A , N/A


IEEE 802.11 MAC Architecture

https://ithelp.ithome.com.tw/upload/images/20230313/20124767tDRMkDo4lQ.png

Distributed Coordination Function (DCF)

802.11 MAC 的基本訪問方法,稱為 Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA),由於 802.11 是在空間中傳遞封包,所以無法像 Ethernet 一樣對 Collision 進行 Detection,取而代之的是使用 Collision Avoidance 的方式盡量避免訊號 Collision。

Point Coordination Function (PCF)

建構在 DCF 的上方,用於提供非競爭性的服務,在這一層中每個 AP 內部會有一個清單用於記錄所有服務的設備,他會利用這個清單逐一的訪問每個設備是否有傳輸需求,如果問過一輪都沒有的話,則開放一段時間的競爭性服務,一段時間結束過後又會變會逐一訪問設備的模式,後面會有詳細的介紹。

由於 Point Coordinated 擁有較高的使用頻道的優先權,所以可以提供 contention-free 也就是免競爭的傳輸模式。

Superframe

通常 DCF 與 PCF 會是並存的,這個並存的結構稱為 Superframe,當 Superframe 開始時會先是執行一段時間的非競爭服務,會向周圍服務的設備發出輪詢,在這個過程中設備的傳輸是不需要互相競爭,這個時間稱為 contention-free burst,輪詢的時間過後便會變成競爭型的服務,不斷地進行這個循環。

https://ithelp.ithome.com.tw/upload/images/20230313/20124767iXIDcJfXhv.png

每一個 Super Frame 的時間都是不固定的,如果今天 PA 在輪詢設備的時候發現大家都不需要有即時發送的封包,那免競爭的時間就會短一些,相對的如果今天 PA 在輪詢的時候發現大多設備都有急需發送封包的需求,那麼免競爭的時間就會長一些。


Distributed Coordination Function (DCF)

利用 CSMA/CA 的 Protocol 和 random backoff time 進行 802.11 的傳輸,CSMA/CA 就如同上面介紹的一樣,在設備需要發送封包前需要先聽聽看現在的線路是否為 idle,如果是的話才可以傳輸封包,而 random backoff time 則是當今天有三台設備需要發送封包,他們同時偵測到為 idle 的時候,由於需要避免他們三個同時發送產生 Collision,所以他們三個都會各別再多等一個 random time 用於錯開彼此的發送時間。

由於 802.11 是利用空氣傳播,所以無法進行 Collision Detection,取而代之的是傳遞封包給對方時,對方一收到封包後需要立刻回傳一個 ACK 用於告訴發送方他收到了,相對的如果發送方沒有收到 ACK 的話則會再次發送封包給目標。

Carrier Sense 代表在傳送封包之前會先聽一下線路是否有其他設備在傳遞封包,這個聆聽分為兩種一種是 physical 他是真的去聆聽現在傳輸線路上是否有其他設備正在進行傳輸,另一種是 virtual mechanisms 代表當收到其他設備發出的 RTS, CTS 的時候,在他們進行傳輸的時間 ( duration field )都將線路設定為 bussy 避免與正在傳輸的設備發生 Collision。

雖然在發送長的封包時,利用 RTS 和 CTS 可以有效的避免封包發生 Collision,但是如果今天要傳送的封包很短,那麼這種情況下在使用 RTS 和 CTS 就顯得有點浪費頻寬了,所以面對這種短的封包就會直接發送而不會使用 RTS 和 CTS。

MAC-Level Ack (Positive Acknowledgment)

當接收方收到發送方的封包時,如果正確的話就必須立刻回覆 Ack 給發送方,所謂的立刻回覆的時間稱為 SIFS,當接收方收到 Data, Poll, Request, Response 都需要立刻回覆 Ack。

Inter-Frame Space (IFS)

對於 802.11 來說, Priority levels 是非常重要的事情,舉例來說當一個發送方發送了一個封包給接收方,如果沒有 Priority levels 的情況下,他可能會先處理完目前手上在做的事情後才發送 Ack 給發送方,但這樣的話發送方沒有立刻收到 Ack 就會以為這個封包傳遞失敗,所以會在傳送一次封包,這樣就會造成資源的浪費,所以有所以 802.11 定義了三種不同 Priority 的 IFS:

Short-IFS (SIFS)

這個 IFS 是屬於 Priority 最高的 IFS,因為這些動作需要 盡可能地快速發送,比如說上面提到的 Ack 如果沒有在收到的時候立刻回覆 Ack 的話,可能會造成讓發送方再送一次的情況,有三個形況會需要使用到 SIFS

  • ACK Frame
  • CTS Frame
  • By a station responding to any polling

PCF-IFS (PIFS)

當 Superframe 中的 PCF 時段(非競爭模式)下,當 PCF 檢測到 PIFS 的時間中沒有其他設備在傳輸,那麼就會允許設備發送封包。

DCF-IFS (DIFS)

當在 Superframe 中的 DCF 時段(競爭模式)下,當 DCF 檢測到 PIFS 的時間中沒有其他設備在傳輸,那麼就會允許設備發送封包,由於是競爭模式下的傳輸,所以 DIFS 的等待時間是最久的,需要等待久一點的才能盡量避免封包 Collision。

Random Backoff Time

上面提到如果在 DCF 時段(競爭模式)下設備要發送封包的話,他會需要等待一個較長的 IFS 稱為 DIFS,但今天如果有兩台設備需要傳送封包,他們同時等待了一個 DIFS 後,發現線路是 idle 的,那麼他們如果同時發送的話也會造成 Collision,所以這種情況來說當一個設備等完了 DIFS 後會需要再多等一段 Random Backoff Time,目的就是為了避免多台設備在等完 DIFS 後同時發送而產生 Collision。

Backoff time = INT(CW * Random()) * Slot time

  • Slot time = Transmitter turn-on delay + medium propagation delay + medium busy detect response time
  • Random( ) = a random number
  • CW = 該封包是第幾次嘗試發送,發送失敗的次數越高(未收到 Ack)CW 的時間越長,CW 最大值為 255

https://ithelp.ithome.com.tw/upload/images/20230313/20124767oYYbp8qdkq.png

DCF Access Procedure

https://ithelp.ithome.com.tw/upload/images/20230313/20124767MNbWSz6eBZ.png

當設備 A 在 DCF 模式下要發送封包時,會需要先聽線路上是否由其他設備在發送封包,如果沒有那麼還需要再等一個 DIFS 的時間,等到這個時間過後也沒有設備在送封包的話才能發送。

而其他設備在設備 A 發送封包的時候需要等待他將封包都發送完,等到線路為 idle 後和設備 A 一樣需要多等一個 DIFS 的時間( 需要等待接收設備發送 Ack 給設備 A 以免和 Ack 發生 Collision ),等完 DIFS 後還需要多等一個 Backoff time,為了避免和其他也想發送封包的設備發生 Collision。

Backoff Procedure

如果設備進入了 Backoff Time,但這時有另一台設備已經完成 Backoff Time 且開始發送封包時,那麼這台設備的 Backoff Time 就會暫時 Frozen,直到線路空閑的時間大於 DIFS 的時間才會繼續倒數 Backoff Time,當 Backoff Time 倒數到 0 後就可以開始發送封包。

https://ithelp.ithome.com.tw/upload/images/20230313/201247673Lc8Y5tO42.png

當設備 A 要發送封包時,設備 B, C, D 也想發送封包,那就需要等到設備 A 發送完後等待一個 DIFS 的時間才會進行各自的 Backoff time,而設備 C 的 Backoff time 最短(10 us)最快歸零所以先由他發出封包,而其他設備就將各自的 Backoff time frozen 直到設備 C 送完封包後再等一個 DIFS 才會繼續倒數,優先倒數完的設備就可以優先發送封包,其他設備 在等待的途中偵測到有設備再送封包就必須暫時停止 Backoff 的倒數,直到等完下一次的 DIFS 後才能再次啟動

Control of the Channel

當一個 Station 爭取到了傳送封包的機會時,可以連續的發送多個 fragments,有兩種情況會停止 fragments 的發送

  1. 是在發送每個 fragmenet 時都會需要收到一個 ack,如果其中一個 fragment 沒有收到 ack 那麼整個資料就傳送失敗需要重新發送
  2. 如果這個封包太大有太多 fragments,發送 fragments 的時間超過 dwell time 就會停止發送。

https://ithelp.ithome.com.tw/upload/images/20230313/20124767yEEPkC8LbH.png

每一個 fragment 的發送都會需要收到一個 Ack,而接收到 Ack 的時間是一個 SIFS,同樣的當發送方收到 Ack 後也會經過一個 SIFS 後再發送下一個 fragment。

如果傳遞的資料是好幾的 fragment 的話,不可能再傳送每個 fragment 之前都在發送或接收一次 RTS 或 CTS,所以 本次傳送的 fragment 跟 ack 會成為下一輪 fragment 的 RTS/CTS,而最後一個 fragment 和 ack 由於是最後的 data 了,所以會將 duration 設為 0。

https://ithelp.ithome.com.tw/upload/images/20230313/20124767rZQTSLlhNp.png

  1. 發送方發送 RTS 代表自己要發送封包了,duration time 將會是發送 fragment1 + Ack 的時間,在這段期間內,發送方周圍的其他設備將會在線路中偵測到 busy(紫色)。
  2. 當接收方收到 RTS 後將會回送一個 CTS 告訴周圍設備自己將要接收封包了,duration time 將會是接收 fragment1 + ack 的時間 ,接收方的其他設備會在線路中偵測到 busy(黃色)
  3. 發送的第一個 fragment1 之中會帶有一個 duration time,他將會是 傳遞 fragment2 + Ack 的時間,當發送方的其他設備等待完 fragment1 傳遞的 duration time 後,又會看到 fragment1 所攜帶的 duration time ( 傳遞 fragment2 的時間 ),那個他們將會繼續偵測到 busy。
  4. 接收方收到 fragment1 的時候會立刻回一個 ack,而這個 ack 中也會夾帶著 傳遞 fragment2 + Ack 的時間,當接收方的其他設備等待完接收 fragment1 的 duration time 後,會在等待一個接收 fragment2 + Ack 的 duration time ( 由回傳的 Ack 所攜帶 )。
  5. 當傳送到 fragment3 的時候,由於他已經是最後一個 fragment,所以他攜帶的 duration time 會是 0,用於告訴周遭設備這已經是最後一個 fragment,你們等待完一個 DIFS 和 backoff time 後就可以進行傳送。

Point Coordination Function (PCF)

  • Point Coordination Function (PCF) 提供了 contention free 的服務也就是預約式的服務。
  • 工作站中的某一個工作站會被挑為 Point Coordinator (PC) ,他會擁有周圍設備的清單,會依照這個清單來一一輪詢,看看有沒有哪一個工作站有封包要發送,他會產生由 Contention Free (CF) periodContention Period 所組成的 Superframe(SF)

https://ithelp.ithome.com.tw/upload/images/20230313/20124767iXIDcJfXhv.png

每一段 Superframe 的長度都是不固定的, PC 會根據清單中設備的需求而延長或縮短 contention free 的時間。

在每個 Superframe 的開始的時候,PC 會利用一個 time between transmissions (PIFS) 的時間來控制每個 CF period,而當 PC 在輪詢的時候所發出給各個設備的訊號稱為 CF-Down Frame,而如果設備被詢問到後有要發送封包的話,他將要發送的封包傳遞給 PC 的訊號就稱為 CF-UP Frame

當一個 Superframe 開始後, PC 會先偵測一下線路是否為 idle,如果是 diel 的話 PC 將會等待一個 PIFS 的時間,接著將會發送帶有 CF-Poll Subtype 欄位的 Data 給清單中的設備,輪詢是否有封包需要發送,當 PC 輪詢結束後會發一個 CF-End frame 用於告訴周遭設備 Contention free 的時間結束。

上面介紹到 Distributed Coordination Function 的時候有提到,每一個設備在要發送封包之前都需要等待一個 DIFS 的時間,而 Point Coordination Function 則是只要等待一個比 DIFS 短的 PIFS 的時間,所以 Point Coordination Function 的 priority 會比較高,所以由於 PIFS 的時間比較短,所以可以比 DIFS 更快速的搶到發送的機會。

和 Distributed Coordination Function 一樣,如果設備在 Contention Free Time 中沒有要參與輪詢的話,需要先將狀態設定為 NAV,等於說在這個 Contention Free Time 的期間內設備都不能發出訊號,為了達到這個目的則需要將 NAV 的時間設定為 maximum CF-Period length,當輪詢結束後 PC 會發送一個 CF-End frame 告訴其他設備 Contention Free Time 的時間結束了,而 原先的定為 NAV 的設備將會 reset 自己設備的狀態,重新去偵測目前線路的狀態。

Transmitter or Recipient in PCF Station

所有的 Station 在收到 PC 發出的輪詢詢問(CF-Poll)時,需要立刻回覆(SIFS)是否有需要發送封包,如果 PC 沒有收到設備回送的 CF-UP frame 的話,代表該設備不需要發送封包,那麼他會等待一個 PIFS 後接著詢問下一個設備。

https://ithelp.ithome.com.tw/upload/images/20230313/20124767Huz0G5hC8l.png

當 PC 要產生 Superframe 之前會先偵測一下目前線路是否為 idle,如果是的話將會等待一個 PIFS 的時間後 發送 CF-Down frame 給第一台設備開始輪詢,第一台設備收到 PC 發送的 CF-Down frame 後如果有要發送的封包的話,需要在 SIFS 的時間發送 CF-Up frame 給 PC,反之如果 PC 沒有收到該設備的 CF-Up frame 的話,將會等待一個 PIFS 後發送 CF-Down frame 給下一台設備。

如果 PC 已經進行完輪詢的動作後,最後會發送一個 CF-End frame 告訴沒有參與輪詢的設備,目前 Contention free time 的時間結束了,其他設備收到這個訊號後將會重置各自的狀態重新聆聽線路狀態接著進路競爭時段。

When the PCF Station is Neither Transmitter nor Recipient

當在 Contention Free Time 的時間中,當某設備被 PC 詢問到是否要發送封包的時候,不一定要將發送的封包給傳給 PC,而是可以直接傳給其他任何一個 Station,在這種情況下 接收封包的設備收到傳來的封包後,和之前介紹的一樣,需要 在 SIFS 的時間後回傳一個 Ack 告訴發送方確實有收到封包。

https://ithelp.ithome.com.tw/upload/images/20230313/20124767Z54FZyrzRK.png

當 PC 發送一個 CF-Down frame 給設備 A 後,設備 A 收到 CF-Down frame 後會經過一個 SIFS 後可以選擇發送封包給設備 B,而當設備 B 收到設備 A 的封包後也 需要在一個 SIFS 之後回傳一個 Ack 給設備 A 告訴他確實收到封包了,而 PC 在這時也會偵測到來自設備 B 的 Ack ( 802.11 的傳遞方式是利用廣播 ),那麼他就會將控制權收回來,經過 SIFS 後再次發送 CF-Down frame 給下一個設備。


IEEE 802.11 Standards

  • IEEE 802.11, 2Mbps
  • IEEE 802.11b, 11Mbps
  • IEEE 802.11a, 54Mbps
  • IEEE 802.11g, 54Mbps
  • IEEE 802.11n, 108Mbps

Summary

  • Hidden node problem - 兩台設備雖然聽不到對方的訊號,但同時傳送給相同目標會造成訊號 Collision。
  • Exposed node problem - 兩台設備雖然聽得到對方的訊號,但 可以同時傳送給不同的對象 而不會發生 Collision。
  • IEEE 802.11 由於是在空氣進行傳播,所以無法像 Ethernet 一樣做到 collision detection。
  • IEEE 802.11 傳送較大的 Frame 時會利用 RTS/CTS 機制告訴周圍設備在這段期間內不要發送訊號以免發生 Collision。
    • 傳送 Frame 的時間 ( duration time ) 會夾帶在 RTS/CTS Frame 中。
  • 由於 IEEE 802.11 無法偵測到訊號是否有 Collision,所以需要透過 Ack 機制來確保接收方有完整的收到訊號,反之若沒有發出 Ack 的話則代表發送的訊號發生 Collision。
  • IEEE 802.11 的設備會有兩種方式可以偵測線路狀況
    • physical - 直接偵測線路狀況
    • Virtual ( NAV ) - 當設備收到來自其他設備的 RTS/CTS 後,會自動將自身的狀態設定為 NAV,代表在這段期間內線路都是 busy。
  • IEEE 802.11 利用等待時間來調整發送的 Priority
    • SIFS > PIFS > DIFS
  • IEEE 802.11 中的 Point Coordinator (PC) 會產生一個 Superframe,而一個 Superframe 會包含一個 Contention Free(免進爭) 和一個 Contention period(需競爭) 兩個時段,而 Contention free 所使用的 PIFS 時間比 Contention period 所使用的 DIFS 短,所以在免競爭時段中的設備會擁有較高的 Priority。

Reference

國立清華大學開放式課程 - 計算機網路概論 - IEEE 802.11 無線區域網路 (Wireless LAN) (黃能富 教授)


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言