网络实验平台与计算实验方法研究与展望
2018-12-20杨林瑶李玉珂韩双双王晓
杨林瑶 李玉珂 韩双双 王晓
当前的网络体系结构复杂,封闭的网络内置大量复杂的协议,缺乏高效的资源管理能力且不能提供定制化的服务[1−2],大量共存的不同版本的网络协议和设备使得网络难以形成简单统一的标准,因而越来越难以满足用户快速增长的需求,为此,迫切地需要对现有的网络进行升级改造.然而,网络升级是一项极其复杂且花费巨大的工作,网络的不可控、易变和不可预测等特性为网络的设计、分析和比较带来了极大的挑战.
网络仿真通过计算机软件建模网络中的节点、路由器、协议等实体,将网络中的行为如收发数据建模为随机发生的离散事件[3−4],通过对离散事件的处理产生网络中的状态数据,因此,可以预测网络的运行结果.网络仿真技术能够灵活可靠地设计和拟合网络[5−7],能够以较低的成本进行网络设计和实验,为定性分析和设计网络提供有力的手段,对于网络的发展具有重要作用.
当前,国内在网络仿真软件的研究和开发方面的成果不多,但国外已经有很多成熟的应用软件.这些仿真软件可以按其适用的范围大小分为两类,其中,适用于大多数类型网络的称为通用型网络仿真平台,如开源的 NS-2[8−9]、NS-3[10−11]、GloMoSim[12−13]、OMNet++[14−16]、JSIM[17−18]、 JiST/SWANS[19]、 GTNetS[20]和SSFNet及商业仿真软件OPNET[14]、QualNet等[21−22],另有一些适用于某一领域的专用型仿真平台[23−26],它们极大地方便了网络研究,有效提高了网络设计的精度和效率.
然而,现在的网络仿真技术还面临着模型修改比较麻烦、虚实交互性不足、模型不能很方便地移植且无法在线指导网络优化等问题[16].为了改善当前网络复杂的架构,降低网络升级的成本和复杂性,Mckeown教授提出了转发与控制相分离,控制逻辑相对集中的软件定义网络(SDN)技术,它极大地提高了网络的灵活性和开放性,但是仍无法实时控制网络优化.为此,文献[1]进一步提出了平行网络架构,它利用大数据构建与真实网络相对的人工网络,在人工网络上进行大量的计算实验,可以有效拟合实际网络的状态并推断出最优的网络运行方案,从而指导实际网络自动进行优化[27−31].通过平行执行的反馈机制,人工网络还可以根据实际网络的反馈自适应地调整自己的模型,从而达到更高的精度,不断地动态逼近实际网络的运行状态.
随着人们对于高质量网络服务的需求不断扩大,网络科学正处于蓬勃发展的时期,网络仿真技术对网络科学的发展和应用至关重要.为了便于研究人员从数量庞大、特点不一的仿真软件中有根据地选择合适的仿真软件,本文对主流的通用型的网络仿真软件进行了梳理,并对当前的网络仿真技术的问题和缺陷进行了分析,针对这些问题,本文介绍了基于平行网络系统架构的改进方法,即计算实验方法 [27−42].
1 仿真原理及发展现状
1.1 网络仿真的原理
网络仿真是对网络中随机发生的行为如丢包、延迟等的模拟[3],因此,网络仿真软件大多是离散型仿真器.网络仿真的原理框图如图1所示,仿真软件大体由3个核心功能组件和3种数据结构组成.未来事件表用于记录将要处理的离散事件,按照先进先出的方式组织.在进行仿真时,由调度器控制从未来事件表中选取队首的事件进行处理并将其从表中删除,然后根据事件的计算结果修改全局变量即系统状态表,并将产生的过程数据记录到统计数据表中.然后接着取出下一个队首的事件进行处理,直至队列为空即为仿真结束[4].
仿真时钟用于记录仿真的进程,随着仿真的进行而推进,一般用于指示处理的离散事件的数量.为了模拟网络中时常发生的随机事件如数据包的丢失等,网络仿真软件需要引入能够产生可靠随机数组合的随机数发生器[5].当前的网络仿真软件内部的随机数发生器一般是利用特定的算法实现的伪随机数发生器,本质上不具有真正的随机性,它们具有一定的循环周期,在算法遇到循环周期值后会周期性地产生重复的随机数,此时便不能准确地模拟网络的随机行为[6].因此,当前的仿真器对网络的规模有一定的限制,随机事件不能超过伪随机数发生器的模拟能力.
1.2 网络仿真发展现状
网络仿真兴起于20世纪80年代,它的出现大大减小了网络设计的周期,降低了网络研究的复杂性.现在,仿真已经成为工程师设计和部署新网络,研究人员研究新协议和新结构必不可少的环节,对网络通信的建设至关重要.
网络仿真主要被用于网络性能评估和网络吞吐量预测、新的网络协议的开发试验、网络部署的实验规划等领域[7],具有快捷方便、灵活性高、成本低、精度高且可以对较大型的网络进行模拟等特点,因此具有广泛的应用.评价网络仿真软件的性能指标主要有:1)准确度,即软件对真实网络环境的刻画的精细程度;2)仿真能力,即软件在满足精度要求的条件下所能够仿真的最大的节点数量;3)速度,即软件在一定节点规模下所需要的仿真时间;4)灵活性,即模型修改的方便程度;5)可扩展性,即软件添加其他工具或个性化修改的方便程度;6)易用性,即软件的用户支持,包括其用户界面、说明文档和社区支持等.
当前,网络仿真领域已经产生了数量庞大的仿真软件簇,它们大多基于分组级设计,都可以在单机上运行.但是每种软件都具有不同的特点,可以满足不同的特殊需求,例如物理层的仿真大多使用对底层刻画更精细的NS-2[8],大规模网络的仿真一般应使用具有更快速度的分布式的仿真软件,如果需要对软件进行个性化的扩展则必须选择开源的平台.因此,用户必须根据面向应用,根据自己的特定需求选择合适的仿真平台.为了为研究人员提供科学可靠的选择标准,帮助他们高效率地完成实验任务,我们将对主流的通用型的网络仿真平台的特点进行介绍,并对它们的优缺点进行对比分析.
2 主流仿真平台介绍与分析
2.1 仿真平台简介
2.1.1 NS-2
NS-2是一个基于面向对象思想的离散事件模拟器,它基于Otcl和C++语言设计.C++主要用于编写底层的协议和库,具有较高的效率;Otcl用于编写上层的网络配置,具有更高的灵活性,易于修改.NS-2在仿真时通过生成trace对象保存过程数据,并在仿真结束后通过NAM 对数据进行可视化分析.
NS-2是最早的比较成熟的网络仿真软件,目前已经形成了十分完备的协议库,可以很方便地调用如TCP、UDP、FTP等协议库及实现RED、CBQ等路由管理机制及绝大多数路由协议的仿真,同时它还支持绝大多数网络场景的仿真,支持简化的OSI协议分层[9].但它的双语言架构限制了它的可扩展性,同时也降低了用户的操作体验.
2.1.2 NS-3
NS-3是对NS-2的升级,NS-3具有更高的灵活性,采用C++单语言架构,因此与NS-2并不互相兼容[10].NS-3支持部分python扩展,可以更容易地添加模型或扩展工具,因此,具有更强的可扩展性.它在仿真过程中通过pcap文件记录仿真过程数据,仿真结束后可以使用PyViz、NetAnim、TcpDump及Gnuplot等[2,11]多种外部工具对数据进行处理及可视化分析.
NS-3属于正在建设中的网络仿真器,目前对协议的库支持还不完备.另外,其GUI是命令形式的,用户文档虽然比较全面但是可读性较差,用户支持也还不够强大.
表1列出了一些NS-2与NS-3的对比,以便更清楚地展现它们之间的联系和区别.
表1 NS-2与NS-3的对比
2.1.3 GlomoSim
GlomoSim是美国加州大学洛杉矶分校研发的基于库的并行仿真软件,采用模块化的思想设计,主要用于ad−hoc无线网络的仿真.它基于Parsec[12]编程语言编写,支持OSI协议分层,每个模块专门用于模拟某一层协议[13],层与层之间可以通过标准的API接口互相调用,实现多层协议联合仿真,有利于开发的快速集成.GlomoSim引入网格的概念,每个网格中的实体可以仿真若干节点,且实体的数量不需要随节点数量增加而增加,因此,少量的实体便可以仿真大量的节点,简化了内存资源分配和上下文切换的问题.同时它还支持分布式和并行操作,具有较强的处理能力,最多支持上百万节点的仿真.但是它对TCP协议的支持不强,且缺乏良好的GUI支持.
2.1.4 OMNeT++
OMNeT++是一个通用的离散事件仿真器,原则上可以模拟任何离散的系统交互行为,目前已经有很多网络方面的扩展应用[14].OMNeT++模型的结构是一种基于模块的嵌套层次结构,模块可以是原子级的也可以是由其他模块组成的,彼此之间可以互相通信.OMNeT++基于C++编写,同时可以用高级仿真语言NED编写模型[15].OMNeT++具有良好的图形用户界面及完善的用户说明文档,使用起来相对比较容易.OMNeT++在设计时就十分重视可扩展性,它的程序兼容性很好,可以很方便地进行移植.但是,它不支持OSI协议分层,同时对移动性模型的建模比较弱.
2.1.5 OPNET
OPNET最早由麻省理工学院受军方委托研发而成,目前由OPNET Technology公司进行开发和维护,是应用最广泛的商业仿真软件,支持现有的绝大多数网络和协议模型[16],用户可以直接调用库模型构建自己的模型.OPNET基于四层网络分层构建模型,Proto−C层通过Proto−C语言编码模型行为,过程层用于实现节点的功能,节电层编码节点的内部结构,网络层实现网络的拓扑结构和整体配置.
OPNET具有极高的仿真效率,可以同时执行多种参数的仿真,并且可以与真实环境软硬件进行交互.OPNET提供良好的GUI(用户界面如图2)和用户手册,比较易于使用.但是其开放性较差,使用起来较为繁琐,软件本身提供的大量模型和组件往往不能覆盖用户仿真的全部需要,且其协议模型更新比较慢,用户自建新的协议和模型需要很高的技术要求,这些都导致其推广普及比较困难.而且其伪随机数发生器的循环长度比较小,无法进行大规模网络的仿真.
2.1.6 J-SIM
J-SIM 是一个用Java开发的基于组件的松耦合的通用仿真平台.节点、协议、连接等元素在JSIM中都是组件,大的组件可以由小的组件构成,组件之间可以通过端口进行通信.组件是相对独立的实体,可以单独对组件进行修改而不需要考虑整体网络模型,因此,J-SIM具有较高的灵活性.其仿真运行由虚拟机执行,可以跨操作系统平台,因此,具有良好的可移植性.为节省仿真时间,J-SIM 会将结果存入数据库,在仿真前首先查询数据库,如果查到相同的仿真模型,则将结果直接返回[17].
J-SIM 支持网络分层,可以仿真任意层的网络协议,并且可以实现交叉层的仿真.J-SIM 的仿真模型可以直接用图刻画[18],更加形象易懂,且模型可以作为子图添加到其他模型中,大大降低了用户的重复工作量.同时,J-SIM具有良好的扩展性,可以添加很多外部工具如NAM使用.
但是,J-SIM缺少全面的说明文档,用户难以得到良好的支持.且其伪随机数发生器循环周期同样较小,难以支持大型网络仿真.
2.1.7 JiST/SWANS
JiST/SWANS也是一种基于Java虚拟机搭建的无线网络仿真平台,其基本组成成分是组件,模型可以通过组件结合而成.JiST/SWANS由4部分组成:编译器、虚拟机、仿真时间内核和字节代码重写器.仿真过程为:首先对模型代码进行编译,然后在加载时动态重写代码,最后由仿真时间内核生成仿真时间执行语义,控制虚拟机执行代码[19]并产生相应的仿真结果.
相比于其他的仿真软件,JiST/SWANS无论在内存还是时间上都非常高效.JiST/SWANS的仿真模型直接用Java编写,非常简洁方便,它直接在Java虚拟机上运行,因此,可以灵活移植到任何操作系统平台上而不需要修改.
2.1.8 GTNetS
GTNetS是基于C++编写的大型分布式网络仿真平台,主要面向大型网络设计,其设计理念是创造一个完全近似于实际网络的模拟环境,以达到尽可能高的仿真精度.GTNetS的每一个协议库都是一个独立的C++类,协议按照现实中的协议分层设计,不同层的协议栈之间严格独立.GTNets中的数据包含有一类数据单元PDUs用以定义数据包的传输协议,这些数据单元会随着数据包在协议栈中的上下传输被添加或删除.其节点也是按照真实的网络节点的功能设计,每个节点通过接口与其他节点或子网进行连接[20].GTNetS还具有良好的可移植性,其程序可以很方便地移植到真实环境中.
2.1.9 SSFNet
SSFNet是一个用于网络仿真的Java SSF的组件的集合,主要用于仿真IP层以上的协议.SSFNet模型是自我配置的,也就是每一个SSFNet类实例可以通过查询配置数据库自动进行配置,并且在扩展DML的帮助下实例化一个仿真.SSFNet的主类下包含两个衍生类[16]:SSF.OS用于建模网络中的节点,SSF.NET用于构建网络中的连接.SSFNet仿真的运行过程为:首先SSFNet中的Net.Net对象查询DML库将模型加载到运行配置数据库对象Configuration当中,然后Net.Net对象将实例化所有实体如节点、协议等,最后调用初始化方法进行初始化,仿真程序便开始运行,输出仿真的过程数据.
SSFNet格外重视内存的消耗,因此,在内存上具有很高的效率,同时支持并行化处理,能够仿真较多的节点数量.但是,SSFNet缺少可靠的数据分析工具,功能有所欠缺.
2.1.10 Mininet
Mininet是基于Linux开发的虚拟网络仿真平台,也是目前主流的SDN仿真平台.Mininet可以对基于OpenFlow,OpenvSwitch模型的各种协议进行开发验证,且代码可以很方便地移植到硬件环境中[21].Mininet利用Linux内核提供的轻量级的虚拟机制如进程和命名空间来创建网络模型并实现网络节点之间的数据转发和交互,它可以通过命令行实现复杂的网络拓扑结构的构建和修改,并且提供python API定制各种工具,并可以多人协同进行研发.
Mininet具有良好的扩展性和可移植性,由于它完全基于Linux内核开发,因此其程序可以很容易地移植到其他主机中,一些普通的Linux程序也可以在Mininet中运行.但是,Mininet的CPU周期由虚拟主机、虚拟交换机和控制器共享,CPU的调度器不能准确地控制调度顺序,因此,Mininet的仿真结果精度不高且难以重现.
2.1.11 EstiNet
EstiNet是台湾思锐科技研发的商用SDN仿真器,能够模拟上千个OpenFlow交换机.作为一款商业软件,EstiNet具有良好的用户界面和强大的数据分析工具,它不仅能仿真SDN,还能对网络故障进行快速分析.EstiNet基于一种称为内核重进入[21]的方法设计,其仿真过程如图3所示:首先虚拟主机1的应用程序发送的数据包依次经过各层协议被隧道1抓取,隧道1按照先进先出的顺序将数据送入仿真内核,仿真内核通过仿真协议栈各层依次对数据进行分析,然后仿真内核再依次经过各层对数据进行处理,最后再通过仿真内核的接口将数据依次通过物理层到传输层传送到目的主机2.
EstiNet同样基于Linux内核设计,具有良好的可移植性,一般的Linux应用程序不经修改即可加入EstiNet的仿真内核中.相比于Mininet,EstiNet的结果更加精确且可以复现,具有更高的性能表现.但是,EstiNet商业软件的属性限制了它的灵活性,同时,它也缺乏全面有效的说明文档和API,目前的使用并不广泛.
2.2 分析与评价
网络仿真是网络科学研究和通信网络协议开发必不可少的重要手段,网络仿真平台具有数量庞大、适用范围不一的特点[22],本章对比较常用的通用网络仿真软件进行了介绍.其中,NS-2是学术界最流行的网络仿真平台,尽管它存在灵活性差,难于使用的缺点,但是由于它的模型库涵盖完善的协议,因此广受青睐.NS-3是NS-的升级,相对于NS-2更加简单灵活,从C++与Otcl的双语言结构简化为C++的单语言结构,更易操作,但是目前模块化协议并不成熟,缺少对已有协议的模块化支持.GlomSim的最大特点是通过分布式计算和并行处理技术实现了大规模网络的仿真运算,能够支持百万级的节点数量,其缺点在于缺少TCP支持并且缺乏良好的用户界面.OMNeT++也是一个很活跃的仿真平台,被学术界广泛使用,它的嵌套层次结构可以提供非常灵活的仿真结构,易于修改和开发,但是缺少对层次协议和移动性模型的支持.OPNET据称是世界上最先进的仿真平台,得到了广泛的应用,它是不开源的,虽然向研究人员提供免费的应用,但显然不如开源的平台灵活.J−Sim是一款基于Java开发的仿真平台,它基于图形化思想设计,拥有很好的GUI,允许画图设计网络,大大简化了代码设计,并且可以动画展示,但是它的说明文档不充分,使用范围不如上述的平台广.JiST/SWANS是一个基于Java虚拟机的仿真平台,它可以直接用Java编写仿真模型,并且在Java虚拟机上运行,因此,比较灵活方便.GTNets的设计理念是创建一个完全近似于真实网络的模拟环境,代码可以在真实网络和虚拟环境之间很方便地移植.SSFNet也是基于Java开发的,它的主要优点在于内存消耗比较小并且节点可以自动配置,但是只能仿真IP层以上.
目前SDN网络比较流行,也是未来重要的发展方向之一,经典的网络仿真平台一般对SDN的支持不够强大,例如NS-3只能支持0.89版本的OpenFlow协议,而最新的OpenFlow协议已经升级到1.5以上了,所以针对SDN网络一般使用专门的SDN仿真平台,其中最有代表性的是Mininet和EstiNet.Mininet是一个开源的SDN网络仿真平台,Mininet运行在Linux内核上,采用基于流程的思想设计,可以用python编写仿真程序,是目前使用最广泛,最活跃的SDN仿真软件,但是Mininet的仿真结果可能不能复现且精确度差一些.EstiNet是商业化的SDN软件,兼具仿真和调试的功能,具有较高的精度并且结果易复现.
除了以上的通用型的网络仿真平台,还有一些专用型的仿真软件,它们大多只在相对固定的网络类型下使用,例如主要用于P2P网络的设计与分析的QueryCycle[23]等,主要用于仿真无线传感器网络的SensorSim、Castalia[24−25],及常用于车辆自组织网络仿真的TraNS和Veins[26]等.同时,它们通常基于上述常用的通用网络仿真平台内核,例如,TraNS基于NS2结合微观交通仿真器SUMO设计;SensorSim建立在NS2的802.11网络模型之上;Veins则基于OMNeT++和SUMO扩展了一套全面的车联网仿真模型.因此,上述通用型的网络仿真平台可以实现大多数网络场景的仿真和模拟,研究者和开发人员可以有根据地选择相应软件进行仿真或扩展.
3 问题与缺陷
网络仿真技术经过几十年的发展,现在已成为网络研究的主流手段,拥有大量比较成熟的软件平台,基本可以满足当前网络研究的需要.然而,随着网络规模进一步扩大,网络的复杂性急剧上升,当前的网络仿真技术在性能上越来越难以满足实际的需要.同时,随着人们对网络性能的要求进一步提高,网络优化升级是一项严峻的挑战,网络仿真对于网络优化的支持显得有些不足,难以支持高效的设计和优化现实网络.因此,网络仿真技术还有许多问题有待改进.
首先,随着网络节点规模的不断扩大,对仿真能力和计算能力的要求也进一步提高,单机的处理能力已经难以满足高效率仿真的需求,因此,仿真软件需要进一步提高其效率和处理能力.提高仿真速度的主要方法有:并行和分布式处理技术、分段仿真技术、混合模拟技术等[8].目前大多数仿真软件主要通过分布式处理技术提高仿真的运行速度,但是其他的加速技术如何应用网络仿真软件以进一步提高平台的处理速度还有待进一步研究和应用.
其次,网络仿真要求仿真平台必须能够很好地逼近真实的网络环境,要求其产生的结果和过程数据必须具有较高的准确度.仿真平台的准确度主要取决于它们对现实环境刻画的精细程度,即平台对细节的刻画.目前大多数软件对于小规模的网络可以比较精细地刻画出网络的细节,但是对底层的物理层和链路层的刻画不够精细,对于大规模的网络精确地逼近也显得比较困难.
除了细节的刻画,仿真软件的精度尤其是仿真大型网络时的精度还取决于随机数发生器的质量和对仿真数据的分析能力.目前仿真软件的伪随机数发生器的循环周期比较小,在仿真大型网络时会因随机数产生循环而影响结果的精度.仿真软件的数据分析方法可以分为两种,一种称为在线序列分析,这种方法是指在仿真的同时计算误差,只有当误差充分小的时候仿真停止,这种方法可以获得较为精确的仿真结果;另一种方法称为离线序列分析,为了获得误差较小的结果,离线序列分析可能需要用统计独立的伪随机数重复仿真过程,直到获得可靠的结果.目前多数仿真软件不支持在线序列分析.
除此之外,仿真软件的灵活性和虚实交互性也需要进一步提高.目前仿真模型的修改十分麻烦,只能人工在仿真开始前或结束后进行修改,需要根据结果人为分析模型的精度,一个可靠的模型往往需要数次测试和修改.因此,仿真平台需要有更高的灵活性和自适应调整能力,既可以简化人的操作,又可以智能调整模型.另外,虚实交互是网络仿真的必然要求,仿真代码要能够很方便地移植到硬件设备中,应当能够与真实的网络环境进行交互.
从本质上讲,仿真技术只能不断地逼近真实的网络,它是以真实网络的状态作为唯一的标准的,而无法对实际网络产生影响,无法指导网络优化运行,难以满足未来网络升级改造的需要.为此,我们将引入平行网络架构及其计算实验方法,该方法不仅可以模拟实际网络的状态还可以指导网络自适应地优化运行.
4 平行网络计算实验方法
4.1 平行网络架构
平行网络借鉴了SDN转发与控制分离的思想,基于ACP理论(即人工社会、计算实验、平行执行)设计[27−29].其利用大数据解析复杂网络的思路为:利用人工网络系统对复杂网络系统进行建模,通过计算实验对复杂网络各种状态进行模拟、测试和评估,得到网络的优化运行方案,借助平行执行使人工网络和真实网络虚实互动、引导和管理整个网络系统[30−31],通过以上过程实现对复杂网络系统的描述、预测和引导.平行网络的基本架构如图4所示,它主要由3部分组成[32−33].
人工网络系统是与实际网络相对应的虚拟的网络,它是数据驱动的,首先对实际网络系统的“小数据”进行获取、提炼和分析,构建与真实网络相接近的网络模型[34].接下来人工网络根据实际网络的特点,通过不断更新数据、完善模型,不断生成大量的人工网络数据,这些数据同实际网络数据一起构成了复杂网络问题求解的大数据[35].利用人工网络的大数据,可以学习到网络的经验知识,并获得网络的优化方案,使人工网络优于实际网络.最终要达到的目标就是通过人工网络系统和实际网络系统之间的平行互动,使实际网络系统逼近人工网络的状态,以人工网络来引导实际网络的优化运行.
计算实验是对网络大数据进行知识发现的手段,它可以对网络大数据进行大量可控、可重复的实验,通过机器学习、大数据技术等数据分析技术可以发现大量的知识,从而预测未来网络的状态,并对不同的网络运行方案进行评估,从而产生最佳的优化方案.
平行执行是实际网络系统与人工网络系统之间的虚实交互过程,即将人工网络的计算实验产生的方案实施到实际网络中,通过实际网络的反馈观察其产生的结果,并进一步调整人工网络的模型和数据,从而实现持续在线的管理和优化实际的网络系统[35].
平行网络借助网络大数据构建与真实网络相对应的人工网络,在其基础上基于代理的方法构建灵活的模型,通过计算实验对网络大数据进行分析,获取网络的特征,并且通过对模型的试错实验和知识发现,寻找网络的最优运行方案.它不以逼近真实网络为标准,而是实时动态地指导实际网络向优化的人工网络逼近.通过平行执行,使人工网络和实际网络虚实交互、平行调谐,达到实际网络和人工网络共同优化运行.
4.2 计算实验方法
传统网络仿真以逼近实际网络系统为主要目标,主要通过数学建模和数值模拟方法模拟网络的运行状态,只能被动地仿真实际系统,而不能对实际系统施加影响.而计算实验方法通过在虚拟的人工网络上针对不同的模型使用不同的参数进行实验分析[36],可以获得不同的方案的效果,从而可以选择具有最佳效果的运行方案用于指导实际网络的优化.
计算实验是对传统的网络仿真技术的升华,它不仅可以模拟真实的网络系统的运行,还可以评估并发现最优的运行方案,指导实际网络系统实现自适应优化.计算实验将基于传统的仿真技术实现对不同参数的不同模型的运行结果的预测,因此,计算实验平台的内核中将嵌入仿真平台的部分组件.仿真平台的选择对于计算实验平台的设计至关重要,基础仿真平台的选择将主要基于以下几点:是否有较高的准确度、是否开源、是否具有较高的灵活性和可扩展性、是否拥有标准的可编程接口、是否具有全面的说明文档等[37].传统的开源网络仿真平台如NS-2,GlomoSim等都可以作为可选的基础仿真器嵌入到计算实验平台的架构.
计算实验的主要过程是:对实际网络系统的带宽、数据率等“小数据”进行分析,通过代理生成器和场景生成器构建代理模型和仿真场景,由此生成实际网络系统的人工网络模型.通过变换模型的参数值生成多个软件定义的模型,形成大量的人工网络系统.将生成的人工网络系统与实际网络信号结合,通过仿真技术运行不同的仿真场景[38−39],可以生成大量的网络运行数据,人工网络场景数据和实际网络运行数据共同构成了计算实验的网络“大数据”原料.用户可以通过分析网络的物理信号和社会信号,设计出一系列实验方案.通过机器学习和大数据等实验方法,可以获得网络的特征和规律,从中发现适用于某些特定场景和参数的网络“小知识”[40].通过对不同的人工网络模型运行方案的比较和评估,可以获得网络在下一时刻的最佳运行方案,由此得出实际网络的优化方案.
计算实验得到的优化方案通过平行执行过程实施到实际网络系统中,人工网络观察实际网络的运行状态并获得其反馈,通过反馈信号自适应地调整人工网络的模型,使其进一步与实际网络的状态相近.通过实际网络系统的反馈,计算实验还可以评估出该运行方案的实际效果,并将可靠的方案及其条件参数存入数据库,由此形成应对某些不同场景的“小知识库”[41−42],当再面临相同或相似的场景时,首先通过查询和对比数据库的参数,如果有相同或相近的数据,则可以直接将相应的方案取出应用到实际网络中.
计算实验平台具有自动学习和优化的模块,能够通过对大量不同实验方案的结果的评估选择效果最佳的算法和方案.其主要方法是试错和误差反向传播等方法,对于不具有直接修正参数能力的方法,主要通过大量的试错实验,对比其不同的结果,从中选择最佳效果的方法;对于具有自学习能力的算法如神经网络等,可以借助其误差调整机制直接优化算法.
计算实验方法不仅可以实现网络的自适应优化,满足未来网络升级改造的要求,而且在模拟真实网络的性能上也将有优于传统的仿真平台的表现.下面,我们将从各性能指标上对计算实验平台和传统网络仿真平台及SDN仿真平台进行比较分析.图5对传统仿真、SDN仿真及计算实验方法中具有代表性的平台的各项性能进行了对比展示,以便更直观地阐明它们的优劣对比.
准确度:传统的网络仿真方法的准确度依赖于使用者的建模能力,用户必须对研究的网络实现进行科学的分析,在此基础上建立足够精确的模型.模型一旦建立,就需要用户根据仿真的结果判断误差的来源并据此分析和修改模型,直到误差充分小.因此,传统的网络仿真方法的准确度有一个比较小的上界,在实际应用中无法无限地提升.且面对复杂的大型网络,用户将越来越难以创建可靠的模型,因此其准确度将随着网络规模和复杂度的提高而越来越难以达到较高的标准.SDN是对传统网络结构的补丁式的发展,它的主要思想是将传统的网络分层简化为转发层、控制层和应用层的三层结构,从整体上简化了网络的细节.因此,它的仿真精度相比于传统的网络仿真并没有提升,在网络底层协议仿真上甚至会有所降低.计算实验只需要在初始时建立一个尽可能逼近真实网络的模型,人工网络会自动创建大量的模型,一方面计算实验的结果指导实际网络运行,另一方面人工网络会获得实际网络的反馈参数,从而修改模型的参数使其不断逼近实际网络系统的状态.因此,计算实验可以不断自动地提高精度,具有更优异的表现.
速度:传统的网络仿真软件主要通过引入并行计算等技术提升仿真速度,目前在规模不太大的网络仿真上可以获得较高的速度,大规模网络上仍然比较耗时.SDN的仿真软件在速度上尚未做较多的优化,但是其简化的网络结构可以有效降低其数据规模.平行网络借鉴了SDN的简化的网络结构,同时在数据处理上拥有更强的能力,因此,其模拟速度尤其是大规模网络的模拟速度将明显优于传统网络仿真.
灵活性:传统的网络仿真技术一般按照协议分层设计协议,彼此之间紧密相关,某一层的模型的修改必须考虑整体的网络结构,且大多需要对模型整体进行修改和重定义,因此工作量比较大,灵活性比较低.SDN将网络简化为三层结构,将控制层与转发层分离开来,每一层只需要实现本层的功能并向上提供统一的服务,因此其独立性有所提高,灵活性也随之提高.平行网络借鉴了SDN的设计并进一步优化,将网络模型抽象为逻辑独立的代理,每一个代理都是可以单独定义修改的实体,因此,具有最高的灵活性.
可扩展性:传统网络仿真软件中的开源软件具有较好的可扩展性,可以由用户根据需要进行扩展,但是,它们没有提供统一的可用于扩展的编程接口及良好的说明文档,用户必须深入了解平台的结构才能对其进行扩展.Mininet具有良好的可移植性,完全基于Linux开源操作系统平台的架构使其扩展性稍好于传统仿真软件.平行网络在设计时便将扩展性考虑在内,将提供统一的API以便于用户进行扩展.
易用性:传统仿真软件的用户支持良莠不齐,但是经过多年的发展,大体具有可满足的易用性.SDN网络的诞生时间比较短,应用还不是很多,但是其开源软件Mininet也拥有活跃的用户社区,因此,用户支持也不是很差.计算实验平台也将提供全面的说明文档,但是更充分的用户支持还需要未来社区用户的共同努力.
5 结论
本文全面介绍了当前主流网络仿真平台的特点和主要原理,并对它们的优缺点进行了对比和分析,以便研究人员根据自身需要选择仿真平台,从而提高研究效率.结合当前网络技术发展的特点和自适应优化的需求,本文还在平行网络的基础上介绍了计算实验方法.该方法基于人工网络和实际网络大数据,可以运用机器学习等方法分析网络状态并指导网络系统自适应优化.基于定性分析对比表明,计算实验方法相比仿真方法具有更好的性能表现.