本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的
Origin属性的优先级从高到低的排序:i(IGP)> e(ECP)> ?(incomplete)
接下里我将对解释每一条路径属性,并且通过下面拓扑展示如何通过修改这些路径属性来干涉选路。
搭建好实验环境后,只在R1上宣告1.1.1.0/24和10.10.10.0/24,在R4查看BGP表,可以看出R4收到了R2和R3发来的1.1.1.0/24和10.10.10.0/24的路由信息,此时R4到这两个网段选择的都是走R2。
[r4]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
# 第一种修改方法
[r4]bgp 2 # 进入BGP进程
[r4-bgp]peer 3.3.3.3 preferred-value 100 # 将从邻居3.3.3.3处学到的路由的PV属性都调为100
# 查看干涉结果
[r4-bgp]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 100 100 1i
* i 2.2.2.2 0 100 0 1i
*>i 10.10.10.0/24 3.3.3.3 0 100 100 1i
* i 2.2.2.2 0 100 0 1i
# 第二种修改方法,使用路由策略,单独修改某一条或一些路由的路径属性
[r4-bgp]undo peer 3.3.3.3 preferred-value # 先取消上次配置
# 抓取流量
[r4]ip ip-prefix pv permit 1.1.1.0 24
# 编写路由策略
[r4]route-policy pv permit node 10
Info: New Sequence of this List.
[r4-route-policy]if-match ip-prefix pv
[r4-route-policy]apply preferred-value 100
[r4-route-policy]q
# 由于route-policy末尾隐含拒绝所有,所以最后需要编写一条大动作为permit的空策略,即允许所有通过
[r4]route-policy pv permit node 20
Info: New Sequence of this List.
# 调用策略,策略可以在出向(export)和入向(import)调用,出向影响他人,入向影响自己
[r4-bgp]peer 3.3.3.3 route-policy pv import # pv属性只能在本设备上生效,只能本地在入向调用
# 查看R4的BGP表
```bash
[r4-bgp]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 100 100 1i
* i 2.2.2.2 0 100 0 1i
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
# 取消之前的路由策略
[r4-bgp]undo peer 3.3.3.3 route-policy pv import
# 抓取流量
[r4]ip ip-prefix lp permit 1.1.1.0 24
# 编写路由策略
[r4]route-policy lp permit node 10
Info: New Sequence of this List.
[r4-route-policy]if-match ip-prefix lp
[r4-route-policy]apply local-preference 150
# 编写空表
[r4]route-policy lp permit node 20
Info: New Sequence of this List.
[r4-route-policy]q
# 调用策略,LP属性可以在AS内传递,可以在R3的出向上配置影响R4,也可以在R4的入向配置,影响自身
[r4]bgp 2
[r4-bgp]peer 3.3.3.3 route-policy lp import
# 查看干涉结果
[r4-bgp]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 150 0 1i
* i 2.2.2.2 0 100 0 1i
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
AS_PATH的两种特殊情况:
在我们使用手工聚合后,聚合路由会丢失AS_PATH属性,但我们聚合路由时开启AS_SET功能后,将不同的AS明细路由的AS号用大括号括起来放入AS_PATHS属性中。但注意,在比较选路时,不管大括号中包含多少个AS号,我们都当作是一个来看待。
在使用联邦时,联邦间也使用AS_PATH属性记录联邦号来进行防环,用小括号将联邦号括起;在进行AS_PATH长度比较
时,不考虑小括号中的内容。
# AS_PATH是可以在所有AS内传递的,所以我们可以在R4的入向修改,也可以在R2的出向修改,这里我选择在R2的出向修改
# 在R2发往R4的1.1.1.0/24路由信息上添加AS号,使R4去1.1.1.0/24选择R3
[r4-bgp]undo peer 45.1.1.2 route-policy pv export # 取消之前在R4上做的路由策略
# 在R2上抓取流量
[r2]ip ip-prefix as permit 1.1.1.0 24
# 编写策略
[r2]route-policy as permit node 10
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix as
[r2-route-policy]apply as-path 1 1 1 ? # 在AS号中添加3个1
INTEGER<1-4294967295> AS number in asplain format (number<1-4294967295>)
STRING<3-11> AS number in asdot format
(number<1-65535>.number<0-65535>)
additive Append to original As Number # 在原有AS号的基础上添加AS号
overwrite Overwrite original As Number # 覆盖原有AS号
[r2-route-policy]apply as-path 1 1 1 additive # 因为AS号还用来防环,不能随便覆盖,
# 编写空策略,允许通过其他流量
[r2]route-policy as permit node 20
Info: New Sequence of this List.
[r2-route-policy]q
# 调用策略,在R2的出方向调用,影响发向邻居4.4.4.4的路由信息
[r2-bgp]peer 4.4.4.4 route-policy as export
# 在R4上查看干涉结果
[r4]display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 100 0 1i
* i 2.2.2.2 0 100 0 1 1 1 1i
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
# 通过修改R2发往R4的1.1.1.0/24路由的起源属性,实现负载分担,使R4去往1.1.1.0/24选择R3
[r2-bgp]undo peer 4.4.4.4 route-policy as export # 先取消之前在R2上做的路由策略
# 在R2将1.1.1.0/24路由的OGN修改为e,先抓取流量
[r2]ip ip-prefix ogn permit 1.1.1.0 24
# 编写策略
[r2]route-policy ogn permit node 10
Info: New Sequence of this List.
[r2-route-policy]if
[r2-route-policy]if-match ip-
[r2-route-policy]if-match ip-prefix ogn
[r2-route-policy]apply origin incomplete
# 编写空表
[r2]route-policy ogn permit node 20
Info: New Sequence of this List.
[r2-route-policy]quit
# 调用策略,在出向调用,修改该路由信息的属性后发出
[r2-bgp]peer 4.4.4.4 route-policy ogn export
# 在R4上查看干涉结果
<r4>display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 100 0 1i
* i 2.2.2.2 0 100 0 1?
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
总结:
为方便相邻AS在本AS内选路,本AS存在EBGP邻居关系的设备都建议宣告内部AS的路由。
某条路由最多在本AS和相邻AS内传播,凡是不是本地宣告的路由,在传递给EBGP对等体时归0。
注意:
我们在进行MED值比较时,多条相同的路由信息必须来自同一个AS才可以,即AS_PATH属性中最左边的AS号必须相同,否则没有可比性,将直接跳过这一条的比较。
# 取消之前在R2上做的路由策略
[r2-bgp]undo peer 4.4.4.4 route-policy ogn export
# 在R1上修改发往R2的1.1.1.0/24路由的MED值,使R4取1.1.1.0/24网段的时候选择R3
# 抓取流量
[r1]ip ip-prefix med permit 1.1.1.0 24
# 编写策略
[r1]route-policy med permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix med
[r1-route-policy]apply cost 10
# 编写空表
[r1]route-policy med permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
# 调用策略
[r1]bgp 1
[r1-bgp]peer 2.2.2.2 route-policy med export
# 在R4上查看干涉结果
<r4>display bgp routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 3.3.3.3 0 100 0 1i
* i 2.2.2.2 10 100 0 1i
*>i 10.10.10.0/24 2.2.2.2 0 100 0 1i
* i 3.3.3.3 0 100 0 1i
属性名称 | 传播范围 | 默认值 | 评判标准 | 常用于 |
---|---|---|---|---|
PV | 本设备 | 0 | 越大越有(0-65535) | 优先级不传播的特性,只能在本地的入方向调用 |
LP | IBGP对等体之间 | 100 | 越大越优 | 用于干涉IBGP邻居关系下选路最常用属性 |
AS_PATH | EBGPD对等体之间 | AS号越少越优 | 可以干涉到EBGP关系/IBGP关系选路 | |
OGN | BGP对等体之间 | 根据起源类型决定 | i > e > ? | 可以干涉到EBGP关系/IBGP关系选路 |
MED | 相邻AS | 默认取值为全局路由表中的开销值 | 越小越优 | 最常用于干涉EBGP关系选路 |
1.0X00000000 : internet,所有BGP路由默认属于这个名称为“internet”的社团中。如果我们使用路由过滤器匹配社团属性为internet的路由时,将匹配到任意一条BGP路由
2,0XFFFFFF02:no - advertise,被打上这个社团属性的路由将不被通告给其对等体
3,0XFFFFFF01:no - export,被打上这个社团属性的路由间无法通告给自己的EBGP邻居(不包括联邦的EBGP邻居)
4,0XFFFFFF03:no - export - subconfed,被打上这个社团属性的路由间无法通告给自己的EBGP邻居,包括联邦的EBGP邻居
# 抓取需要添加公认社团属性的流量
[r1]ip ip-prefix com permit 1.1.1.0 24
# 编写策略
[r1]route-policy com permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix com
[r1-route-policy]apply community ? # 查看可添加的社团属性
INTEGER<0-4294967295> Specify community number # 十进制表示的社团属性
STRING<3-11> Specify aa<0-65535>:nn<0-65535> # 十六位:十六位表示的社团属性
internet Internet(well-known community attributes) # 该条以下都是公认社团属性
no-advertise Do not advertise to any peer (well-known community
attributes)
no-export Do not export to external peers(well-known community
attributes)
no-export-subconfed Do not send outside a sub-confederation(well-known
community attributes)
none No community attribute
[r1-route-policy]apply community internet # 添加社团属性
# 添加空表允许其他路由通过
[r1]route-policy com permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
[r1-bgp]peer 12.1.1.2 route-policy com export
[r1-bgp]network 1.1.1.0 24 route-policy com
1.如果某条路由在宣告的时候添加的社团属性,那它不能被传递出去
2.如果某条路由是在发给某邻居时添加社团属性,那它可以传递出去,但不想携带社团属性
# 在R1上开启社团属性携带功能
[r1-bgp]peer 12.1.1.2 advertise-community # 向该邻居传递的路由可以携带社团属性
# 抓取需要添加自定义社团属性的网段
[r1]ip ip-prefix com permit 1.1.1.0 24
# 在策略种添加自定义社团属性
[r1]route-policy com2 permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix com
[r1-route-policy]apply community 1:1 # 添加自定义社团属性
[r1-route-policy]q
[r1]route-policy com2 permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
# 调用策略
[r1-bgp]network 1.1.1.0 24 route-policy com2
# 开启社团属性携带功能
[r1-bgp]peer 12.1.1.2 advertise-community
# 使用社团属性过滤器抓取流量
[r2]ip community-filter 1 permit 1:1 # ip community-filter 编号(1-99) deny/permit 社团属性
# 抓取后使用route—policy做策略
[r2]route-policy com permit node 10
Info: New Sequence of this List.
[r2-route-policy]if-match community-filter 1 # 匹配社团属性过滤器 1 所抓取的流量
[r2-route-policy]apply preferred-value 100 # 将抓取的流量的 PV属性 调为 100
[r2-route-policy]q
# 添加一张空表允许其他路由通过
[r2]route-policy com permit node 20
Info: New Sequence of this List.
[r2-route-policy]q
# 调用策略
[r2-bgp]peer 12.1.1.1 route-policy com import
# 查看结果,修改成功
[r2-bgp]display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 12.1.1.1 0 100 1i