超详细!超完整! Centos7下的NS-3安装与配置总结( 三 )


7.2
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- *//** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Software Foundation;** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA*/#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"// Default Network Topology////10.1.1.0// n0 -------------- n1n2n3n4//point-to-point||||//================//LAN 10.1.2.0using namespace ns3;NS_LOG_COMPONENT_DEFINE ("SecondScriptExample");int main (int argc, char *argv[]){bool verbose = true;uint32_t nCsma = 3;//命令行参数,允许用户指定脚本运行时的参数CommandLine cmd;cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);cmd.Parse (argc,argv);//根据用户命令行参数,启用Loggingif (verbose){LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);}//个数为1或nCsmanCsma = nCsma == 0 ? 1 : nCsma;/**************开始定义网络拓扑***************///两个p2p节点:n0和n1NodeContainer p2pNodes;p2pNodes.Create (2);//nCsma个CSMA节点NodeContainer csmaNodes;csmaNodes.Add (p2pNodes.Get (1));csmaNodes.Create (nCsma);//P2P链路属性PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));NetDeviceContainer p2pDevices;p2pDevices = pointToPoint.Install (p2pNodes);//总线网络属性CsmaHelper csma;csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));NetDeviceContainer csmaDevices;csmaDevices = csma.Install (csmaNodes);//安装协议栈InternetStackHelper stack;stack.Install (p2pNodes.Get (0));stack.Install (csmaNodes);//分配IP地址Ipv4AddressHelper address;address.SetBase ("10.1.1.0", "255.255.255.0");//p2p网段Ipv4InterfaceContainer p2pInterfaces;p2pInterfaces = address.Assign (p2pDevices);address.SetBase ("10.1.2.0", "255.255.255.0");//总线网段Ipv4InterfaceContainer csmaInterfaces;csmaInterfaces = address.Assign (csmaDevices);/**************网络拓扑定义结束***************//**************应用程序开始***************/UdpEchoServerHelper echoServer (9);//服务器在最后一个节点上ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));serverApps.Start (Seconds (1.0));serverApps.Stop (Seconds (10.0));UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);echoClient.SetAttribute ("MaxPackets", UintegerValue (1));echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));echoClient.SetAttribute ("PacketSize", UintegerValue (1024));//客户端在n0ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0));clientApps.Start (Seconds (2.0));clientApps.Stop (Seconds (10.0));/**************应用程序结束***************///根据节点产生的链路通告为每个节点建立路由信息Ipv4GlobalRoutingHelper::PopulateRoutingTables ();//开启pcap跟踪,生成以"second"为前缀的文件名pointToPoint.EnablePcapAll ("second");csma.EnablePcap ("second", csmaDevices.Get (1), true);Simulator::Run ();Simulator::Destroy ();return 0;}
8 参考资料
ns-3手册:#
下安装配置NS3:
NS_3--PyViz: