NS-3源码学习(四)wifi-ent-network.cc
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通信过程中传输的数据包的数量,这里设置为了一个很大的数字,代表将在整个仿真时间内大量的传输数据,用来测试该网络中传输速率的极限。
开启RTS机制


ACK报文类型


浙公网安备 33010602011771号