SDN中的流表发送方法及OpenFlow控制器技术

技术编号:14411756 阅读:78 留言:0更新日期:2017-01-11 23:43
本发明专利技术提供一种SDN中的流表发送方法及OpenFlow控制器,根据OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向各OpenFlow交换机发送的流修改Flow Mod消息的紧急程度;根据各Flow Mod消息的紧急程度确定各Flow Mod消息的发送顺序;根据确定的各Flow Mod消息的发送顺序,分别向多个OpenFlow交换机发送Flow Mod消息,从而有效解决了数据流在某个交换机处等待建立流表而得不到及时处理的技术问题,降低了数据流的建立延迟。

【技术实现步骤摘要】

本专利技术实施例涉及网络技术,尤其涉及一种SDN中的流表发送方法及OpenFlow控制器
技术介绍
软件定义网络(SoftwareDefinedNetworking,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交换机发送的流修改FlowMod消息的紧急程度,其中,FlowMod消息有多个,FlowMod消息用于向OpenFlow交换机发送流表项;根据各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序;根据确定的所述各FlowMod消息的发送顺序,分别向所述多个OpenFlow交换机发送FlowMod消息。结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及所述多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的FlowMod消息的紧急程度包括:分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的FlowMod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的FlowMod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的FlowMod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。结合第一方面,第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序包括:按照所述各FlowMod消息的紧急程度由高到低的顺序确定所述各FlowMod消息的发送顺序。结合第一方面,第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,当所述待转发的数据流为至少两条数据流时,所述根据计算的各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序,包括:根据计算的至少两条数据流的各FlowMod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各FlowMod消息的发送顺序。结合第一方面的第三种可能的实现方式,在第一方面第四种可能的实现方式中,所述根据计算的至少两条数据流的各FlowMod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,包括:将所述至少两条数据流的FlowMod消息排列成第一队列,其中,在所述第一队列中,所述各FlowMod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的FlowMod消息按照紧急程度从高到低的顺序排列,同一个数据流中的所述各FlowMod消息的优先级相同;创建初始全局调度队列,所述初始全局调度队列为空队列;将所述第一队列中的所述至少两条数据流的FlowMod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。结合第一方面的第四种可能的实现方式,在第一方面第五种可能的实现方式中,所述将所述第一队列中的所述至少两条数据流的FlowMod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列包括:对所述第一队列中的每一个FlowMod消息分别执行如下操作直到将所述第一队列中的所有FlowMod消息依次插入所述初始全局调度队列为止:遍历所述初始全局调度队列,将第一FlowMod消息插入第一个紧急程度值大于所述第一FlowMod消息的紧急程度值的FlowMod消息之前,其中,FlowMod消息的紧急程度值越大该FlowMod消息的紧急程度越低,其中,所述第一FlowMod消息为所述第一队列中的任意一个FlowMod消息;更新插入所述第一FlowMod消息后的初始全局调度队列中的FlowMod消息的紧急程度值。结合第一方面的第五种可能的实现方式,在第一方面第六种可能的实现方式中,所述更新插入所述第一FlowMod消息后的初始全局调度队列中的FlowMod消息的紧急程度值包括:若所述第一FlowMod消息对应的OpenFlow交换机为所述第一FlowMod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一FlowMod消息之前的所有FlowMod消息的紧急程度值更新为本文档来自技高网
...
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消息。

【技术特征摘要】
1.一种软件定义网络SDN中的流表发送方法,其特征在于,所述SDN中包括开放流OpenFlow控制器以及多个用于转发数据流的OpenFlow交换机,所述方法由所述SDN网络中的OpenFlow控制器执行,所述方法包括:根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的流修改FlowMod消息的紧急程度,其中,FlowMod消息有多个,FlowMod消息用于向OpenFlow交换机发送流表项;根据各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序;根据确定的所述各FlowMod消息的发送顺序,分别向所述多个OpenFlow交换机发送FlowMod消息。2.根据权利要求1所述的方法,其特征在于,所述根据所述OpenFlow控制器与各OpenFlow交换机之间的链路时延,以及多个OpenFlow交换机之间的链路时延,分别计算待向所述各OpenFlow交换机发送的FlowMod消息的紧急程度包括:分别根据E(α)=Max[(E(β)+dcβ),dcβ]+dβα-dcα计算获得待向所述各OpenFlow交换机发送的FlowMod消息的紧急程度,其中,E(α)用于表示向OpenFlow交换机α发送的FlowMod消息紧急程度,E(β)用于表示向OpenFlow交换机α的上一跳OpenFlow交换机β发送的FlowMod消息的紧急程度,dcβ用于表示所述OpenFlow控制器与所述OpenFlow交换机β的链路时延,dβα用于表示所述OpenFlow交换机β到所述OpenFlow交换机α的链路时延,dcα用于表示所述OpenFlow控制器与所述OpenFlow交换机α的链路时延,E(β)+dcβ用于表示所述数据流从第一个OpenFlow交换机开始到达所述OpenFlow交换机β的最早时间,Max[E(β)+dcβ,dcβ]用于表示所述OpenFlow交换机β开始转发所述数据流的最早时间。3.根据权利要求1或2所述的方法,其特征在于,所述根据各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序包括:按照所述各FlowMod消息的紧急程度由高到低的顺序确定所述各FlowMod消息的发送顺序。4.根据权利要求1或2所述的方法,其特征在于,当所述待转发的数据流为至少两条数据流时,所述根据各FlowMod消息的紧急程度确定所述各FlowMod消息的发送顺序,包括:根据计算的至少两条数据流的各FlowMod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,所述全局调度队列用于确定所述各FlowMod消息的发送顺序。5.根据权利要求4所述的方法,其特征在于,所述根据计算的至少两条数据流的各FlowMod消息的紧急程度以及所述至少两条数据流的优先级获取全局调度队列,包括:将所述至少两条数据流的FlowMod消息排列成第一队列,其中,在所述第一队列中,所述各FlowMod消息按照其所属的数据流的优先级从高到低的顺序排列,且属于同一优先级的数据流中的FlowMod消息按照紧急程度从高到低的顺序排列,同一个数据流中的FlowMod消息的优先级相同;创建初始全局调度队列,所述初始全局调度队列为空队列;将所述第一队列中的所述至少两条数据流的FlowMod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列。6.根据权利要求5所述的方法,其特征在于,所述将所述第一队列中的所述至少两条数据流的FlowMod消息依次分别插入所述初始全局调度队列以获得所述全局调度队列包括:对所述第一队列中的每一个FlowMod消息分别执行如下操作直到将所述第一队列中的所有FlowMod消息依次插入所述初始全局调度队列为止:遍历所述初始全局调度队列,将第一FlowMod消息插入第一个紧急程度值大于所述第一FlowMod消息的紧急程度值的FlowMod消息之前,其中,FlowMod消息的紧急程度值越大该FlowMod消息的紧急程度越低,所述第一FlowMod消息为所述第一队列中的任意一个FlowMod消息;更新插入所述第一FlowMod消息后的初始全局调度队列中的FlowMod消息的紧急程度值。7.根据权利要求6所述的方法,其特征在于,所述更新插入所述第一FlowMod消息后的初始全局调度队列中的FlowMod消息的紧急程度值包括:若所述第一FlowMod消息对应的OpenFlow交换机为所述第一FlowMod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则将所述初始全局调度队列中排在所述第一FlowMod消息之前的所有FlowMod消息的紧急程度值更新为最低值,并将所述全局调度队列中位于所述第一FlowMod消息之后的所有FlowMod消息的紧急程度值降低预设值;或若所述第一FlowMod消息对应的OpenFlow交换机不是所述第一FlowMod消息所属的数据流的转发路径上的第一个OpenFlow交换机,则根据所述初始全局调度队列中已插入的第二FlowMod消息与所述第一FlowMod消息之间的所有数据流的FlowMod消息的个数降低所述第一FlowMod消息的紧急程度值,并将所述初始全局调度队列中位于所述第一F...

【专利技术属性】
技术研发人员:付斌章陈明宇
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1