為了更好理解一些802.11的后續設計,我們需要深入了解一下802.11的協議性能。我們之前簡單描述了下協議性能的部分,這一段我們討論下具體數學模型下的802.11性能(Bianchi模型)。
Bianchi模型出自于論文《Performance Analysis of the IEEE 802.11 Distributed Coordination Function》,該論文在2000年的時候發表在JSAC(IEEE Journal on selected areas in communications)上,根據google scholar上的記錄,該論文的他引次數已經高達8267次(相應的資源:bianchi模型)。其實關于802.11的理論性能從協議剛開始出來的時候就有人研究,直到現在,這個問題還是在繼續研究中,該論文是這個領域中最為有代表性的一篇文章,故凡是做802.11協議的,都會閱讀理解這篇文章。
PS:本文并不是按照Bianchi原文以推導的形式給出,而是為了方便理解進行的倒敘。其中部分表述和定義如果存在一些錯誤,還請見諒。
Bianchi模型的假設我們首先列舉一些Bianchi模型中,所設定的一些假設。
Single-cell Network:可以簡單認為是個單信道環境,即所有節點共享一個功能信道,并且這個網絡中,所有的節點都是互相可以監聽到對方的。The collision processes of the nodes can be decoupled:即無論節點重傳了幾次,其在傳輸時候的沖突概率都是一個定值,且都是相對獨立的。Channel conditions are ideal:信道是一個理想信道,即傳輸錯誤僅僅由于傳輸碰撞造成,與物理層的信道質量無關。且由于Single-cell的假設,所有節點都可以互相監聽,所以網絡中也沒有隱藏和暴露終端問題。Saturation throughput:Bianchi模型分析為飽和情況下的吞吐量,即任意一個節點都是假設有數據包的,不存在節點競爭到信道之后,沒有數據包待發送的情況出現。No packet dropped:按照協議所述,如果數據包發送失敗,節點是可以發起重傳的。這個重傳次數上限為6次,如果超過該次數,那么就需要丟包。而在Bianchi模型中,保留的重傳次數上限為6次的這個設置,不過沒有設定6次以后進行丟包,而是一直保持在第6次這個zhu
MAC層效率(歸一化吞吐量)
在之前的一篇文章中,我們定義了MAC層的歸一化吞吐量為傳輸真實數據(Data)的時間占總傳輸時間(Overhead + Data)的比例。
在Bianchi模型中,其具體定義如下(部分表述有稍微修飾一下)
![\](/uploadfile/Collfiles/20161213/20161213091739195.png)
其中為歸一化吞吐量(注:本文討論的吞吐量都是系統的吞吐量,沒有具體到某一個節點的吞吐量上,而是所有節點整體的吞吐量),分子分母都是一個數學期望,實際上就是平均時間。分母代表的是Generic slot(這個后面我們說明,與DCF中的標準slot時間存在區別),分子定義的是在這個Generic slot內,傳輸數據的時間。不嚴格的說,其物理意義和我們之前一篇描述的定義是一樣的。
Generic Slot:這個是一個隨機選擇的時間,其與802.11中DCF的具體接入機制有關。一般意義上,我們理解其物理意義就是Backoff counter倒數1次的時間間隔。
![\](/uploadfile/Collfiles/20161213/20161213091741205.png)
如上圖為Generic slot的3種可能取值。其中代表協議中的slot時間(比如802.11g中的9μs),
為成功傳輸所花費的總時間,
為碰撞一次所花費的總時間。
為至少有一個節點準備發送的概率,
為成功傳輸的概率(實際上理解成只有1個節點傳輸的概率,如果有多個那么就會造成沖突)。我們進一步闡述如下:
![\sigma](http://pic.kanwencang.com/p/tupian/201612/20161213091741206.png)
![1-P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742212.png)
![\sigma](http://pic.kanwencang.com/p/tupian/201612/20161213091741206.png)
若節點經過這個slot,backoff counter正好倒數到0,那么節點就會發送數據(即概率
![P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742210.png)
情況2 -
![T_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091741207.png)
![T_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091741207.png)
![P_{tr}*P_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091742213.png)
![T_{c}](http://pic.kanwencang.com/p/tupian/201612/20161213091741208.png)
![T_{c}](http://pic.kanwencang.com/p/tupian/201612/20161213091741208.png)
![P_{tr}*\left( 1-P_{s} \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091742214.png)
具體的
![T_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091741207.png)
![T_{c}](http://pic.kanwencang.com/p/tupian/201612/20161213091741208.png)
Basic模式:該模式的簡單流程如下圖:
![\](/uploadfile/Collfiles/20161213/20161213091742215.png)
其中和
的時間如下:
![\](/uploadfile/Collfiles/20161213/20161213091742216.png)
其中代表物理層頭部的傳輸時間,
和
都是協議給定的幀間間隔,
為協議給定的ACK幀的傳輸時間,
為電磁波傳播延遲(DATA-ACK過程由于是一來一回,所以傳播延遲是兩個)。
為payload的期望,代表數據包(MSDU)傳輸時間的均值。
代表的是發生沖突時,沖突中較長數據幀的均值,因為沖突只有在較長數據幀發送完之后,信道才被釋放。
RTS/CTS模式:該模式的簡單流程如下圖:
其中和
的時間如下:
![\](/uploadfile/Collfiles/20161213/20161213091743229.png)
其中和
代表其數據幀對應的傳輸時間。上圖中我們可以發現,RTS/CTS模式下,雖然傳輸時間是相應增加了(由于引入了RTS/CTS握手),但是沖突損耗是減少了。該設計能夠保證,這個在節點較多的情況下(即碰撞概率較大的情況下),RTS/CTS的性能受到較小的影響。
本文為了簡化,我們直接假設所有節點的數據包大小是一個定值,從而就等于傳輸這個數據包所花費的時間,且
。(在bianchi原文中沒有進行該假設,只是為了簡化本文的敘述,所以我們做數據包大小為定值的假設)
綜合以上的Generic slot和其對應時間,我們可以具體給出歸一化吞吐量的具體計算公式。
![\](/uploadfile/Collfiles/20161213/20161213091743240.png)
其中分母就是Generic slot的均值(即事件概率乘以其對應時間),分子為在一個Generic內,成功傳輸數據(MSDU)部分的時間。
傳輸概率(![P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742210.png)
![P_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091742211.png)
前面我們給出了歸一化吞吐量的表達式,該式中,由于
和
中的參數都是協議給定。為了計算吞吐量,我們只要求出概率
和
就行了。
![\](/uploadfile/Collfiles/20161213/20161213091743241.png)
![P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742210.png)
![\tau](http://pic.kanwencang.com/p/tupian/201612/20161213091743245.png)
![n](http://pic.kanwencang.com/p/tupian/201612/20161213091743247.png)
![P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742210.png)
![\left( 1-\tau \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091744250.png)
![1](http://pic.kanwencang.com/p/tupian/201612/20161213091744253.png)
![\left ( 1-\tau \right )^{n}](http://pic.kanwencang.com/p/tupian/201612/20161213091744257.png)
![1-\left ( 1-\tau \right )^{n}](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744253.png-%5Cleft+%28+1-%5Ctau++%5Cright+%29%5E%7Bn%7D)
![1](http://pic.kanwencang.com/p/tupian/201612/20161213091744253.png)
![\](/uploadfile/Collfiles/20161213/20161213091744261.png)
![P_{s}](http://pic.kanwencang.com/p/tupian/201612/20161213091742211.png)
![P_{tr}](http://pic.kanwencang.com/p/tupian/201612/20161213091742210.png)
![\tau^{1} * \left( 1-\tau \right) ^{n-1}](http://pic.kanwencang.com/p/tupian/201612/20161213091744263.png)
![\tau^{1}](http://pic.kanwencang.com/p/tupian/201612/20161213091744265.png)
![1](http://pic.kanwencang.com/p/tupian/201612/20161213091744253.png)
![\left( 1-\tau \right) ^{n-1}](http://pic.kanwencang.com/p/tupian/201612/20161213091744266.png)
![n-1](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091743247.png-1)
![n](http://pic.kanwencang.com/p/tupian/201612/20161213091743247.png)
![n](http://pic.kanwencang.com/p/tupian/201612/20161213091743247.png)
![n](http://pic.kanwencang.com/p/tupian/201612/20161213091743247.png)
上面我們介紹了和
的具體表達式,其中
是節點數目,所以一般也是給定的。所以最后剩下來的參數就是
了,我們需要對該參數進行分析。
![\tau](http://pic.kanwencang.com/p/tupian/201612/20161213091744269.png)
![p](http://pic.kanwencang.com/p/tupian/201612/20161213091744270.png)
通過以上分析,我們最終只要知道每一個節點的發送概率就可以求出吞吐量了,但是這個
就沒有那么好求了,其主要是源于802.11協議中,發送和沖突是互相影響的。發送概率
中包含了沖突概率
,而沖突概率
中也包含了發送概率
。
以下我們描述一下bianchi模型中具體分析的過程。bianchi模型實際上采用了一個二維的Markov chain,具體如下圖:
![\](/uploadfile/Collfiles/20161213/20161213091745271.png)
我們先簡單說明下其中的一些參數,然后在具體討論。每一橫行代表的是一次Backoff過程,每一縱行代表的是一次二進制指數增加CW窗口大小的過程。以第1行為例說明如下:
狀態
![\left( 0,W_{0}-1 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091745272.png)
![0](http://pic.kanwencang.com/p/tupian/201612/20161213091745274.png)
![W_{0}-1](http://pic.kanwencang.com/p/tupian/201612/20161213091745275.png)
![W_{0}-1](http://pic.kanwencang.com/p/tupian/201612/20161213091745275.png)
![CW-1](http://pic.kanwencang.com/p/tupian/201612/20161213091745276.png)
![W_{0}](http://pic.kanwencang.com/p/tupian/201612/20161213091745278.png)
狀態
![\left( 0,W_{0}-1 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091745272.png)
![\left( 0,W_{0}-2 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091745279.png)
![1](http://pic.kanwencang.com/p/tupian/201612/20161213091744253.png)
當Backoff counter倒數至0后,即轉移至狀態
![\left( 0,0 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091745280.png)
若發送成功(即概率
![1-p](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744253.png-p+)
![1/ W_{0}](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744253.png%2F+W_%7B0%7D+)
![\left( 0,1 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091746283.png)
![\left( 1-p \right) / W_{0}](http://pic.kanwencang.com/p/tupian/201612/20161213091746284.png)
若發送失敗(即概率
![p](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744270.png+)
![W_{0}](http://pic.kanwencang.com/p/tupian/201612/20161213091745278.png)
![W_{k}](http://pic.kanwencang.com/p/tupian/201612/20161213091746287.png)
![k=1](http://pic.kanwencang.com/p/tupian/201612/20161213091746291.png)
![W_{1}](http://pic.kanwencang.com/p/tupian/201612/20161213091746296.png)
![1/ W_{1}](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744253.png%2F+W_%7B1%7D+)
![\left( 1,1 \right)](http://pic.kanwencang.com/p/tupian/201612/20161213091746304.png)
![p / W_{1}](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744270.png++%2F+W_%7B1%7D+)
在Bianchi模型中,假設是沒有丟包過程的。而二進制指數回退并不是上限無窮的增加CW窗口,其有個最大次數
![m](http://pic.kanwencang.com/p/tupian/201612/20161213091746313.png)
![W_{m}](http://pic.kanwencang.com/p/tupian/201612/20161213091747314.png)
![p / W_{m}](http://www.2cto.com/uploadfile/Collfiles/20161213/20161213091744270.png++%2F+W_%7Bm%7D+)
更一般的我們用數學標識即是下面的式子:
下面我們先表示沖突概率
由于Bianchi模型中,已經假設節點之間的沖突過程是相對獨立的。假設我現在是某個節點,我已經處于發送狀態,所以剩余的個節點都不能夠發送(即概率
),如果有任意一個也處于發送狀態(即概率
),那么就會發生沖突。
最終我們考慮發送概率,參考下圖
協議規定,如果節點Backoff counter倒數到0,那么就可以進行發送。由于節點可能處在不同的backoff狀態(即初次傳輸,重傳1次,重傳2次等等),所以我們需要對轉移到這些狀態的概率做一個累加,即:
![\](/uploadfile/Collfiles/20161213/20161213091747327.png)
其中代表CW最多增加
次,
是個index,代表第
次Backoff過程,
代表狀態,
代表第
次Backoff counter倒數到0。因為每一次發送完之后,節點都必須要轉移到狀態
。所以我們可以直接計算轉移到狀態
的條件概率。即如果發送沒有發生沖突(即概率
),狀態轉移至
的概率(即
)。
最后我們表示出狀態時候的穩態概率即可
![\](/uploadfile/Collfiles/20161213/20161213091748335.png)
這個概率的物理意義有些繁雜,我們就不進行展開了,最終我們可以計算發送概率為:
從而獲得以下的一個聯立的方程(其中上式的和下面的聯立表達還有一個參數帶入的步驟,具體可以參考論文,這里直接跳躍到下面的結果了):
我們看到上面的表達中,表達式中包含
,同樣
中表達式也包含
。故我們需要采用fix-point的方法,才可以對其進行求解。具體求解方法我們在下一篇文章中進行討論。
以下我們直接參考Bianchi論文中給出的結果,大致說明一下:
上圖橫軸代表節點數目(節點數目從0到50),縱軸代表歸一化吞吐量(即范圍從0~1,圖中是從0.5開始繪制)。圖中一共繪制5組結果:
![\triangle](http://pic.kanwencang.com/p/tupian/201612/20161213091748339.png)
![\square](http://pic.kanwencang.com/p/tupian/201612/20161213091748340.png)
![\circ](http://pic.kanwencang.com/p/tupian/201612/20161213091748341.png)
從這三組值的對比上可以看出,節點數越多,Basic模式的性能越差。其基本原因就是沖突概率的增加。通過增加CW窗口大小的方法,能夠一定程度上避免沖突問題,所以能夠緩解隨著節點數增加,而造成的吞吐量下降。初始設置更大的CW比增加回退次數要更有效一些。
![\ast](http://pic.kanwencang.com/p/tupian/201612/20161213091748342.png)
![\diamond](http://pic.kanwencang.com/p/tupian/201612/20161213091748343.png)
在RTS/CTS模式下,可以發現其吞吐量相比Basic模式,能夠在節點數較多的時候,受到較小的影響,其基本原因在于沖突損耗上。Basic模式沖突一次是損失了一個數據幀的時間,而RTS/CTS模式下,沖突一次僅僅損耗了一個RTS時間。同時我們還可以看到,由于沖突損失較小的情況下,我們沒有必要設置更大的CW窗口大小,因為更大的窗口大小就意味著更多的回退次數,從而消耗更多的時間。
歡迎轉載:http://www.kanwencang.com/bangong/20161217/72748.html
文章列表