1:下载NetAnim
ns3中并没有下载NetAnim,可以使用下面的步骤下载。首先保证你已经安装了mercurial.最新的NetAnim可以使用下面的命令行下载:
$ hg clone http://code.nsnam.org/netanim
2:building netanim
Qt4(4.7以及以上版本)是build NetAnim必须的,使用下面的步骤来安装:
Debian/Ubuntu linux版本:
$ apt-get install qt4-dev-tools
Red Hat/Fedora 版本:
$ yum install qt4
$ yum install qt4-devel
对于Mac/OSX用户,请参考链接:http://qt.nokia.com/downloads
3:build 步骤
$ cd netanim
$ make clean
$ qmake NetAnim.pro (For MAC Users: qmake -spec macx-g++ NetAnim.pro)
$ make
Note:在某些系统中,qmake 可能需要使用qmake-qt4代替。
上面的命令完成之后,会在当前目录中生成一个“NetAnim”的文件,使用下面的命令查看:
$ ls -l NetAnim
-rwxr-xr-x 1 john john 390395 2012-05-22 08:32 NetAnim
用法:
第一步:产生xml文件
第二步:加载xml文件到NetAnim中。
添加头文件:
#include "ns3/netanim-module.h"
【对于使用ns-3.13以前版本的,需要使用代码:“anim.SetXMLOutput()”设置输出XML模式,并使用“anim.StartAnimation()”启动】
第一步:产生XML文件
AnimationInterface anim("animation.xml"); 将会产生一个xml文件。
anim.SetMobilityPollInterval (Seconds (1));
AnimationInterface默认250ms记录一次所有节点的位置。这个方法设置了AnimationInterface记录所有节点位置的时间间隔。如果节点的位置预料每次变化非常小,那么设置高流动性轮训间隔将是非常有用的。否则,将会产生非常大的xml文件。
anim.SetConstantPosition (Ptr< Node > n, double x, double y);
AnimationInterface允许设置所有节点的位置。在ns3中,该设置与MobillityModel关联。该方法是非常快捷的方式来设置一个静止的节点位置。
anim.SetStartTime (Seconds(150));
anim.SetStopTime (Seconds(150));
AnimationInterface会产生比较大的xml文件。上面的方法可以限制AnimationInterface记录的时间窗口。这样可以达到只关注于与仿真相关联的部分,同时产生比较小的xml文件。
AnimationInterface anim ("animation.xml", 50000);
该构造器保证产生的xml文件只记录5000个packets。例如,如果AnimationInterface抓取到了150000个packets,使用这个构造器可以产生三个文件
• animation.xml - containing the packet range 1-50000
• animation.xml-1 - containing the packet range 50001-100000
• animation.xml-2 - containing the packet range 100001-150000
anim.EnablePacketMetadata (true);
使用该方法,则AnimationInterface会在产生的xml文件中记录每一个packet的元数据。记录了元数据之后,可以使用比较简单的与每个packet相关的信息,这样就方便NetAnim提供更好的统计和过滤,例如,TCP序列号,源IP,目的地IP等。
CAUTION:使用这样的属性,将会导致比较大的XML文件产生。不要在使用Wimax links的时候使用该属性。
anim.UpdateNodeDescription (5, "Access-point");
使用该方法,AnimationInterface将会把节点5标记为“Access-point”文字。
anim.UpdateNodeSize (6, 1.5, 1.5);
使用该方法,AnimationInterface将会把节点大小缩放为1.5倍。NetAnim会自动缩放视图以适应拓扑的边界。这意味着,NetAnim会调整太大或者太小的节点。使用该方法允许你覆盖NetAnim默认的节点的size。
anim.UpdateNodeCounter (89, 7, 3.4);
该方法说明,AnimationInterface设置节点7的值为3.4 id==89。id=89的节点必须存在,须先使用AnimationInterface::AddNodeCounter方法设置之后,才能调用UpdateNodeCounter方法。实例用法请参考src/netanim/examples/resources_demo.cc
第二步:加载xml文件到NetAnim
1:假设NetAnim已经build,命令行使用./NetAnim启动NetAnim。如果NetAnim不能启动,请参考前面的内容。
2:打开NetAnim之后,点击File按钮,选择代码产生的xml文件
3:点击play绿色按钮启动动画。
这里有可以参看的视频:http://www.youtube.com/watch?v=tz_hUuNwFDs
Wiki
对于更多细节和安装“NetAnim”的说明,以及使用NetAnim加载XML文件等信息,可以参看wiki地址:
http://www.nsnam.org/wiki/NetAnim