1.分類
分散式協調功能DCF可以在無中心節點進行集中控制的條件下讓各個STA共享同一傳輸媒介且有序地接入到傳輸媒介中。CSMA/CA是一種載波感測衝突避免技術。主要通過載波信號檢測來判斷某一信道中的信號能量是否達到一個基準點,如果信號的強度在這基準點之下,就表示該信道未被占用,因此工作站就可使用該信道來傳輸。反之,若信號強度在基準點之上,則表示傳輸媒介目前忙碌,在這種情況之下,工作站必需延緩等待,直到發現傳輸媒介是空閒的才能進行傳輸。為了控制站點傳輸和等待的時間,定義不同的間隔時間,稱為幀間隔(Inter-Frame Space,IFS),主要包括以下幾種。
1、SIFS(Short IFS):短幀間隔,站點占用信道後進行傳輸或者互動時各幀之間的間隔時間。由於時間間隔短,在SIFS後站點可以繼續維持信道的使用權。主要用於傳輸時間內收發端之間的立即互動幀的時間間隔,如ACK幀、CTS幀或者Poll幀的互動間隔。
2、PIFS(PCF IFS):PCF幀間隔。在進行PCF非競爭性接入功能時,站點傳送幀前必須等待的媒介空閒時間。
3、DIFS(DCF IFS):DCF幀間隔。在進行DCF競爭性接入功能時,站點傳送幀前必須等待的媒介空閒時間。
4、EIFS(Extended IFS): 延長幀間隔。在進行競爭性接入功能時,當媒介空閒前,如果站點檢測到壞幀,必須等待的媒介空閒時間。
5、AIFS(Arbitration IFS):判定幀間隔。有QoS功能的站點在進行競爭性接入功能時,送幀前必須等待的媒介空閒時間。
6、RIFS(Reduced IFS):減短幀間隔。站點占用信道後進行連續傳輸時各幀之間的間隔,用於等待接收端解調完成。比SIFS短,用於替代SIFS以提高連續傳輸效率。
2.CSMA/CA接入時各幀間隔長度間的關係
上述IFS中,RIFS最短,SIFS其次,接下來為PIFS,用於競爭性接入的DIFS則比PIFS稍長,而EIFS和AIFS幀間隔都相對較長。圖1給出了進行CSMA/CA接入時各幀間隔長度間的關係。
圖1 CSMA/CA 接入過程
(1)RTS/CTS
當採用CSMA/CA技術進行信道空閒檢測和衝突避免時,由於STA地理位置分布的差異,當進行信道空閒檢測的STA離正在傳送數據的STA較遠時,容易出現誤判的情況,認為傳輸信道處於空閒狀態並發起傳輸,而如果這時,進行信道空閒檢測的STA恰恰離正在接收數據的STA比較近,就會出現衝突。IEEE 802.11為了解決這個問題,在傳送端要傳送幀前,先送出一個要求傳送控制幀(Request to Send,RTS),而接收端在收到這個控制幀時則在經過一個 SIFS 幀間隔後立刻回送另一種允許傳送控制幀(Clear to Send,CTS)。只有當傳送端正確的收到接收端所回復的CTS時(表示傳送端所傳送的RTS沒有發生衝撞),傳送端才能送出幀。同時其他工作站看到此送給傳送端的CTS時,也會暫時停止嘗試傳送幀,因此傳送端傳送的幀與其他工作站幀發生衝撞的可能性就會大大降低。具體如圖2所示。
圖2 CTS/RTS 作用
由於採用RTS/CTS幀具有一定的長度,雖然RTS/CTS能有效減少發生衝突的機率,但是當數據幀本身就很短時,再使用RTS和CTS幀增加的開銷會很大,因此802.11將RTS/CTS設為可選,這時可以不使用RTS/CTS幀,但是當數據幀長度較長時,由於傳送端必須等不到對方的ACK後才能認定發生衝撞,如果傳送端不使用RTS幀而貿然地將數據幀直接進行傳輸,一旦發生衝突,會帶來很大開銷。這時就需要使用RTS/CTS。在實際系統中,會設定一個幀長度的門限,當幀長度大於或等於一定閾值時系統才會考慮使用RTS/CTS。
(2)虛擬載波偵測
考慮到信道空閒檢測算法的本身固有的誤檢機率會帶來信道使用的衝突,可以採用虛擬載波偵測技術來使得站點可以通過其他方式得知媒介是否繁忙。虛擬載波偵測主要是利用一個網路配置向量(Net Allocation Vector,NAV)記載其他STA傳送還需要持續多久的時間,而配置NAV的STA自身可以根據這些信息來判斷傳輸媒介現在是否忙碌。具體實現時,當STA收到傳送端送出的RTS幀或接收端送出的CTS幀時,由於在RTS幀和CTS幀里會包含了記載著傳送端將來要傳送幀的持續時間(duration)的欄位,STA就會可以將裡面記載的持續時間登錄到自己的NAV裡面。網路配置向量所記載的等待時間可能一直累積,如此一來,時間未歸零前,就表示現在不能傳送幀,因為網路現在是忙碌的(其他STA傳送幀的時間還沒結束)。由於採用網路配置向量NAV來判斷信道是否空閒,跟載波偵測可以實現相同的功能而又不需要真正進行載波偵測,因此也就稱為虛擬載波偵測法。圖3給出了使用RTS/CTS和NAV時,一個簡單的信道競爭的過程。
圖3 RTS/CTS 和NAV 過程
圖3中源站在進行傳輸時,先傳送RTS幀,其中攜帶的持續時間值(單位為μs)為預估其本身(RTS幀)傳送完畢至下一傳送幀收到ACK幀為止。從圖3中可發現,所有聽到此RTS幀的工作站都將其NAV設為此值。相同的,目的站回送的CTS幀中也攜帶一持續時間值,其內容也是等於其本身(CTS 幀)傳送完畢至下一傳送幀收到ACK幀為止的預估時間。其他工作站在其 NAV 值不等於零前不可以傳送幀。在NAV值為零後則以DCF的方式進行幀的傳送。
當傳送端將長幀分片發起連續傳輸時,在其信道占用時間內,會有多個幀以及其ACK幀被連續發出。這時傳送端傳送的RTS幀中的持續時間值只會指示到第一個ACK幀的持續時間,同樣接收端回復的CTS幀中的持續時間值也只會指示到第一個ACK幀的持續時間。這時,為了對整個傳輸時間內進行有效保護,接收端在回復ACK幀時,會在ACK幀中指示其本身(ACK幀)傳送完畢至下一傳送幀收到ACK幀為止的預估時間, 並且其他進行偵聽的STA的NAV會根據偵聽到的ACK幀被連續重置,具體過程如圖4所示。
圖4 連續傳輸時的NAV 設定過程
(3)後退時間
除了由於檢測錯誤而發生衝突外,採用CSMA/CA技術進行信道競爭接入時,當多個STA同時檢測到信道空閒發起接入也會產生碰撞。在 DCF 的方法中,當工作站想傳送幀時,必須先檢測是否有其他工作站正在傳送幀。即使此時媒介呈現空閒的狀態也不能立刻傳送幀,必須開始等待一段幀間隔時間(DIFS)。在這段時間中,如果仍然沒有其他工作站傳送幀,則在時間到時可立即傳送幀。如果開始時媒介就忙碌或在 DIFS 時間到之前有其他工作站率先傳送幀,則必須繼續監聽此幀之傳送,待幀傳送結束後再繼續等待一段幀間隔時間(DIFS)。在這段時間中,如果仍然沒有其他工作站傳送幀,則接著進入所謂的競爭視窗 (Contention Window,CW),此時工作站會產生一隨機時段(稱為後退時間,backoff time)。此後退時間隨時間遞減,工作站必須等到其後退時間減為零時才能傳送幀。值得注意的是,此後退時間不一定能順利的持續遞減,如果只有一部工作站進入競爭視窗,則其後退時間可以持續遞減到零,如果有許多工作站同時進入競爭視窗,則在遞減的過程中,只要有其他工作站傳送幀就表示此輪之競爭視窗結束,此時就必須暫停遞減的工作,待下次再進入競爭視窗時才繼續遞減。舉例來說,如果有n 部工作站S 1, S 2,⋯,Sn 在前一筆幀傳送期間陸續想要傳送幀,則這些工作站都會在該筆幀傳送結束並且等待一個 DIFS 時段後同時進入競爭視窗。假設這些工作站分別產生b 1,b 2,⋯,bn 的後退時間,其中b 1<b 2<⋯<bn 。則工作站S 1的後退時間可以持續遞減到零並且在此輪的競爭中率先傳送出去因為其後退時間(b 1)最短。其他工作站Si 則會在其後退時間遞減到等於bi -b 1時偵測到此傳送行為。此表示其在此競爭視窗中沒有成功,於是暫時將其後退時間凍結起來,待下次再進入競爭視窗時則以此值為其退後時間起始值。依此方式,如果中間沒有其他新工作站加入競爭行列,則這些工作站傳送幀的順序將是S 1, S 2,⋯,Sn 。換句話說,工作站必須等到其後退時間減到零時才能將幀傳送出去。
如果所有工作站的後退時間都不相同,則幀在傳送時就不會發生衝撞。如果有兩個或兩個以上的工作站剛好產生相同的後退時間,則這些工作站將同時傳送幀並且發生衝撞。前面曾說過,每一幀的傳送都必須收到對方的ACK才能算傳送成功,如果發生衝撞(或幀傳送時發生錯誤),則參與的工作站都不會收到任何回覆信息。此時該工作站將進行重送階段 (Retransmission)。進行重送階段的工作站在進入競爭視窗前所等待的時間將是延長幀間隔時間(EIFS), 而不是幀間隔時間(DIFS)。圖5示意了多個STA進行DCF時的退避過程。
圖5 多個STA 進行DCF 時的退避過程
在進入競爭視窗時,各個STA的後退時間也不相同。以下說明STA如何產生後退時間的初始值。後退時間計算方式如下:Backoff=INT(CW×Random( ))×aSlotTime。其中INT(x)整數函示,表示小於或等於x 的最大整數;CW是一個介於CWmin和CWmax間的整數;Random()為介於0與1間的實數;aSlotTime=開始傳輸的準備時間+媒介傳遞延遲+媒介忙碌偵測反應時間。CW是一個競爭視窗參數,每一幀第一次傳送時採用的值為CWmin。每當因為工作站傳送的幀發生衝撞或錯誤現象而必須進行重送的程式時,CW值就會依序增加,直到其值達到CWmax為止。