点对点拓扑建立
快速创建由点对点链路连接的节点网络
头文件
C++ |
---|
| model/core/topology.h // 基础拓扑
model/core/ptop-topology.cc // 点对点拓扑(含.h)
|
配置文件
1)需要在仿真文件夹的 config_ns3.properties
文件中添加以下内容:
Text Only |
---|
| topology_ptop_filename="topology.properties"
|
告诉仿真程序使用 topology.properties 这个文件来定义拓扑
2)在 topology.properties
文件中定义拓扑参数:
Text Only |
---|
| num_nodes=4
num_undirected_edges=3
switches=set(0) // 0号node是switch
switches_which_are_tors=set(0) // 0号不仅是sw,还是ToR Sw
servers=set(1,2,3)
undirected_edges=set(0-1,0-2,0-3) // 具体无向边
link_channel_delay_ns=10000
link_device_data_rate_megabit_per_s=100.0
link_device_queue=drop_tail(100p) // 队列的实现方式: 使用 DropTail(丢弃尾部的包),最大队列长度为 100 个 packet
link_interface_traffic_control_qdisc=disabled // 禁用流量控制队列
|
主代码
引入头文件
C++ |
---|
| #include "ns3/ptop-topology.h"
|
创建对象
C++ |
---|
| Ptr<TopologyPtop> topology = CreateObject<TopologyPtop>(basicSimulation, Ipv4ArbiterRoutingHelper());
// 安装路由器(例如使用 ECMP 路由器)
ArbiterEcmpHelper::InstallArbiters(basicSimulation, topology);
|
获取对象
我们创建的对象是topo,调用方法获取的是整个topo的nodes
C++ |
---|
| NodeContainer nodes = topology->GetNodes(); // 注意:传递的是引用
|