BGP的选路原则
1.优选Preferred-Valuel属性值最大的路由.
2.优选Local Preference属性值最大的路由
3.本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import从对等体学到的。
4.优选AS Path属性值最短的路由。
5.优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
6.优选MED属性值最小的路由
7.优选从EBGP对等体学来的路由(EBGP路由优先级高于引BGP路由)。
8.优选到Next_Hop的IGP度量值最小的路由。
9.优选Cluster_Listi最短的路由
10.优选Router ID(Orginator_ID)最小的设备通告的路由。
11.优选日有最小川P地址的对等体通告的路由
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
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,抓取流量32
[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
9.优选Cluster_List最短的路由。
10.优选Router ID(Orginator_ID起源者ID)最小的设备通告的路由。
11.优选具有最小P地址的对等体通告的路由。
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 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 no-advertise
[r1-route-policy]q
[r1-bgp]peer 12.0.0.2 route-policy com export
[1-route-policy]undo apply community
注意:华为体系中,默认关闭了社团属性的传递,需要手工配置打开
[r1-bgp]peer 12.0.0.2 advertise-community
Community:no-advertise
[r1-route-policy]apply community 1:11
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]