通信系统、节点、控制服务器、通信方法及程序的制作方法

文档序号:7739221阅读:115来源:国知局
专利名称:通信系统、节点、控制服务器、通信方法及程序的制作方法
技术领域
本发明涉及通信系统、节点、控制服务器、通信方法和存储程序的机器可读存储介质。具体地说,本发明涉及经由布置在网络中的节点转发分组以用于实现通信的通信系统、 节点、控制服务器、通信方法和存储程序的机器可读存储介质。
背景技术
作为允许在布置在网络上的诸如路由器或者交换机的节点上运行程序的一种技术,已知一种有源网络(参见非专利文献1)。专利文献1中公开一种提供有信令控制单元的有源网络,该信令控制单元通过提前信令在网络节点中部署有源代码。
在专利文献2中,公开一种光通信系统,其中可以在不同的分组环中应用集成业务种类以用于经过不同的分组环而被转发的分组流。光通信系统的节点设备提取包含在附接到从另一分组环进入的分组的环间报头(header)信息中的环间业务种类信息。基于这样提取的环间业务种类信息,节点设备参照记录了如在分组环之间设置的、环间业务种类与环内业务种类之间的对应关系的表,以决定对于进入的分组将要设置的环内业务种类。 节点设备将包括这样确定的环内业务种类信息的环内报头信息附接到进入的分组。
另一方面,已知一种称为源路由的技术,其是在例如IP网络中进行路由控制的系统。如在非专利文献2中阐述的,通过指定中继路由器的IP地址来实现该源路由。
近来,提出了一种称为“开放流”(OpenFlow)的技术,如在非专利文献3中表明的。 在OpenFlow中,将通信理解为端到端的流,并且在流基础上实现路由控制、异常恢复、负载分配和优化。作为转发节点操作的OpenFlow交换机包括用于与OpenFlow控制器通信的可靠信道,并且根据不时地从OpenFlow控制器向其给出用于添加和重写的命令的流表来运行该OpenFlow交换机。在该流表中,逐个流地定义匹配到分组报头的一组规则(FlowKey, 流密钥),定义处理操作的内容的动作(Actions)以及流统计信息(Mats)(参见图6)。
图四说明了在非专利文献4中定义的动作名称和动作的内容。OUTPUT(输出)是用于向指定端口(接口)输出的动作。SET_VLAN_VID到SET_TP_DST是修改分组报头的字段的动作。
例如,在接收到第一分组时,OpenFlow交换机从流表中检索(查找)具有匹配到所接收的分组的报头信息的规则(FlowKey)的条目。作为检索(查找)的结果,如果发现了与所接收的分组适配的条目,则OpenFlow交换机对所接收的分组执行如在条目的动作字段中阐述的处理操作的内容。相反,如果没有发现与所接收的分组适配的条目,则OpenFlow 交换机在可靠信道上向OpenFlow控制器转发所接收的分组,以请求OpenFlow控制器基于所接收的分组的转发的源和目的地为所接收的分组决定路由。OpenFlow交换机然后接收实现该通信的流条目,同时更新流表。
专利文献1
JP 专利 Kohyo 公开 No. JP-P2006-513671A
专利文献2:
JP-专利 Kokai 公开 No. JP-P2008-236652A
非专利文献
非专利文献1:
David L. Tennenhouse 等,“A Survey of Active Network Research,,,IEEE Communications Magazine, Vol. 35, No. 1, H 80-86 M, 1997 ^Ξ ι ^
非专利文献2:
IETF, RFC791, "INTERNET PROTOCOL”
非专利文献3:
Nick McKeown 等人,"OpenFlow Enabling Innovation in Campus Networks,,, [在线],[2009 年8 月 27 日取得],互联网(URL :http //www. openf lowswitch. org// documents/openflow-wp-latest. pdf)
非专利文献4:
"OpenFlow Switch Specification,,0. 9. 0.版本(Wire Protocol 0x98)
[2009年8月27日取得]互联网
(URL :http://www. openflowswitch. org / documents/ openflow-spec-vO. 9. 0. pdf)发明内容
应该注意到,这里以引用的方式结合在专利文献1-2以及非专利文献1-4中公开的全部内容。
下面是对本发明相关技术的分析。
在非专利文献3的OpenFlow技术中,需要在每一个交换机中设置流表并且不时地重写该流表。流表允许选择和执行取决于流特性的处理内容。如果期望精细地控制路由或者确保高质量,则流表中需要等于匹配规则的数量的条目数量,因而可能对交换机并且对控制器的管理带来许多负担。
利用非专利文献1和专利文献1的有源网络系统,能够在不使用上面提及的流表的情况下使期望节点执行指定的处理操作。然而,如果如在非专利文献3中将OpenFlow技术应用到进行流控制的交换机,则需要为每一个交换机提供程序库或者需要使程序本身包含在分组中。如果这样,可能会最终丧失非专利文献3的特性,即简化被转发的节点的控制功能以使该功能最大程度地集中在控制器中。
考虑上面阐述的现有技术状态,本发明的示例性特征在于提供一种布置和一种方法从而可以降低要在使每一个节点执行与所接收的分组一致的处理操作中参照的表本身的数量或者该表中条目的数量。注意到,在该布置或者方法中,也需要满足对于简化布置在网络中的节点的控制功能的需求。
在第一示例性方面,本发明提供一种通信系统,包括在数据转发发网络的数据转发路由中用于分组的节点。分组具有报头,报头包含要由数据转发网络的转发路由上的各个节点执行的多个处理操作的阵列。节点根据处理操作的阵列执行该节点要执行的处理操作。
在第二示例性方面,本发明提供一种布置在数据转发网络的数据转发路由中的用于分组的节点。分组具有报头,报头包括要由布置在数据转发网络的数据转发路由中的各个节点执行的多个处理操作的阵列。节点根据处理操作的阵列执行该节点要执行的处理操作。
在第三示例性方面,本发明提供一种控制服务器,该控制服务器创建处理操作的阵列并且向发送了输入分组的节点发送该处理操作的所述阵列。处理操作的阵列包括要由数据转发网络的转发路径上的各个节点执行的处理操作。控制服务器基于包含在从布置在数据转发网络中的节点接收的输入分组的报头中的信息来创建处理操作的阵列。
在第四示例性方面,本发明提供一种用于通信的方法,包括向输入分组附接包含要由数据转发网络的转发路由上的各个节点执行的处理操作的阵列的报头,以及对于数据转发网络的转发路由上的每一个节点根据添加到该输入分组的处理操作的阵列执行该节点必须执行的处理操作。本方法结合到以包括数据转发网络的转发节点的形式的特定机械直ο
在第五示例性方面,本发明提供一种可以在包括上面提及的节点或者控制服务器的计算机上运行的计算机程序,其有形地实现在机器可读存储介质中。所述程序可以记录在可以通过计算机读出的记录介质上。即,本发明可以实现为计算机程序产品。而且,该计算机程序可以认为是程序产品(也即制品)或者以程序语言表述的实现数据存储方法(过程)的过程。
以下概述本发明示例性和有益的效果。根据本发明,在满足简化布置在网络中的节点的控制功能的需求时执行各种处理操作的同时,能够降低表本身的数量或者表中条目的数量。原因在于,向输入分组附接了包含要由数据转发网络的转发路由上的各个节点执行的多个处理操作的阵列的报头。设计要由数据转发网络的数据转发路由上的各个节点执行的处理操作,以根据附接到输入分组的报头中的处理操作的阵列来执行。


图1是用于说明本发明的方案的示意性视图。
图2是用于说明本发明的示例性实施例1的布置的示意性视图。
图3是示出本发明的示例性实施例1的节点的详细布置的方框图。
图4是示出本发明的示例性实施例1的控制服务器的详细布置的方框图。
图5是示出本发明的示例性实施例1的控制服务器的流条目数据库的布置的图表视图。
图6是用于说明图5的Flowkey (匹配密钥)的图表视图。
图7是用于说明本发明的示例性实施例1的节点的操作的流程图。
图8是示出动作报头(动作阵列)的附接模式的图表视图。
图9A到图9D是用于说明动作报头(动作阵列)的具体模式的示意性视图。
图10是用于说明本发明的示例性实施例1的控制服务器的操作的流程图。
图11是用于说明本发明的示例性实施例1的控制服务器和节点(在接收新流时) 的操作序列的示意性视图。
图12是用于说明本发明的示例性实施例1的控制服务器和节点(在接收新流时) 的另一操作序列的示意性视图。
图13是用于说明本发明的示例性实施例1的节点(在接收新流时)的另一示例操作的流程图。
图14是用于说明本发明的示例性实施例1的控制服务器和节点(在接收新流时) 的再一操作序列的示意性视图。
图15是用于说明本发明的示例性实施例1的全局操作的示意性视图。
图16是接续图14的示意性视图。
图17是接续图15的示意性视图。
图18是用于说明在本发明的示例性实施例1的节点中执行的中继操作的示意性视图。
图19是用于说明在本发明的示例性实施例1的节点中执行的另一中继操作的示意性视图。
图20是示出本发明的示例性实施例2的示意性视图。
图21是示出本发明的示例性实施例2的控制服务器的流条目数据库的布置的图表视图。
图22是用于说明在本发明的示例性实施例2中的节点中执行的另一示例中继操作的示意性视图。
图23是示出在本发明的示例性实施例3中附接(嵌入)动作报头(动作阵列) 的模式的图表视图。
图M是示出具有嵌入的动作报头(动作阵列)的示例帧格式的图表视图。
图25是用于说明本发明的示例性实施例3的全局操作的示意性视图。
图沈是用于说明本发明的示例性实施例4的示意性视图。
图27是用于说明本发明的示例性实施例5的全局操作的示意性视图。
图观是用于说明本发明的示例性实施例6的全局操作的示意性视图。
图四是用于说明动作名称和动作的内容的图表视图。
符号说明
10,IOa到IOf通信节点
11服务器通信单元
12流表管理单元
13 流表
14转发处理单元
15表检索单元
16动作阵列设置单元
17动作提取单元
18动作执行单元
20,20a到20f控制服务器
21流条目数据库(流条目DB)
22拓扑管理单元
23路由/动作计算单元
M流条目管理单元
25节点通信单元
30通信节点具体实施方式
开始将解释本发明示例性实施例的概况。本发明示例性实施例的通信系统的节点具有从附接到所接收的分组的动作报头中的动作阵列(处理操作的阵列)中,识别要由该节点执行的处理操作并且执行这样识别的处理操作的功能。
动作报头是要由布置在数据转发网络的转发路由上的各个节点执行的处理操作的阵列。各个动作可以例如通过(1)将在报头或者VLAN标签中的通信目的地/源IP地址或者通信目的地/源MAC地址改变成指定值的动作,(2)丢弃(放弃)分组的动作,或者通过C3)在多个指定端口(接口)处输出分组(输出)的动作进行限定。参见图四以及非专利文献4的第4到6页,[3. 3动作]以及[表5]。在图1的示例中,所接收的分组被发送到节点ID = 1的端口 #5,之后到节点ID = 2的端口 #2,并且之后到节点ID = 3的端口 #3。
通过向分组附接动作报头并且输出所产生的分组,可以由路由上的指定节点顺序处理该分组。因此不必像结合相关技术参照的有源源网络的情况那样向每一个节点发送动作代码。也不必执行向该路由上的每一个节点中的流表添加条目的处理。
可以通过初始接收该分组的节点向该分组附接动作报头。可以在外部服务器处询问而获取动作报头中的动作阵列(处理操作的阵列)。或者,可以在节点中嵌入预存储的动作阵列(处理操作的阵列)。可以通过作为该路由的终止节点的节点来删除该动作报头。
示例性实施例1
现在将参照附图详细描述本发明的示例性实施例1。图2示出了根据本发明示例性实施例1的通信系统。参照图2,示出了三个节点10,控制服务器20以及通过节点10而彼此通信的通信节点30。尽管图2中示出的示例具有三个节点10,单个控制服务器20以及两个通信节点30,但是这只是说明的方式,以使得可以使用这些实体的任何合适的可选数量。
图3示出了节点10的详细形式构成。参照图3,节点10包括与控制服务器20通信的服务器通信单元11,管理流表13的流表管理单元12,以及转发处理器14。
转发处理器14包括动作提取单元17,其从附接到作为用户流量而接收的分组的动作报头中取出自己的节点必须执行的动作,并且向动作执行单元18输出这样取出的动作。转发处理器14还包括流表检索(流表查找)单元15,在没有向所接收的分组附接动作报头的情况下,该流表检索单元15检索(查找)流表13的条目以向动作阵列设置单元 16输出该结果。转发处理器14还包括动作阵列设置单元16。动作阵列设置单元16向所接收的分组附接通过流表检索单元15检索的并且要在除了该自己的节点之外的节点中执行的条目的动作阵列以作为动作报头。转发处理器14还包括动作执行单元18,其执行从动作提取单元17输出的针对所接收的分组的动作,S卩,要由自己的节点(也即,节点本身)执行的动作。动作阵列设置单元16还执行在控制服务器20处关于要附接的动作阵列询问通过流表检索单元15的条目查找结果是否表明缺少相关条目的处理操作。
本发明的节点10可以通过其中将动作提取单元17和动作阵列设置单元16添加到OpenFlow交换机的形式构成实现。
图4示出了控制服务器20的深度形式构成。参照图4,控制服务器20包括其中存储有流条目的流条目数据库(流条目DB) 21,以及基于由节点通信单元25收集的节点10的连接关系而构建关于网络拓扑的信息的拓扑管理单元22。控制服务器20还包括路由/动作计算单元23,其基于由拓扑管理单元22构建的网络拓扑的信息来发现分组转发路由以及要由分组转发路由上的节点10执行的动作阵列。控制服务器20还包括流条目管理单元 24,其在流条目DB 21中将由路由/动作计算单元23计算的结果注册为流条目,并且还对来自节点10的对于一个或者多个流条目的添加或者更新的请求做出响应。控制服务器20 进一步包括与节点10通信的节点通信单元25。注意到,如果不必要保存向节点10指示添加或者更新的流条目,则可以省去流条目数据库(流条目DB)21。该流条目数据库(流条目 DB) 21也可以例如单独提供在外部服务器上。
图5示出了要在流条目DB 21中存储的示例条目。参照图5,每一个条目由 DPID (数据路径ID),FlowKey (流密钥或者匹配密钥)以及Action (动作阵列)组成。在图5的情况下,向匹配到标记为A的FlowKey (流密钥或者匹配密钥)的分组附接“输出到 DPID 1的端口 #9/输出到DPID 2的端口 #6/输出到DPID 3的端口 #1”的动作阵列。
图6示出了 FlowKey (匹配密钥)的字段构成。例如,对于接收了其目的地地址(IP DA)是指定服务器的分组的节点10,能够执行在Actions (动作)的字段(可变长度字段) 中定义的动作。按照类似的方式,对于在指定端口( 端口(入端口))处输入的分组,可以执行在Actions的字段(可变长度字段)中定义的动作。
通过修改OpenFlow控制器的流条目DB 21的配置或者用于向节点10命令添加或者修改的流条目的内容,可以实现控制服务器20。
现在将解释节点10和控制服务器30的操作。图7阐述了示出节节点10的操作的流程图。参照图7,在从通信节点30或者其他节点10接收分组(步骤S001)时,节点10 从所接收的分组的动作报头中提取要由自己的节点执行的动作(步骤S002)。
作为动作提取的结果,如果已经能够提取动作(步骤S003为否),则节点10执行要由自己节点10本身执行的动作(步骤S009)。
作为动作提取的结果,如果不能够提取动作(步骤S003为是),则节点10从流表 13查找流条目以检查看是否存在匹配到所接收的分组的任何流条目(步骤S004)。
作为从流表13的检索(查找)流条目的结果,如果发现了匹配到所接收的分组的流条目(步骤S005为是),则节点10提取节点10本身要执行的动作(步骤S008)。节点向所接收的分组的分组报头附接所发现的流条目的动作阵列以作为动作报头(步骤S009)。 如果所接收的分组是接下来跟随已经在流条目DB 21中注册的某一分组的分组,则使用如上面阐述的从流表13检索(查找)的流条目结果来执行要由节点本身执行的动作的提取以及动作报头的创建或到该动作报头的添加。
另一方面,如果没有发现匹配到所接收的分组的流条目(步骤S005为否),则节点10向控制服务器20发送所接收的分组的全部或者一部分以请求该控制服务器20创建动作阵列(步骤S006)。
在从控制服务器20接收动作阵列时,节点10在流表13中注册所接收的流条目 (步骤S007)。节点10然后从控制服务器20接收命令以输出分组(步骤S011)。在输出分组的命令伴随有流检索(查找)命令时(步骤S012为是),则节点10再次搜索是否存在适配到所讨论的分组的流条目(步骤S004-2)。节点10然后提取节点10本身要执行的动作 (步骤S008),同时向所接收的分组的分组报头附接获取的动作阵列以作为动作报头(步骤 S009)。这同样适用于输出分组的命令不伴随有流检索命令的情况,但是通过要在分组上执行的动作实现,即,向分组附接动作阵列的动作以及在指定端口处输出所产生的分组的一个或多个动作。即,该节点执行如下处理理操作提取节点本身要执行的动作(步骤S008) 并且根据所讨论的动作向所接收的分组报头附接获取的动作阵列以作为动作报头(步骤 S009)。
最后,节点10执行节点本身要执行的动作(步骤S010)。
现在将解释在上面的步骤S009中附接动作阵列的方法。在当前示例性实施例中, 如图8所示,假设通过封装的方式通过在所接收的分组的前端处添加动作报头来附接该动作报头。也可以使用其中在所接收的分组的报头中嵌入动作的这样的方法。这将在后面作为示例性实施例3进行解释。
假设动作阵列将允许每一个节点10识别每一个节点要执行的动作,则对动作阵列没有特定限制。例如,如图9A所示,可以这样形成动作阵列以使得每一个节点10将基于单独提供的可选定界符或者长度字段从前端顺序取出动作。例如,如图9B所示,随着前端处的指针比特递增(每次增加一),每一个节点10可以执行动作。在图9A和图9B的两种情况中,节点#2从端口 #2向下一跳(hop)的节点#3转发分组,而节点#3从端口 #9向下一跳转发分组。
如图9C所示,也可以使用其中将每一个节点的ID和要被执行的动作分组到一起作为集合的这样的动作阵列。在图9C的情况中,具有ID =B的节点#2在动作报头中取出承载该节点#2 (自己的节点)的ID :B的“B2”,并且从端口 #2向下一跳的节点#3转发分组。 具有ID =C的节点#3在动作报头中取出承载其ID =C的“C9”并且从端口 #9向下一跳转发分组。在这样的动作阵列中,动作表述的顺序不必与转发路由上的节点顺序一致。因而每一个节点10能够在不必要每次重写动作报头的情况下识别要在每一个节点10(其自己的节点)中执行的动作。
如图9D所示,也可以使用其中对于每一个节点10设置要从其取出动作的动作报头中的区域的这样的方法。在图9D的情况中,配置用于从动作报头的比特0到3取出动作的节点#2取出“2”并且在端口 #2处向下一跳的节点#3转发分组。配置用于从动作报头的比特4到9取出动作的节点#3取出“9”并且在端口 #9处向下一跳的节点#3转发分组。在这样的动作阵列的情况下,动作的顺序不必与转发路由上的节点顺序一致,以使得每一个节点10可以在不必要每次重写动作报头的情况下识别要在每一个节点10中执行的动作。
图10阐述了用于说明控制服务器20的操作的流程图。参照图10,如在图7的步骤S006中,在步骤SlOl中从节点10接收创建动作阵列的请求时,控制服务器20获取关于通过拓扑管理单元22构建的网络拓扑的信息,并且在步骤S102中计算分组转发路由。
在步骤S104中,控制服务器20计算对于这样计算的转发路由的动作,以在步骤 S105中创建动作阵列,除非对于分组转发路由的计算结果表明由于节点故障或者不能够形成路由而不可能转发(步骤S103为否)。如果寻求了从DPID#1的节点10到DPID#2的节点10并且因而到DPID#3的节点10的路由,则创建动作阵列“向DPIDl的端口 #9输出/向 DPID 2的端口 #6输出/向DPID 3的端口 #1输出”。
当已经创建了动作阵列时,控制服务器20创建FlowKey (匹配密钥)以验证后续分组的匹配。控制服务器20然后在步骤S106中创建流条目。在流条目中限定有信息以便在所接收的分组以及关于接收了该分组的节点要执行的动作的信息中设置上面提及的所计算的动作阵列。最后,控制服务器20在步骤S107中向请求该动作阵列的源的节点10发送流条目,并且在节点10没有缓存分组(步骤S108为否)的情况下在步骤S109中命令输出该分组。该分组输出命令是通过指定要被输出的分组(所接收的分组)以及要对该分组执行的动作(向分组附接动作报头并且在指定的端口处输出所产生的分组的处理操作)或者通过命令从流表检索(查找)流条目以及要被输出的分组(所接收的分组)而实现的。 注意到,在节点10缓存分组的情况下(步骤S108为是),不进行分组转发,这将在后面参照图13和图14进行阐述。
图11阐述了示出从基于从通信节点A发送的分组(所接收的分组)注册新的流条目直到向下一跳转发分组(所接收的分组)的流的顺序图。
如果节点10验证了没有向所接收的分组附接动作报头,则节点10从流表13检索 (查找)流条目以检查看是否已经对于所讨论的流创建了流条目。该处理步骤与图7的步骤S004相同。由于在该时间点处在流表13中没有注册相关条目,因此节点10请求控制服务器20创建动作阵列。该处理步骤与图7的步骤S006相同。
在接收到创建动作阵列的请求时,如上面阐述的,控制服务器20计算对于所接收的分组的转发路由和动作阵列。创建流条目,其承载信息以便在所接收的分组以及关于要由接收了该分组的节点执行的动作的信息中设置上面提及的所计算的动作阵列。该处理步骤与图10的步骤S102到S106相同。
接收了上面阐述的流条目的节点10在流表13中注册该流条目。该处理步骤与图 7的步骤S007相同。
如果然后节点10从控制服务器20接收了分组输出命令,则节点10提取要由该节点本身执行的动作。该处理操作与图7的步骤S008相同。节点然后向所接收的分组附接动作报头。该处理操作与图7的步骤S009相同。节点然后在指定的端口处输出所产生的分组。该处理操作与图7的步骤SOlO相同。
图12是关于操作序列的图11的变形。图12的操作序列与图11的不同之处在于, 当控制服务器20在发送流条目之后在图10的步骤S109中发出分组输出命令时,控制服务器20指定要被输出的分组(所接收的分组),同时命令在流表中检索(从流表查找条目) 作为动作。
在接收到该命令时,节点10使用所接收的分组作为密钥(key)再次从流表检索 (查找)流条目(图12的步骤S004-2)。由于在先前的步骤S007中注册了流条目,因此检索到对于所接收的分组的流条目。节点10从流条目中提取节点10本身必须执行的动作。 该处理操作与图7的步骤S008相同。节点10向所接收的分组附接动作报头。该处理操作与图7的步骤S009相同。节点10然后在指定的端口处输出所产生的分组。该处理操作与图7的步骤SOlO相同。
在节点10具有分组缓存功能的情况下,通过图13的流程图替换图7的流程图,同时通过图14的序列更换图11的操作序列。图13的流程图和图14的操作序列分别与图7 的流程图和图11的操作序列在下面的点处不同即,在图13的流程图和图14的操作序列中,新添加了分组保存处理操作(步骤S021)和分组取出处理操作(步骤S022),并且省去了来自控制服务器20的分组输出命令。在图13和图14中,向从节点10向控制服务器20 的创建动作阵列的请求附接存储了所接收的分组的缓存器ID。在从控制服务器20向节点 10发送流条目时,向该流条目附接所接收的缓存器ID。在注册流条目(步骤S007)之后, 节点10从指定的缓存器ID取出所接收的分组(步骤S0022),同时提取节点10本身必须执行的动作并且附接动作报头(步骤S008和S009)。节点10然后在指定的端口处输出所产生的分组(步骤S010)。
现在将参照图15到图17顺序解释目前为止描述的操作序列。通信节点A向通信节点B发送具有报头X的分组(图15的(1))。接收了该分组的节点#1从其自己的流表查找流条目,然而缺少相对应的条目。因而,节点#1请求控制服务器20创建与该分组协调的动作阵列(图15的(2)分组-入)。
控制服务器20创建其中设置了与从节点#1发送的分组协调的正确匹配密钥(X) 和动作阵列(动作)的流条目。控制服务器然后将这样创建的流条目返回到节点#1(图15 的⑷流模式(添加))。
图16示出了其中节点#1已经在流表中注册了流条目的状态。在该状态中,如果控制服务器20向节点#1发出分组输出命令(图16的(5)分组-出),则节点#1向所接收的分组附接动作报头(动作)以向节点#2转发所产生的分组(图16的(6))。
节点#2读出包含在动作报头(动作)中并且节点#2本身必须执行的动作。节点 #2在端口 #5处输出所接收的分组。向节点#3递送在节点#2处输出的分组。
节点#3读出包含在动作报头(动作)中并且节点#3本身必须执行的动作。节点 #3删除该动作报头(动作)并且之后从端口 #9输出所接收的分组。向通信节点B递送从节点#3输出的分组(图16的(7))。
如图17所示,通信节点A然后向通信节点B转发尾侧分组(图17的(8))。接收了分组的节点#1在不在控制服务器20处询问的情况下检索其自己的流表。通过这样做, 节点#1根据相关条目的动作阵列创建动作报头以向节点#2转发分组(图17的(9))。之后,从节点#2向节点#3等等转发分组,直到分组最后到达通信节点B (图7的(10))。
在路由较长并且对动作报头的长度设置限制的情况下,可能有必要获得由中间节点获取的动作报头。将该操作称为“中继”或者“歇息(breath-taking)中继”处理操作。 在这种情况下,使中间节点请求创建动作阵列就足够了(图18的(1)分组-入)。可以向中间节点提供要由尾侧节点执行的动作阵列。通过这样做,能够向中间节点附接动作报头。
可以在计算路由以及动作阵列时通过控制服务器20发现需要“歇息中继”的节点。可以不仅在需要时执行歇息中继,而且可以通过向其中可能需要这样的处理操作的节点提前转发流条目来执行该歇息中继。
注意到,在控制服务器20接收了创建动作阵列的请求时(图9的⑴分组-入), 如图19所示,可以不仅向节点#1(图19的⑵流模式)而且还向节点#n-l(图19的(3) 流模式)转发流条目。
示例性实施例2
现在将参照附图描述本发明的示例性实施例2。图20示出了根据本发明示例性实施例2的通信系统。当前示例性实施例与图2所示的示例性实施例1的不同之处在于,每一个节点IOa包括动作表,并且可以通过指向动作表中的指针来识别动作。
图21示出了存储在本发明示例性实施例2的控制服务器20a的流条目DB中的示例流条目。参照图21,每一个条目由DPID (数据路径ID),FlowKey (流密钥或者匹配密钥), 其中要执行动作的节点,以及动作表的指针组成。
在当前示例性实施例中,能够增加动作报头的尺寸或者包含在动作报头中的动作数量。在当前示例性实施例中,如图22所示,当然能够使中间节点IOa执行歇息中继操作。 例如,在一开始已知图22的节点#n-l需要歇息中继操作的情况下,所需要的操作如下在节点#n-l的动作表中存储这样的动作,向所接收的分组附接表明要通过尾侧节点#n等等执行的动作阵列的动作报头并且发送所产生的分组。然后,向节点#n-l传送包括使动作执行的指针的动作报头就足够。
示例件实施例3
现在将参照附图详细描述本发明的示例性实施例3。在上面的示例性实施例2和 3中,要在所接收的分组的前端附接动作报头(参见图8)。然而,如图23所示,有可能部分地重写所接收的分组的报头。
图M示出了在所接收的分组的MAC DA字段的一部分中存储动作阵列的情况下的帧格式。假设从MAC DA字段的前端排除第7和第8比特(或者第1个八位字节的较低顺序的2比特)之后剩余的46比特代表用于动作阵列的存储区域。在每一个节点的输出端口的数量最大值为64的情况下,可以通过6比特来唯一识别端口。因而,如图9A所示,如果仅排列端口,则可以容纳最大高达7个动作。另一方面,如图9C所示,如果要附接每一个节点的ID,并且每一个节点的ID的长度为8比特,则可以容纳最大三个动作。尽管在图M 的示例中使用了 MAC DA字段,但是也可以使用MAC SA或者其他字段。此外,MAC DA字段和MAC SA字段可以连续地排列。在这些情况下,可以增加能够容纳的动作数量。
如果如上所述使用MAC DA字段来嵌入动作阵列,则恢复MACDA字段的操作变得必须在最后一跳中执行。参照图25,解释了当前示例性实施例的操作。如果通信节点A向通信节点B发送具有报头X的分组(图25的(1)),则接收了分组的节点#1从其自己的流表查找流条目。然而,不存在相对应的条目。因而,节点#1请求控制服务器20b创建与分组协调的动作阵列(图25的⑵分组-入)。
控制服务器20b创建设置了对于匹配密钥(X)替换具有动作阵列的报头(X’ )的动作以及从节点#1发送的分组的报头的流条目,并且向节点#1返回这样形成的流条目 (图25的(4)流模式)。控制服务器20b还创建设置了首先将具有动作阵列的报头(X’)恢复到原始报头(X)并且随后在预设节点处输出所产生的流条目的流条目。控制服务器20b 然后向代表路由的最后一跳的节点#3发送这样形成的流条目(图25的( 流模式(添加))。
控制服务器20(b)向节点#1发出命令以输出其中报头是具有动作阵列的报头 (X’ )的分组(图25的(6)分组-出)。节点#1向节点#2转发所接收的分组。
节点#2读出包含在具有动作阵列的报头(X’ )中的并且节点#2本身必须执行的动作。节点#2然后在端口 #5处输出所接收的分组。向节点#3传送从节点#2输出的分组。
节点#3取出与具有动作阵列的报头(X’)相关的流条目并且将具有动作阵列的报头(X’ )恢复到原始报头⑴。节点#3在端口 #9处输出所恢复的分组。向通信节点B传送在节点#3处输出的分组。
通信节点A然后向通信节点B发送结尾分组,如图25所示(图25的(9))。接收了分组的节点#1在不在控制服务器20b处进行询问的情况下从其自己的流表查找流条目。 节点#1根据相关条目的内容向节点#2发送添加有具有动作阵列的报头(X’ )的分组(图 25的(10))。然后向节点#2并且之后向节点#3等等转发该分组,直到最后该分组到达通信节点B(图25的(11))。
利用上面描述的当前示例性实施例,与示例性实施例1相比较,可以将开销降低与动作报头相对应的量。
当前示例性实施例可以与示例性实施例2组合。例如,如果使用用指向每一个节点中的动作表上的动作的指针,如图25所示,则可以在单一报头中容纳更多动作。在这样的情况下为了恢复最后一跳的报头,在节点#3的动作表中存储将报头(X’)恢复到报头(X) 的动作并且对于节点#3指定指向该动作的指针(00x5)是充分的。
图沈是用于说明本发明的示例性实施例4的示意性视图。
可以通过各种方法实现报头恢复的处理操作。例如,如图27所示,可以向最后一跳的节点#3的流表添加允许执行下一个动作的流条目。开始,(12)从X’获取IP DA(互联网协议目的地地址),并且(1 向除了入端口之外的端口发送ARP(地址解析协议)请求。(14)获取与IP DA相关的MAC DA并且(15)使用所获取的MAC DA恢复该报头。之后, (16)向MAC DA的接收端口发送该分组。
如果MAC SA字段不用于存储动作阵列,则可以使用执行下面动作的方法,如图观所示。该动作使MAC DA字段(00:00:00:00:00:01)的内容退回为MAC SA字段,然后在MAC DA字段中存储该动作阵列并且使用MAC SA字段的内容将MAC DA字段重写回到最后一跳的节点#3中。注意到,尽管在图观的示例中在MAC SA字段中输入了地址 (00:00:00:00:00:02),但是该地址也可以是任何其他的任意值。
动作阵列的容纳目的地并不局限于图M的示例,使得其可以是MAC SA字段,VAN_ ID(VID),类型或者任何其他适合的字段。也可以在预设区域中容纳该动作阵列,例如较上层的报头或者数据区域。
尽管上面示出了本发明的示例性实施例,但是本发明并不局限于这些示例性实施例并且可以在本发明的基础技术概念的范围内进行修改或者调整。示例性实施例的控制服务器20和20a到20f可以实现为专用服务器。节点10和IOa到IOf可以不仅是上面提及的OpenFlow交换机,而且还可以实现为MPLS (多协议标签交换)网络中的MPLS交换机。在网络是允许服务器执行该网络中的节点的密集管理的网络的情况下,可以应用本发明。
根据本发明的操作将显见的是,提供动作阵列设置单元16作为与路由的开始点相对应的输入节点,诸如图18的节点#1,并且作为“歇息中继”操作的节点,诸如图18的节点#n-l,是足够的。因而,如果在开始时已知网络中的哪一个节点与入口节点或者用于“歇息中继”节点的节点相对应,则可以省去动作阵列设置单元16。
可以以本发明的基础技术概念为基础,在包括权利要求的本发明的整体公开的范围内修改或者调整该特定的示例性实施例或者示例。因而,可以在权利要求的框架内对这里公开的元件进行各种组合或者选择。
工业实用件
在诸如数据中心的商业网络中,需要在变化的条件下精确控制分组转发路由,包括目的地地址,源地址或者使用中的协议,以获得高QoS (服务质量)并且实现最佳负载分配。根据本发明,至少可以省去不需要中间歇息中继处理的节点的流表。此外,即使在需要流表的节点中,也能够减少条目的数量。因而本发明可以对于诸如数据中心的商业网络有利。
尽管在若干示例性实施例方面描述了本发明,本领域技术人员将认识到,本发明可以在所附权利要求的精神和范围内利用变形来实践。
此外,应当注意,申请人的意图在于涵盖所有权利要求要素的等同物,即使是在随后程序阶段修改的。
权利要求
1.一种通信系统,包括数据转发网络的节点;所述节点接收分组,所述分组包括处理操作的阵列,所述处理操作的阵列包括要由所述节点执行的多个处理操作,所述处理操作并行布置,并且所述节点根据所述处理操作的阵列执行所述节点要执行的所述处理操作。
2.根据权利要求1的通信系统,其中,所述处理操作的阵列可以包括要由多个节点执行的处理操作。
3.根据权利要求1或者2的通信系统,其中,所述分组进一步包括对于所述处理操作必需的数据。
4.根据权利要求1到3中的任意一项的通信系统,进一步包括具有设置处理操作的阵列的设置单元的节点,所述设置单元允许所述处理操作的阵列包括在输入分组中。
5.根据权利要求4的通信系统,其中,如果所述处理操作的阵列不包括在所述输入分组中,则设置所述处理操作的阵列的所述设置单元基于包含在所述输入分组的报头中的信息来获取处理操作的阵列,以使所述处理操作的阵列包括在所述输入分组中。
6.根据权利要求4的通信系统,其中,在要由自己的节点执行的处理操作不包括在所述输入分组的所述处理操作的阵列中的情况下,设置所述处理操作的阵列的所述设置单元基于包括在所述输入分组的报头中的信息来获取处理操作的阵列,以使所述处理操作的阵列包括在所述输入分组中。
7.根据权利要求4到6中的任意一项的通信系统,进一步包括控制服务器,其基于包含在所述输入分组的报头中的信息来创建处理操作的阵列,以向包括设置所述处理操作的阵列的所述设置单元的预设节点发送所述处理操作的阵列。
8.根据权利要求7的通信系统,其中,在所述处理操作的阵列不包括在所述输入分组中并且不能够从所述分组的所述报头信息获取相关的处理操作的阵列的情况下,所述设置单元向所述控制服务器全部或者部分地发送所述输入分组以请求所述控制服务器向其发送所述处理操作的阵列。
9.根据权利要求8的通信系统,其中,所述控制服务器创建处理操作的阵列,所述处理操作的阵列允许请求了发送所述处理操作的阵列的节点利用所述处理操作的阵列来更换所述输入分组中预设区域的内容,以允许从所述输入分组发现的最后一跳的节点恢复利用所述处理操作的阵列更换的、所述输入分组的所述预设区域的内容。
10.根据权利要求7到9中的任意一项的通信系统,其中,所述控制服务器允许除了请求了发送所述处理操作的阵列的节点之外的一个或者多个节点执行请求发送所述处理操作的阵列的所述处理操作,以使得所述处理操作的阵列的长度将在预设尺寸内。
11.根据权利要求1到10中的任意一项的通信系统,其中所述节点包括所述通信系统中的多个个体节点中的一个,所述个体节点中的每一个包括其中注册有所述处理操作的内容的处理表;所述处理操作的阵列通过识别注册在所述处理表中的所述处理操作的所述内容的指针来表明。
12.根据权利要求1到11中的任意一项的通信系统,其中,所述节点具有在执行包含在所述处理操作的阵列中的至少一个处理操作之后更新包含在所述输入分组中的所述处理操作的阵列的功能。
13.根据权利要求1到12中的任意一项的通信系统,其中,所述处理操作的阵列中的所述处理操作按照执行所述处理操作的所述节点的顺序排列,所述分组根据所述处理操作的阵列而被转发到所述通信系统中的个体节点。
14.根据权利要求1到12中的任意一项的通信系统,其中所述处理操作的阵列中的所述处理操作与所述通信系统中执行所述处理操作的个体节点相关联地排列,所述个体节点从所述处理操作的阵列中提取与其自己的节点相关的所述处理操作并且执行所提取的处理操作。
15.一种布置在数据转发网络中的节点,布置在所述数据转发网络中的所述节点接收包括所述节点要执行的处理操作的阵列的分组,所述处理操作并行布置,布置在所述数据转发网络中的所述节点根据所述处理操作的阵列执行所述处理操作。
16.根据权利要求15的节点,其中,所述处理操作的阵列可以包括要由多个节点执行的处理操作。
17.根据权利要求15或者16的节点,其中,所述分组进一步包括对于所述处理操作必需的数据。
18.根据权利要求15到17中的任意一项的节点,进一步包括设置处理操作的阵列的设置单元,所述设置单元允许所述处理操作的阵列包含在输入分组中。
19.根据权利要求18的节点,其中,在所述处理操作的阵列不包含在所述输入分组中的情况下,所述设置单元基于包含在所述输入分组的报头中的信息来获取所述处理操作的阵列,以使所述处理操作的阵列包括在所述输入分组中。
20.根据权利要求19的节点,其中,在要由自己的节点执行的所述处理操作不包含在所述输入分组的所述处理操作的阵列中的情况下,所述设置单元基于包含在所述输入分组的所述报头中的所述信息来获取所述处理操作的阵列,以使所述处理操作的阵列包括在所述输入分组中。
21.根据权利要求20的节点,其中,在所述处理操作的阵列不包含在输入分组中并且不能够从所述分组的报头信息获取相关的处理操作的阵列的情况下,所述设置单元向发送所述处理操作的阵列的控制服务器发送所述输入分组的全部或者部分,以请求所述控制服务器向其发送所述处理操作的阵
22.根据权利要求15到21中的任意一项的节点,进一步包括其中注册有处理操作的内容的处理表,其中,通过指针识别注册在所述处理表中的处理操作的所述内容,所述处理操作的阵列通过所述指针来表明,所述指针被读出以执行与所述指针相关联的所述处理操作的内容。
23.根据权利要求15到22中的任意一项的节点,其中,所述节点具有执行包含在所述处理操作的阵列中的一个或者多个处理操作并且之后更新包含在所述输入分组中的所述处理操作的阵列的功能。
24.一种控制服务器,其基于包含在从布置在数据转发网络中的节点接收的输入分组中的信息来创建处理操作的阵列,所述处理操作的阵列包括要由布置在所述数据转发网络中的节点执行的处理操作,所述处理操作并行布置,并且所述控制服务器向发送了所述输入分组的所述节点发送所述处理操作的阵列。
25.根据权利要求M的控制服务器,其中,所述处理操作的阵列包括要由多个节点执行的处理操作。
26.根据权利要求M或者25的控制服务器,其中,所述分组进一步包括对于所述处理操作必需的数据。
27.根据权利要求M到沈中的任意一项的控制服务器,其中,创建这样的处理操作的阵列,其允许发送了所述处理操作的阵列的所述节点利用所述处理操作的阵列来更换所述输入分组的预设区域的内容,并且允许从所述输入分组发现的最后一跳的节点恢复利用所述处理操作的阵列而更换的所述输入分组的所述预设区域的所述内容。
28.根据权利要求M到27中的任意一项的控制服务器,其中,所述控制服务器允许除了已经发送所述处理操作的阵列的所述节点之外的一个或者多个节点执行请求发送所述处理操作的阵列的处理操作,以使得所述处理操作的阵列的长度将不大于预设值。
29.根据权利要求M到观中的任意一项的控制服务器,其中,创建这样的处理操作的阵列,其中所述处理操作按照执行所述处理操作的节点的顺序排列并且其中根据所述处理操作的阵列向各个个体节点转发分组。
30.根据权利要求M到观中的任意一项的控制服务器,其中,创建这样的处理操作的阵列,其中彼此相关地表明执行处理操作的节点与所述处理操作,并且其中各个个体节点能够从所述处理操作的阵列中提取与其自己的节点相关联的所述处理操作以执行所提取的处理操作。
31.一种用于通信的方法,所述方法包括使得处理操作的阵列包含在输入分组中,所述处理操作的阵列包括要由数据转发网络中的节点执行的处理操作的阵列,所述处理操作被并行排列;以及在所述数据转发网络中的节点中,根据包含在所述输入分组中的所述处理操作的阵列来执行所述节点本身要执行的处理。
32.一种机器可读存储设备,其有形地体现要在用作布置在数据转发网络中的节点的计算机上运行的程序,其中所述程序允许接收包含要由布置在所述数据转发网络中的所述节点执行的处理操作的阵列的分组,所述处理操作被并行排列;所述程序允许根据所述处理操作的阵列通过自己的节点来执行所述处理操作;以及所述程序允许执行提取的一个或多个处理操作。
33. 一种要在计算机上运行的有形地体现为存储介质中的一系列机器可读指令的程序,所述计算机包括对来自布置在数据转发网络中的节点的请求做出响应而创建处理操作的阵列的控制服务器,所述程序包括用于下面的指令基于包含在从所述节点接收的输入分组的报头中的信息来创建要由所述数据转发网络中的节点执行的所述处理操作的阵列的处理操作;以及向所述节点发送所创建的处理操作的阵列的处理操作。
全文摘要
一种分组,包含要由节点执行的处理操作的阵列。数据转发网络中的每一个节点根据包含在所述分组中的所述处理操作的所述阵列来执行其必须执行的处理。
文档编号H04L12/56GK102498693SQ200980161428
公开日2012年6月13日 申请日期2009年9月14日 优先权日2009年9月14日
发明者下西英之, 千叶靖伸, 筱原悠介 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1