CN104601470A - 一种流表处理方法及装置 - Google Patents

一种流表处理方法及装置 Download PDF

Info

Publication number
CN104601470A
CN104601470A CN201510029888.6A CN201510029888A CN104601470A CN 104601470 A CN104601470 A CN 104601470A CN 201510029888 A CN201510029888 A CN 201510029888A CN 104601470 A CN104601470 A CN 104601470A
Authority
CN
China
Prior art keywords
stream table
table information
message
network equipment
information
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.)
Granted
Application number
CN201510029888.6A
Other languages
English (en)
Other versions
CN104601470B (zh
Inventor
缪琛
高宇
宋建永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201510029888.6A priority Critical patent/CN104601470B/zh
Publication of CN104601470A publication Critical patent/CN104601470A/zh
Application granted granted Critical
Publication of CN104601470B publication Critical patent/CN104601470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种流表处理方法及装置,方法包括:在控制器与网络设备之间的连接由断开到恢复时,所述网络设备接收控制器下发的开始流表信息平滑的通知消息;在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;所述网络设备将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。

Description

一种流表处理方法及装置
技术领域
本发明涉及软件定义网络技术领域,尤其涉及一种流表处理方法及装置。
背景技术
在软件定义网络(SDN,Software Defined Network)架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中抽象出来。由此,企业和运营商获对网络前所未有的可编程性,自动化和控制能力,使他们很容易适应变化的业务需求,建立高度可扩展的弹性网络。
开放流(OpenFlow)是SDN架构中定义的控制器与转发层之间的通信接口标准,OpenFlow的思想是分离控制平面和数据平面,二者之间使用标准的协议通信,数据平面采用基于流的方式进行转发。OpenFlow允许直接访问和操作网络设备的转发平面,这些网络设备可能是物理上的,也可能是虚拟的路由器或者交换机。如图1所示,OpenFlow网络由OpenFlow网络设备(OpenFlow Switch)、OpenFlow控制器(OpenFlow Controller)、安全通道(Secure Channel)组成,SecureChannel是指OpenFlow Controller与OpenFlow Switch之间的通道。
在实际使用中,Openflow Controller会根据新的数据报文信息或者用户配置信息下发流表到指定OpenFlow Switch上,OpenFlow Switch根据流表信息转发数据报文。Controller与Switch建立传输控制协议(TCP,Transmission ControlProtocol)连接,利用TCP连接管理流表信息。然而,TCP连接会因为Controller与Switch之间的网络异常(例如端口DOWN等)而导致TCP连接中断。由于TCP连接中断的时机存在不确定因素,这就导致了Controller上的流表信息与Switch上的流表信息可能存在不一致,造成Openflow网路流量不可控制,影响当前网路流量的已有转发。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种流表处理方法及装置。
为实现本发明的发明目的,基于本发明实施例,提出一种流表处理方法,所述方法包括:
在控制器与网络设备之间的连接由断开到恢复时,所述网络设备接收控制器下发的开始流表信息平滑的通知消息;
在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;
所述网络设备将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
所述方法进一步包括:
在收到所述开始流表信息平滑的通知消息后,所述网络设备将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息的状态标记为平滑中;
相应的,所述将网络设备中已存在的、且与控制器所下发的不一致的流表信息从网络设备中删除,包括:
将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在收到所述控制器下发的结束流表信息平滑的通知消息时,遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
进一步地,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束。
进一步地,所述控制器下发的流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息;
所述方法还包括:所述网络设备接收的开始流表信息平滑的通知消息中携带单个流表信息标识时,所述网络设备不对所接收的流表信息中的group和meter信息做处理;所述网络设备接收的开始流表信息平滑的通知消息中携带多个流表信息标识时,所述网络设备对所接收的流表信息中的group和meter信息做处理。
为实现本发明的发明目的,基于本发明实施例,提出一种流表处理方法,所述方法包括:
在控制器与网络设备之间的连接由断开到恢复时,所述控制器向网络设备下发开始流表信息平滑的通知消息;
在下发开始流表信息平滑的通知消息后,所述控制器向网络设备下发流表信息,用于所述网络设备本地的流表更新;
在下发完流表信息后,所述控制器向所述网络设备下发结束流表信息平滑的通知消息。
进一步地,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;
所述流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息。
为实现本发明的发明目的,基于本发明实施例,提出一种流表处理装置,应用于网络设备中,其特征在于,所述装置包括:
消息接收单元,用于在控制器与网络设备之间的连接由断开到恢复时,接收控制器下发的开始流表信息平滑的通知消息;
流表信息接收单元,用于在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;
流表信息维护单元,用于将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
进一步地,所述流表信息维护单元进一步用于,在所述消息接收单元收到所述开始流表信息平滑的通知消息后,将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息的状态标记为平滑中;
通过将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在所述消息接收单元收到所述控制器下发的结束流表信息平滑的通知消息时,所述流表信息维护单元遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
进一步地,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束。
进一步地,所述控制器下发的流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息;
所述流表信息维护单元进一步用于,在所述消息接收单元接收的开始流表信息平滑的通知消息中携带单个流表信息标识时,所述流表信息维护单元不对所接收的流表信息中的group和meter信息做处理;在所述消息接收单元接收的开始流表信息平滑的通知消息中携带多个流表信息标识时,所述流表信息维护单元对所接收的流表信息中的group和meter信息做处理。
为实现本发明的发明目的,基于本发明实施例,提出一种流表处理装置,应用于控制器中,所述装置包括:
消息通知单元,用于在控制器与网络设备之间的连接由断开到恢复时,向网络设备下发开始流表信息平滑的通知消息;
流表信息下发单元,用于在所述消息通知单元下发开始流表信息平滑的通知消息后,所述流表信息下发单元向网络设备下发流表信息,用于所述网络设备本地的流表更新;
所述消息通知单元还用于,在所述流表信息下发单元下发完流表信息后,所述消息通知单元向所述网络设备下发结束流表信息平滑的通知消息。
进一步地,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;
所述流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息。
本发明实施例提供的一种流表处理方法及装置,在Openflow Controller与OpenFlow Switch连接振荡的情况下,OpenFlow Controller通知OpenFlow Switch进入平滑的流表信息更新过程,Openflow Controller向OpenFlow Switch下发本地保存的所有流表信息,OpenFlow Switch通过与自身维护的流表信息比较,将OpenFlow Switch中已存在的、且与Openflow Controller所下发的不一致的流表信息,从所述OpenFlow Switch中删除。通过本发明实施例,高效及时的保证了在Openflow Controller与OpenFlow Switch连接振荡的情况下,OpenflowController与OpenFlow Switch中的流表信息一致,而且本发明实施例不影响当前网路流量的已有转发,保证了所有流量受Openflow Controller控制。
附图说明
图1为相关技术中OpenFlow网络的架构示意图;
图2为本发明实施例提供的流表处理方法流程图一;
图3为本发明实施例提供的Modify Switch Message消息格式示意图;
图4为本发明实施例提供的流表处理方法流程图二;
图5为本发明实施例提供提供的流表处理方法流程图三;
图6为本发明实施例提供的流表处理装置的组成结构示意图一;
图7为本发明实施例提供的流表处理装置的组成结构示意图二。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
本发明实施例为实现在控制器与网络设备的连接振荡情况下,既保证网络设备与控制器上的流表信息保持一致,又不影响当前网络流量的已有转发,保证所有流量受控制器控制。提出一种平滑的流表处理方法,在连接由断开到恢复时,控制器通知网络设备开始流表信息平滑,并将本地保持的所有流表信息发给网络设备,网络设备通过比较,将网络设备中已存在的、且与控制器所下发的不一致的流表信息删除。
本发明实施例提供的一种流表处理方法,应用于OpenFlow的网络设备中,所述网络设备包括路由器、交换机等,如图2所示,该方法主要包括:
步骤201,在控制器与网络设备之间的连接由断开到恢复时,所述网络设备接收控制器下发的开始流表信息平滑的通知消息。
当控制器与网络设备之间的TCP连接断开后又恢复正常时,控制器能够检测到所述TCP连接的状态变化,从而控制器向网络设备下发开始流表信息平滑的通知消息。
步骤202,在收到所述通知消息后,所述网络设备接收控制器下发的流表信息。
所述控制器下发的流表信息是所述控制器本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息,所述控制器在下发开始流表信息平滑的通知消息后,向网络设备发送其本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息。
步骤203,所述网络设备将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
在一种实施方式中,在收到所述开始流表信息平滑的通知消息后,所述网络设备将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息的状态标记为平滑中;
相应的,所述将网络设备中已存在的、且与控制器所下发的不一致的流表信息从网络设备中删除,包括:
将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在收到所述控制器下发的结束流表信息平滑的通知消息时,遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
其中,所述流表信息至少包括与该网络设备相关的:流表flow entry、组播组group信息和流限速meter信息。
其中,本发明实施例所述的通知消息可以为Modify State Messages消息类型中新增的一条Modify Switch Message消息,消息格式如图3所示,所述ModifySwitch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve;
OFP_HEADER:用于标识消息类型,如Openflow协议中规定的那样,只是其中的TYPE新增一个OFPT_SWITCH_MOD(30),区别于其它的消息类型;
Command:用于标识所要修改的网络设备的信息类型;如果是OFPFC_SMOOTH(1)表示是平滑消息,这个字段为一个byte大小,在开始和结束流表信息平滑的通知消息中,该字段的取值为1;
Table_id:为流表信息标识,表示对当前Switch中那个流表进行操作,如果是OFPTT_ALL,则表示对全部流表操作,这个字段为一个byte大小;Table_id可以是单个流表信息标识,也可以是OFPTT_ALL,并且结束流表信息平滑的通知消息与相应开始流表信息平滑的通知消息中Table_id的取值相同;
Flag:为Command中的子类型,用于标识平滑开始或结束;当Command是OFPSC_SMOOTH时,Flag为OFPSF_SMOOTH_START(1)表示平滑开始,OFPSF_SMOOTH_END(2)表示平滑结束,这个字段为一个byte大小;
Reserve:为保留字段,这个字段为一个byte大小。
需要说明的是,在执行本发明实施例的流表处理方法的过程中,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,从而不影响当前网路流量的已有转发。
本发明实施例提供的另一种流表处理方法,应用于OpenFlow的控制器中,如图4所示,该方法主要包括:
步骤401,在控制器与网络设备之间的连接由断开到恢复时,所述控制器向网络设备下发开始流表信息平滑的通知消息。
当控制器与网络设备之间的TCP连接断开后又恢复正常时,控制器能够检测到所述TCP连接的状态变化,从而控制器向网络设备下发开始流表信息平滑的通知消息。
步骤402,在下发开始流表信息平滑的通知消息后,所述控制器向网络设备下发流表信息,用于所述网络设备本地的流表更新;所述控制器下发的流表信息为所述控制器本地保存的对应所述网络设备的流表信息,可以是单个流表信息,也可以是对应所述网络设备的所有流表信息。
所述控制器在下发开始流表信息平滑的通知消息后,向网络设备发送其本地保存的对应所述网络设备的流表信息;网络设备接收控制器下发的流表信息,用于网络设备本地的流表更新。
步骤403,在下发完本地保存的流表信息后,所述控制器向所述网络设备下发结束流表信息平滑的通知消息。
其中,本发明实施例所述的通知消息可以为Modify State Messages消息类型中新增的一条Modify Switch Message消息,消息格式如图3所示,所述ModifySwitch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve;
OFP_HEADER:用于标识消息类型,如Openflow协议中规定的那样,只是其中的TYPE新增一个OFPT_SWITCH_MOD(30),区别于其它的消息类型;
Command:用于标识所要修改的网络设备的信息类型;如果是OFPFC_SMOOTH(1)表示是平滑消息,这个字段为一个byte大小,在开始和结束流表信息平滑的通知消息中,该字段的取值为1;
Table_id:为流表信息标识,表示对当前Switch中那个流表进行操作,如果是OFPTT_ALL,则表示对全部流表操作,这个字段为一个byte大小;Table_id可以是单个流表信息标识,也可以是OFPTT_ALL,并且结束流表信息平滑的通知消息与相应开始流表信息平滑的通知消息中Table_id的取值相同;
Flag:为Command中的子类型,用于标识平滑开始或结束;当Command是OFPSC_SMOOTH时,Flag为OFPSF_SMOOTH_START(1)表示平滑开始,OFPSF_SMOOTH_END(2)表示平滑结束,这个字段为一个byte大小;
Reserve:为保留字段,这个字段为一个byte大小。
也就是说,控制器向网络设备发送开始流表信息平滑的通知消息时,所述Modify Switch Message消息的OFP_HEADER字段用于标识消息类型为ModifySwitch Message;Command字段用于标识所要修改的网络设备的信息类型为流表信息;Table_id字段用于标识哪些流表信息需要修改;Flag字段用于标识通知消息为平滑开始的通知;
控制器向网络设备发送结束流表信息平滑的通知消息时,所述ModifySwitch Message消息的OFP_HEADER字段用于标识消息类型为Modify SwitchMessage;Flag字段用于标识通知消息为平滑结束的通知;Command字段和Table_id字段的取值与相应开始流表信息平滑的通知消息中的Command字段和Table_id字段取值分别相同。
需要说明的是,在执行本发明实施例的流表处理方法的过程中,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,从而不影响当前网路流量的已有转发。
下面详细介绍在Openflow Controller与OpenFlow Switch连接振荡的情况下,在执行流表处理时的双方交互流程,如图5所示,设备间的TCP连接断开并且恢复以后,首先完成Controller与Switch之间feature request/relay和multpartrequest/relay(主要用于Controller获取switch的基本信息和流表、端口等一系列内容的运行信息)交互,这样Controller更新得到Switch最新的系统、端口等信息;随后的流程主要包括:
步骤501,Controller完成新建连接数据更新以后,主动发送Modify StateMessage(Modify Switch Message),通知Switch开始流表项信息的平滑。
此时Modify Switch Message消息中,OFP_HEADER字段用于标识消息类型为Modify Switch Message;Command字段用于标识所要修改的网络设备的信息类型为流表信息;Table_id字段用于标识哪些流表信息需要修改,如果Table_id是单个流表信息标识,则表示需要对当前Switch的所述单个流表信息进行修改,如果Table_id是OFPTT_ALL,则表示需要遍历当前Switch的所有流表信息;Flag字段用于标识通知消息为平滑开始的通知。
Swtich收到平滑开始Modify Switch Message消息后,将Swtich本地保存的、与所述平滑开始Modify Switch Message消息中携带的Table_id对应的流表信息的状态标记为平滑中;Swtich中存在多个流表信息,但group和meter为全局信息,如果平滑开始Modify Switch Message消息中携带的是单个流表信息的Table_id,则Swtich不用处理group和meter,如果平滑开始Modify Switch Message消息中携带的Table_id为OFPTT_ALL,则需要同时处理group和meter。
步骤502,在下发开始流表信息平滑的通知消息后,Controller向Switch下发流表信息,用于所述Switch本地的流表更新;所述Controller下发的流表信息为所述Controller本地保存的对应所述网络设备的流表信息,可以是单个流表信息,也可以是对应所述网络设备的所有流表信息。
Controller根据本地已有的与Table_id对应的流表项,重新正常方式(OFPFC_ADD)下发到Switch;
Swtich正常处理添加(OFPFC_ADD)流表信息,如果判断收到的是与本地重复的流表信息,则修改当前的相应流表平滑标记为已经平滑状态;如果判断收到的是新增流表,则正常创建流表,平滑标记仍然为已经平滑状态。
步骤503,Controller下发完flow entry、group和meter以后,再主动发送Modify State Message(Modify Switch Message),通知Switch结束平滑处理。
此时Modify Switch Message消息中,OFP_HEADER字段用于标识消息类型为Modify Switch Message;Flag字段用于标识通知消息为平滑结束的通知;Command字段和Table_id字段的取值与相应开始流表信息平滑的通知消息中的Command字段和Table_id字段取值分别相同。
Switch收到上述平滑结束消息,则遍历本地保存的、与所述平滑结束消息中携带的Table_id相对应的所有流表项,对于那些平滑标记仍然是平滑中的流表项,将会自动删除。
需要说明的是,本发明实施例高效及时的保证了在Openflow Controller与OpenFlow Switch连接振荡的情况下,Openflow Controller与OpenFlow Switch中的流表信息一致;而且,在执行本实施例所述流表处理方法的过程中,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,从而不影响当前网路流量的已有转发,保证了所有流量受Openflow Controller控制。
对应本发明实施例一的流表处理方法,本发明实施例还提供了一种流表处理装置,该装置应用于OpenFlow的网络设备中,该装置的硬件环境通常至少包括有CPU、内存以及非易失性存储器,当然还可能包括各种转发芯片、I/O接口等硬件。请参考图6,以软件实现为例,本实施例通过该设备的CPU将非易失性存储其中对应的计算机程序指令读取到内存中运行,使所述装置包括有:消息接收单元10、流表信息接收单元20及流表信息维护单元30。在本发明的一种实施方式中:
消息接收单元10,用于在OpenFlow的控制器与网络设备之间的TCP连接由断开到恢复时,接收控制器下发的开始流表信息平滑的通知消息;
流表信息接收单元20,用于在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;
流表信息维护单元30,用于将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
在一实施方式中,流表信息维护单元30进一步用于,在所述消息接收单元20收到所述开始流表信息平滑的通知消息后,将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息的状态标记为平滑中;
通过将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在所述消息接收单元10收到所述控制器下发的结束流表信息平滑的通知消息时,所述流表信息维护单元30遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
其中,所述通知消息为Modify State Messages消息类型中新增的一条ModifySwitch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve;
OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;Reserve为保留字段。
所述控制器下发的流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息;
所述流表信息维护单元30进一步用于,在所述消息接收单元10接收的开始流表信息平滑的通知消息中携带的是单个流表信息的Table_id时,所述流表信息维护单元30不对所接收的流表信息中的group和meter信息做处理;在所述消息接收单元10接收的开始流表信息平滑的通知消息中携带的Table_id为OFPTT_ALL时,所述流表信息维护单元30对所接收的流表信息中的group和meter信息做处理,所述处理即前述实施例中对流表信息的处理。
对应本发明实施例控制器侧的流表处理方法,本发明实施例提供了一种流表处理装置,该装置应用于OpenFlow的控制器中,该装置的硬件环境通常至少包括有CPU、内存以及非易失性存储器,当然还可能包括各种网络接口芯片、I/O接口等硬件。请参考图7,以软件实现为例,本实施例通过该设备的CPU将非易失性存储其中对应的计算机程序指令读取到内存中运行,使所述装置包括有:消息通知单元40及流表信息下发单元50。在本发明的一种实施方式中:
消息通知单元40,用于在OpenFlow的控制器与网络设备之间的TCP连接由断开到恢复时,向网络设备下发开始流表信息平滑的通知消息;
流表信息下发单元50,用于在所述消息通知单元40下发开始流表信息平滑的通知消息后,所述流表信息下发单元向网络设备下发流表信息,用于所述网络设备本地的流表更新;
消息通知单元40还用于,在所述流表信息下发单元50下发完流表信息后,所述消息通知单元40向所述网络设备下发结束流表信息平滑的通知消息。
其中,所述通知消息为Modify State Messages消息类型中新增的一条ModifySwitch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve;
OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;Reserve为保留字段。
本发明实施例还提供了一种流表处理系统,该系统包括上述实施例的Openflow Controller与OpenFlow Switch,所述Openflow Controller与OpenFlowSwitch包括各自的流表处理装置。
综上所述,本发明实施例在Openflow Controller与OpenFlow Switch连接振荡的情况下,OpenFlow Controller通知OpenFlow Switch进入平滑的流表信息更新过程,Openflow Controller向OpenFlow Switch下发本地保存的所有流表信息,OpenFlow Switch通过与自身维护的流表信息比较,将OpenFlow Switch中已存在的、且与Openflow Controller所下发的不一致的流表信息,从所述OpenFlowSwitch中删除。通过本发明实施例,高效及时的保证了在Openflow Controller与OpenFlow Switch连接振荡的情况下,Openflow Controller与OpenFlow Switch中的流表信息一致,而且本发明实施例不影响当前网路流量的已有转发,保证了所有流量受Openflow Controller控制。由于本发明实施例高效及时保证了在OpenFlow Controller与OpenFlow Switch连接振荡的情况下,OpenFlow Controller与OpenFlow Switch中的流表信息一致,因此也避免了在OpenFlow Controller与OpenFlow Switch连接振荡的情况下由于未能及时删除错误流表而导致误命中错误流表的情况发生。而且本发明实施例在OpenFlow Controller与OpenFlowSwitch连接振荡的情况下,无需删除网络设备上的所有流表信息由控制器重新下发,而采用的是一种平滑的过渡策略,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,不影响当前网路流量的已有转发,保证了所有流量受OpenFlow Controller控制,更不会出现断流现象。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (12)

1.一种流表处理方法,其特征在于,所述方法包括:
在控制器与网络设备之间的连接由断开到恢复时,所述网络设备接收控制器下发的开始流表信息平滑的通知消息;
在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;
所述网络设备将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
2.根据权利要求1所述流表处理方法,其特征在于,所述方法进一步包括:
在收到所述开始流表信息平滑的通知消息后,所述网络设备将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息的状态标记为平滑中;
相应的,所述将网络设备中已存在的、且与控制器所下发的不一致的流表信息从网络设备中删除,包括:
将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在收到所述控制器下发的结束流表信息平滑的通知消息时,遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
3.根据权利要求1或2所述流表处理方法,其特征在于,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束。
4.根据权利要求1或2所述流表处理方法,其特征在于,所述控制器下发的流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息;
所述方法还包括:
所述网络设备接收的开始流表信息平滑的通知消息中携带单个流表信息标识时,所述网络设备不对所接收的流表信息中的group和meter信息做处理;所述网络设备接收的开始流表信息平滑的通知消息中携带多个流表信息标识时,所述网络设备对所接收的流表信息中的group和meter信息做处理。
5.一种流表处理方法,其特征在于,所述方法包括:
在控制器与网络设备之间的连接由断开到恢复时,所述控制器向网络设备下发开始流表信息平滑的通知消息;
在下发开始流表信息平滑的通知消息后,所述控制器向网络设备下发流表信息,用于所述网络设备本地的流表更新;
在下发完流表信息后,所述控制器向所述网络设备下发结束流表信息平滑的通知消息。
6.根据权利要求5所述流表处理方法,其特征在于,所述通知消息为ModifyState Messages消息类型中新增的一条Modify Switch Message消息,所述ModifySwitch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;
所述流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息。
7.一种流表处理装置,应用于网络设备中,其特征在于,所述装置包括:
消息接收单元,用于在控制器与网络设备之间的连接由断开到恢复时,接收控制器下发的开始流表信息平滑的通知消息;
流表信息接收单元,用于在收到所述通知消息后,所述网络设备接收控制器下发的流表信息;
流表信息维护单元,用于将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
8.根据权利要求7所述流表处理装置,其特征在于,所述流表信息维护单元进一步用于,在所述消息接收单元收到所述开始流表信息平滑的通知消息后,将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息的状态标记为平滑中;
通过将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
在所述消息接收单元收到所述控制器下发的结束流表信息平滑的通知消息时,所述流表信息维护单元遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
9.根据权利要求7或8所述流表处理装置,其特征在于,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束。
10.根据权利要求7或8所述流表处理装置,其特征在于,所述控制器下发的流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息;
所述流表信息维护单元进一步用于,在所述消息接收单元接收的开始流表信息平滑的通知消息中携带单个流表信息标识时,所述流表信息维护单元不对所接收的流表信息中的group和meter信息做处理;在所述消息接收单元接收的开始流表信息平滑的通知消息中携带多个流表信息标识时,所述流表信息维护单元对所接收的流表信息中的group和meter信息做处理。
11.一种流表处理装置,应用于控制器中,其特征在于,所述装置包括:
消息通知单元,用于在控制器与网络设备之间的连接由断开到恢复时,向网络设备下发开始流表信息平滑的通知消息;
流表信息下发单元,用于在所述消息通知单元下发开始流表信息平滑的通知消息后,所述流表信息下发单元向网络设备下发流表信息,用于所述网络设备本地的流表更新;
所述消息通知单元还用于,在所述流表信息下发单元下发完流表信息后,所述消息通知单元向所述网络设备下发结束流表信息平滑的通知消息。
12.根据权利要求11所述流表处理装置,其特征在于,所述通知消息为Modify State Messages消息类型中新增的一条Modify Switch Message消息,所述Modify Switch Message消息包括以下字段:OFP_HEADER、Command、Table_id、Flag;
其中,OFP_HEADER用于标识消息类型;Command用于标识所要修改的网络设备的信息类型;Table_id为流表信息标识;Flag为Command中的子类型,用于标识平滑开始或结束;
所述流表信息包括与所述网络设备相关的流表flow entry、组播组group信息和流限速meter信息。
CN201510029888.6A 2015-01-21 2015-01-21 一种流表处理方法及装置 Active CN104601470B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510029888.6A CN104601470B (zh) 2015-01-21 2015-01-21 一种流表处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510029888.6A CN104601470B (zh) 2015-01-21 2015-01-21 一种流表处理方法及装置

Publications (2)

Publication Number Publication Date
CN104601470A true CN104601470A (zh) 2015-05-06
CN104601470B CN104601470B (zh) 2018-09-04

Family

ID=53126988

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510029888.6A Active CN104601470B (zh) 2015-01-21 2015-01-21 一种流表处理方法及装置

Country Status (1)

Country Link
CN (1) CN104601470B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302265A (zh) * 2016-07-21 2017-01-04 杭州华三通信技术有限公司 报文转发方法及装置
CN106453099A (zh) * 2016-10-21 2017-02-22 杭州华三通信技术有限公司 一种流表信息的恢复方法及装置
CN106911769A (zh) * 2017-02-09 2017-06-30 腾讯科技(深圳)有限公司 云平台路由数据的处理方法和云平台的物理服务器
CN107423154A (zh) * 2017-07-26 2017-12-01 郑州云海信息技术有限公司 一种流表处理方法及装置
CN107547420A (zh) * 2017-05-12 2018-01-05 新华三技术有限公司 一种流表控制方法和装置
CN107707482A (zh) * 2017-09-29 2018-02-16 新华三技术有限公司 一种数据平滑方法和装置
CN112104576A (zh) * 2020-08-14 2020-12-18 中国科学院声学研究所 一种sdn交换机的常驻流表存储与校准方法及系统
CN113595964A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 连接跟踪同步方法、装置、介质及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119324A (zh) * 2007-09-21 2008-02-06 杭州华三通信技术有限公司 网络地址转换属性自适应方法及装置
CN101325597A (zh) * 2008-07-30 2008-12-17 北京星网锐捷网络技术有限公司 一种数据处理的方法、装置及系统
CN101656676A (zh) * 2009-09-18 2010-02-24 杭州华三通信技术有限公司 一种媒体访问控制mac地址表项更新方法和装置
CN102946365A (zh) * 2012-11-09 2013-02-27 清华大学 一种基于软件定义网络的保持流表更新一致性的方法
CN103500191A (zh) * 2013-09-17 2014-01-08 华为技术有限公司 一种流表配置、查询、表项删除方法及装置
CN104065571A (zh) * 2014-06-05 2014-09-24 福建星网锐捷网络有限公司 一种广播报文处理方法、装置及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119324A (zh) * 2007-09-21 2008-02-06 杭州华三通信技术有限公司 网络地址转换属性自适应方法及装置
CN101325597A (zh) * 2008-07-30 2008-12-17 北京星网锐捷网络技术有限公司 一种数据处理的方法、装置及系统
CN101656676A (zh) * 2009-09-18 2010-02-24 杭州华三通信技术有限公司 一种媒体访问控制mac地址表项更新方法和装置
CN102946365A (zh) * 2012-11-09 2013-02-27 清华大学 一种基于软件定义网络的保持流表更新一致性的方法
CN103500191A (zh) * 2013-09-17 2014-01-08 华为技术有限公司 一种流表配置、查询、表项删除方法及装置
CN104065571A (zh) * 2014-06-05 2014-09-24 福建星网锐捷网络有限公司 一种广播报文处理方法、装置及系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302265A (zh) * 2016-07-21 2017-01-04 杭州华三通信技术有限公司 报文转发方法及装置
CN106302265B (zh) * 2016-07-21 2019-08-06 新华三技术有限公司 报文转发方法及装置
CN106453099A (zh) * 2016-10-21 2017-02-22 杭州华三通信技术有限公司 一种流表信息的恢复方法及装置
CN106453099B (zh) * 2016-10-21 2021-05-14 新华三技术有限公司 一种流表信息的恢复方法及装置
CN106911769A (zh) * 2017-02-09 2017-06-30 腾讯科技(深圳)有限公司 云平台路由数据的处理方法和云平台的物理服务器
CN107547420B (zh) * 2017-05-12 2020-06-09 新华三技术有限公司 一种流表控制方法和装置
CN107547420A (zh) * 2017-05-12 2018-01-05 新华三技术有限公司 一种流表控制方法和装置
CN107423154A (zh) * 2017-07-26 2017-12-01 郑州云海信息技术有限公司 一种流表处理方法及装置
CN107707482B (zh) * 2017-09-29 2020-06-09 新华三技术有限公司 一种数据平滑方法和装置
CN107707482A (zh) * 2017-09-29 2018-02-16 新华三技术有限公司 一种数据平滑方法和装置
CN113595964A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 连接跟踪同步方法、装置、介质及设备
CN112104576A (zh) * 2020-08-14 2020-12-18 中国科学院声学研究所 一种sdn交换机的常驻流表存储与校准方法及系统
CN112104576B (zh) * 2020-08-14 2022-02-22 中国科学院声学研究所 一种sdn交换机的常驻流表存储与校准方法

Also Published As

Publication number Publication date
CN104601470B (zh) 2018-09-04

Similar Documents

Publication Publication Date Title
CN104601470A (zh) 一种流表处理方法及装置
CN104113482B (zh) 流表更新的方法、装置和系统
CN105933253B (zh) 一种sdn网络下交换机配置恢复方法
CN103200122B (zh) 一种软件定义网络中组表的处理方法、系统和控制器
CN104301251A (zh) 一种QoS处理方法、系统及设备
CN105227385B (zh) 一种故障处理的方法及系统
US10050859B2 (en) Apparatus for processing network packet using service function chaining and method for controlling the same
CN105978817B (zh) 用于传输数据的方法、存储器和网络适配器
CN101436998A (zh) 报文转发路径获取方法和报文转发装置
CN104253736A (zh) 通告pe设备的信息的方法和pe设备
CN104796347A (zh) 一种负载均衡方法、装置和系统
CN108965204A (zh) 一种自动实现ioam封装的方法及装置
CN102170392A (zh) 关联的双向标签交换路径的创建方法及系统
CN105634952A (zh) Lsp报文快速通告方法以及装置
CN106302076A (zh) 建立vxlan隧道的方法、系统及sdn控制器
CN103441878B (zh) Vcf网络中pe设备的归属处理方法及设备
CN109547269A (zh) 一种ip ran设备实现lsp保护的方法及装置
CN103559198A (zh) 一种数据同步的方法及设备
CN103916303A (zh) 一种mpls te隧道配置装置和方法
CN102480377B (zh) 聚合链路的管理方法及系统
CN109379239A (zh) 一种OpenStack环境中配置接入交换机的方法及装置
CN109327390B (zh) 一种流量调度方法及装置
CN102136936B (zh) 避免控制平面故障影响转发平面运行的方法、节点及系统
CN106230720A (zh) 一种设备故障后的路由恢复方法及装置
CN108141374A (zh) 一种网络亚健康诊断方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant after: Xinhua three Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant before: Huasan Communication Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant