记录研二时协议改进的心酸历程
AODV改进和仿真建议:
背景:研一暑假(2021.07)导师告诉我研究方向,并且发给我几十篇相关文献,还告诉我后面可能需要用到NS2做仿真。
当时自己感觉很迷茫,特别在阅读完文献之后也不太清楚从哪里找小论文的创新点。后来找到创新点之后不知道如何实现,NS2对新手特别不友好,实验室没有人用过ns2,完全要从0到1,这一点是最难的,也是最迷茫的。因为ns2不再维护和更新网上的学习资料特别少,故写下这篇文章给这条路上的同道中人一些参考意见,少走弯路。最近忙着投刊和找工作,关于网络仿真协议的改进过段时间再详细阐述,也会把我改进的过程和方法写在后面的文章上。
1.文献阅读:
可能大家觉得文献阅读没什么用,那就大错特错了,因为只有通过大量文献的阅读你才可以知道这个方向的热点,最重要是能够提高你的知识面和后面论文的写作能力,如果小论文实验做完想发个好期刊,没有这种阅读积累和写作是很痛苦的。不过文献阅读也会走很多弯路,有很多点其实后面根本用不上,但是又不得不走,如果你觉得迷茫,最好找你的导师汇报一下学习内容,建议通过文档的方式,只有这样能让导师才更加直观地了解你的学习方向。
- 学会怎么查文献
- 学会怎么看文献期刊的分区即文献质量
- 做下阅读笔记,后面开题或者小论文都可以用上
- 找到你的小论文创新点
2.学会仿真:
对于网络方向的,我觉得仿真真的很重要,我想给的建议是:如果要改进或者设计协议,能用matlab的,坚决不要用ns系列的仿真,因为真的会让你绝望。一定需要用到ns2的同学有以下建议:
- 先要安装好ns2环境,这个刚开始可能觉得有点难,但是安装过一次之后就很简单了,我是直接安装了Ubuntu18.04 +ns-2.35,具体的安装步骤网上有很多,不过要用到MAODV的同学需要安装ns2.26,因为高点的版本需要改其他源代码,比较麻烦。
- 网上找一个教程,按照教程跑一个实验,包括Tcl脚本,拓扑图,AWK处理tr文件,学会gnuplot如何画图。
- 之后熟练掌握shell常见命令,Tcl每个代码的含义,AWK代码处理数据的方法,掌握gnuplot调整图片样式,学会gnuplot其实可以画出很好看的图像,就不需要使用matlab或者originlab了。
- 上面的基础完成之后就是要学会自己写脚本,最重要的来了,自己写批处理文件,这个是真的爽,写完之后就可以一键运行无数次实验仿真和文件处理画图,我见过很多人居然一次次跑实验!各位想想,一般的网络仿真每组得跑50次左右,一个图至少5个点,一个图就得跑250次实验,一次次手动运行也够呛得了。我每次改完源代码就是让它跑两天两夜,然后自己出图。
3.路由协议源代码修改和改进:
目前我改进的是路由协议,还没有改过跨层协议,导师要求我大论文第二个点设计一个跨层协议,后面如果设计出来了再和大家分享
路由协议改进建议,以改进AODV协议为例:
- 学会往ns2添加协议,最好多添加几个,这样以后好对这几个进行对比。
- AODV主要改的文件是aodv.cc文件,代码有1389行,改起来不是表面那么容易,首先要有C++分裂对象的基础,不然很难改动
- 之所以推荐大家能用matlab的决不用ns,是因为源代码难改,没有一个集成的IDE,没有一键运行找错误,只能debug。要改进aodv.cc之前,先熟悉aodv协议的原理和过程,再在里面改代码。
- 改代码的时候尽量做好标记,毕竟改完差不多2000行了,具体怎么改因人而异,后面有空了我把自己的改进分享出来供大家参考。