网络仿真基础概览与入门

A Brief Introduction to Network Simulator

网络方向避免不了用到离散事件驱动的网络模拟器,常用的例如有ns2, ns3, OMNet++。但是最初接触这些仿真器时,想要上手并不是件容易的事。自己学会这几个都吃了颇多苦头,都是面临着deadline被逼的不行了然后全身心投入挺久才学会。回想一下,入门ns2是因为硕士的两个idea都要用到它,刚开始做实验浅尝辄止,稍微碰壁就停下来转而做别事的去了,后来面临中期报告的push,终于定下心研究了一番,最后都利用ns2在传输层实现了自己的两个创新点。学会ns3是因为读博的第一个创新点做了个DCN场景下的Transport design,然后赶某个A会的deadline,ns2的话有挺多地方不太适用,所以就在某个顶会论文的ns3代码的基础上,改了非常多方面的代码最后完成了系统的实现。一直想着在写个在ns2和ns3方面的文章讲述下自己对于学习这两个仿真器的心得感受,本篇文章不会详细的介绍ns2 or ns3的语法知识,更多的是希望通过这篇文章让入门者对ns系列软件从框架上有个整体的认识,更加清晰的认识如果要用到ns系列的仿真软件应当从哪方面入手。

为什么要采用网络仿真器

从事网络方向研究的同学避免不了利用实验验证自己提出的算法或者协议,验证的办法无非是数值模拟、网络仿真器以及Testbed。数值模拟比如可以用python或者Matlab自己编写个程序对自己的策略进行验证,是最简单最好上手的方法,也是最廉价的方式。Testbed通常用小规模的真实机器模拟真实的环境,最能模拟自己策略的真实状况,这种方法需要较大的。这两个对比,前者虽然简单,但是通常不能反映真实的网络状况,后者可以接近真实的反映真实状况,但是不仅上手难度大,同时也需要较高的成本,例如我的方向是DCN,如果搭建Testbed一般状况下至少需要3台以上的服务器,实验室计算资源紧缺,显然我自己占着3台服务器跑上自己的协议不现实。而网络仿真器则是在这两者之间取了个tradeoff,既具有一定的真实性也不需要*太高(其实还是挺难的,但是相对上手Linux内核还是简单一些)*的上手难度和金钱成本。

NS系列软件的发展

回溯下历史,NS的第一个版本,也就是ns-1是由REAL仿真器演化出来,开发自1995-1997年,编程语言采用C++和tcl。ns-1其实我也既没听过也没用过,也是看了wiki后才了解到了些信息。后来过了没多久就又有了ns2,ns-2是ns-1的演进版本,编程语言采用C++和Otcl,可以看到在编程语言上ns2和ns1的区别是脚本语言从tcl变为了otcl,多的这个字母O其实是object的意思,也就是说ns2在ns1的基础上,对于前台的仿真脚本语言增添了对面向对象的支持,自从ns2推出以后ns1事实上就没有被继续维护了。

ns-2应当是名声最大应用最广泛的仿真软件了,本科时上短距离无线通信的课时,就被老师布置过用ns2仿真的课下作业。当时老师布置的任务其实现在看来很简单,就是简单的利用已有协议和模块搭建一个网络仿真场景,其实并没有涉及c++代码的编写,只是用otcl语言就能完成。但是当时对于这个otcl+ns2这种模式一头雾水,后来抱室友大腿才交了作业完事。采用两类语言相结合的模式也是ns2相对较难上手的原因之一,尤其是还要再新学习一门新的语言。

后来再往后发展,由于网络的需求和硬件设施的变化,原有的ns2难以满足日新月异的网络环境变化,例如不支持多网卡、不支持跨层传输等,这时需要一个新的功能更强大的网络仿真器来替代ns2。ns3在2006年被推出,ns3虽然名字看着应该是和ns1、ns2一脉相承,其实并不是这样的,ns3和ns2应该说是两个不同的软件。ns3的编程语言也变成了大家更容易的上手的C++ & python,也就是后台具体的源码还是C++,然后前台的仿真语言由ns2的otcl变为了c++或者python。

有时间再写。。

为什么要采用两个语言
读研期间用到ns系列软件,我们任务的重点在哪里
ns3模块和组件详解
To be continue…
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值