NS3-有关一些类的解释

看second.cc的时候,有一些东西我是看不懂的。回头再看看定义吧。

Topology Helpers

NodeContainer:NodeContainer拓扑帮助程序提供了一种可靠的方式来创建,管理和访问我们创建的任何节点对象,以便运行模拟。

例如:

NodeContainer nodes;//创建了两个节点
nodes.Create (2);

PointToPointHelper:构建一个点对点的链接,通过PointToPointHelper来将NetDevice(网卡)和Channel(网线)耦合,这样就可以使用单个PointTopointHelper来配置NS3中的PointToPointNetDevice和PointToPointChannel对象。

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
/**
*第一行实例化一个PointToPointHelper,第二行设置一些属性,例如DataRate
**/

NetDeviceContainer:PointTopointhelper为我们的设备进行创建、配置和安装我们的设备,但是我们需要有一个创建的所有NetDevice对象的列表,因此我们使用NetDeviceContainer来保存它们,就像我们使用NodeContainer以保存我们创建的节点一样。

NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
/**PointToPoint的method方法使用NodeContainter做参数,在内部创建了一个NetDeviceContainter。
一个PointTopointChannel被创建了,另外两个PointToPointDevice被链接在一起。
当PointoPointHelper的实例创建对象时,先前在Helper中设置的属性将用于初始化创建对象中的相应属性。执行PointTopoint.install(节点)调用后,我们将有两个节点,每个节点都有一个安装的点对点网络设备和它
们之间的单个点对点信道。两个设备将被配置为在具有两个毫秒传输延迟的信道上每秒以每秒的五个兆比特的数据传输数据。
**/

InternetStackHelper:安装互联网协议栈,以NodeContainter为参数,在节点容器中安装协议栈,如TCP,UDP,IP等。

InternetStackHelper stack;
stack.Install (nodes);

Ipv4AddressHelper:为节点分配IP。声明一个AddressHelper,并告诉它应该使用掩码255.255.255.0开始从网络10.1.1.0的IP地址分配IP地址以定义可分配的位。默认情况下,分配的地址将从一个启动并单调增加,因此从此基础分配的第一个地址将为10.1.1.1,后跟10.1.1.2等。低级NS-3系统实际上记得分配的所有IP地址如果您意外地导致两次生成相同的地址(顺便说明,如果您意外地引起相同的地址(这是非常难以调试错误的方式)会产生致命的错误。

Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");

Ipv4InterfaceContainer interfaces = address.Assign (devices);
//使用Ipv4InterfaceContainer对象进行IP地址和设备之间的关联。

Applications

NS-3系统的另一个核心抽象是Application,使用两个核心NS-3类应用程序的专业化,称为UDPechOServerApplication和UdpechoclientApplication。

UdpEchoServerHelper:

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
//UDPechOServerhelper对象具有Install方法。它是执行此方法,实际上会导致底层的echo服务器应用程序实例化并附加到节点。以NodeContainter方法作为参数。
//Install方法把UDPEchoSeverApplication安装到索引号为1的NodeContainter上。
serverApps.Start (Seconds (1.0));//进入模拟过程中1秒内启动 
serverApps.Stop (Seconds (10.0))//最少持续10s
//C ++转换序列将C++的double1.0s来转换为ns3 Time对象,用Seconds来映射。转化规则可由模型坐着来控制,C++也有自己的规则,所以这个参数不能总是正确地转化。
//在一秒内

UdpEchoClientHelper:echo客户机应用程序的设置方法与服务器应用程序的设置方法基本相似。有一个由udpechoclientelper管理的底层UdpEchoClientApplication。echo客户机,我们需要设置5个不同的属性。前两个属性是在UdpEchoClientHelper构造过程中设置的。我们传递(在helper内部)用于设置“RemoteAddress”和“RemotePort”属性的参数,这与我们在helper构造函数中设置所需属性参数的约定一致。

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);

echoClient.SetAttribute ("MaxPackets", UintegerValue (1));//数据包最大发送量
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));\\客户端数据包之间需要等待多长时间
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));\\数据包荷载大小
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));//就像在回显服务器的情况下一样,我们告诉回显客户机启动和停止,
//但在这里,我们在启用服务器一秒钟后启动客户机(进入模拟的两秒钟)。
clientApps.Stop (Seconds (10.0));

在上面的第一行代码中,我们创建了helper,并告诉它将客户机的远程地址设置为分配给服务器所在节点的IP地址。我们也让它安排把包送到9号港。

Simulator

 

上一篇:2021-06-14NS3学习


下一篇:【网络仿真】ns3-gym/rl-tcp