用于整合网络设备的系统和方法 【技术领域】
本发明涉及计算机及通信领域,具体涉及网络设备(networkappliance),更具体涉及一种用于整合网络设备的系统和方法。
背景技术
在运营商或大企业的数据中心,通常使用来自不同厂商的并具有不同功能的设备来提供安全解决方案。由于来自不同厂商的设备可能具有不同接口,这些设备都需要以适当方式接入到网络中,且各设备的功能之间可能存在着配合和依赖的关系,因此,这种解决方案难于部署新的设备和功能,难于扩展,且难于管理。此外,当企业的需求发生变化时,也很难对现有的设备和部署进行调整,将现有投资用于新的目的,从而降低资本支出成本。
除了安全设备外,越来越多的具有各种功能的其他网络设备,例如负载均衡器、加速器、协议仲裁器、SOA设备等,也被部署到网络中,以满足越来越多的应用需求。这些设备的引入更加剧了上述问题。
因此,如何将来自各个厂商的各种网络设备有效地集成和整合起来,形成一个统一的平台,成为一个亟待解决的问题。
Crossbeam公司提出了一种将各种网络设备集成到一个统一平台上的解决方案。该解决方案中包括三种模块,其中,NPM为前端网络处理模块,其用于执行数据包的分类和引导,APM为安全应用处理模块,CPM为控制处理模块。在软件方面,该解决方案支持三种类型的流路径:串行、并行和分支。然而,该解决方案有如下问题:连通性有限,不支持将较多的网络设备连接到网络上,也不支持跨机架的解决方案;此外,所述NPM模块和APM模块之间使用专有接口,这导致更高的硬件设备成本和软件移植及迁移成本,限制了网络设备部署的灵活性和适用性,使得无法部署来自不同厂商的各种具有通用接口和更多功能的网络设备。
显然,本领域中需要一种更为有效、灵活和通用的整合网络设备的解决方案。
【发明内容】
在本发明的一个方面,提供了一种用于整合网络设备的系统,该系统包括:一个或多个交换设备,通过以太网接口将多个网络设备互连;其中,每一个交换设备能够根据定义的服务序列被配置,其中所述服务序列定义了由网络设备处理数据包以提供服务的流程,经过所述配置的交换设备能够将进入该系统的数据包路由到所述多个网络设备中的一个或多个中进行处理,以便完成所述服务序列所定义的流程。
在本发明另一个方面,提供了一种用于整合网络设备的方法,该方法包括:将多个网络设备通过一个或多个交换设备以及以太网接口互连;以及根据定义的服务序列配置所述一个或多个交换设备中的交换设备,其中所述服务序列定义了由网络设备处理数据包以提供服务的流程,经过所述配置的交换设备能够将进入的数据包路由到多个网络设备中的一个或多个进行处理,以便完成所述服务序列所定义的流程。
本发明的技术方案的优点包括:更好的扩展性,能够通过方便地将新的网络设备连接到交换设备而提供新的功能,且能够通过在原有的或新的网络设备之上定义新的服务序列而提供新的服务;使用标准的以太网接口和链路,因此可以方便地使用来自不同厂商的通用网络设备,从而降低了硬件设备购置和更新成本以及应用移植和迁移成本,也提供了更丰富的功能和更好的性能;此外,本发明的技术方案支持跨机架和跨交换设备的解决方案。
【附图说明】
所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中:
图1示出了本发明地用于整合网络设备的系统可在其中运行的示例性网络环境;
图2示出了根据本发明的实施例的用于整合网络设备的系统;
图3示出了可用于本发明的系统中的一示例服务序列的工作机制;
图4示出了可用于本发明的系统中的由几种安全设备组成的几种服务序列的示例;
图5示出了根据本发明的实施例的用于整合网络设备的系统处理数据包的流程;以及
图6示出了根据本发明的实施例的一种用于整合网络设备的方法。
【具体实施方式】
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
图1示出了本发明的用于整合网络设备的系统可在其中运行的示例性网络环境。如图所示,本发明的系统通常位于企业网络中,并位于企业网络与外部网络边界处的路由器之后。这样,所有来自外部网络的数据包将经过路由器进入本发明的系统中,由本发明的系统进行必要的处理后,被传送给所述数据包的目标设备,例如服务器等;而所有从企业内部网络向外部网络发送的数据包,例如由服务器向外部网络发送的数据包,也将进入本发明的系统中,由本发明的系统进行必要的处理后,通过路由器发送给外部网络中的目标设备。当然,以上描述和图示的本发明的系统可在其中运行的网络环境仅为示例,而不是对本发明的系统可在其中运行的网络环境的限制。本发明的系统也可位于其他类型的网络环境中或位于网络环境中的其他位置,例如,位于一个企业网络内部的两个子网的边界处,两个以太网段的边界处等等。
图2示出了根据本发明的实施例的用于整合网络设备的系统200。如图所示,该系统包括:一个或多个交换设备210,通过以太网接口将多个网络设备互连;其中,每一个交换设备210能够根据定义的服务序列被配置,其中所述服务序列定义了由网络设备处理数据包以提供服务的流程,经过所述配置的交换设备210能够将进入该系统的数据包路由到所述多个网络设备中的一个或多个中进行处理,以便完成所述服务序列所定义的流程。
为了有效地整合各种网络设备,本发明中利用了服务序列的概念,所述服务序列是指通过交换设备210连接起来的网络设备的序列,该网络设备的序列能够按特定顺序对数据包进行处理从而提供某种服务,因此所述服务序列定义了通过交换设备210互连的网络设备处理数据包以提供服务的流程。
例如,图3示出了可用于本发明系统中的一示例服务序列的工作机制。如图所示,服务序列A->B->C表示网络设备A、B、C通过连接到交换设备210的端口顺序连接起来以向数据包提供某种服务。这样,所指定的特定的数据包,例如一系列具有诸如相同的源IP地址、目标IP地址、源端口和目标端口等相同属性的数据包,将按该服务序列规定的顺序A->B->C被服务,即由交换设备210按照图3中的标号1、2、3、4、5、6、7、8所示的路径顺序路由到网络设备A、B和C,并由网络设备A、B、C分别进行处理。
本发明的服务序列可以是能够提供某种服务的任何有效的网络设备的序列。图4示出了可用于本发明的系统中的由几种安全设备组成的几种服务序列的示例。
在本发明的用于整合网络设备的系统200中,既可以如图3所示的那样仅定义一个服务序列,也可以如图4所示的那样同时定义多个服务序列。此外,在本发明的用于整合网络设备的系统200中定义的多个服务序列既可以如图4中所示的那样分别由不同的网络设备所组成,也可以共享部分网络设备。
在本发明的用于整合网络设备的系统200中,对于同一组已连接到交换设备210的端口的多个网络设备,有可能灵活地定义多个有效的服务序列;此外,通过改变网络设备与交换设备210的端口的连接方式以及交换设备210之间的连接方式,通过将新的网络设备连接到现有交换设备210的空闲端口,以及通过以某种方式连接新的交换设备并将现有的或新的网络设备连接到所述新的交换设备,可以方便灵活地改变和扩展本发明的系统200,定义不同的和更多有效的服务序列,以便满足新的应用需求。
此外,在本发明的用于整合网络设备的系统200中,由于所述交换设备210既可以是一个,也可以是多个,且多个交换设备210可以多种方式相互连接,这样,就能够在由这些交换设备210互连在一起的多个网络设备之上定义各种复杂的服务序列。可以在本发明的用于整合网络设备的系统200中定义的服务序列不仅包括顺序执行的服务序列,也包括并行执行的服务序列,以及带有分支逻辑的服务序列。
另外,由于在本发明的用于整合网络设备的系统200中,所述网络设备与所述交换设备210是通过以太网接口连接的,而不是通过专有接口连接的,这样,就可以将任何具有以太网接口的网络设备连接到本发明的系统200中,从而提高了本发明的系统200的适用性。
在本发明的用于整合网络设备的系统200中,所述每一个交换设备210能够根据定义的服务序列被配置,从而使得相关的交换设备210能够根据这种配置将进入该系统的数据包路由到由所述服务序列所定义的网络设备中进行处理,以便完成所述服务序列所定义的服务流程。可以通过多种方式根据定义的服务序列对交换设备210进行配置,例如通过下文中所述的根据服务序列定义来设置交换设备210中的序列出端口映射表的方式。无论是何种配置方式,只要配置后的交换设备210能够将数据包路由到相应的网络设备以完成服务序列所定义的服务流程,则这些配置方式都是可行的并处于本发明的范围之内。
根据本发明的实施例,该用于整合网络设备的系统200还包括前端设备220,该前端设备220用于响应于接收到进入该系统的数据包,确定用于所述数据包的服务序列的代码,以及将所述服务序列的代码编码到所述数据包的数据链路层报头中;且其中,经过所述配置的交换设备210进一步能够根据进入到该交换设备210的数据包的所述数据链路层报头中的所述服务序列的代码将进入该交换设备210的所述数据包路由给由所述服务序列定义的下一个网络设备、交换设备210或外部设备。
仅作为示例,所述前端设备220可包括一序列查找引擎221,且所述响应于接收到进入该系统的数据包,确定用于所述数据包的服务序列的代码是由该序列查找引擎221执行的。仅作为示例,所述前端设备220还可包括一数据链路层报头编码器222,且所述将服务序列的代码编码到数据包的数据链路层报头中是由该数据链路层报头编码器222完成的。当然,所述序列查找引擎221和所述数据链路层报头编码器222的功能也可以由所述前端设备220中的其他单个或多个部件来完成,或者由所述前端设备220本身来完成。
根据本发明的进一步的实施例,在所述前端设备220中还维护一服务序列查找表,该服务序列查找表将数据包属性映射到相应的服务序列的代码,且其中,所述用于响应于接收到进入该系统的数据包,确定用于所述数据包的服务序列的代码的前端设备220用于根据进入该系统的所述数据包的属性以及该服务序列查找表确定用于所述数据包的服务序列的代码。
所述用于确定服务序列的代码的数据包属性可以是数据包的报头的某些部分,例如可以是数据包的网络层及传输层报头(例如IP报头和TCP报头)中的一些域或域的部分,例如网络层及传输层报头中的源地址(SA)、目标地址(DA)、源端口(SP)、目标端口(DP)、协议(Proto)中的一个或多个或其部分。下表1为前端设备220中包括的服务序列查找表的示例。
表1服务序列查找表示例
SA DA SP DP Proto 服务序列代 码 服务序列 * * * 80 * 0x00000001 s_node1:port1->s_node1 :port2->s_node2:port1 10.* 9.* * * * 0x00000002 s_node1:port3->s_node2 :por4 9.* 10.* * * * 0x00000001 s_node1:port1->s_node1 :port2->s_node2:port1
该表1示出了具有特定数据包属性的数据包所对应的不同的服务序列代码以及服务序列,其中服务序列是由相应的网络设备所连接的交换设备210及其端口号表示的。根据该服务序列查找表,所述前端设备220或其中的序列查找引擎221可确定,如果进入该系统的数据包的网络层及传输层报头中的目标端口为80,或源地址为9.*、而目标地址为10.*,则所对应的服务序列的代码为0x00000001,且该数据包将由交换设备s_node1的端口port1所连接的网络设备(例如,网络设备c_node1)、交换设备s_node1的端口port2所连接的网络设备(例如,网络设备c_node2)、交换设备s_node2的端口port1所连接的网络设备(例如,网络设备c_node3)顺序处理。类似地,根据该服务序列查找表可确定,如果进入该系统的数据包的网络层报头中的源地址为10.*、而目标地址为9.*,则所对应的服务序列的代码为0x00000002,且该数据包将由交换设备s_node1的端口port3所连接的网络设备(例如,网络设备c_node4)、交换设备s_node2的端口port4所连接的网络设备(例如,网络设备c_node5)顺序处理。
如该示例性服务序列查找表所例示的,该表中的每一行表示一个服务序列分配策略,该策略指定特定类型的数据包将由特定的服务序列处理。通过适当地设置该表,可以实现灵活的服务序列分配策略,从而将具有不同的网络层及传输层报头域的数据包分配给不同的服务序列来处理。应指出的是,该服务序列查找表的结构仅为示例,而不是对本发明的限制。例如,在该服务序列查找表中,作为附加或作为替代,还可以包含关于其他层协议报头的域的字段,例如可以包含关于VLAN域的字段,从而实现更灵活的服务序列分配策略。
优选地,本发明的前端设备220中的服务序列查找表可以在创建新的服务序列、删除或修改现有的服务序列时,或者在添加、删除或修改服务序列分配策略时被设置或更新。
所述服务序列的代码是在本发明的系统200中用于服务序列的唯一索引,它可以是任何能够将不同服务序列区别开来的数字或字符,并且优选地其长度应当使其能被适当放入数据包的数据链路层报头的相应域中,例如其长度可为4个字节。
在本发明的该实施例中,由于在例如通过所述服务序列查找表确定了用于进入该系统的数据包的服务序列的代码后,将该服务序列的代码编码到该数据包本身的数据链路层报头中,这样,当该数据包被发送给交换设备210以便通过交换设备210路由给网络设备后,交换设备210就可以根据该数据包的数据链路层报头中包含的服务序列的代码以及该交换设备210中根据服务序列定义进行的配置,确定该数据包应当被路由到哪一个网络设备以进行处理,或者确定该数据包应当被路由到其他交换设备210以便由所述其他交换设备210进一步路由,或者确定该数据包已完成所述服务序列所定义的流程,而应当被路由给外部设备,例如该数据包的初始目标设备。
根据本发明的进一步的实施例,用于将所述服务序列的代码编码到所述数据包的数据链路层报头中的所述前端设备220进一步用于将所述服务序列的代码编码到所述数据包的以太网MAC域中。根据本发明的更进一步的实施例,所述前端设备220将服务序列的代码编码到数据包的以太网MAC目标地址域中。当然,也可以考虑将服务序列的代码编码到数据包的其他以太网MAC域中,例如以太网MAC源地址域中,或者将其编码到数据包的多个以太网MAC域中。
根据本发明的另一进一步的实施例,用于将所述服务序列的代码编码到所述数据包的数据链路层报头中的所述前端设备220进一步用于将所述服务序列的代码编码到所述数据包的VLAN或MPLS域中。在本专利申请中,数据链路层报头应被理解为也包含VLAN以及MPLS域。当然,也可以考虑将服务序列的代码编码到数据链路层(包括第2层和第2.5层)报头中的任何其他域中,只要所述被编码的域不会被用来处理该数据包的网络设备所修改即可。
由于如上所述,服务序列的代码被编码到数据包的数据链路层报头的域(例如MAC目标地址域)中,该域的初始值被修改,因此需要一种机制,使得数据包在经过本发明的系统200处理后能够恢复该数据包的数据链路层报头。可以使用多种机制来恢复数据包的数据链路层报头。为此,根据本发明的一个实施例,所述前端设备220还用于响应于接收到进入该系统的数据包并确定了用于所述数据包的服务序列的代码,将该数据包的数据链路层报头中将被修改的域的初始值的代码写入所述将被修改的域中。优选地,所述代码的长度应当使得能够将该代码适当地写入到所述将被修改的域中,例如其长度为1字节。由于数据包的目标设备通常为企业网中的路由器或服务器,通常可假设数据包的不同以太网目标地址的数量是很有限的,因此例如1字节的代码长度通常是足够的。可在所述前端设备220中维护一域编码表,该域编码表中存储有所述将被修改的域的所有可能的初始值与其代码之间的对应关系,这样,前端设备220可通过该域编码表查找到数据包的数据链路层报头的所述将被修改的域(例如以太网MAC目标地址域)的初始值的代码,并将该代码与前文中所述的服务序列的代码一起写入到该将被修改的域。下表2示出了根据本发明的实施例在前端设备220中维护的所述域编码表的示例:
表2域编码表示例
以太网目标地址 域代码 00:00:00:aa:aa:aa 0x01 00:00:00:bb:bb:bb 0x02 00:00:00:cc:cc:cc 0x03
如后文中所述,根据本发明的一实施例,在本发明的系统200的每个交换设备210中,将维护一个相同的域编码表,这样,当数据包经过本发明的系统200并已完成相应的服务序列所定义的流程,即将离开本发明的系统200时,相应的交换设备可使用数据包的该被修改的域中存储的域初始值的代码以及域编码表中获得该域的初始值,从而恢复数据包的数据链路层报头。
可选地,本发明的系统200中的前端设备220还用于将一标志编码到数据包的数据链路层报头的域中,该标志指示当该数据包经过本发明的系统200后是否需要恢复该数据包的数据链路层报头。通常,该标志的值为1,并指示需要恢复数据包的数据链路层报头。当不需要恢复数据包的数据链路层报头时,例如当不需要本发明的系统200对进入的数据包进行处理从而不需要恢复其数据链路层报头时,可将该标志的值置为0,从而指示交换设备210直接将该数据包发送给外部设备,例如该数据包的初始目标设备。
下面给出根据本发明的实施例对数据包的以太网报头中的域进行编码的示例,该编码示例是以前文中表1的服务序列查找表示例以及表2的域编码表示例为基础的。
例如,进入本发明的系统200中的一数据包的初始报头如下:
以太网报头:DA:00:00:00:bb:bb:bb,SA:00:01:02:03:04:05,Proto:0x800;
IP报头:DA:10.0.0.1,SA:9.0.0.1;
TCP报头:DP:80,SP:3201。
该数据包经过本发明的系统200中的前端设备220编码后的报头如下:
以太网报头:DA:00:00:00:01:02:01,SA:00:01:02:03:04:05,Proto:0x800;
IP报头:DA:10.0.0.1,SA:9.0.0.1;
TCP报头:DP:80,SP:3201。
其中,只有以太网报头中的目标地址域(DA)被修改。在该被修改的目标地址域中,前4个字节00:00:00:01来自于表1中与该数据包的IP报头中SA域和DA域的值匹配的第3行中的序列代码;第5个字节来自于表2中与该数据包的以太网报头中的DA域的值匹配的第2行中的域代码值;而最后一个字节01指示该数据包的以太网报头中的该目标地址域在该数据包经过本发明的系统200之后需要恢复其初始值00:00:00:bb:bb:bb。
根据本发明的实施例,本发明的系统200中的所述前端设备220中还包括一可选的表管理器223,其用于对前文中所述服务序列查找表以及所述域编码表进行维护。例如,当管理员创建新的服务序列或创建新的服务序列分配策略时,可通过所述表管理器223对所述服务序列查找表进行更新。当数据包的目标路由器或服务器改变时,所述表管理器223可更新所述域编码表。
所述前端设备220既可以通过一个端口与唯一一个交换设备210相连,也可以通过多个端口分别与多个交换设备210相连。当前端设备220通过多个端口分别与多个交换设备210相连时,前端设备220需要能够根据为进入本发明的系统200的数据包所确定的服务序列来确定应当将该数据包发送到哪一个出端口。仅作为例子,这可以通过在前端设备220中维护一个服务序列的代码与出端口的映射关系的表来实现。
根据本发明的实施例,每一个交换设备210中包括一序列出端口映射表,该序列出端口映射表将入端口和服务序列的代码映射到相应的出端口,且其中,所述每一个交换设备能够根据定义的服务序列被配置包括每一个交换设备中的所述序列出端口映射表能够根据定义的服务序列被设置,从而使得经过所述配置的交换设备210进一步能够根据进入到入端口的数据包的所述数据链路层报头中的所述服务序列的代码以及所述入端口在所述序列出端口映射表中查找到相应的出端口,并将该数据包路由给所述出端口所连接的网络设备、交换设备210或外部设备。
根据本发明的进一步的实施例,每一个交换设备210中的所述序列出端口映射表还包括一指示是否已完成服务序列所定义的流程的字段,该定段的值根据服务序列的定义被配置,且经过所述配置的每一个交换设备210还能够根据该交换设备210中的所述序列出端口映射表中该字段的值来判断针对数据包是否已完成服务序列所定义的流程。
下表3和4分别示出了根据本发明的实施例在本发明的系统200中的两个示例性交换设备s_node1和s_node2中包括的序列出端口映射表的示例,这两个序列出端口映射表示例是根据前述表1中的服务序列查找表示例中表示的服务序列定义设置的。假设交换设备s_node1和s_node2的外部入端口的端口号都是0,而其外部出端口的端口号都是10。
表3交换设备s_node1中的序列出端口映射表示例
入端口 服务序列代 码 出端口 是否完成 0* 0x00000001 1 0 1 0x00000001 2 0 2 0x00000001 10* 0 0 0x00000002 3 0 3 0x00000002 10 0
表4交换设备s_node2中的序列出端口映射表示例
入端口 服务序列代 码 出端口 是否完成 0 0x00000001 1 0 1 0x00000001 10 1 0 0x00000002 4 0 4 0x00000002 10 1
如表3和4所例示的,每个交换设备210的序列出端口映射表的每一行将一个(入端口,服务序列代码)对映射为一个出端口,从而使得每个交换设备210能够将进入其某一端口的数据包路由到相应的出端口,以便完成服务序列所定义的服务流程。上述序列出端口映射表示例中的“是否完成”字段表示从相应的入端口进入该交换设备的数据包是否已经过本发明的系统200的处理,完成了服务序列所定义的服务流程,而应当将数据包从所选择的出端口发送到外部设备例如数据包的初始目标设备。当数据包已经过本发明的系统200的处理,完成了服务序列所定义的服务流程,即将被发送到外部设备时,应当恢复该数据包的数据链路层报头。因此该“是否完成”字段也可指示是否应当恢复数据包的数据链路层报头。
在每个序列出端口映射表中,对于同一个(入端口,服务序列代码)对,可以有多个出端口与之对应。通过这种方式,可以实现负载均衡和故障转接,并可实现服务序列中的并行执行。
根据本发明的实施例,经过所述配置的相应的交换设备210还能够响应于判断针对所述数据包已完成所述服务序列所定义的流程,恢复所述数据包的初始数据链路层报头。
可以通过多种方式来恢复数据包的初始数据链路层报头。例如,根据本发明的一实施例,在每一个交换设备210中维护一域编码表,其用于存储数据包的数据链路层报头中被修改的域的初始值及其代码之间的对应关系。该域编码表优选地与前文中所述的前端设备220中的域编码表相同。这样,经过所述配置的相应的一个交换设备210进一步能够响应于判断针对所述数据包已完成所述服务序列所定义的流程,根据其域编码表中存储的所述被修改的域的初始值及其代码之间的对应关系以及所述数据包的所述被修改的域中的代码恢复所述数据包的所述被修改的域的初始值,从而恢复所述数据包的数据链路层报头。
仅作为示例,本发明的系统200中的每一个交换设备210可包括一序列出端口选择器211,且前文中所述根据进入到该交换设备210的入端口的数据包的数据链路层报头中的服务序列的代码以及所述入端口在所述序列出端口映射表中查找到相应的出端口是由该序列现端口选择器211完成的。仅作为示例,本发明的系统200中的每一个交换设备210还可包括一数据链路层报头解码器212,且前文中所述响应于判断针对数据包已完成服务序列所定义的流程,恢复所述数据包的初始数据链路层报头是由该数据链路层报头解码器212完成的。当然,每个交换设备210中的所述序列出端口选择器211和所述数据链路层报头解码器212的功能也可以由所述交换设备210中的单个或多个其他部件来完成,或者由所述前端设备220本身来完成。
仅作为示例,本发明的系统200中的所述每个交换设备210中还包括一可选的表管理器213,其用于对前文中所述序列出端口映射表以及所述域编码表进行维护。例如,当管理员创建新的服务序列时,可通过所述表管理器213对每个交换设备210中的所述序列出端口映射表进行更新。当数据包的目标路由器或服务器改变时,所述表管理器213可更新每个交换设备中的所述域编码表。
以上描述了本发明的系统200的一种实现方式,其中通过在进入该系统的数据包的数据链路层报头中编码服务序列的代码,并在每个交换设备210中维护服务序列的代码及入端口与出端口的映射关系来将数据包路由到适当的网络设备,从而完成服务序列所定义的服务流程。本发明的系统200还存在其他的实现方式。例如,可考虑通过直接将数据包所属的服务序列的定义编码到数据包的数据链路层报头中,并由交换设备210根据数据包中的数据链路层报头中的服务序列的定义来路由数据包,从而完成服务序列所定义的服务流程。
此外,根据本发明的另一实施例,每一个交换设备210中包括一序列出端口映射表,该序列出端口映射表将数据包的入端口和数据包的数据链路层报头中的当前MAC目标地址映射到相应的出端口以及相应的下一个网络设备的MAC地址,且其中,每一个交换设备能够根据定义的服务序列被配置包括每一个交换设备中的所述序列出端口映射表能够根据定义的服务序列被设置,从而使得经过所述配置的交换设备210能够根据进入到入端口的数据包的所述数据链路层报头中的当前MAC地址以及该入端口在所述序列出端口映射表中查找到相应的出端口和下一个网络设备的MAC地址,使用所述下一个网络设备的MAC地址替换所述数据包的数据链路层报头中的当前MAC地址,并将该数据包路由给所述出端口所连接的网络设备、交换设备或外部设备。在这样的实施例中,可以在前端设备220中维护一结构相同的序列出端口映射表,以便将进入本发明的系统200的数据包的以太网报头中的MAC地址修改为服务序列所定义的下一个网络设备的MAC地址。
根据本发明的实施例,该用于整合网络设备的系统能够通过以下方式中的任何一个或多个的结合被定制和扩展:增减交换设备;增减网络设备;改变交换设备之间以及交换设备与网络设备之间的互连方式;以及定义新的服务序列,并根据新定义的服务序列配置交换设备。
以上参照附图描述了根据本发明的实施例的用于整合网络设备的系统200,应指出的是,以上描述仅为示例,而不是对本发明的限制。例如,为说明起见,在附图2中示出了本发明的用于整合网络设备的系统200中的交换设备210以及网络设备具有特定的数量和互连方式,但可以理解的是,本发明的用于整合网络设备的系统200中的交换设备210以及网络设备可具有任意数量,且交换设备210之间以及交换设备210与网络设备之间可具有各种其他的互连方式。再例如,本发明的交换设备210和前端设备220中可包括与所描述的相比更多、更少或不同的模块,且各模块之间的关系可以与所描述的不同。又例如,所述前端设备220可以与所述交换设备210中的一个合并为单个设备。此外,本发明的用于整合网络设备的系统200中的交换设备210以及所述网络设备既可以是真实设备,也可以是虚拟设备,等等。
现参照图5,其示出了根据本发明的实施例的用于整合网络设备的系统200处理数据包的流程。
如图所示,流程开始后,在步骤501,数据包进入前端设备220。
在步骤502,前端设备220使用数据包报头例如网络层和传输层报头中的某些域搜索服务序列查找表,以获得服务序列代码。
在步骤503,前端设备220搜索域编码表以获得数据包的数据链路层报头中将被修改的域的初始域值的代码。
在步骤504,前端设备220使用所述服务序列代码和域代码编码数据包的数据链路层报头的域。
在步骤505,将数据包发送出前端设备220。
在步骤506,数据包从与前端设备220相连的交换设备s_node的入端口iPort进入该交换设备s_node。
在步骤507,交换设备s_node搜索该交换设备中的序列出端口映射表,以获得出端口ePort,以及完成标志isComplete。
在步骤508,交换设备s_node判断isComplete是否等于1。
如果步骤508的判断为否,表示该数据包尚未完成服务序列所定义的服务流程,则转到步骤509,交换设备s_node将数据包发送出所述ePort,从而将数据包传送给下一个交换设备或网络设备,并返回步骤506,由下一个交换设备执行该步骤506,或者在数据包由所述网络设备处理后,返回该当前交换设备s_node,由该当前交换设备s_node重新执行步骤506。
如果步骤508的判断为是,表示该数据包已完成服务序列所定义的服务流程,则转到步骤510,搜索交换设备s_node中的域编码表,获得并恢复数据包的数据链路层报头中所述被修改的域的初始域值。
在步骤511,将数据包发送出该交换设备s_node的出端口ePort,即将数据包发送给出端口ePort所连接的外部设备例如该数据包的初始目标设备,从而流程结束。
下面以一个具体的数据包为例,来更详细地描述本发明的用于整合网络设备的系统200的工作流程。
假设该数据包的报头如下:
以太网报头:DA:00:00:00:bb:bb:bb,SA:00:01:02:03:04:05,Proto:0x800;
IP报头:DA:10:0.0.1,SA:9.0.0.1,Proto:6(TCP)
TCP报头:DP:80,SP:3201。
另外,假设本发明的用于整合网络设备的系统200中使用了前文中所述的表1-4中的示例性服务序列查找表、域编码表和序列出端口映射表,以及相应的服务序列定义和设备互连方式。
基于上述假设,本发明的系统200处理该数据包的工作流程如下:
在步骤1.0,该包进入前端设备220;
在步骤1.1,前端设备220使用该数据包的5元组(10.0.0.1,9.0.0.1,80,3201,6)搜索表1所示的示例性服务序列查找表,通过匹配该表的第三个条目,获得适用于该数据包的服务序列的代码0x00000001。
在步骤1.2,前端设备220使用数据包的以太网DA域的值00:00:00:bb:bb:bb搜索表2所示的示例性域编码表,并通过匹配该表的第二个条目,获得该DA域的代码0x02。这样,前端设备220使用所述服务序列代码以及域代码将该数据包的以太网DA域编码为00:00:00:01:02:01。
在步骤1.3,该数据包被发送出前端设备220。
在步骤2.0,带有以太网DA域00:00:00:01:02:01的该数据包通过交换设备s_node1的端口port 0进入交换设备s_node1。
在步骤2.1,交换设备s_node1使用所述入端口以及数据包中的以太网DA域中的服务序列代码(port 0,00:00:00:01)搜索表3中所示的示例性序列端口映射表,并通过匹配该表中的第一个条目而获得出端口port 1。
在步骤2.2,交换设备s_node1将该数据包通过其端口port 1发送给与该端口port 1相连的网络设备,以对该数据包进行处理。
在步骤2.3,经网络设备处理后的该数据包通过交换设备s_node1的端口port 1重新进入交换设备s_node1。
在步骤2.4,交换设备s_node1使用所述新的入端口以及数据包中的以太网DA域中的服务序列代码(port 1,00:00:00:01)搜索表3中所示的示例性序列端口映射表,并通过匹配该表中的第二个条目而获得出端口port2。
在步骤2.5,交换设备s_node1将该数据包通过其端口port 2发送给与该端口port 2相连的网络设备,以对该数据包进行处理。
在步骤2.6,经该网络设备处理后的该数据包通过交换设备s_node1的端口port 2再次进入交换设备s_node1。
在步骤2.7,交换设备s_node1使用所述新的入端口以及数据包中的以太网DA域中的服务序列代码(port 2,00:00:00:01)搜索表3中所示的示例性序列端口映射表,并通过匹配该表中的第三个条目而获得出端口port10。
在步骤2.5,交换设备s_node1将该数据包通过其端口port 10发送给与该端口port 10相连的下一个交换设备s_node2。
在步骤3.0,带有以太网DA域00:00:00:01:02:01的该数据包通过交换设备s_node2的端口port 0进入交换设备s_node2。
在步骤3.1,交换设备s_node2使用所述入端口以及数据包中的以太网DA域中的服务序列代码(port 0,00:00:00:01)搜索表4中所示的示例性序列端口映射表,并通过匹配该表中的第一个条目而获得出端口port 1。
在步骤3.2,交换设备s_node2将该数据包通过其端口port 1发送给与该端口port 1相连的网络设备,以对该数据包进行处理。
在步骤3.3,经网络设备处理后的该数据包通过交换设备s_node2的端口port 1重新进入交换设备s_node2。
在步骤3.4,交换设备s_node2使用所述新的入端口以及数据包中的以太网DA域中的服务序列代码(port 1,00:00:00:01)搜索表4中所示的示例性序列端口映射表,并通过匹配该表中的第二个条目而获得出端口port10,同时通过该条目的isComplete字段的值判断该数据包已完成服务序列所定义的服务流程,从而需要恢复其以太网DA域的初始值。
在步骤3.5,交换设备s_node2使用该数据包的编码的以太网DA域中的域初始值代码02搜索交换设备s_node2中维护的如表2所示的域编码表,并通过匹配该表的第二个条目,获得数据包的以太网DA域的初始值00:00:00:bb:bb:bb,并使用该初始值恢复数据包的以太网DA域。
在步骤3.6,交换设备s_node2将该数据包从端口10发送给外部设备,例如作为该数据包的初始目标设备的路由器或服务器,从而整个工作流程结束。
以上详细描述了根据本发明的实施例的用于整合网络设备的系统200及其示例性工作流程,下面参照附图简要描述根据本发明的实施例的用于整合网络设备的方法。为简明起见,在以上描述中省略了与上述描述重复的部分细节,因此可参照以上描述来获得对本发明的用于整合网络设备的方法的更详细的了解。
参照图6,其示出了根据本发明的实施例的一种用于整合网络设备的方法。如图所示,该方法包括以下步骤:
在步骤601,将多个网络设备通过一个或多个交换设备以及以太网接口互连。
在步骤602,根据定义的服务序列配置所述一个或多个交换设备中的交换设备,其中所述服务序列定义了由网络设备处理数据包以提供服务的流程,经过所述配置的个交换设备能够将进入的数据包路由到多个网络设备中的一个或多个中进行处理,以便完成所述服务序列所定义的流程。
根据本发明的进一步的实施例,该方法还包括:响应于接收到进入的数据包,确定用于所述数据包的服务序列的代码;将所述服务序列的代码编码到所述数据包的数据链路层报头中;且其中,经过所述配置的交换设备进一步能够根据进入到该交换设备的数据包的所述数据链路层报头中的所述服务序列的代码将进入该交换设备的所述数据包路由给由所述服务序列定义的下一个网络设备、交换设备或外部设备。
根据本发明的进一步的实施例,每一个交换设备中包括一序列出端口映射表,该序列出端口映射表将入端口和服务序列的代码映射到相应的出端口,且其中,所述根据定义的服务序列配置所述一个或多个交换设备中的交换设备包括根据定义的服务序列设置该交换设备中的所述序列出端口映射表,从而使得该交换设备进一步能够根据进入到所述入端口的数据包的所述数据链路层报头中的所述服务序列的代码以及所述入端口在所述序列出端口映射表中查找到相应的出端口,并将该数据包路由给所述出端口所连接的网络设备、交换设备或外部设备。
根据本发明的进一步的实施例,所述响应于接收到进入的数据包,确定用于所述数据包的服务序列的代码包括:根据所述进入的数据包的属性以及一服务序列查找表确定用于所述数据包的服务序列的代码,其中,所述服务序列查找表将数据包属性映射到相应的服务序列的代码。
根据本发明的进一步的实施例,经过所述配置的交换设备能够将进入的数据包路由给所述多个网络设备中的交换设备进行处理,以便完成所述服务序列所定义的流程还包括:经过所述配置的相应的一个交换设备还能够响应于判断针对所述数据包已完成所述服务序列所定义的流程,恢复所述数据包的初始数据链路层报头。
根据本发明的进一步的实施例,恢复所述数据包的数据链路层报头是通过以下方式实现的:响应于接收到进入的数据包并确定用于所述数据包的服务序列的代码,将该数据包的数据链路层报头中将被修改的域的初始值的代码写入所述将被修改的域中;在每一个交换设备中存储所述将被修改的域的初始值及其代码之间的对应关系;以及响应于判断针对所述数据包已完成所述服务序列所定义的流程,根据相应的交换设备中所存储的所述被修改的域的初始值及其代码之间的对应关系以及所述数据包的所述被修改的域中的所述代码恢复所述数据包的所述被修改的域的初始值,从而恢复所述数据包的数据链路层报头。
根据本发明的进一步的实施例,每一个交换设备中的所述序列出端口映射表还包括一指示是否已完成服务序列所定义的流程的字段,该定段的值根据服务序列的定义被配置,且所述判断针对所述数据包已完成所述服务序列所定义的流程是根据相应的交换设备中的所述序列出端口映射表中该字段的值来执行的。
根据本发明的进一步的实施例,将所述服务序列的代码编码到所述数据包的数据链路层报头中包括将所述服务序列的代码编码到所述数据包的以太网MAC域中。
根据本发明的更进一步的实施例,所述以太网MAC域为以太网MAC目标地址域。
根据本发明的进一步的实施例,将所述服务序列的代码编码到所述数据包的数据链路层报头中包括将所述服务序列的代码编码到所述数据包的VLAN或MPLS域中。
根据本发明的另一实施例,每一个交换设备中包括一序列出端口映射表,该序列出端口映射表将数据包的入端口和数据包的数据链路层报头中的当前MAC目标地址映射到相应的出端口以及相应的下一个网络设备的MAC地址,且其中,所述根据定义的服务序列配置一个或多个交换设备中的交换设备包括根据定义的服务序列设置交换设备中的所述序列出端口映射表,从而使得经过所述配置的每一个交换设备能够根据进入到该交换设备的入端口的数据包的所述数据链路层报头中的当前MAC地址以及该入端口在所述序列出端口映射表中查找到相应的出端口和下一个网络设备的MAC地址,使用所述下一个网络设备的MAC地址替换所述数据包的数据链路层报头中的当前MAC地址,并将该数据包路由给所述出端口所连接的所述下一个网络设备、交换设备或外部设备。
根据本发明的实施例,该用于整合网络设备的方法还包括以下步骤中的一个或多个:增减交换设备;增减网络设备;改变交换设备之间以及交换设备与网络设备之间的互连方式;以及定义新的服务序列,并根据新定义的服务序列配置交换设备。以上参照附图描述了根据本发明的实施例的用于整合网络设备的方法,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更不或不同的模块,且各模块之间的顺序可以不同。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行所述方法。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。