无线电模型
三種無線電模型的缺點:
1. RF Pipe Model
對應 Wiki:https://github.com/adjacentlink/emane/wiki/RF-Pipe-Model
1.1. 特點
射頻管道(RF Pipe)提供以下功能集,以支持各種無線電波形的仿真:
帶寬的數據/突發速率仿真(數據傳輸速率):在發送端(下游),射頻管道根據數據包大小和配置的數據速率在數據包之間應用延遲,以限制配置的數據傳輸速率。哪里,
分組傳輸之間的延遲在分組傳輸之后應用。
計算出的延遲被發送到仿真器物理層,并作為消息持續時間包含在公共 PHY 報頭中。
帶寬是每個節點的限制,而不是整個網絡的限制。
網絡延遲仿真:在發送端(下游),射頻管道將在數據包發送到物理層進行空中傳輸之前應用可配置的網絡延遲。網絡延遲計算如下: 網絡延遲=延遲+抖動。
關于延遲:
定義應用于每個傳輸數據包的額外固定延遲(秒)。
類型:float
運行狀態可修改:是
出現范圍:[1,1]
數值范圍:[0.000000,FLOAT_MAX]
默認值:0.000000
關于抖動:
定義應用于每個傳輸數據包的延遲抖動(秒)。基于 +/- 配置抖動值之間的均勻隨機分布,抖動被添加到配置延遲。
類型:float
運行狀態可修改:是
出現范圍:[1,1]
數值范圍:[0.000000,FLOAT_MAX]
默認值:0.000000
傳輸延遲仿真:在接收端(上游),射頻管道將計算并應用每個數據包的傳輸延遲,然后將其發送到堆棧。傳輸延遲計算如下:傳輸時延=消息持續時間+傳播延遲。
消息持續時間由發射機通過公共PHY報頭傳播來提供。延遲由物理層使用位置事件來計算,并作為每個分組控制信息的一部分來提供。
使用用戶定義的數據包完成率(PCR)曲線作為 SINR 函數。射頻管道不會施加任何額外的帶內干擾影響。因此,只有當物理層噪聲模式(noisemode)設置為帶外時,在 PCR 曲線文件中使用負 SINR 值才有效,以便將噪底提高到固有接收器靈敏度之上。
關于噪聲模式:
定義噪聲處理操作模式:無、全部、帶外或直通。
類型:string
運行狀態可修改:否
出現范圍:[1,1]
默認值:全部
正則表達式:^(none|all|outofband|passthrough)$
關于SINR:
SINR:信號與干擾加噪聲比 (Signal to Interference plus Noise Ratio)是指接收到的有用信號的強度與接收到的干擾信號(噪聲和干擾)的強度的比值;可以簡單的理解為“信噪比”。
1.2. 數據包完成率
射頻管道數據包完成率被指定為通過 XML 語言定義的曲線。曲線定義由一系列 SINR 值及其相應的接收概率組成。曲線定義必須包含至少兩個點,一個 SINR 代表POR = 0,一個 SINR 代表 POR = 100。當沒有找到精確的 SINR 匹配時,執行線性插值。
在曲線文件中指定數據包大小(<表> 屬性pktsize)將根據接收到的數據包大小調整 POR。當計算 POR 時,指定 pktsize 為0將忽略收到的數據包大小。
當指定非零 pktsize 時,POR 通過以下計算獲得:POR = POR0^(S1/S0)。
POR0 是根據給定 SINR 值的 PCR 曲線確定的 POR 值。S0 是曲線文件(pktsize)中指定的數據包大小。S1 是接收到的數據包大小。
仿真器提供以下默認的射頻管道 PCR 曲線定義。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pcr SYSTEM "file:///usr/share/emane/dtd/rfpipepcr.dtd"> <pcr><table pktsize="0"><row sinr="0.0" por="0"/><row sinr="0.5" por="2.5"/><row sinr="1.0" por="5"/><row sinr="1.5" por="7.5"/><row sinr="2.0" por="10"/><row sinr="2.5" por="12.5"/><row sinr="3.0" por="15"/><row sinr="3.5" por="17.5"/><row sinr="4.0" por="20"/><row sinr="4.5" por="22.5"/><row sinr="5.0" por="25"/><row sinr="5.5" por="27.5"/><row sinr="6.0" por="30"/><row sinr="6.5" por="32.5"/><row sinr="7.0" por="35"/><row sinr="7.5" por="37.5"/><row sinr="8.0" por="40"/><row sinr="8.5" por="42.5"/><row sinr="9.0" por="45"/><row sinr="9.5" por="47.5"/><row sinr="10.0" por="50"/><row sinr="10.5" por="52.5"/><row sinr="11.0" por="55"/><row sinr="11.5" por="57.5"/><row sinr="12.0" por="60"/><row sinr="12.5" por="62.5"/><row sinr="13.0" por="65"/><row sinr="13.5" por="67.5"/><row sinr="14.0" por="70"/><row sinr="14.5" por="72.5"/><row sinr="15.0" por="75"/><row sinr="15.5" por="77.5"/><row sinr="16.0" por="80"/><row sinr="16.5" por="82.5"/><row sinr="17.0" por="85"/><row sinr="17.5" por="87.5"/><row sinr="18.0" por="90"/><row sinr="18.5" por="92.5"/><row sinr="19.0" por="95"/><row sinr="19.5" por="97.5"/><row sinr="20.0" por="100"/></table> </pcr>上面的定義產生以下PCR曲線:
1.3. 配置參數
以下配置參數可用于定制層功能:
-
數據速率
以 bps 為單位定義傳輸數據速率。發射機使用數據速率來計算連續傳輸之間的傳輸延遲(數據包大小/數據速率)。- 類型:uint64
- 運行狀態可修改:是
- 出現范圍:[1,1]
- 數值范圍:[1,18446744073709551615]
- 默認值:1000000
-
延遲
定義應用于每個傳輸數據包的額外固定延遲(秒)。- 類型:float
- 運行狀態可修改:是
- 出現范圍:[1,1]
- 數值范圍:[0.000000,FLOAT_MAX]
- 默認值:0.000000
-
啟用混雜模式(enablepromiscuousmode)
定義是否啟用混雜模式。 如果啟用了混雜模式,則將通過接收檢查概率的所有接收到的數據包(是否打算給定節點)發送到傳輸的上游。- 類型:bool
- 運行狀態可修改:yes
- 出現范圍:[1,1]
- 數值范圍:[no,yes]
- 默認值:yes
-
流量可控(flowcontrolenable)
定義是否啟用流量控制。流量控制僅適用于虛擬傳輸,并且設置必須與虛擬傳輸配置中的設置相匹配。- 類型:bool
- 運行狀態可修改:no
- 出現范圍:[1,1]
- 數值范圍:[no,yes]
- 默認值:no
-
流控制令牌(flowcontroltokens)
定義無需刷新即可從虛擬傳輸中處理的最大流量控制令牌數(數據包傳輸單位)。任何給定時間可用令牌的數量與虛擬傳輸相協調,當令牌計數達到零時,不再傳輸數據包,導致應用程序套接字隊列備份。- 類型:uint16
- 運行狀態可修改:否
- 出現范圍:[1,1]
- 數值范圍:[0,65535]
- 默認值:10
-
抖動
定義應用于每個傳輸數據包的延遲抖動(秒)。基于 +/- 配置抖動值之間的均勻隨機分布,抖動被添加到配置延遲。- 類型:float
- 運行狀態可修改:是
- 出現范圍:[1,1]
- 數值范圍:[0.000000,FLOAT_MAX]
- 默認值:0.000000
-
鄰居刪除時間(neighbormetricdeletetime)
定義從鄰居表中刪除給定鄰居之前沒有接收到射頻信號的時間(秒)。- 類型:float
- 運行狀態可修改:是
- 出現范圍:[1,1]
- 數值范圍:[1.000000,3660.000000]
- 默認值: 60.000000
-
pcrcurveuri
定義 PCR 曲線文件的 URI。PCR 曲線文件包含作為信號干擾加噪聲比(SINR )函數的接收曲線概率。- 類型:字符串
- 運行狀態可修改:no
- 所需值:yes
- 出現范圍:[1,1]
-
radiometricenable
定義是否通過“無線電到路由器接口”(R2RI)報告無線電指標。- 類型:bool
- 運行狀態可修改:no
- 出現范圍:[1,1]
- 數值范圍:[no,yes]
- 默認值:否
-
radiometricreportinterval
定義支持 R2RI 功能的度量報告間隔(秒)。- 類型:float
- 運行狀態可修改:no
- 出現范圍:[1,1]
- 值范圍:[0.100000,60.000000]
- 默認值:1.000000
1.4. XML 示例
RF Pipe 配置使用兩個文件指定:
NEM定義文件將mac定義文件以及仿真器物理層配置和傳輸定義文件分組在一起。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nem SYSTEM "file:///usr/share/emane/dtd/nem.dtd"> <nem><transport definition="transvirtual.xml"/><mac definition="rfpipemac.xml"/><phy><param name="fixedantennagain" value="0.0"/> <!-- 固定天線增益:0 --><param name="fixedantennagainenable" value="on"/> <!-- 固定天線增益使能:開 --><param name="bandwidth" value="1M"/> <!-- 帶寬:1MHz --><param name="noisemode" value="none"/> <!-- 噪聲模式:帶外 --><param name="propagationmodel" value="precomputed"/> <!-- 傳播模型:預計算 --><param name="systemnoisefigure" value="4.0"/> <!-- 系統噪聲指數:4.0 --><param name="subid" value="2"/> <!-- 子id:2 --><param name="txpower" value="0.0"/> <!-- 發射機功率:0 --></phy> </nem>mac定義文件指定仿真器將加載的模型 DLL 和所需的模型配置。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mac SYSTEM "file:///usr/share/emane/dtd/mac.dtd"> <mac library="rfpipemaclayer"><param name="enablepromiscuousmode" value="off"/> <!-- 啟用混雜模式:關 --><param name="datarate" value="1M"/> <!-- 數據速率:1Mb/s --><param name="jitter" value="0"/> <!-- 抖動:0 --><param name="delay" value="0"/> <!-- 時延:0 --><param name="flowcontrolenable" value="off"/> <!-- 流量控制:關 --><param name="flowcontroltokens" value="10"/> <!-- 流量控制令牌:10 --><param name="pcrcurveuri" <!-- PCR曲線URL:路徑 -->value="file:///usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/> </mac>1.5. 統計數據
可以使用emanesh訪問以下統計信息。
| processedConfiguration | uint64 | yes | |
| processedDownstreamControl | uint64 | yes | |
| processedDownstreamPackets | uint64 | yes | |
| processedEvents | uint64 | yes | |
| processedTimedEvents | uint64 | yes | |
| processedUpstreamControl | uint64 | yes | |
| processedUpstreamPackets | uint64 | yes |
1.6. 統計表
可以使用emanesh訪問以下統計信息。
| BroadcastPacketAcceptTable0 | yes | 接受廣播數據包 |
| BroadcastPacketDropTable0 | yes | 按原因碼丟棄的廣播數據包 |
| EventReceptionTable | yes | 收到的事件計數 |
| NeighborMetricTable | no | 鄰居度量表 |
| NeighborStatusTable | no | 鄰居狀態表 |
| UnicastPacketAcceptTable0 | yes | 接受單播數據包 |
| UnicastPacketDropTable0 | yes | 單播數據包被原因碼丟棄 |
2. IEEE 802.11abg Model
對應 Wiki:https://github.com/adjacentlink/emane/wiki/IEEE-802.11abg-Model
2.1. 特點
IEEE 802.11abg 無線電模型提供了以下一組功能:
支持流量控制。
通過適當的時序支持以下波形模式和數據速率。
802.11b(DSS速率:1、2、5.5和11 Mbps)。
802.11a/g(OFDM速率:6、9、12、18、24、36、48和54 Mbps)。
802.11b/g(DSS 和 OFDM 速率)。
僅支持 DCF 通道訪問功能。不支持 PCF 和信標傳輸。
支持單播和廣播傳輸。 單播傳輸包括模擬控制消息(RTS/CTS)行為以及重試的能力,而無需實際傳輸控制消息或重新傳輸數據消息。 由于檢測到故障,單播仿真不會復制競爭窗口的指數增長。
支持Wi-Fi多媒體(WMM)功能。 初始實現支持對四個不同的流量類別(背景,盡力而為,視頻和語音)進行分類的能力,其中優先級較高的類別(語音和視頻)將首先得到服務。
支持作為 SINR 函數的用戶定義的數據包完成率曲線。
為每種受支持的802.11調制和數據速率組合提供了默認曲線。 默認曲線基于用于確定加性高斯白噪聲(AWGN)通道中的誤碼率(BER)的理論方程式。
IEEE 802.11abg無線電模型會根據檢測到的沖突在每個數據包的基礎上調整干擾,因此支持負SINR值,如默認曲線所示。
2.2. 數據包完成率
IEEE 802.11abg 數據包完成率被指定為通過 XML 定義的曲線。 曲線定義由一系列 SINR 值及其對應的接收概率組成。 曲線定義必須至少包含兩個點,其中一個 SINR 表示 POR = 0,一個SINR 表示 POR =100。當未找到精確的 SINR 匹配時,將執行線性插值。
在曲線文件中指定數據包大小 (<table> 屬性pktsize) 將根據接收到的數據包大小來調整POR。 將 pktsize 指定為 0會在計算 POR 時忽略接收的數據包大小。
當指定非零的 pktsize 時,使用以下計算獲得 POR:POR = POR0^(S1/S0)。
- POR0 是從 PCR 曲線確定的給定 SINR 值的 POR 值。
- S0 是曲線文件中指定的數據包大小(pktsize)。
- S1 是接收到的數據包大小。
仿真器提供以下默認PCR曲線定義。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pcr SYSTEM "file:///usr/share/emane/dtd/ieee80211pcr.dtd"> <pcr><table pktsize="128"><!-- 1Mpbs --><datarate index="1"><row sinr="-9.0" por="0.0"/><row sinr="-8.0" por="1.4"/><row sinr="-7.0" por="21.0"/><row sinr="-6.0" por="63.5"/><row sinr="-5.0" por="90.7"/><row sinr="-4.0" por="98.6"/><row sinr="-3.0" por="99.9"/><row sinr="-2.0" por="100.0"/></datarate><!-- 2Mpbs --><datarate index="2"><row sinr="-6.0" por="0"/><row sinr="-5.0" por="1.4"/><row sinr="-4.0" por="20.6"/><row sinr="-3.0" por="63.1"/><row sinr="-2.0" por="90.5"/><row sinr="-1.0" por="98.5"/><row sinr="0.0" por="99.9"/><row sinr="1.0" por="100.0"/></datarate><!-- 5.5Mpbs --><datarate index="3"><row sinr="-2.0" por="0.0"/><row sinr="-1.0" por="0.2"/><row sinr="0.0" por="9.1"/><row sinr="1.0" por="46.2"/><row sinr="2.0" por="82.8"/><row sinr="3.0" por="96.7"/><row sinr="4.0" por="99.6"/><row sinr="5.0" por="100.0"/></datarate><!-- 11Mpbs --><datarate index="4"><row sinr="1.0" por="0.0"/><row sinr="2.0" por="0.2"/><row sinr="3.0" por="8.9"/><row sinr="4.0" por="45.8"/><row sinr="5.0" por="82.5"/><row sinr="6.0" por="96.7"/><row sinr="7.0" por="99.6"/><row sinr="8.0" por="100.0"/></datarate><!-- 6Mpbs --><datarate index="5"><row sinr="-2.0" por="0.0"/><row sinr="-1.0" por="5.5"/><row sinr="0.0" por="39.8"/><row sinr="1.0" por="79.0"/><row sinr="2.0" por="96.0"/><row sinr="3.0" por="99.5"/><row sinr="4.0" por="100.0"/></datarate><!-- 9Mpbs --><datarate index="6"><row sinr="-1.0" por="0.0"/><row sinr="0.0" por="0.3"/><row sinr="1.0" por="10.5"/><row sinr="2.0" por="50.3"/><row sinr="3.0" por="84.9"/><row sinr="4.0" por="97.5"/><row sinr="5.0" por="99.7"/><row sinr="6.0" por="100.0"/></datarate><!-- 12Mpbs --><datarate index="7"><row sinr="3.0" por="0.0"/><row sinr="4.0" por="14.3"/><row sinr="5.0" por="55.2"/><row sinr="6.0" por="87.5"/><row sinr="7.0" por="97.8"/><row sinr="8.0" por="99.8"/><row sinr="9.0" por="100.0"/></datarate><!-- 18Mpbs --><datarate index="8"><row sinr="4.0" por="0.0"/><row sinr="5.0" por="1.7"/><row sinr="6.0" por="21.5"/><row sinr="7.0" por="65.0"/><row sinr="8.0" por="91.2"/><row sinr="9.0" por="98.7"/><row sinr="10.0" por="99.9"/><row sinr="11.0" por="100.0"/></datarate><!-- 24Mpbs --><datarate index="9"><row sinr="9.0" por="0.0"/><row sinr="10.0" por="2.2"/><row sinr="11.0" por="23.8"/><row sinr="12.0" por="64.4"/><row sinr="13.0" por="90.4"/><row sinr="14.0" por="98.4"/><row sinr="15.0" por="99.8"/><row sinr="16.0" por="100.0"/></datarate><!-- 36Mpbs --><datarate index="10"><row sinr="10.0" por="0.0"/><row sinr="11.0" por="0.1"/><row sinr="12.0" por="4.6"/><row sinr="13.0" por="32.4"/><row sinr="14.0" por="72.8"/><row sinr="15.0" por="93.4"/><row sinr="16.0" por="99.0"/><row sinr="17.0" por="99.9"/><row sinr="18.0" por="100.0"/></datarate><!-- 48Mpbs --><datarate index="11"><row sinr="16.0" por="0.0"/><row sinr="17.0" por="1.3"/><row sinr="18.0" por="15.8"/><row sinr="19.0" por="53.5"/><row sinr="20.0" por="84.9"/><row sinr="21.0" por="96.8"/><row sinr="22.0" por="99.6"/><row sinr="23.0" por="100.0"/></datarate><!-- 54Mpbs --><datarate index="12"><row sinr="17.0" por="0.0"/><row sinr="18.0" por="0.2"/><row sinr="19.0" por="5.7"/><row sinr="20.0" por="32.4"/><row sinr="21.0" por="71.3"/><row sinr="22.0" por="92.4"/><row sinr="23.0" por="99.9"/><row sinr="24.0" por="100.0"/></datarate></table> </pcr>上面的定義為 IEEE 802.11b(DSS)生成了以下PCR曲線:
上面的定義為 IEEE 802.11ag(OFDM)產生以下PCR曲線:
2.3. 配置參數
2.4. XML 示例
IEEE 802.11abg 配置使用兩個文件指定:
NEM 定義文件將 mac 定義文件以及仿真器物理層配置和傳輸定義文件分組在一起。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nem SYSTEM "file:///usr/share/emane/dtd/nem.dtd"> <nem><transport definition="transvirtual.xml"/><mac definition="ieee80211abgmac.xml"/><phy><param name="fixedantennagain" value="0.0"/><param name="fixedantennagainenable" value="on"/><param name="bandwidth" value="20M"/><param name="noisemode" value="none"/><param name="propagationmodel" value="precomputed"/><param name="systemnoisefigure" value="4.0"/><param name="subid" value="2"/><param name="txpower" value="0.0"/><param name="subid" value="1"/></phy> </nem>mac 定義文件指定仿真器將加載的模型 DLL 以及所需的模型配置。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mac SYSTEM "file:///usr/share/emane/dtd/mac.dtd"> <mac library="ieee80211abgmaclayer"><param name="mode" value="0"/><param name="enablepromiscuousmode" value="off"/><param name="distance" value="1000"/><param name="unicastrate" value="4"/><param name="multicastrate" value="1"/><param name="rtsthreshold" value="0"/><param name="pcrcurveuri"value="file:///usr/share/emane/xml/models/mac/ieee80211abg/ieee80211pcr.xml"/><param name="flowcontrolenable" value="off"/><param name="flowcontroltokens" value="10"/> </mac>2.5. 統計數據
可以使用emanesh訪問以下統計信息。
表格略。
2.6. 統計表
可以使用emanesh訪問以下統計信息。
表格略。
3. TDMA Model
對應 Wiki:https://github.com/adjacentlink/emane/wiki/TDMA-Model
3.1. 特點
TDMA 無線電模型實現了一個通用的時分多址方案,支持時分多址調度分發和使用事件實時更新。TDMA 無線電模式支持以下功能:
支持TDMA調度定義,包括時隙大小,時隙開銷,幀大小以及每個時隙數據速率,頻率,功率,服務等級和可選目的地。
支持優先級隊列,該隊列根據 DSCP 映射用戶流量。 出站消息根據時隙服務類隊列映射和從最高優先級到最低優先級的隊列搜索(必要時)從 FIFO 中出隊。
支持基于每個時隙數據速率的大型出站消息的分段和重組。
支持將較小的出站消息聚合成較大的無線消息。
支持流量控制。
支持作為 SINR 函數的用戶定義的數據包完成率曲線。
3.1.1. Queuing(排隊)
TDMA 模型將用戶流量分為四類,它們映射到四個隊列。 根據下游數據包優先級將流量分配給隊列。queue.depth 配置參數控制所有隊列的隊列深度。當在最大隊列深度的隊列上發生入隊操作時,所有隊列都將溢出,并丟棄最舊的數據包。被選擇丟棄的數據包將是最舊的數據包,其中由于分段而沒有傳輸該數據包的任何部分。如果隊列中的所有數據包都已傳輸了一部分,則最舊的數據包將被丟棄,無論分段狀態如何。
虛擬傳輸和原始傳輸使用 DSCP 作為下游數據包優先級。
| 0 | 0-7,24-31 | 0(lowest) |
| 1 | 8-23 | 1 |
| 2 | 32-47 | 2 |
| 3 | 48-63 | 3 |
| 4 | 保留控制 | 4(highest) |
所有傳輸時隙都分配有一個等級或服務。此類代表四個流量隊列之一或第五個保留的調度程序控制隊列。如果啟用了 queue.stricttxdequeue 配置參數,則只有與傳輸時隙類匹配的隊列才用于使流量出列。如果 queue.stricttxdequeue 被禁用,則會嘗試將流量從時隙類匹配隊列中出隊,然后是優先級從高到低的所有其他隊列。
根據當前傳輸時隙是否分配了目的地 NEM,隊列可以以兩種方式之一出隊。如果指定了目的地,只有與目的地匹配的數據包才會出隊(先進先出)。如果沒有找到目的地匹配,則不會發生傳輸。如果沒有指定目的地,數據包將被取消隊列(先進先出),而不管它們的目的地是哪里。
每個時隙具有相同的大小和開銷,這是使用 TDMA 調度事件分配的。 可以為發送時隙分配不同的數據速率,從而使時隙具有不同的最大字節限制。 TDMA 模型支持分段和聚合,并允許獨立啟用或禁用。
3.1.2. Fragmentation(分段)
如果使用 queue.fragmentationenable 配置參數啟用分段,則一個太大而無法放入給定傳輸時隙的大數據包將被分段為兩個或多個消息組件。所需消息組件的實際數量無法事先確定,因為每個時隙的允許大小和目的地分配可能會有所不同。如果分段被禁用,過大的數據包將被丟棄,直到找到合適的數據包。如果在與隊列和 queue.stricttxdequeue 匹配的插槽類中沒有找到任何數據包,將會搜索其他隊列,但由于長度原因,不會丟棄任何數據包。在這種情況下,一旦發現數據包對于給定的時隙來說太大,搜索就在該隊列中結束,并在下一個最低優先級隊列中繼續。
3.1.3. Aggregation(聚合)
如果使用 queue.aggregationenable 配置參數啟用了聚合,則可以在單個時隙中傳輸用于相同或不同目的地(單播或廣播)的一個或多個消息組件。如果單個時隙傳輸中包含的所有消息組件都用于同一 NEM 目的地,則將該目的地用作下游(出站)數據包目的地。 否則,將 NEM 廣播地址用作下游數據包目標。 后一種情況并不意味著 TDMA 模型將這些消息視為廣播。 TDMA 模型將包含在單個傳輸中的每個消息組件作為單獨的消息進行處理。 但是,在檢查物理層統計信息時,單播和廣播傳輸的概念有點模糊。
如果啟用分段,聚合傳輸中的一個或多個消息組件可能是一個分段。 queue.aggregationslotthreshold 配置參數控制必須填充的時隙的百分比,以便滿足聚合功能并防止進一步搜索和/或分割分組以填充該時隙。
3.1.4. Fragment Reassembly(分段重組)
如果禁用分段和/或聚合,則 TDMA 模型仍將處理上游(入站)聚合消息,并類似于數據包片段。 TDMA 模型將嘗試同時對來自一個或多個源的一個或多個數據包進行片段重組。 使用兩個配置參數來控制何時應放棄各個片段重組工作:fragmentcheckthreshold 和 fragmenttimeoutthreshold。 fragmentcheckthreshold 配置參數控制模型檢查查看是否應該放棄任何活動的重組工作的頻率。 fragmenttimeoutthreshold 配置參數是自收到用于特定重組工作的片段以來必須經過的時間,以便將該工作視為超時并隨后被放棄。
無線電模型不會處理亂序的片段。一旦接收到非連續片段,就放棄對該分組的重組工作。
3.1.5. Statistics Packets vs Bytes(統計數據包與字節)
聚合和分段使得難以傳達基于分組的統計信息。TDMA 模型通過跟蹤使用消息組件的字節統計信息和傳遞隊列信息的數據包統計信息來解決此問題。 這與其他無線電型號不同。
3.1.6. Timing and Slot Size(時隙和時序大小)
TDMA模型需要正確的時間同步。時間同步所需的緊密度是使用 TDMA 多址調度 事件配置的時隙大小的函數。 系統配置,仿真節點數,流量情況和一般資源可用性,都是確定可實現的時隙大小的因素。
3.1.7. TDMA Schedule(TDMA 調度)
TDMA 模型使用三個單位來描述時間分配:時隙,幀和多幀。 時隙是最小的時間單位,以微秒為單位定義。時隙支持最大長度的單個突發的傳輸,這考慮了有效負載和開銷(前導,報頭,保護時間,傳播延遲等)。框架包含許多插槽。復幀包含許多幀。
TDMA 模型通過 TDMA 調度事件接收調度。TDMA 調度有兩種類型:完整和更新。 完整的 TDMA 調度表定義了正在使用的 TDMA 結構以及每個 NEM 的發送,接收和空閑時隙的分配。TDMA 結構定義:
- 時隙大小(以微秒為單位)
- 時隙開銷(以微秒為單位)
- 每幀插槽數
- 每多幀的幀數
- 收發器帶寬(單位:Hz)
時隙開銷應設置為考慮各種波形開銷參數,如同步、波形頭、周轉時間、傳播延遲等。當在仿真中使用位置事件時,至少應將時隙開銷設置為信號預期傳播的最大值。如果希望在時分多址模式下支持10公里的范圍,調度中的開銷應該設置為至少34微秒。這將確保每個幀中打包的最大數據量+最大傳播延遲將始終小于時隙大小。否則,當接收結束跨越時隙邊界時,會導致幀被接收器丟棄。
更新的 TDMA 調度會更改 NEM 的時隙分配信息,但不會更改 TDMA 結構。
可以將 TDMA 時隙分配為發送、接收和空閑。 為發送時隙分配了頻率(Hz),功率(dBm),類別([0,4]),數據速率(bps)和可選的目標 NEM。 接收時隙被分配了一個頻率(Hz)。 空閑時隙沒有分配,表示 NEM 既不在發送也不在接收。
當 TDMA 模型實例收到調度時,它將在1970年1月1日UTC時間00:00:00所引用的下一個多幀邊界的開始處生效。
3.1.8. Defining a TDMA Schedule(定義 TDMA 調度)
TDMA 調度是使用 XML 定義的。 XML 模式記錄了編寫調度所涉及的詳細信息。 需要考慮的一些重要事項:
- scheduler.scheduleAcceptFull
- scheduler.scheduleAcceptUpdate
- scheduler.scheduleRejectFrameIndexRange
- scheduler.scheduleRejectSlotIndexRange
- scheduler.scheduleRejectUpdateBeforeFull
- scheduler.scheduleRejectOther
一個 XML 調度例子:
<emane-tdma-schedule ><structure frames='4' slots='10' slotoverhead='0' slotduration='1000' bandwidth='1M'/><multiframe frequency='2.4G' power='0' class='0' datarate='1M'><frame index='0'><slot index='0,5' nodes='1'><tx/></slot><slot index='1,6' nodes='2'><tx/></slot><slot index='2,7' nodes='3'><tx/></slot><slot index='3,8' nodes='4'><tx power='30'/></slot><slot index='4,9' nodes='5'><tx/></slot></frame><frame index='1' datarate='11M'><slot index='0:4' nodes='1'><tx/></slot><slot index='5' nodes='2'><tx/></slot><slot index='6' nodes='3'><tx/></slot><slot index='7' nodes='4'><tx/></slot><slot index='8' nodes='5'><tx destination='2'/></slot></frame><frame index='2'><slot index='0:9' nodes='1'><tx frequency='2G' class='3'/></slot><slot index='0:9' nodes='2:10'><rx frequency='2G'/></slot></frame></multiframe> </emane-tdma-schedule>3.1.9. 發送一個 TDMA 調度
使用 TDMA 調度事件將 TDMA 調度發送到 TDMA 模型實例。emaneevent-tdmaschedule 腳本可用于處理 TDMA Schedule XML 文件。 調度事件將發送到調度 XML 中引用的每個 NEM。 每個事件僅包含收件人 NEM 的調度信息。
[me@host ~]$# emaneevent-tdmaschedule schedule-sample.xml -i lo3.1.10. 驗證 TDMA 調度
TDMA 模型實例包含統計信息,以指示接受和拒絕的完整調度和更新調度的數量。
[me@host ~]$ emanesh localhost get stat 1 mac | grep scheduler nem 1 mac scheduler.scheduleAcceptFull = 4 nem 1 mac scheduler.scheduleAcceptUpdate = 0 nem 1 mac scheduler.scheduleRejectFrameIndexRange = 0 nem 1 mac scheduler.scheduleRejectSlotIndexRange = 0 nem 1 mac scheduler.scheduleRejectUpdateBeforeFull = 0TDMA 模型實例維護一個時間表和結構表,該表指示當前的時間表和時隙結構。
[me@host ~]$ emanesh localhost get table 1 mac scheduler.ScheduleInfoTable scheduler.StructureInfoTable nem 1 mac scheduler.ScheduleInfoTable | Index | Frame | Slot | Type | Frequency | Data Rate | Power | Class | Destination | | 0 | 0 | 0 | TX | 2400000000 | 1000000 | 0.0 | 0 | 0 | | 1 | 0 | 1 | RX | 2400000000 | | | | | | 2 | 0 | 2 | RX | 2400000000 | | | | | | 3 | 0 | 3 | RX | 2400000000 | | | | | | 4 | 0 | 4 | RX | 2400000000 | | | | | | 5 | 0 | 5 | TX | 2400000000 | 1000000 | 0.0 | 0 | 0 | | 6 | 0 | 6 | RX | 2400000000 | | | | | | 7 | 0 | 7 | RX | 2400000000 | | | | | | 8 | 0 | 8 | RX | 2400000000 | | | | | | 9 | 0 | 9 | RX | 2400000000 | | | | | | 10 | 1 | 0 | TX | 2400000000 | 11000000 | 0.0 | 0 | 0 | | 11 | 1 | 1 | TX | 2400000000 | 11000000 | 0.0 | 0 | 0 | | 12 | 1 | 2 | TX | 2400000000 | 11000000 | 0.0 | 0 | 0 | | 13 | 1 | 3 | TX | 2400000000 | 11000000 | 0.0 | 0 | 0 | | 14 | 1 | 4 | TX | 2400000000 | 11000000 | 0.0 | 0 | 0 | | 15 | 1 | 5 | RX | 2400000000 | | | | | | 16 | 1 | 6 | RX | 2400000000 | | | | | | 17 | 1 | 7 | RX | 2400000000 | | | | | | 18 | 1 | 8 | RX | 2400000000 | | | | | | 19 | 1 | 9 | RX | 2400000000 | | | | | | 20 | 2 | 0 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 21 | 2 | 1 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 22 | 2 | 2 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 23 | 2 | 3 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 24 | 2 | 4 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 25 | 2 | 5 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 26 | 2 | 6 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 27 | 2 | 7 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 28 | 2 | 8 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 29 | 2 | 9 | TX | 2000000000 | 1000000 | 0.0 | 3 | 0 | | 30 | 3 | 0 | IDLE | | | | | | | 31 | 3 | 1 | IDLE | | | | | | | 32 | 3 | 2 | IDLE | | | | | | | 33 | 3 | 3 | IDLE | | | | | | | 34 | 3 | 4 | IDLE | | | | | | | 35 | 3 | 5 | IDLE | | | | | | | 36 | 3 | 6 | IDLE | | | | | | | 37 | 3 | 7 | IDLE | | | | | | | 38 | 3 | 8 | IDLE | | | | | | | 39 | 3 | 9 | IDLE | | | | | |nem 1 mac scheduler.StructureInfoTable | Name | Value | | bandwidth | 1000000 | | frames | 4 | | slotduration | 1000 | | slotoverhead | 0 | | slots | 10 |3.2. 數據包完成率
3.3. 配置參數
3.4. XML 示例
3.5. 統計數據
3.6. 統計表
總結
- 上一篇: Prolog教程 3
- 下一篇: ArcGIS Server Rest 认