NS-3源码学习(四)wifi-ent-network.cc
设定的参数
-
bool udp{true}
;udp/tcp
通信选择 -
bool downlink{true}
;AP -> STA :downlink = true
/ STA -> AP :downlink = false
数据发送方向选择 -
bool useExtendedBlockAck{false}
; 启用扩展块确认,默认不启用,即块确认的大小为64,启用后块确认缓冲区大小会被修改为256 -
Enhanced Multi-Level Soft Recovery
(增强型多级软恢复),暂时不知道这个参数有什么用-
bool useExtendedBlockAck{false}
; -
std::string emlsrLinks
; -
uint16_t paddingDelayUsec{32}
; -
uint16_t transitionDelayUsec{128}
; -
uint16_t channelSwitchDelayUsec{100}
; -
bool switchAuxPhy{true}
;
-
-
double simulationTime{10}
;仿真时间,即该仿真网络运行的时间,单位为秒 -
double distance{1.0}
;AP结点和STA结点之间的距离,该仿真系统是一个静态系统,AP与STA之间的距离保持不变- 默认情况下原始的仿真程序仅含有一个STA和一个AP,因此这里仅提供了一个距离的参数。所以在这种仅提供一个距离参数的情况下,若设置了多个STA结点,多余的STA节点的位置是无法受控制的
-
三个频率:
double frequency{5}
; 、double frequency2{0}
; 、double frequency3{0}
;- 这里应该是指的STA或AP结点支持的频率,这三个频率吧不能设置为同样的值,除非为0
-
std::size_t nStations{1}
;STA结点的数量 -
std::string dlAckSeqType{"NO-OFDMA"}
;802.11ACK报文的确认格式-
此处提供了四个选项:
NO-OFDMA
,ACK-SU-FORMAT
,MU-BAR
,AGGR-MU-BAR
-
NO-OFDMA
和ACK-SU-FORMAT
:默认的块确认类型,不使用OFDMA,确认块占用一整个信道,仅对单一的某个数据的发送方进行确认 -
MU-BAR
:使用WifiAcknowledgment::DL_MU_TF_MU_BAR
机制进行块确认,即单个用户发送块之前先通知,并使用Multi-User Block Acknowledgment
机制来进行确认,该机制允许接收端在一个块确认帧中对多个发送的用户进行确认 -
AGGR-MU-BAR
:改进的多用户确认格式
-
-
bool enableUlOfdma{false}
; 对上行链路启动OFDMA,一般来说在TCP通信中使用,因为UDP通信的过程中数据接收端仅需要向发送端回复MAC层的ACK报文,因此上下行的划分是清晰明了的,对ACK报文的确认格式也可以在上面的参数进行设置,而且即使不启动上行的OFDMA,考虑到ACK报文很短,也不会对速度造成很大的影响。但是对于TCP通信,上下行都会传输大量的数据包,因此需要设定上行链路是否启动OFDMA。bool enableBsrp{false}
;该参数的设置和上述参数相关,在设置上下行均启动OFDMA且使用TCP通信的情况下,该参数决定是否启动BSRP报告,BSRP 可用于在 Wi-Fi 6 网络中报告传输缓冲区的状态信息
-
int mcs{0}; mcs值设置,默认为0,下表来源 新华三Wi-Fi 7技术白皮书-6W100
-
int channelWidth{20}
;信道宽度,单位为MHz,对于2.4GHz可以取20,40;对于5GHz和6GHz,可以取20,40,80,160;暂时不能取320MHz(仅存在于6GHz)宽度的信道- 而且,当前国内对无线电的管理政策中也没有允许WiFi使用6GHz的信道
-
int gi{3200}
;物理层传输的符号之间的间隔,可以取800,1600和3200,单位为纳秒 -
uint32_t payloadSize =700
;一个UDP或TCP包的大小,注意到这个值不能过大,过大会导致在过小的mcs值的情况下无法在规定的时间内传输完整个数据包 -
Time tputInterval{0}
;每隔tputInterval时间输出一次这段时间的传输速率 -
double minExpectedThroughput{0}
;、double maxExpectedThroughput{0}
;设置了最小和最大的传输速率,若统计的速率超过这个范围则会报错 -
Time accessReqInterval{0}
;多用户请求信道访问之间的时间间隔,一般来说,会用到某个信道内多个STA,或单一STA与AP进行TCP通信时使用 -
u_int64_t udpMaxPackets{4294967295U}
;UDP通信过程中传输的数据包的数量,这里设置为了一个很大的数字,代表将在整个仿真时间内大量的传输数据,用来测试该网络中传输速率的极限。