Kodo是一个随机网络编码的C++库,官方尽管给出如何结合ns3和kodo的方法(即kodo-ns3-examples),但该方法是将ns3作为Kodo的一个库。我在使用过程中,发现很不方便,比如在ns3运行得好好的,在kodo-ns3-examples目录下运行却提示“UdpClient not found”错误。再者,kodo-ns3-examples目录下的编译系统不及ns3强大。基于此,把Kodo作为一个库安装到ns3,想必是一个更好的选择。本文给出如何将Kodo库安装到ns3,并罗列一些Kodo的学习资料。
1. 将Kodo库安装到ns3
以下安装得到Nguyễn Văn Lý的帮助,感谢他!(PS:我的ns3版本是3.19)
步骤1:安装ns3和Kodo库
官方给的安装指南过于繁琐,我安装的时候,没有记录,不过这个问题通过Google很容易就解决了。
ns3安装:http://www.nsnam.org/wiki/index.php/Installation#Ubuntu.2FDebian
Kodo安装:http://kodo.readthedocs.org/en/latest/getting_started.html#download-the-kodo-source-code
步骤2:修改wscript文件
打开ns-3.19/wscript文件,找到如下代码(ns-3.19是在696行):
696 Options.cwd_launch = bld..abspath(path) 697 bld.create_ns3_program = types.MethodType(create_ns3_program, bld) 698 bld.register_ns3_script = types.MethodType(register_ns3_script, bld) 699 bld.create_suid_program = types.MethodType(create_suid_program, bld) 700 bld.__class__.all_task_gen = property(_get_all_task_gen) 701 bld.exclude_taskgen = types.MethodType(_exclude_taskgen, bld) 702 bld.find_ns3_module = types.MethodType(_find_ns3_module, bld)
在以上代码的末尾添加(因为是python脚本,注意格式对齐):
#added by Jelline for Kodo bld.env['INCLUDES'] += ['/home/jelline/NetworkSimulator/kodo/src', '/home/jelline/NetworkSimulator/kodo/bundle_dependencies/boost-e92f30/master', '/home/jelline/NetworkSimulator/kodo/bundle_dependencies/fifi-6ca972/master/src', '/home/jelline/NetworkSimulator/kodo/bundle_dependencies/sak-602ce9/master/src' ]
注:根据实际情况更改文件路径 /home/jelline/NetworkSimulator/。懂了这个,以后就可以很方便将其他库加到ns3了:-)
步骤3:重新编译ns3
回到ns-3.19目录下,运行如下命令,重新编译ns3。
CXXFLAGS="-std=c++0x" ./waf configure
./waf build
步骤4:测试
将kodo-ns3-examples/simple_udp_broadcast/main.cpp拷贝到ns-3.19/scracth目录下,并将文件后缀改成“.cc”。在ns-3.19目录运行如下命令(我把文件名改成simple_udp_broadcast_kodo.cc),看能否正常运行。kodo-ns3-examples
./waf --run scratch/simple_udp_broadcast_kodo
得到结果如下图:
2. Kodo学习资料
官方网站:没什么有价值的东西
Kodo手册: 写得相当简单,不过里面的FAQ值得一看
Kodo API文档: 编程时很有用
Kodo Github: Kodo所有相关的包都有,包括kodo-ns3-examples
Kodo Google Groups: 不是很活跃,Kodo开发人员会回复,挺有用的。
如果您有更好的资料,期待您与我分享。欢迎交流:Jelline@126.com
微信赞赏
支付宝赞赏
我下载的kodo-ns3-examples里没有simple_udp_broadcast这个例子。
我按照你说的方法编译没有成功哦,错误是说没有找到kodo的一些头文件
我装的时候还挺顺利的,找不到kodo的一些头文件,是因为编译路径没设置对,你检查下。另建议你去kodo的google group寻求解决,http://groups.google.com/group/steinwurf-dev
我下载的kodo-ns3-examples里没有simple_udp_broadcast这个例子哦,你从哪里下载的呢?
I downloaded it from GitHub: https://github.com/steinwurf/kodo-ns3-examples. They might update their code.