一种实现快速重路由的方法

文档序号:7929359阅读:175来源:国知局
专利名称:一种实现快速重路由的方法
技术领域
本发明涉及一种在驱动层面实现快速重路由的方法。
背景技术
FRR (Fast Reroote)快速重路由,就是一条LSP出现问题,不能正常传输 信令和数据,这时候就将信令与数据转移到事先已经建立好的另外一条路径上 去,以保证业务不会中断。可以这样理解FRR是一种保护措施。
在FRR中有两种不同类型的保护方案
一、 路径保护,也称为端到端保护,这种方式是通过和现在的LSP并行建 立额外一条LSP,这条LSP只会在发生失效时使用
二、 局部保护,或称为本地保护,即备份LSP只对原LSP的一部分进行保 护。其中,由于保护的对象不同,对LSP中的结点进行保护的方式称为结点保 护,而对LSP中某链路进行保护的方式称为链路保护。
目前普遍使用的FRR切换普遍需要快速的进行切换, 一般需要在50毫秒完 成,在拥有网络处理器的机器上, 一般使用NP来进行处理,但是在ASIC芯片 上, 一般没有对应的FRR的硬件表项,因此以往在驱动层面实现FRR功能主要 是通过上层在进行切换的时候,删除以前的老的失效的路由,再添加一个新的路 由进行转发。这样的缺点是导致FRR切换的时候,如果对应某个实效的LSP的 路由非常的多,就会出现非常多次的要求驱动删除路由,从而导致切换时间不能 达到要求。
目前中国专利CN200710166107.3、 CN200710175346.5、 CN200710105840,
都是从协议层面上实现的FRR的一些方法,其缺点是没有考虑到芯片层面的切 换速度的提高的问题。而在无法对芯片功能进行修改的ASIC芯片上,必须利用 芯片已有的表项功能实现FRR功能,而不能像网络处理器芯片那样编码来实现。并且现在市场上的大部分交换芯片都没有提供单独的FRR切换的表项,而大部 分的交换芯片又都提供了关于ECMP路由的表项管理功能。

发明内容
本发明所要解决的技术问题是提供一种FRR的方法,克服了在FRR切换的 时候,驱动非常多次地删除路由,从而导致切换时间不能达到要求。
本发明的发明内容是提供一种快速重路由的方法,它包括如下步骤:a、系统启 动上层协议管理和配置FRR路由;b、上层下发FRR的一条有效下一跳地址, 为FRR分配一个与ECMP组的序号不相同的序号,驱动将该FRR的有效下一跳 地址写入芯片的ECMP表中,建立一个软件表,存储FRR组和对应芯片中的 ECMP组之间的关系;c、将子网路由的前缀地址和FRR组号通知驱动,驱动在 所述软件表中根据FRR组号査找到对应的ECMP组号,将子网路由信息和ECMP 组号一起写入硬件中;d、 FRR组的有效下一跳地址出现故障,上层软件通知驱 动FRR的index和新的备份下一跳的IP地址,驱动在所述软件表中根据FRR的 index査找到对应的ECMP的index,把新的备份下一跳的IP地址更新到ECMP 的下一跳中,完成FRR的切换。
在所述的步骤b中,驱动通过调用芯片的SDK函数,将ECMP组写入芯片中。
在所述的步骤b中,芯片的ECMP组支持写入一个下一跳,则写入一个下 一跳;芯片的ECMP组必须支持两个或者两个以上下一跳,则写两个或两个以 上相同的下一跳。
在所述的步骤c中,子网路由的下一跳不使用IP地址,关联到所述FRR组 的index。
在所述的步骤d中,驱动通过调用芯片的SDK函数,将FRR新的有效下一 跳IP地址写入芯片的ECMP表中。
在所述的步骤d中,更新完ECMP表的地址后,更新所述步骤b中的软件表。
由以上的技术方案可见,与现有实现方法相比较,本发明提出的方案可以在 大部分支持ECMP的ASIC芯片上实现快速的支持FRR切换的操作方法,并且 不管有多少子网路由在使用这个FRR组都不会导致切换速度的增加,提高了使用ASIC芯片设计的系统对于FRR切换的响应速度,大大的提高了系统的效率, 并且使得FRR切换速度更加稳定,不会受到子网路由数量的影响。另外使用该 方案使得ASIC芯片一样可以支持FRR的处理,不需要为了实现该功能而不得 不使用NP芯片,使用ASIC芯片开发的设备也比使用NP开发设备成本降低很 多。


-
图1为本发明方法的子网路由利用FRR与ECMP组的关系建立切换的示意图。
图2为本发明方法的处理流程总图。
图3为本发明方法的FRR组下发处理流程图。
图4为本发明方法的使用FRR保护的子网路由下发处理流程图。
图5为本发明方法的FRR切换下一跳上层下发处理流程图。
具体实施例方式
本发明提出了一种使用ASIC芯片提供的ECMP表的来实现FRR功能的方 法,本文中使用Broadcom公司提供的BCM56624芯片来进行举例,该方案不仅 仅限于这一款交换芯片,只要芯片厂商提供了 ECMP的表和针对ECMP表的管 理接口 ,就可以在驱动层面上借助ECMP表的管理接口来实现FRR的快速切换 的功能。
该方案实现的基本思路就是把FRR作为一个ECMP组写入芯片的ECMP表 中,并且无论有多少条子网路由使用了这个FRR的切换,所需要做的动作仅仅 只有一个把这个FRR对应的ECMP组的下一跳内容进行一次修改,把这个 ECMP组的下一跳从一个无效的下一跳切换到一个有效下一跳即可,而无需像以 前的实现方式那样进行多次子网路由的删除和添加。
如图1所示,尽管有多条子网路由指向需要切换的FRR组,但是如果使用 ECMP组来实现,在切换的时候仅仅需要将ECMP组的下一跳进行切换即可, 不需要对所有子网路由进行操作。例如此时有n条子网路由,这些子网路由的 下一跳有A、 B两个,A是有效的下一跳,B是备份下一跳,而此时仅需要创建一个ECMP组,该组的下一跳是A,那么此时一旦开始切换,仅仅需要在这个 ECMP组中把下一跳切换为B,而所有的子网路由都不需要删除和添加就可以完 成这个FRR的动作,对应图1仅仅需要将实线的下一跳切换到虚线的下一跳,即 可实现FRR。
如图2,本发明的技术方案包括如下步骤
a、 系统启动上层协议管理和配置FRR路由;
b、 上层协议下发驱动层FRR的一条有效的下一跳IP地址,协议层的下发 以及驱动的处理动作是按以下三个歩骤进行的
bl 、分配一个FRR的序号index,该index与上层分配的ECMP组的序号index 不能相同;
b2、将下发的IP地址作为FRR的index的有效下一跳,并将该FRR的index 和有效下一跳IP地址通知驱动;
b3、驱动将FRR的index和有效下一跳IP当作是一个ECMP组的index和 这个ECMP组的下一跳IP地址写入芯片的ECMP表中,并保存这个ECMP组写 入芯片的ECMP组的index;此处驱动方面写芯片的操作与操作上层下发ECMP 路由的方法是一样的,仅仅需要在驱动的软件表中区分这个组到底是真正的 ECMP组下发的还是一个FRR的有效下一跳下发的,由于在芯片中处理的时候, FRR和真正的ECMP下一跳组是共用的,因此在步骤bl中,分配的FRR的index 和真正的ECMP的index不能相同;
c、 此时如果有子网路由需要进行FRR组的链路备份,将这些子网路由的前 缀地址和FRR组号通知驱动,驱动根据上层提供的FRR组号,就可以在所述软 件表中査找到FRR组号和ECMP组号之间的对应关系,将子网路由信息和ECMP 组号一起写入硬件中,这些子网路由就指向了硬件中的ECMP组,通过这样的 操作也就将需要FRR组保护的子网路由的下一跳都指向了硬件中事实上起作用 的ECMP组的下一跳;
d、 当完成步骤c之后,这些指向FRR组的路由就可以进行保护的FRR切 换了,此时,如果该FRR组的有效的下一跳出现故障需要切换到备份下一跳, 动作如下
dl、上层软件不需要再告诉驱动此时引用了该FRR的所有的子网路由,仅仅需要告诉驱动该FRR的index,和新的备份下一跳的IP地址;
d2、驱动在软件表中找到该FRR的index对应的ECMP的index,把新的备
份下一跳的IP地址更新到这个ECMP的下一跳中,完成FRR的切换;
步骤a、 b是上层写入驱动FRR组和下一跳的操作,对应图3;歩骤c是上
层写入需要被保护的子网路由的操作,对应图4;步骤d是子网路由进行切换的
时候,上层对于驱动的操作,对应图5。
为了更清楚地理解本发明所述技术方案,现举例如下如有一个子网路由
123丄1.0,它有两个下一跳,正在使用的下一跳是123丄1.1,备份下一跳是 123.1.1.2。
步骤a、 b的处理,是上层创建一个FRR组A,组A的成员是123丄1.1,然 后上层把组A写入驱动,驱动对应的创建一个ECMP组a,将123丄1.1写入ECMP 组a中;
步骤c的处理,是上层下发子网路由123丄1.0,并且告诉驱动这个子网路由 的下一跳是FRR组A,驱动就通过这个FRR组A找到了 ECMP组a,然后把"子 网路由123丄1.0 + ECMP组a"的信息一起写入硬件,则硬件可以通过ECMP 组a知道,123丄1.0的下一跳是ECMP组a对应的下一跳123丄1.1;
步骤d的处理,是如果123丄1.1出现故障了,现在要切换到123丄1.2,这 时,上层下发FRR组A的切换信息,告诉驱动FRR组A现在的下一跳己经不 是123丄1.1而是切换成新的123丄L2了,于是,驱动收到之后,直接通过FRR 组A找到ECMP组a,并且修改ECMP组a的下一跳变成123丄1.2,通过这样 的修改,刚才指向ECMP组a的子网路由123丄1.0就自动的切换了下一跳。
本方法的好处就是,如果指向这个FRR组A的路由很多,除了 123丄1.0, 还有很多其他的子网路由都指向这个FRR组,那么通过这种方法的步骤d可以 看出,不需要再下发每个子网路由的详细信息,而是直接告诉驱动,FRR组A 的变化,就可以间接的修改所有子网路由的下一跳。
下面就图2的步骤作具体的描述,图3对应图2中的a、 b步骤,是FRR组 下发处理函数流程图
步骤IOI,当上层协议使能了FRR功能的时候,需要下发FRR组和目前处在使能状态的下一跳地址;
步骤102,分配一个与真正的上层下发的ECMP组的组号不一样的FRR的 组号,防止出现FRR组号占用了真正的ECMP组组号的情况;
步骤103,驱动将该FRR组分配的组号index作为芯片的ECMP表的index 调用芯片的SDK函数,将ECMP组写入芯片中;
步骤104,驱动根据FRR组号分配创建了 ECMP组,将所述FRR组的有效 下一跳写入该ECMP组;这里需要根据各个不同芯片的具体情况写入,如果芯 片的ECMP组支持写入一个下一跳则可以写入一个下一跳,如果必须支持两个 或两个以上下一跳,则可以写两个或两个以上相同的下一跳;
步骤105,在驱动中建立一个软件表,存储这个FRR组和对应的芯片中的 ECMP组之间的关系,以便子网路由添加的时候,查找子网路由关联的FRR的 组号在硬件中应该对应的是哪个ECMP组号;
步骤106,如果驱动写硬件芯片表全部成功,返回成功,如果写芯片失败, 返回失败。
图4对应图2中的c步骤,是使用FRR保护的子网路由下发处理流程图 步骤201,当有需要FRR保护的子网路由出现的时候,上层需要下发这种 子网路由给驱动;
步骤202,子网路由的下一跳不再使用IP地址,而是关联到保护这个子网 路由的FRR组的index;
步骤203,驱动在所述FRR组与ECMP组建立的软件表中,通过上层协议 下发的FRR的index,查找该FRR对应的ECMP组的index,进而得到ECMP
的下一跳信息;
步骤204,将ECMP表的index信息和子网路由的相关信息写入芯片的硬件 的子网路由表中,硬件中的这条子网路由的下一跳就指向该找到的ECMP组, 这样就把需要FRR保护的这个子网路由和我们替代FRR组写入硬件的ECMP组 的index联系起来了;
子网路由的前缀就是要写入硬件的子网路由表的内容,例如123.0.0.0就是 一个子网路由前缀;子网路由表指的是硬件的子网路由表。子网路由写入的时候, 如果是FRR的类型,需要找到一个对应的ECMP表的index作为该子网路由的下一跳写入硬件,硬件会知道这个子网路由对应的下一跳是一个ECMP组,然 后就会在ECMP表中找该ECMP组,该ECMP组又记录了 1个或者多个下一跳, 这1个或者多个下一跳就是该子网路由的真实的下一跳。
歩骤205,如果驱动写硬件芯片表全部成功,返回成功,如果写芯片失败, 返回失败。
图5对应图2中的d步骤,是FRR切换下一跳上层下发处理流程图
歩骤301,当FRR发生切换的时候,上层下发FRR组以及新的下一跳地址, 这个下一跳是用于这个FRR组切换时候的备份下一跳,由于以前的下一跳已经 失效,因此这个备份下一跳现在生效;
步骤302,在软件表中找到这个ECMP组,得到ECMP组的组号,并且将 新的需要生效的下一跳准备写入硬件中;
步骤303,更新芯片的ECMP组内容,通过调用芯片的SDK函数,把新的 生效的下一跳地址写入这个ECMP组中,替代以前的失效的下一跳,以前的下 一跳不再产生作用,这样就完成了在硬件中切换下一跳的动作;
步骤304,更新驱动的软件表中的FRR与ECMP组的关系表,将新的下一 跳写入ECMP组的下一跳中,并且删除原来的下一跳,完成软件表与芯片硬件 表的同步;
步骤305,如果驱动写硬件芯片表全部成功,返回成功,如果写芯片失败, 返回失败。
权利要求
1、一种实现快速重路由的方法,其特征在于它包括如下步骤a、系统启动上层协议管理和配置FRR路由;b、上层下发FRR的一条有效下一跳地址,为FRR分配一个与ECMP组的序号不相同的序号,驱动将该FRR的有效下一跳地址写入芯片的ECMP表中,建立一个软件表,存储FRR组和对应芯片中的ECMP组之间的关系;c、将子网路由的前缀地址和FRR组号通知驱动,驱动在所述软件表中根据FRR组号查找到对应的ECMP组号,将子网路由信息和ECMP组号一起写入硬件中;d、FRR组的有效下一跳地址出现故障,上层软件通知驱动FRR的index和新的备份下一跳的IP地址,驱动在所述软件表中根据FRR的index查找到对应的ECMP的index,把新的备份下一跳的IP地址更新到ECMP的下一跳中,完成FRR的切换。
2、 按照权利要求1所述的实现快速重路由的方法,其特征在于在所述的 步骤b中,驱动通过调用芯片的SDK函数,将ECMP组写入芯片中。
3、 按照权利要求1所述的实现快速重路由的方法,其特征在于在所述的 步骤b中,芯片的ECMP组支持写入一个下一跳,则写入一个下一跳;芯片的 ECMP组必须支持两个或者两个以上下一跳,则写两个或两个以上相同的下一 跳。
4、 按照权利要求l所述的实现快速重路由的方法,其特征在于在所述的 步骤c中,子网路由的下一跳不使用IP地址,关联到所述FRR组的index。
5、 按照权利要求1所述的实现快速重路由的方法,其特征在于在所述的 步骤d中,驱动通过调用芯片的SDK函数,将FRR新的有效下一跳IP地址写 入芯片的ECMP表中。
6、按照权利要求1所述的实现快速重路由的方法,其特征在于在所述的 步骤d中,更新完ECMP表的地址后,更新所述步骤b中的软件表。
全文摘要
本发明公开了一种实现快速重路由的方法,它包括如下步骤,系统启动上层协议管理和配置FRR路由;上层下发FRR的一条有效下一跳IP,驱动将FRR的IP写入ECMP表中,建立一个软件表存储FRR组和ECMP组之间的关系;将子网路由的前缀地址和FRR组号通知驱动,驱动在软件表中查找到ECMP组号,将子网路由信息和ECMP组号一起写入硬件中;FRR组的有效下一跳IP出现故障,上层通知驱动FRR的index和新的备份下一跳的IP,驱动在软件表中查找到ECMP的index,把新的IP更新到ECMP的下一跳中。本发明提高了使用芯片设计的系统对于FRR切换的响应速度。
文档编号H04L29/08GK101442494SQ20081024125
公开日2009年5月27日 申请日期2008年12月16日 优先权日2008年12月16日
发明者宁 林, 钱霄鸿 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1