国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于NS-3 網(wǎng)絡(luò)模擬器的TDMA 協(xié)議仿真實(shí)現(xiàn)

2021-12-07 07:45:50王心源李雪妍
電子設(shè)計(jì)工程 2021年23期
關(guān)鍵詞:網(wǎng)絡(luò)設(shè)備隊(duì)列數(shù)據(jù)包

王心源,程 鵬,吳 斌,李雪妍

(1.中國科學(xué)院微電子研究所,北京 100029;2.中國科學(xué)院大學(xué),北京 100049)

WiFi是IEEE定義的一個(gè)無線網(wǎng)絡(luò)通信的工業(yè)標(biāo)準(zhǔn)(IEEE 802.11)[1],WiFi 是一種短程無線傳輸技術(shù)[2]。無線局域網(wǎng)(Wireless Local Area Networks,WLAN)技術(shù)或WiFi技術(shù)由于技術(shù)成熟、易于部署以及成本較低被廣泛地應(yīng)用于短距離場景如家庭場景。但在某些遠(yuǎn)距離特殊場景下不便于有線通信設(shè)備的安裝和部署,技術(shù)人員也渴望使用WiFi技術(shù)。增大WiFi的發(fā)射功率可以顯著增加傳輸距離,在傳輸功率方面滿足了遠(yuǎn)距離傳輸?shù)囊髸r(shí)仍存在一些問題,如隱藏節(jié)點(diǎn)等。這些問題的根源在于WiFi 所采用的媒體訪問控制(Media Access Control,MAC) 技術(shù)為載波監(jiān)聽多路訪問/沖突避免(Carrier Sense Multiple,CSMA/CA),CSMA 基于競爭的設(shè)計(jì)原理導(dǎo)致了特定場景性能低下,且無法避免[3]?;跁r(shí)分多址(Time Division Multiple Access,TDMA)的MAC 協(xié)議對共享的媒介在時(shí)間上進(jìn)行精細(xì)的劃分,各個(gè)節(jié)點(diǎn)只在自己歸屬的時(shí)隙內(nèi)發(fā)送數(shù)據(jù),實(shí)現(xiàn)了無競爭機(jī)制,避免數(shù)據(jù)競爭信道時(shí)產(chǎn)生碰撞,很好地解決了遠(yuǎn)距離傳輸下的隱藏節(jié)點(diǎn)問題[4]。在當(dāng)前WiFi商用硬件設(shè)備上對TDMA模式支持較少。文中在開源網(wǎng)絡(luò)仿真器NS-3中基于WiFi組件實(shí)現(xiàn)了TDMA 的MAC協(xié)議仿真。

1 TDMA協(xié)議

1.1 TDMA協(xié)議簡介

時(shí)分多址是一種無爭用的介質(zhì)訪問協(xié)議。網(wǎng)絡(luò)中所有節(jié)點(diǎn)共享的信道帶寬被劃分為時(shí)間槽,每一個(gè)節(jié)點(diǎn)循環(huán)使用時(shí)間槽。各節(jié)點(diǎn)只在其分配的時(shí)間段內(nèi)傳輸數(shù)據(jù),傳輸槽通常是固定的時(shí)間間隔[5-6]。

每個(gè)傳輸槽之間插入保護(hù)間隔,以便傳輸不重疊。保護(hù)間隔的值通常是一個(gè)數(shù)據(jù)包傳輸?shù)街付ǖ膫鬏敺秶枰臅r(shí)間。在這個(gè)簡單的時(shí)分多址模型中,假設(shè)節(jié)點(diǎn)的時(shí)鐘是同步的。

1.2 隱藏節(jié)點(diǎn)問題

在多節(jié)點(diǎn)網(wǎng)絡(luò)中,許多沖突都是由隱藏節(jié)點(diǎn)問題引起的。如圖1 所示,AP 為接入點(diǎn),STA1 和STA2為兩個(gè)站點(diǎn)。在家庭場景中,STA1 和STA2 的距離較近,它們可以通過載波偵聽感受到彼此的存在,即STA1 或STA2 要發(fā)送數(shù)據(jù)包時(shí)會先檢測載波是否正在被使用,如果被使用會進(jìn)行隨機(jī)退避,此時(shí)不會發(fā)生沖突。一旦STA1和STA2均距離AP較遠(yuǎn)甚至為傳輸極限距離時(shí),STA1 和STA2 將無法感受到彼此的存在,對于站點(diǎn)STA1 和STA2 來說載波是空閑的。若此時(shí)兩個(gè)站點(diǎn)同時(shí)向AP 發(fā)送數(shù)據(jù),那么將會產(chǎn)生沖突導(dǎo)致數(shù)據(jù)的傳輸錯(cuò)誤或失敗[7]。

圖1 隱藏節(jié)點(diǎn)問題

當(dāng)兩個(gè)不在彼此傳輸范圍內(nèi)的節(jié)點(diǎn)向同一接收器發(fā)送數(shù)據(jù)時(shí),來自兩個(gè)發(fā)射器的數(shù)據(jù)包在接收器上發(fā)生碰撞。這就是所謂的隱藏節(jié)點(diǎn)問題。

IEEE 802.11 是一種基于爭用的MAC 協(xié)議,通過引入無競爭的TDMA協(xié)議可以有效地解決此類問題。

2 NS-3中實(shí)現(xiàn)TDMA協(xié)議

2.1 NS-3仿真原理

NS-3 將連續(xù)變化的網(wǎng)絡(luò)過程按照時(shí)間順序分割成一系列的離散事件[8]。完整的NS-3 網(wǎng)絡(luò)模擬過程就是按時(shí)間先后執(zhí)行這些離散事件,如圖2 所示。

圖2 發(fā)送過程從連續(xù)到離散的過程

一個(gè)分組從節(jié)點(diǎn)0到節(jié)點(diǎn)1,其步驟可總結(jié)如下:

1)T1時(shí)刻,節(jié)點(diǎn)0 開始向信道中發(fā)送分組的第一個(gè)字節(jié),這時(shí)節(jié)點(diǎn)0 的網(wǎng)絡(luò)設(shè)備被占用,無法發(fā)送其他分組;

2)T2時(shí)刻,分組的最后一個(gè)字節(jié)發(fā)送完畢。網(wǎng)絡(luò)設(shè)備被釋放。T1到T2時(shí)刻這段時(shí)間就是分組的傳輸延時(shí);

3)T3時(shí)刻,分組被節(jié)點(diǎn)1 接收,NS-3 假設(shè)節(jié)點(diǎn)沒有傳輸延遲,所有到達(dá)其網(wǎng)絡(luò)設(shè)備的分組被立即接收。T2到T3這段時(shí)間即使分組的傳播延遲。

物理網(wǎng)絡(luò)中所有分組發(fā)送過程都是連續(xù)的,NS-3 將這個(gè)連續(xù)過程抽象為3 個(gè)離散事件,也就是3 個(gè)函數(shù)[9]。

T1時(shí)刻的分組發(fā)送事件,節(jié)點(diǎn)0 在T1開始發(fā)送分組,與物理網(wǎng)絡(luò)不同的是,節(jié)點(diǎn)0 一次性將整個(gè)分組發(fā)送給信道的C++對象,通過鎖定網(wǎng)絡(luò)設(shè)備,使其無法發(fā)送其他分組(后續(xù)分組將進(jìn)入到網(wǎng)絡(luò)設(shè)備對象的緩存中),直到T2時(shí)刻新的事件發(fā)生,即網(wǎng)絡(luò)設(shè)備解鎖。

通過在T1時(shí)刻鎖定網(wǎng)絡(luò)設(shè)備和T2時(shí)刻解鎖網(wǎng)絡(luò)設(shè)備兩件離散時(shí)間模擬出一個(gè)連續(xù)的分組發(fā)送過程。同樣模擬分組在信道中的傳輸過程,信道在T1時(shí)刻計(jì)劃一個(gè)新的事件,在T3時(shí)刻將分組一次性的轉(zhuǎn)發(fā)給目標(biāo)節(jié)點(diǎn)1 網(wǎng)絡(luò)設(shè)備的C++對象[10]。

通過在腳本中設(shè)置分組大小、傳輸速率和傳播延遲的屬性,可以模擬不同的網(wǎng)絡(luò)仿真。

2.2 TDMA相關(guān)類的實(shí)現(xiàn)

在NS-3 中將節(jié)點(diǎn)(node)、設(shè)備(device)、協(xié)議層(MAC)、物理層(PHY)以及信道(Channel)均抽象成一個(gè)個(gè)C++的類[11]。該文通過在NS-3 仿真平臺中加入TDMA 相關(guān)的類TdmaMac 類、TdmaQueue 類以及TdmaController 類,實(shí)現(xiàn)了簡單的TDMA 協(xié)議。

2.2.1 TdmaMac

上層的數(shù)據(jù)包(packe)由IP 層傳送到TdmaMac中,TdmaMac 在收到數(shù)據(jù)包后,調(diào)用Enqueue 函數(shù)將數(shù)據(jù)包放入隊(duì)列并等待。等待到屬于該節(jié)點(diǎn)的傳輸時(shí)隙到來,TdmaMac 通過Get QueueState 函數(shù)查詢TdmaQueue 中的入隊(duì)數(shù)據(jù)包packet,然后將數(shù)據(jù)包packet 循環(huán)地從隊(duì)列中取出,并附加上MAC 頭和尾,執(zhí)行函數(shù)Start Transmission 將數(shù)據(jù)包發(fā)送給SimpleWireless Channel 類。同時(shí)在傳輸開始之前TdmaMac 中還需要根據(jù)packet 的大小(size)計(jì)算出傳輸所需的時(shí)間,把所有需要傳輸?shù)膒acket 的時(shí)間總和和TdmaController 分配給該節(jié)點(diǎn)的傳輸時(shí)間進(jìn)行比較,如果在該節(jié)點(diǎn)回合下不能再傳輸一個(gè)packet,則終止傳輸循環(huán),即使還剩余一定的時(shí)間。

2.2.2 TdmaQueue

TdmaQueue 隊(duì)列主要實(shí)現(xiàn)丟包策略。查詢隊(duì)列的state 為full 時(shí),將此時(shí)上層發(fā)送的packet 丟掉。TdmaQueue 中主要的兩個(gè)屬性變量為QueueLength和QueueTime。QueueLength 變量為隊(duì)列最大長度,QueueTime 為隊(duì)列最大延時(shí)。當(dāng)隊(duì)列中數(shù)據(jù)包數(shù)達(dá)到QueueLength 數(shù)量時(shí),后邊得到的數(shù)據(jù)包均丟掉。QueueTime 設(shè)定的時(shí)間為數(shù)據(jù)packet 在隊(duì)列中能夠存儲的最長時(shí)間,當(dāng)數(shù)據(jù)包在隊(duì)列中存儲的時(shí)間大于QueueTime 時(shí),數(shù)據(jù)包packet 同樣被丟掉。TdmaQueue 實(shí)現(xiàn)了以上兩種根據(jù)隊(duì)列長度以及數(shù)據(jù)包存儲時(shí)間的丟包策略。

2.2.3 TdmaController

TdmaController 負(fù)責(zé)管理和計(jì)劃實(shí)現(xiàn)TDMA 協(xié)議的控制,TdmaController 類初始化TDMA 傳輸參數(shù),授權(quán)節(jié)點(diǎn)進(jìn)行傳輸。在仿真開始前將分配給傳輸?shù)牟宀蹟?shù)量和插槽持續(xù)時(shí)間分配給每一個(gè)節(jié)點(diǎn)[12-14]。仿真開始后,仿真程序通過MAC 指針列表中調(diào)用TdmaMac,并指示節(jié)點(diǎn)它可以傳輸一個(gè)特定的SlotTime。當(dāng)傳輸完成后,等待一個(gè)GuardTime,然后開始下一個(gè)節(jié)點(diǎn),從列表中調(diào)用下一個(gè)節(jié)點(diǎn)。一旦所有節(jié)點(diǎn)全部遍歷完成,等待一個(gè)InterFrame Time 時(shí)間再開始下一個(gè)周期。

TdmaController 函數(shù)為Tdmacontroller 起始執(zhí)行函數(shù),Start 函數(shù)中首先啟動controller。Start 函數(shù)調(diào)用仿真器simulator 執(zhí)行StartTdmaSessions 函數(shù)。Start TdmaSessions 函數(shù)在第0 秒執(zhí)行ScheduleTdma Session 函數(shù)。ScheduleTdmaSession 函數(shù)中創(chuàng)建了一個(gè)mac 的map。在每一個(gè)slot 中不斷地循環(huán)執(zhí)行ScheduleTdmaSession 函數(shù),Start 函數(shù)調(diào)用關(guān)系如圖3 所示。

圖3 Start函數(shù)調(diào)用關(guān)系

ScheduleTdmaSession 函數(shù)通過調(diào)用 Tdma CentralMac::StartTransmission 函數(shù),不斷地調(diào)用SendPacketDown 函數(shù)將packet 傳遞下去。Send PacketDown 函數(shù)調(diào)用lowmac 層的StartTransmission函數(shù)最終將packet傳輸出去進(jìn)入到信道中[15-17]。

函數(shù) TdmaController::CalculateTxTime 調(diào)用CalculateBytesTxTime 計(jì)算packet 的TX 時(shí)間,以供TdmaMac::StartTransmission 使用,判斷剩余packet 是否能在slot時(shí)間內(nèi)傳輸完成。

圖4 傳輸函數(shù)執(zhí)行過程

TdmaMac::StartTransmission 執(zhí)行后,TdmaCon troller 先對packet 的傳輸時(shí)間進(jìn)行計(jì)算得到packetTransmissionTime,然后將其與totalTransmi ssionSlot 進(jìn)行比較。

3 TDMA協(xié)議仿真測試

該系統(tǒng)測試TDMA 性能采用一個(gè)接入點(diǎn),4 個(gè)客戶端的應(yīng)用場景,仿真參數(shù)設(shè)置如表1 所示。4 個(gè)客戶端STA1、STA2、STA3、STA4 按時(shí)隙順序分配,且時(shí)隙大小相同,每個(gè)客戶端均占用一個(gè)slottime 進(jìn)行輪詢。

表1 仿真參數(shù)設(shè)置

圖5 TDMA仿真拓?fù)?/p>

通過配置上層的應(yīng)用產(chǎn)生packet 的速率以及分別設(shè)置物理層的傳輸速率進(jìn)行吞吐率測試,吞吐率仿真結(jié)果如表2 所示。

表2 吞吐率仿真結(jié)果

4 結(jié)論

文中對WiFi 設(shè)備在特定場景下應(yīng)用的缺點(diǎn)進(jìn)行了簡要分析,簡單介紹了隱藏節(jié)點(diǎn)問題的定義,其根本原因來自協(xié)議的競爭機(jī)制,因此提出使用公平接入的TDMA 協(xié)議。同時(shí)在NS-3 開源仿真器中增加了相關(guān)模塊,Tdmamac 類,TdmaQueue 類 和Tdmacontroller 類,這3 類實(shí)現(xiàn)了基本TDMA 協(xié)議,并對其正確性進(jìn)行了驗(yàn)證。如有需要,可以在此基礎(chǔ)上添加TDMA 調(diào)度算法。

猜你喜歡
網(wǎng)絡(luò)設(shè)備隊(duì)列數(shù)據(jù)包
隊(duì)列里的小秘密
一種基于C# 的網(wǎng)絡(luò)設(shè)備自動化登錄工具的研制
基于多隊(duì)列切換的SDN擁塞控制*
軟件(2020年3期)2020-04-20 00:58:44
在隊(duì)列里
SmartSniff
豐田加速駛?cè)胱詣玉{駛隊(duì)列
數(shù)據(jù)中心唯“快”不破
基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
基于列車監(jiān)測網(wǎng)絡(luò)設(shè)備的射頻功放模塊設(shè)計(jì)
基于三層交換技術(shù)架構(gòu)數(shù)字化校園網(wǎng)絡(luò)設(shè)備的配置與管理
乌兰察布市| 高阳县| 滁州市| 怀化市| 柳江县| 万州区| 武隆县| 兴义市| 颍上县| 台南市| 白河县| 宜春市| 弥渡县| 巴彦淖尔市| 益阳市| 固安县| 汶上县| 惠水县| 青海省| 永修县| 茌平县| 临朐县| 南通市| 长宁区| 广水市| 安溪县| 阿荣旗| 轮台县| 河池市| 西城区| 衡阳县| 井陉县| 平远县| 阜新市| 西林县| 东乌珠穆沁旗| 西宁市| 阿坝| 宁武县| 武邑县| 永新县|