跳转至

点对点拓扑建立

快速创建由点对点链路连接的节点网络

头文件

C++
1
2
model/core/topology.h // 基础拓扑
model/core/ptop-topology.cc // 点对点拓扑(含.h)

配置文件

1)需要在仿真文件夹的 config_ns3.properties 文件中添加以下内容:

Text Only
1
topology_ptop_filename="topology.properties"

告诉仿真程序使用 topology.properties 这个文件来定义拓扑

2)在 topology.properties 文件中定义拓扑参数:

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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++
1
#include "ns3/ptop-topology.h"

创建对象

C++
1
2
3
4
Ptr<TopologyPtop> topology = CreateObject<TopologyPtop>(basicSimulation, Ipv4ArbiterRoutingHelper());

// 安装路由器(例如使用 ECMP 路由器)
ArbiterEcmpHelper::InstallArbiters(basicSimulation, topology);

获取对象

我们创建的对象是topo,调用方法获取的是整个topo的nodes

C++
1
NodeContainer nodes = topology->GetNodes(); // 注意:传递的是引用