深刻理解BGP的几个路由特性(试读连载六)

如下内容摘笔者编著,如今接受最优惠的7折预订(并送特制的2011年台历),即将于11月8号首发上市的《路由器配置与管理彻底手册——H3C篇》。本书完整目录参见:http://winda.blog.51cto.com/55153/353767 网络

其姊妹篇——《路由器配置与管理彻底手册——Cisco篇》的完整目录参见:http://winda.blog.51cto.com/55153/333804负载均衡

10.1.2 BGP的几种主要路由属性 ide

       BGP路由属性是BGP 路由的核心概念。它是一组参数,在路由更新消息中一同被发给链接对等体/对等体组。这些参数记录了BGP路由信息,用于选择和过滤路由。它们能够被看做是选择路由的度量(metric)。工具

      BGP路由属性能够分红四类:公认强制(Well-known mandatory attributes)、公认自由选择(Well-known discretionary attributes)、可选传递(Optional transitive attributes)和可选非传递(Optional nontransitive attributes)。学习

       公认的(Well-known)属性对于全部的BGP路由器来讲都是可辨别的;每一个路由更新消息中都必须包含强制(mandatory)公认属性,而自由选择的(discretionary)公认属性则是可选的,可包括也可不包括。对于可选的(Optional)属性,不是全部的BGP工具都支持它。当BGP不支持这个属性时,若是这个属性是过渡性的(transitive),则会被接受并传给其余的BGP对等体;若是这个属性是非传递性的(nontransitive),则被忽略,不传给其余对等体。
       在技术文档RFC1771定义了1~7号的BGP路由属性,依次是:1,ORIGIN(产生该路由信息的AS);2,AS_PATH(包已经过的AS集或序列);3,NEXT_HOP(要到达该目的下一跳的IP地址,iBGP链接不会改变从EBGP发来的NEXT_HOP);4,MULTI_EXIT_DISC(MED,本地路由器使用,区别到其余AS的多个出口);5,LOCAL-PREF(在本地AS内传播,标明各路径的优先级);6,ATOMIC_AGGREGATE;7,AGGREGATOR。在RFC1997中还定义了8,COMMUNITY。
this

      在上面这些属性中,一、2号属性是公认强制;三、五、6是公承认选;七、8是可选过渡(“过渡”的意思就是能够传播到其余AS中);4是可选非过渡。这些属性在路由的选择中,考虑的优先级是不一样的。仅就这8个属性来讲,其中优先级最高的是LOCAL-PREF,接下来是ORIGIN和AS_PATH。spa

      在配置BGP路由时,首先须要了解BGP路由的一些主要属性,不然很难正确理解本章后面所要介绍的BGP路由配置步骤,由于尽管有些属性从名字上看起来它与其余路由属性同样,但内涵有着比较明显的区别。blog

1. ORIGIN(源)属性 接口

      这是公认强制的BGP属性。Origin属性指明了当前路由是从哪里获得的,用来标记一条路由的路由信息源。这在显示BGP路由表时每条BGP路由信息中都会有体现的。它有如下三种类型:ip

clip_p_w_picpath001 IGP(i):是BGP用Network命令通告的IGP路由表中存在的路由,优先级最高,说明路由产生于本AS内。

clip_p_w_picpath001[1] EGP(e):是从eBGP邻居那里学习获得的路由,优先级次之。

clip_p_w_picpath001[2] incomplete(?):优先级最低,它并非说明路由不可达,而是表示路由的来源没法肯定。例如,引入的其它路由协议的路由信息。

2. AS_PATH(AS路径)属性

       这也是公认强制的BGP属性。AS_PATH属性是必定顺序记录了某条路由从本地到达目的地址,一路所通过的全部AS号,这就是“AS路径”的含义。当BGP将一条路由通告到其余AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就能够知道去目的地址所要通过的AS。离本地AS最近的相邻AS号排在前面,其余AS号按顺序依次排列。经过观察AS_PATH,BGP Speaker能够找出路由是从哪一个自治系统产生的,以及这个路由传递通过了多少AS。最右边的AS号就是路由的产生者,最左边的AS号就是刚刚声明了路由的那个相邻的AS。处于AS_PATH中间的AS号是路由传递通过的AS。这样的AS_PATH序列被称为AS_SEQUENCE,AS_PATH序列就处在它的维护的序列中。但一般状况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了造成路由环路的可能。也就是只有在eBGP Peer之间通告路由时,才会在AS_PATH列表中添加AS号,同一个AS中的通告不会添加AS号的。若是某台BGP路由器从其外部Peer收到某条路由的AS_PATH列表中包含了本身的AS号,则该路由就知道出现了环路,于是丢弃该路由。

       如图10-1中有两条从AS 50区域中路由器到达目的网络8.0.0.0的路由,根据箭头所示的路由通告方向(通告方向是路由路径的反方向)能够看出,在AS_PATH列表中依次添加了所通过的AS号,而且是最近的处于最前面,其余AS号按顺序依次排列,中间以逗号分隔。如最后D=8.0.0.0(30,20,10)和D=8.0.0.0(40,10)。

clip_p_w_picpath003

图10-1 AS_PATH属性示例

       同时,AS_PATH属性也可用于路由的选择和过滤。在其余因素相同的状况下,BGP会优先选择路径较短的路由。好比在前面的图10-1中,AS 50中的BGP路由器会优先选择通过AS 40的路径做为到目的地址8.0.0.0的最优路由。

       在某些应用中,可使用路由策略来人为地增长AS路径的长度,以便更为灵活地控制BGP路由路径的选择。经过配置AS路径过滤列表,还能够针对AS_PATH属性中所包含的AS号来对路由进行过滤。这些具体将在本章后面介绍。

3. NEXT_HOP(下一跳)属性

       这也是公认强制的BGP属性。BGP是一个AS到AS的路由协议,并非一个路由器到路由器的路由协议。在BGP中,下一跳的意思并非指下一下路由器,而是指到达另外一个AS的IP地址。因此BGP路由的NEXT_HOP属性中所描述的IP地址不老是邻居路由器的IP地址。具体规则以下。

clip_p_w_picpath001[3] 若是发起路由的路由器与接收通告的路由器位于不一样AS(它们之间是eBGP关系),那么下一跳是通告路由的对应路由器接口。如图10-2中的AS 100路由器产生到达8.0.0.0网络的路由通告给AS 200路由器时,下一跳地址就是AS 100路由器与AS 2000路由器链接时所用的接口IP地址1.1.1.1/24。

clip_p_w_picpath001[4] 若是BGP Speaker把接收到的路由(并非由他发起的)发送给eBGP对等体时(它们之间也是eBGP关系),将把该路由信息的下一跳属性设置为转发路由的对应路由器接口。如图10-2中的AS 200向AS 300中左边那台路由器转发从AS 100获得的路由通告时,其路由的下一跳地址为AS 200与AS 300中左边那台路由器相连时所用的接口的IP地址1.1.2.1/24。

clip_p_w_picpath005

图10-2 BGP下一跳属性示例

clip_p_w_picpath001[5] BGP Speaker把从eBGP邻居获得的路由转发给iBGP邻居时(它们之间是iBGP关系,但路由是来自其余AS),不改变该路由信息的下一跳属性,也就是路由中原来的下一跳是什么地址就是什么地址。如图10-2中AS 300左边那台路由器转发从AS 200得到的路由通告到相同区域中的右边那台路由器时,其下一跳没有改变,仍为AS 200与AS 300中左边那台路由器相连时所用的接口的IP地址1.1.2.1/24。若是配置了负载均衡,路由被发给iBGP邻居时则会修改下一跳属性。

clip_p_w_picpath001[6] 若是通告路由的路由器与接收通告的路由器属于同一个AS(它们之间是iBGP关系),且所通告的路由是本AS中的,则下一跳为邻居路由器的接口IP地址。只有这种状况才与RIP、OSPF路由的下一跳是同样的。

4. LOCAL_PREF(本地优先)属性

      这是公认自选的BGP属性。LOCAL_PREF属性用于判断流量离开AS时(后面将要介绍的MED属性是进入AS时)的最优路由。LOCAL_PREF属性仅在iBGP对等体之间交换和比较,不通告给其余AS。它代表BGP路由器的优先级。

       当BGP的路由器经过不一样的iBGP对等体获得目的地址相同,但下一跳不一样的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图10-3所示,在Router D上学习到了有两条经过同一AS中的路由器路径能够到达Router A,这时就可使用本地优先级进行选路了,通过比较最终肯定从AS 20到AS 10的流量将选择Router C做为出口,由于Router C中的LOCAL_PREF属性值为200,高于Router B中的LOCAL_PREF属性值100。

clip_p_w_picpath007

图10-3 BGP LOCAL_PREF属性示例

5. MED(MULTI_EXIT_DISC)属性

       MED(Multi-Exit Discriminators,多出口区分)属性是一个可选非过渡(也就是不能传播到其余AS中)属性。MED属性至关于IGP使用的度量值(metrics),用于判断流量进入AS时的最优路由。MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其余第三方AS。当一个BGP路由器经过不一样的eBGP对等体获得目的地址相同,但下一跳不一样的多条路由时,在其它条件相同的状况下,将优先选择MED值较小者做为最优路由。如图10-4所示,从AS 10到AS 20的流量将选择Router B做为入口,由于Router B中的MED值为0,小于Router C中的MED值100。

clip_p_w_picpath009

图10-4 BGP MED属性示例

       通常状况下,路由器只比较来自同一AS中多个eBGP邻居路径(也就是这些路径来自同一个eBGP AS)的MED属性,不比较来自不一样AS的MED值。若非得要比较的话,则经过配置compare-different-as-med命令,能够强制BGP比较来自不一样AS的路由的MED属性值。

6. COMMUNITY(团体)属性

       Community属性是一个可选过渡BGP属性,是一组有相同特征的目的地址的集合,用来简化路由策略的应用和下降维护管理的难度。团体中具体集合的路由数量没有物理上的边界,与其所在的AS无关。公认的团体属性有:

clip_p_w_picpath001[7] INTERNET:默认状况下,全部的路由都属于INTERNET团体。具备此属性的路由能够被通告给全部的BGP对等体。

clip_p_w_picpath001[8] NO_EXPORT:具备此属性的路由在收到后,不能被发布到本地AS以外。若是使用了联盟,则不能被发布到联盟以外,但能够发布给联盟中的其余子AS。

clip_p_w_picpath001[9] NO_ADVERTISE:具备此属性的路由被接收后,不能被通告给任何其余的BGP对等体。

NO_EXPORT_SUBCONFED:具备此属性的路由被接收后,不能被发布到本地AS以外,也不能发布到联盟中的其余子AS。

相关文章
相关标签/搜索