BGP路由优选
BGP路由优选规则
1.优选Preferred-Value属性值最大的路由
修改Preferred-Value属性值的配置
[AR1]bgp 200
[AR1-bgp]peer 10.0.3.3 preferred-value 1002.优选Local_Preference属性值最大的路由
NOTE
只在AS内部有效,应用于iBGP的邻居关系之间
修改Local_Preferenced的配置
ip ip-prefix local-pref index 10 permit 10.0.45.0 24
route-policy local-pref permit node 10
if-match ip-prefix local-pref
apply local-preference 200
quit
route-policy local-pref permit node 20
quit
quit
bgp 200
peer 10.0.1.1 route-policy local-pref export3.本地始发的路由优先级
本地始发的BGP路由优选与从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的
4.优选AS-Path属性值最短的路由
5.优选Origin属性最优的路由
Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete
6.优选MED属性值最小的路由
修改MED值的配置
ip ip-prefix med index 10 permit 10.0.45.0 24
route-policy med permit node 10
if-match ip-prefix med
apply cost 20
quit
route-policy mde premit node 20
quit
bgp 200
peer 10.0.1.1 route-policy med export
compare-different-as-med7.优选从EBGP对等体学来的路由
EBGP的路由优先级高于IBGP路由
8.优选到Next-Hop的IGP度量值最小的路由
以上八条均满足,则在全局路由表中会形成等价路由,需要通过命令设置等价路由数量,但等价路由在BGP路由表中仍然会继续优选
9.优选Cluster_List最短的路由
10.优选Route-ID值最小的设备通告的路由
11.优选具有最小IP地址的对等体宣告的路由
实验实现的方式
1.匹配流量。ACL或前缀列表(通常需要匹配子网掩码的场景中使用)
2.配置路由策略
3.应用于对等体
BGP的反射
场景来源于BGP的通告规则三:来源于iBGP的路由不能再发送给iBGP的邻居。但是又需要让AS内部全覆盖BGP的路由,则可以通过iBGP邻居的全互联和BGP反射两种方式解决
传递:通过邻居关系完成,传递过程中有可能改变BGP的某些属性
反射:通过反射器完成,反射过程不会改变BGP的任何属性
反射器(RR)
客户端(C):反射获取的路由
非客户端(NoneC):传递获取的路由
反射规则
(1)反射器的路由来源于EBGP邻居,则会反射给所有的客户端,并且传递给所有的非客户(非客户和反射器有iBGP邻居关系)
(2)反射器的路由来源于iBGP邻居(非客户端),则会反射给所有的客户端,非客户端不反射
(3)反射器的路由来源于iBGP邻居(客户端),则会反射给所有的客户端和非客户端
(4)反射器的路由来源于EBGP,传递给下一跳的iBGP邻居,无论是非客户端还是客户端,只反射给客户端
Originator_ID 和 Cluster_List 在BGP中的作用
在BGP(边界网关协议)的反射场景中,为了避免路由环路和增强网络的稳定性,使用了Originator_ID和Cluster_List这两个字段,它们在反射器和多簇环境中具有非常重要的作用。
Originator_ID:单簇防环
Originator_ID 是用来防止路由环路的一种机制,通常用于BGP Route Reflector(RR,路由反射器)环境下。其主要作用是防止路由在单一簇内形成环路。
Originator_ID是一个路由器的Route ID(通常是该路由器的BGP标识符),这个ID会在BGP路由被反射时进行记录。
在BGP的路由反射场景中,当一个路由器向其BGP邻居反射路由时,路由会带上Originator_ID。每经过一次路由器,都会在路由上附加一个Originator_ID,以便追踪路由的来源。
防止环路:
当路由被反射到另一个路由器时,接收路由的路由器会查看这个路由的Originator_ID,并将其与自身的Route_ID进行比较。
如果发现Originator_ID和接收路由器的Route_ID相同,说明该路由已经经过该路由器,路由就会被拒绝,避免形成环路。
如果Originator_ID与接收路由器的Route_ID不一致,接收路由器会接受该路由,继续进行路由反射。
这种机制确保了在BGP路由反射环境中,同一个簇内的路由器不会通过反射机制相互转发路由,从而避免环路问题。
Originator_ID 示例
假设有如下网络拓扑,其中Router A是BGP路由反射器,Router B和Router C是其客户端。
Router B向Router A发送一个BGP路由,路由中带有Router B的Originator_ID(即Router B的Route-ID)。
Router A再将该路由反射到Router C。
当Router C收到该路由时,它会检查该路由的Originator_ID,如果Originator_ID是Router B的Route-ID(而Router C是Router B的邻居),Router C会拒绝该路由,因为它知道该路由已经来自Router B,避免路由环路。
Cluster_List:多簇防环
Cluster_List是用于BGP路由反射中的多簇防环机制,它与AS_Path类似,记录了路由经过的簇(Cluster)信息。该字段有助于防止路由在多个BGP反射器之间形成环路。
Cluster_List 是一个包含多个Cluster_ID的列表,每个Cluster_ID代表一个BGP反射器簇的ID。每经过一个BGP反射器簇,该簇的ID就会被添加到Cluster_List中。
每个BGP路由反射器都有一个唯一的Cluster_ID。当路由被反射时,路由反射器会把自己的Cluster_ID添加到路由的Cluster_List中。
当路由再次被反射时,接收该路由的路由器会检查路由的Cluster_List,如果发现自己的Cluster_ID已经在Cluster_List中,就会拒绝接受该路由,从而避免环路的发生。
如果Cluster_List中没有当前路由器的Cluster_ID,接收路由的路由器会继续转发该路由。 通过这种方式,BGP反射器能够避免跨簇的路由环路问题。