发明内容
本申请提供了一种减少LSA洪泛次数的方法及设备,以在大规模组网的网络环境下,减少LSA的洪泛次数。
本申请提供的一种减少LSA洪泛次数的方法,包括:
当本设备产生影响本设备的网络拓扑的LSA更新时,向所有三层接口上的所有直连邻居发送所述LSA更新;
当本设备产生不影响本设备的网络拓扑的LSA更新时,判断本设备所处区域的网络拓扑是否稳定,如果本设备所处区域的网络拓扑不稳定,向所有三层接口上的所有直连邻居发送所述LSA更新;如果本设备所处区域的网络拓扑稳定,则:
对于在区域最短路径树上与本设备之间仅存在一条链路,且该链路为直连链路的直连邻居,向其发送所述LSA更新;
本申请提供的一种减少LSA洪泛次数的设备,包括:本地LSA洪泛管理模块和LSA发送模块,其中:
在本设备产生影响本设备的网络拓扑的LSA更新时,所述本地LSA洪泛管理模块通知LSA发送模块向所有三层接口上的所有直连邻居发送所述LSA更新;
在本设备产生不影响本设备的网络拓扑的LSA更新时,如果本设备所处区域的网络拓扑不稳定,本地LSA洪泛管理模块通知LSA发送模块向所有三层接口上的所有直连邻居发送所述LSA更新;如果本设备所处区域的网络拓扑稳定,则:
对于在区域最短路径树上与本设备之间仅存在一条链路,且该链路为直连链路的直连邻居,本地LSA洪泛管理模块通知LSA发送模块向其发送所述LSA更新;
对于在区域最短路径树上与本设备之间存在至少两条等价直连链路的直连邻居,本地LSA洪泛管理模块通知LSA发送模块仅向所述至少两条等价直连链路中任意一条直连链路上的直连邻居发送所述LSA更新。
对于在区域最短路径树上与本设备之间存在至少两条等价直连链路的直连邻居,仅向所述至少两条等价直连链路中任意一条直连链路上的直连邻居发送所述LSA更新。
由上述技术方案可见,本申请提供的减少LSA洪泛次数的方法和设备由于采取了根据本设备所处区域的网络拓扑是否稳定、以及各三层接口上的各直连邻居在本设备的区域最短路径树上与本设备之间的关系,来判断在特定链路上是否需要向特定邻居发送本设备产生的LSA更新的方式,从而能够减少LSA的冗余更新。本申请技术方案的有益效果具体体现在以下几个方面:
1)现有减少LSA洪泛次数的技术只对两台设备存在多条直连链路的情况有效,在大规模复杂组网环境下,仍然存在较多的冗余LSA洪泛。而采用本申请技术方案,能够利用最短路径树勾画出LSA洪泛的路径,从而大大减少复杂组网中LSA的洪泛数量,不论是对设备本地产生的LSA更新,还是从邻居接收到的其他设备所产生的LSA更新都适用,减少了LSA风暴出现的几率,节省了网络带宽和系统资源。
2)本申请技术方案的实施对设备现有的性能影响不大。首先根据现有技术,链路状态路由协议在计算路由时将先使用SFP算法计算出区域的最短路径树,本申请直接使用该最短路径树即可,无需增加额外的计算量;而且,使用路由器标识在最短路径树中进行查找的速度也是非常迅速的,不会耗费很多时间,而且不需要重复查找;此外,本申请一较佳实施例中,在发送本地设备产生的LSA更新之前,增加了对第一标记位的查找操作,这也并不费时,因为现有发送流程中已经有部分相关查询的操作,这里只是增加一个操作而已。
3)即使网络中存在部分设备没有实施本申请技术方案,也不会影响网络中LSA的最终同步,实施本申请技术方案的设备按照本申请技术方案进行LSA洪泛,没有实施本申请技术方案的设备按照现有流程进行LSA的洪泛,互不影响。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
为减少大规模组网下的LSA洪泛次数,本申请提出一种减少LSA洪泛次数的技术方案,其主要思想是:根据本设备所处区域的网络拓扑是否稳定、以及各三层接口上的各直连邻居在本设备的区域最短路径树上与本设备之间的关系,判断在特定链路上是否需要向特定邻居发送本设备产生的LSA更新,即:确定本设备产生的LSA更新的洪泛范围,从而减少LSA的冗余更新。
在上述技术方案的基础上,为进一步减少LSA的冗余更新,本申请进一步提出:在从某个邻居接收到非本设备产生的LSA更新时,根据本设备所处区域的网络拓扑是否稳定、以及各三层接口上的各直连邻居在本设备的区域最短路径树上与本设备之间的关系,确定非本设备产生的LSA更新的洪泛范围,从而避免了向LSA的产生者发送重复的LSA更新。
基于上述主要思想,本申请提出一种如图2所示的减少LSA洪泛次数的方法,该方法在本设备产生LSA更新时包括以下步骤:
步骤201:判断本设备产生的LSA更新是否影响本设备的网络拓扑,如果不影响本设备的网络拓扑,执行步骤202,如果影响本设备的网络拓扑,执行步骤204。
这里,仅用于描述路由信息的LSA更新属于不影响网本设备的络拓扑的LSA更新;
涉及拓扑信息的LSA更新中,更新前后的区域最短路径树相同的LSA更新也属于不影响本设备的网络拓扑的LSA更新;
涉及拓扑信息的LSA更新中,更新前后的区域最短路径树不相同的LSA更新属于影响本设备的网络拓扑的LSA更新。
步骤202:判断本设备所处区域的网络拓扑是否稳定,如果本设备所处区域的网络拓扑稳定,执行步骤203,如果本设备所处区域的网络拓扑不稳定,执行步骤204。
本申请提供了两种较佳的方式用于判断本设备所处区域的网络拓扑是否稳定。
第一种较佳的方式:
适用于本设备的所有直连邻居设备均实施了本申请技术方案的情况。
如果本设备在N1个连续的失效(dead)周期内没有触发过最短路径优先(SPF)计算,则判定本设备的网络拓扑稳定,并向各个直连邻居发送携带有第一长度类型值(TLV)的Hello报文,所述第一TLV的值字段中携带本设备的区域最短路径树上所有节点的标识,以通知各直连邻居本设备的网络拓扑已稳定;
如果从各个直连邻居均收到Hello报文,且各个Hello报文中第一TLV的值字段中携带的节点的标识所对应的节点均与本设备的区域最短路径树上的节点相同,并且,本设备的网络拓扑稳定,则判定本设备所处区域的网络拓扑稳定,否则,判定本设备所处区域的网络拓扑不稳定;
其中,N1为大于1的整数。
第二种较佳的方式:
适用于本设备的直连邻居设备中存在未实施本申请技术方案的情况。
如果本设备在大于等于N1个连续的失效周期内没有触发过SPF计算,并且本设备所记录的拓扑信息在大于等于N2个连续的失效周期内没有发生过变化,则判定本设备所处区域的网络拓扑稳定,否则,判定本设备所处区域的网络拓扑不稳定;其中,N1和N2为大于1的整数,且N1小于N2。
步骤203:按相应的情况确定LSA更新的洪泛范围,具体而言:
对于在区域最短路径树上与本设备之间仅存在一条链路,且该链路为直连链路的直连邻居,向其发送所述LSA更新;
对于在区域最短路径树上与本设备之间存在至少两条等价直连链路的直连邻居,仅向所述至少两条等价直连链路中任意一条直连链路上的直连邻居发送所述LSA更新。
步骤204:向所有三层接口上的所有直连邻居发送该LSA更新。
至此,结束本申请图2所示方法流程。
在图2所示方法的基础上,本申请进一步提出了用于减少非本设备产生的LSA更新的洪泛次数的方法,具体而言:
当本设备从直连邻居接收到非本设备产生的LSA更新时,首先判断该LSA更新是否影响本设备的网络拓扑,如果该LSA更新影响本设备的网络拓扑,则按照现有协议的相关规定进行处理,在此不再赘述;如果该LSA更新不影响本设备的网络拓扑,则进一步判断本设备所处区域的网络拓扑是否稳定,如果本设备所处区域的网络拓扑不稳定,也按照现有协议的相关规定进行处理,在此不再赘述;如果本设备所处区域的网络拓扑稳定,则执行以下操作:
如果所述非本设备产生的LSA更新的产生者不在本设备的区域最短路径树上,则丢弃该非本设备产生的LSA更新,也就是说,不向直连邻居洪泛所述非本设备产生的LSA更新;
如果所述非本设备产生的LSA更新的产生者在本设备的区域最短路径树上,向除处于本设备去往所述产生者的最短路径上的直连邻居之外的直连邻居洪泛所述非本设备产生的LSA更新;也就是说,不向处于本设备去往所述产生者的最短路径上的直连邻居洪泛所述非本设备产生的LSA更新,并向其余的直连邻居洪泛所述非本设备产生的LSA更新。
图3为本申请一较佳实施例中减少LSA洪泛次数的方法的流程示意图,参见图3,包括:
步骤301:将对应于本设备各个三层接口上的各个直连邻居的第一标记位的初始值置为允许更新。当第一标记位的取值表示允许更新时,允许本设备向对应的三层接口上的直连邻居发送本设备产生的LSA更新;当第一标记位的取值表示不允许更新时,不允许本设备向对应三层接口上的直连邻居发送本设备产生的LSA更新。
例如:可以设置链路邻居LSA更新标记位作为所述第一标记位,在邻居关系中维护该标记位,并对本设备不同链路(对应于三层接口)上的邻居分别维护该标记位。
步骤302:判断本设备所处区域的网络拓扑是否稳定,如果本设备所处区域的网络拓扑不稳定,执行步骤303;如果本设备所处区域的网络拓扑稳定,执行步骤304。
本步骤中,可以预先设置一种新的类型长度值(TLV),该TLV可以在Hello报文中携带。其中:
Type字段用于指示该TLV的类型,例如:取值可以为10;
Length字段的取值为变长值,取决于Value字段的长度;
Value字段中携带Hello报文发送者的区域最短路径树上所有节点的标识;对于OSPF协议,节点的标识是设备的路由器标识(Router ID);对于ISIS协议,节点的标识是设备的网络标识(network-entity)。
Value字段的取值用于通知邻居本设备的区域最短路径树上有哪些节点,一种较佳的携带节点标识的方式是:在Value字段的第一个位置填写区域最短路径树中处于树根位置的节点的标识,后续位置则按照节点在区域最短路径树中的位置依次填写。
假设默认情况下,Hello报文中不携带该新的TLV(在具体实现时,也可以假设默认情况下,Hello报文中携带该新的TLV),当本地设备在N1个连续的失效周期内没有触发过SPF计算时,表示对本设备而言,网络拓扑是稳定的,可以在Hello报文中携带该新的TLV,并在该新的TLV的Value字段中携带本设备的区域最短路径树上所有节点的标识,以通知本设备的直连邻居网络拓扑稳定。这里,N1为大于1的整数,其较佳取值为2。
本申请的实施过程中需要使用本设备进行拓扑计算所得到的最短路径树。根据现有技术,链路状态路由协议在计算路由时将先使用SFP算法计算出区域的最短路径树,因此,本申请直接使用该最短路径树即可,无需增加额外的运算。
如果本设备的所有直连邻居设备均实施了本申请技术方案,那么,各个邻居在判定本设备的网络拓扑稳定时,均将向本设备发送携带有所述新的TLV的Hello报文,本设备接收到邻居发送的Hello报文中携带的新的TLV时,通过分析该TLV能够得到其中所携带的节点的标识所对应的节点,将这些节点与本设备存储的区域最短路径树上的节点进行比较,如果节点均相同,则表明邻居的拓扑计算已稳定,此时,如果本设备的拓扑计算也已稳定,则可以判定本设备所处区域的网络拓扑是稳定的,否则,判定本设备所处区域的网络拓扑不稳定。
如果本设备的直连邻居设备中存在未实施本申请技术方案的设备,那么,本设备将无法从这些设备获取到关于网络拓扑是否稳定的信息,此时,可以通过定时等待的方法来判断网络拓扑是否稳定。具体而言:如果本设备所记录的拓扑信息在N2个连续的失效周期内没有发生过变化,并且,本设备在N1个连续的失效周期内没有触发过SPF计算,则判定本设备所处区域的网络拓扑稳定,否则,判定本设备所处区域的网络拓扑不稳定;其中,N1和N2均为大于1的整数,且N1小于N2。N2的较佳取值为4。
步骤303:将所有直连邻居的第一标记位均置为允许更新,跳到步骤305。
步骤304:按照以下几种情况对各第一标记位进行置位。
第一种情况:对于在区域最短路径树上与本设备之间不存在直连链路的直连邻居(即:离区域最短路径树的树根有多跳的邻居),将其第一标记位置为不允许更新。
这种情况的示例如图4所示,其中,图4左侧为实际物理组网示意图,图4右侧为RT1计算出的最短路径树示意图。图4中,RT1分别与RT2、RT3、RT4建立了直连邻居,RT1与RT3、RT4之间的关系符合上述第一种情况的描述,因此,RT1需要将RT3和RT4的第一标记位置为不允许更新,后续,当RT1自身产生的LSA发生变化后,不需要向直连的RT3、RT4邻居发送,只需发送给RT2即可,再由RT2向RT3、RT4发送。
第二种情况:对于在区域最短路径树上与本设备之间存在至少两条等价直连链路的直连邻居,将其中任意一条直连链路上的直连邻居的第一标记位置为允许更新,将其余直连链路上的直连邻居的第一标记位置为不允许更新。
这种情况的示例如图5所示,其中,图5左侧为实际物理组网示意图,图5右侧为RT2计算出的最短路径树示意图。图5中,RT2和RT4之间存在两条等价路径,这符合上述第二种情况的描述,RT2可以将这两条等价路径中的任意一条路径所对应的RT4的第一标记位置为允许更新,并将另一条路径所对应的RT4的第一标记位置为不允许更新。一种较佳的处理方式是:如果在最短路径树中A接口排在第一号位置,则将RT2在链路A上与RT4的邻居关系中的第一标记位保持为允许更新,而将RT2在链路B上与RT4的邻居关系中的第一标记位置为不允许更新。
第三种情况:对于在区域最短路径树上与本设备之间存在至少一条直连链路和至少一条非直连链路的直连邻居,并且,所述至少一条直连链路和至少一条非直连链路为等价链路时,将所述至少一条直连链路所对应的直连邻居的第一标记位置为不允许更新。
这种情况的示例如图6所示,其中,图6左侧为实际物理组网示意图,图6右侧为RT1计算出的最短路径树示意图。图6中,RT1分别与RT2、RT3、RT4建立了直连邻居,RT1到RT3存在两条等价路径,其中一条是直连路径,另外一条是通过RT2的非直连路径,这符合上述第三种情况的描述,因此,RT1需要将RT3的第一标记位设置为不允许更新,后续,当RT1自身产生的LSA发生变化后,不需要向直连的RT3邻居发送。此外,RT1与RT4之间的关系符合上述第一种情况的描述,RT1需要将RT4的第一标记位置为不允许更新。因此,在图6所示示例中,RT1仅需将自身产生的LSA更新发送给RT2即可,再由RT2向RT3、RT4发送。
步骤305:当本设备产生不影响本设备的网络拓扑的LSA更新时,根据第一标记位确定本设备产生的LSA更新的洪泛范围。
具体而言:当本设备产生的LSA更新不影响本设备的网络拓扑时,仅向第一标记位为允许更新的三层接口上的直连邻居发送所述LSA更新;当本设备产生的LSA更新影响本设备的网络拓扑时,向所有三层接口上的所有直连邻居发送该LSA更新。。
步骤306:当从直连邻居接收到非本设备产生的LSA更新时,根据本设备所处区域的网络拓扑是否稳定、以及各三层接口上的各直连邻居在本设备的区域最短路径树上与本设备之间的关系,确定该LSA更新的洪泛范围。
具体而言:在本设备所处区域的网络拓扑不稳定情况下,对从邻居接收到的非本设备产生的LSA更新,按照现有协议的相关规定进行处理,在此不再赘述。
在本设备所处区域的网络拓扑稳定情况下,按照如下判断步骤确定该LSA的洪泛范围:
如果非本设备产生的LSA更新的产生者不在本设备的区域最短路径树上,则表示该LSA更新所对应的产生者已经从网络中被移除,该LSA对前缀计算没有帮助,是无效LSA,因此,不需要向任何邻居进行洪泛,除非邻居发送请求报文进行请求;
如果非本设备产生的LSA更新的产生者在本设备的区域最短路径树上,则表示该LSA更新是有效LSA,需要进行洪泛,此时,可以根据最短路径树来判断其洪泛范围:
如果某直连邻居对应的节点处于去往该LSA更新的产生者的最短路径上,则不需要向该直连邻居发送该LSA更新(说明直连邻居离LSA产生者更近,由LSA产生者进行更新即可,无需由下游设备进行更新),反之则需要向直连邻居进行更新。
至此,结束本申请图3所示较佳实施例的方法流程。
需要说明的是:上述步骤305和306的执行没有严格的先后次序之分,只要相应的条件满足,即可执行。
对应于上述方法,本申请提供了一种如图7所示的减少LSA洪泛次数的设备,参见图7,该设备至少包括:本地LSA洪泛管理模块710和LSA发送模块720,其中:
在本设备产生影响本设备的网络拓扑的LSA更新时,本地LSA洪泛管理模块710通知LSA发送模块720向所有三层接口上的所有直连邻居发送所述LSA更新;
在本设备产生不影响本设备的网络拓扑的LSA更新时,如果本设备所处区域的网络拓扑不稳定,本地LSA洪泛管理模块710通知LSA发送模块720向所有三层接口上的所有直连邻居发送所述LSA更新;如果本设备所处区域的网络拓扑稳定,则:
对于在区域最短路径树上与本设备之间仅存在一条链路,且该链路为直连链路的直连邻居,本地LSA洪泛管理模块710通知LSA发送模块720向其发送所述LSA更新;
对于在区域最短路径树上与本设备之间存在至少两条等价直连链路的直连邻居,本地LSA洪泛管理模块710通知LSA发送模块720仅向所述至少两条等价直连链路中任意一条直连链路上的直连邻居发送所述LSA更新。
为了减少非本设备产生的LSA更新的洪泛次数,可以在图7所示设备中增加非本地LSA洪泛管理模块730;
当从直连邻居接收到非本设备产生的LSA更新,且该LSA更新不影响本设备的网络拓扑时,如果本设备所处区域的网络拓扑稳定,则:
如果所述非本设备产生的LSA更新的产生者不在本设备的区域最短路径树上,非本地LSA洪泛管理模块730丢弃所述非本设备产生的LSA更新;
如果所述非本设备产生的LSA更新的产生者在本设备的区域最短路径树上,非本地LSA洪泛管理模块730通知LSA发送模块720向除处于本设备去往所述产生者的最短路径上的直连邻居之外的直连邻居洪泛所述非本设备产生的LSA更新。
为了判断本设备所处区域的网络拓扑是否稳定,可以在图7所示设备中进一步设置稳定性判断模块740,该稳定性判断模块740用于向本地LSA洪泛管理模块710和非本地LSA洪泛管理模块730提供关于网络拓扑是否稳定的判断结果。
对应于如前所述的两种较佳的用于判断本设备所处区域的网络拓扑是否稳定的方式,稳定性判断740也存在两种较佳的工作方式。
第一种工作方式:
所述稳定性判断模块740用于统计本设备最近一次触发SPF计算至当前时刻的失效周期数,如果所述失效周期数大于等于N1,判定本设备的网络拓扑稳定,向各个直连邻居发送携带有第一TLV的Hello报文,所述第一TLV的值字段中携带本设备的区域最短路径树上所有节点的标识;其中,N1为大于1的整数;
如果从各个直连邻居均收到所述Hello报文,且各个Hello报文中第一TLV的值字段中携带的节点的标识所对应的节点均与本设备的区域最短路径树上的节点相同,并且,本设备的网络拓扑稳定,稳定性判断模块740判定本设备所处区域的网络拓扑稳定,否则,判定本设备所处区域的网络拓扑不稳定。
第二种工作方式:
稳定性判断模块740用于统计本设备最近一次触发SPF计算至当前时刻的失效周期数,并用于统计本设备最近一次修改拓扑信息至当前时刻的失效周期数,如果本设备最近一次触发SPF计算至当前时刻的失效周期数大于等于N1,并且,本设备最近一次修改拓扑信息至当前时刻的失效周期数大于等于N2,则判定本设备所处区域的网络拓扑稳定,否则,判定本设备所处区域的网络拓扑不稳定;
其中,N1和N2为大于1的整数,且N1小于N2。
本申请适用于所有基于链路状态的路由协议(如OSPF、ISIS),在各种复杂组网环境下(不仅仅包括两台设备直连),设备之间的邻居关系已经稳定建立时,进行LSA的突发或周期性洪泛。特别适用于LSA更新前后网络拓扑没有发生变化,而只是路由信息发生改变的情况。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。