发明名称 一种基于软件定义网络的域间链路快速故障恢复方法
摘要 本发明公开了一种基于软件定义网络的域间链路快速故障恢复方法,该方法在域间链路出现故障的时候,根据存储在OpenFlow交换机本地的邻接节点表选择绕过故障链路的路径而不是由控制器根据最新的拓扑来选择一条新路径。本发明与由控制器介入的链路故障恢复方法相比,有恢复速度快的优点,能减少丢包率,其实现方法简便,灵活性好,具有可扩展性。
申请公布号 CN103428031A 申请公布日期 2013.12.04
申请号 CN201310335883.7 申请日期 2013.08.05
申请人 浙江大学 发明人 吴春明;李徐艳;周伯阳;姜明
分类号 H04L12/24(2006.01)I;H04L12/721(2013.01)I 主分类号 H04L12/24(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 周烽
主权项 一种基于软件定义网络的域间链路快速故障恢复方法,其特征在于,包括以下步骤:步骤1:初始网络中的所有的OpenFlow交换机都和控制器相连,每个OpenFlow交换机有全网唯一的标识符,由同一个控制器管理的所有OpenFlow交换机组成一个域,域由控制器的IP地址标识;OpenFlow交换机在与控制器建立连接时,控制器会把域间OpenFlow交换机选择策略加载到OpenFlow交换机;步骤2:各OpenFlow交换机向邻接OpenFlow交换机广播邻接消息,该邻接消息封装了消息类型、域ID、物理节点ID、端口ID和端口IP;OpenFlow交换机收到从邻接节点发来的邻接消息后将邻居OpenFlow交换机的信息加入到自己维护的邻接节点表中;邻接节点表由邻接节点域ID、邻接节点ID、邻接节点端口ID、邻接节点端口IP、与邻接节点相连的本OpenFlow交换机的端口ID和定时器项组成;步骤3:每个OpenFlow交换机把用OpenFlow消息封装的节点信息消息发送给控制器;该节点信息消息由消息类型、OpenFlow交换机信息和邻接OpenFlow交换机信息组成;控制器收到各OpenFlow交换机发来的封装了节点信息消息的OpenFlow消息后,就获得了本域的物理拓扑信息以及与本域相连的其他域的边界OpenFlow交换机信息(如果一个域的OpenFlow交换机与其他域的OpenFlow交换机相连,则该OpenFlow交换机为边界OpenFlow交换机),控制器将本域的物理拓扑存储到本地,把域间的物理拓扑存储至网络视图,每个控制器根据网络视图获取全网域间拓扑;步骤4:维护域间链路,快速恢复故障链路;该步骤通过以下子步骤来实现:(4.1)OpenFlow交换机周期性地向邻接OpenFlow交换机广播邻接消息,OpenFlow交换机收到邻接消息后,提取出物理节点ID字段,并与邻接节点表中的邻接节点ID项匹配,如果匹配成功,就重置命中表项的定时器;如果匹配不成功,表示有新的OpenFlow交换机与之相连,则更新邻接节点表,为刚连入的OpenFlow交换机增加一个表项,并由OpenFlow交换机发送一个封装了节点信息消息的OpenFlow消息给控制器,以告知新节点的加入以及网络拓扑的变化;(4.2)每个OpenFlow交换机定期检查邻接节点表中的定时器项,如果某个表项的定时器超过预先设定的最大值,表示此OpenFlow交换机在一定时间内没有收到表项中OpenFlow交换机发来的邻接消息,表项中的OpenFlow交换机为不可达;(4.3)如果OpenFlow交换机检测到某个邻接OpenFlow交换机不可达,说明两个OpenFlow交换机之间的链路发生了故障;OpenFlow交换机从邻接节点表中找出邻接节点域ID为与不可达OpenFlow交换机域ID相同的候选表项,如果有多个候选表项,根据域间OpenFlow交换机选择策略从多个候选表项中选择一个最佳表项,转到步骤(4.4);若没有找到,转到步骤(4.5);(4.4)OpenFlow交换机根据最佳表项修改流表:先找出流表项中数据包发出端口为与不可达OpenFlow交换机相连的端口的流表项,再修改这些流表项把发出端口修改为最佳表项中的与邻接节点相连的本OpenFlow交换机的端口ID,从而把发往不可达OpenFlow交换机的流量定向到与不可达OpenFlow交换机在同一个域中的边界OpenFlow交换机;(4.5)OpenFlow交换机采用洪泛法发送寻找路径消息以找到此OpenFlow交换机到不可达OpenFlow交换机所在域的路径;该寻找路径消息封装了消息类型、不可达OpenFlow交换机的域D_ID和源OpenFlow交换机的域S_ID和路径;寻找路径消息每到达一个OpenFlow交换机的时候需要把OpenFlow交换机的ID和收到寻找路径消息的端口ID写入路径,以方便寻找路径回复消息的发送,每从OpenFlow交换机的端口发送前,需要把发出端口ID写入到路径中,以方便随后流表更新消息的发送;OpenFlow交换机首先向除了与不可达OpenFlow交换机相连的端口外的其他端口发送寻找路径消息,当邻接OpenFlow交换机收到寻找路径消息后,查找邻接节点表以确定邻接节点表中是否存在邻接节点域ID为D_ID的OpenFlow交换机;如果找到,根据寻找路径消息中的路径发送寻找路径回复消息;如果没有找到,OpenFlow交换机把寻找路径消息从除了收到寻找路径消息端口之外的端口发送出去直到找到通往域D_ID的一条路径;当源OpenFlow交换机收到寻找路径回复消息后,提取出寻找路径回复消息中的路径,若OpenFlow交换机收到多条寻找路径回复消息,则从所有路径中选择出跳数最少的路径为最佳路径,如果有多条跳数相同且最少的路径,则随机从多条跳数最少的路径中选择一条为最佳路径;(4.6)OpenFlow交换机找到发往不可达OpenFlow交换机的最佳路径后,往最佳路径发送流表更新消息,以往最佳路径上的OpenFlow交换机增加流表项使发往不可达OpenFlow交换机的数据包往最佳路径发送;该流表更新消息封装了消息类型、不可达OpenFlow交换机的域ID、路径和匹配域;路径为从寻找路径回复消息中提取出的最佳路径,匹配域为在源OpenFlow交换机流表中找出的数据包发出端口为与不可达OpenFlow交换机相连的端口的流表项中的匹配域,匹配域有一个或多个;OpenFlow交换机根据流表更新消息中的路径来发送流表更新消息,每到达一个OpenFlow交换机的时候,为OpenFlow交换机增加流表项,如果流表更新消息中有多个匹配域,则增加多个流表项,流表项的匹配域为流表更新消息中的匹配域,从流表更新消息的路径中提取下一跳的发出端口并写入流表项的行为部分,并把该流表项的优先级设为最高;这样就为发往不可达OpenFlow交换机所在的域的数据包建立了一条新的路径;(4.7)OpenFlow交换机向控制器发送封装了节点信息消息的OpenFlow消息报告此OpenFlow交换机与不可达OpenFlow交换机之间的链路故障,控制器更新拓扑,从而实现域间链路的故障恢复。
地址 310058 浙江省杭州市西湖区余杭塘路866号