CN105516025B - 端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 - Google Patents
端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 Download PDFInfo
- Publication number
- CN105516025B CN105516025B CN201410490645.8A CN201410490645A CN105516025B CN 105516025 B CN105516025 B CN 105516025B CN 201410490645 A CN201410490645 A CN 201410490645A CN 105516025 B CN105516025 B CN 105516025B
- Authority
- CN
- China
- Prior art keywords
- openflow
- data packet
- switching equipment
- interchanger
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种端到端的路径控制和数据传输的方法、OpenFlow控制器和交换机,属于通信技术领域。所述路径控制方法包括:OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息;确定待传输的数据包的源地址和目的地址、及路径;确定路径中的第一OpenFlow交换机,向第一OpenFlow交换机下发控制消息,控制消息用于重新设置待传输的数据包中的目的地址和源路由,并将数据包从指定端口发出。本发明通过OpenFlow控制器实现对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种端到端的路径的控制和数据传输方法、OpenFlow控制器和交换机。
背景技术
随着软件定义网络(Software Defined Network,简称“SDN”)理念的不断发展,开放流(OpenFlow)网络的发展步伐也在不断加快。在一定时期内,开放流网络将与传统IP网络共存。一种比较常见的场景为同一个管理域(即属于同一个网络运营商的多种网络)内,网际协议(Internet Protocol,简称“IP”)网络作为核心网络,而多个OpenFlow网络作为接入网络与IP网络互联。那么,如何调度该管理域内的网络资源,创建和控制端到端(即主机到主机之间)的路径成为了重要的研究课题。
现有技术中,提供一种尽力而为的端到端的路径的控制方法,OpenFlow网络中的开放流控制器(OpenFlow Controller,简称“OFC”)根据该OpenFlow网络中的开放流交换机(OpenFlow Switch,简称“OFS”)之间的实时链路状态以及边缘的OFS与IP网络中边缘的路由器之间的当前链路状态,对OpenFlow网络段、OpenFlow网络与IP网络的边缘连接部分的链路进行控制,然后将数据发送至IP网络,IP网络采用尽力而为服务(Best-EffortService)模型来发送数据,但对数据的延时、可靠性等性能不提供任何保证)。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于OpenFlow控制器无法根据IP网络内的链路的实时状态对其进行控制,因而无法对端到端的路径进行统一地控制,而IP网络中的尽力而为的服务并不能保证QoS,故整个端到端的路径无法保证服务质量(Quality of Service,简称“QoS”)。
发明内容
为了解决现有技术中的上述问题,本发明实施例提供了一种端到端的路径的控制方法和数据传输方法。所述技术方案如下:
一方面,本发明实施例提供了一种端到端的路径控制方法,所述方法包括:
OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息,所述管理域包括所述OpenFlow控制器所属的OpenFlow网络和IP网络,所述OpenFlow网络包括多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括所述OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备;
确定待传输的数据包的源地址和目的地址;
根据所述网络拓扑和网络状态信息,确定所述源地址到所述目的地址的路径;
确定所述路径中的第一OpenFlow交换机,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个;
向所述第一OpenFlow交换机下发控制消息,所述控制消息用于指示所述第一OpenFlow交换机将所述待传输的数据包中的目的地址设置为所述第一交换设备的地址,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括所述路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备。
进一步地,所述OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息,包括:
获取第一网络状态信息,所述第一网络状态信息包括所述多个OpenFlow交换机的设备信息、所述多个OpenFlow交换机之间的链路信息、与所述多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及所述多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
接收第二网络状态信息,所述第二网络状态信息包括所述多个交换设备的设备信息、所述多个交换设备之间的链路信息、与所述多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及所述多个交换设备与各自相连的所述OpenFlow交换机之间的链路信息;
根据所述第一网络状态信息和所述第二网络状态信息,确定所述OpenFlow控制器所属的管理域或者自治系统的网络拓扑。
进一步地,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
另一方面,本发明实施例提供了一种端到端的数据传输方法,适用于在管理域或自治系统中进行数据传输,所述管理域包括OpenFlow网络和IP网络,所述OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备,所述方法包括:
接收所述OpenFlow控制器下发的控制消息,所述控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,所述路径为所述待传输的数据包的源地址到所述目的地址的路径,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备;
根据所述控制消息,设置所述待传输的数据包中的目的地址和源路由,并将所述待传输的数据包从指定端口发送给所述第一交换设备。
进一步地,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
更进一步地,所述根据所述控制消息,设定所述待传输的数据包中的目的地址和源路由,包括:
根据所述开放流扩展匹配类型字段的值判断所述待传输的数据包的类型;
当所述待传输的数据包为IPv4数据包时,将所述待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将所述开放流扩展匹配长度的值赋值给所述选项字段中的选项长度字段,并将所述开放流扩展匹配值字段的值赋值给所述选项字段中的选项数据字段;
当所述待传输的数据包为IPv6数据包时,将所述待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据所述开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
一方面,本发明实施例提供了一种OpenFlow控制器,所述控制器包括:
获取模块,用于获取管理域或自治系统的网络拓扑和网络状态信息,所述管理域包括所述OpenFlow控制器所属的OpenFlow网络和IP网络,所述OpenFlow网络包括多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括所述OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备;
第一确定模块,用于确定待传输的数据包的源地址和目的地址;
第二确定模块,用于根据所述网络拓扑和网络状态信息,确定所述源地址到所述目的地址的路径;
第三确定模块,用于确定所述路径中的第一OpenFlow交换机,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个;
发送模块,用于向所述第一OpenFlow交换机下发控制消息,所述控制消息用于指示所述第一OpenFlow交换机将所述待传输的数据包中的目的地址设置为所述第一交换设备的地址,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括所述路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备。
进一步地,所述获取模块包括:
获取单元,用于获取第一网络状态信息,所述第一网络状态信息包括所述多个OpenFlow交换机的设备信息、所述多个OpenFlow交换机之间的链路信息、与所述多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及所述多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
接收单元,用于接收第二网络状态信息,所述第二网络状态信息包括所述多个交换设备的设备信息、所述多个交换设备之间的链路信息、与所述多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及所述多个交换设备与各自相连的所述OpenFlow交换机之间的链路信息;
确定单元,用于根据所述第一网络状态信息和所述第二网络状态信息,确定所述OpenFlow控制器所属的管理域或者自治系统的网络拓扑和网络状态信息。
可选地,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
另一方面,本发明实施例提供了一种OpenFlow交换机,适用于在管理域或自治系统中进行数据传输,所述管理域包括OpenFlow网络和IP网络,所述OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备,所述交换机包括:
接收模块,用于接收所述OpenFlow控制器下发的控制消息,所述控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,所述路径为所述待传输的数据包的源地址到所述目的地址的路径,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备;
处理模块,用于根据所述控制消息,设置所述待传输的数据包中的目的地址和源路由,并将所述待传输的数据包从指定端口发送给所述第一交换设备。
可选地,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
进一步地,处理模块包括:
判断单元,用于根据所述开放流扩展匹配类型字段的值判断所述待传输的数据包的类型;
第一设置单元,用于当所述待传输的数据包为IPv4数据包时,将所述待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将所述开放流扩展匹配长度的值赋值给所述选项字段中的选项长度字段,并将所述开放流扩展匹配值字段的值赋值给所述选项字段中的选项数据字段;
第二设置单元,用于当所述待传输的数据包为IPv6数据包时,将所述待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据所述开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
本发明实施例提供的技术方案带来的有益效果是:
通过获取OpenFlow控制器所属的管理域或自制系统的网络拓扑,确定待传输的数据包的源地址到目的地址的路径,并确定该路径中的第一OpenFlow交换机,OpenFlow控制器可以向该第一OpenFlow交换机发送控制消息,用于将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种端到端的路径控制方法的流程图;
图2是本发明实施例二提供的一种端到端的数据传输方法的流程图;
图3本发明实施例三提供的一种应用场景图;
图4是本发明实施例三提供的一种端到端的路径控制和数据传输方法的流程图;
图5本发明实施例四提供的另一种应用场景图;
图6是本发明实施例四提供的一种端到端的路径控制和数据传输方法的流程图;
图7是本发明实施例五提供的一种OpenFlow控制器的结构示意图;
图8是本发明实施例六提供的一种OpenFlow控制器的结构示意图;
图9是本发明实施例七提供的一种OpenFlow控制器的结构示意图;
图10是本发明实施例八提供的一种OpenFlow交换机的结构示意图;
图11是本发明实施例九提供的一种OpenFlow交换机的结构示意图;
图12是本发明实施例十提供的一种OpenFlow交换机的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例适用的场景包括但不限于:一个管理域中包括OpenFlow网络和IP网络,OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,IP网络包括多个路由器(即多个交换设备)的情景(见实施例三)、一个自治系统中包括OpenFlow控制器、多个OpenFlow交换机和多个路由器(即多个交换设备)的情景(见实施例四)。其中,OpenFlow网络和IP网络可以分别作为一个自治系统。
实施例一
本发明实施例提供了一种端到端的路径控制方法,该方法由OpenFlow控制器执行,参见图1,该方法包括:
步骤101:OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息,管理域包括OpenFlow控制器所属的OpenFlow网络和IP网络,OpenFlow网络包括多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备。
步骤102:确定待传输的数据包的源地址和目的地址。
步骤103:根据网络拓扑和网络状态信息,确定源地址到目的地址的路径。
步骤104:确定路径中的第一OpenFlow交换机,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个。
步骤105:向第一OpenFlow交换机下发控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
其中,网络状态信息包括管理域或自治系统中的OpenFlow交换机之间的实时链路状态信息、OpenFlow交换机与IP网络中的交换设备之间的实时链路状态信息和IP网络中的交换设备之间的实时链路状态信息,该实时链路状态信息可以是实时可用的带宽等。重新设置后的源路由中的剩余的交换设备可以包括OpenFlow交换机和IP网络中的交换设备。当确定的路径依次经过OpenFlow网络和IP网络的管理域内时,剩余的交换设备为IP网络中的交换设备;当路径依次经过OpenFlow网络、IP网络和至少一个其他的OpenFlow网络的管理域内时,剩余的交换设备为IP网络中的交换设备和OpenFlow交换机;当路径经过多个OpenFlow交换机和多个交换设备混合组成的一个自治系统时,根据具体的连接关系,剩余的交换设备可能为IP网络中的交换设备,也可能为IP网络中的交换设备和OpenFlow交换机,还有可能为OpenFlow交换机。
实现时,该重新设置后的源路由可以为严格源路由或松散源路由。当采用松散源路由时,可以包括一个或多个下一跳的交换设备的类型发生变化的交换设备的地址和其下一跳的交换设备的地址,例如,结合图3,路径依次经过OpenFlow网络1、IP网络2和OpenFlow网络3的管理域内时,该松散源路由可以包括OpenFlow交换机12的地址、交换设备22的地址,以及交换设备24的地址和OpenFlow交换机33的地址。
需要说明的是,IP网络中的交换设备或多个交换设备可以为路由器或交换机。
本发明实施例通过获取OpenFlow控制器所属的管理域或自制系统的网络拓扑,确定待传输的数据包的源地址到目的地址的路径,并确定该路径中的第一OpenFlow交换机,OpenFlow控制器可以向该第一OpenFlow交换机发送控制消息,用于将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例二
本发明实施例提供了一种端到端的数据传输方法,该方法由OpenFlow交换机执行,适用于在管理域或自治系统中进行数据传输,管理域包括OpenFlow网络和IP网络,OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备,参见图2,该方法包括:
步骤201:接收OpenFlow控制器下发的控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个,控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和所述目的地址,控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
步骤202:根据控制消息,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备。
其中,控制消息可以为流改变(Flow Mod)消息或数据包发送(Packet Out)消息,当控制消息为流改变(Flow Mod)消息时,接收该控制消息的OpenFlow交换机,会根据控制消息,在流表中创建流表项,再根据流表项,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备;当控制消息为数据包发送(PacketOut)消息时,由于数据包发送(Packet Out)消息中携带了数据包以及对其处理的动作,接收消息的OpenFlow交换机可以直接根据控制消息,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例三
为了更好的理解本发明实施例三提供的技术方案,下面先结合图3对实施例三的应用场景(即一个管理域中包括OpenFlow网络和IP网络,OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,IP网络包括多个路由器(即多个交换设备))作简单地介绍。图3显示了一个管理域的网络架构,参见图3,该管理域内包括第一OpenFlow网络1、IP网络2和第二OpenFlow网络3,第一OpenFlow网络1包括OpenFlow控制器10、与主机(host)4直接连接的OpenFlow交换机11、位于第一OpenFlow网络1的一侧的边缘的OpenFlow交换机12、13,其中,OpenFlow控制器11用于控制OpenFlow交换机11、12、13;IP网络2包括集中式网络状态信息存储设备(例如流量工程数据库(Traffic Engineering Database,简称“TED”)21和位于IP网络2的两侧的边缘的路由器22、23、24、25,其中,TED 21可以收集路由器22、23、24、25的设备信息及本地链路信息;第二OpenFlow网络3包括OpenFlow控制器31、OpenFlow交换机32、33和与主机(host)5直接相连的OpenFlow交换机34,其中,OpenFlow控制器31用于控制OpenFlow交换机32、33、34,并且OpenFlow交换机12、13与路由器22、23两两相互连接形成四条链路,路由器24、25与OpenFlow交换机32、33两两相互连接形成四条链路。
基于图3所示的架构,本发明实施例提供了一种端到端的路径控制和数据传输的方法,参见图4,方法包括:
步骤301:OpenFlow控制器获取管理域的网络拓扑和网络状态信息。
为了方便描述在本实施例中均以OpenFlow控制器10为例进行说明。其中,OpenFlow控制器获取管理域的网络拓扑,可以包括:
获取第一网络状态信息,第一网络状态信息包括OpenFlow交换机的设备信息、OpenFlow交换机之间的链路信息、与OpenFlow交换机连接的路由器的设备信息、以及OpenFlow交换机与各自相连的路由器之间的链路信息(例如OpenFlow交换机12与路由器22、23之间的链路信息);
接收第二网络状态信息,第二网络状态信息包括路由器的设备信息、路由器之间的链路信息、与路由器连接的OpenFlow交换机的设备信息、以及路由器与各自相连的OpenFlow交换机之间的链路信息(例如路由器22与OpenFlow交换机12、13之间的链路信息);
根据第一网络状态信息和第二网络状态信息,确定OpenFlow控制器所属的管理域的网络拓扑和网络状态信息。
实现时,在OpenFlow控制器接收第二网络状态信息之前,还可以包括:OpenFlow网络中的边缘OpenFlow交换机(例如OpenFlow交换机12)与IP网络中的边缘路由器(例如路由器22)之间相互发送链路发现消息的传送,以确定两者之间的链路信息;
OpenFlow控制器与TED之间相互发送打开(Open)消息,以判断OpenFlow控制器与TED是否在同一管理域,并判断OpenFlow控制器与TED的设备信息是否合法;
当OpenFlow控制器与TED属于同一管理域,且两者的设备信息均合法时,TED通过更新(Update)消息向OpenFlow控制器发送第二网络状态信息。
其中,打开(Open)消息包括角色信息字段和管理域信息字段,角色信息字段用于承载OpenFlow控制器或TED的设备信息,管理域信息用于承载OpenFlow控制器或TED所属的管理域。进一步地,可以检测角色信息字段的值是否与预先设定的值相同,以判断OpenFlow控制器与TED的设备信息是否合法。检测承载OpenFlow控制器所属的管理域的管理域信息字段的值与承载TED所属的管理域的管理域信息字段的值是否相同,以判断两者是否属于同一管理域。更新(Update)消息的网络层可达信息(Network Layer ReachabilityInformation,简称“NLRI”)字段中承载着第二网络状态信息。
具体地,可以在边界网关协议(Border Gateway Protocol,简称“BGP”)的打开(Open)消息中的可选参数字段中增加角色信息字段和管理域信息字段,以承载OpenFlow控制器或TED的设备信息和所属管理域;同时,可以通过扩展BGP协议的中的更新(Update)消息中NLRI字段中的协议类型(Protocol-ID)字段的值,以使原有的BGP支持通过不同版本的OpenFlow协议收集的NLRI信息,进而获得第二网络状态信息。
在本实施例中,OpenFlow控制器在采用步骤301中提供的方法获取其所属管理域的网络拓扑时,由于第一网络状态信息和第二网络状态信息中均包括OpenFlow交换机之间的链路信息、OpenFlow交换机与路由器之间的链路信息以及路由器之间的链路信息,所以该方法也可以获得网络状态信息。
步骤302:OpenFlow控制器确定待传输的数据包的源地址和目的地址。
具体地,OpenFlow控制器1可以解析OpenFlow交换机11通过数据包上传(PacketIn)消息中封装的数据包以获取源地址和目的地址。
步骤303:OpenFlow控制器根据网络拓扑和网络状态信息,确定源地址到目的地址的路径。
该源地址到目的地址的路径(即端到端的路径)可以包括待传输的数据包经过OpenFlow交换机之间(即OpenFlow网络1内部或OpenFlow网络3内部)的第一路径、数据包经过OpenFlow交换机与IP网络中的交换设备(OpenFlow网络1与IP网络2之间或者IP网络与OpenFlow网络3之间)的第二路径、数据包经过第二路径后,再经过IP网络中的交换设备之间(IP网络2内部)的第三路径。其中,OpenFlow控制器控制第一路径遵循OpenFlow网络中的常用的数据发送方式的原则,即当OpenFlow交换机11接收到主机4发送的数据包时,如果没有为该数据包找到匹配的流表项,则按照预先约定的消息格式将该数据包整包封装在数据包上传(Packet In)消息中,上报给OpenFlow控制器10,OpenFlow控制器10解析该数据包后,为数据包在网络中的传输制定一条路径,并将控制该路径生效的流表项下发至关联的一个或多个OpenFlow交换机,针对OpenFlow交换机11,除了可以从OpenFlow控制器10获取流表项处理主机4发来的数据包,也可以根据OpenFlow控制器10发来的包含具体转发动作的数据包发送(Packet Out)消息处理数据包。
实现时,OpenFlow控制器根据网络拓扑和网络状态信息,进行路由计算后,确定主机4与主机5之间的可达路径。
步骤304:OpenFlow控制器确定路径中的第一OpenFlow交换机。
该第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个。具体地,第一OpenFlow交换机为OpenFlow网络中的边缘OpenFlow交换机(例如OpenFlow交换机12),第一交换设备为IP网络中与第一OpenFlow交换机直接相连的路由器(例如路由器23)
步骤305:OpenFlow控制器向第一OpenFlow交换机下发控制消息。
其中,该控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
其中,控制消息可以为流改变(Flow-Mod)消息或数据包发送消息,该修改流(Flow-Mod)消息可以包括设置域(Set_Field)命令和输出端口(Output)命令。当控制消息为流改变(Flow-Mod)消息时,流改变消息中还携带了数据包需要匹配的信息,第一OpenFlow交换机可以根据流改变消息中携带的匹配域信息、设置域(Set_Field)命令和输出端口(Output)命令,在流表中创建流表项,再根据流表项设置待传输的数据包中的目的地址、源路由和从指定端口发送数据。该流表项的格式遵循OpenFlow协议中的原则,可以包括匹配域(Match Fields)和指令(Instructions)。其中,匹配域通常指定了需匹配信息(可以是各种各样的数据包的部分或全部的头域的信息),并提供该需匹配信息的指定值,该指定值用于与数据包的需匹配信息的实际值进行比较,指令包含多种,其中包括用于指示对数据包进行操作的动作(Action);当控制消息可以为数据包发送消息时,第一OpenFlow交换机可以直接根据控制消息中携带的数据包以及对其处理的动作,设置待传输的数据包中的目的地址、源路由和从指定端口发送数据。
在本实施例中,设置域命令包括开放流扩展匹配类型(OpenFlow eXtensibleMatch Type,简称“OXM_Type”)字段、开放流扩展匹配长度(OpenFlow eXtensible MatchLength,简称“OXM_Length”)字段和开放流扩展匹配值(OpenFlow eXtensible MatchValue,简称“OXM_Value”)字段,OXM_Type字段的值用于表明待传输的数据包的类型,OXM_Length字段的值用于表明开放流扩展匹配有效信息的长度,OXM_Value字段承载重新设置后的源路由。
具体地,源路由承载于数据包的选项(即IPv4的Option)字段或路由头(IPv6的Routing Header)字段中,可以修改选项字段或路由头字段以实现源路由的重新设置。
在本实施例中,可以扩展OpenFlow协议的OXM-Type以支持重设源路由。具体地,可以在OXM-Type中增加信息OXM_OFB_IPV4_SSR及信息OXM_OFB_IPV4_LSR以支持重新设定IPv4的Option字段,在OXM-Type中增加信息OXM_OFB_IPV6_SR以支持重新设定IPv6的路由头字段,其中,信息OXM_OFB_IPV4_SSR、信息OXM_OFB_IPV4_LSR和信息OXM_OFB_IPV6_SR的属性及功能描述如表1所示。
表1信息OXM_OFB_IPV4_SSR和OXM_OFB_IPV6_SR的属性描述
以OpenFlow1.4协议为例,可以在其基本类型的匹配域(oxm_ofb_match_field)中增加匹配域信息OFPXMT_OFB_IPV4_SSR=42、OFPXMT_OFB_IPV4_LSR=43及OFPXMT_OFB_IPV6_SR=44。
步骤306:第一OpenFlow交换机接收OpenFlow控制器下发的控制消息。
步骤307:第一OpenFlow交换机根据控制消息设置待传输的数据包中的目的地址。
结合图3,在OpenFlow交换机12接收到数据包后,没有为其查找到匹配的流表项或根据流表项的指定动作将其上报OpenFlow控制器10,OpenFlow控制器10解析该数据包后,根据制定的端到端的路径获知,OpenFlow交换机12的下一跳为路由器23,则OpenFlow控制器10向OpenFlow交换机12发送Flow-Mod消息。当OpenFlow交换机12接收该Flow-Mod消息,并解析消息内容后,将数据包的目的地址重新设定路由器23的地址。
容易理解地,当OpenFlow交换机12的下一跳为主机5时,OpenFlow控制器1可直接将数据包的目的地址重新设定为主机5的地址,该路径控制结束。
步骤308:第一OpenFlow交换机根据控制消息设置待传输的数据包中的源路由。
其中,第一OpenFlow交换机根据表项重新设定数据包的源路由,可以包括:
根据开放流扩展匹配类型字段的值判断待传输的数据包的类型的值是否为设定值;其中该设定值可以人为进行设定,例如,前述OpenFlow1.4协议中,OFPXMT_OFB_IPV4_SSR=42,OFPXMT_OFB_IPV4_LSR=43,OFPXMT_OFB_IPV6_SR=44。
实现时,第一OpenFlow交换机可以根据数据包的类型(即IPv4数据包和IPv6数据包),分别对数据包的源路由的重新设置。
具体地,当数据包为IPv4数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type中的OXM_OFB_IPV4_SSR的值是否为设定值42或者OXM_OFB_IPV4_LSR的值是否为设定值43;
如果OXM_OFB_IPV4_SSR为42,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值137(严格源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
如果OXM_OFB_IPV4_LSR为43,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值131(松散源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
需要说明的是,当待传输的数据包的类型发生变化时,Option字段中的类型字段的值(即第一设定值)可以发生对应改变。
当数据包为IPv6数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type字段中的OXM_OFB_IPV6_SR的值是否为设定值44;
当参数OXM_OFB_IPV6_SR的值为44时,则将IPv6数据包路由头字段中的下一包头(Next Header)字段的值设置为43,将路由头字段中的的类型(Type)字段的值设置为0,并将严格或松散位图(Strict/Loose Bit Map)字段的值设置为1;
根据OXM_Length字段的值获得OXM Payload的长度,并计算OXM Payload携带有多少个IPv6地址,并将计算结果设为路由头字段中的剩余节点字段的值;
将OXM Payload中携带的多个IPv6地址依次取出,并按取出的顺序赋值到路由头字段的地址字段中,例如,OXM Payload中携带的N个IPv6地址依次为Address[1]、Address[2],Address[3],…,Address[N],则路由头字段的地址字段中的地址顺序也为Address[1]、Address[2],Address[3],…,Address[N]。具体地,可以用OXM_Length字段的值与128取整,已得到Payload携带的IPv6地址的个数。
步骤309:第一OpenFlow交换机根据控制消息中指定的端口将数据包发送给第一交换设备。
参见图3,该步即为从OpenFlow交换机12发送至路由器23。
步骤310:第一交换设备和剩余的交换设备处理数据包。
具体地,第一交换设备处理数据包可以包括:
第一交换设备或剩余的交换设备判断自身是否为目的地址标识的设备或主机;
当第一交换设备或剩余的交换设备不为目的主机时,依次取出数据包的源路由中的下一跳地址作为目的地址,并将数据包依次发送至其他剩余的交换设备直至发送至目的主机;
当第一交换设备或剩余的交换设备的下一跳地址是目的主机地址时,将目的主机地址设为目的地址,然后将重设的数据包发往目的主机,结束发送。
具体地,第一交换设备或剩余的IP网络中的交换设备接收到数据包后,可以根据源路由中是否有剩余的交换设备的地址来判定自身下一跳是否为目的主机。当数据包为IPv6数据包时,可以直接判断路由头字段中的剩余节点数量是否为0,来确定第二交换设备自身下一跳是否为目的主机。
第一交换设备剩余的IP网络的交换设备依次取出数据包的源路由中的地址作为目的地址,并将数据包依次发送至其他的剩余的IP网络的交换设备或目的主机,遵循IP网络内部的数据转发的相关协议。
当剩余的交换设备为后续的其他OpenFlow网络中的边缘OpenFlow交换机(例如OpenFlow交换机34)时,后续处理过程遵循OpenFlow网络中的数据转发处理的过程,即OpenFlow交换机34接收数据包时,没有为其查找到匹配的流表项或根据流表项的指定动作将其按照预先约定的消息格式将该数据包整包封装在数据包上传(Packet In)消息中,上报给OpenFlow控制器31,OpenFlow控制器31解析该数据包后,根据制定的路径,为路径上关联的一个或多个OpenFlow交换机制定该路径生效的流表项,并通过Flow Mod消息将流表项下发至关联的OpenFlow交换机。
在本实施例中,当管理域内包括多个OpenFlow网络即多个OpenFlow控制器时,每个OpenFlow控制器均具有相同的能力,例如获取管理域的网络拓扑、向第一OpenFlow交换机发送控制消息等,但是,在实际应用中,通常是路径中更靠近源地址的OpenFlow控制器向第一OpenFlow交换机发送控制消息以改变待发送数据包的源路由,后续的OpenFlow控制器按照正常的数据传输的过程控制其所属OpenFlow网络中的OpenFlow交换机的数据转发。
需要说明的是,本实施例中的端到端的路径的控制方法,可以根据网络拓扑、网络状态机应用需求等选择最优的路由进行数据发送,所以该方法还可以与基于流量工程扩展的资源预留协议(Resource ReSerVation Protocol-Traffic Engineering,简称“RSVP-TE”)等为QoS提供保证的技术相结合,以进一步提高实现关键业务的端到端的QoS。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例四
为了更好的理解本发明实施例四提供的技术方案,下面先结合图5对实施例四的应用场景(即一个自治系统中包括OpenFlow控制器、多个OpenFlow交换机和多个路由器(即多个交换设备)的情景作简单地介绍。图5显示了一个自治系统的网络架构,参见图5,在该自治系统内设有流量工程数据库1、OpenFlow控制器2、OpenFlow交换机21、22、23、24和交换机11、12、13、14、15,流量工程数据库1与OpenFlow控制器2之间可以相互通信,该OpenFlow控制器2可以控制OpenFlow交换机21、22、23、24,流量工程数据库1可以收集交换机11、12、13、14、15的设备信息和本地链路信息,且OpenFlow交换机21与主机3、交换机11、12、13之间相互连接,OpenFlow交换机22与交换机12、14之间相互连接,OpenFlow交换机23与交换机13、14、15之间相互连接,OpenFlow交换机24与主机4、交换机15、OpenFlow交换机23之间相互连接,交换机12和交换机13相互连接。
在本实施例中,第一OpenFlow交换机与第一交换设备位于同一自治系统中。
基于图5所示的架构,本发明实施例提供了一种端到端的路径控制和数据传输的方法,参见图6,该方法包括:
步骤501:OpenFlow控制器获取自治系统的网络拓扑和网络状态信息。
步骤502:OpenFlow控制器确定待传输的数据包的源地址和目的地址。
步骤503:OpenFlow控制器根据网络拓扑和网络状态信息,确定源地址到目的地址的路径。
步骤504:OpenFlow控制器确定路径中的第一OpenFlow交换机。
步骤505:OpenFlow控制器向第一OpenFlow交换机下发控制消息。
步骤506:第一OpenFlow交换机接收OpenFlow控制器下发的控制消息。
步骤507:第一OpenFlow交换机根据控制消息设置待传输的数据包中的目的地址。
步骤508:第一OpenFlow交换机根据控制消息设置待传输的数据包中的源路由。
步骤509:第一OpenFlow交换机根据控制消息中指定的端口将数据包发送给第一交换设备。
步骤510:第一交换设备和剩余的交换设备处理数据包。
步骤501~510与步骤301~310相同,这里不再赘述。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例五
本发明实施例提供了一种OpenFlow控制器,参见图7,该控制器包括:获取模块71、第一确定模块72、第二确定模块73、第三确定模块74和发送模块75。
获取模块71用于获取管理域或自治系统的网络拓扑和网络状态信息,管理域包括OpenFlow控制器所属的OpenFlow网络和IP网络,OpenFlow网络包括多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括所述OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备;
第一确定模块72用于确定待传输的数据包的源地址和目的地址;
第二确定模块73用于根据网络拓扑和网络状态信息,确定源地址到目的地址的路径;
第三确定模块74用于确定路径中的第一OpenFlow交换机,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个;
发送模块75用于向第一OpenFlow交换机下发控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,
控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,
控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例六
本发明实施例提供了一种OpenFlow控制器,参见图8,该控制器包括:获取模块81、第一确定模块82、第二确定模块83、第三确定模块84和发送模块85。
获取模块81用于获取管理域或自治系统的网络拓扑和网络状态信息,管理域包括OpenFlow控制器所属的OpenFlow网络和IP网络,OpenFlow网络包括多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括所述OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备;
第一确定模块82用于确定待传输的数据包的源地址和目的地址;
第二确定模块83用于根据网络拓扑和网络状态信息,确定源地址到目的地址的路径;
第三确定模块84用于确定路径中的第一OpenFlow交换机,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个;
发送模块85用于向第一OpenFlow交换机下发控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,
控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,
控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
进一步地,获取模块81可以包括:
获取单元811用于获取第一网络状态信息,第一网络状态信息包括多个OpenFlow交换机的设备信息、多个OpenFlow交换机之间的链路信息、与多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
接收单元812用于接收第二网络状态信息,第二网络状态信息包括多个交换设备的设备信息、多个交换设备之间的链路信息、与多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及多个交换设备与各自相连的OpenFlow交换机之间的链路信息;
确定单元813用于根据第一网络状态信息和第二网络状态信息,确定OpenFlow控制器所属的管理域或者自治系统的网络拓扑和网络状态信息。
在本实施例中,控制消息为流改变消息或数据包发送消息,流改变消息包括设置域命令,设置域命令包括开放流扩展匹配类型(OXM_Type)字段、开放流扩展匹配长度(OXM_Length)字段和开放流扩展匹配值(OXM_Value)字段,开放流扩展匹配类型字段的值用于指示待传输的数据包的类型,开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,开放流扩展匹配值字段用于承载重新设置后的源路由。
具体地,源路由承载于数据包的选项(即IPv4的Option)字段或路由头(IPv6的Routing Header)字段中,可以修改选项字段或路由头字段以实现源路由的重新设置。
在本实施例中,可以扩展OpenFlow协议的OXM-Type以支持重设源路由。具体地,可以在OXM-Type中增加信息OXM_OFB_IPV4_SSR及信息OXM_OFB_IPV4_LSR以支持重新设定IPv4的Option字段,在OXM-Type中增加信息OXM_OFB_IPV6_SR以支持重新设定IPv6的路由头字段。
其中,第一OpenFlow交换机根据表项重新设定数据包的源路由,可以包括:
根据开放流扩展匹配类型字段的值判断待传输的数据包的类型的值是否为设定值;其中该设定值可以人为进行设定,例如,前述OpenFlow1.4协议中,OFPXMT_OFB_IPV4_SSR=42,OFPXMT_OFB_IPV4_LSR=43,OFPXMT_OFB_IPV6_SR=44。
实现时,第一OpenFlow交换机可以根据数据包的类型(即IPv4数据包和IPv6数据包),分别对数据包的源路由的重新设置。
具体地,当数据包为IPv4数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type中的OXM_OFB_IPV4_SSR的值是否为设定值42或者OXM_OFB_IPV4_LSR的值是否为设定值43;
如果OXM_OFB_IPV4_SSR为42,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值137(严格源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
如果OXM_OFB_IPV4_LSR为43,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值131(松散源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
需要说明的是,当待传输的数据包的类型发生变化时,Option字段中的类型字段的值(即第一设定值)可以发生对应改变。
当数据包为IPv6数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type字段中的OXM_OFB_IPV6_SR的值是否为设定值44;
当参数OXM_OFB_IPV6_SR的值为44时,则将IPv6数据包路由头字段中的下一包头(Next Header)字段的值设置为43,将路由头字段中的的类型(Type)字段的值设置为0,并将严格或松散位图(Strict/Loose Bit Map)字段的值设置为1;
根据OXM_Length字段的值获得OXM Payload的长度,并计算OXM Payload携带有多少个IPv6地址,并将计算结果设为路由头字段中的剩余节点字段的值;
将OXM Payload中携带的多个IPv6地址依次取出,并按取出的顺序赋值到路由头字段的地址字段中,例如,OXM Payload中携带的N个IPv6地址依次为Address[1]、Address[2],Address[3],…,Address[N],则路由头字段的地址字段中的地址顺序也为Address[1]、Address[2],Address[3],…,Address[N]。具体地,可以用OXM_Length字段的值与128取整,已得到Payload携带的IPv6地址的个数。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例七
本发明实施例提供了一种OpenFlow控制器,参见图9,该OpenFlow控制器可以是一种服务器。其一般包括至少一个处理器91(例如CPU)、至少一个网络接口92或者其他通信接口、存储器93和至少一个通信总线94。本领域技术人员可以理解,图9中示出的服务器的结构并不构成对交换设备的限定,其可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对OpenFlow控制器的各个构成部件进行具体的介绍:
通信总线94用于实现处理器91、存储器93及网络接口92之间的连接通信。
至少一个网络接口92(可以是有线或者无线)实现OpenFlow控制器分别与至少两个其他计算机(例如主机)和一个服务器(例如OpenFlow交换机)之间的通信连接(计算机与服务器可以共享一个网络接口92分别与OpenFlow控制器连接),可以使用互联网,广域网,本地网,城域网等。
存储器93可用于存储软件程序以及应用模块,处理器91通过运行存储在存储器93的软件程序以及应用模块,从而执行OpenFlow控制器的各种功能应用以及数据处理。存储器93可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能(例如流表表项的匹配功能和执行指令功能)所需的应用程序等;存储数据区可存储根据OpenFlow控制器的使用所创建的数据(例如存储的流表和数据库)等。此外,存储器93可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器91是OpenFlow控制器的控制中心,利用各种接口和线路连接整个交换设备的各个部分,通过运行或执行存储在存储器93内的软件程序和/或应用模块,以及调用存储在存储器93内的数据,执行OpenFlow控制器的各种功能和处理数据,从而对交换设备进行整体监控。
具体地,通过运行或执行存储在存储器93内的软件程序和/或应用模块,以及调用存储在存储器93内的数据,处理器91可以实现,获取管理域或自治系统的网络拓扑和网络状态信息,管理域包括OpenFlow控制器所属的OpenFlow网络和IP网络,OpenFlow网络包括多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括所述OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备;
确定待传输的数据包的源地址和目的地址;
根据网络拓扑和网络状态信息,确定源地址到目的地址的路径;
确定路径中的第一OpenFlow交换机,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个;
网络接口92可以实现,向第一OpenFlow交换机下发控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,
控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,
控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备。
进一步地,处理器91还可以实现,获取第一网络状态信息,第一网络状态信息包括多个OpenFlow交换机的设备信息、多个OpenFlow交换机之间的链路信息、与多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
网络接口92还可以实现,接收第二网络状态信息,第二网络状态信息包括多个交换设备的设备信息、多个交换设备之间的链路信息、与多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及多个交换设备与各自相连的OpenFlow交换机之间的链路信息;
处理器91还可以实现,根据第一网络状态信息和第二网络状态信息,确定OpenFlow控制器所属的管理域或者自治系统的网络拓扑和网络状态信息。
在本实施例中,控制消息为流改变消息或数据包发送消息,流改变消息包括设置域命令,设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,开放流扩展匹配类型字段的值用于指示待传输的数据包的类型,开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,开放流扩展匹配值字段用于承载重新设置后的源路由。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例八
本发明实施例提供了一种OpenFlow交换机,适用于在管理域或自治系统中进行数据传输,管理域包括OpenFlow网络和IP网络,OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备,参见图10,该交换机包括:接收模块11和处理模块12。
接收模块11用于接收OpenFlow控制器下发的控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个,
控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,
控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备;
处理模块12用于根据控制消息,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例九
本发明实施例提供了一种OpenFlow交换机,适用于在管理域或自治系统中进行数据传输,管理域包括OpenFlow网络和IP网络,OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,IP网络包括多个交换设备,自治系统包括OpenFlow控制器、OpenFlow控制器控制的多个OpenFlow交换机和非OpenFlow控制器控制的多个交换设备,参见图11,该交换机包括:接收模块21和处理模块22。
接收模块21用于接收OpenFlow控制器下发的控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个,
控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,
控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备;
处理模块22用于根据控制消息,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备。
在本实施例中,控制消息为流改变消息或数据包发送消息,流改变消息包括设置域命令,设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,开放流扩展匹配类型字段的值用于指示待传输的数据包的类型,开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,开放流扩展匹配值字段用于承载重新设置后的源路由。
具体地,源路由承载于数据包的选项(即IPv4的Option)字段或路由头(IPv6的Routing Header)字段中,可以修改选项字段或路由头字段以实现源路由的重新设置。
在本实施例中,可以扩展OpenFlow协议的OXM-Type以支持重设源路由。具体地,可以在OXM-Type中增加信息OXM_OFB_IPV4_SSR及信息OXM_OFB_IPV4_LSR以支持重新设定IPv4的Option字段,在OXM-Type中增加信息OXM_OFB_IPV6_SR以支持重新设定IPv6的路由头字段。
进一步地,处理模块21可以包括:
判断单元221用于根据开放流扩展匹配类型字段的值判断待传输的数据包的类型;其中该开放流扩展匹配类型字段的值可以人为进行设定,例如,前述OpenFlow1.4协议中,OFPXMT_OFB_IPV4_SSR=42,OFPXMT_OFB_IPV4_LSR=43,OFPXMT_OFB_IPV6_SR=44。
第一设置单元222用于当待传输的数据包为IPv4数据包时,将待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将开放流扩展匹配长度的值赋值给选项字段中的选项长度字段,并将开放流扩展匹配值字段的值赋值给选项字段中的选项数据字段;
第二设置单元223用于当待传输的数据包为IPv6数据包时,将待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
具体地,当数据包为IPv4数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type中的OXM_OFB_IPV4_SSR的值是否为设定值42或者OXM_OFB_IPV4_LSR的值是否为设定值43;
如果OXM_OFB_IPV4_SSR为42,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值137(严格源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
如果OXM_OFB_IPV4_LSR为43,则将IPv4数据包中的Option字段的类型(Type)字段的值设置为第一设定值131(松散源路由的Type值),再将OXM_Length的值赋值给Option字段的选项长度(Option-Length)字段,然后将OXM Payload的内容也即OXM_Value字段的值赋值给Option字段的选项数据(Option-Data)。
当数据包为IPv6数据包时,第一OpenFlow交换机重新设定源路由的过程为:
判断OXM_Type字段中的OXM_OFB_IPV6_SR的值是否为设定值44;
当参数OXM_OFB_IPV6_SR的值为44时,则将IPv6数据包路由头字段中的下一包头(Next Header)字段的值设置为43,将路由头字段中的的类型(Type)字段的值设置为0,并将严格或松散位图(Strict/Loose Bit Map)字段的值设置为1;
根据OXM_Length字段的值获得OXM Payload的长度,并计算OXM Payload携带有多少个IPv6地址,并将计算结果设为路由头字段中的剩余节点字段的值;
将OXM Payload中携带的多个IPv6地址依次取出,并按取出的顺序赋值到路由头字段的地址字段中,例如,OXM Payload中携带的N个IPv6地址依次为Address[1]、Address[2],Address[3],…,Address[N],则路由头字段的地址字段中的地址顺序也为Address[1]、Address[2],Address[3],…,Address[N]。具体地,可以用OXM_Length字段的值与128取整,已得到Payload携带的IPv6地址的个数。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
实施例十
本发明实施例提供了一种OpenFlow交换机,参见图12,该OpenFlow交换机可以是一种交换机。其一般包括至少一个处理器31(例如CPU)、至少一个网络接口32或者其他通信接口、存储器33和至少一个通信总线34。本领域技术人员可以理解,图12中示出的服务器的结构并不构成对交换设备的限定,其可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图12对OpenFlow交换机的各个构成部件进行具体的介绍:
通信总线34用于实现处理器31、存储器33及网络接口92之间的连接通信。
至少一个网络接口32(可以是有线或者无线)实现OpenFlow交换机分别与至少两个其他计算机(例如主机)和一个服务器(例如OpenFlow控制器)之间的通信连接(计算机与服务器可以共享一个网络接口32分别与OpenFlow交换机连接),可以使用互联网,广域网,本地网,城域网等。
存储器33可用于存储软件程序以及应用模块,处理器31通过运行存储在存储器33的软件程序以及应用模块,从而执行OpenFlow交换机的各种功能应用以及数据处理。存储器33可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能(例如流表表项的匹配功能和执行指令功能)所需的应用程序等;存储数据区可存储根据OpenFlow交换机的使用所创建的数据(例如存储的流表和数据库)等。此外,存储器33可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器31是OpenFlow交换机的控制中心,利用各种接口和线路连接整个交换设备的各个部分,通过运行或执行存储在存储器33内的软件程序和/或应用模块,以及调用存储在存储器33内的数据,执行OpenFlow交换机的各种功能和处理数据,从而对交换设备进行整体监控。
具体地,通过运行或执行存储在存储器33内的软件程序和/或应用模块,以及调用存储在存储器33内的数据,处理器31可以实现,接收OpenFlow控制器下发的控制消息,控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,第一OpenFlow交换机为多个OpenFlow交换机中的一个,且第一OpenFlow交换机的下一跳为第一交换设备,第一交换设备为多个交换设备中的一个,控制消息还用于指示第一OpenFlow交换机重新设置待传输的数据包中的源路由,重新设置后的源路由依次包括路径中位于第一交换设备之后的剩余的交换设备的地址和目的地址,控制消息还用于指示第一OpenFlow交换机将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备;
处理器31可以实现根据控制消息,设置待传输的数据包中的目的地址和源路由,并将待传输的数据包从指定端口发送给第一交换设备。
在本实施例中,控制消息为流改变消息或数据包发送消息,流改变消息包括设置域命令,设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,开放流扩展匹配类型字段的值用于指示待传输的数据包的类型,开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,开放流扩展匹配值字段用于承载重新设置后的源路由。
进一步地,处理器31还可以实现根据开放流扩展匹配类型字段的值判断待传输的数据包的类型;
当待传输的数据包为IPv4数据包时,将待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将开放流扩展匹配长度的值赋值给选项字段中的选项长度字段,并将开放流扩展匹配值字段的值赋值给选项字段中的选项数据字段;
当待传输的数据包为IPv6数据包时,将待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
本发明实施例通过第一OpenFlow交换机接收OpenFlow控制器发送的控制消息,将待传输的数据包中的目的地址设置为第一OpenFlow交换机下一跳的第一交换设备的地址,并重新设置待传输的数据包中的源路由,再将待传输的数据包从第一OpenFlow交换机的指定端口发送给第一交换设备,由第一OpenFlow交换机根据OpenFlow控制器的命令配合OpenFlow控制器,实现了OpenFlow控制器对整个端到端的路径的控制,有利于灵活高效地调度全网的网络资源,有助于实现QoS保证。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种端到端的路径控制方法,其特征在于,所述方法包括:
OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息,所述管理域包括所述OpenFlow控制器所属的OpenFlow网络和IP网络,所述OpenFlow网络包括多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括所述OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备;
确定待传输的数据包的源地址和目的地址;
根据所述网络拓扑和网络状态信息,确定所述源地址到所述目的地址的路径;
确定所述路径中的第一OpenFlow交换机,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个;
向所述第一OpenFlow交换机下发控制消息,所述控制消息用于指示所述第一OpenFlow交换机将所述待传输的数据包中的目的地址设置为所述第一交换设备的地址,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括所述路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备。
2.根据权利要求1所述的方法,其特征在于,所述OpenFlow控制器获取管理域或自治系统的网络拓扑和网络状态信息,包括:
获取第一网络状态信息,所述第一网络状态信息包括所述多个OpenFlow交换机的设备信息、所述多个OpenFlow交换机之间的链路信息、与所述多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及所述多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
接收第二网络状态信息,所述第二网络状态信息包括所述多个交换设备的设备信息、所述多个交换设备之间的链路信息、与所述多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及所述多个交换设备与各自相连的所述OpenFlow交换机之间的链路信息;
根据所述第一网络状态信息和所述第二网络状态信息,确定所述OpenFlow控制器所属的管理域或者自治系统的网络拓扑和网络状态信息。
3.根据权利要求1所述的方法,其特征在于,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
4.一种端到端的数据传输方法,适用于在管理域或自治系统中进行数据传输,所述管理域包括OpenFlow网络和IP网络,所述OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备,其特征在于,所述方法包括:
接收所述OpenFlow控制器下发的控制消息,所述控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,所述路径为所述待传输的数据包的源地址到所述目的地址的路径,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备;
根据所述控制消息,设置所述待传输的数据包中的目的地址和源路由,并将所述待传输的数据包从指定端口发送给所述第一交换设备。
5.根据权利要求4所述的方法,其特征在于,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
6.根据权利要求5所述的方法,其特征在于,所述根据所述控制消息,设定所述待传输的数据包中的目的地址和源路由,包括:
根据所述开放流扩展匹配类型字段的值判断所述待传输的数据包的类型;
当所述待传输的数据包为IPv4数据包时,将所述待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将所述开放流扩展匹配长度的值赋值给所述选项字段中的选项长度字段,并将所述开放流扩展匹配值字段的值赋值给所述选项字段中的选项数据字段;
当所述待传输的数据包为IPv6数据包时,将所述待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据所述开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
7.一种OpenFlow控制器,其特征在于,所述控制器包括:
获取模块,用于获取管理域或自治系统的网络拓扑和网络状态信息,所述管理域包括所述OpenFlow控制器所属的OpenFlow网络和IP网络,所述OpenFlow网络包括多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括所述OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备;
第一确定模块,用于确定待传输的数据包的源地址和目的地址;
第二确定模块,用于根据所述网络拓扑和网络状态信息,确定所述源地址到所述目的地址的路径;
第三确定模块,用于确定所述路径中的第一OpenFlow交换机,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个;
发送模块,用于向所述第一OpenFlow交换机下发控制消息,所述控制消息用于指示所述第一OpenFlow交换机将所述待传输的数据包中的目的地址设置为所述第一交换设备的地址,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括所述路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备。
8.根据权利要求7所述的控制器,其特征在于,所述获取模块包括:
获取单元,用于获取第一网络状态信息,所述第一网络状态信息包括所述多个OpenFlow交换机的设备信息、所述多个OpenFlow交换机之间的链路信息、与所述多个OpenFlow交换机连接的一个或多个交换设备的设备信息、以及所述多个OpenFlow交换机与各自相连的交换设备之间的链路信息;
接收单元,用于接收第二网络状态信息,所述第二网络状态信息包括所述多个交换设备的设备信息、所述多个交换设备之间的链路信息、与所述多个交换设备连接的一个或多个OpenFlow交换机的设备信息、以及所述多个交换设备与各自相连的所述OpenFlow交换机之间的链路信息;
确定单元,用于根据所述第一网络状态信息和所述第二网络状态信息,确定所述OpenFlow控制器所属的管理域或者自治系统的网络拓扑和网络状态信息。
9.根据权利要求7所述的控制器,其特征在于,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
10.一种OpenFlow交换机,适用于在管理域或自治系统中进行数据传输,所述管理域包括OpenFlow网络和IP网络,所述OpenFlow网络包括OpenFlow控制器和多个OpenFlow交换机,所述IP网络包括多个交换设备,所述自治系统包括OpenFlow控制器、所述OpenFlow控制器控制的多个OpenFlow交换机和非所述OpenFlow控制器控制的多个交换设备,其特征在于,所述交换机包括:
接收模块,用于接收所述OpenFlow控制器下发的控制消息,所述控制消息用于指示第一OpenFlow交换机将待传输的数据包中的目的地址设置为第一交换设备的地址,所述第一OpenFlow交换机为多个OpenFlow交换机中的一个,且所述第一OpenFlow交换机的下一跳为第一交换设备,所述第一交换设备为多个交换设备中的一个,
所述控制消息还用于指示所述第一OpenFlow交换机重新设置所述待传输的数据包中的源路由,重新设置后的所述源路由依次包括路径中位于所述第一交换设备之后的剩余的交换设备的地址和所述目的地址,所述路径为所述待传输的数据包的源地址到所述目的地址的路径,
所述控制消息还用于指示所述第一OpenFlow交换机将所述待传输的数据包从所述第一OpenFlow交换机的指定端口发送给所述第一交换设备;
处理模块,用于根据所述控制消息,设置所述待传输的数据包中的目的地址和源路由,并将所述待传输的数据包从指定端口发送给所述第一交换设备。
11.根据权利要求10所述的交换机,其特征在于,所述控制消息为流改变消息或数据包发送消息,所述流改变消息包括设置域命令,所述设置域命令包括开放流扩展匹配类型字段、开放流扩展匹配长度字段和开放流扩展匹配值字段,所述开放流扩展匹配类型字段的值用于指示所述待传输的数据包的类型,所述开放流扩展匹配长度字段的值用于指示开放流扩展匹配有效信息的长度,所述开放流扩展匹配值字段用于承载重新设置后的所述源路由。
12.根据权利要求11所述的交换机,其特征在于,处理模块包括:
判断单元,用于根据所述开放流扩展匹配类型字段的值判断所述待传输的数据包的类型;
第一设置单元,用于当所述待传输的数据包为IPv4数据包时,将所述待传输的数据包的选项字段中的选项类型字段的值设为第一设定值,将所述开放流扩展匹配长度的值赋值给所述选项字段中的选项长度字段,并将所述开放流扩展匹配值字段的值赋值给所述选项字段中的选项数据字段;
第二设置单元,用于当所述待传输的数据包为IPv6数据包时,将所述待传输数据包的路由头字段中的下一包头字段、类型字段、严格或松散位图字段的值设置为第二设定值,根据所述开放流扩展匹配长度的值计算IPv6地址的个数,并将计算结果设为路由头字段中的剩余节点字段的值,并将IPv6地址依次取出,按取出的顺序赋值给路由头字段中的地址字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490645.8A CN105516025B (zh) | 2014-09-23 | 2014-09-23 | 端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490645.8A CN105516025B (zh) | 2014-09-23 | 2014-09-23 | 端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105516025A CN105516025A (zh) | 2016-04-20 |
CN105516025B true CN105516025B (zh) | 2019-02-05 |
Family
ID=55723675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410490645.8A Expired - Fee Related CN105516025B (zh) | 2014-09-23 | 2014-09-23 | 端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105516025B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018019370A1 (en) * | 2016-07-27 | 2018-02-01 | Huawei Technologies Co., Ltd. | A data packet forwarding unit in software defined networks |
CN106230983A (zh) * | 2016-09-09 | 2016-12-14 | 郑州云海信息技术有限公司 | 一种控制装置及方法 |
CN108429652A (zh) * | 2017-02-14 | 2018-08-21 | 中兴通讯股份有限公司 | 基于sdn的远端流镜像控制方法、实现方法及相关设备 |
CN107181688B (zh) * | 2017-03-31 | 2019-12-31 | 武汉绿色网络信息服务有限责任公司 | 一种sdn网络中实现服务器端跨域数据传输优化的系统和方法 |
CN109391563B (zh) | 2017-08-08 | 2022-04-05 | 华为技术有限公司 | 一种资源预留方法以及相关设备 |
CN109660414B (zh) * | 2017-10-11 | 2021-01-08 | 上海层峰网络科技有限公司 | 一种基于sdn网络的端到端业务监测的方法和装置 |
CN110601951B (zh) * | 2019-10-08 | 2021-12-10 | 浪潮云信息技术股份公司 | 一种在超大规模数据中心实现VxLAN可扩展性的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546351A (zh) * | 2012-03-15 | 2012-07-04 | 北京邮电大学 | openflow网络和现有IP网络互联的系统和方法 |
CN103152264A (zh) * | 2013-02-25 | 2013-06-12 | 北京百度网讯科技有限公司 | Openflow网络和IP网络互连通信方法及Openflow子网边缘交换机 |
CN103957159A (zh) * | 2014-04-24 | 2014-07-30 | 华为技术有限公司 | 一种确定标签交换路径的方法及路径计算单元 |
-
2014
- 2014-09-23 CN CN201410490645.8A patent/CN105516025B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546351A (zh) * | 2012-03-15 | 2012-07-04 | 北京邮电大学 | openflow网络和现有IP网络互联的系统和方法 |
CN103152264A (zh) * | 2013-02-25 | 2013-06-12 | 北京百度网讯科技有限公司 | Openflow网络和IP网络互连通信方法及Openflow子网边缘交换机 |
CN103957159A (zh) * | 2014-04-24 | 2014-07-30 | 华为技术有限公司 | 一种确定标签交换路径的方法及路径计算单元 |
Non-Patent Citations (2)
Title |
---|
Christian Esteve Rothenberg;Christian Esteve Rothenberg;《http://www.dca.fee.unicamp.br/~chesteve/pubs/Hybrid-SDN-Book-Chapter-2013.pdf》;20130605;第1.2.2-1.2.4节;图1.1,1.4,1.5,1.7 |
OpenFlow Switch Specification Version 1.3.0 (Wire Protocol 0x04);OPEN NETWORKING FOUNDATION;《OpenFlow Switch Specification》;20120625;第39-41页A.2.3.2,表9 |
Also Published As
Publication number | Publication date |
---|---|
CN105516025A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105516025B (zh) | 端到端的路径控制和数据传输方法、OpenFlow控制器和交换机 | |
JP6508256B2 (ja) | 通信システム、通信装置、制御装置、パケットフローの転送経路の制御方法及びプログラム | |
CN103516602B (zh) | 用于传输数据的方法、网络设备以及网络系统 | |
CN106789542B (zh) | 一种云数据中心安全服务链的实现方法 | |
CN100493013C (zh) | 用于使用路径密钥从路径计算元件中取回计算出的路径的系统和方法 | |
KR101473783B1 (ko) | 터널링을 이용한 다이나믹 서비스 체이닝 제어 방법 및 장치 | |
CN108809857A (zh) | 一种基于sdn的流量监控与业务服务质量保障策略的方法 | |
JP6648892B2 (ja) | 適合ネットワーク機能チェーン | |
WO2016198013A1 (zh) | 一种报文传输方法及装置 | |
CN104717098B (zh) | 一种数据处理方法及装置 | |
US8897135B2 (en) | Recursive load balancing in a loop-free routing topology using routing arcs | |
CN104301252B (zh) | 一种数据发送系统及数据发送方法 | |
WO2015109821A1 (zh) | 一种管理业务链的方法、系统及装置 | |
CN107181691B (zh) | 一种网络中实现报文路由的方法、设备和系统 | |
Kalmykov et al. | Segment routing as a basis for software defined network | |
CN104639362A (zh) | Oam性能监控方法及装置 | |
CN106656905A (zh) | 防火墙集群实现方法及装置 | |
KR20140052847A (ko) | 소프트웨어 정의 네트워킹 기반 네트워크에서 서비스 품질 제공 방법 및 그 장치 | |
CN105634952B (zh) | Lsp报文快速通告方法以及装置 | |
CN113709031A (zh) | 一种约束路由传输分发的方法和装置 | |
CN105637806B (zh) | 网络拓扑确定方法和装置、集中式网络状态信息存储设备 | |
CN105306365A (zh) | 一种电力通信网络及其扩容与抗毁路由路径确定方法 | |
CN106790146A (zh) | 一种云环境下基于sdn技术实现移动组播的系统及其运行方法 | |
WO2015079616A1 (ja) | 通信システム、通信方法、ネットワーク情報結合装置およびネットワーク情報結合プログラム | |
WO2007019758A1 (fr) | Méthode, système et appareil d’implémentation d’ingénierie de trafic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190205 Termination date: 20190923 |
|
CF01 | Termination of patent right due to non-payment of annual fee |