
本发明涉及计算机网络领域,具体涉及一种网络中间设备(middlebox)以及该中间设备在网络中的部署方法。
背景技术:
:随着互联网的飞速发展,互联网规模不断扩大,复杂性不断提高,网络管理与控制面临着更大的挑战。middlebox是网络中从源地址到目的地址之间的中间设备,其在网络中除具有转发和路由功能外,还具有提升网络安全(防火墙)、改善网络负载分配(loadbalancer)以及降低带宽消耗(wanoptimizers)等重要的作用。传统的middlebox虽然有很高的处理效率,但是设备昂贵,同时部署和管理不灵活。随着网络功能虚拟化(networkfunctionvirtualization,nfv)思想的提出,middlebox的功能可以由硬件转化为软件实现。同时,软件定义网络(softwaredefinednetwork,sdn)为灵活管理middlebox提供了更有效的方案。这些方案解决了硬件middlebox设备昂贵以及管理不灵活的问题,并且避免了冗余硬件模块的部署。然而,软件实现middlebox也依旧还存在着一些缺陷:1)middlebox之间相互依赖的部署导致数据包处理的链路拉伸,容易引起配置冲突以及网络错误;2)不同的middlebox之间可能会有相同的包处理阶段以及重复的功能模块(例如包分类操作),从而导致资源浪费;3)服务链的存在使得middlebox管理和部署的复杂性仍然难以降低。为了解决上述问题,工业界和学术界尝试着对中间设备做统一设计和管理。但是由于中间设备的结构复杂多样,很多适用于独立的中间设备的统一化无法应用到服务链上;并且大量的方案都是依赖数据包的处理规则,无法提高灵活性。例如现已提出的一个集中化管理的软件定义模型——openbox模型,该模型将中间设备划分为多个不同的功能模块,同时在openbox控制器中部署了算法来实现多种middlebox功能。然而,openbox也并没有做到中间设备的统一化和通用化,并且也没有统一的语言来描述所有类型的中间设备。另一方面,关于中间设备的部署,软件中间设备被部署在虚拟机中,而虚拟机运行在服务器上。现有的方案多是通过优化虚拟机的部署以及虚拟机之间的流量模式来提高资源利用率。比如:1)根据服务链部署和调度流量以在虚拟机层减少通信开销;2)通过允许合适粒度的可编程功能放置来更好的使用网络资源。然而,在这些部署方案中,具有较长服务链处理需求的数据包将会跨越多个服务器或者虚拟机来完成处理,因此,服务器或虚拟机之间的通信开销依旧难以缩减,这增加了较长服务链的数据包的处理时延。技术实现要素:鉴于上述现有技术所存在的缺陷,本发明其中一个实施例提出了一种统一化的、通用的网络中间设备,来简化middlebox的管理以及降低部署难度,避免虚拟机之间或服务器之间的通信开销,缩短数据包的处理时延,增加资源利用率。本发明为达上述目的所提出的技术方案如下:一种网络中间设备,运行于一服务器上,其中所述服务器具有执行计算机程序的处理器;所述网络中间设备包括主控制程序以及数据包处理程序,所述数据包处理程序包括分类程序、重写程序和转发程序;所述主控制程序被所述处理器执行时实现以下功能:从网络控制器获取并翻译指令以进行所述中间设备的管理;从网络控制器获取规则;收集所述中间设备的状态并反馈至网络控制器;以及,根据数据包的处理需要将分类程序、重写程序和转发程序按照不同的顺序进行拼接,形成不同的数据包处理链路;所述分类程序被所述处理器执行时实现以下功能:根据所述主控制程序下发的所述规则对接收到的数据包进行分类;所述重写程序被所述处理器执行时实现以下功能:对数据包进行重写操作;所述转发程序被所述处理器执行时实现以下功能:根据所述规则对数据包进行转发以及对可疑数据包进行丢包操作。本发明提供的上述网络中间设备,采用计算机程序代码来实现(即软件实现),相较于现有的通过软件实现的中间设备,本发明的上述中间设备能够根据当前处理需求进行数据包处理程序的即时创建(创建是指:将分类程序、重写程序和转发程序按照不同的顺序进行拼接),从而可以减少冗余程序,缩短数据包处理时延,提高网络吞吐量;同时对于较长服务链的数据包,无需再通过多个中间设备的不同功能组合来实现,而是可以在同一个中间设备中实现所有处理功能,避免了数据包在多个虚拟机或多个服务器之间进行传输,降低了网络传输延时。本发明的另一实施例提出了前述网络中间设备的部署方法,来将前述网络中间设备部署于软件定义网络中,并实现最小的部署链路开销和获得最小处理时延,避免数据包在多个虚拟机或多个服务器之间的传递而导致的处理时延长、通信开销大以及资源利用率低的问题。为达上述目的所提出的部署方法包括以下两个阶段:第一阶段:根据网络拓扑、链路带宽、资源池容量和历史流信息,为每一中间设备选择一初始部署位置,并通过不断最小化链路开销来获得最佳部署位置;第二阶段:为每一处于最佳部署位置的中间设备分配数据包处理程序以及进行流量调度,以获得最小处理时延。本发明提供的上述部署方法,将本发明提供的前述网络中间设备部署于软件定义网络(sdn)中,部署过程通过不断最小化网络中的最大传输时延和链路开销来不断寻找更佳的部署位置,然后通过将相同功能需求的数据流调度到最优的中间设备上完成处理,既充分利用已存在的数据包处理程序,又实现了负载均衡。附图说明图1是本发明具体实施例提供的一种网络中间设备的架构图;图2是本发明的中间设备实现nat过程的模型图;图3是本发明的中间设备实现prxoy的模型图;图4是本发明的中间设备实现服务链firewall->nat->proxy的模型图;图5是图4中的模型进行程序去重处理优化后的优化模型;图6是本发明部署方法的伪代码;图7是本发明部署方法的第一阶段的伪代码;图8是本发明部署方法的第二阶段的伪代码。具体实施方式下面结合附图和优选的实施方式对本发明作进一步说明。本发明的具体实施方式提供一种用于软件定义网络的中间设备(英文名称为middlebox),该中间设备通过计算机程序来实现,部署于一虚拟机中,虚拟机运行于服务器上,所述服务器具有用于执行计算机程序的处理器。本发明的中间设备部署于软件定义网络中,只需要对网络控制器进行修改升级即可,无需对网络中的交换机作出改动,同时,每个中间设备有一个对应的服务器来为其提供资源和硬件支持。如图1为本发明具体实施例提出的一种中间设备的模型架构图,该中间设备包括主控制程序mcontroller以及数据包处理程序,所述数据包处理程序包括分类程序c、重写程序r和转发程序f。具体地,主控制程序mcontroller被处理器执行时可实现以下这些功能:通过网络协议与网络控制器进行通信,从网络控制器获取指令并进行翻译,从而来管理构成该中间设备的各个程序(例如图1中的cr、de、in以及up,都表示主控制程序对当前中间设备下发的不同管理指令);从网络控制器获取规则(例如数据包处理规则、通信传输规则等)并调整规则有效时长;收集所述中间设备的状态并反馈至网络控制器;以及,根据数据包的处理需要将分类程序、重写程序和转发程序按照不同的顺序进行拼接,形成不同的数据包处理链路。相应地,网络控制器通过升级而增加基础网络数据获取功能、中间设备状态获取功能、流量分配功能、流量更新功能以及流量再分配功能,这些功能都是通过对应的程序代码来实现的。其中,网络控制器的基础网络数据获取功能具体如下执行:与交换机进行通信,交换机通过hello消息主动与网络控制器建立连接,而后交换机和网络控制器的所有交互消息都是通过这个连接来完成的,通过与交换机的通信,主要获取到网络拓扑状态和网络端口状态。网络控制器的中间设备状态获取功能具体如下执行:可以直接使用opennf平台提供的南向接口,通过主控制程序实现与网络控制器交互,主控制程序通过翻译网络控制器指令获取规则,并返回中间设备的网络状态给网络控制器。网络控制器的流量分配功能如下执行:网络控制器依据数据包功能需求,将相同需求数据包调度到同一个中间设备中完成处理,具体是通过执行llfschedule算法来进行流量调度,具体过程后续再述。网络控制器的流量更新功能通过一流量更新程序来执行:llfschedule算法调度流量首先依据相同资源需求,但仍需要考虑负载均衡,因此,流量更新程序监控每个数据包处理程序的资源占用情况以及链路消耗,原则上,每个数据包有两个可选的中间设备,但是当网络资源严重失衡(即出现大量同需求数据包)情况下,流量更新程序会检测到此情景,并在当前网络环境下选择剩余最优的中间设备来完成流量分担;同时若当前网络中数据包较少,根据llfschedule算法,相同处理需求的数据包依旧会被分配至同一个中间设备完成处理,但此时,该方案并非最优,因为数据包分类操作会消耗较大的处理时延,因此对流量的正确预测分析,以及分配会直接影响到网络的处理延时。网络控制器的流量再分配功能,也是通过相应的程序代码来实现:在出现数据包需求极不平衡的情景下,网络中会临时选择当前状态下未使用的最优的中间设备来完成流量分担,在数据包恢复时,该中间设备的资源(是指其数据包处理程序)也需要及时释放,将流量调度到其他位置,进行流量的再分配,该功能是对流量更新功能的一个补充。分类程序被处理器执行时可实现以下功能:根据所述主控制程序下发的所述规则对接收到的数据包进行分类,例如ip头分类、http头分类、载荷分类等,比如在防火墙中,前缀匹配操作检测一个ip地址是否包含一个前缀,根据匹配规则将ip地址分为多个类别。重写程序被处理器执行时可实现以下功能:对数据包进行重写操作,例如对数据包进行ip头、http头或载荷的修改,具体比如loadbalancer(负载均衡器)重写目的ip地址来控制路由路径,一些代理服务器需要重写ip头和http载荷创建新的数据包响应url请求。转发程序被处理器执行时可实现以下功能:根据所述规则对数据包进行转发以及对可疑数据包进行丢包操作。所述中间设备还具有存储单元storage,用于存储整个中间设备的数据或进行缓存,还可提供数据共享,一种实施例中,存储单元storage可以是一个文件系统,用于存储各种状态和数据。在整个中间设备中,数据包在各个程序模块之间的传输是通过功能函数的调用和参数传递来实现的。在后续优选的实施例中,所述中间设备被简化为只有一个输入端口和一个输出端口。通过主控制程序进行数据包处理程序的创建,可以根据数据包的当前处理需要来实时构建处理链路,避免数据包处理模块的重复和闲置资源的浪费。例如,当前数据包需要经过入侵检测系统检测,那么当前的中间设备应当有能够实现检测功能的程序模块,而当前的分类程序(classifier)又没有空闲资源实现该功能,则主控制程序mcontroller检测到后会执行新分类程序的创建,并为新建的分类程序分配规则和资源来实现入侵检测功能。在本发明中,通过分析不同功能的网络中间设备,通过分类程序c、重写程序r和转发程序f来实现不同功能的中间设备和服务链。常见的几种不同功能的中间设备如下表1所示:表1middlebox类型crflayerstoragefirewallipx√2nonenatipip,port√2noneproxyip,httpip,http√7urlipsipcontentx√2infonat-ptipip,port√2nonesocks-gwxx√4noneloadbal.ip,portip,mac√4mac上述表1中的不同功能中间设备都能够通过本发明提供的中间设备来实现,即通过将分类程序、重写程序和转发程序按照不同的顺序进行拼接即可实现。我们以firewall(防火墙),nat(网络地址转换)和proxy(代理服务器)为例,首先使用cjk->rjk+1->fjk+2来描述本发明的每一个单独的网络中间设备,其中,cjk表示第j个中间设备的第k个线程上运行的用于实现所述分类程序的功能的函数,rjk+1表示第j个中间设备的第k+1个线程上运行的用于实现所述重写程序的功能的函数,fjk+2表示第j个中间设备的第k+2个线程上运行的用于实现所述转发程序的功能的函数。则firewall可以被描述为cjk(ip)->fjk+1;nat将内网地址/端口转为外网地址,可以描述为cjk(ip)->rjk+1(ip),对于nat,ip头重写程序被用来书写源地址/端口,nat过程采用如图2所示的模型可实现。proxy相对复杂一些,当某一数据包到达,proxy通过ip头分类器判别该数据包为客户端请求(request)包还是服务器响应(response)包,数据包进一步完成http头分类。对于服务器响应包,url被添加至存储单元,然后http转发操作将内容转发至客户端。对于客户端请求包,proxy首先通过http头分类确定该url是否被缓存在存储单元,若没有,执行图3中miss所指向的路径,proxy会使用分类程序实现ip头分类器的功能,将目的地址相关状态写入存储单元中供共享,并通过http转发程序将内容转发至目的服务器;若已缓存,执行图3中hit所指向的路径,proxy书写源地址相关状态值存储在存储单元供共享并重新建立数据包完成客户端响应,该proxy处理过程采用如图3所示的模型实现。接下来我们根据功能需求进行数据包处理程序的合并、拼接,来实现服务链firewall->nat->proxy的功能,如图4所示,方框10中实现了firewall功能,即根据一定的规则过滤数据包p;转发程序11、分类程序12、重写程序13以及转发程序14和它们之间的数据包传输路径(带箭头的线)共同实现nat功能,将数据包的ip和端口修改为公网地址;多边形15内的部分共同实现了proxy功能。带箭头虚线及其所连接的多个分类程序c代表可重(chong)用的分类程序,当这些个分类程序有充足的空闲资源时,后续的需要分类程序来执行的功能都可以通过这些个分类程序完成;同理,图中的多个转发程序f也具有相似的特性。在更优选的实施例中,还可以通过优化程序来对本发明通过程序合并、拼接所实现的服务链进行优化,调整数据包的处理顺序以合并在一数据包处理链路中具有相同功能的多个数据包处理程序,例如,对于图4所实现的服务链而言,可以通过优化程序来合并多个分类程序,使得数据包的多个分类操作并行执行,多个转发程序也可被合并。进行优化后的服务链firewall->nat->proxy如图5所示。所述优化程序进行优化的方法如下:优化之前,我们定义一些规则来保证本发明的中间设备的正确性。首先,每个数据包处理程序都是确定的,即有正确的状态和类id,各程序会工作正确;其次,在包处理之前,相关的状态一定要准备好,即相关的规则要被插入在各相关的程序中;最后,类id应该是唯一的并且在正确的子集中。根据所定义的这三条规则,我们通过调整处理顺序来合并这些具有相同功能的数据包处理程序,例如firewall将数据包分类为丢包或继续处理包,继续处理包将会根据nat和proxy的规则继续被分类。进行优化即统一在第一步执行这些分类操作,因此服务链firewall->nat->proxy可以被优化为如图5所示。在图5中,我们插入一些空白程序块,这些空白程序块的功能可以被第一个分类程序所实现。接下来,提供本发明中间设备的部署方法,以将本发明的中间设备部署于软件定义网络中的合适位置并获得最小链路开销和缩短数据包处理/传输时延。所述部署方法采用我们设计的mbschedule算法来实现,该算法的伪代码如图6所示,具体包括:第一阶段采用我们设计的mbldecision算法,根据网络拓扑、链路带宽、资源池容量和历史流信息,为每一中间设备选择一初始部署位置,并最小化部署链路开销,以获得最佳部署位置;以及,第二阶段采用我们设计的llfschedule算法为每一处于最佳部署位置的中间设备分配数据包处理程序以及进行流量调度,以获得最小处理时延。其中,mbldecision算法的伪代码如图7所示,该算法的问题可以被描述为求解flownm×maxlen的全局最小值;其中:m表示部署的中间设备节点,网络中所有的节点m构成集合{m};n表示网络中除中间设备节点以外的其它节点,网络中所有的节点n构成集合{n};flownm表示从节点n到达节点m的所有流量;maxlen=maximized(n,m),maxlen表示任意节点n到最近的节点m的最远距离的最小值。如图7所示,我们根据节点度ndegv和频率nfrev来标记节点,通过调整α来调整节点度和历史通过频率对该节点的影响程度,并将归一化结果表示为correlationv。correlationlist被用来表示correlationv的序列,并且和α值相关,归一化公式为:基于k-center算法,我们选择不邻接节点并比较flownm×maxlen来获得最小值,在本发明的中间设备处理能力和链路带宽的限制条件下,这种优化方案减少了计算空间。采用llfschedule算法进行流量调度具体包括:判断网络中所有中间设备当前是否已分配数据包处理程序;若所有中间设备都未被分配数据包处理程序,则根据网络带宽和网络中所有中间设备的处理能力,以最小代价流算法来调度流量;若网络中至少部分中间设备已被分配数据包处理程序,则基于每一条流可被完整地在同一个中间设备中处理的原则,来为每个数据包选择两个已被分配数据包处理程序的中间设备;其中,若为某一数据包选择的两个中间设备对于该数据包而言,具有相同的处理开销,则选择其中具有较大空闲资源的中间设备来处理该数据包。需要说明,图6至图8中的“模块”指的是“数据包处理程序”。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域:
的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。当前第1页12