流表管理方法及相关设备和系统与流程

文档序号:17748230发布日期:2019-05-24 20:47阅读:220来源:国知局
本发明涉及网络通信
技术领域
:,具体涉及流表管理方法以及相关设备和通信系统。
背景技术
::开放流(OpenFlow)技术最早是由斯坦福大学提出,旨在基于传输控制协议/因特网互联协议(TCP/IP,TransmissionControlProtocol/InternetProtocol)技术条件,以创新的网络互联理念,来解决当前网络面对新业务而产生的种种瓶颈问题。其中,OpenFlow技术的核心思想主要是将原本完全由交换设备(交换设备例如可为交换机、路由器等)控制的报文转发过程,转化为由OpenFlow交换设备(OpenFlowSwitch)和软件定义网络(SDN,SoftwareDefinedNetwork)控制器(SDNController)协同完成。SDNController可主动或在OpenFlowSwitch请求时向OpenFlowSwitch下发用于指示报文转发处理方式的流表项,OpenFlowSwitch则根据SDNController下发的流表项对接收到的与之匹配的报文进行转发处理。现有技术在任何时候,SDNController向OpenFlowSwitch下发的流表项都是标准完整的流表项。SDNController有的时候还一次性向OpenFlowSwitch下发几十上百条流表项。SDNController下发标准完整的流表项在有些情况下可能造成控制信道较大开销,增加控制信道拥塞风险,且占用SDNController和OpenFlowSwitch双方较多网络处理资源。技术实现要素:本发明实施例提供流表管理方法及设备和系统,以期降低SDNController向OpenFlowSwitch下发流表项的数据量,进而减少控制信道开销,进而降低控制信道拥塞风险,减少下发流表项对SDNController和OpenFlowSwitch的网络处理资源占用。第一方面,一种流表管理方法,包括:软件定义网络控制器生成第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,其中,所述第一字段集包括N个字段,所述N为正整数;所述软件定义网络控制器向开放流交换设备发送开放流协议消息,所述开放流协议消息携带有所述第一流表项。结合第一方面,在第一方面的第一种可能的实施方式中,所述索引为所述开放流交换设备已保存的流表项的流表项标识。结合第一方面或第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述第一流表项中的第二字段集中的每个字段携带有多个实际取值,其中,所述第二字段集包括M个字段,其中,所述M为正整数。结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述生成第一流表项之前还包括:所述软件定义网络控制器接收来自交换设备的第一报文或第一报文的报文头,并按照预设处理策略确定用于处理所述第一报文的路由指令集;其中,所述第一流表项的指令字段携带所述路由指令集或所述路由指令集的索引。第二方面,一种流表管理方法,包括:开放流交换设备接收开放流协议消息,所述开放流协议消息携带有第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,其中,所述第一字段集包括N个字段,所述N为正整数;所述开放流交换设备基于所述第一字段集的实际取值的索引获取所述第一字段集的实际取值;所述开放流交换设备利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。结合第二方面,在第二方面的第一种可能的实施方式中,所述索引为所述交换设备已保存的流表项的流表项标识;其中,所述基于所述第一字段集的索引获取所述第一字段集的实际取值,包括:基于所述流表项标识获取所述流表项标识所表示的流表项中与所述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,所述第三字段集和所述第一字段集之中协议类型相同的字段的实际取值相同。结合第二方面或第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述方法还包括:所述开放流交换设备向软件定义网络控制器发送所述第一流表项的标识或保存的所述第一流表项。结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述开放流交换设备接收第一流表项之前还包括:所述开放流交换设备向软件定义网络控制器发送第一报文或第一报文的报文头;其中,所述第一流表项的指令字段携带用于处理所述第一报文的路由指令集或路由指令集的索引;所述方法还包括:所述开放流交换设备基于所述路由指令集处理所述第一报文。第三方面,一种流表中继方法,可包括:虚拟层设备接收来自第一软件定义网络控制器的第一开放流协议消息;所述第一开放流协议消息携带所述第一流表项,所述第一流表项中的第一字段携带所述第一字段的实际取值的索引;所述虚拟层设备接收来自第二软件定义网络控制器的第二开放流协议消息,其中,所述第二开放流协议消息携带所述第二流表项,所述第二流表项中的第四字段携带所述第四字段的实际取值的索引;所述虚拟层设备将所述第一流表项和所述第二流表项合并为第三流表项;所述虚拟层设备向开放流交换设备发送携带所述第三流表项的第三开放流协议消息。第四方面,一种软件定义网络控制器,可包括:生成单元,用于生成第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,所述第一字段集包括N个字段,所述N为正整数;发送单元,用于向开放流交换设备发送开放流协议消息,所述开放流协议消息携带有所述第一流表项。结合第四方面,在第四方面的第一种可能的实施方式中,所述索引为所述开放流交换设备已保存的流表项的流表项标识。结合第四方面或第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,所述第一流表项中的第二字段集中的每个字段携带多个实际取值,其中,所述第二字段集包括M个字段,其中,所述M为正整数。结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施方式中,所述软件定义网络控制器还包括接收单元,用于在所述生成单元生成第一流表项之前,接收来自交换设备的第一报文或第一报文的报文头,并按照预设处理策略确定用于处理所述第一报文的路由指令集;其中,所述第一流表项的指令字段携带所述路由指令集或所述路由指令集的索引。第五方面,一种开放流交换设备,可包括:接收单元,用于接收开放流协议消息,所述开放流协议消息携带有第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,其中,所述第一字段集包括N个字段,所述N为正整数。获取单元,用于基于所述第一字段集的实际取值的索引获取所述第一字段集的实际取值;替换单元,用于利用所述获取单元获取的所述第一字段集的实际取值,替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。结合第五方面,在第五方面的第一种可能的实施方式中,所述索引为所述开放流交换设备已保存的流表项的流表项标识;其中,所述获取单元具体用于,基于所述流表项标识获取所述流表项标识所表示的流表项中与所述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,所述第三字段集和所述第一字段集之中协议类型相同的字段的实际取值相同。结合第五方面或第五方面的第一种可能的实施方式,在第五方面的第二种可能的实施方式中,所述开放流交换设备还包括:第一发送单元,用于向软件定义网络控制器发送所述第一流表项的标识或保存的所述第一流表项。结合第五方面或第五方面的第一种可能的实施方式或第五方面的第二种可能的实施方式,在第五方面的第三种可能的实施方式中,所述开放流交换设备还包括:第二发送单元,用于接收第一流表项之前向软件定义网络控制器发送第一报文或第一报文的报文头;其中,所述第一流表项的指令字段携带用于处理所述第一报文的路由指令集或路由指令集的索引;报文处理单元,用于基于所述路由指令集处理所述第一报文。第六方面,一种虚拟层设备,包括:接收单元,用于接收来自第一软件定义网络控制器的第一开放流协议消息;所述第一开放流协议消息携带所述第一流表项,所述第一流表项中的第一字段携带所述第一字段的实际取值的索引;接收来自第二软件定义网络控制器的第二开放流开放流协议消息,其中,所述第二开放流协议消息携带所述第二流表项,所述第二流表项中的第四字段携带所述第四字段的实际取值的索引;合并单元,用于将所述第一流表项和所述第二流表项合并为第三流表项;发送单元,用于向开放流交换设备发送携带所述第三流表项的第三开放流协议消息。第七方面,一种通信系统,包括:软件定义网络控制器,用于生成第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,所述第一字段集包括N个字段,所述N为正整数;向开放流交换设备发送开放流协议消息,其中,所述开放流协议消息携带有所述第一流表项;所述开放流交换设备,用于接收所述开放流协议消息;基于所述第一字段集的实际取值的索引获取所述第一字段集的实际取值;利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。第八方面,一种通信系统,包括:第一软件定义网络控制器,用于发送第一开放流开放流协议消息;所述第一开放流协议消息携带所述第一流表项,所述第一流表项中的第一字段携带所述第一字段的实际取值的索引;第二软件定义网络控制器,用于第二开放流协议消息,其中,所述第二开放流协议消息携带所述第二流表项,所述第二流表项中的第四字段携带所述第四字段的实际取值的索引;虚拟层设备,用于接收来自第一软件定义网络控制器的第一开放流协议消息;接收来自第二软件定义网络控制器的第二开放流协议消息;将所述第一流表项和所述第二流表项合并为第三流表项;向所述开放流交换设备发送携带所述第三流表项的第三开放流协议消息;所述开放流交换设备,用于接收所述第三开放流协议消息;将所述第三开放流协议消息携带的所述第三流表项拆分为所述第一流表项和所述第二流表项;基于所述第一字段的实际取值的索引获取所述第一字段的实际取值;基于所述第四字段的实际取值的索引获取所述第四字段的实际取值;利用所述第一字段的实际取值替换所述第一流表项的所述第一字段所携带的所述第一字段的实际取值的索引;利用所述第四字段的实际取值替换所述第二流表项的所述第四字段所携带的所述第四字段的实际取值的索引。可以看出,本发明实施例的方案中,对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此,本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。附图说明为了更清楚地说明本发明实施例和现有技术中的技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1-a为本发明实施例提供的一种流表管理方法的流程示意图;图1-b为本发明实施例提供的一种SDN下发的流表项的示意图;图1-c为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-d为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-e为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-f为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-g为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-h为本发明实施例提供的另一种SDN下发的流表项的示意图;图1-i为本发明实施例提供的一种流表项拆分的示意图;图1-j为本发明实施例提供的另一种流表项拆分的示意图;图2-a为本发明实施例提供的另一种流表管理方法的流程示意图;图2-b为本发明实施例提供的一种OpenFlowSwitch保存的流表的示意图;图2-c为本发明实施例提供的另一种SDN下发的流表项的示意图;图3-a为本发明实施例提供的另一种流表管理方法的流程示意图;图3-b为本发明实施例提供的一种流表项合并的示意图;图3-c为本发明实施例提供的另一种流表项合并的示意图;图4为本发明实施例提供的另一种流表管理方法的流程示意图;图5为本发明实施例提供的另一种流表管理方法的流程示意图;图6为本发明实施例提供的另一种流表管理方法的流程示意图;图7为本发明实施例提供的另一种流表管理方法的流程示意图;图8-a为本发明实施例提供的一种SDNController的结构示意图;图8-b为本发明实施例提供的另一种SDNController的结构示意图;图9-a为本发明实施例提供的一种OpenFlowSwitch的结构示意图;图9-b为本发明实施例提供的另一种OpenFlowSwitch的结构示意图;图9-c为本发明实施例提供的另一种OpenFlowSwitch的结构示意图;图10为本发明实施例提供的一种虚拟层设备的结构示意图;图11为本发明实施例提供的另一种SDNController的结构示意图;图12为本发明实施例提供的另一种SDNController的结构示意图;图13为本发明实施例提供的另一种OpenFlowSwitch的结构示意图;图14为本发明实施例提供的另一种OpenFlowSwitch的结构示意图;图15为本发明实施例提供的另一种虚拟层设备的结构示意图;图16为本发明实施例提供的另一种虚拟层设备的结构示意图;图17为本发明实施例提供的一种通信系统的示意图;图18为本发明实施例提供的另一种通信系统的示意图。具体实施方式本发明实施例提供流表管理方法及设备和系统,以期降低SDNController向OpenFlowSwitch下发流表项的数据量,进而减少控制信道开销,进而降低控制信道拥塞风险,减少下发流表项对SDNController和OpenFlowSwitch的网络处理资源占用。为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。以下分别进行详细说明。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。本发明流表管理方法的一实施例,一种流表管理方法包括:SDNController生成第一流表项,其中,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引,上述第一字段集包括N个字段,上述N为正整数;向OpenFlowSwitch发送OpenFlow协议消息,其中,上述OpenFlow协议消息携带有上述第一流表项。首先请参见图1-a,图1-a是本发明的一个实施例提供的一种流表管理方法的流程示意图。如图1-a所示,本发明的一个实施例提供的一种流表管理方法可包括以下内容:101、SDNController生成第一流表项。其中,SDNController可基于预设策略生成流表项(可称第一流表项以便于后续引述),SDNController也可在用户指令或某OpenFlow交换机的触发下生成第一流表项。当然,SDNController也可能在其它条件的触发下生成一条或者多条流表项。SDN架构中,SDNController决定数据包在网络中传输路径。OpenFlow交换设备会在本地保存若干个流表(FlowTable),每个FlowTable中可包含若干流表项。其中,若需OpenFlowSwitch转发的数据包(例如报文)在其本地保存的FlowTable中存在与之匹配的流表项,则OpenFlowSwitch基于FlowTable中与之匹配的流表项进行数据包的转发处理。此外,若本地保存的FlowTable中没有与数据包匹配的流表项,OpenFlowSwitch可将该数据包或该数据包的包头发送到SDNController进行相应转发处理方式确认。其中,SDNController向OpenFlowSwitch反馈与该数据包匹配的新流表项。OpenFlowSwitch则根据SDNController下发的与该数据包匹配的新流表项进行数据包转发处理。这就意味着OpenFlow网络中的设备可分布部署、集中管控,这就使得OpenFlow网络变为软件可定义的形态,因此OpenFlow网络也称之为SDN。SDN可提供可编程接口,让网络使用者可决定如何路由数据包、如何实现负载均衡或者如何进行访问控制等等。这就使得SDN中部署一种新路由协议或者安全算法,一般往往仅需要在SDNController上撰写数百行代码,其开放性有利于加快新网络应用的快速开发和部署。需要说明,本发明各实施例中提及的OpenFlowSwitch为支持OpenFlow协议的交换设备。其中,支持OpenFlow协议的交换设备例如可为支持OpenFlow协议的路由器或交换机等数据包(如报文)转发设备。102、SDNController向OpenFlowSwitch发送OpenFlow协议消息。其中,上述OpenFlow协议消息携带有上述第一流表项,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引,其中,上述第一字段集包括N个字段,上述N为正整数。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是流修改(flow_mod)消息或其它OpenFlow协议消息。可以理解,第一流表项的数据结构可与标准的流表项相同,例如第一流表项所包含的协议字段的类型、第一流表项中各类型协议字段的位置关系,可以与标准的流表项相同。但是,第一流表项中的部分或者全部协议字段所携带的信息类型不同于标准流表项,具体来说,第一流表项中的第一字段集中的某字段携带该字段的实际取值的索引,而标准的流表项中的各字段均携带其实际取值本身。其中,本发明各实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段,也就是说,第一字段集中各字段在第一流表项中的分布位置可以是任意的,这样就有利于更加灵活的满足多种实际应用场景的灵活需求。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的介质访问控制(MAC,MediaAccessControl)地址字段、虚拟局域网标识字段、源MAC地址字段等等。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如,端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,SDNController下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如,第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如,第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又举例来说,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又例如,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。可以理解,上述实际取值的索引可能是多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同(例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识)。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于SDNController较好的控制所下发的第一流表项的数据量。在本发明的一些实施方式中,上述第一流表项中的第二字段集中的每个字段还可携带该字段的多个实际取值。上述第二字段集包括M个字段,上述M为正整数。其中,字段的实际取值的举例如上所述。可以理解,由于第二字段集中的每个字段还可携带用该字段的多个实际取值,因此,这就相当于说明第一流表项可拆分为多个流表项,这也有利于SDNController较好的控制所下发的第一流表项的数据量。例如,第一流表项中的第二字段集包括目的MAC地址字段,该目的MAC地址字段携带3个目的MAC地址(例如该目的MAC地址字段携带的信息如下:192.168.0.2、192.168.0.3、192.168.0.4,或者该目的MAC地址字段携带的信息如下:192.168.0.2~192.168.0.4,上述举例的两种方式都可表示目的MAC地址字段携带了3个目的MAC地址,当然也可通过其它方式来表示目的MAC地址字段携带3个MAC地址),此场景下OpenFlowSwitch可将该第一流表项拆分为4个流表项,这3个流表项的目的MAC地址字段分别携带上述3个目的MAC地址中的不同1个,这3个流表项的其它字段相同。当然,若这3个流表项的其它字段也携带多个实际取值,则也可按照类似方式,对这3个流表项分别进行拆分,例如,拆分得到的这3个流表项的虚拟局域网标识字段携带了2个虚拟局域网标识,则可将该3个流表项中的每个流表项又拆分为2个流表项,具体拆分方式可如图1-i-图1-j所示。可以直到拆分得到的流表项的每个字段只携带该字段的一个实际取值或实际取值的索引为止。其中,本发明各实施例中的M例如可等于1、2、5、8、10或其它值。其中,第一流表项中的第二字段集所包括的M个字段可为第一流表项中不同于第一字段集中任意1个字段的任意M个字段,第二字段集包括的M个字段可以是第一流表项中相邻的M个字段、部分相邻的M个字段或均不相邻的M个字段。上述M个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。其中,上述第二字段集和上述第一字段集的交集为空集。下面通过附图举例第一流表项的几种可能结构。参见图1-b~图1-e,其中,图1-b举例示出第一流表项中的第一字段集包括1个字段,该字段携带该字段实际取值的索引。图1-c举例示出第一流表项的第一字段集包括相邻2个字段,该相邻2个字段中的每个字段携带该字段实际取值的索引。图1-d举例示出第一流表项的第一字段集包括相邻t1个字段(其中t1为大于2的正整数),其中,该相邻t1个字段中的每个字段携带该字段实际取值的索引。图1-e举例示出第一流表项的第一字段集包括不相邻的2个字段,该不相邻的2个字段中的每个字段携带该字段实际取值的索引。可以理解,第一字段集包括更多字段的场景可以此类推。又例如,参见图1-f~图1-h,其中,图1-f举例示出第一流表项包括第一字段集和第二字段集,第一字段集包括1个字段,该1个字段携带该字段实际取值的索引;第二字段集也包括1个字段,该1个字段携带用于描述该字段的多个实际取值。图1-g举例示出第一流表项的第一字段集包括相邻多个字段,该相邻多个字段中的每个字段携带该字段实际取值的索引,而第二字段集包括1个字段,该1个字段携带该字段的多个实际取值。其中,图1-h举例示出第一流表项的第一字段集包括相邻的多个字段,其中,该相邻多个字段中的每个字段携带该字段实际取值的索引;而第二字段集也包括多个字段,第二字段集包括的多个字段中的每个字段携带该字段的多个实际取值。可以理解,第一字段集和第二字段集包括更多字段的场景可以此类推。在本发明的一些的实施方式中,SDNController生成第一流表项之前,还可接收来自OpenFlowSwitch的第一报文,并可按照预设处理策略确定上述第一报文的路由指令集。其中,上述第一流表项的指令(Instructions)字段携带上述路由指令集或上述路由指令集的索引,其中,该索引例如可为上述OpenFlowSwitch上已保存的某个流表项的流表项标识。进一步的,上述OpenFlowSwitch在获得上述第一流表项之后,可基于上述第一流表项的Instructions字段携带的上述路由指令集(或基于上述路由指令集的索引获取到的路由指令集)来处理上述第一报文。例如,上述SDNController接收来自OpenFlowSwitch的第一报文或第一报文的报文,可包括:SDNController接收来自OpenFlowSwitch的携带第一报文或者第一报文的报文头的OpenFlow协议消息(其中,该OpenFlow协议消息例如可为入分组(packet_in)消息或者其它OpenFlow协议消息)。当然该OpenFlow协议消息中还可携带1个或多个其它报文或报文头,当然,该OpenFlow协议消息也还可携带其它信息。在本发明的一些实施方式中,对于相同的流表项,在OpenFlowSwitch和SDNController中用于标识该相同的流表项的流表项标识可以是相同的或者是具有约定映射关系的,若OpenFlowSwitch和SDNController中使用设定映射关系的流表项标识来标识相同的流表项,则OpenFlowSwitch和SDNController均可利用该设定映射关系推导出相同流表项在对端设备中的流表项标识。其中,一个SDNController可以管辖多个OpenFlowSwitch(即,同一个SDNController可能向多个OpenFlowSwitch下发流表项)。一个OpenFlowSwitch可受一个或多个SDNController管辖(即,多个SDNController有可能向同一个OpenFlowSwitch下发流表项)。在本发明一些实施方式中,SDNController和OpenFlowSwitch之间交互的信息可经虚拟层设备(若存在)转发而到达对端,虚拟层设备可透传SDNController和OpenFlowSwitch交互的信息,也可对SDNController和OpenFlowSwitch交互的信息进行一定的中继处理(例如流表项拆分、流表项合并等中继处理)之后转发到对端。举例来说,SDNController向OpenFlowSwitch发送OpenFlow协议消息可经虚拟层设备(若存在)转发到达OpenFlowSwitch,同理,OpenFlowSwitch向SDNController发送OpenFlow协议消息可经虚拟层设备转发到SDNController,当然还可能存在其它中继设备。其中,本发明实施例中的虚拟层设备可为能够对物理的OpenFlowSwitch进行虚拟化的设备,虚拟层设备例如可以将一个物理的OpenFlowSwitch虚拟成多个虚拟的OpenFlowSwitch。其中,本发明实施例的技术方案主要关注的是虚拟层设备对SDNController和OpenFlowSwitch之间交互的信息进行中继转发的问题。可以看出,本实施例的方案中,对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此,本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。本发明流表管理方法的另一实施例,一种流表管理方法可包括:OpenFlowSwitch接收携带第一流表项的OpenFlow协议消息;其中,上述第一流表项中的第一字段集可携带上述第一字段集的实际取值的索引,其中,上述第一字段集包括N个字段,上述N为正整数;基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值;利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。首先请参见图2-a,图2-a是本发明的另一个实施例提供的另一种流表管理方法的流程示意图。如图2-a所示,本发明的另一个实施例提供的另一种流表管理方法可包括以下内容:201、OpenFlowSwitch接收携带第一流表项的OpenFlow协议消息。其中,上述第一流表项中的第一字段集可携带上述第一字段集的实际取值的索引。其中,上述第一字段集包括N个字段,上述N为正整数。上述N例如可等于1、2、5、8、10或其它值。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。其中,SDNController可能主动的向OpenFlowSwitch下发流表项,SDNController也可在用户指令或者在某OpenFlowSwitch的触发之下向该OpenFlowSwitch下发流表项。当然,SDNController也可能在其它的条件的触发下向OpenFlowSwitch下发流表项。其中,上述OpenFlow协议消息携带的第一流表项可能是由某SDNController生成的,或者该第一流表项也可能是由虚拟层设备(或其它的中继设备)对某SDNController或多个SDNController下发的多个流表项进行合并而得到的。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。202、OpenFlowSwitch基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值。可以理解,上述实际取值的索引可能的多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同。例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于SDNController较好的控制所下发的第一流表项的数据量。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如,端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,SDNController下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如,第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如,第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如,第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又例如,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又举例来说,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。在本发明的一些实施例之中,若上述索引为上述OpenFlowSwitch已保存的流表项的流表项标识;则基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值,可包括:基于上述流表项标识获取上述流表项标识所表示的流表项中,与上述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,上述第三字段集和上述第一字段集之中协议类型相同的字段的实际取值相同。可以理解,第三字段集和第一字段集的字段数量相等,且第三字段集和第一字段集包含的字段的协议类型一一对应。203、OpenFlowSwitch利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。进一步的,OpenFlowSwitch可保存所述第一字段集所携带的所述第一字段集的实际取值的索引被替换为所述第一字段集的实际取值之后的所述第一流表项,即,保存在上述第一字段集中填充了获取的上述实际取值之后的上述第一流表项。在本发明的一些实施例中,OpenFlowSwitch还可向SDNController发送上述第一流表项的标识或上述保存的上述第一流表项,以便于OpenFlowSwitch和SDNController之间同步保存的流表项。当然,若SDNController也按照OpenFlowSwitch类似的方法得到并保存相同的第一流表项,这样也可实现OpenFlowSwitch和SDNController之间同步保存的流表项,此时OpenFlowSwitch则可无需向SDNController发送上述第一流表项的标识或者上述SDNController保存的上述第一流表项。在本发明一些实施例中,上述OpenFlowSwitch接收第一流表项之前还可包括:向上述SDNController发送第一报文或第一报文的报文头。其中,上述第一流表项的Instructions字段携带有用于处理上述第一报文的路由指令集或路由指令集的索引;上述方法还可进一步包括:OpenFlowSwitch基于上述路由指令集处理上述第一报文。例如,向上述SDNController发送第一报文可包括:向上述SDNController发送携带第一报文的OpenFlow协议消息(该OpenFlow协议消息例如可为packet_in消息或其它OpenFlow协议消息)。在本发明的一些实施方式中,对于相同的流表项,在OpenFlowSwitch和SDNController中用于标识该流表项的流表项标识可以是相同的或者是具有约定映射关系的,而OpenFlowSwitch和SDNController均可利用该设定映射关系推导出同一个流表项在对端设备中的流表项标识。例如,图2-b所示,OpenFlowSwitch保存了流表1、流表2和流表3等。各流表中均包含多个流表项。假设第一流表项如图2-c所示,第一流表项的第一字段集包括Switchport字段、MACsrc字段、IPsrc字段,这些字段都携带的是各自实际取值的索引,该索引为OpenFlowSwitch流表项的标识,因此,OpenFlowSwitch可基于Switchport字段携带的流表项标识,找到已保存的流表项1.3,并利用已保存的流表项1.3的Switchport字段的实际取值,替换第一流表项Switchport字段携带的实际取值的索引。同理,OpenFlowSwitch可基于MACsrc字段携带的流表项标识,找到已保存的流表项2.1,并可利用已保存的流表项2.1的MACsrc字段的实际取值,替换第一流表项MACsrc字段携带的实际取值的索引。同理,OpenFlowSwitch可基于IPsrc字段携带的流表项标识,找到已保存的流表项3.5,并利用已保存的流表项3.5的IPsrc字段的实际取值,替换第一流表项IPsrc字段携带的实际取值的索引,以此类推。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,由于第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。本发明流表中继方法的一个实施例,一种流表中继方法包括:虚拟层设备接收来自第一SDNController的第一OpenFlow协议消息,上述第一OpenFlow协议消息携带上述第一流表项,上述第一流表项中的第一字段携带上述第一字段的实际取值的索引;接收来自第二SDNController的第二开放流OpenFlow协议消息,其中,上述第二OpenFlow协议消息携带上述第二流表项,上述第二流表项中的第四字段携带上述第四字段的实际取值的索引;将上述第一流表项和上述第二流表项合并为第三流表项;向OpenFlowSwitch发送携带上述第三流表项的第三OpenFlow协议消息。请参见图3-a,图3-a是本发明的另一个实施例提供的另一种流表中继方法的流程示意图。如图3-a所示,本发明的另一个实施例提供的另一种流表中继方法可包括以下内容:301、虚拟层设备接收来自第一SDNController的第一OpenFlow协议消息。其中,上述第一OpenFlow协议消息携带第一流表项,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引。其中,上述携带有第一流表项的第一OpenFlow协议消息例如可以是第一flow_mod消息或其它OpenFlow协议消息。302、虚拟层设备接收来自第二SDNController的第二OpenFlow协议消息。其中,上述第二OpenFlow协议消息携带上述第二流表项,上述第二流表项中的第四字段集携带上述第四字段集的实际取值的索引。其中,上述携带有第二流表项的第二OpenFlow协议消息例如可以是第三flow_mod消息或其它OpenFlow协议消息。303、虚拟层设备将上述第二流表项和上述第一流表项合并为第三流表项。304、虚拟层设备向OpenFlowSwitch发送携带上述第三流表项的第三OpenFlow协议消息。可以理解,每个流表项都具有多种不同协议类型的字段,每个流表项具有的字段数量相同,其中,不同流表项中相同协议类型字段中的填充数据可能相同或不同。其中,虚拟层设备可采用多种方式,将上述第二流表项和上述第一流表项合并为第三流表项。其中,所谓将多个流表项的合并,主要是指将多个流表项中的同种协议类型的字段的填充数据进行合并。例如,假设第二流表项和上述第二流表项均包括:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等协议类型的字段,则虚拟层设备可将上述第二流表项和上述第一流表项的端口号字段的填充数据进行合并、将上述第二流表项和上述第一流表项的源IP地址字段的填充数据进行合并、将上述第二流表项和上述第一流表项的目的MAC地址字段的填充数据进行合并、将上述第一流表项和上述第二流表项的目的IP地址字段的填充数据进行合并、将上述第二流表项和第一流表项的虚拟局域网标识字段的填充数据进行合并、和/或将上述第一流表项和上述第二流表项的源MAC地址字段的填充数据进行合并等,其它种类协议类型字段的填充数据合并方式可以此类推。在本发明的一些实施方式中,虚拟层设备可以检测上述第二流表项和上述第一流表项的相同协议类型的每个字段,其中,若上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据相同,则将该相同的填充数据填充到第一流表项的该相同协议类型的字段;若上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据不同,则将该不同的填充数据均填充到第三流表项的该相同协议类型的字段。如此,在第三流表项中,对于上述第二流表项和上述第一流表项中相同协议类型且填充数据相同的每个字段的填充数据,在第三流表项的对应相同协议类型字段中只填充一份;而对于上述第二流表项和上述第一流表项中相同协议类型且填充数据不同的每个字段的填充数据,在第三流表项的对应相同协议类型字段中填充该不同的填充数据,这样能够在一定程度上实现第三流表项的数据量小于上述第二流表项和上述第一流表项的数据量之和。例如图3-b和图3-c所示,虚拟层设备可以检测上述第二流表项和上述第一流表项的相同协议类型的每个字段,其中,上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据相同,则将该相同的填充数据填充到第一流表项的该相同协议类型的字段(取值A1~An的字段);上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据不同(图中取值B1的字段和取值B2的字段),则将该不同的填充数据均填充到第三流表项的该相同协议类型的字段(图3-b所示)。图3-b和图3-c举例示出了三个流表项合并场景,更多流表项进行合并的场景均可分解为两两进行合并的方案的叠加,合并方式可按照上述方式以此类推。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。并且在SDNController和OpenFlowSwitch之间的虚拟层设备还可对若干个流表项进行合并,这样有利于进一步减小流表项的传输数据量。本发明实施例还提供另一种流表中继方法,可包括:虚拟层设备接收来自N1个SDNController的N2条OpenFlow协议消息;其中,所述N2条OpenFlow协议消息携带有N3个流表项,所述N2为大于或等于所述N1的正整数,所述N1为正整数,所述N3为大于或等于上述N2且大于1的正整数;将上述N3个流表项合并为第一流表项;向所述OpenFlowSwitch发送携带第一流表项的OpenFlow协议消息。其中,虚拟层设备可采用多种可行的方式,将上述N3个流表项合并为第一流表项。其中,所谓将多个流表项的合并,主要是指将多个流表项中的同种协议类型的字段的填充数据进行合并。例如,假设N3个流表项均包括:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等协议类型的字段,则虚拟层设备可将上述N3个流表项的端口号字段的填充数据进行合并、将上述N3个流表项的源IP地址字段的填充数据进行合并、将上述N3个流表项的目的MAC地址字段的填充数据进行合并、将上述N3个流表项的目的IP地址字段的填充数据进行合并、将上述N3个流表项的虚拟局域网标识字段的填充数据进行合并、和/或将上述N3个流表项的源MAC地址字段的填充数据进行合并等,其它种类协议类型字段的填充数据合并方式可以此类推。在本发明一些实施方式中,虚拟层设备可检测上述N3个流表项之间同种协议类型的每个字段的填充数据,其中,若上述N3个流表项的第一协议类型的字段的填充数据相同,则将N3个流表项中的任意一个流表项的该第一协议类型的字段的填充数据填充到第一流表项的该第一协议类型的字段中;若上述N3个流表项的第一协议类型的字段的填充数据不全相同,则将可该N3个流表项的该第一协议类型的字段的填充数据均填充到第一流表项的该第一协议类型的字段之中,其中,第一协议类型为流表项的任意一种协议类型。基于这种举例的流表项合并机制,在第一流表项中,对于上述N3个流表项中同种协议类型且填充数据相同的每个字段的填充数据,在第一流表项的对应同种协议类型字段中只填充一份。而对于上述N3个流表项中同种协议类型且填充数据不全相同的每个字段的填充数据(共N3个填充数据),则均填充到第一流表项的对应同种协议类型字段之中,因此,第一流表项中的该同种协议类型的字段中共填充了N3个填充数据(由于不进行N3个填充数据去重)。当然,这N3个填充数据在第一流表项的该同种协议类型的字段中的排列位置可默认约定或进行显示指示,以便于OpenFlowSwitch据此进行第一流表项的拆分。在本发明的另一些实施方式中,虚拟层设备可检测上述N3个流表项之间的同种协议类型的每个字段的填充数据,其中,若上述N3个流表项之间的任意同种协议类型的字段的填充数据均相同,则第一流表项之中的任意一种协议类型的字段的填充数据等于上述N3个流表项中的任意一个流表项中,该任意一种协议类型的字段的填充数据。若上述N3个流表项之间,除第一协议类型的字段之外的任意同种协议类型的字段的填充数据均相同,则第一流表项之中除第一协议类型的字段之外的任意同种协议类型的字段的填充数据,等于上述N3个流表项中的任意一个流表项中,除第一协议类型之外的该任意一种协议类型的字段的填充数据。其中,第一流表项中的第一协议类型的字段中的填充数据为,对上述N3个流表项中的第一协议类型的字段的填充数据进行去重处理后得到的至少两个填充数据。其中,第一协议类型的字段为流表项中的任意一种协议类型的字段。特别的,若上述N3个流表项之间的第一协议类型的字段的填充数据不完全相同,且上述N3个流表项之间的第二协议类型的字段的填充数据也不完全相同,则虚拟层设备也可不执行上述将上述N3个流表项合并为第一流表项的操作,其中,第一协议类型的字段和第二协议类型的字段可为上述N3个流表项的任意两种协议类型的字段。可以看出,本实施例中对于SDNController向OpenFlowSwitch下发的OpenFlow协议消息所携带的流表项,流表项中的某字段集携带的是该某个字段集的实际取值的索引,而并非携带该某个字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此这种机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。并且,虚拟层设备进一步将SDNController下发的流表项进行合并得的新流表项,并向OpenFlowSwitch发送携带合并得到的新流表项的OpenFlow协议消息,这有利于进一步减小所传输流表项总数据量,进而有利于进一步降低控制信道拥塞的风险,进一步降低对交换设备网络资源的消耗,有利于更好的满足复杂组网的需求。为便于更好的理解和实施本发明实施例的上述方案,下面通过一些具体例子进行举例说明。请参见图4,图4是本发明另一个实施例提供的一种流表同步方法的流程示意图。如图4所示,本发明另一个实施例提供的一种流表同步方法可包括以下内容:401、SDNController向OpenFlowSwitch发送流表同步请求(tablefeaturerequest)消息以请求进行流表同步。其中,SDNController可以主动的或者在一些触发条件(该触发条件例如可为用户指令或系统重启等)的触发下,向OpenFlowSwitch发送tablefeaturerequest消息以请求进行流表同步。402、OpenFlowSwitch向SDNController发送流表同步回复(tablefeaturereply)消息。其中,上述tablefeaturereply消息中可携带OpenFlowSwitch当前保存的所有流表项。或者,上述tablefeaturereply消息中也可携带OpenFlowSwitch保存的发生了变化的流表项,其次,发生了变化的流表项是指与前一次向SDNController同步的流表项相比发生了变化的流表项。403、SDNController接收上述tablefeaturereply消息,根据上述tablefeaturereply消息携带的流表项更新SDNController维护的流表数据库。在本发明一些实施例中,若OpenFlowSwitch上保存的流表项由于某些原因发生变化,OpenFlowSwitch也可主动通过tablefeaturereply消息向SDNController传递OpenFlowSwitch保存的发生了变化的流表项,以便于SDNController根据收到来自OpenFlowSwitch的流表项更新其维护的流表数据库。在本发明的一些实施方式中,对于相同的流表项,在OpenFlowSwitch和SDNController中用于标识该流表项的流表项标识可以是相同的或者是具有约定映射关系的,而OpenFlowSwitch和SDNController均可利用该设定映射关系推导出同一个流表项在对端设备中的流表项标识。在本发明一些实施例中,若SDNController每次都对向OpenFlowSwitch下发的流表项进行本地备份,则也可无需执行步骤401~403所描述的SDNController和OpenFlowSwitch同步流表项的操作。可以看出,基于本实施例中提出的SDNController和OpenFlowSwitch之间进行流表同步的方式,有利于实现OpenFlowSwitch和SDNController之间的流表同步。请参见图5,图5是本发明另一个实施例提供的另一种流表管理方法的流程示意图。如图5所示,本发明另一个实施例提供的另一种流表管理方法可包括以下内容:501、OpenFlowSwitch接收报文S1。其中,报文S1可以是UDP或TCP或其它协议封装的IP报文,报文S1可具有外层IP和还有内层IP和用于描述隧道端点的标识符TEID,当然,报文S1亦可具有其它的层结构。502、OpenFlowSwitch在流表中查询是否存在与报文S1匹配的流表项。若是,则执行步骤503;若否,则执行步骤504。503、OpenFlowSwitch基于查询到的与报文S1匹配的流表项中的Instructions字段携带路由指令集对报文S1进行处理。504、OpenFlowSwitch向SDNController发送携带报文S1的packet_in消息,以请求SDNController下发对应的流表项。其中,packet_in消息为OpenFlow协议消息。505、SDNController接收OpenFlowSwitch发送的上述packet_in消息,并可按照预设处理策略确定上述报文S1对应的路由指令集。其中,SDNController按照预设处理策略确定出的上述报文S1的路由指令集可包括处理报文S1的多条指令。例如路由指令集包括指示OpenFlowSwitch基于MAC转发上述报文S1的指令、指示OpenFlowSwitch基于IP路由上述报文S1的指令、指示OpenFlowSwitch对上述报文S1进行GTP隧道封装的指令、指示OpenFlowSwitch对上述报文S1进行GTP隧道解封装的指令等等。506、SDNController生成第一流表项,向OpenFlowSwitch发送用于响应上述packet_in消息的且携带有上述第一流表项的flow_mod消息。其中,flow_mod消息为OpenFlow协议消息。其中,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引,其中,上述第一字段集包括N个字段,上述N为正整数。其中,第一流表项的Instructions字段可为第一字段集之中的其中一个字段,当然Instructions字段也可不属于第一字段集。例如,上述第一流表项的指令Instructions字段携带上述路由指令集或上述路由指令集的索引(其中,该索引例如可为上述OpenFlowSwitch已保存的某个流表项的流表项标识)。其中,本发明实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一字段集包括的N个字段可为第一流表项中的任意N个字段,例如N个字段可包括如下字段中的一个或多个:协议字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、源MAC地址字段、端口号字段、虚拟局域网标识字段等。在本发明的一些的实施方式中,上述索引可为上述OpenFlowSwitch已保存的流表项的流表项标识,即,上述flow_mod消息携带的上述第一流表项中的第一字段集中的任意一个字段所携带的索引可以为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同。507、OpenFlowSwitch接收到上述flow_mod消息之后,基于上述第一字段集的索引获取上述第一字段集的实际取值,将获取的上述第一字段集的实际取值填充上述第一流表项的上述第一字段集之中。OpenFlowSwitch保存在上述第一字段集中填充了上述实际取值的第一流表项。其中,OpenFlowSwitch对flow_mod消息携带的第一流表项中未填充实际取值的各字段填充实际取值,OpenFlowSwitch保存未填充实际取值的各字段都被全部填充了实际取值之后的第一流表中。其中,假设于第一字段集所携带的索引为流表项标识,OpenFlowSwitch可基于该流表项标识获取上述流表项标识所表示的流表项中与上述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,上述第三字段集和上述第一字段集之中协议类型相同的字段的实际取值相同。508、OpenFlowSwitch基于上述第一流表项的Instructions字段携带用于处理报文S1的路由指令集,对第一报文S1进行处理。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的flow_mod消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至是远小于字段实际取值,因此,本实施例所提供的机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,也有利于降低对OpenFlowSwitch计算资源的消耗。请参见图6,图6是本发明另一个实施例提供的另一种流表管理方法的流程示意图。如图6所示,本发明另一个实施例提供的另一种流表管理方法可包括以下内容:601、OpenFlowSwitch接收K1个报文。其中,K1为大于1的正整数。K1个报文可为UDP或TCP或其它协议封装的IP报文,K1个报文中的部分或全部报文可具有外层IP和还有内层IP和用于描述隧道端点的标识符TEID。当然,K1个报文中的部分或全部报文亦可具有其它的层结构。其中,上述K1个报文可由OpenFlowSwitch在设定时长之内接收到,该设定时长可以是1秒、两秒或5秒或其它的时长。602、OpenFlowSwitch在流表中查询是否存在与K1个报文中的每个报文匹配的流表项。其中,本实施例中假设OpenFlowSwitch在流表中查询到存在与K1个报文之中的K2个报文中的每个报文匹配的流表项,但OpenFlowSwitch在流表中未查询到与K1个报文之中的K3个报文中的每个报文匹配的流表项。其中,K1=K2+K3,假设K2为正整数,K3为大于1的正整数。603、OpenFlowSwitch基于查询到的与上述K2报文中的每个报文匹配的流表项中的Instructions字段所携带路由指令集,对该每个报文进行处理。604、OpenFlowSwitch向SDNController发送携带上述K3个报文的packet_in消息,以请求SDNController下发对应的流表项。其中,packet_in消息为OpenFlow协议消息。605、SDNController接收OpenFlowSwitch发送的上述packet_in消息,并可按照预设处理策略确定上述K3个报文中的每个报文对应的路由指令集。其中,SDNController按照预设处理策略确定出的上述K3个报文中的每个报文的路由指令集可包括处理该每个报文的多条指令。其中,SDNController确定出的K3个报文中的部分或全部报文对应的路由指令集可能相同,当然,SDNController确定出的K3个报文中的每个报文对应的路由指令集也可能均不相同。606、SDNController生成K4个流表项,向OpenFlowSwitch发送用于响应上述packet_in消息的且携带有上述K4个流表项的flow_mod消息。其中,flow_mod消息为OpenFlow协议消息。其中,上述K4个流表项中的第一流表项的第一字段集携带上述第一字段集的实际取值的索引,其中,上述第一字段集可包括N个字段,上述N为正整数。其中,第一流表项的Instructions字段可为第一字段集之中的其中一个字段,当然Instructions字段也可不属于第一字段集。例如,上述第一流表项的指令Instructions字段携带上述路由指令集或上述路由指令集的索引(该索引例如可为上述OpenFlowSwitch已保存的某个流表项的流表项标识)。其中,本发明实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一流表项可为K4个流表项中的任意一个流表项。第一字段集包括的N个字段可为第一流表项中的任意N个字段,例如N个字段可包括如下字段中的一个或多个:协议字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、源MAC地址字段、端口号字段、虚拟局域网标识字段等。在本发明的一些的实施方式中,上述索引可为上述OpenFlowSwitch已保存的流表项的流表项标识,即,上述flow_mod消息携带的上述第一流表项中的第一字段集中的任意一个字段所携带的索引可以为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同。可以理解,上述K4个流表项中包括第一流表项在内的至少一个流表项的第一字段集均可携带上述第一字段集的实际取值的索引,以期减少flow_mod消息携带的K4个流表项的数据量。607、OpenFlowSwitch接收到上述flow_mod消息之后,OpenFlowSwitch可以对flow_mod消息携带的K4个流表项中未填充实际取值的各字段填充实际取值,OpenFlowSwitch保存各字段都被全部填充了实际取值之后的K4个流表项。其中,假设于第一字段集所携带的索引为流表项标识,OpenFlowSwitch可基于该流表项标识获取上述流表项标识所表示的流表项中与上述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,上述第三字段集和上述第一字段集之中协议类型相同的字段的实际取值相同。608、OpenFlowSwitch基于与上述K3报文中的每个报文匹配的流表项中的Instructions字段所携带路由指令集,对上述每个报文进行处理。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的flow_mod消息所携带的K4流表项,K4流表项中的至少一个流表项中的第一字段集携带的是第一字段集的实际取值的索引,而并非携带第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至是远小于字段实际取值,因此本实施例提供的机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,也有利于降低对OpenFlowSwitch计算资源的消耗。请参见图7,图7是本发明另一个实施例提供的另一种流表管理方法的流程示意图。如图7所示,本发明另一个实施例提供的另一种流表管理方法可包括以下内容:701、OpenFlowSwitch接收报文S1和报文S2。其中,报文S1和报文S2可为UDP或TCP或其它协议封装的IP报文,报文S1和报文S2可具有外层IP、内层IP和用于描述隧道端点的标识符TEID,当然报文S1和报文S2亦可具有其它的层结构。其中,上述K1个报文可由OpenFlowSwitch在设定时长之内接收到,该设定时长可以是1秒、两秒或5秒或其它的时长。702、OpenFlowSwitch可以流表中查询是否存在报文S1和报文S2匹配的流表项。其中,本实施例中,假设OpenFlowSwitch在流表中并未查询到与报文S1匹配的流表项,OpenFlowSwitch在流表中也未查询到与报文S2匹配的流表项。703、OpenFlowSwitch向第一SDNController发送携带报文S1的packet_in消息m1,以请求SDNController下发对应的流表项。OpenFlowSwitch向第二SDNController发送携带报文S2的packet_in消息m2,以请求SDNController下发对应的流表项。其中,packet_in消息m1和packet_in消息m2为OpenFlow协议消息。704、虚拟层设备接收packet_in消息m1和packet_in消息m2,向第一SDNController转发packet_in消息m1;虚拟层设备向第二SDNController转发packet_in消息m2。705、第一SDNController接收上述packet_in消息m1,按照预设处理策略确定上述报文S1对应的路由指令集。其中,第一SDNController按照预设处理策略确定出的上述报文S1的路由指令集可包括处理报文S1的多条指令。例如路由指令集包括指示OpenFlowSwitch基于MAC转发上述报文S1的指令、指示OpenFlowSwitch基于IP路由上述报文S1的指令、指示OpenFlowSwitch对上述报文S1进行GTP隧道封装的指令、指示OpenFlowSwitch对上述报文S1进行GTP隧道解封装的指令等等。706、第一SDNController生成流表项x1,向OpenFlowSwitch发送用于响应上述packet_in消息m1的且携带有上述流表项x1的flow_mod消息mf1。其中,flow_mod消息mf1为OpenFlow协议消息。其中,上述流表项x1的字段集c1携带上述字段集c1的实际取值的索引,其中,上述字段集c1包括Nn1个字段,上述Nn1为正整数。其中,流表项x1的Instructions字段可为字段集c1之中的其中一个字段,当然Instructions字段也可不属于字段集c1。例如,上述流表项x1的指令Instructions字段携带上述路由指令集或上述路由指令集的索引(其中,该索引例如可为上述OpenFlowSwitch已保存的某个流表项的流表项标识)。其中,本发明实施例中的Nn1例如可等于1、2、5、8、10或其它值。其中,字段集c1包括的Nn1个字段可为流表项x1中任意Nn1个字段,例如Nn1个字段可包括如下字段中的一个或多个:协议字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、源MAC地址字段、端口号字段、虚拟局域网标识字段等。在本发明的一些的实施方式中,上述索引可为上述OpenFlowSwitch已保存的流表项的流表项标识,即,上述flow_mod消息携带的上述流表项x1中的字段集c1中的任意一个字段所携带的索引可以为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,例如若Nn1大于1,则字段集c1中的各字段所携带的索引可以全部相同、部分相同或均不相同。707、第二SDNController接收上述packet_in消息m2,按照预设处理策略确定上述报文S2的路由指令集。其中,第二SDNController按照预设处理策略确定出的上述报文S2的路由指令集可包括处理报文S2的多条指令。例如路由指令集包括指示OpenFlowSwitch基于MAC转发上述报文S2的指令、指示OpenFlowSwitch基于IP路由上述报文S2的指令、指示OpenFlowSwitch对上述报文S2进行GTP隧道封装的指令、指示OpenFlowSwitch对上述报文S2进行GTP隧道解封装的指令等等。708、第二SDNController生成流表项x2,向OpenFlowSwitch发送用于响应上述packet_in消息m2的且携带有上述流表项x2的flow_mod消息mf2。其中,flow_mod消息mf2为OpenFlow协议消息。其中,上述流表项x2中的字段集c2携带上述字段集c2的实际取值的索引,其中,上述字段集c2包括Nn2个字段,上述Nn2为正整数。其中,流表项x2的Instructions字段可为字段集c2之中的其中一个字段,当然Instructions字段也可不属于字段集c2。例如,上述流表项x2的指令Instructions字段携带上述路由指令集或上述路由指令集的索引(其中,该索引例如可为上述OpenFlowSwitch已保存的某个流表项的流表项标识)。其中,本发明实施例中的Nn2例如可等于1、2、5、8、10或其它值。其中,字段集c2包括的Nn2个字段可为流表项x2中的任意Nn2个字段,例如Nn2个字段可包括如下字段中的一个或多个:协议字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、源MAC地址字段、端口号字段、虚拟局域网标识字段等。在本发明的一些的实施方式中,上述索引可为上述OpenFlowSwitch已保存的流表项的流表项标识,即,上述flow_mod消息携带的上述流表项x2中的字段集c2中的任意一个字段所携带的索引可以为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,例如若Nn2大于1,则字段集c2中的各字段所携带的索引可以全部相同、部分相同或均不相同。709、虚拟层设备接收flow_mod消息mf1和flow_mod消息mf2,将flow_mod消息mf1携带的流表项x1和flow_mod消息mf2携带的流表项x2进行合并得到流表项x3。在本发明一些实施方式中,将流表项x1和流表项x2合并为流表项x3的方式可以是多种多样的。例如,虚拟层设备可检测流表项x1和流表项x2每个相同协议类型的字段的填充数据,若流表项x1和流表项x2的相同协议类型的字段的填充数据相同,将该相同填充数据的其中1个填充到流表项x3的相同协议类型的字段,若流表项x1和流表项x2的相同协议类型的字段的填充数据不同,则将该不同的填充数据均填充到流表项x3的对应相同协议类型的字段中(例如图7-c举例所示)。例如参见图3-b和图3-c,图3-b举例示出了将2个流表项合并为1个流表项的场景。图3-c举例示出了将3个流表项合并为1个流表项的场景,而更多的流表项进行合并的场景可以此类推。710、虚拟层设备向OpenFlowSwitch发送携带流表项x3的flow_mod消息mf3。711、OpenFlowSwitch接收到上述flow_mod消息mf3之后,将流表项x2拆分为多个流表项(其中,拆分得到的每个流表项的每个字段只有一种实际取值或实际取值的索引)。OpenFlowSwitch将拆分得到的多个流表项中未填充实际取值的各字段填充实际取值(实际取值可根据对应索引得到),OpenFlowSwitch保存各字段都被全部填充了实际取值之后的多个流表项。712、OpenFlowSwitch基于与报文S1匹配的流表项中的Instructions字段所携带路由指令集对报文S1进行处理。类似的,OpenFlowSwitch基于与报文S2匹配的流表项中的Instructions字段所携带路由指令集对报文S2进行处理。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的flow_mod消息所携带的K4流表项,K4流表项中的至少一个流表项中的第一字段集携带的是第一字段集的实际取值的索引,而并非携带第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至是远小于字段实际取值,因此本实施例提供的机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,也有利于降低对OpenFlowSwitch计算资源的消耗。参见图8-a,本发明实施例还提供一种软件定义网络控制器800,可包括生成单元810和发送单元820。生成单元810,用于生成第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,所述第一字段集包括N个字段,所述N为正整数。其中,生成单元810可基于预设策略生成第一流表项,生成单元810也可在用户指令或某OpenFlow交换机的触发下生成第一流表项。当然生成单元810也可能在其它条件的触发下生成一条或者多条流表项。发送单元820,用于向开放流交换设备发送开放流协议消息,所述开放流协议消息携带有所述第一流表项。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。在本发明的一些实施例中,所述索引为所述交换设备已保存的流表项的流表项标识。可以理解,第一流表项的数据结构可与标准的流表项相同,例如第一流表项所包含的协议字段的类型、第一流表项中各类型协议字段的位置关系,可以与标准的流表项相同。但是,第一流表项中的部分或者全部协议字段所携带的信息类型不同于标准流表项,具体来说,第一流表项中的第一字段集中的某字段携带该字段的实际取值的索引,而标准的流表项中的各字段均携带其实际取值本身。其中,本发明各实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段,也就是说,第一字段集中各字段在第一流表项中的分布位置可以是任意的,这样就有利于更加灵活的满足多种实际应用场景的灵活需求。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如,端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,SDNController800下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如,第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如,第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又举例来说,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又例如,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。可以理解,上述实际取值的索引可能是多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同(例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识)。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于SDNController800较好的控制所下发的第一流表项的数据量。在本发明的一些实施方式中,上述第一流表项中的第二字段集中的每个字段还可携带该字段的多个实际取值。上述第二字段集包括M个字段,上述M为正整数。其中,字段的实际取值的举例如上所述。可以理解,由于第二字段集中的每个字段还可携带用该字段的多个实际取值,因此,这就相当于说明第一流表项可拆分为多个流表项,这也有利于SDNController800较好的控制所下发的第一流表项的数据量。例如,第一流表项中的第二字段集包括目的MAC地址字段,该目的MAC地址字段携带3个目的MAC地址(例如该目的MAC地址字段携带的信息如下:192.168.0.2、192.168.0.3、192.168.0.4,或者该目的MAC地址字段携带的信息如下:192.168.0.2~192.168.0.4,上述举例的两种方式都可表示目的MAC地址字段携带了3个目的MAC地址,当然也可通过其它方式来表示目的MAC地址字段携带3个MAC地址),此场景下OpenFlowSwitch可将该第一流表项拆分为4个流表项,这3个流表项的目的MAC地址字段分别携带上述3个目的MAC地址中的不同1个,这3个流表项的其它字段相同。当然,若这3个流表项的其它字段也携带多个实际取值,则也可按照类似方式,对这3个流表项分别进行拆分,例如,拆分得到的这3个流表项的虚拟局域网标识字段携带了2个虚拟局域网标识,则可将该3个流表项中的每个流表项又拆分为2个流表项,具体拆分方式可如图1-i-图1-i所示。可以直到拆分得到的流表项的每个字段只携带该字段的一个实际取值或实际取值的索引为止。其中,本发明各实施例中的M例如可等于1、2、5、8、10或其它值。其中,第一流表项中的第二字段集所包括的M个字段可为第一流表项中不同于第一字段集中任意1个字段的任意M个字段,第二字段集包括的M个字段可以是第一流表项中相邻的M个字段、部分相邻的M个字段或均不相邻的M个字段。上述M个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。其中,上述第二字段集和上述第一字段集的交集为空集。如图8-b所示,在本发明的一些实施例中,所述SDN控制器还包括接收单元830,用于在生成单元810生成第一流表项之前,接收来自交换设备的第一报文或第一报文的报文头,并按照预设处理策略确定用于处理所述第一报文的路由指令集;其中,所述第一流表项的指令字段携带所述路由指令集或所述路由指令集的索引。举例来说,上述接收来自OpenFlowSwitch的第一报文或第一报文的报文例如可包括:接收来自OpenFlowSwitch的携带第一报文或者第一报文的报文头的OpenFlow协议消息(其中,该OpenFlow协议消息例如为入分组(packet_in)消息或者其它OpenFlow协议消息)。当然,该OpenFlow协议消息中还可携带1个或多个其它报文或报文头,当然,该OpenFlow协议消息也还可以携带其它的信息。在本发明的一些实施方式中,对于相同的流表项,在OpenFlowSwitch和SDNController800中用于标识该相同的流表项的流表项标识可以是相同的或者是具有约定映射关系的,若OpenFlowSwitch和SDNController800中使用设定映射关系的流表项标识来标识相同的流表项,则OpenFlowSwitch和SDNController800均可利用该设定映射关系推导出相同流表项在对端设备中的流表项标识。可以理解的是,本实施例的SDNController800的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例的方案中,对于SDNController800向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此,本实施例的流表项下发机制有利于减少SDNController800和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。参见图9-a,本发明实施例还提供一种开放流交换设备900,可包括:接收单元910、获取单元920和替换单元930。接收单元910,用于接收开放流协议消息,所述开放流协议消息携带有第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,其中,所述第一字段集包括N个字段,所述N为正整数。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。获取单元920,用于基于所述第一字段集的实际取值的索引获取所述第一字段集的实际取值。替换单元930,用于利用获取单元920获取的第一字段集的实际取值,替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。可以理解,上述实际取值的索引可能的多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch900已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同。例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于SDNController较好的控制所下发的第一流表项的数据量。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如,端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,SDNController下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如,第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如,第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如,第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又例如,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又举例来说,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。在本发明的一些实施例中,若所述索引为所述交换设备已保存的流表项的流表项标识;其中,所述获取单元920具体用于,基于所述流表项标识获取所述流表项标识所表示的流表项中与所述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,所述第三字段集和所述第一字段集之中协议类型相同的字段的实际取值相同。如图9-b所示,在本发明一些实施例中,开放流交换设备900还包括:第一发送单元940,用于向软件定义网络控制器发送所述第一流表项的标识或保存的所述第一流表项。如图9-c所示,在本发明的一些实施例中,所述OpenFlowSwitch900还可进一步包括:第二发送单元950,用于接收第一流表项之前向软件定义网络控制器发送第一报文或第一报文的报文头;其中,所述第一流表项的指令字段携带用于处理所述第一报文的路由指令集或路由指令集的索引。报文处理单元960,用于基于所述路由指令集处理所述第一报文。在本发明的一些实施方式中,对于相同的流表项,在OpenFlowSwitch900和SDNController中用于标识该流表项的流表项标识可以是相同的或者是具有约定映射关系的,而OpenFlowSwitch900和SDNController均可利用该设定映射关系推导出同一个流表项在对端设备中的流表项标识。可以理解的是,本实施例的OpenFlowSwitch900的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例中对于SDNController向OpenFlowSwitch900发送的OpenFlow协议消息所携带的第一流表项,由于第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch900之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对OpenFlowSwitch900的网络资源的消耗,有利于满足复杂组网的需求。参见图10,本发明实施例还提供一种虚拟层设备1000,可包括:接收单元1010、合并单元1020和发送单元1030。其中,接收单元1010,用于接收来自第一软件定义网络控制器的第一开放流协议消息;所述第一开放流协议消息携带所述第一流表项,所述第一流表项中的第一字段携带所述第一字段的实际取值的索引;接收来自第二软件定义网络控制器的第二开放流开放流协议消息,其中,所述第二开放流协议消息携带所述第二流表项,所述第二流表项中的第四字段携带所述第四字段的实际取值的索引。合并单元1020,用于将所述第一流表项和所述第二流表项合并为第三流表项。发送单元1030,用于向开放流交换设备发送携带所述第三流表项的第三开放流协议消息。可以理解,每个流表项都具有多种不同协议类型的字段,每个流表项具有的字段数量相同,其中,不同流表项中相同协议类型字段中的填充数据可能相同或不同。其中,虚拟层设备可采用多种方式,将上述第二流表项和上述第一流表项合并为第三流表项。其中,所谓将多个流表项的合并,主要是指将多个流表项中的同种协议类型的字段的填充数据进行合并。例如,假设第二流表项和上述第二流表项均包括:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等协议类型的字段,则合并单元1020可将上述第二流表项和上述第一流表项的端口号字段的填充数据进行合并、将上述第二流表项和上述第一流表项的源IP地址字段的填充数据进行合并、将上述第二流表项和上述第一流表项的目的MAC地址字段的填充数据进行合并、将上述第一流表项和上述第二流表项的目的IP地址字段的填充数据进行合并、将上述第二流表项和第一流表项的虚拟局域网标识字段的填充数据进行合并、和/或将上述第一流表项和上述第二流表项的源MAC地址字段的填充数据进行合并等,其它种类协议类型字段的填充数据合并方式可以此类推。在本发明的一些实施方式中,合并单元1020可以检测上述第二流表项和上述第一流表项的相同协议类型的每个字段,其中,若上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据相同,则将该相同的填充数据填充到第一流表项的该相同协议类型的字段;若上述第二流表项和上述第一流表项的相同协议类型的字段的填充数据不同,则将该不同的填充数据均填充到第三流表项的该相同协议类型的字段。如此,在第三流表项中,对于上述第二流表项和第一流表项中相同协议类型且填充数据相同的每个字段的填充数据,在第三流表项的对应相同协议类型字段中只填充一份;而对于上述第二流表项和上述第一流表项中相同协议类型且填充数据不同的每个字段的填充数据,在第三流表项的对应相同协议类型字段中填充该不同的填充数据,这样能够在一定程度上实现第三流表项的数据量小于上述第二流表项和上述第一流表项的数据量之和。可以理解的是,本实施例的虚拟层设备1000的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。并且在SDNController和OpenFlowSwitch之间的虚拟层设备1000还可对若干个流表项进行合并,这样有利于进一步减小流表项的传输数据量。参见图11,图11为本发明实施例提供的一种软件定义网络控制器1100的示意图,软件定义网络控制器1100可包括至少一个总线1101、与总线1101相连的至少一个处理器1102以及与总线1101相连的至少一个存储器1103。其中,处理器1102通过总线1101,调用存储器1103中存储的代码以用于生成第一流表项,其中,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引,上述第一字段集包括N个字段,上述N为正整数;向OpenFlowSwitch发送OpenFlow协议消息,其中,上述OpenFlow协议消息携带有上述第一流表项。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是流修改(flow_mod)消息或其它OpenFlow协议消息。可以理解,第一流表项的数据结构可与标准的流表项相同,例如第一流表项所包含的协议字段的类型、第一流表项中各类型协议字段的位置关系,可以与标准的流表项相同。但是,第一流表项中的部分或者全部协议字段所携带的信息类型不同于标准流表项,具体来说,第一流表项中的第一字段集中的某字段携带该字段的实际取值的索引,而标准的流表项中的各字段均携带其实际取值本身。其中,本发明各实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段,也就是说,第一字段集中各字段在第一流表项中的分布位置可以是任意的,这样就有利于更加灵活的满足多种实际应用场景的灵活需求。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,软件定义网络控制器1100下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又举例来说,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又例如,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。可以理解,上述实际取值的索引可能是多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同(例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识)。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于软件定义网络控制器1100较好的控制所下发的第一流表项的数据量。在本发明的一些实施方式中,上述第一流表项中的第二字段集中的每个字段还可携带该字段的多个实际取值。上述第二字段集包括M个字段,上述M为正整数。其中,字段的实际取值的举例如上所述。可以理解,由于第二字段集中的每个字段还可携带用该字段的多个实际取值,因此,这就相当于说明第一流表项可拆分为多个流表项,这也有利于软件定义网络控制器1100较好的控制所下发的第一流表项的数据量。其中,本发明各实施例中的M例如可等于1、2、5、8、10或其它值。其中,第一流表项中的第二字段集所包括的M个字段可为第一流表项中不同于第一字段集中任意1个字段的任意M个字段,第二字段集包括的M个字段可以是第一流表项中相邻的M个字段、部分相邻的M个字段或均不相邻的M个字段。上述M个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。其中,上述第二字段集和上述第一字段集的交集为空集。可以理解的是,本实施例的软件定义网络控制器1100的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例的方案中,对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此,本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。参见图12,图12是本发明另一实施例提供的软件定义网络控制器1200的结构框图。其中,软件定义网络控制器1200可包括:至少1个处理器1201,至少1个网络接口1204或者其他用户接口1203,存储器1205,至少1个通信总线1202。通信总线1202用于实现这些组件之间的连接通信。其中,该软件定义网络控制器1200可选的包含用户接口1203,包括显示器(例如触摸屏、LCD、CRT、全息成像(Holographic)或者投影(Projector)等)、点击设备(例如鼠标,轨迹球(trackball)触感板或触摸屏等)、摄像头和/或拾音装置等。其中,存储器1202例如可包括只读存储器和随机存取存储器,并向处理器1201提供指令和数据。存储器1202中的一部分还包括非易失性内存(NVRAM)等。在一些实施方式中,存储器1205存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统12051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。应用程序模块12052,包含各种应用程序,用于实现各种应用业务。在本发明实施例中,通过调用存储器1205存储的程序或指令,处理器1201生成第一流表项,其中,上述第一流表项中的第一字段集携带上述第一字段集的实际取值的索引,上述第一字段集包括N个字段,上述N为正整数;向OpenFlowSwitch发送OpenFlow协议消息,其中,上述OpenFlow协议消息携带有上述第一流表项其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。可以理解,第一流表项的数据结构可与标准的流表项相同,例如第一流表项所包含的协议字段的类型、第一流表项中各类型协议字段的位置关系,可以与标准的流表项相同。但是,第一流表项中的部分或者全部协议字段所携带的信息类型不同于标准流表项,具体来说,第一流表项中的第一字段集中的某字段携带该字段的实际取值的索引,而标准的流表项中的各字段均携带其实际取值本身。其中,本发明各实施例中的N例如可等于1、2、5、8、10或其它值。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段,也就是说,第一字段集中各字段在第一流表项中的分布位置可以是任意的,这样就有利于更加灵活的满足多种实际应用场景的灵活需求。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等。其中,第一字段集中某字段的实际取值,即表示该字段所应该携带的标准值,例如,端口号字段的实际取值即为端口号,源IP地址字段的实际取值即为源IP地址、目的IP地址字段的实际取值即为目的IP地址、目的MAC地址字段的实际取值即为目的MAC地址、虚拟局域网标识字段的实际取值即为虚拟局域网标识、源MAC地址字段的实际取值即为源MAC地址,其它字段的实际取值以此类推。而本发明实施例中,软件定义网络控制器1200下发的第一流表项中的第一字段集中各字段携带的并非该字段的实际取值本身,而是该字段的实际取值的索引,即可索引到该字段的实际取值的信息。假设第一字段集包括端口号字段,则该端口号字段并不携带端口号,而是携带能够索引到该端口号的索引。又例如,第一字段集包括源IP地址字段,则该源IP地址字段并不携带源IP地址,而是携带能够索引到该源IP地址的索引。又例如,第一字段集包括目的IP地址字段,则该目的IP地址字段并不携带目的IP地址,而是携带能够索引到该目的IP地址的索引,又例如第一字段集包括虚拟局域网标识字段,则该虚拟局域网标识字段并不携带虚拟局域网标识,而是携带能够索引到该虚拟局域网标识的索引。又举例来说,第一字段集包括目的MAC地址字段,则该目的MAC地址字段并不携带目的MAC地址,而是携带能够索引到该目的MAC地址的索引。又例如,第一字段集包括源MAC地址字段,则该源MAC地址字段并不携带源MAC地址,而是携带能够索引到该源MAC地址的索引。第一字段集若还包含其它协议字段,则相关情况以此类推。可以理解,上述实际取值的索引可能是多种多样的,只要OpenFlowSwitch能够根据实际取值的索引获取到该实际取值即可满足要求。在本发明的一些实施方式中,上述实际取值的索引例如可为上述OpenFlowSwitch已保存的流表项的流表项标识,即上述OpenFlow协议消息携带的第一流表项中的第一字段集中的任意1个字段携带的索引,均可为上述OpenFlowSwitch已保存的某个流表项的流表项标识。可以理解,若上述N大于1,则第一字段集中的各字段所携带的索引可以全部相同、部分相同或均不相同(例如,第一字段集中的各字段所携带的索引具体可能为同一个流表项标识)。可以理解,若某字段实际取值的索引为上述OpenFlowSwitch已保存的流表项的流表项标识,则既可有利于极大简化OpenFlowSwitch索引到该字段的实际取值的方式,也可有利于提高OpenFlowSwitch索引到该字段的实际取值的效率,并且由于流表项标识通常数据量较小,因此有利于软件定义网络控制器1100较好的控制所下发的第一流表项的数据量。在本发明的一些实施方式中,上述第一流表项中的第二字段集中的每个字段还可携带该字段的多个实际取值。上述第二字段集包括M个字段,上述M为正整数。其中,字段的实际取值的举例如上所述。可以理解,由于第二字段集中的每个字段还可携带用该字段的多个实际取值,因此,这就相当于说明第一流表项可拆分为多个流表项,这也有利于软件定义网络控制器1200较好的控制所下发的第一流表项的数据量。其中,本发明各实施例中的M例如可等于1、2、5、8、10或其它值。其中,第一流表项中的第二字段集所包括的M个字段可为第一流表项中不同于第一字段集中任意1个字段的任意M个字段,第二字段集包括的M个字段可以是第一流表项中相邻的M个字段、部分相邻的M个字段或均不相邻的M个字段。上述M个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。其中,上述第二字段集和上述第一字段集的交集为空集。可以理解的是,本实施例的软件定义网络控制器1200的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。参见图13,图13为本发明实施例提供的一种开放流交换设备1300的示意图,开放流交换设备1300可包括至少一个总线1301、与总线1301相连的至少一个处理器1302以及与总线1301相连的至少一个存储器1303。其中,处理器1302通过总线1301,调用存储器1303中存储的代码以用于接收携带第一流表项的OpenFlow协议消息;其中,上述第一流表项中的第一字段集可携带上述第一字段集的实际取值的索引,其中,上述第一字段集包括N个字段,上述N为正整数;基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值;利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。若上述索引为上述OpenFlowSwitch已保存的流表项的流表项标识;则基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值,可包括:基于上述流表项标识获取上述流表项标识所表示的流表项中,与上述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,上述第三字段集和上述第一字段集之中协议类型相同的字段的实际取值相同。可以理解,第三字段集和第一字段集的字段数量相等,且第三字段集和第一字段集包含的字段的协议类型一一对应。进一步的,存储器1303还可以保存所述第一字段集所携带的所述第一字段集的实际取值的索引被替换为所述第一字段集的实际取值之后的所述第一流表项,即,保存在上述第一字段集中填充了获取的上述实际取值之后的上述第一流表项。在本发明的一些实施例中,处理器1302还可向SDNController发送上述第一流表项的标识或上述保存的上述第一流表项,以便于OpenFlowSwitch和SDNController之间同步保存的流表项。在本发明一些实施例中,上述处理器1302还可用于,在接收第一流表项之前向上述SDNController发送第一报文或第一报文的报文头。其中,上述第一流表项的Instructions字段携带有用于处理上述第一报文的路由指令集或路由指令集的索引;上述处理器1302还可用于,基于上述路由指令集处理上述第一报文。可以理解的是,本实施例的开放流交换设备1300的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例中对于SDNController向OpenFlowSwitch1300发送的OpenFlow协议消息所携带的第一流表项,由于第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。参见图14,图14是本发明的另一实施例提供的开放流交换设备1400的结构框图。其中,开放流交换设备1400可包括:至少1个处理器1401,至少1个网络接口1404或者其他用户接口1403,存储器1405,至少1个通信总线1402。通信总线1402用于实现这些组件之间的连接通信。其中,该开放流交换设备1400可选的包含用户接口1403,包括显示器(例如触摸屏、LCD、CRT、全息成像或者投影等)、点击设备(例如鼠标,轨迹球、触感板或触摸屏等)、摄像头和/或拾音装置等。其中,存储器1402例如可包括只读存储器和随机存取存储器,并向处理器1401提供指令和数据。存储器1402中的一部分还包括非易失性内存(NVRAM)等。在一些实施方式中,存储器1405存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统14051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。应用程序模块14052,包含各种应用程序,用于实现各种应用业务。在本发明实施例中,通过调用存储器1405存储的程序或指令,处理器1401接收携带第一流表项的OpenFlow协议消息;其中,上述第一流表项中的第一字段集可携带上述第一字段集的实际取值的索引,其中,上述第一字段集包括N个字段,上述N为正整数;基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值;利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。其中,上述携带有上述第一流表项的上述OpenFlow协议消息例如可以是flow_mod消息或其它OpenFlow协议消息。其中,第一字段集包括的N个字段可为第一流表项中任意N个字段,第一字段集包括的N个字段可为第一流表项中相邻的N个字段、部分相邻的N个字段或均不相邻的N个字段。上述N个字段例如可包括如下字段的至少1个:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段、协议字段等等。若上述索引为上述OpenFlowSwitch已保存的流表项的流表项标识;则基于上述第一字段集的实际取值的索引获取上述第一字段集的实际取值,可包括:基于上述流表项标识获取上述流表项标识所表示的流表项中,与上述第一字段集的协议类型相同的第三字段集中填充的实际取值,其中,上述第三字段集和上述第一字段集之中协议类型相同的字段的实际取值相同。可以理解,第三字段集和第一字段集的字段数量相等,且第三字段集和第一字段集包含的字段的协议类型一一对应。进一步的,存储器1402还可以保存所述第一字段集所携带的所述第一字段集的实际取值的索引被替换为所述第一字段集的实际取值之后的所述第一流表项,即,保存在上述第一字段集中填充了获取的上述实际取值之后的上述第一流表项。在本发明的一些实施例中,处理器1401还可向SDNController发送上述第一流表项的标识或上述保存的上述第一流表项,以便于OpenFlowSwitch和SDNController之间同步保存的流表项。在本发明一些实施例中,上述处理器1401还可用于,在接收第一流表项之前向上述SDNController发送第一报文或第一报文的报文头。其中,上述第一流表项的Instructions字段携带有用于处理上述第一报文的路由指令集或路由指令集的索引;上述处理器1401还可用于,基于上述路由指令集处理上述第一报文。可以理解的是,本实施例的开放流交换设备1400的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。参见图15,图15为本发明实施例提供的一种虚拟层设备1500的示意图,虚拟层设备1500可包括至少一个总线1501、与总线1501相连的至少一个处理器1502以及与总线1501相连的至少一个存储器1503。其中,处理器1502通过总线1501,调用存储器1503中存储的代码以用于接收来自第一SDNController的第一OpenFlow协议消息,上述第一OpenFlow协议消息携带上述第一流表项,上述第一流表项中的第一字段携带上述第一字段的实际取值的索引;接收来自第二SDNController的第二开放流OpenFlow协议消息,其中,上述第二OpenFlow协议消息携带上述第二流表项,上述第二流表项中的第四字段携带上述第四字段的实际取值的索引;将上述第一流表项和上述第二流表项合并为第三流表项;向OpenFlowSwitch发送携带上述第三流表项的第三OpenFlow协议消息其中,所谓将多个流表项的合并,主要是指将多个流表项中的同种协议类型的字段的填充数据进行合并。例如,假设第二流表项和上述第二流表项均包括:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等协议类型的字段,则虚拟层设备可将上述第二流表项和上述第一流表项的端口号字段的填充数据进行合并、将上述第二流表项和上述第一流表项的源IP地址字段的填充数据进行合并、将上述第二流表项和上述第一流表项的目的MAC地址字段的填充数据进行合并、将上述第一流表项和上述第二流表项的目的IP地址字段的填充数据进行合并、将上述第二流表项和第一流表项的虚拟局域网标识字段的填充数据进行合并、和/或将上述第一流表项和上述第二流表项的源MAC地址字段的填充数据进行合并等,其它种类协议类型字段的填充数据合并方式可以此类推。可以理解的是,本实施例的虚拟层设备1500的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。并且在SDNController和OpenFlowSwitch之间的虚拟层设备1500还可对若干个流表项进行合并,这样有利于进一步减小流表项的传输数据量。参见图16,图16是本发明另一实施例提供的虚拟层设备1600的结构框图。其中,虚拟层设备1600可以包括:至少1个处理器1601,至少1个网络接口1604或者其他用户接口1603,存储器1605,至少1个通信总线1602。通信总线1602用于实现这些组件之间的连接通信。其中,该虚拟层设备1600可选的包含用户接口1603,包括显示器(显示器例如触摸屏、LCD、CRT、全息成像或者投影等)、点击设备(例如鼠标,轨迹球、触感板或触摸屏等)、摄像头和/或拾音装置等。其中,存储器1602例如可包括只读存储器和随机存取存储器,并向处理器1601提供指令和数据。存储器1602中的一部分还包括非易失性内存(NVRAM)等。在一些实施方式中,存储器1605存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统16051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。应用程序模块16052,包含各种应用程序,用于实现各种应用业务。在本发明实施例中,通过调用存储器1605存储的程序或指令,处理器1601接收来自第一SDNController的第一OpenFlow协议消息,上述第一OpenFlow协议消息携带上述第一流表项,上述第一流表项中的第一字段携带上述第一字段的实际取值的索引;接收来自第二SDNController的第二开放流OpenFlow协议消息,其中,上述第二OpenFlow协议消息携带上述第二流表项,上述第二流表项中的第四字段携带上述第四字段的实际取值的索引;将上述第一流表项和上述第二流表项合并为第三流表项;向OpenFlowSwitch发送携带上述第三流表项的第三OpenFlow协议消息其中,所谓将多个流表项的合并,主要是指将多个流表项中的同种协议类型的字段的填充数据进行合并。例如,假设第二流表项和上述第二流表项均包括:端口号字段、源IP地址字段、目的IP地址字段、目的MAC地址字段、虚拟局域网标识字段、源MAC地址字段等等协议类型的字段,则虚拟层设备可将上述第二流表项和上述第一流表项的端口号字段的填充数据进行合并、将上述第二流表项和上述第一流表项的源IP地址字段的填充数据进行合并、将上述第二流表项和上述第一流表项的目的MAC地址字段的填充数据进行合并、将上述第一流表项和上述第二流表项的目的IP地址字段的填充数据进行合并、将上述第二流表项和第一流表项的虚拟局域网标识字段的填充数据进行合并、和/或将上述第一流表项和上述第二流表项的源MAC地址字段的填充数据进行合并等,其它种类协议类型字段的填充数据合并方式可以此类推。可以理解的是,本实施例的虚拟层设备1600的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。参见图17,本发明实施例还提供一种通信系统,可包括:软件定义网络控制器1710和开放流交换设备1720。其中,软件定义网络控制器1710,用于生成第一流表项,其中,所述第一流表项中的第一字段集携带所述第一字段集的实际取值的索引,所述第一字段集包括N个字段,其中,所述N为正整数;向开放流交换设备发送开放流协议消息,所述开放流协议消息携带有所述第一流表项。开放流交换设备1720,用于接收所述开放流协议消息;基于所述第一字段集的实际取值的索引获取所述第一字段集的实际取值;利用所述第一字段集的实际取值替换所述第一流表项的所述第一字段集所携带的所述第一字段集的实际取值的索引。可以理解的是,本实施例的软件定义网络控制器1710可具有上述实施例描述的任意一种软件定义网络控制器的部分或全部,开放流交换设备1720可具有如上述实施例描述的任意一种开放流交换设备的部分或全部,其功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。进一步的,通信系统还可包括其他开放流交换设备1730。可以看出,本实施例中对于软件定义网络控制器1710向开放流交换设备1720发送的OpenFlow协议消息所携带的第一流表项,由于第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少软件定义网络控制器1710和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对OpenFlowSwitch的网络资源的消耗,有利于满足复杂组网的需求。参见图18,本发明实施例还提供另一种通信系统,可包括:第一软件定义网络控制器1810、第二软件定义网络控制器1820、虚拟层设备1830和开放流交换设备1840。第一软件定义网络控制器1810,用于发送第一开放流开放流协议消息;所述第一开放流协议消息携带所述第一流表项,所述第一流表项中的第一字段携带所述第一字段的实际取值的索引.第二软件定义网络控制器1820,用于发送第二开放流协议消息,所述第二开放流协议消息携带所述第二流表项,所述第二流表项中的第四字段携带所述第四字段的实际取值的索引;虚拟层设备1830,用于接收来自第一软件定义网络控制器1810的第一开放流协议消息;接收来自第二软件定义网络控制器1820的第二开放流协议消息;将所述第一流表项和所述第二流表项合并为第三流表项;向所述开放流交换设备发送携带所述第三流表项的第三开放流协议消息。开放流交换设备1840,用于接收所述第三开放流协议消息;将所述第三开放流协议消息携带的所述第三流表项拆分为所述第一流表项和所述第二流表项;基于所述第一字段的实际取值的索引获取所述第一字段的实际取值;基于所述第四字段的实际取值的索引获取所述第四字段的实际取值;利用所述第一字段的实际取值替换所述第一流表项的所述第一字段所携带的所述第一字段的实际取值的索引;利用所述第四字段的实际取值替换所述第二流表项的所述第四字段所携带的所述第四字段的实际取值的索引。可以理解的是,本实施例的软件定义网络控制器可具有上述实施例描述的任意一种软件定义网络控制器的部分或全部,开放流交换设备1840可具有如上述实施例描述的任意一种开放流交换设备的部分或全部,虚拟层设备1830可具有如上述实施例描述的任意一种虚拟层设备的部分或全部。其功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。进一步的,通信系统还可包括其他开放流交换设备1850。可以看出,本实施例中对于SDNController向OpenFlowSwitch发送的OpenFlow协议消息所携带的第一流表项,第一流表项中的第一字段集携带的是上述第一字段集的实际取值的索引,而并非携带上述第一字段集的实际取值,在技术实现中字段实际取值的索引的数据量通常是小于甚至远小于字段实际取值,因此本实施例的流表项下发机制有利于减少SDNController和OpenFlowSwitch之间的控制信道开销,降低控制信道拥塞的风险,并且也有利于降低对交换设备网络资源的消耗,有利于满足复杂组网的需求。并且在SDNController和OpenFlowSwitch之间的虚拟层设备还可对若干个流表项进行合并,这样有利于进一步减小流表项的传输数据量。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以保存在一个计算机可读取保存介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品保存在一个保存介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的保存介质包括:U盘、只读保存器(ROM,Read-OnlyMemory)、随机存取保存器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以保存程序代码的介质。以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1