BGP的选路原则
BGP选路的前提条件 --- BGP首先需要进行可用的校验,只有可用的路由才会参与BGP的选
举。
属性名称
|
传播范围
|
默认值
|
评判标准
|
PV | 不传播 | 0(0-65535) | 越大越优 |
LP | IBGP对等体 | 100 | 越大越优 |
AS-PATH | BGP对等体 | 记录的数量越少越优 | |
OGN | BGP对等体 |
根据起源类型决定
|
I > e > ?
|
MED
|
BGP对等体
|
继承全局路由表中的开销值
|
越小越优
|
1,优选PV属性值最大的路由
PV属性是在
本设备上
选路优先级最高的一个属性。属性值越大越优。 ---- 这个属性不
能 传播。
PV属性是华为设备的私有属性。
[r4-bgp]peer 3.3.3.3 preferred-value ? --- 修改R3发来的路由的PV值
INTEGER<0-65535> Preference value
[r4-bgp]peer 3.3.3.3 preferred-value 100
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1,
not preferred for PreVal
负载分担 --- 即让不同的流量走不同的线路,分担单一线路的压力
使用路由策略干涉选路:
1,抓取流量
[r4]ip ip-prefix PV permit 10.0.0.0 24
2,使用路由策略修改PV值
[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
[r4]route-policy PV permit node 20 --- 创建空表放通剩余所有流量
Info: New Sequence of this List.
[r4-route-policy]q
[r4]
3,在BGP进程中调用策略
[r4-bgp]peer 3.3.3.3 route-policy PV import --- 注意,因为这个属性不能传递,所以,只
能 使用入方向。
2,优选LP属性值最大的路由。
LP --- 本地优先级 --- 默认值100,越大越优 --- 这个属性是在IBGP内部选路时最常用
的 属性。 --- 这个属性可以在IBGP对等体之间进行传递,但是,不能传递给自己的
EBGP 对等体。
[r3-bgp]default local-preference 200 --- R3发布路由条目所携带的默认LP值改为200
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1,
not preferred for Local_Pref
1,抓取流量
[r3]ip ip-prefix LP permit 10.0.0.0 24
2,做路由策略
[r3]route-policy LP permit node 10
Info: New Sequence of this List.
[r3-route-policy]if-match ip-prefix LP
[r3-route-policy]apply local-preference ?
INTEGER<0-4294967295> Specify a local preference value
[r3-route-policy]apply local-preference 300
[r3-route-policy]q
[r3]route-policy LP permit node 20
Info: New Sequence of this List.
[r3-route-policy]q
3,在BGP中调用
[r3-bgp]peer 4.4.4.4 route-policy LP export
3,手工聚合 > 自动聚合 > network > import > 从对等体处学来的
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre
255, IGP cost 1, not preferred for route type
*> 192.168.0.0/22 127.0.0.1 0 I ---- 手工聚合发布的
* 0.0.0.0 0 0 I ---- network发布的
* 0.0.0.0 0 0 ? ---- 重发布发布的
4,优选AS_PATH属性最短的路由
AS_PATH属性在进行选路时,最基本的原则是记录的数量越少越优,但有两点需要额外
注意:
1,在聚合路由时,如果激活AS_SET关键字,将不同的AS明细路由的AS号使用大括号
括起来,在进行防环是,所有AS都不能回传,当进行选路时,不管大括号中存在多少个
AS,都将按照1个AS来看。
2,联邦时,联邦内部将使用AS_PATH属性防环,我们用小括号括起来。这种情况下,
我们计算AS_PATH长度时,将不考虑小括号里的内容。
注意:AS_PATH属性虽然可以在所有的BGP对等体之间进行传递,但是,只有在EBGP对
等体之间传递时才会修改,所以,在进行策略干涉选路时,也需要在EBGP对等体之间来
完成。
在R1上进行出方向的修改:
1,抓取流量
[r1]ip ip-prefix AS permit 10.0.0.0 24
2,做路由策略
[r1]route-policy AS permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix AS
[r1-route-policy]apply as-path 11 22 33 ?
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_PATH属性基础上添加额外的
AS号 --- 因为AS_PATH属性主要用于防环,所以,建议使用添加的方法。
overwrite Overwrite original As Number ---- 覆盖原先的AS_PATH
[r1-route-policy]apply as-path 11 22 33 additive
[r1-route-policy]q
[r1]route-policy AS permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
3,在BGP中调用
[r1-bgp]peer 12.0.0.2 route-policy AS export
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 12.0.0.1 0 0 1i
*> 10.0.0.0/24 12.0.0.1 0 0 1 11 22 33
i
在R2的入方向修改
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 12.0.0.1 0 0 1i
*> 10.0.0.0/24 12.0.0.1 0 0 11 22 33 1
i
AS-path 11 22 33 1, origin igp, MED 0, localpref 100, pref-val 0, valid, intern
al, pre 255, IGP cost 1, not preferred for AS-Path
[r2-route-policy]apply as-path 1 1 1 additive --- 注意:因为AS_PATH属性在进行选路时,
只关注长短,不关注内容,所以,建议增加使用过的AS号,这样不会影响防环效果。
5,OGN属性的优选规则 ---- I > E > ?
Ogn --- 起源码
一共存在三种 --- I --- 代表这条路由信息起源于AS内部使用network通告出来的。
--- e --- 代表来自于EGP协议。
--- ? --- 除了以上两种方式,其他方式获取的路由信息都是?
*>i 100.0.0.0/24 4.4.4.4 0 100 0 3i
* 12.0.0.1 0 0 1?
AS-path 1, origin incomplete, MED 0, pref-val 0, valid, external, pre 255, not
preferred for Origin
在R1的出方向修改
1,抓取流量
[r1]ip ip-prefix OGN permit 10.0.0.0 24
2,做路由策略
[r1]route-policy OGN permit node 19
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix OGN
[r1-route-policy]apply origin ?
egp Remote EGP
igp Local IGP
incomplete Unknown heritage
[r1-route-policy]apply origin incomplete
[r1-route-policy]q
[r1]route-policy OGN permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
3,在BGP中进行调用
[r1-bgp]peer 12.0.0.2 route-policy OGN export
6,优选MED值最小的路由
MED --- 多出口鉴别属性
MED值的初始默认值并不是0,而是继承了全局路由表中该路由信息的开销值。
因为MED值反应的是AS边界设备到达内部网段的开销情况,所以,如果存在多个出口,
则可以通过这个属性判断走那个出口到达目标网段开销更小。
BGP协议在进行宣告时,是宣告本地路由表中的任意路由,不关注这些路由条目的产生
方式,默认将携带这些路由的开销值,到BGP的路由条目中的MED属性中。若将本地宣
告的BGP路由传递给本地的EBGP对等体时,将携带这些MED值,便于其他AS选择出口进
入本地AS;如果通过IBGP对等体学来的路由信息中包含MED属性,则将该路由信息再通
告给其他的EBGP对等体时,将不会携带MED属性,因为这些度量并不是本地产生的。
总结:若存在多对EBGP对等体关系时,建议所有设备都将AS内部的路由进行通告,避免
选路不佳的情况产生。
注意:MED属性是为了方便判断一个AS的多个出口到达目标网段的开销,所以,在接受
多条路由时,将查看AS_PATH最左边的AS号,相同,则比较MED属性,不同则不比较,
将直接比较第七条规则。
在R2上做出方向的策略影响R1的选路
1,抓取流量
[r2]ip ip-prefix MED permit 99.0.0.0 24
2,做路由策略
[r2]route-policy MED permit node 10
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix MED
[r2-route-policy]apply cost 10
[r2-route-policy]q
[[r2]route-policy MED permit node 20
Info: New Sequence of this List.
[r2-route-policy]q
3,在BGP进程中调用
[r2-bgp]peer 12.0.0.1 route-policy MED export
[r4]ping -r -a 99.0.0.1 1.1.1.1 --- 可以记录来回路径
7,优先选择来自EBGP对等体的路由。
*> 200.0.0.0 12.0.0.1 0 0 1i
* i 4.4.4.4 0 100 0 3i
AS-path 3, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 1, not preferred for peer type
8,优选到NEXT-HOP的IGP度量最小的路由
这条规则比较的就是到达下一跳地址本地路由表中的开销值。
AS-path 1, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 2
55, IGP cost 11, not preferred for IGP cost
BGP的路由过滤
1,通过路由策略进行过滤
1,抓取流量
[r1]ip ip-prefix aa permit 192.168.1.0 24
2,配置路由策略
[r1]route-policy aa deny node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]q
[r1]route-policy aa permit node 20
Info: New Sequence of this List.
[r1-route-policy]q
3,在BGP进程调用
[r1-bgp]peer 12.0.0.2 route-policy aa export
2,通过前缀列表来过滤路由
1,抓取流量并过滤
[r2]ip ip-prefix aa deny 192.168.2.0 24
[r2]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32 --- 注意,需要放通所有剩余流量
2,在BGP进程中进行调用
[r2-bgp]peer 12.0.0.1 ip-prefix aa import
3,通过过滤策略来进行过滤
1,抓流量
[r3]ip ip-prefix aa deny 192.168.2.0 24
[r3]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
2,在BGP进程中调用
[r3-bgp]filter-policy ip-prefix aa import --- 直接在进程中调用过滤策略
也可以在peer中调用,注意,在peer中调用时,只能使用ACL列表抓取流量。
[r3-acl-basic-2000]rule deny source 192.168.3.0 0
[r3-acl-basic-2000]rule permit source any
[r3-bgp]peer 13.0.0.1 filter-policy 2000 import
BGP的社会团属性
所谓社团属性,相当于是一个路由标记,我们可以给需要通告的路由信息打上不同的社
团属性,之后,我们可以根据不同的社团属性抓取流量,执行不同的策略。 --- 社团属
性本质由32位二进制构成 --- 1,直接使用十进制表示;2,AS:NN --- AS号:自定义值
(各占16位) --- 一条路由信息,可以存在多个社团属性。
BGP中也定义了几个公认的BGP社团属性。
1,0X00000000 --- 全0的社团属性 --- "internet" --- 相当于是最大的一个集合,所有
BGP路由默认都属于该集合中。
2,0XFFFFFF02 --- “no - Advertise” --- 一旦一条路由信息打上该社团属性,则他
将不会通告给自己的BGP对等体。
3,0XFFFFFF01 --- “No - Export” --- 一旦一条路由信息打上该社团属性,则他将不
会通告给自己的EBGP对等体关系。(但是可以通告给自己的联邦EBGP对等体)
4,0XFFFFFF03 --- “No - Export - subconfed” --- 一旦一条路由信息打上该社团 属性,
则他将不会通告给自己的EBGP对等体关系。(则也不可以通告给自己的联邦 EBGP对等体)
配置路由策略
[r1]route-policy com permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community ?
INTEGER<0-4294967295> Specify community numberSTRING<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 communityattributes)no-export Do not export to external peers(well-known communityattributes)no-export-subconfed Do not send outside a sub-confederation(well-knowncommunity attributes)none No community attribute
[r1-route-policy]apply community no-advertise
[r1-route-policy]q
[r1-bgp]peer 12.0.0.2 route-policy com export
注意:华为体系中,默认关闭了社团属性的传递,需要手工配置打开
[r1-bgp]peer 12.0.0.2 advertise-community
Community:no-advertise
Community:<1:11>
1,配置策略
[r1]route-policy com1 permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community 1:11
[r1]route-policy com2 permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community 1:22
2,在发布路由时调用
[r1-bgp]network 172.16.1.0 24 route-policy com1
[r1-bgp]network 172.16.2.0 24 route-policy com1
[r1-bgp]network 172.16.3.0 24 route-policy com2
[r1-bgp]network 172.16.4.0 24 route-policy com2
社团属性过滤器 --- community - filter
1,通过过滤器抓流量
[r2]ip community-filter 1 permit 1:11
[r2]ip community-filter 2 permit 1:22
2,配置路由策略
[r2]route-policy aa deny node 10
Info: New Sequence of this List.
[[r2-route-policy]if-match community-filter 1
[r2-route-policy]q
[r2]route-policy aa permit node 20
Info: New Sequence of this List.
[r2-route-policy]if-match community-filter 2
[r2-route-policy]apply community no-export additive --- 添加多个社团属性需要后面增加
additive命令
[r2-route-policy]q
[[r2]route-policy aa permit node 30
Info: New Sequence of this List.
[r2-route-policy]q
3,调用
[r2-bgp]peer 12.0.0.1 route-policy aa import
[r2-bgp]