目录
一、属性分类
1.1、公认属性
1.2、可选属性
二、选路原则
0、丢弃不可达
取值越大越优
1、Preferred-Value
2、Local_Preference
取值越小越优
3、路由优先级
4、AS_Path
5、Origin
6、MED
7、路由来源
8、Next_Hop的IGP度量值
BGP路由等价负载分担:以上8条属性全部相同时可以形成路由负载分担
9、Cluster_List
10、Router ID(Orginator_ID)
11、IP地址
BGP邻居之间传递的是路由信息,不是拓扑信息,所以无法防环等
一、属性分类
1.1、公认属性
所有BGP路由器都必须能够识别的属性
1、公认必遵
Origin
Local_Preference
AS_Path
所有BGP设备都要认识这一类属性;
而且这类属性必须存在于Update报文中;
如果缺少这类属性,update报文不完整, 路由信息会出现错误;
2、公认任意
Atomic_aggregate
Next_hop
所有BGP设备认识此类属性
这类属性不要求必须存在于Update报文中(可以在,也可以不在);
如果缺少这类属性,路由信息不会出现错误;
1.2、可选属性
可选属性不需要都被BGP路由器所识别
1、可选过渡:BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体
MED
Cluster-List
Originator-ID
所有BGP设备可以认识,也可以不认识此类属性;
如果不认识,但仍然会接收此类属性,并且会通告给邻居;
2、可选非过渡:BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体
Aggregator
Community
所有BGP设备都可以认识,也可以不认识此类属性(可以认识,也可以不认识);
如果不认识,会忽略此类属性,而且不会通告邻居。
二、选路原则
IGP选路在AS内选路,BGP选路是在宏观AS层面选出口。
当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:
0、丢弃不可达
丢弃下一跳不可达的路由。
取值越大越优
1、Preferred-Value
优选Preferred-Value(权重)属性值最大的路由,默认为0。
本地设备,只影响自己,也就是说,如果想要来自某邻居的路由被优选,就在本地设备上把邻居的权重增大,是一个入向策略。
bgp 200
##修改对等体3.3.3.3发布的路由权重为12
##在接收路由设备上配置
peer 3.3.3.3 preferred-Value 1
给某些路由设置属性值
第一步:抓路由
##将10.0.45.0 24抓出来
ip ip-pretix l permit 10.0.45.0 24
第二步:写策略
route-policy fromR3 permit node 10
##如果匹配ip-prefix 1,应用preferred-value 1并执行permit
if-match ip-prefix 1
apply preferred-value 1
##默认其他拒绝,则允许所有
route-policy fromR3 permit node 100
第三步:调用
bgp 200
##入方向上对对等体3.3.3.3运行策略fromR3
peer 3.3.3.3 route-policy fromR3 import
2、Local_Preference
优选Local_Preference属性值最大的路由,默认为100。
仅限AS内,即IBGP内有效,只发给IBGP邻居。
决定流量从哪个边界(ASBR)出本AS。
为ASBR设计冗余减轻负担使用。
如上图,R1会分别收到来自R2的BGP路由10.0.45.0/24+172.16.45.0/24和来自R3的BGP路由10.0.45.0/24+172.16.45.0/24
##R3
bgp 200
##修改R3的本地优先属性值为130
default local-preference 130
在R3设置完本地优先后,R2上来自R4的BGP路由10.0.45.0/24+72.16.45.0/24,因为EBGP没有Local_Preference,所以默认为100,而此时来自R3的10.0.45.0/24+172.16.45.0/24的本地优先属性为130,所以R2优选了来自R3的路由,也就是说此时在R2上10.0.45.0/24+172.16.45.0/24的下一跳为3.3.3.3,优选了R3的路由后就不会传递给R1了,因为II不传。那下一跳为24.1.1.4的EBGP路由会发送给R1么?不会!因为BGP只发最佳路径。所以R1上看不到来自R2的BGP路由。10.0.45.0/24+72.16.45.0/24。
如果想让R2还给R1发布10.0.45.0/24+172.16.45.0/24的路由,可以将下一跳为24.1.1.4的EBGP路由Preferred-Value属性增大变为优选路由。
##R3
给某些路由设置属性值
第一步:抓路由
##将10.0.45.0 24抓出来
ip ip-pretix l permit 10.0.45.0 24
第二步:写策略
route-policy toR1 permit node 10
##如果匹配ip-prefix 1,应用local-preference 130并执行permit
if-match ip-prefix 1
apply local-preference 130
##默认其他拒绝,则允许所有
route-policy toRl permit node 100
第三步:调用
bgp 200
##出方向上对对等体1.1.1.1运行策略fromR3
peer 1.1.1.1 route-policy toR1 export
取值越小越优
3、路由优先级
本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。
本地设备,只影响自己。
手动聚合:R2中的BGP路由如上,对10.0.44.0/24和10.0.45.0/24进行聚合
##R2
bgp 200
aggregate 10.0.0.0 16
如上图,可以发现聚合后的路由下一跳为127.0.0.1为本地环回地址,代表聚合路由,并且明细路由仍然有效,并发送至邻居。如果觉得不需要发送,配置如下:
##R2
bgp 200
##加上detail-suppressed就不会给邻居发明细路由,只发聚合路由
aggregate 10.0.0.0 16 detail-suppressed
自动聚合:一般不用
因为自动聚合只能按照A类/8、B类/16、C类/24聚合,范围太大
ip route-static 10.0.45.0 255.295.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
##自动聚合
summary automatic
import-route static
4、AS_Path
优选AS_Path属性值最短的路由。
记录前往目标网络的路由经过的AS号列表
作用:防环
注意:
- 只在发给EBGP邻居时添加新AS号信息,IBGP邻居之间传递不变。
- 修改AS_Path时只能在EBGP邻居之间改。
使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式:
增加AS:为避免增加AS导致路由不可达,建议增加本AS
AS_Path:100—>apply as-path 100 additive—>AS_Path:100 100
替换AS:有可能导致环路
AS_Path:300 200 100—>apply as-path 400 overwrite—>AS_Path:400
清空AS:有可能导致环路
AS_Path:300 200 100—>apply as-path none overwrite—>AS_Path:
第一步:抓路由
ip ip-prefix 172 index 10 permit 172.16.45.0 24
第二步:写策略
route-policy fromR4 permit node 10
if-match ip-prefix 172
apply as-path 100 additive
route-policy fromR4 permit node 100
第三步:调用
bgp 200
peer 24.1.1.4 route-policy fromR4 import
5、Origin
优选Origin起源属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
起源名称 | 标记 | 描述 |
IGP | i | 如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该 BGP路由的Origin属性为IGP |
EGP | e | 如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP |
Incomplete | ? | 如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整 的)。例如通过import-route命令引入到BGP的路由 |
6、MED
优选MED(开销)属性值最小的路由;
设计MED的目的:建议邻居AS(跨AS无法影响)的选路,并不是决定AS的选路;
对于始发者,MED可以传给所有邻居保持不变;
对于接收者,MED只能传给IBGP邻居不变,传递给EBGP邻居时为空;
在ASBR配置策略,作为MED始发起作用;
来自相同AS的路由才会比较MED。
第一步:抓路由
ip ip-prefix 172 index 10 permit 172.16.45.0 24
第二步:写策略
route-policy fromR4 permit node 10
if-match ip-prefix 172
apply cost 4
route-policy fromR4 permit node 100
第三步:调用
bgp 200
peer 24.1.1.2 route-policy fromR4 export
7、路由来源
优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。
8、Next_Hop的IGP度量值
优选到Next_Hop的IGP度量值最小的路由。
到达比较第8条时,前7条都一样,按照第7条,那么两条路由要么都是IBGP,要么都是EBGP,IBGP比内部开销,EBGP因为都是直连开销一般为0,无法对比出结果。
BGP路由等价负载分担:以上8条属性全部相同时可以形成路由负载分担
BGP路由等价负载分担(ECMP)
在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况。
通过配置BGP负载分担,可以使得设备同时将多条等代价的BGP路由加载到路由表,实现流量负载均衡,减少网络拥塞。
值得注意的是,尽管配置了BGP负载分担,设备依然只会在多条到达同一目的地的BGP路由中优选一条路由,并只将这条路由通告给其他对等体。
在设备上使能BGP负载分担功能后,只有满足条件的多条BGP路由才会成为等价路由,进行负载分担。
形成BGP路由等价负载分担的条件
- Preferred-Value属性值相同。
- Local_Preference属性值相同。
- 都是聚合路由或者非聚合路由。
- AS_Path属性长度相同。
- Origin类型(IGP、EGP、Incomplete)相同。
- MED属性值相同。
- 都是EBGP路由或都是IBGP路由。
- AS内部IGP的Metric相同。
- AS_Path属性完全相同。
bgp 200
maximum load-balancing ibgp 2
##忽略AS号不一致
load-balancing as-path-ignore
9、Cluster_List
优选Cluster_List最短的路由;
簇ID列表,类似水印。
R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List:10.0.1.1。R3再次反射给R4时,Cluster_List值为:10.0.3.3 10.0.1.1,R4再次反射给R1时Cluster_List值:10.0.4.4 10.0.3.3 10.0.1.1。
当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_ID,判断存在环路,从而忽略该路由更新。
10、Router ID(Orginator_ID)
优选Router ID(Orginator_ID)最小的设备通告的路由。
9、10条跟反射器有关。
Originator_ID:发起者ID;
将R1的router-id写在R2发给R1的路由条目中,反射器R2收到后将router-id改写为OID属性:2.2.2.2,且反射给R3时OID仍为2.2.2.2,R3收到后与自己router-id比较,一致丢弃,不一致传递。当同一AS内有多个RR,OID由第一个RR为路由条目写上OID。
11、IP地址
优选具有最小IP地址的对等体通告的路由。