在 Mac OS X 上安装 ns-3

Ns-3 网络模拟器(network simulator)看上去像 ns-2 的升级版本,其实不是,ns-3 是全新的一套网络模拟器,ns-3 的最终目标是替代 ns-2,虽然 ns-3 和 ns-2 都是用 C++ 写的,但是 ns-3 不兼容 ns-2 的 APIs,这就使得在 ns-2 下写的程序可能就需要一定的移植才能在 ns-3 下运行。对于已经熟悉 ns-2 的人来说,ns-3 和 ns-2 最大的区别可能就是脚本语言的不同,ns-2 使用 OTcl 而 ns-3 使用的是 Python. 虽然 ns-3 的 models 没有 ns-2 多,但是 ns-3 有些我们需要的新功能,比如更细致的 802.11 models 等。最近一直在忙 paper 和一些数据,模拟器的事情被搁到一边很长时间了,ns-3 软件包很绿色,下载完源代码后所有编译过程都在一个目录里进行,编译完就可以用,不需要安装,也不会到处放置一些杂乱的配置文件,所以 VPSee 决定在自己 Mac 上编译一个,省得每次都要远程登录到办公室的电脑上。

下载和编译 ns-3

在编译和安装 ns-3 之前先确认 Mac 上已经装有 Xcode 开发工具,Xcode 是 Mac 的开发工具套件,可以在 Mac OS X 的安装 CD 上找到,如果没有可以去苹果官方网站免费下载。有了 Xcode 后就可以开始编译 ns-3 了。这里使用的 Mac OS X 版本是 10.6.4:

$ wget http://www.nsnam.org/releases/ns-allinone-3.9.tar.bz2

$ tar jxvf ns-allinone-3.9.tar.bz2

$ cd ns-allinone-3.9
$ ./build.py
...
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (22m12.303s)
Leaving directory `./ns-3.9'

测试 ns-3

22分钟后编译完成,在 Mac 上安装比在 Linux 上安装 ns-2 还简单,没有 trouble shooting,没有 workaround,编译完就可以用,难道 ns-3 的开发人员也在用 Mac?编译成功后,用测试用例测试一下:

$ cd ns-allinone-3.9/ns-3.9
$ ./test.py
...
145 of 145 tests passed (145 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)

运行第一个例子程序

没有问题后就可以开始自己的第一个程序了,拷贝一个例子程序,然后编译运行:

$ cd ns-allinone-3.9/ns-3.9

$ cp examples/tutorial/first.cc scratch/myfirst.cc

$ ./waf
Waf: Entering directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
[1160/1308] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_2.o
[1161/1308] cxx: scratch/simple.cc -> build/debug/scratch/simple_3.o
[1305/1308] cxx_link: build/debug/scratch/myfirst_2.o -> build/debug/scratch/myfirst
[1306/1308] cxx_link: build/debug/scratch/simple_3.o -> build/debug/scratch/simple
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (5.995s)

$ ./waf --run scratch/myfirst
Waf: Entering directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
Waf: Leaving directory `/Users/vpsee/Desktop/ns-allinone-3.9/ns-3.9/build'
'build' finished successfully (0.848s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

Apple 和 Steven Jobs 关于系统平台最正确的决定可能就是选择和迁移到了 Unix 平台(x86),使得大量的基于 Unix/Linux 的研究和开源项目可以很容易的运行在 Mac 上,这样吸引了大批 Unix/Linux 程序员、系统管理员、研究人员投靠 Mac 阵营

评论 (5 Comments)

  1. 你是网络工程师么?

  2. vpsee,真心佩服您!之前我在XEN下面装虚拟机,看的是您的教程。刚刚想着装个ns3,一搜又是您的教程。哈哈!

  3. 可以在Xcode上编写ns3代码吗?在mac上安装了ns3之后怎么用呢

  4. 博主 请问怎么在os x上建立lxc左右容器 感恩

  5. 你好,NS3安装之前有需要配置什么东西吗

发表评论