BGP 的路径属性

    - BGP 的度量是属性

    - 属性分为:4类

                                 { 强制

                        公认 { 

                                 { 自由决定

                

                                    { 传递

                        可选    {

                                    { 非传递

公认属性:每个运行BGP的路由器都必须支持和识别的;

                      传播给其他邻居

公认强制属性:在更新消息中必须有的

                              AS-path     next-hop        origin(路由怎样加入到BGP)

公认自由属性:在更新消息中可以没有

                                local preference (本地优先级)       atomiic aggregate(链路聚合)

 

可选属性:是公认属性的补充(可能是私有),但是可以不必被所有BGP路由器所支持

                     可用属性根据其含义来传递给其他邻居

可选传递属性:如果不支持,原封不动的传给其他邻居

                             aggregator            community

可选非传递属性:如果不支持,就忽略此属性;并且次路由不传递给邻居

                                  MED

BGP 属性:

        - AS path  *

        - next-hop  *

        - origin  *

        - local preference

        - MED

        - others

 

AS-Path

        - 就是一个到达目的地所有要经过的自治系统列表(每离开一个AS就加上一个AS-path属性)

next-hop

        - EBGP之间传递时才会改变(下一跳指向EBGP邻居的IP)IBGP传递不改变next-hop,可以用

            next-hop-self 使得路由再IBGP传递时也更改下一跳

origin 起源属性

        - IGP (i)

            network 命令宣告的

            聚合产生

        - Incomplete(?)

               从IGP或静态路由重分布过来的

       - 起源属性,用来告知AS内 所有路由器,一个网络前缀是如何引入BGP的

 

以上属性 可以通过 sho ip bgp查看

 

local preference 本地优先级属性

    选择local preference 高的路径

                @ local preference 通告给本地IBGP邻居,指导数据如何离开本AS

                @ 指向 IBGP 邻居发送(即只在AS内部)
                @ local preference 默认为100

                @ 公认自由决定属性,选路用

MED

    - 选择MED 低的路径(可以想象为度量值)

    - 通告给相邻EBGP邻居,指导数据如何进入本AS

    - 默认 0

    - 可选非传递属性

通过本地设置来影响EBGP邻居到达本地路径选择

       wKiom1ZysDPRZTe2AADljmxaQyg039.jpg

上图,A发送给B C的路由带上MED值,数据从B到A路径就是B->A,从C到A路径 就是C->B>A

 

weight 属性(cisco私有)

    - 选择 weigh 高的路径

            @ 不发送给任何BGP 邻居;路由器本地有效

    wKioL1ZysZGxbZURAADVna0miek697.png

 

BGP路径选择

    - 在BGP表通常有很多到达同一目的地的路径

    - BGP 默认不负载均衡

            路径选择基于属性

            并不基于带宽等因素

    - BGP根据属性在很多路径选择一条最佳路径

    - 最佳路径提交到路由表管理进程。并对其他路由协议同样到达相同目的地的路由进行评价            (根 据 AD值)

       

 

路径决策过程

    1,更高的 weigh (本地路由器)

    2,更高的 local preference (本AS)

    3,起源于自己的路由 (下一跳=0.0.0.0)

    4,更短的 AS-path 列表

    5,最小的起源代码 (IGP < EGP < incomplete)

    6,更小的MED (比较相邻AS之间)

    7,    EBPG 比 IBGP 更好

    8,选择最近的 BGP 邻居路由

    9,如果配置了 maximum-path ,会负载均衡

    10,对应 EBGP 路径 ,选择最老路由

    11,更低的邻居 IBGP 路由器ID

    12,更短的 cluster-list

    13,更低的邻居IP,是BGP的neighbor配置的地址

 


一,weight  (cisco 私有)

    理论简介:

        1,优选有最大的weight路由(范围 0--65535),cisco私有。路由器配置了weight在本地有效

        2,缺省下,通过本地路由器宣告、重分布或者汇总的路由weight=32768,从BGP邻居学到的路            由weight=0

        3,只在本地(只影响自己一台路由器),影响本路由的选路

    修改方法:

        1,neighbor xxx weight xxx (从此xxx邻居学到的路由都加)

        2,route-map xxx permit 10

                set weigh xxx

        3, 本地路由器产生的路由的weight-32768 (0-65535)

        4,只能在本路由器的入方向做(因为不传递,只在本地有效)

 weight属性实验

wKiom1ZzgZmRbtnPAABa0xsT7JU565.png

  如图,R1 R2通过loopback0 建立IBGP,同时运行OSPF

        R1R3  R2R3用物理口建立EBGP        

        1,R3宣告loopback口

                router bgp 200

                    net 33.1.1.0 mask 255.255.255.0

            sho ip bgp 

        2,R1 R2分别从IBGP和EBGP学到33.1.1.0路由,sho ip bgp summary

            例如从R1看,分别从R2和R3学到,且从R3学到的最优,

                方法1,修改:

                        R1: router bgp 100

                                nei 22.1.1.1 weight 200

                            sho ip bpg (clear ip bgp * soft in刷新会更快看到效果)

                        R2:此时R2只能看到一条33的路由,因为IBGP水平分割

                        此种设置,会使得R1从R2学到的所有路由的weight都增加

                方法2,

                        R1:router bgp 100

                                nei 22.1.1.1 route-map test in(注意只能in方向)

                            route-map test permit 10

                                mathc ip add prefix-list test

                                set wei 200

                                exi

                            route-map test permit 9999(设置不影响其他路由)

                            ip prefix-list test permit 33.1.1.1/24 

                            clear ip bgp * soft in

                            sho ip bgp

                            此种设置可以精确匹配33的路由

                                     


二,local-preference 

   2.1 理论简介:

        1,通过第一条选路原则不能选出最优BGP路径的情况下,优选最大local-preference的路径

        2,可以在 IBGP 邻居之间传递,不能在 EBGP 邻居间传递。即不能再EBGP的out方向做,只在            本AS内有效

        3,对于从EBGP学到BGP路由,loca-preference=100,

           可以用“bgp default local-preference”修改

wKiom1ZzgZmRbtnPAABa0xsT7JU565.png

    2.2 修改方法:

        1,bgp default local-prefrence xxx

            修改后,对IBGP 学来的路由不起作用,只对EBGP传来的和自己产生的路由起作用

          默认下 R1 sho ip bgp 的33路由来自R3,此时R2做修改local-preference

                    R2:

                        router bgp 100

                            bgp default local-prefrence 1000

                    local-preference会在IBGP内传递,所以R1从R3收到是100(默认)从R2收到是                       1000,并且,整个AS内的路由器都会从R2去往R3

        2,route-map xxx permit 10

                set local-prefrence xxx

            R2:

                router bgp 100

                    neighbor test 23.1.1.3 route-map test in

                route-map test permit 10

                    match ip address prefix-list test

                    set local-prefrence 1000

                    exit

                route-map test permit 9999

                prefix-list test permit 33.1.1.0/24

                clear ip bgp * solft in

                sho ip bgp

            R1:

                 sho ip bgp

    2.3 local-prefrence 的默认值是100

        show ip bgp 中看到的是空,其实也是100

        show ip bgp xxx 看明细的时候可看见路由的local-preference

        

三 起源于本路由器上的路由

        优选从本路由器始发的路由(包括本地network配置,重分布,或者在IGP 表中有一些需要被配              置路由聚合的地址,在BGP中用 aggregate-address 命令配置的路由聚合)

        注意:对于cisco IOS,如果从本地网BGP里注入一条路由,缺省的weight值为32768,由于这个               weight值很大,对于该注入路由,会根据第一条选路原则成为最有BGP路由。因此对                   cisco IOS来说,第三条选路原则作用不大,然而考虑到第一条选路原则为cisco私有,               不是所有厂家都支持,第三条作用就显现出来了


四 AS-PATH  

    在通过前三条选路原则不能选出最优BGP条目的情况下,优选AS-path 长度最短的

    注意:修改AS-path长度,只能在EBGP邻居之间进行   

   1,AS-path 在EBGP邻居的out方向和in方向都可以做

        1.1 out方向做:在发出去之前加上AS-path,再加上本身的AS

        1.2 in 方向做:在收进来之前加上AS-path,再加上本身的AS

wKiom1ZzgZmRbtnPAABa0xsT7JU565.png

实验:

       1,R3out方向做

         R1:sho ip bgp 

wKioL1Zz_sDAQbMjAAAxrd87RRw209.png        R3:

            router bgp 200

                nei 12.1.1.1 route-map test out

            route-map test permit 10

                match ip add prefix-list test

                set as-path prepend 200(此处数值最好写自己的AS)

                也可加多个set ip as-path prepend 200 200

            prefix-list test permit 33.1.1.0/24

            route-map test permit 9999

        R1:看效果

            sho ip bgp

wKiom1Z0AHui0m5-AAA-KOGrYqo591.png

    2,last-as 表示子啊离这个路由器最近的AS号,重复加次数

        route-map xx permit 10

            match ip address 1

            set as-path prepend last-as xx(数字,加多少次)

    实验:

            R3: route-map test permit 10

                    set as-path prepend last-as 2(但是不生效,因为没有与R3相连的其他AS)

---------------------------------------------

            R3: router bgp 200

                    no neighbor 13.1.1.3 route-map test out

            R1: no route-map test

                router bgp 100

                    nei 13.1.1.3 route-map test in

                route-map permit 10

                    match ip address prefix-list 10

                    set as-path prepend last-as 2

                prefix-list test permit 33.1.1.0/24

                查看,sho ip bgp

wKiom1Z0BCzhlun-AABBFdLhd5M559.png

            

    3,当写下面两个命令时 ,哪个生效

        set as-path prepend 23

        set as-path prepend last-as 数字

        入/出方向的时候,as-path prepend 与 last-as同时使用,都是last-as 先生效,然后as-           path prepend才生效

    4,删除私有的AS号,起源于本AS无效,在出方向做

        neighbor xxx remot-privat-as

    5,如何跳过 as-path 选路原则

        bgp bestpath as-path ignore

        R1:

            router bgp 100

                bgp bestpath as-path ignore


五 起源代码 origin (公认必遵)   

在通过前四条选路原则都不能选出最有BGP路由的情况下,优选最低起源类型的BGP路由


最低起源类型的顺序:IGP < EGP < incomplete,其中EGP的方式已经不用了


通过network ,aggregate方式产生的BGP 路由的起源属性是IGP,通过重分布产生的BGP路由的起源属性是incomplete

wKiom1ZzgZmRbtnPAABa0xsT7JU565.png

实验:

     R3:

        router bgp 200

            nei 23.1.1.2 route-map test out

        route-map test permit 10

            match ip add prefix-list test

            set origi incomlete

        route-map test pemit 9999

        prefix-list test permit 33.1.1.0/24

        clear ip bgp * soft out

    R2: 看现象

        sho ip bgp 

wKiom1Z0CPbjMgFvAAAtFK5-sdI797.png








六 MED

mED作用:在两个AS之间有多个BGP连接的情况下,MED用于影响从相邻的AS到本AS的路由选择,即影响邻          居AS到本AS的流量从哪个接口进来,这是通过向相邻AS的EBGP邻居发送具有不同MED值的路由条          目来实现的,但要注意:选路过程中的实现是相邻AS的路由器自身根据13条选路原则独立完            成,MED值的比较式前面5个都不能选出最优情况下才起作用

     就是R3把33.1.1.0/24路由通告给R1时med=1000,通告给R2时med=2000,就影响了数据从AS100进入        AS200时,会都从R1-->R2的路径进来


实验:

wKiom1ZzgZmRbtnPAABa0xsT7JU565.png

R3:

    router bgp 200

        nei 23.1.1.2 route-map test-med-r2 out

        net 13.1.1.1 route-map test-med-r1 out

    route-map test-med-r2 permit 10

        match ip add prefix-list test 

        set metric 2000

    route-map test-med-r2 pemit 9999

    route-map test-med-r1 permit 10

        match ip add prefix-list test

        set metric 1000

    route-map test-med-r1 permit 9999

    prefix-list test permit 33.1.1.0/24

    clear ip bgp * sloft out

R1:看效果

    sho ip bgp

    R1 去往33.1.1.0/24 下一跳是R3

R2:看效果

    sho ip bgp

    R2 去往33.1.1.0/24 下一跳是R1


in方向也可以!!!!!!!!!!!!!!!!

    

MED 生成条件:

        1,本地network方式生成的BGP条目,会带上IGP的metric。会传给所有邻居

        2,若果从IBGP邻居学到一条BGP条目的metric=0或其他值,默认不传给EBGP邻居,显示为空

        3,从EBGP邻居学到的BGP条目的metric传给其他IBGP邻居,但不传给EBPG

        4,汇总方式生成BGP条目,metric为空

        5,重分布生成的BGP条目,metric值为IGP的cost,metric,hop。汇总也会清楚

        6,缺省,空的metric视为0


优选最小的MED值的路由(范围 0-4294967295)

    -A 只有通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何自治域的联盟系统都会被忽略。就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序列号(AS_CONFED_SEQUENCE)都会被忽略。

    -B 如果路由器上配置了bgp always-compare-med,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则,有可能发生环路。

    -C 如果路由器上配置了bgp bestpath med confed,将对所有只包含AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)

    -D 如果接收的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了 bgp bestpath med missing-as-worst,将被看做MED值为4294967295的路由将在诸如到路由选择之前被改为 4294967295。

    -E BGP 明确的MED值9也可影响此步骤。


    1,只能在相邻的AS传递,一般在out方向做,影响入站的流量。

    2,MED默认值

            - 本地产生的路由  0

            - IBPG            0

            - EBGP 直连的     0

                   非直连     空(此时把空的按0 计算)

             当有以下命令时,空的值为4294967294

            bgp bestpath med meissing-as-worst为空的MED值最大为4294967294

             即,当一个设置MED值之后,另一个不设置时,打上命令后变成最大值

    3,bgp alway-compare-med 总是比较MED值

        BGP一般是不比较来自两个不同AS的MED值,当打上这个命令后就会比较

    5,bgp bestpath med confed

        是指只在联盟内,比较联盟内的MED

        如果路由器上配置了bgp bestpath med confed,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径起源于本路由器)