IP骨干网BGP路由协议的扩展性

1 制约BGP扩展性的几个问题

BGP是目前应用在因特网上的IP网络互联协议,为运营商之间的互联提供了稳定而安全的路由协议,具有丰富的路由控制机制。 为了更好地控制路由策略,当前大部分的运营商均将BGP部署到骨干路由器。随着网络的不断扩展、路由器数目的增多以及路由信息条目的激增,解决BGP的扩展性问题变得越来越重要。

目前BGP的扩展性面临如下几个问题。

(1)I-BGP的Full-Mesh问题

BGP路由协议分为I-BGP和E-BGP两个部分。I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。为了防止产生环回路由,BGP协议要求一个路由器通过I-BGP学到的路由,不再向其他I-BGP邻居广播,所以一个自治域内所有参加I-BGP协议的路由器都要与其他路由器建立会话,从而保证路由信息能够正确地广播到每一个路由器。依照这个原则,一个自治域内总的I-BGP会话数为N×(N-1)/2 (N为运行I-BGP的路由器数),当N不断增大时,这个数字会大得惊人:如100台路由器,则会话数为4950。这对网络设备而言是个非常大的负担,而且还将使网络的管理与配置变得异常复杂。而骨干网通常由大量的运行I-BGP的路由器组成,因此,这个问题是否能够解决,直接影响到网络规模的大小。

(2)更改路由策略时路由振荡的问题

BGP属于增量更新的路由协议,当有新的路由要发布时,路由器会向邻居发送Update信息,而如果要删除某条路由时,就会发送Withdraw信息。BGP路由的Flap的定义是:当一条路由在被收回(Withdraw)后,又被广播(Update)出来,视为一次Flap。由于任何一条路由的收回和更新都会导致一台路由器整个路由表重新计算,因此当Flap的情况比较多时,对路由器设备的负载将产生巨大的压力。根据笔者在实际工作中的经验,一般情况下,一台高端路由器在计算BGP路由的时候,CPU的负载基本上在80%~90%左右,有时甚至达到100%,占用了几乎所有的CPU资源。虽然目前大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来减少主CPU忙导致的路由器性能下降的问题,但是路由表的频繁变化和更新,对整个设备的运行还是有一定的影响的,而且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。

(3)其他需要考虑的问题

除了上面的两个问题会导致对路由器资源过量消耗之外,还有其他的一些因素,如路由的数目、BGP路由表的大小和路由计算的方式等,同样也会影响路由器的性能。

另外,网络越大,路由条目越多,配置和管理的工作也就越复杂,这就需要在网络设计的时候尽量简化配置,降低管理人员的工作强度,避免人为原因造成故障。

2 如何解决制约BGP扩展性的问题

针对以上问题,介绍一些相关的解决方法。

(1)解决I-BGP会话数瓶颈的方法

上面提到的I-BGP的会话数过多的问题,可以采取两种办法来解决:

1)联盟的方法(Confederations)

联盟的工作原理是:将原来一个自治域的网络分成多个子自治域,通过Confederations id将原AS号配置到每个路由器上。这样有两个好处:一是可以保留原有的I-BGP属性,包括Local Preference、MED和NEXT_HOP;二是能在Confederations的功能中自动实现,无需管理员在网络的出口处配置过滤内部AS号信息的操作。

时间: 2024-12-04 01:34:00

IP骨干网BGP路由协议的扩展性的相关文章

asp.net的10个提升性能或扩展性的秘密(一)

简介 Asp.net有很多值得你挖掘的"秘密",当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈,它们很容易被解决,从而使认证和授权更加快速.另外,asp.net的http管线可以为每一个请求作处理,防止执行了某些不必要的代码而遭受攻击.不只是这些,asp.net工作进程能够突破默认限制,从而完全发挥它的威力.在浏览器端(不是在服务器端)的页面分段输出缓存能显著减少由于请求访问所需要占用的大量下载时间.在

优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads

译文在后面. State Threads for Internet Applications Introduction State Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on UNIX-like platforms. It combines the simplicity of the multi

DNS多点部署IP Anycast+BGP实战分析

DNS多点部署IP Anycast+BGP实战分析 DNS领域的多点部署大多采用IP Anycast+BGP方式,采用这种方式不需要额外采购设备,部署灵活多样.但像其他所有技术一样,IP Anycast+BGP技术只有在适当的领域和范围内才能发挥它的最大优势. Internet不断发展,上网人群数量增加,多数网站或DNS等服务在使用单节点提供服务的情况下,无论服务器性能还是接入带宽都不足以承载大量的用户服务请求; 而在国内运营商网络之间访问缓慢的问题一直存在; 此外,服务的高可用性也逐渐被重视.

软件系统的后台管理中心的功能扩展性和易用性

网页制作Webjx文章简介:网站管理页面设计技巧:布局中的黄金法则. 关于"管理中心"的界面设计框架,一般我们都会选择传统的"工"字结构,顶部是形象区,左侧是功能列表区,右侧是操作区,这种结构的功能扩展性和易用性都是非常好的,几乎90%以上的软件系统的后台管理中心都是采用这样的结构.         在实际设计工作中我们发现,用户总是希望能把操作区的区域尽量变大,以最大限度满足业务工作,提高使用效率.我们对信息的浏览习惯于向下扩展,进行纵向滚动.也就是说在显示器分辨

利用.NET的Reflection增强对象工厂的扩展性

对象 对象工厂      对象工厂(Object Factory)模式通常被用来从一个派生系统中产生某个对象,并将其作为基类的实例返回,从而获得基类的接口,并尽量掩盖派生类的细节,以便充分利用面向对象的多态性来获得强大的功能.通常,对象工厂的实现方法是,在一个工厂方法中,先利用一个基于类型标记(type tag)的switch语句找出适当的类型,然后创建该类型的实例并返回之.            举例来说,设想一个图形系统,它包括了线.圆.矩形等元素,这些元素具有一些公共的操作,比如Draw.

java的扩展性

现在,让我们仍然返回乐器(Instrument)示例.由于存在多形性,所以可根据自己的需要向系统里加入任意多的新类型,同时毋需更改true()方法.在一个设计良好的OOP程序中,我们的大多数或者所有方法都会遵从tune()的模型,而且只与基础类接口通信.我们说这样的程序具有"扩展性",因为可以从通用的基础类继承新的数据类型,从而新添一些功能.如果是为了适应新类的要求,那么对基础类接口进行操纵的方法根本不需要改变, 对于乐器例子,假设我们在基础类里加入更多的方法,以及一系列新类,那么会出

ISP如何在网内部署BGP路由协议

随着INTERNET在中国的发展,ISP服务商与INTERNET的连接也在发生着变化.在网络连接上,从单一的连接,到通过多个电信公司多条线路连接到INTERNET:在所使用的路由协议方面,从使用的静态路由协议,发展到使用BGP(Border gateway protocol).那么ISP如何随着网络的发展,在网络内部合理有效地部署BGP路由协议呢?我们将在本文中简要的介绍一下.实际上,如何在网内部署BGP路由协议的主导思想也就是如何使自治域内部的路由器获得自治域外部路由信息,从而引导访问域外的流

php弹出错误警告函数扩展性强

利用php弹出警告的函数,整理到自己的代码库中去在遇到错误的地方可用到此函数,扩展性强,喜欢的朋友可以收藏下 分享一个非常实用,本人一直在用的利用php弹出警告的函数,整理到自己的代码库中去在遇到错误的地方可用到此函数,扩展性强,完整代码如下  代码如下: //********弹出alert框并跳转到指定页面******//  function alert($message,$url='',$isAlert=true,$title='提示'){  echo '<html><head>

通过对象属性表来增加系统的扩展性

在数据中设计时,通过对象属性表来增加系统的扩展性.如新闻系统中有新闻表t_news ,同时增加一个新闻 属性表t_news_prop, 这样新闻表的字段不能满足需求时,使用属性表就可以实现需求,只需要增加一条记 录到属性表中即可. 数据结构简单例子如下: t_news id  新闻IDtitle 新闻标题content 新闻内容addtime  时间 t_news_prop id  新闻IDpropName 属性名称propValue 属性值