NS2无线网络仿真trace文件mac地址不正确的问题
使用长庚大学的NS2的WIMAX模块做仿真,结果trace文件的mac地址总是很奇怪,而且nam的动画显示仿真过程中有问题。
一步步的查啊查,最后发现问题在cmutrace类(trace/cmu-trace.cc)中。一下分析全部是针对老版本的trace格式,请自行修改变通。
hdr_mac802_11(mac/mac-802_11.h)与hdr_mac(mac/mac.h)使用的是同一块内存空间,而我所使用的802.16的头部,是在hdr_mac的基础上再加了一个hdr_mac802_16,也就是说,如果要取mac地址相关信息,应该是从hdr_mac中间取。
看cmutrace的format_mac函数,第一行:struct hdr_mac802_11 *mh = HDR_MAC802_11(p); 也就是说默认无线仿真是802.11的,那么用hdr_mac802_11结构体,当然取不到正确的源和目的MAC地址啦。继续往上看,format_mac_common函数的最后一个分支是对老版本的trace格式进行处理的,有下面几行:
cpp代码
- if (strcmp (mactype, "Mac/SMAC") == 0) {
- format_smac(p, offset);
- } else {
- format_mac(p, offset);
- }
那么,我们自己添加一个 else if (strcmp (mactype, "Mac/802_16") == 0)的分支就可以了,再自己实现一个类似format_mac的函数,从hdr_mac中取地址,并生成trace,trace文件中MAC地址不对的问题就解决了。
我估计生成nam的类中也有相似问题,不过懒得修改了,直接看trace分析得了。
Tags:
上一篇:
WiMAX MAC管理消息
下一篇:
zz如何在UBUNTU下制作ISO镜像
相关日志推荐
0 条留言
发表评论