7*24小时值班咨询手机:15101073985(微信同号)   
CCIE
当前位置:网站首页>CCIE
牢记Path Attributes性能ccie培训必学课
发布日期:2019-09-11 10:39:54 发布者:
    在默认情况下,到达同一目的地,BGP只走单条路径,并不会在多条路径之间执行负载均衡。对于IGP路由协议,当有多条路径可以到达同一目的地时,则根据最小metric值来选择最优路径,而BGP存在多条路径到达同一目的地时,对于最优路径的选择,BGP并不会以metric值大小为依据,BGP对于最优路径的选择,需要靠比较路由条目中的Path Attributes,即路径属性,只有在比较多条路由的属性之后,才能决定选择哪条为最优路径。BGP的每条路由都带有路径属性,BGP的路径属性可以划分为以下四类:

    公认强制    (Well-Known Mandatory)

    公认自选    (Well-Known Discretionary)

    可选可传递  (Optional Transitive)

    可选不可传递(Optional Nontransitive)

    对于各属性的各特征如下:

    公认强制 (Well-Known Mandatory)

    对于任何一台运行BGP的路由器,都必须支持公认强制属性,并且在将路由信息发给其它BGP邻居时,必须在路由中写入公认强制属性,这些属性是被强制写入路由中的,一条不带公认强制属性的路由被BGP路由器被视为无效而被丢弃,一个不支持公认强制属性的BGP,是不正常的,不合法的BGP。

    BGP路由必须携带的公认强制属性有三个:Origin,Next_Hop,AS-path。

    公认自选 (Well-Known Discretionary)

    公认自选属性并不像公认强制属性那么严格,任何一台运行BGP的路由器都必须支持公认自选属性,必须理解和认识公认自选属性,但是为路由写入公认自选属性并不是必须的,是否要为路由写入公认自选属性可以自由决定,为路由写上公认自选属性之后,所有BGP路由器都能认识和理解,并且都会自动保留和传递该属性。

    可选可传递 (Optional Transitive)

    并不是所有运行BGP的路由器都能理解和支持可选可传递属性,路由的可选可传递属性是任意写入的,其它BGP路由器并不一定能理解,也并不一定能保留和传递该属性,但是当为路由设置了可选可传递属性后,可以明确要求BGP路由器保留和传递该属性。

    可选不可传递(Optional Nontransitive)

    只有特定的BGP路由器才理解和支持可选不可传递属性,并且可选不可传递属性理论上是不能手工设置的,即使手工设置了可选不可传递属性,这些属性也不能任意传递,只可以传递到特定的BGP路由器。

    以下是一些常用BGP属性的介绍:

    1.Origin(公认强制属性):

    在路由器之间建立BGP邻居之后,邻居之间只能相互传递BGP路由表中的路由,在初始状态下,BGP的路由表为空,没有任何路由,要让BGP传递相应的路由,只能先将该路由导入BGP路由表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,只能手工导入,对于路由是怎么进入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路由表除了从IGP和EGP获得路由外,还可以将路由重分布进BGP路由表,而重分布的路由的Origin属性为Incomplete。

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

    2.AS_Path(公认强制属性):

    AS_Path中包含了BGP路由器到达目的地所经过的所有AS的集合,AS_Path中会包含了多个AS号码,号码的多少,逻辑上反映了到达目的地的远近。

    AS_Path还能细分为:

    AS_SEQUENCE(有序的AS号码,即AS号码在AS_Path中是按一定顺序排列的)

    AS_SET(无序的AS号码,即AS号码在AS_Path中的排列是没有顺序的,通常是将多条拥有不同AS_Path的路由汇总后产生的)

    当BGP路由表中到达同一目的地存在多条路径时,会优选AS-Path最短的路径。

    3.Next_Hop(公认强制属性):

    也就是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。

    4.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值大的会被选为最优路径,如110与100,那么110会被选为最优路径。

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

    5.MULTI_EXIT_DISC(MED,可选不可传递属性):

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

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

    .Weight

    Weight属性为Cisco私有属性,只有Cisco的路由器才能认识和理解Weight。路由的Weight属性只在路由器本地起作用,BGP将路由传递给邻居时,并不会保留Weight。Weight值的范围为0——65535,默认为0,如果是BGP本地路由,则Weight值为32768。可以手工任意修改路由的Weight值,可以对路由进行修改,也可以对整个邻居进行修改,但也只能对本地起作用,路由的Weight值并不会传递给邻居。

    当BGP路由表中到达同一目的地存在多条路径时,会优选Weight值最大的路径。在Cisco路由器中,比较最优路径的第一条规则就是比较Weight值,所以只要改动Weight值,就绝能够控制Cisco路由器的BGP选路。

微信