一种流表处理方法及装置的制造方法_2

文档序号:8285149阅读:来源:国知局
Switch下发本地保存的所有流表信息,OpenFlow Switch通过与自身维护的流表信息比较,将OpenFlow Switch中已存在的、且与Openflow Controller所下发的不一致的流表信息,从所述OpenFlow Switch中删除。通过本发明实施例,高效及时的保证了在Openflow Controller与OpenFlow Switch连接振荡的情况下,Openflow Controller与OpenFlow Switch中的流表信息一致,而且本发明实施例不影响当前网路流量的已有转发,保证了所有流量受Openflow Controller控制。
【附图说明】
[0044]图1为相关技术中OpenFlow网络的架构示意图;
[0045]图2为本发明实施例提供的流表处理方法流程图一;
[0046]图3为本发明实施例提供的Modify Switch Message消息格式示意图;
[0047]图4为本发明实施例提供的流表处理方法流程图二 ;
[0048]图5为本发明实施例提供提供的流表处理方法流程图三;
[0049]图6为本发明实施例提供的流表处理装置的组成结构示意图一;
[0050]图7为本发明实施例提供的流表处理装置的组成结构示意图二。
【具体实施方式】
[0051]下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
[0052]本发明实施例为实现在控制器与网络设备的连接振荡情况下,既保证网络设备与控制器上的流表信息保持一致,又不影响当前网络流量的已有转发,保证所有流量受控制器控制。提出一种平滑的流表处理方法,在连接由断开到恢复时,控制器通知网络设备开始流表信息平滑,并将本地保持的所有流表信息发给网络设备,网络设备通过比较,将网络设备中已存在的、且与控制器所下发的不一致的流表信息删除。
[0053]本发明实施例提供的一种流表处理方法,应用于OpenFlow的网络设备中,所述网络设备包括路由器、交换机等,如图2所示,该方法主要包括:
[0054]步骤201,在控制器与网络设备之间的连接由断开到恢复时,所述网络设备接收控制器下发的开始流表信息平滑的通知消息。
[0055]当控制器与网络设备之间的TCP连接断开后又恢复正常时,控制器能够检测到所述TCP连接的状态变化,从而控制器向网络设备下发开始流表信息平滑的通知消息。
[0056]步骤202,在收到所述通知消息后,所述网络设备接收控制器下发的流表信息。
[0057]所述控制器下发的流表信息是所述控制器本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息,所述控制器在下发开始流表信息平滑的通知消息后,向网络设备发送其本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息。
[0058]步骤203,所述网络设备将收到的流表信息与本地保存的流表信息进行比较,将所述网络设备中已存在的、且与所述控制器所下发的不一致的流表信息,从所述网络设备中删除。
[0059]在一种实施方式中,在收到所述开始流表信息平滑的通知消息后,所述网络设备将本地保存的、与所述开始流表信息平滑的通知消息中携带的流表标识相对应的流表信息的状态标记为平滑中;
[0060]相应的,所述将网络设备中已存在的、且与控制器所下发的不一致的流表信息从网络设备中删除,包括:
[0061]将所述网络设备中已存在的、且与控制器所下发的一致的流表信息的状态标记为已平滑,对所述控制器下发的相对于所述网络设备新增的流表信息进行本地保存、并标记新增流表信息的状态为已平滑;
[0062]在收到所述控制器下发的结束流表信息平滑的通知消息时,遍历所述网络设备中保存的、与所述结束流表信息平滑的通知消息中携带的流表标识相对应的所有流表信息,并删除状态仍为平滑中的流表信息。
[0063]其中,所述流表信息至少包括与该网络设备相关的:流表flow entry、组播组group信息和流限速meter信息。
[0064]其中,本发明实施例所述的通知消息可以为Modify State Messages消息类型中新增的一条Modify Switch Message消息,消息格式如图3所示,所述Modify SwitchMessage 消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve ;
[0065]OFP_HEADER:用于标识消息类型,如Openflow协议中规定的那样,只是其中的TYPE新增一个0FPT_SWITCH_M0D(30),区别于其它的消息类型;
[0066]Command:用于标识所要修改的网络设备的信息类型;如果是0FPFC_SM00TH(1)表示是平滑消息,这个字段为一个byte大小,在开始和结束流表信息平滑的通知消息中,该字段的取值为I ;
[0067]Table_id:为流表信息标识,表示对当前Switch中那个流表进行操作,如果是0FPTT_ALL,则表示对全部流表操作,这个字段为一个byte大小;Table_id可以是单个流表信息标识,也可以是0FPTT_ALL,并且结束流表信息平滑的通知消息与相应开始流表信息平滑的通知消息中Table_id的取值相同;
[0068]Flag:为Command中的子类型,用于标识平滑开始或结束;当Command是0FPSC_SMOOTH 时,Flag 为 0FPSF_SM00TH_START(1)表示平滑开始,0FPSF_SM00TH_END (2)表示平滑结束,这个字段为一个byte大小;
[0069]Reserve:为保留字段,这个字段为一个byte大小。
[0070]需要说明的是,在执行本发明实施例的流表处理方法的过程中,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,从而不影响当前网路流量的已有转发。
[0071]本发明实施例提供的另一种流表处理方法,应用于OpenFlow的控制器中,如图4所示,该方法主要包括:
[0072]步骤401,在控制器与网络设备之间的连接由断开到恢复时,所述控制器向网络设备下发开始流表信息平滑的通知消息。
[0073]当控制器与网络设备之间的TCP连接断开后又恢复正常时,控制器能够检测到所述TCP连接的状态变化,从而控制器向网络设备下发开始流表信息平滑的通知消息。
[0074]步骤402,在下发开始流表信息平滑的通知消息后,所述控制器向网络设备下发流表信息,用于所述网络设备本地的流表更新;所述控制器下发的流表信息为所述控制器本地保存的对应所述网络设备的流表信息,可以是单个流表信息,也可以是对应所述网络设备的所有流表信息。
[0075]所述控制器在下发开始流表信息平滑的通知消息后,向网络设备发送其本地保存的对应所述网络设备的流表信息;网络设备接收控制器下发的流表信息,用于网络设备本地的流表更新。
[0076]步骤403,在下发完本地保存的流表信息后,所述控制器向所述网络设备下发结束流表信息平滑的通知消息。
[0077]其中,本发明实施例所述的通知消息可以为Modify State Messages消息类型中新增的一条Modify Switch Message消息,消息格式如图3所示,所述Modify SwitchMessage 消息包括以下字段:OFP_HEADER、Command、Table_id、Flag、Reserve ;
[0078]OFP_HEADER:用于标识消息类型,如Openflow协议中规定的那样,只是其中的TYPE新增一个0FPT_SWITCH_M0D(30),区别于其它的消息类型;
[0079]Command:用于标识所要修改的网络设备的信息类型;如果是0FPFC_SM00TH(1)表示是平滑消息,这个字段为一个byte大小,在开始和结束流表信息平滑的通知消息中,该字段的取值为I ;
[0080]Table_id:为流表信息标识,表示对当前Switch中那个流表进行操作,如果是0FPTT_ALL,则表示对全部流表操作,这个字段为一个byte大小;Table_id可以是单个流表信息标识,也可以是0FPTT_ALL,并且结束流表信息平滑的通知消息与相应开始流表信息平滑的通知消息中Table_id的取值相同;
[0081]Flag:为Command中的子类型,用于标识平滑开始或结束;当Command是0FPSC_SMOOTH 时,Flag 为 0FPSF_SM00TH_START(1)表示平滑开始,0FPSF_SM00TH_END (2)表示平滑结束,这个字段为一个byte大小;
[0082]Reserve:为保留字段,这个字段为一个byte大小。
[0083]也就是说,控制器向网络设备发送开始流表信息平滑的通知消息时,所述ModifySwitch Message 消息的 0FP_HEADER 字段用于标识消息类型为 Modify Switch Message ;Command字段用于标识所要修改的网络设备的信息类型为流表信息;Table_id字段用于标识哪些流表信息需要修改;Flag字段用于标识通知消息为平滑开始的通知;
[0084]控制器向网络设备发送结束流表信息平滑的通知消息时,所述Modify SwitchMessage消息的0FP_HEADER字段用于标识消息类型为Modify Switch Message ;Flag字段用于标识通知消息为平滑结束的通知;Co_and字段和Table_id字段的取值与相应开始流表信息平滑的通知消息中的Co_and字段和Table_id字段取值分别相同。
[0085]需要说明的是,在执行本发明实施例的流表处理方法的过程中,OpenFlow的网络设备仍然基于本地已存的最新流表信息进行数据报文的转发,从而不影响当前网路流量的已有转发。
[0086]下面详细介绍在Openflow Controller与OpenFlow Switch连接振荡的情况下,在执行流表处理时的双方交互流程,如图5所示,设备间的TCP连接断开并且恢复以后,首先完成 Controller 与 Switch 之间 feature request/relay 和 multpart request/relay (主要用于Controller获取switch的基本信息和流表、端口等一
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1