CN106330772B - SDN中的流表发送方法及OpenFlow控制器 - Google Patents
SDN中的流表发送方法及OpenFlow控制器 Download PDFInfo
- Publication number
- CN106330772B CN106330772B CN201510405986.5A CN201510405986A CN106330772B CN 106330772 B CN106330772 B CN 106330772B CN 201510405986 A CN201510405986 A CN 201510405986A CN 106330772 B CN106330772 B CN 106330772B
- Authority
- CN
- China
- Prior art keywords
- flow
- mod message
- flow mod
- openflow
- urgency level
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种SDN中的流表发送方法及OpenFlow控制器,根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度;根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序;根据确定的各Flow Mod消息的发送顺序,分别向多个OpenFlow交换机发送Flow Mod消息,从而有效解决了数据流在某个交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流的建立延迟。
Description
技术领域
本发明实施例涉及网络技术,尤其涉及一种SDN中的流表发送方法及OpenFlow控制器。
背景技术
软件定义网络(Software Defined Networking,SDN)的特征在于将网络的控制平面与数据平面相分离,SDN网络的一个典型代表是开放流(OpenFlow)网络。OpenFlow将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机和OpenFlow控制器来共同完成,从而实现了数据转发和控制的分离。在SDN中,当数据流的第一个数据包到达交换机时,交换机将其以一种packet-in的形式转发给OpenFlow控制器,OpenFlow控制器根据数据流的信息为该数据流选择合适的转发路径,并将流表下发到转发路径上的所有OpenFlow交换机。
目前SDN中采用最多的流表发送方法是“从后向前”的发送方法。图1是现有技术中的一种在软件定义网络SDN中流表发送方法示意图。如图1所示,C表示OpenFlow控制器,S1,S2和S3为3台支持SDN的OpenFlow交换机。假设C为该数据流确定的转发路径为S1→S2→S3,为了建立该路径,C按照“从后向前”的顺序下发流表,假设C处理每个流表下发任务需要耗费1个时间单元,C在时刻0给S3发送流表,在时刻1给S2下发流表,在时刻2给S1下发流表,C与S3之间的链路时延为1个时间单元,C与S2之间的链路时延为5个时间单元,C与S1之间的链路时延为1个时间单元,因此,S3在时刻1接收并建立完流表项,S2在时刻6接收并建立完流表项,S1在时刻3接收并建立完流表项,其中,每个OpenFlow交换机接收到流表项到建立流表项的时间忽略,S1在时刻3将等待的数据流发送给S2,而S2在时刻6才能建立完流表项,因此,数据流无法在S2处得到及时处理。
由上可知,现有技术中流表发送按照从后向前的发送策略,流建立延迟较长,其中,流建立延迟是指第一个数据包发出,到该数据包经过所有的OpenFlow交换机到达终点的时间。
发明内容
本发明实施例提供一种SDN中的流表发送方法及OpenFlow控制器,可以解决数据流在某个交换机处等待建立流表而得不到及时处理的技术问题,降低数据流建立延迟。
第一方面,本发明实施例提供一种SDN中的流表发送方法,所述SDN中包括开放流OpenFlow控制器以及多个用于转发数据流的OpenFlow交换机,所述方法由所述SDN网络中的OpenFlow控制器执行,所述方法包括:根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及所述多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度包括:分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
结合第一方面,第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序包括:按照所述各Flow Mod消息的紧急程度由高到低的顺序确定所述各Flow Mod消息的发送顺序。
结合第一方面,第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,当所述待转发的数据流为至少两条数据流时,所述根据计算的各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序,包括:根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序。
结合第一方面的第三种可能的实现方式,在第一方面第四种可能的实现方式中,所述根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,包括:将所述至少两条数据流的Flow Mod消息排列成第一队列,其中,在所述第一队列中,所述各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的所述各Flow Mod消息的优先级相同;创建初始全局调度队列,所述初始全局调度队列为空队列;将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。
结合第一方面的第四种可能的实现方式,在第一方面第五种可能的实现方式中,所述将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列包括:
对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:遍历所述初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于所述第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,其中,所述第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
结合第一方面的第五种可能的实现方式,在第一方面第六种可能的实现方式中,所述更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值包括:
若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值,其中,所述第二FlowMod消息与所述第一Flow Mod消息属于同一个数据流,且所述第二Flow Mod消息为所述第一Flow Mod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
第二方面,本发明实施例还提供一种开放流OpenFlow控制器,包括:计算模块,用于根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;处理模块,用于根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;发送模块,用于根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。
结合第二方面,在第二方面的第一种可能的实现方式中,所述计算模块具体用于分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
结合第二方面,第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理模块具体用于按照所述各Flow Mod消息的紧急程度由高到低的顺序确定所述各Flow Mod消息的发送顺序。
结合第二方面,第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,当所述待转发的数据流为至少两条数据流时,所述处理模块具体用于根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述处理模块具体用于将所述至少两条数据流的Flow Mod消息排列成第一队列,其中,在所述第一队列中,所述各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的所述各Flow Mod消息的优先级相同;创建初始全局调度队列,所述初始全局调度队列为空队列;将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述处理模块具体用于:
对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:遍历所述初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于所述第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,其中,所述第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述处理模块具体用于:
若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值,其中,所述第二FlowMod消息与所述第一Flow Mod消息属于同一个数据流,且所述第二Flow Mod消息为所述第一Flow Mod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
本发明实施例提供的一种SDN中的流表发送方法及Open Flow控制器,通过OpenFlow控制器与各Open Flow交换机之间的链路时延以及多个Open Flow交换机之间的链路时延,分别计算待向各Open Flow交换机发送的Flow Mod消息的紧急程度,根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序,根据确定的各Flow Mod消息的发送顺序,分别向多个OpenFlow交换机发送Flow Mod消息,从而解决了数据流在某个交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流建立延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例的附图。
图1为现有技术中的一种在软件定义网络SDN中流表发送方法的示意图;
图2为本发明实施例提供的一种SDN中的流表发送方法的流程图;
图3为本发明实施例提供的又一种SDN中的流表发送方法中的全局调度队列获取方法的流程图;
图4为本发明实施例提供的又一种SDN中的流表发送方法中的全局调度队列获取方法的流程图;
图5为本发明实施例提供的又一种SDN流表发送方法示意图;
图6为本发明实施例提供的一种SDN中的OpenFlow控制器的结构示意图;
图7为本发明实施例提供的又一种SDN中的OpenFlow控制器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明实施例提供的方法应用于软件定义网络(Software Defined Networking,SDN)中,其典型代表是OpenFlow网络,该网络包括OpenFlow控制器和OpenFlow交换机,OpenFlow交换机主要由流表,安全通道以及OpenFlow协议三部分组成。OpenFlow控制器的作用就是对网络中的数据包进行路由选择,并且将流表下发到路径上的OpenFlow交换机。其中,一个OpenFlow交换机可以包含一个或多个流表,流表由多个流表项组成,每个流表项就是一个转发规则。流表的维护是通过OpenFlow控制器下发相应的OpenFlow消息来实现,本发明实施例中以Flow Mod消息为例,Flow Mod消息为OpenFlow消息的一种消息类型,由OpenFlow控制器下发给OpenFlow交换机,Flow Mod消息用于向OpenFlow交换机发送流表项。
在SDN网络中,当数据流的数据包到达OpenFlow交换机时,OpenFlow交换机将其以一种packet-in的形式转发给OpenFlow控制器,OpenFlow控制器根据其所包含的信息,为该数据流选择合适的传输路径,并将流表下发到路径上的各OpenFlow交换机。其中,packet-in消息是OpenFlow协议中的一种消息类型,用于OpenFlow交换机将packet以及产生这个消息的原因发送给OpenFlow控制器。在本发明实施例中,消息产生的原因是流表缺失。
图2为本发明实施例提供的一种SDN中的流表发送方法的流程图。如图2所示,软件定义网络SDN中包括开放流OpenFlow控制器以及多个用于转发数据流的OpenFlow交换机,所述方法由所述SDN网络中的OpenFlow控制器执行。本实施例的方法可以包括:
步骤101:根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项。
本步骤中,OpenFlow控制器收到某个数据流的packet-in消息后,为该数据流选择合适的传输路径,并将流表下发到路径上的各OpenFlow交换机,具体的,本实施例将流修改Flow Mod消息下发到路径上的各OpenFlow交换机,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项。本步骤中按照Flow Mod消息的紧急程度发送FlowMod消息,具体获取Flow Mod消息的紧急程度的方法为,根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,该紧急程度可以自己定义。其中,OpenFlow控制器与各OpenFlow交换机之间的链路时延以及多个OpenFlow交换机之间的链路时延由SDN网络决定。
步骤102:根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序。
本步骤中,根据上一步计算的各个Flow Mod消息的紧急程度,确定各Flow Mod消息的发送顺序。默认的按照先发送紧急程度高的Flow Mod消息。
步骤103:根据确定的各Flow Mod消息的发送顺序,分别向多个OpenFlow交换机发送Flow Mod消息。
在本步骤中,OpenFlow控制器根据上一步确定的各Flow Mod消息的发送顺序分别向多个OpenFlow交换机发送Flow Mod消息。
本实施例的SDN中的流表发送方法,通过根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,根据计算的Flow Mod消息的紧急程度发送Flow Mod消息,从而有效解决了数据流在路径上的某个OpenFlow交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流的建立延迟。
进一步地,所述根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及所述多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度包括:分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
上述各Flow Mod消息的紧急程度的定义如下:E(emergency)=数据流到达OpenFlow交换机的预期时间-数据流的Flow Mod消息通路延迟。例如,数据流到达OpenFlow交换机的预期时间是3个时间单位后,而数据流的Flow Mod消息通路延迟为1个时间单位,那么该消息的紧急程度为2,即其必须在2个时间单位内发出,才能保证数据流的顺利通过。其中“数据流到达OpenFlow交换机的预期时间”是从OpenFlow控制器完成路由计算开始,按照“从前到后”的顺序建立路由,并假设路径上所有OpenFlow交换机都不发生table miss的情况。例如,如图1所示,OpenFlow控制器计算完成路径后,首先给S1下发Flow Mod消息。那么,数据流预期到达S2的时间即为2(dc1+d12)。又因为dc2=5,所以其紧急程度为-3。
下面我们使用数学的方式给紧急程度作更严格的定义:
1、如果当前OpenFlow交换机为路径上的第一个OpenFlow交换机,则E=0。
2、否则,假设当前OpenFlow交换机为α,上一跳OpenFlow交换机为β,那么当前OpenFlow交换机的紧急程度E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα。其中E(β)+dcβ表示数据流到达β的最早时间,Max[E(β)+dcβ,dcβ]表示OpenFlow交换机β开始转发数据流的最早时间。
进一步地,当所述待转发的数据流为一条数据流时,所述根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序,包括:按照所述各Flow Mod消息的紧急程度由高到低的顺序确定各Flow Mod消息的发送顺序。
具体的,若当前SDN网络中存在一条待转发的数据流时,根据计算得到的各FlowMod消息的紧急程度,对各Flow Mod消息按照紧急程度从高到低进行排序,排序结果确定为Flow Mod消息的发送顺序。
进一步地,当所述待转发的数据流为至少两条数据流时,根据所述各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序,包括:根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序。
具体的,当存在多条数据流时,根据各Flow Mod消息所在数据流的优先级和各Flow Mod消息的紧急程度,获取全局调度队列中,该全局调度队列确定了各Flow Mod消息的发送顺序,全局调度队列用来存储Flow Mod消息的队列,此处可以为循环队列,使队列空间能重复使用。
本实施例的SDN中的流表发送方法,根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,根据全局调度队列中各Flow Mod消息的顺序发送Flow Mod消息,从而可以在不影响高优先级数据流的情况下可以将低优先级数据流尽早发送出去,并有效降低数据流的建立延迟。
图3为本发明实施例提供的又一种SDN中的流表发送方法中的全局调度队列获取方法流程图,如图3所示,上述根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列包括:
步骤201:将至少两条数据流的Flow Mod消息排列成第一队列,其中,在第一队列中,各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的各Flow Mod消息的优先级相同;
步骤202:创建初始全局调度队列,初始全局调度队列为空队列;
在本步骤中,创建全局调度队列可以采用数组实现,也可以采用链表实现,此处不做限制,创建完成后,初始化队列为空,以便于执行插入Flow Mod消息操作。
步骤203:将第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入初始全局调度队列以获得全局调度队列。
本实施例的SDN中的流表发送方法,通过创建并获取用于确定Flow Mod消息发送顺序的全局调度队列,从而可以在不影响高优先级数据流的情况下可以将低优先级数据流尽早发送出去,并有效降低流建立延迟。
图4为本发明实施例提供的又一种SDN中的流表发送方法中的全局调度队列获取方法流程图。实际应用中,在图3中的步骤203中,OpenFlow控制器在获取至少两条数据流的多个Flow Mod消息的发送顺序的过程中可以采用如图4所示的方法。具体的,OpenFlow控制器可以对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:
步骤301:遍历初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,其中,第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;
步骤302:更新插入第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
本实施例的SDN中的流表发送方法,通过将Flow Mod消息依次分别插入初始全局调度队列来获得所述全局调度队列,从而可以在不影响高优先级数据流的情况下可以将低优先级数据流尽早发送出去,并有效降低数据流的建立延迟。
进一步地,上述步骤302中更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值包括:
若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值,其中,所述第二FlowMod消息与所述第一Flow Mod消息属于同一个数据流,且所述第二Flow Mod消息为所述第一Flow Mod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
其中,Flow Mod消息对应的OpenFlow交换机为接收OpenFlow控制器发送的对应Flow Mod消息的OpenFlow交换机,例如图1中Flow Mod1,Flow Mod2,Flow Mod3消息分别对应的OpenFlow交换机为S1,S2,S3。上述的最低值、预设值此处不做限制,可以设定最低值为0,预设值为1。当最低值为0,预设值为1时,具体更新方法如下:
1、若当前插入的Flow Mod消息对应的OpenFlow交换机为路径上的第一个OpenFlow交换机,那么该Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为0。
2、否则,当Flow Mod遇到自身数据流的第一个Flow Mod消息开始,每向后移动一个位置,紧急程度值减1。
3、对于插入新Flow Mod消息导致的所有向后移动的Flow Mod消息,其紧急程度值减1。
图5为本发明实施例提供的又一种SDN流表发送方法示意图,图5以三条数据流为例进行说明。具体过程如下:
网络中存在三条数据流:Fa,Fb,Fc。其中Fa的优先级高于Fb,Fb的优先级高于Fc。OpenFlow控制器同时收到这三条数据流的packet in消息,并为每条数据流确定了路由路径。对于Fa,路径为S1→S2→S3,Flow Mod消息为Flow Mod1,Flow Mod2,Flow Mod3。对于Fb,路径为S4→S5→S6,Flow Mod消息为Flow Mod4,Flow Mod5,Flow Mod6。对于Fc,路径为S7→S8→S9,Flow Mod消息为Flow Mod7,Flow Mod8,Flow Mod9。网络状态如图中链路上的标示所示。
1、首先为每个Flow Mod消息计算紧急程度:
对于Flow Mod1,因为OpenFlow交换机S1为路径上的第一个OpenFlow交换机,所以E(Flow Mod1)=0;
对于Flow Mod2,E(Flow Mod2)=dc1+d12-dc2=1+1-5=-3;
对于Flow Mod3,E(Flow Mod3)=Max[(E(Flow Mod2)+dc2),dc2]+d23-dc3=MAX(2,5)+1-1=5;
对于Flow Mod4,因为OpenFlow交换机S4为路径上的第一个OpenFlow交换机,所以E(Flow Mod4)=0;
对于Flow Mod5,E(Flow Mod5)=dc4+d45-dc5=10+1-2=9;
对于Flow Mod6,E(Flow Mod6)=Max[(E(Flow Mod5)+dc5),dc5]+d56-dc6=MAX(11,2)+4-1=14;
对于Flow Mod7,因为OpenFlow交换机S7为路径上的第一个OpenFlow交换机,所以E(Flow Mod7)=0;
对于Flow Mod8,E(Flow Mod8)=dc7+d78-dc8=1+2-5=-2;
对于Flow Mod9,E(Flow Mod9)=Max[(E(Flow Mod8)+dc8),dc8]+d89-dc9=MAX(3,5)+3-10=-2。
2、针对每个数据流,对Flow Mod消息排序:
对于Fa,Flow Mod2→Flow Mod1→Flow Mod3;
对于Fb,Flow Mod4→Flow Mod5→Flow Mod6;
对于Fc,Flow Mod9→Flow Mod8→Flow Mod7;
3、将Flow Mod消息插入全局调度队列:
首先插入Flow Mod2(-3),括号内为该消息当前的紧急程度值,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低。因为,在插入Flow Mod2之前,全局队列为空,所以此时创建初始全局调度队列;
插入Flow Mod1:遍历初始全局调度队列,找到第一个紧急程度值大于其自身紧急程度值的消息,并将Flow Mod1插入该消息之前。因为当前队列中所有消息(只有FlowMod2)的紧急程度值都不大于Flow Mod1的紧急程度值0,所以Flow Mod1被插入队尾。当前队列为Flow Mod2→Flow Mod1;
更新队列中消息的紧急程度值。因为Flow Mod1对应的OpenFlow交换机为路径上的第一OpenFlow交换机,所以Flow Mod1之前的所有消息将紧急程度值更新为0,即FlowMod2的紧急程度值更新为0。此时,队列为Flow Mod2(0)→Flow Mod1(0);
插入Flow Mod3:同样Flow Mod3被插入队尾。因为Flow Mod3不是头OpenFlow交换机的消息,所以其在找到自身数据流的第一消息(Flow Mod2)开始,每向后遍历一个消息,其紧急程度值减1。所以最终的队列为Flow Mod2(0)→Flow Mod1(0)→Flow Mod3(3);
插入Flow Mod4:找到第一个紧急程度值大于0的消息Flow Mod3,并插入其前方。并且因为Flow Mod3向后移动一位,所以紧急程度值减1。此时队列为Flow Mod2(0)→FlowMod1(0)→Flow Mod4(0)→Flow Mod3(2);
插入Flow Mod5:E(Flow Mod5)初始值为9,遍历到Flow Mod4时,更新为8;因为仍然大于Flow Mod3的紧急程度值,所以继续后移,并更新为7。此时队列为Flow Mod2(0)→Flow Mod1(0)→Flow Mod4(0)→Flow Mod3(2)→Flow Mod5(7);
插入Flow Mod6:原理同上,最终队列为Flow Mod2(0)→Flow Mod1(0)→FlowMod4(0)→Flow Mod3(2)→Flow Mod5(7)→Flow Mod6(11);
插入Flow Mod9:原理同上,最终队列为Flow Mod2(0)→Flow Mod1(0)→FlowMod4(0)→Flow Mod9(-2)→Flow Mod3(1)→Flow Mod5(6)→Flow Mod6(10);
插入Flow Mod8:原理同上,最终队列为Flow Mod2(0)→Flow Mod1(0)→FlowMod4(0)→Flow Mod9(-2)→Flow Mod8(-3)→Flow Mod3(0)→Flow Mod5(5)→Flow Mod6(9);
插入Flow Mod7:原理同上,最终队列为Flow Mod2(0)→Flow Mod1(0)→FlowMod4(0)→Flow Mod9(0)→Flow Mod8(0)→Flow Mod3(0)→Flow Mod7(0)→Flow Mod5(4)→Flow Mod6(8);
按照上述全局调度队列发送Flow Mod消息,最终每个数据流的建立时间为:Fa:6,Fb:17,Fc:13。如果按照现有方案从后到前发送Flow Mod消息的顺序来操作,那么每个数据流的建立时间为:Fa:7,Fb:20,Fc:16。
本实施例的流表发送方法,通过基于Flow Mod消息的优先级和紧急程度的两级调度机制,以及Flow Mod消息插入全局调度队列的方法和执行插入步骤后更新每个Flow Mod消息紧急程度的方法,流的建立时间可以获得显著优化。当流的数据增多后,优化的效果将会更明显。
图6为本发明实施例提供的一种SDN中的OpenFlow控制器的结构示意图。如图6所示,该OpenFlow控制器包括:
计算模块11,用于根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;
处理模块12,用于根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;
发送模块13,用于根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。
本实施例的OpenFlow控制器,计算模块根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,处理模块根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序,发送模块根据确定的Flow Mod消息的发送顺序发送FlowMod消息,从而解决了数据流在某个OpenFlow交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流建立延迟。
可选地,所述计算模块具体用于分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
进一步地,所述处理模块具体用于按照所述各Flow Mod消息的紧急程度由高到低的顺序确定所述各Flow Mod消息的发送顺序。
进一步地,当所述待转发的数据流为至少两条数据流时,所述处理模块具体用于根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序。
进一步地,所述处理模块具体用于将所述至少两条数据流的Flow Mod消息排列成第一队列,其中,在所述第一队列中,所述各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的所述各Flow Mod消息的优先级相同;
创建初始全局调度队列,所述初始全局调度队列为空队列;
将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。
本实施例提供的OpenFlow控制器,可以用于执行上述本发明提供的方法实施例,其实现原理和技术效果类似,此处不再赘述。
进一步地,所述处理模块具体用于对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:
遍历所述初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于所述第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,其中,所述第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;
更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
本实施例提供的OpenFlow控制器,可以用于执行前述本发明实施例提供的SDN中的流表发送方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,所述处理模块具体用于若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有FlowMod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,其中,所述第二Flow Mod消息与所述第一Flow Mod消息属于同一个数据流,并将所述初始全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值,且所述第二Flow Mod消息为所述第一Flow Mod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
图7为本发明实施例提供的又一种SDN中的OpenFlow控制器的结构示意图,所述SDN中的OpenFlow控制器1400包括通信接口1401、存储器1403和处理器1402,其中,通信接口1401、处理器1402、存储器1403、通过总线1404相互连接;总线1404可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述通信接口1401用于与OpenFlow交换机通信。
存储器1403,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1403可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1402,用于执行存储器1403所存放的程序,实现本发明前述方法实施例的方法:
包括:
所述SDN中包括开放流OpenFlow控制器以及多个用于转发数据流的OpenFlow交换机,所述方法由所述SDN网络中的OpenFlow控制器执行,所述方法包括:根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及所述多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。、
上述的处理器1402可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本实施例的OpenFlow控制器,计算模块根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,处理模块根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序,发送模块根据确定的Flow Mod消息的发送顺序发送FlowMod消息,从而解决了数据流在某个OpenFlow交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流建立延迟。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求书以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (14)
1.一种软件定义网络SDN中的流表发送方法,其特征在于,所述SDN中包括开放流OpenFlow控制器以及多个用于转发数据流的OpenFlow交换机,所述方法由所述SDN网络中的OpenFlow控制器执行,所述方法包括:
根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;所述OpenFlow交换机对应的Flow Mod消息的紧急程度为所述数据流到达所述OpenFlow交换机的预期时间与所述数据流的Flow Mod消息通路延迟的差;
根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;
根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度包括:
分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
3.根据权利要求1或2所述的方法,其特征在于,所述根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序包括:
按照所述各Flow Mod消息的紧急程度由高到低的顺序确定所述各Flow Mod消息的发送顺序。
4.根据权利要求1或2所述的方法,其特征在于,当待转发的数据流为至少两条数据流时,所述根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序,包括:
根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序;其中,属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列。
5.根据权利要求4所述的方法,其特征在于,所述根据计算的至少两条数据流的各FlowMod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,包括:
将所述至少两条数据流的Flow Mod消息排列成第一队列,其中,在所述第一队列中,所述各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的FlowMod消息的优先级相同;
创建初始全局调度队列,所述初始全局调度队列为空队列;
将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列包括:
对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:
遍历所述初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于所述第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,所述第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;
更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
7.根据权利要求6所述的方法,其特征在于,所述更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值包括:
若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一FlowMod消息之后的所有Flow Mod消息的紧急程度值降低预设值,其中,所述第二Flow Mod消息与所述第一Flow Mod消息属于同一个数据流,且所述第二Flow Mod消息为所述第一FlowMod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
8.一种开放流OpenFlow控制器,其特征在于,包括:
计算模块,用于根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度,其中,Flow Mod消息有多个,Flow Mod消息用于向OpenFlow交换机发送流表项;所述OpenFlow交换机对应的Flow Mod消息的紧急程度为数据流到达所述OpenFlow交换机的预期时间与所述数据流的Flow Mod消息通路延迟的差;
处理模块,用于根据各Flow Mod消息的紧急程度确定所述各Flow Mod消息的发送顺序;
发送模块,用于根据确定的所述各Flow Mod消息的发送顺序,分别向所述多个OpenFlow交换机发送Flow Mod消息。
9.根据权利要求8所述的OpenFlow控制器,其特征在于,所述计算模块具体用于:
分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的Flow Mod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的Flow Mod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的Flow Mod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。
10.根据权利要求8或9所述的OpenFlow控制器,其特征在于,所述处理模块具体用于按照所述各Flow Mod消息的紧急程度由高到低的顺序确定所述各Flow Mod消息的发送顺序。
11.根据权利要求8或9所述的OpenFlow控制器,其特征在于,当待转发的数据流为至少两条数据流时,所述处理模块具体用于:
根据计算的至少两条数据流的各Flow Mod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各Flow Mod消息的发送顺序;其中,属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列。
12.根据权利要求11所述的OpenFlow控制器,其特征在于,所述处理模块具体用于:
将所述至少两条数据流的Flow Mod消息排列成第一队列,其中,在所述第一队列中,所述各Flow Mod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的Flow Mod消息按照紧急程度从高到低的顺序排列,同一个数据流中的所述各Flow Mod消息的优先级相同;
创建初始全局调度队列,所述初始全局调度队列为空队列;
将所述第一队列中的所述至少两条数据流的Flow Mod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。
13.根据权利要求12所述的OpenFlow控制器,其特征在于,所述处理模块具体用于:
对所述第一队列中的每一个Flow Mod消息分别执行如下操作直到将所述第一队列中的所有Flow Mod消息依次插入所述初始全局调度队列为止:
遍历所述初始全局调度队列,将第一Flow Mod消息插入第一个紧急程度值大于所述第一Flow Mod消息的紧急程度值的Flow Mod消息之前,其中,Flow Mod消息的紧急程度值越大该Flow Mod消息的紧急程度越低,其中,所述第一Flow Mod消息为所述第一队列中的任意一个Flow Mod消息;
更新插入所述第一Flow Mod消息后的初始全局调度队列中的Flow Mod消息的紧急程度值。
14.根据权利要求13所述的OpenFlow控制器,其特征在于,所述处理模块具体用于:
若所述第一Flow Mod消息对应的OpenFlow交换机为所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一Flow Mod消息之前的所有Flow Mod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一Flow Mod消息之后的所有Flow Mod消息的紧急程度值降低预设值;或
若所述第一Flow Mod消息对应的OpenFlow交换机不是所述第一Flow Mod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二Flow Mod消息与所述第一Flow Mod消息之间的所有数据流的Flow Mod消息的个数降低所述第一Flow Mod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一FlowMod消息之后的所有Flow Mod消息的紧急程度值降低预设值,其中,所述第二Flow Mod消息与所述第一Flow Mod消息属于同一个数据流,且所述第二Flow Mod消息为所述第一FlowMod消息所属的数据流中已插入所述初始全局调度队列中的第一个Flow Mod消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405986.5A CN106330772B (zh) | 2015-07-10 | 2015-07-10 | SDN中的流表发送方法及OpenFlow控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405986.5A CN106330772B (zh) | 2015-07-10 | 2015-07-10 | SDN中的流表发送方法及OpenFlow控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106330772A CN106330772A (zh) | 2017-01-11 |
CN106330772B true CN106330772B (zh) | 2019-09-13 |
Family
ID=57725430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510405986.5A Active CN106330772B (zh) | 2015-07-10 | 2015-07-10 | SDN中的流表发送方法及OpenFlow控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106330772B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107070810A (zh) * | 2017-02-27 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种数据传输方法、装置及系统 |
CN109768931B (zh) * | 2017-11-09 | 2020-10-13 | 中国移动通信集团公司 | 处理数据包的方法、交换机、装置及计算机可读存储介质 |
CN111327485A (zh) * | 2018-12-14 | 2020-06-23 | 中兴通讯股份有限公司 | 一种流表监测器管理方法、装置、网络设备及网络系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103618679A (zh) * | 2013-11-25 | 2014-03-05 | 上海华为技术有限公司 | 服务质量控制方法、装置和系统 |
CN103888313A (zh) * | 2014-03-11 | 2014-06-25 | 浙江大学 | 一种预测流表项的最优超时时间的方法 |
CN103905577A (zh) * | 2012-12-28 | 2014-07-02 | 中兴通讯股份有限公司 | 一种地址解析协议报文的处理方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9571384B2 (en) * | 2013-08-30 | 2017-02-14 | Futurewei Technologies, Inc. | Dynamic priority queue mapping for QoS routing in software defined networks |
-
2015
- 2015-07-10 CN CN201510405986.5A patent/CN106330772B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103905577A (zh) * | 2012-12-28 | 2014-07-02 | 中兴通讯股份有限公司 | 一种地址解析协议报文的处理方法和系统 |
CN103618679A (zh) * | 2013-11-25 | 2014-03-05 | 上海华为技术有限公司 | 服务质量控制方法、装置和系统 |
CN103888313A (zh) * | 2014-03-11 | 2014-06-25 | 浙江大学 | 一种预测流表项的最优超时时间的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106330772A (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106664261B (zh) | 一种配置流表项的方法、装置和系统 | |
EP3016323B1 (en) | Service transmission path determination method, device and system | |
CN107959636B (zh) | Bgp消息的发送方法及装置 | |
TWI658714B (zh) | 產生具有有限拓撲資訊之資料流 | |
EP3238386B1 (en) | Apparatus and method for routing data in a switch | |
CN106330772B (zh) | SDN中的流表发送方法及OpenFlow控制器 | |
CN104468353A (zh) | 基于sdn的数据中心网络流量管理方法 | |
CN104486246A (zh) | 一种基于SDN架构的VXLAN的QoS机制实现方法 | |
CN104394083A (zh) | 转发表项处理的方法、报文转发的方法及其装置和系统 | |
CN105589748A (zh) | 一种业务请求处理方法及装置 | |
CN104144094A (zh) | 用于操作数字总线系统从属节点的方法 | |
CN106209559B (zh) | 一种建立组播隧道的方法和装置 | |
US20230084470A1 (en) | Method and apparatus for controlling network traffic path | |
JP2016506090A (ja) | メッシュ通信ネットワークにおいて資源を割り当てる方法、コンピュータプログラム、情報記憶手段およびノード装置 | |
CN103701721B (zh) | 报文传输方法及装置 | |
CN105553753A (zh) | 一种固定时间片协同流控的片上环网防饥饿处理方法 | |
EP3094054B1 (en) | Method and controller for notifying bandwidth of cluster system | |
US20180375801A1 (en) | Apparatus and method for distribution of congestion information in a switch | |
CN103955445B (zh) | 一种数据处理方法、处理器及数据处理设备 | |
CN110161893A (zh) | 从机装置、控制系统、响应数据的通信方法以及存储介质 | |
JP6377708B2 (ja) | スレーブデバイスの制御方法 | |
CN104954261A (zh) | 利用流表转发数据的方法及系统 | |
CN109862044A (zh) | 一种转换装置、网络设备及数据传输方法 | |
CN103873386A (zh) | 管理网络传输顺序的方法 | |
CN110493141A (zh) | 一种路由转发传输控制方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |