加载中…
个人资料
闲云野鹤
闲云野鹤
  • 博客等级:
  • 博客积分:0
  • 博客访问:9,714
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

【BGP】BGP的路径属性

(2015-08-20 22:11:37)
标签:

bgp

bgp邻居

华为

协议

it

分类: BGP
 公认必遵
所有BGP路由器都可以识别 且必须存在与UPdate消息中 如果缺少这种属性 路由信息就会出错,,必须在路由中写入公认强制属性,这些属性是被强制写入路由中的,一条不带公认强制属性的路由被BGP路由器被视为无效而被丢弃,一个不支持公认强制属性的BGP,是不正常的,不合法的BGP

BGP路由必须携带的公认强制属性有三个:OriginNext_HopAS-path

公认任意 

 所有的BGP路由器都可以识别 但不要求存在与UPdate消息中,可以根据具体情况来决定是否添加到UPdate消息中。它是可选的,不一定存在于路由更新数据报文中,我们设置它完全是根据需要。如MED属性,我们就用它来控制选路

可选过度 

BGP路由器可选择是否在update消息中携带这类属性。接收的路由器如果不识别这种你属性 可以转发给邻居路由器 邻居路由器可能会识别并使用这种属性


可选非过度

BGP路由器可选择是否在update消息中携带这类属性。在整个路由发布的路径上,部分路由器不能识别这是属性 可能会导致该属性无法发挥效用 因此接收的路由器如果不识别这种属性 应该丢弃这种属性 不必在转发给邻居路由器。这些属性也不能任意传递,只可以传递到特定的BGP路由器。


Origin  起源属性

Origin属性就反映出了路由是如何进入BGP路由表的。要将路由导入BGP路由表,有三种方式:

第一:因为路由器上默认会有IGP路由表,通过命令show ip route可以查看到,这些IGP表中的路由可以被手工导入BGP,通过在BGP进程模式下使用命令network,即可将IGP表中的相应路由导入BGP路由表,并且需要指定掩码,只有network后面的网段和掩码在IGP路由表中能找到时,才会进入BGP路由表,并不能通过这种方式将一条不存在的路由凭空导入BGP,通过命令network被导入BGP的路由的Origin属性为IGP属性。

第二:BGP可以从EGP路由协议中获得路由信息,而EGP已经被淘汰,被BGP所取代,所以我们很难遇见EGP路由协议,从EGP路由协议获得的路由的Origin属性为EGP

第三:BGP路由表除了从IGPEGP获得路由外,还可以将路由重分布进BGP路由表,而重分布的路由的Origin属性为Incomplete

 

BGP路由表中到达同一目的地存在多条路径时,会通过比较路由的Origin属性来选择最优路径,它们的优先级为IGP优于EGPEGP优于Incomplete,即IGP>EGP>Incomplete

AS-path属性

AS-Path 属性也是一个必遵属性,它是路由到达某个目的地所经过的所有AS号码的序列。BGP使用AS 路径属性作为路由更新(更新数据包)的一部分来确保在Internet 上的一个无环路拓扑结构。BGP不会接受AS 路径属性中包含的本AS自治系统号的路由,因为此路由已经被本自治系统处理过了,从而避免了生成路由环路的可能。为此,BGP在向EBGP对等体通告一条路由时,要把自己的AS号加入到AS 路径属性中,以记录此路由通过的AS区域信息

因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,具体操作为:一台BGP路由器从eBGP邻居收到路由,发给iBGP邻居之后,iBGP邻居收到后就不能再传给其它任何iBGP邻居,只能传递给eBGP邻居。此规则被多数人称为BGP的水平分割,就是一台BGP路由器从iBGP邻居收到的路由,不能传递给其它iBGP邻居,只能传给eBGP邻居

Next-Hop  下一跳属性

下一跳属性也是一个公认必遵属性,BGP 中的下一跳不同于IGP 中的下一跳,BGP中的下一跳 概念稍微复杂,它可以是以下三种形式之一:

1BGP在向IBGP通告从其它EBGP得到的路由时,不改变路由的下一跳属性,本地BGP将从EBGP得到的路由的下一跳属性直接传递给IBGP。。

2BGP在向EBGP对等体通告路由时,下一跳属性是本地BGP与对端连接的端口地址

 

3)对于可以多路访问的网络(如:以太网或帧中继),下一跳情况有所不同:

也就是BGP将数据包发往目的地的下一跳,BGP路由的下一跳,就是BGP建立邻居时的地址,也是BGP之间建立TCP连接所使用的地址。因为这个地址可以是路由器上任意接口的地址,是要能通信即可(其连通性由IGP提供保证),所以BGP在将数据包发往下一跳时,通常需要采用递归查询在IGP路由表中查询该下一跳地址。默认情况下,一台BGP路由器将路由传递给eBGP邻居时,会将Next-hop属性改为自己的地址,也就是和对方建立邻居所使用的地址,而在将路由传递给iBGP邻居时,不会改变Next-hop属性。

对于将路由传递给BGP邻居时,是否改变Next-hop属性的功能,可以自由关闭或启用。

 

BGP路由表中由本地产生的路由而不是从BGP邻居学习来的,即本地发起路由的Next-hop属性都为0.0.0.0

Local-pref本地优先级属性 (公认任意)

Local_Pref称为本地优先级,其中的(Local)本地就是指本AS,或AS内的意思,所以可以想象得出,Local_Pref属性的传递范围,只在同一个AS内有效,一条路由的Local_Pref属性只能在同一AS内部传递,出了AS后就会被还原成默认值。

Local_Pref属性在BGP邻居之间是自动传递的,只有在将路由发给iBGP时才会传递,而在发给eBGP时,是没有Local_Pref值的,一条路由的Local_Pref属性在一个AS内的所有BGP路由器上是完全相同的。Local_Pref的默认值为100,由此可以看出,一条路由在AS内的所有路由器上默认值为100

 本地优先级属性是用于区分到同一目的地的各个路由优先程度的。本地优先级越高,路由优先级越高。默认值为100

BGP路由表中到达同一目的地存在多条路径时,会比较Local_Pref值的大小,Local_Pref值大的会被选为最优路径,如110100,那么110会被选为最优路径。

Local_Pref值可以被随意修改,修改后将在整个AS内传递,所以推荐使用Local_Pref属性来控制一个AS的路由器去往目的地在其它AS的路径。如下图:

【BGP】BGP的路径属性

在上图中,AS 10中的BGP路由器R3可以同时通过R1R2去往目的地在AS 20中的R4上时,可以通过在AS 10内部修改路由的Local_Pref值来影响选路,比如在R1上将路由的Local_Pref值改为110,而路由器R2上不作任何改动,最终R3将选择从R1去往AS 20,因为R1Local_Pref值为110,而R2Local_Pref值为100(默认),所以R3选择R1为最优路径。

 

因为R1R2在将路由发给iBGP邻居R3时会携带Local_Pref属性,所以R3同时比较iBGP邻居R1iBGP邻居R2时,才合适使用Local_Pref属性,因为下一跳都是iBGP邻居,如果下一跳不都是iBGP邻居,并不建议修改Local_Pref属性来影响选路。


MULTI_EXIT_DISCMED,可选非过度属性)

MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,因为在多个下一跳都为iBGP时,是建议使用修改Local_Pref属性来影响选路的,而多个下一跳都为eBGP时,则使用MEDMEDBGP路由的metric,所以多条路径中拥有最小MED值的路径会被优先使用。MED默认值为0

Local_Pref属性只在同一个AS内部传递,而MED只能在AS之间传递,只有在将路由发给eBGP邻居时,才会传递MED,在发给iBGP时,是不会传递MED的。当一条路由被设置MED值后传递给eBGP邻居,在eBGP邻居收到后,如果将该路由继续传递给iBGP邻居,那么这个值会被还原为默认值0,也就是说同一个AS内,所有发给iBGP邻居的路由的MED值都为0,这是为了让所有AS内部路由器都能够拥有相同的选路结果。

MED值也是可以随意修改的

【BGP】BGP的路径属性

在上图中,当AS 20中的路由器R4要去往目的地为AS 10的网段时,由于下一跳R1R2都为eBGP邻居,所以可以通过修改MED值来影响R4对于下一跳的选择。比如将R2MED改为10,而R1MED保持默认不变,那么最终R4将选择R1去往AS 10中的目的地,因为R1MED0小于R2MED10,所以被优先使用。

 

默认情况下,只有当去往目的地的多个下一跳eBGP邻居都为相同AS时,才会比较MED值,如果多个eBGP邻居为不同AS时,是不会比较MED的,若是要强制在多个不同的eBGP邻居之间比较MED值,需要在BGP进程下输入命令:bgp always-compare-med

community团体属性

  BGP的范围内,一个团体是一组有公共性质的目的地。一个团体不限于一个网络或一个自治系统,它没有物理边界。

团体属性是一个可选过渡属性,某些团体是是公认的,亦及具有全球意义。公认的团体有:

1NO_EXPORT:带有这一团体值的路由在收到后,不应被通告给一个联盟之外的对等体。

2NO_ADVERTISE:带有这一团体值的路由在收到后,不应被通告给任何的BGP对等体。

3LOCAL-AS:带有这一团体值的路由在收到后,应该被通告给本地AS内的对等体,不应被通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。

4)   INTERNET: 带有这一团体值的路由在收到后,应该被通告给所有的其他路由器。

除了这些公认的团体属性值之外,私有的团体属性值也可以被定义来用于特殊用途。这些属性值被一些数字所标示。

一条路由可以具有一个以上的团体属性值,就像一条路由可以在其AS 路径属性中含有一个以上AS号码一样。在一条路由中看到多个团体属性值的BGP路由器可以根据一个、一些或所有这些属性值来采取行动。路由器在将路由传递给其他对等体之前可以增加或修改团体属性值。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有