拓扑图:A和H通信,n8和n9、n10和n11在中间某个时刻开始产生背景流量
A和H之间通信60s,在20s到40s时,n8和n9开始通信,n10和n11开始通信。
瓶颈链路:router2和router4之间,链路带宽设置为10Mbps,router3和router5之间为10Mbps,n8与router2之间、n9与router4之间、n10与router3之间、n11与router5之间带宽为5Mbps。
1、代码及注释
/*
n8 n9
| |
router2(2)------router4(4)
/ \
/ \
A(0)----router1(1) router6(6)----H(7)
\ /
\ /
router3(3)------router5(5)
| |
n10 n11
(i)为程序中NodeContainer nodes中节点的顺序号
*/
#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
#include <vector>
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/csma-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv4-global-routing-helper.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("myFirstExample");
int
main (int argc, char * argv[])
{
/* uint16_t nodesNum = 12;
float dataRateAtoB = 100.0;//A——B
float dataRateGtoH = 100.0;//G——H
float dataRateBtoC = 100.0;
float dataRateBtoD = 100.0;
float dataRateGtoE = 100.0;
float dataRateGtoF = 100.0;
float dataRateNodetoaRouter = 100.0;
float dataRateR1toR3 = 5.0;
float dataRateR2toR4 = 5.0;
*/
/*使用可视化工具 PyViz*/
CommandLine cmd;
cmd.Parse (argc,argv);
//设置默认拥塞控制算法
Config::SetDefault("n