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代码
  1. if (strcmp (mactype, "Mac/SMAC") == 0) {  
  2.    format_smac(p, offset);  
  3.   } else {  
  4.    format_mac(p, offset);  
  5.   } 

那么,我们自己添加一个 else if (strcmp (mactype, "Mac/802_16") == 0)的分支就可以了,再自己实现一个类似format_mac的函数,从hdr_mac中取地址,并生成trace,trace文件中MAC地址不对的问题就解决了。

我估计生成nam的类中也有相似问题,不过懒得修改了,直接看trace分析得了。

Tags:
上一篇: WiMAX MAC管理消息
下一篇: zz如何在UBUNTU下制作ISO镜像

相关日志推荐

0 条留言

发表评论

  
  
   (点击图片更换验证码)
点击刷新验证码