十余年陪伴NS-2的心得体会

鐵筆文

       从2007年9月开始接触NS-2,至今已有十余年了。十余年来,NS-2帮助我拿到了博士学位;完成了国家自然科学基金青年基金(61601475)、中国博士后基金面上项目(2013M542527)、装备发展部重点实验室基金(614210401050317)、航空科学基金(201555U8010)和陕西省自然科学基金(2014JQ8310)等科研项目;帮助我在国内外知名期刊发表了Ad Hoc网络、水声传感器网络和飞行自组织网络领域的研究成果。NS-2是一个巨人,功能涵盖有线网络仿真和无线网络仿真多个领域,而我所做的工作只是站在巨人肩膀上的沧海一粟。

       将时间轴推到2007年,我开始博士学业,刚接触NS-2,用一周时间都安装不上。NS-2是开源网络仿真软件,代码对使用者完全可见。NS-2不是商业软件,没有商业软件操作便捷。当时的计算机硬件配置较低,CPU、内存和硬盘性能有限。我用的内存1G的台式机,运行tcl例子,反应明显变慢。我不擅长编程,更不是编程高手,NS-2仿真过程中的命令行操作一开始令我非常头疼,使用NS-2仿真操作非常麻烦。我也听到身旁的很多老师和师兄说,NS-2的学习过程特别陡峭。

       到了一个新的环境攻读博士学位,我之前没有无线网络的研究基础,也没有强大的编程能力。所以,我当时面临的学业压力是可想而知。接触NS-2之后,我发现在Ad Hoc网络路由协议研究领域,NS-2的源代码是非常丰富的。我编程能力不强,但是改人家现有协议的源代码,我还是具备这个能力的。从我查阅的中文英文文献看,路由协议的研究成果是最多的。当时,也有同行跟我讲,“路由协议都做烂了,难出成果!”。这瓢凉水浇的我即刻出现了心理波动,又快速恢复了平静。我想既然别人能在路由协议这个领域取得成功,我也一定能行。

       在这里还要说一下,我的博士导师是我们大学的名导,我导师上硕士的时候,我们学校那届硕士共有13人,那时硕士的含金量是杠杠的。我的导师知识渊博、治学严谨、作风务实、待人和善、和蔼可亲,是一个真正的学者。导师经常挂在嘴边的话是:“一点点”。就是在前人的基础上改进一点点,有一点点和别人不一样。这样务实的导师,我真是三生有幸。导师非常支持研究Ad Hoc网络路由协议,并用NS-2仿真。

       研究领域定了,仿真软件定了,我的博士研究生涯开启了。博士阶段的研究关键是创新,需要阅读大量的中文、英文参考文献,这对于大多数博士生来说并不是问题。对于我研究的领域而言,仿真是非常重要的。

       NS-2曾经是网络仿真领域的霸主。国内外研究者都为NS-2的推广做出了不可磨灭的贡献。在学习NS-2的过程中,我也没日没夜的手捧着徐雷鸣那本《NS与网络模拟》,经常浏览百思论坛和中国*柯志亨老师的网站以及外国知名学者的博客,这些都让我受益匪浅。

       怎样用NS-2去仿真呢?这个问题困扰了我很久。当时的NS-2书籍大都借鉴或翻译英文手册,鲜有自己建树。我阅读了所有的NS-2书籍,也只会添加MFLOOD协议,运行tcl脚本,简单的处理trace。这只是用NS-2的初级阶段,距离完成一篇论文仿真的高级阶段想去甚远。苦苦思索,加上导师和师兄的指导帮助,激发了我深入学习NS-2的灵感——精准复现一篇高质量文章的仿真。经过三个月的努力,我把一篇文章的仿真复现了。我把仿真结果给导师看,导师非常满意。尽管已经进入了NS-2仿真的高级阶段,但此时的仿真工作依然非常麻烦,尤其是仿真大规模网络场景。当时我有一个梦想,就是把NS-2用得像MATLAB一样便捷。

       2011年底,我拿到了博士学位,到了工作岗位。环境变了,时间变了,但是我对NS-2的陪伴依然。无论春秋冬夏,无论Ubuntu、Fedora、Cygwin,我依然是那个用命令行运行NS-2开展网络仿真的我。我要实现我的梦想,为此我竭尽全力每天进步“一点点”。不积跬步,无以至千里;不积小流,无以成江海。正是“一点点”的逐步积累,才有了今天在NS-2仿真上的闲庭信步。我不是NS-2的设计者和开发者,但在使用上我可以比肩最好的外国人。我用NS-2仿真了水声传感器网络、车载自组织网络、飞行自组织网络和卫星通信网络。可以说,从水下到空中,从二维到三维,水里游的、地上跑的、天上飞的我都用NS-2仿真了一点。在科学的殿堂面前,我依然是非常渺小的,我的幸运是站在了NS-2这个巨人的肩膀上。

       当前,NS-2仿真的资源远逊十年前,柯老师的网站已经关闭了,很多国外的网站已经不能访问了,这给初学者的学习带来了难度。NS-2仿真似乎出现了断层,很多知名985高校的老师都难以驾驭,导致大量的博士生、研究生和本科生茫然不知所措。NS-2网络仿真需要坚守着和传承者,坚守领悟NS-2网络仿真精髓,传承发扬NS-2的实践经验。我会一直坚守在这个领域,努力帮助更多的初学者学会、用好NS-2,为提高我们国家网络仿真水平贡献自己的绵薄之力。

上一篇:如何在 Linux 中使用 Asciinema 进行录制和回放终端会话


下一篇:开源|ns4_frame分布式服务框架开发指南