一种边界网关协议递归路由更新的方法

文档序号:7658255阅读:209来源:国知局
专利名称:一种边界网关协议递归路由更新的方法
技术领域
本发明涉及一种边界网关协议递归路由更新的方法,更具体的涉及一种在使用边界网关协议BGP(Border Gateway Protocol边界网关协议)的IP(Internet Protocol网际协议)路由器上实现对BGP递归路由更新的方法。
背景技术
路由黑洞网络中存在一条不可达的虚假路由,试图根据此路由到达目的地的所有流量都会被丢弃。可见,在网络运行过程中,需要避免和阻止路由黑洞的产生。
BGP递归路由当源路由器通过BGP协议通告一条路由到目的路由器后,目的路由器根据源路由器通告的NLRI(Network Layer ReachabilityInformation网络层可达信息)信息,将首先产生一条BGP路由。这条BGP路由的下一跳是通过和NLRI信息中对应的Next-HOP(下一跳)属性来描述的,通常称之为BGP路由下一跳。然而,由于该属性所描述的BGP路由下一跳通常并不是真正的流量转发所需要用到的下一跳。因此该路由一旦要加入IP路由表的话,必须根据BGP路由下一跳递归查找IP路由表,找到到达这个BGP路由下一跳所对应的IP路由下一跳。最后,此NLRI携带的路由前缀和通过递归查找找到的IP路由下一跳作为一条最终的路由加入IP路由表。这个过程可以通过附图1来描述,包括以下步骤步骤101,收到源路由器通告发来的NLRI信息;步骤102,生成BGP路由,其前缀为NLRI信息中携带的IP可达信息,其BGP下一跳为报文中携带的Next-hop属性;步骤103,根据Next-Hop属性中描述的BGP下一跳信息递归查找IP路由表;步骤104,能否找到该BGP下一跳所对应的下一跳IP地址在IP路由表中对应的路由;如果找到,执行步骤105;否则,执行步骤106;步骤105,将解析找到的路由的下一跳,最为真正的IP路由下一跳,加入IP路由表;步骤106,该路由无效,不加入路由表。
IGP(Interior Gateway Protocol内部网关协议)和BGP路由同步IGP和BGP路由同步是指,当运行BGP协议的路由器从E-BGP(External-Border Gateway Protocol外部边界网关协议)中接收到来自外部自治系统AS(Autonomous System)的路由条目并转发给所有I-BGP(Internal-Border Gateway Protocol内部边界网关协议)邻居后,I-BGP邻居在学习到该路由并准备加入IP路由表前必须要检查该路由是否已经通过IGP协议学习到,如果该路由已经通过IGP协议学习到,则认为此时I-BGP路由和IGP路由是同步的,可以加入路由表。否则则该路由是非同步的,路由可能不会加入路由表。IGP和BGP路由同步的目的是为了避免由于路由非同步带来的流量转发的丢失。
比如在附图2中,路由器R1和路由器R4建立I-BGP邻居关系,R1通过E-BGP从AS100处学习到路由1.1.1.1,该路由通过I-BGP通告给R4。那么在R4上就会有一条BGP路由,其前缀为1.1.1.1,其BGP下一跳指向AS100边界路由器上的某个接口。此后根据BGP递归路由查找,找到BGP路由下一跳对应的的IP下一跳指向R3。从前面所说的BGP路由写入IP路由表的过程中可以看出,在路由器R4上1.1.1.1这条路由最终在IP路由表中的下一跳将指向R3。假设此时AS300中运行的IGP协议并没有发现1.1.1.1这条路由,则该条路由将不会出现在路由器R2和R3的路由表中。这样,如果有到1.1.1.1这个目的地址的流量,在R4上由于有I-BGP路由存在,将被转发到路由器R3上,但是由于R3路由器不知道如何到达该目的地,流量将在路由器R3上被丢弃,这样就产生了流量转发黑洞。而如果有IGP和BGP路由同步过程,则这样的流量转发黑洞在附图2所描述的网络拓扑中将被避免。IGP和BGP路由同步的应用场景通常为过渡AS内部的I-BGP路由和IGP路由同步,而I-BGP属于BGP的一种。这个过程可以通过附图3来描述,包括以下步骤步骤201,路由器从I-BGP邻居处学到路由;步骤202,检测该路由是否已从IGP处学习到,如果是,则执行步骤203;否则,执行步骤204;步骤203,该路由有效,可以加入路由表步骤204,该路由无效,或者直接认为该路由不存在。
从对上面的几个概念的描述中,我们可以知道当路由器通过E-BGP接收到来自外部自治系统的路由并转发给所有的I-BGP邻居,I-BGP邻居收到这条路由后,这条路由将成为一条BGP路由。此后,将根据该路由携带的Next-hop属性递归查找IP路由表,找到路由的BGP下一跳所对应的IP下一跳。此后根据IGP和BGP同步原则,还需要查看这条路由是否通过IGP学习到。如果通过IGP学习到,则该条路由将加入IP路由表,其前缀通过I-BGP邻居在NLRI信息中通告过来,而其下一跳为递归查找到的IP路由下一跳。如果这条路由没有通过IGP学习到,则视为无效路由。
然而,是否BGP递归路由下一跳解析完成,并且满足IGP和BGP路由同步的条件,这条路由就是有效的,就不会引起流量转发黑洞呢 答案是否定的。我们认为如果IGP路由下一跳和对BGP递归路由下一跳解析出的最终的IP路由下一跳不一致的话,仍然会出现流量转发黑洞。如附图4所描述。在附图4中我们可以看到,R1和R4建立I-BGP邻居关系,路由1.1.1.1通过E-BGP从AS100通告到AS300的R1路由器。R1路由器通过I-BGP将路由发送给R4路由器,并且AS300中运行的IGP协议将该路由通过路由器R1,R2,R3,R4(附图4中的路径2)同步给R4路由器。R1路由器和R4路由器之间I-BGP的下一跳则通过R1,R5,R4(附图4中的路径1)同步给R4路由器。可以看出,由于IGP并没有将1.1.1.1这条路由通告给R5路由器,因此R5路由器上并不知道如何将到目的网段1.1.1.1的流量转发出去。
根据I-BGP路由的产生过程可知,当路由器R4通过I-BGP接收到来自R1的路由1.1.1.1后,首先,将根据该路由携带的下一跳属性进行递归查找,由于目前到I-BGP的下一跳是通过路径1,经过R1,R5,R4通告过来。因此递归查找的结果是该路由的下一跳指向路由器R5;其次,路由器R4将查看这条路由是否满足IGP和I-BGP同步条件,可以看出由于该路由已经通过路径2从R1,R2,R3到达R4路由器,因此该路由满足IGP和I-BGP同步要求。因此在R4路由器上将产生到目的网段1.1.1.1的路由,其下一跳指向路由器R5。
现在问题产生了,当R4路由器收到到目的地1.1.1.1的流量后,将把流量转发到R5路由器上,而由于R5路由器上并不知道如何到达1.1.1.1。因此该流量在R5路由器上还是被最终丢弃了,这样就产生了流量转发黑洞。
产生这个问题的根本原因是IGP路由下一跳和对BGP递归路由下一跳解析出的最终的IP路由下一跳不一致所引起的。

发明内容
本发明要解决的技术问题是提供一种边界网关协议递归路由更新的方法,能够避免在IGP和BGP路由同步过程中由于IGP路由下一跳和对BGP递归路由下一跳解析出的最终的IP路由下一跳不一致的原因,而产生的基于BGP递归路由的流量转发黑洞的问题。
为了解决上述问题,本发明提供了一种边界网关协议递归路由更新的方法,包括以下步骤(1)运行BGP的IP路由器收到I-BGP邻居发送的路由更新报文,生成一条BGP路由;
(2)根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析;并检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成;其中,进一步包括(3)如果IGP和BGP路由同步完成,则比较通过学习得到的IGP下一跳和解析后的BGP下一跳是否一致;如果一致,则直接更新IP路由表,该路由有效;如果不一致,则根据用户的配置要求,进行相应的路由更新;进一步的,本发明所述的方法,其中,所述步骤(3)中,如果不一致,则根据用户的配置要求,进行相应的路由更新,具体包括以下步骤(3a)如果用户配置这种情况下路由无效,则为该路由设置无效标记或认为该路由不存在;(3b)如果用户配置这种情况下仍然采用传统的BGP路由更新方式,则将BGP下一跳的递归解析得出的下一跳作为最终IP路由的下一跳,并将该路由同步到IP路由表中;(3c)如果用户配置这种情况下仍然应该保证流量转发的正确性,则将IGP路由的下一跳作为最终IP路由的下一跳,并将该路由同步到IP路由表中;本发明所述的方法,其中,所述步骤(3)进一步包括如果IGP和BGP路由同步没有完成,则认为该路由无效,为该路由设置无效标记或认为该路由不存在;进一步的,本发明所述的方法,其中,所述步骤(1)中,该BGP路由的IP可达信息在I-BGP邻居通告的BGP路由更新报文中的网络层可达信息中携带;进一步的,本发明所述的方法,其中,所述步骤(1)中,该BGP路由的BGP下一跳在I-BGP邻居通告的BGP路由更新报文中的下一跳属性中携带;进一步的,本发明所述的方法,其中,所述步骤(1)包括以下步骤
(1a)收到I-BGP邻居发送的更新报文后,通过解析网络层可达信息部分,得到BGP路由前缀;(1b)通过解析路由更新报文的路径属性部分中的下一跳属性,得到BGP下一跳;(1c)根据上述步骤得到的BGP路由前缀和BGP下一跳,生成一条BGP路由;进一步的,本发明所述的方法,其中,所述步骤(2)中,根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析,具体包括以下步骤(2a)路由器创建BGP路由后,根据BGP下一跳递归查找IP路由表;如果查找失败,则执行步骤(2b);如果查找成功,则执行步骤(2c);(2b)认为路由无效,直接返回;(2c)记录递归解析后所得到的BGP下一跳对应的IP下一跳;进一步的,本发明所述的方法,其中,所述步骤(2)中,检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成,具体包括以下步骤(2A)路由器根据该BGP路由在IP路由表中查找是否存在相应的IGP路由;(2B)如果IGP未学习到该BGP路由,则认为IGP和BGP路由同步没有完成;(2C)如果IGP已学习到该BGP路由,则认为IGP和BGP路由同步已经完成,记录查找到的IGP路由的下一跳。
采用本发明所述方法,与现有技术相比,本发明利用了IGP路由下一跳能够正确地反映出网络中其他路由器对目的网段的认知情况这一特性,在边界网关协议对递归路由的更新过程中采用新的方法,较好的解决了这一情况下的转发流量丢弃情况,为了和传统方法兼容,本发明提供了多种用户选择方案,实现了方法的完备性。这种新的边界网关协议对递归路由更新的方法,能够避免流量转发黑洞的形成,提高网络运行的灵活性,并降低了网络故障排除的复杂性。


图1为现有技术中BGP递归路由加入路由表的过程流程图;图2为现有技术中IGP和I-BGP非同步带来的转发流量的丢弃网络拓扑图;图3为现有技术中IGP和BGP路由同步过程流程图;图4为现有技术中IGP下一跳和解析后的BGP下一跳不一致引起的流量转发黑洞的网络拓扑图;图5为本发明实施例中一种边界网关协议递归路由更新的方法示意图;图6为本发明实施例中一种边界网关协议递归路由更新的方法处理流程图。
具体实施例方式
本发明为了解决传统技术方案存在的弊端,通过以下具体实施例进一步阐述本发明所述的一种边界网关协议递归路由更新的方法,以下对具体实施方式
进行详细描述,但不作为对本发明的限定。
如图5所示,为本发明实施例中一种边界网关协议递归路由更新的方法示意图。包括以下步骤步骤301,运行BGP的IP路由器收到I-BGP邻居发送的路由更新报文,生成一条BGP路由;步骤302,根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析;并检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成;步骤303,如果IGP和BGP路由同步完成,则比较通过学习得到的IGP下一跳和解析后的BGP下一跳是否一致;如果一致,则直接更新IP路由表,该路由有效;如果不一致,则根据用户的配置要求,进行相应的路由更新。
当出现IGP路由下一跳和对BGP递归路由下一跳解析出的最终的IP路由下一跳不一致时,可以根据用户的配置要求,进行多种方式的路由更新,这些方式包括1)认为路由无效。2)仍然选用BGP递归路由下一跳解析结果作为最终IP路由的下一跳。3)采用IGP路由下一跳作为最终的IP路由下一跳。这样如果选择更新方法3的话就能够避免转发流量的丢弃现象。
如图6所示,为本发明实施例中一种边界网关协议递归路由更新的方法处理流程图。依据上一个实施例,本实施例中具体实施过程可以分成三个大的组成部分。第一个部分为运行边界网关协议的IP路由器收到I-BGP邻居发来的路由更新报文,生成BGP递归路由信息,并进行下一跳的递归查找,并记录递归查找到的IP下一跳;第二个部分为IGP和I-BGP路由同步过程,并记录IGP下一跳;第三个部分为比较第一部分查找到的IP下一跳和第二部分记录的IGP下一跳是否一致,在不一致的情况下,采用合适的方法对边界网关协议递归路由进行更新。包括以下步骤步骤401,运行边界网关协议的IP路由器收到I-BGP邻居发来的更新报文;步骤402,根据更新报文中的NLRI信息,生成BGP路由;其前缀为NLRI信息中携带的IP可达信息,其BGP下一跳为更新报文中携带的Next-hop属性;步骤403,根据生成的BGP下一跳信息递归查找IP路由表;步骤404,如果找到此下一跳IP地址在IP路由表中对应的路由,则执行步骤405;如果未能找到BGP下一跳对应的IP下一跳,则执行步骤410;
步骤405,找到此下一跳IP地址在IP路由表中对应的路由,并记录该路由的下一跳信息,这一过程将BGP下一跳转换为IP下一跳;步骤406,根据BGP路由的前缀信息查找IP路由表,检测此路由是否通过IGP协议学习到,从而判断IGP和BGP路由同步是否完成;如果此路由在IP路由表中找到,说明IGP已学习到该BGP路由,则认为IGP和BGP路由同步已经完成,执行步骤407;如果此路由在IP路由表中没有找到,说明IGP未学习到该BGP路由,则认为IGP和BGP路由同步没有完成,执行步骤410;步骤407,记录查找到的IGP路由的下一跳,并比较查找到的IGP路由下一跳和BGP下一跳递归解析后得到的IP下一跳是否一致;如果一致,则执行步骤408;如果不一致,则执行步骤409;步骤408,不会产生转发流量黑洞,直接更新IP路由表,该路由有效,可以直接同步到IP路由表中;步骤409,用户是否认为这种情况下路由无效,如果是,则执行步骤410;否则,执行步骤411;步骤410,为该路由设置无效标记或者直接认为该路由不存在;步骤411,用户是否认为这种情况下采用传统的BGP处理方式;如果是,则执行步骤412;否则,执行步骤413;步骤412,将BGP下一跳递归解析所得的IP下一跳作为此路由最终的下一跳,并同步到IP路由表中;步骤413,将IGP下一跳作为此路由最终的下一跳,并同步到IP路由表中。
这种机制的可行性在于产生转发流量丢弃的原因是IGP路由下一跳和BGP递归路由下一跳解析出的最终的IP路由下一跳不一致,而对于BGP的处理来说,采用了BGP递归路由下一跳解析的结果作为最终路由表中的下一跳。而此时由于递归路由下一跳解析结果并没有真正的反映出网络中其他路由器对该目的网段的认知情况,因此出现了转发流量的丢弃情况。如果在这种情况下我们采用IGP路由下一跳作为最终路由表中的下一跳的话,则能够避免转发流量的丢弃情况,因为IGP路由的下一跳实际上真正的反映了网络中其他路由器对该目的网段的认知情况。
这种机制的技术完备性在于1)目前对于IP网络设备来说,其流量转发平面和路由控制平面是各自独立,相互分离的。对于路由控制平面来说,其要做的工作仅是发现到目的网段的最优的和正确的路由,不需要关注到该目的网段流量是如何转发的。而转发平面所关注的是如何根据已有的路由将流量转发到目的地,至于该路由是通过什么方式获得的并不需要关心。
2)我们为用户提供了多种配置需求,可以选择认为路由无效,也可以选择用BGP递归路由下一跳解析结果作为最终IP路由的下一跳,还可以选择采用IGP路由下一跳作为最终的IP路由下一跳。这样不仅具有良好的兼容性还具有技术的完备性。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种边界网关协议递归路由更新的方法,包括以下步骤(1)运行BGP的IP路由器收到I-BGP邻居发送的路由更新报文,生成一条BGP路由;(2)根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析;并检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成;其特征在于,进一步包括(3)如果IGP和BGP路由同步完成,则比较通过学习得到的IGP下一跳和解析后的BGP下一跳是否一致;如果一致,则直接更新IP路由表,该路由有效;如果不一致,则根据用户的配置要求,进行相应的路由更新。
2.如权利要求1所述的方法,其特征在于,所述步骤(3)中,如果不一致,则根据用户的配置要求,进行相应的路由更新,具体包括以下步骤(3a)如果用户配置这种情况下路由无效,则为该路由设置无效标记或认为该路由不存在;(3b)如果用户配置这种情况下仍然采用传统的BGP路由更新方式,则将BGP下一跳的递归解析得出的下一跳作为最终IP路由的下一跳,并将该路由同步到IP路由表中;(3c)如果用户配置这种情况下仍然应该保证流量转发的正确性,则将IGP路由的下一跳作为最终IP路由的下一跳,并将该路由同步到IP路由表中。
3.如权利要求1所述的方法,其特征在于,所述步骤(3)进一步包括如果IGP和BGP路由同步没有完成,则认为该路由无效,为该路由设置无效标记或认为该路由不存在。
4.如权利要求1所述的方法,其特征在于,所述步骤(1)中,该BGP路由的IP可达信息在I-BGP邻居通告的BGP路由更新报文中的网络层可达信息中携带。
5.如权利要求1所述的方法,其特征在于,所述步骤(1)中,该BGP路由的BGP下一跳在I-BGP邻居通告的BGP路由更新报文中的下一跳属性中携带。
6.如权利要求1所述的方法,其特征在于,所述步骤(1)包括以下步骤(1a)收到I-BGP邻居发送的更新报文后,通过解析网络层可达信息部分,得到BGP路由前缀;(1b)通过解析路由更新报文的路径属性部分中的下一跳属性,得到BGP下一跳;(1c)根据上述步骤得到的BGP路由前缀和BGP下一跳,生成一条BGP路由。
7.如权利要求1所述的方法,其特征在于,所述步骤(2)中,根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析,具体包括以下步骤(2a)路由器创建BGP路由后,根据BGP下一跳递归查找IP路由表;如果查找失败,则执行步骤(2b);如果查找成功,则执行步骤(2c);(2b)认为路由无效,直接返回;(2c)记录递归解析后所得到的BGP下一跳对应的IP下一跳。
8.如权利要求1所述的方法,其特征在于,所述步骤(2)中,检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成,具体包括以下步骤(2A)路由器根据该BGP路由在IP路由表中查找是否存在相应的IGP路由;(2B)如果IGP未学习到该BGP路由,则认为IGP和BGP路由同步没有完成;(2C)如果IGP已学习到该BGP路由,则认为IGP和BGP路由同步已经完成,记录查找到的IGP路由的下一跳。
全文摘要
本发明公开了一种边界网关协议递归路由更新的方法,包括以下步骤(1)运行BGP的IP路由器收到I-BGP邻居发送的路由更新报文,生成一条BGP路由;(2)根据所述BGP路由查找IP路由表,进行BGP下一跳的递归解析;并检测IGP是否已经学习到该BGP路由,从而判断IGP和BGP路由同步是否完成;(3)如果IGP和BGP路由同步完成,则比较通过学习得到的IGP下一跳和解析后的BGP下一跳是否一致;如果一致,则直接更新IP路由表,该路由有效;如果不一致,则根据用户的配置要求,进行相应的路由更新。本发明所述的方法,能够避免在IGP和BGP路由同步过程中产生的基于BGP递归路由的流量转发黑洞的问题。
文档编号H04L12/66GK101076029SQ200710129439
公开日2007年11月21日 申请日期2007年7月12日 优先权日2007年7月12日
发明者金昊, 朱彤, 王征, 钱霄鸿 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1