扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
对于如何验证网络协议的正确性和进行相关性能测试,人们提出了很多方法,目前最广泛使用的方法就是通过虚拟环境进行模拟仿真。NS-2是进行网络仿真最流行的软件,已广泛被科研院所和各大高校用于进行网络分析、研究和教学。它支持众多的协议,并提供了丰富的测试脚本。
NS-2全称是Network Simulator Version 2。它是面向对象的,离散事件驱动的网络环境模拟器,主要用于解决网络研究方面的问题。NS-2提供在无线或有线网络上,TCP、路由、多播等多种协议的模拟。
NS-2最早来源与1989年的Real Network Simulator项目,经过多年的发展之后,于1995年得到施乐公司(Xerox)的支持,加入VINT项目。NS一直以来都在吸收全世界各地研究者的成果,包括UCB、CMU等大学和SUN等公司的无线网络方面的代码。
NS-2由两种编程语言,OTCL(具有面向对象特性的TCL脚本程序设计语言)和C++实现。之所以使用两种编程语言,是因为模拟器有两方面的事情需要做。一方面,具体协议的模拟和实现,需要一种程序设计语言,能够高效率的处理字节(Byte),报头(Packet Header)等信息,能够应用合适的算法在大量的数据集合上进行操作。为了实现这个任务,程序内部模块的运行速度(run-time speed)是非常重要的,而运行模拟环境的时间、寻找和修复bug的时间,重新编译和运行的时间(run-around time)不是很重要。这种情况下,C++语言是非常合适的。
另一方面,许多网络中的研究工作都围绕着网络组件和环境的具体参数的设置和改变而进行的,需要在短时间内快速的开发和模拟出所需要的网络环境(scenarios),并且方便修改和发现、修复程序中的Bug。在这种任务中,网络环境布置的时间就显得很重要了,因为模拟环境的建立和参数信息的配置只需要运行一次。这种情况下,脚本语言有很大优势,具有面向对象特性的TCL脚本语言可以充分满足需求。
NS-2中节点的结构与实际环境中的网络节点非常相似,如图2所示。对于一个网络节点来说,有IP地址和端口号,这对应的就是图中的地址分类器(Address Classifier)和端口分类器(Port Classifier)。当TCP数据包从节点入口处(Node Entry)进来节点之后,首先在地址分类器处通过IP包头判断IP地址是否与本节点相同,如果相同则进入端口分类器,通过TCP包头获得数据包的目的端口,并把数据包发送到节点相应的端口进行处理;如果在地址分类器处发现数据包的目的IP地址与本节点不同,就将数据包重新发送进入链路,以供其他节点处理。
总之,NS-2为我们提供了一个很好的试验平台。它使用两种语言,C++有利于快速的运行速度;TCL则有利于快速建立试验环境。NS-2中的实体结构也非常清晰,有利于构建新的网络协议和网络实体。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者