移动模块
## 模块常用api
MobilityHelper mobility;
// 分配初始位置
mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
"MinX", DoubleValue (-100.0),
"MinY", DoubleValue (-100.0),
"DeltaX", DoubleValue (5.0), // 节点距离
"DeltaY", DoubleValue (20.0),
"GridWidth", UintegerValue (20), // 每行节点数目
"LayoutType", StringValue ("RowFirst")); // 布局方式
// 分配位置模型
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel", // 节点位置
"Mode", StringValue ("Time"),
"Time", StringValue ("2s"),
// 如何随意指定这个值呢?
"Speed", StringValue ("ns3::ConstantRandomVariable[Constant=3.0]"),
"Bounds", StringValue ("0|200|0|200"));
//"Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));
常用的移动模型有如下:
ConstantPosition(固定位置模型)、ConstantVelocity(固定移动速度)、RandomWayPoint(随机路径)、RandomWalk2D(随机游走)、RandomDirection2D(随机方向)、Waypoint(普通路径)、ConstantAcceleration(固定加速度)、SteadyStateRandomWayPoint(稳态随机路径)、GaussMarkov(高斯马尔可夫随机过程)、Hierarchical(分层)。
通信设备模块
p2p模块
// 首先定义 相关网络设备的 帮助类
PointToPointHelper p2p;
// 给该类分配一些参数
p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
// 给节点分配 该帮助类对应的网卡 返回一个容器, 容器内包括 之前的网卡。 这个网卡也可以使用node节点的getdevice方法得到。
NetDeviceContainer d0d2 = p2p.Install (n0n2);
NetDeviceContainer d1d6 = p2p.Install (n1n6);
NetDeviceContainer d1d2 = p2p.Install (n1n2);
wifi模块
ip地址分配
// 配置IP地址
Ipv4AddressHelper ipv4;
// 网络号,掩码(/24 也可表示),主机号, 主机号默认为 0.0.0.1
ipv4.SetBase ("10.1.1.0", "255.255.255.0", "0.0.0.5");
Ipv4InterfaceContainer interfaces = ipv4.Assign (devices);
路由表相关操作
随机变量模块
// 生成常数
ns3::ConstantRandomVariable[Constant=3.0]
Simulator命名空间
该函数在该命令执行后调用某个函数。 函数使用如下:
Simulator::Schedule(
Seconds(4.0), //四秒后
&change, // 执行该函数
nodes_surface // 该变量为函数参数
);