ns3仿真学习--应用层(1)

本文例子:*/ns-3.29/examples/udp-client-server目录下的udp-client-server.cc文件

网络拓扑:n0结点装有udp客户端应用,n1结点装有udp服务端应用
                                                         n0        n1
                                                         |              |
                                                         =======      LAN
功能:生成一个从no到n1的UDP flows ,n0一共发5次包,间隔为0.2s

实验过程对源代码做了部分修改

1.给两个结点安装了移动模型

//创建移动模型,设置两结点为静态位置
  MobilityHelper nMobility;
  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
  positionAlloc->Add (Vector (0.0, 250.0, 0.0));
  positionAlloc->Add (Vector (500.0, 250.0, 0.0));
  nMobility.SetPositionAllocator (positionAlloc);
  nMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
  nMobility.Install (n);

2.修改了发包次数(maxPacketCount)和发包时间间隔(interPacketInterval)

 Time interPacketInterval = Seconds (0.2);
 uint32_t maxPacketCount = 5;

3.生成动画以及.pcap格式的文件,以供netanim和wireshark分析。

  csma.EnablePcapAll ("udpcs");
  AnimationInterface anim ("udpclientserver.xml");

结果分析:

用wireshark打开udpcs-0-1.pcap,发现整个过程可分为两部分:

(1)ARP地址解析过程:n0结点采用广播方式发出询问消息(询问10.1.1.2主机对应的mac地址),n1结点收到该消息后发现消息中ip地址与自身ip地址一致,则n1发送应答信息给n0,告诉n0自己的IP和MAC地址。

注: 学习一下ARP协议数据格式:

         ARP(Address ResolutionProtocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行

打开ARP询问消息,发现十六进制数据与ARP消息格式完全符合。

(2)n0发送5个数据包的过程 

           通过wireshark发现整个发包过程和预期效果一致,除此之外也可利用NetAnim打开动画,看到整个发包过程。

 欢迎点赞收藏

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NS3是一个广泛使用的网络仿真器,可以用于模拟各种类型的网络。在使用NS3进行网络仿真时,首先需要搭建网络拓扑。 以下是NS3拓扑搭建的基本步骤: 1. 导入NS3库和头文件 在进行NS3网络仿真时,必须导入NS3库和头文件。可以使用以下命令将它们包含在您的C++代码中: ``` #include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/csma-module.h" #include "ns3/internet-module.h" #include "ns3/applications-module.h" #include "ns3/point-to-point-module.h" ``` 2. 创建仿真场景 在NS3中,仿真场景是指在仿真器中创建的网络拓扑和仿真参数的集合。可以使用以下代码创建仿真场景: ``` Ptr<ns3::Simulation> sim = CreateObject<ns3::Simulation> (); ``` 3. 添加节点 在NS3中,节点是指网络中的设备或主机。可以使用以下代码创建一个节点: ``` Ptr<Node> node = CreateObject<Node> (); ``` 可以根据需要添加任意数量的节点。 4. 添加设备 在NS3中,设备是指网络中的交换机、路由器或其他网络设备。可以使用以下代码创建设备: ``` Ptr<NetDevice> device = CreateObject<NetDevice> (); ``` 可以根据需要添加任意数量的设备。 5. 添加链路 在NS3中,链路是指连接节点和设备的物理连接。可以使用以下代码创建链路: ``` Ptr<Channel> channel = CreateObject<Channel> (); Ptr<PointToPointNetDevice> p2pDevice = CreateObject<PointToPointNetDevice> (); p2pDevice->Attach (channel); ``` 可以根据需要添加任意数量的链路。 6. 配置网络协议 在NS3中,网络协议是指用于通信的协议,如TCPUDPIP。可以使用以下代码配置网络协议: ``` InternetStackHelper internet; internet.Install (node); ``` 这将为每个节点安装Internet协议栈。 7. 运行仿真器 一旦完成了上述步骤,就可以开始运行仿真器了。可以使用以下代码运行仿真器: ``` sim->Run (); ``` 这将运行仿真器,直到仿真结束。 以上是NS3拓扑搭建的基本步骤,具体实现可以根据需要进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值