现在的位置: 首页 > 综合 > 正文

(转)修改flooding路由协议与mflood的比较

2012年06月12日 ⁄ 综合 ⁄ 共 852字 ⁄ 字号 评论关闭

最近一直都在做flooding的改进实验。两个星期了,终于有了进展,或许在大牛看来是微乎其微的修改,但是在我看来是一次成功。我也把我的心得总结在博客中。

    首先,我学习了mflood的路由协议的修改,照写了一遍,感觉挺顺利的,所以就想心思小小改动下,争取效果有所优化。当时的想法就是利用节点之间的距离作为路由参数,如果节点收到比自己更远的节点的转发包时,直接丢包。一开始,我是在mflood上面修改的,实验之后发现居然没有变化。想了两天,才想明白原来节点没有机会去比较距离参数,因为大家都是一收到包就转发,而收到转发过的包,就会因为序列号旧而被丢弃,结果当然无法实现我自己距离参数的想法。

     思考过后,我考虑用原始的flooding做,也就是说,我首先把mflood中关于序列号比较的函数部分都屏蔽掉,让他成为一个最简单的收到即转发这样的路由协议。修改之后运行。实验中取转发次数为评价指标。分别作了4个节点和10个节点的实验。结果如下:

修改flooding路由协议与mflood的比较 - vivi - vivian
 
 
修改flooding路由协议与mflood的比较 - vivi - vivian
 
     接着,我开始动手修改flooding路由,在flooding包头里面添加了一个距离d参数,在.cc文件中recv函数中添加了计算距离并进行比较的函数,同时修改了forward函数,在转发时,更新了flooding包头。这个过程是痛苦的,我的C++编程基础十分薄弱,前面我也说过了,看代码OK,等到自己下笔了却发现很困难,所以这个部分我来来回回写了好几天,总在make的时候编译不通过,到最后都疯了。最后在一个外国人写的protoname路由协议及其扩展到文章中找到了一点灵感,终于写出了成功的代码,当然为了保险起见,我没有单独编写一个成员函数,因为我担心出错,好在改变不大,完全可以写在recv函数中。紧接着,make成功,实验。(同上)。
修改flooding路由协议与mflood的比较 - vivi - vivian

 

修改flooding路由协议与mflood的比较 - vivi - vivian

 

 大家可以看出,优化是明显的,不过,优化的效果没有mflood突出,现将mflood实验结果贴于此: 

修改flooding路由协议与mflood的比较 - vivi - vivian
 
修改flooding路由协议与mflood的比较 - vivi - vivian
 随着节点数的增加,我预测转发次数会接近mflood,当然我还没有实验,接下来可能会做这方面的实验。

抱歉!评论已关闭.