林國彪
(廣州海格通信集團股份有限公司,廣東 廣州 510000)
本文為了解決隱接收終端的問題,改進CSMA/CD協議,采用兩個信道的方式解決隱接收終端的問題,并應用OPNET Modeler計算機建模仿真,分析其性能。根據OPNET仿真軟件特點,仿真模型需要建立網絡模型、節點模型以及進程模型。網絡模型是指通信節點組成的通信網絡,節點模型是指通信節點本身的通信協議建模,進程模型是指具體的改進CSMA/CD接入協議流程。
改進型CSMA/CD接入仿真系統的網絡模型根據實際網絡構建,設計一個背景網絡拓撲為空的場景,網絡范圍(平原模型)的大小為2 km×2 km。如圖1所示,業務建模采用OPNET自有的模型,應用定義組件和配置定義組件來配置仿真過程中的業務類型,如視頻、網頁以及話音等業務[1]。本文采用UDP的單向業務進行測試,移動配置組件用來配置節點在網絡范圍內移動,接收范圍配置組件用來配置節點信號發射的距離,實現8個節點的網絡模型。

圖1 網絡模型
節點模型代表實際的設備,由若干的模塊組成。本方案中根據OSI架構簡化協議,選擇了應用層模塊、UDP層模塊、IP層模塊、自定義的MAC層模塊以及收發信機模塊[2]。其中,應用層模塊完成報文的產生及端到端報文的統計任務,UDP層模塊完成大報文的拆分和端到端的重傳任務,IP層模塊完成尋路任務,MAC層模塊完成信道接入任務,承載改進型CSMA/CD接入協議,發射機和接收機完成數據發送和接收任務。模塊和模塊之間通過包流或狀態線相連,通過數據流進行通信。
在本方案中自定義改進型CSMA/CD接入協議模塊,建鏈信息和業務信息在一個信道上,建鏈確認回復信息和數據確認回復信息在另外一個信道,當信道中有業務傳輸時,節點準備建立鏈路發送數據,可以在建鏈信道上回復信道忙,防止節點一直發送建鏈信息。例如,A→B→C→D組成3跳網絡,當B節點與C節點通信時,D節點無法收到B節點的信息,如果D節點準備發送業務,首先要建立鏈路。改進型CSMA/CD接入機制的通信信道和建鏈信道有兩個,當B節點與C節點通信時,D節點發送建鏈信息,C節點通過建鏈信道回復是否可以建鏈以及信道是否空閑,避免D節點一直發送建鏈信息,通過兩個信道解決隱接收終端的問題。
信道檢測的規則為當一個節點檢測到信道空閑時,先退避n跳,退避過程中持續檢測信道,如果檢測到信道忙,則退出退避狀態,繼續檢測信道狀態[3-5]。如果退避n跳結束后仍檢測信道為空閑狀態,則準備發送數據。報文發送數據期間的時頻圖如圖2所示。

圖2 發送數據時頻圖
圖2中,F0為發送建鏈頻率和業務頻率,F1為回復建鏈頻率和數據確認回復頻率。第0個時隙內檢測到信道空閑后,第1個時隙在F0上發送建鏈呼叫信息,然后在第2個時隙切換到F1信道。在F1頻率上等待接收建鏈呼叫確認信息,收到該信息后,在第3個時隙切換到F0頻率開始傳輸數據。傳輸數據需要N個時隙,它與參數“Max Send Slots”和數據所在子隊列的長度以及此時的數據傳輸速率有關。傳輸數據完成后,第N+3個時隙在F1頻率信道上等待接收數據確認信息,第N+4個時隙為一個空閑時隙。至此,本次數據傳輸周期結束,并在第N+5個時隙重新切換到建鏈信道上繼續信道的探測[6]。
退避階段,退避時間與退避窗口、鄰居節點數、退避系數以及數據優先級有關,對于時隙CSMA,退避窗口的最小基本單位是時隙,退避窗口CW是時隙的整數倍。當有業務時,每個接入時隙均監聽信道是否空閑,若空閑則首次啟動退避,退避時間為BT(i),退避完成后在下個業務時隙發業務RTS,若信道忙,則在下個時隙繼續監聽。退避時間算法為:

式中,i是退避次數;初始Coef(0)=1;CW(0)=1;NbNum(0)=0。
退避狀態下,完成一次退避BT(i)值減1,退避結束馬上發建鏈信息,成功完成一次包傳輸,退避系數Coef和退避窗口均置為初始值(Coef(0)=1,CW(0)=1),若發生碰撞(沒有收到回復)則啟動下次退避,退避系數Coef(i+1)=Coef(i)×1.2,若持續碰撞,退避次數達到最大退避時間Mt,放棄該包業務。發起方沒有收到建鏈信息回復,認為業務失敗,啟動退避,發起方沒有收到數據確認回復,啟動重傳,重新監聽。
本方案中,改進型CSMA/CD進程模塊用于描述協議和分布式的算法,用圖形的方式描述狀態機。進程模塊通過事件的方式進行驅動,當進程模塊遭遇到某個事件時,模塊中的進程就應該根據事件和當時的運行狀態做出相應的響應。事件的行為是由中斷類型和中斷優先級等信息描述,下面介紹改進型CSMA/CD進程模塊的事件響應和狀態機[7-9]。
改進型CSMA/CD進程模塊需要處理的事件由IP模塊的流中斷、來自接收信道機的流中斷以及新時隙開始的定時器中斷組成,具體的事件響應列表如表1所示。

表1 改進型CSMA/CD進程模塊事件響應列表
改進型CSMA/CD模塊使用的進程狀態機如圖3所示。其中,在初始化狀態初始化變量,注冊統計量,在等待狀態等待數據時隙的到來,然后檢測此時信道是否空閑,如果信道閑,則進入退避狀態進行退避,退避完成后,發送方發送呼叫建鏈包,切頻處于接收建鏈回復狀態,如果時隙到達沒有收到建鏈回復,則返回到等待狀態。接收方收到建鏈信息后,切頻處于發送建鏈回復狀態,發送方收到建鏈回復信息后,切頻發送數據,接收方接收數據。發送方數據發送完成后,等待數據確認回復信息。數據確認到來后,下一個時隙空閑一個時隙,然后重新回到等待狀態,本次數據傳輸結束[10]。

圖3 改進型CSMA/CD模塊使用的進程狀態機
仿真網絡為8個節點,且節點在移動過程中通信,網絡范圍為2 km×2 km,通信半徑為500 m,每個節點都發數據。仿真對象為CSMA/CD協議和改進型CSMA/CD協議,對兩種通信協議進行網絡吞吐量進行仿真,仿真結果如圖4所示。

圖4 8個節點場景平均吞吐量對比
由圖4可以看出,改進型CSMA/CD在8個節點的網絡規模下,平均吞吐量要高于CSMA/CD協議,這是因為CSMA/CD協議在節點多的情況下,有些發送數據的節點無法判斷信道是否空閑,一直發數據導致信道利用率下降,平均吞吐量減少。
本文根據CSMA/CD協議隱接收終端的問題,提出兩個信道的改進CSMA/CD協議,對協議的進行了詳細介紹,并采用了OPNET Modeler層次化的建模機制,分別從網絡模型、節點模型和進程模型分析了建模過程,最后通過仿真對比了CSMA/CD協議和改進型CSMA/CD協議的性能,改進后的CSMA/CD協議在規避隱接收終端的情況下,網絡平均吞吐量變大。