BGP的路由优选原则
BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
 该路由是到达目的地的唯一路由,直接优选。
 对到达同一目的地的多条路由,优选优先级最高的。
 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
一般来说,BGP计算路由优先级的规则如下:
 1、丢弃下一跳不可达的路由。
 2、优选Preference_Value值最高的路由(私有属性,仅本地有效)。
 3、优选本地优先级(Local_Preference)最高的路由。
 4、优选手动聚合>自动聚合>network>import>从对等体学到的。
 5、优选AS_Path短的路由。
 6、起源类型IGP>EGP>Incomplete。
 7、对于来自同一AS的路由,优选MED值小的。
 8、优选从EBGP学来的路由(EBGP>IBGP)。
 9、优选AS内部IGP的Metric最小的路由。
 10、优选Cluster_List最短的路由。
 11、优选Orginator_ID最小的路由。
 12、优选Router_ID最小的路由器发布的路由。
 13、优选具有较小IP地址的邻居学来的路由。
Preference_Value
 Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大,越优先。
实验
 
 要求
 本实验模拟某市ISP骨干网与两个数据中心互联的网络。
 由于设备较多,为避免设备无法开启的情况,8G内存以下的请取消系统内存保护,具体方法如下:
 菜单-工具-选项-工具设置,去掉系统内存保护前面的勾。本实验完成后可以重新勾上。
完成以下配置需求:
 1.预配置包括:
 1.1 所有设备互联IP已配置,且所有设备都有Loopback0地址。
 1.2 SW1与SW2已创建vlan、划分vlan、并创建vlanif。
 1.3 PC已配置IP和网关。
2.在所有设备的系统视图下配置全局router id为Loopback0地址。
 使得OSPF和BGP协议自动选择该RID,而无需另行配置。
3.内部网关协议IGP
 3.1 ISP骨干网中运行ISIS进程1,满足以下需求:
 3.1.1 ISIS区域49.0005
 3.1.2 系统ID规划如下:
 R1:0000.0000.0001
 R2:0000.0000.0002
 R3:0000.0000.0003
 R4:0000.0000.0004
 R5:0000.0000.0005
 3.1.3 所有路由器均为Level-2
 3.1.4 与其他AS互联的接口不激活ISIS。
 3.1.5 确保ISP骨干网内部互通。
 3.2 两个数据中心分别运行OSPF进程1,满足以下需求:
 3.2.1 router-id自动选择,不要手动配置。
 3.2.2 全部属于区域0.(两个数据中心OSPF并不互通。)
 3.2.3 使用network命令宣告,通配符使用0.0.0.0
 3.2.4 不允许宣告与其他AS互联的接口。
 3.2.5 确保两个数据中心内部各自互通。
4.建立BGP邻居
 4.1 ISP骨干网属于AS12345,R1/2/3/4/5均运行BGP,满足以下需求:
 4.1.1 R5为路由反射器(RR),R1/2/3/4为客户端(RR-client)。
 4.1.2 R1/2/3/4分别使用Loopback0与R5建立ibgp邻居关系。
 4.1.3 R1/2/3/4之间不建立bgp邻居关系。
 4.1.4 配置必要的next-hop-local命令。
 4.2 A区数据中心属于AS65100,B区数据中心属于AS65200。
 两个数据中心都采用了同城异地灾备方案,即双出口连接到不同城域网,可以避免本地城域网故障导致的网络瘫痪。
 数据中心配置BGP,满足以下需求:
 4.2.1 使用Loopback0建立以下ibgp邻居:
 B区数据中心:SW2 - R8 - R9 全互联
 4.2.2 配置必要的next-hop-local命令
 4.2.3 使用物理接口建立以下ebgp邻居:
 R6 - R1
 R7 - R3
 R8 - R2
 R9 - R4
5.发布BGP路由
 R5使用network命令发布8.8.8.8/32,数据中心按照以下要求发布路由:
 5.1 SW2使用network命令发布200.0.0.0/24和200.0.1.0/24两条路由
 5.2 R7使用network命令发布100.0.0.0/24和100.0.1.0/24两条路由
 5.3 R6使用import-route命令发布100.0.0.0/24和100.0.1.0/24两条路由,使用以下策略:
 5.3.1 ip-prefix,名称为100
 index 10 匹配 100.0.0.0/24
 index 20 匹配 100.0.1.0/24
 5.3.2 route-policy,名称为OSPFtoBGP(注意大小写),node 10,调用prefix。
 5.3.3 将OSPF引入BGP时调用策略。
 5.4 在R6和R7上将BGP引入OSPF,确认SW1学习到路由。
6.协议优先级选路
 查看SW1上收到的其他AS路由如8.8.8.8/32,发现下一跳只有一个。
 尝试分析原因,并在R6/7部署以下策略:
 6.1 进入BGP进程,使用preference命令修改BGP协议优先级。
 6.2 EBGP路由协议优先级为50,IBGP和本地路由使用默认值255。
 6.3 确认SW1收到的AS外部路由可以看到R6/7两个下一跳。
7.权重(PrefVal)选路
 在R5上查看去往AS65100的路由,发现只有R3一个边界传递了路由,而R1没有发送路由。
 尝试分析原因,为预防此类现象发生,在所有AS边界路由器上部署以下策略进行优化:
 7.1 不允许使用route-policy
 7.2 修改ebgp邻居发来的路由权重(PrefVal)为1.
 7.3 确认R5可以同时收到R1和R3发来AS65100的路由。
8.本地优先(LocPrf)选路
 8.1 ISP访问A区数据中心优先走R1。
 修改R1默认本地优先(LocPrf)为150。R5上查看路由验证。
 8.2 B区数据中心访问ISP优先走R9
 修改R9默认本地优先(LocPrf)为150。SW2上查看路由验证。
 8.3 B区数据中心访问A区数据中心优先走R8,R8上部署以下策略:
 8.3.1 ip-prefix 名称100
 index 10 匹配 100.0.0.0/24
 index 20 匹配 100.0.1.0/24
 8.3.2 route-policy 名称toSW2
 node 10,引用prefix,修改本地优先(LocPrf)为180。
 node 100,允许其他路由。
 8.3.3 R8发送路由给SW2时调用策略。
 8.3.4 在SW2查看bgp路由验证。
9.MED选路
 B区数据中心领导希望外部AS数据流量从R9进入本AS。
 9.1 在R5上查看AS65200的路由,发现选择R2作为最佳路径,流量会从R8进入AS65200。
 尝试分析原因。
 9.2 B区数据中心原管理员计划使用MED值影响AS12345优选R4作为最佳路径,使得流量从R9进入本AS。
 方案如下:
 R8部署策略,增加发送给R2路由的MED值
 route-policy toR2 permit node 10
 apply cost 200
 bgp 65200
 peer 5.0.28.2 route-policy toR2 export
 原管理员还没来得及部署该策略,就被ISP骨干网领导挖走,也没来得及完成工作交接。
 B区数据中心新管理员不会使用route-policy,担心配置错误没有按照原管理员方案执行。
 但是当他仔细查看R8的OSPF路由表和BGP路由表发现:
 R8使用ospf学习到200.0.0.0/24和200.0.1.0/24,cost为2.
 R8使用bgp学习到200.0.0.0/24和200.0.1.0/24,MED为0.
 于是他灵机一动,R8上只新增了两条命令,在不影响其他路由的情况下完成了这个需求。
 9.3 原管理员得知新管理员的办法后,表示这个办法看似简单,实则将来更麻烦,尝试分析原因。
具体过程
 1.预配置包括:
 1.1 所有设备互联IP已配置,且所有设备都有Loopback0地址。
 1.2 SW1与SW2已创建vlan、划分vlan、并创建vlanif。
 1.3 PC已配置IP和网关。
2.在所有设备的系统视图下配置全局router id为Loopback0地址。
 使得OSPF和BGP协议自动选择该RID,而无需另行配置。
 R1-R9
 Router id 5.x.x.x
 SW1
 Router id 5.11.11.11
 SW2
 Router id 5.22.22.22
3.内部网关协议IGP
 3.1 ISP骨干网中运行ISIS进程1,满足以下需求:
 3.1.1 ISIS区域49.0005
 3.1.2 系统ID规划如下:
 R1:0000.0000.0001
 R2:0000.0000.0002
 R3:0000.0000.0003
 R4:0000.0000.0004
 R5:0000.0000.0005
 3.1.3 所有路由器均为Level-2
 3.1.4 与其他AS互联的接口不激活ISIS。
 3.1.5 确保ISP骨干网内部互通。
 R1
 isis 1
 is-level level-2
 network-entity 49.0005.0000.0000.0001.00
R2:
 isis 1
 is-level level-2
 network-entity 49.0005.0000.0000.0002.00
R3:
 isis 1
 is-level level-2
 network-entity 49.0005.0000.0000.0003.00
R4:
 isis 1
 is-level level-2
 network-entity 49.0005.0000.0000.0004.00
R1/2/3/4:
 interface LoopBack0
 isis enable 1
 interface GigabitEthernet0/0/0
 isis enable 1
 interface GigabitEthernet5/0/0
 isis enable 1
R5:
 isis 1
 is-level level-2
 network-entity 49.0005.0000.0000.0005.00
interface LoopBack0
 isis enable 1
 interface GigabitEthernet5/0/0
 isis enable 1
 interface GigabitEthernet5/0/1
 isis enable 1
 interface GigabitEthernet5/0/2
 isis enable 1
 interface GigabitEthernet5/0/3
 isis enable 1
3.2 两个数据中心分别运行OSPF进程1,满足以下需求:
 3.2.1 router-id自动选择,不要手动配置。
 3.2.2 全部属于区域0.(两个数据中心OSPF并不互通。)
 3.2.3 使用network命令宣告,通配符使用0.0.0.0
 3.2.4 不允许宣告与其他AS互联的接口。
 3.2.5 确保两个数据中心内部各自互通。
R6:
 ospf 1
 area 0.0.0.0
 network 5.0.116.6 0.0.0.0
 network 5.6.6.6 0.0.0.0
R7:
 ospf 1
 area 0.0.0.0
 network 5.0.117.7 0.0.0.0
 network 5.7.7.7 0.0.0.0
SW1:
 ospf 1
 area 0.0.0.0
 network 5.11.11.11 0.0.0.0
 network 5.0.116.11 0.0.0.0
 network 5.0.117.11 0.0.0.0
 network 100.0.0.254 0.0.0.0
 network 100.0.1.254 0.0.0.0
R8:
 ospf 1
 area 0.0.0.0
 network 5.0.228.8 0.0.0.0
 network 5.8.8.8 0.0.0.0
R9:
 ospf 1
 area 0.0.0.0
 network 5.0.229.9 0.0.0.0
 network 5.9.9.9 0.0.0.0
SW2:
 ospf 1
 area 0.0.0.0
 network 5.22.22.22 0.0.0.0
 network 5.0.228.22 0.0.0.0
 network 5.0.229.22 0.0.0.0
 network 200.0.0.254 0.0.0.0
 network 200.0.1.254 0.0.0.0
4.建立BGP邻居
 4.1 ISP骨干网属于AS12345,R1/2/3/4/5均运行BGP,满足以下需求:
 4.1.1 R5为路由反射器(RR),R1/2/3/4为客户端(RR-client)。
 4.1.2 R1/2/3/4分别使用Loopback0与R5建立ibgp邻居关系。
 4.1.3 R1/2/3/4之间不建立bgp邻居关系。
 4.1.4 配置必要的next-hop-local命令。
 R1/2/3/4:
 bgp 12345
 peer 5.5.5.5 as-number 12345
 peer 5.5.5.5 connect-interface LoopBack0
 peer 5.5.5.5 next-hop-local
R5:
 bgp 12345
 peer 5.1.1.1 as-number 12345
 peer 5.1.1.1 connect-interface LoopBack0
 peer 5.1.1.1 reflect-client
 peer 5.2.2.2 as-number 12345
 peer 5.2.2.2 connect-interface LoopBack0
 peer 5.2.2.2 reflect-client
 peer 5.3.3.3 as-number 12345
 peer 5.3.3.3 connect-interface LoopBack0
 peer 5.3.3.3 reflect-client
 peer 5.4.4.4 as-number 12345
 peer 5.4.4.4 connect-interface LoopBack0
 peer 5.4.4.4 reflect-client
 4.2 A区数据中心属于AS65100,B区数据中心属于AS65200。
 两个数据中心都采用了同城异地灾备方案,即双出口连接到不同城域网,可以避免本地城
 域网故障导致的网络瘫痪。
 数据中心配置BGP,满足以下需求:
 4.2.1 使用Loopback0建立ibgp邻居:
 A区数据中心:SW1不运行BGP,R6/7不建立ibgp邻居。
 B区数据中心:SW2 - R8 - R9 全互联
 4.2.2 配置必要的next-hop-local命令
 SW2:
 bgp 65200
 peer 5.8.8.8 as-number 65200
 peer 5.8.8.8 connect-interface LoopBack0
 peer 5.9.9.9 as-number 65200
 peer 5.9.9.9 connect-interface LoopBack0
R8:
 bgp 65200
 peer 5.9.9.9 as-number 65200
 peer 5.9.9.9 connect-interface LoopBack0
 peer 5.9.9.9 next-hop-local
 peer 5.22.22.22 as-number 65200
 peer 5.22.22.22 connect-interface LoopBack0
 peer 5.22.22.22 next-hop-local
R9:
 bgp 65200
 peer 5.8.8.8 as-number 65200
 peer 5.8.8.8 connect-interface LoopBack0
 peer 5.8.8.8 next-hop-local
 peer 5.22.22.22 as-number 65200
 peer 5.22.22.22 connect-interface LoopBack0
 peer 5.22.22.22 next-hop-local
 4.2.3 使用物理接口建立以下ebgp邻居:
 R6 - R1
 R7 - R3
 R8 - R2
 R9 - R4
 R6:
 bgp 65100
 peer 5.0.16.1 as-number 12345
 R1:
 bgp 12345
 peer 5.0.16.6 as-number 65100
 R7:
 bgp 65100
 peer 5.0.37.3 as-number 12345
 R3:
 bgp 12345
 peer 5.0.37.7 as-number 65100
 R8:
 bgp 65200
 peer 5.0.28.2 as-number 12345
 R2:
 bgp 12345
 peer 5.0.28.8 as-number 65200
 R9:
 bgp 65200
 peer 5.0.49.4 as-number 12345
 R4:
 bgp 12345
 peer 5.0.49.9 as-number 65200
5.发布BGP路由
 R5使用network命令发布8.8.8.8/32
 R5:
 bgp 12345
 network 8.8.8.8 32
 数据中心按照以下要求发布路由:
 5.1 SW2使用network命令发布200.0.0.0/24和200.0.1.0/24两条路由
 SW2:
 bgp 65200
 network 200.0.0.0
 network 200.0.1.0
 5.2 R7使用network命令发布100.0.0.0/24和100.0.1.0/24两条路由
 R7:
 bgp 65100
 network 100.0.0.0 255.255.255.0
 network 100.0.1.0 255.255.255.0
 5.3 R6使用import-route命令发布100.0.0.0/24和100.0.1.0/24两条路由,使用以下策略:
 5.3.1 ip-prefix,名称为100
 index 10 匹配 100.0.0.0/24
 index 20 匹配 100.0.1.0/24
 5.3.2 route-policy,名称为OSPFtoBGP(注意大小写),node 10,调用prefix。
 5.3.3 将OSPF引入BGP时调用策略。
 R6:
 ip ip-prefix 100 index 10 permit 100.0.0.0 24
 ip ip-prefix 100 index 20 permit 100.0.1.0 24
 route-policy OSPFtoBGP permit node 10
 if-match ip-prefix 100
 bgp 65100
 import-route ospf 1 route-policy OSPFtoBGP
 5.4 在R6和R7上将BGP引入OSPF,确认SW1学习到路由。
 R6/7:
 ospf 1
 import-route bgp
 [SW1]dis ospf routing
6.协议优先级选路
 查看SW1上收到的其他AS路由如8.8.8.8/32,发现下一跳只有一个。
 尝试分析原因,
 此时R6/R7形成了BGP和OSPF的双点双向引入路由环境。
 当R6将BGP引入到OSPF时,除SW1外,R7也会收到OSPF外部路由。
 R7 从R3收到EBGP路由 协议优先级为255;
 从R6收到OSPF外部路由 协议优先级为150。
 由于150<255,所以R7会使用OSPF外部路由。
 R7上把BGP引入OSPF时,8.8.8.8/32不属于BGP路由,所以R7的引入无效。
 只有当R7优选R3的EBGP路由时,才会把8.8.8.8/32引入到OSPF。
 所以需要修改R7从R3收到路由的协议优先级,小于150。
 R7正常后,R6会有同样的问题,所以也需要修改。
 并在R6/7部署以下策略:
 6.1 进入BGP进程,使用preference命令修改BGP协议优先级。
 6.2 EBGP路由协议优先级为50,IBGP和本地路由使用默认值255。
 R6/7:
 bgp 65100
 preference 50 255 255
 6.3 确认SW1收到的AS外部路由可以看到R6/7两个下一跳。
 [SW1]dis ospf routing
7.权重(PrefVal)选路
 在R5上查看去往AS65100的路由,发现只有R3一个边界传递了路由,而R1没有发送路由。
 尝试分析原因,
 dis bgp routing-table
 尝试分析原因:
 R1上同时收到R3和R6发来的路由,R3路由起源属性为“i”,R6起源属性为“?”,故而选择了
 R3作为最佳下一跳。由于ibgp邻居发来的路由不能再传递给其他ibgp邻居,所以R1没有将
 路由发送给R5。
 为预防此类现象发生,在所有AS边界路由器上部署以下策略进行优化:
 7.1 不允许使用route-policy
 7.2 修改ebgp邻居发来的路由权重(PrefVal)为1.
 R1:
 bgp 12345
 peer 5.0.16.6 preferred-value 1
 R2:
 bgp 12345
 peer 5.0.28.8 preferred-value 1
 R3:
 bgp 12345
 peer 5.0.37.7 preferred-value 1
 R4:
 bgp 12345
 peer 5.0.49.9 preferred-value 1
 R6:
 bgp 65100
 peer 5.0.16.1 preferred-value 1
 R7:
 bgp 65100
 peer 5.0.37.3 preferred-value 1
 R8:
 bgp 65200
 peer 5.0.28.2 preferred-value 1
 R9:
 bgp 65200
 peer 5.0.49.4 preferred-value 1
 7.3 确认R5可以同时收到R1和R3发来AS65100的路由。
 [R5]dis bgp routing-table
8.本地优先(LocPrf)选路
 8.1 ISP访问A区数据中心优先走R1。
 修改R1默认本地优先(LocPrf)为150。R5上查看路由验证。
 R1:
 bgp 12345
 default local-preference 150
 dis bgp routing-table
 8.2 B区数据中心访问ISP优先走R9
 修改R9默认本地优先(LocPrf)为150。SW2上查看路由验证。
 R9:
 bgp 65200
 default local-preference 150
 [SW2]dis bgp routing-table
 8.3 B区数据中心访问A区数据中心优先走R8,R8上部署以下策略:
 8.3.1 ip-prefix 名称100
 index 10 匹配 100.0.0.0/24
 index 20 匹配 100.0.1.0/24
 8.3.2 route-policy 名称toSW2
 node 10,引用prefix,修改本地优先(LocPrf)为180。
 node 100,允许其他路由。
 8.3.3 R8发送路由给SW2时调用策略。
 8.3.4 在SW2查看bgp路由验证。
 R8:
 ip ip-prefix 100 index 10 permit 100.0.0.0 24
 ip ip-prefix 100 index 20 permit 100.0.1.0 24
 route-policy toSW2 permit node 10
 if-match ip-prefix 100
 apply local-preference 180
 route-policy toSW2 permit node 100
 bgp 65200
 peer 5.22.22.22 route-policy toSW2 export
 [SW2]dis bgp routing-table
9.MED选路
 B区数据中心管理员希望外部AS数据流量从R9进入本AS。
 9.1 在R5上查看AS65200的路由,发现选择R2作为最佳路径,流量会从R8进入AS65200。
 尝试分析原因。
 dis bgp routing-table
 按照选路13条原则,前11条都完全相同,第12条比较RID小的作为最佳路径。所以R5选择
 5.2.2.2
 9.2 B区数据中心原管理员计划使用MED值影响AS12345优选R4作为最佳路径,使得流量从
 R9进入本AS。
 方案如下:
 R8部署策略,增加发送给R2路由的MED值
 route-policy toR2 permit node 10
 apply cost 200
 bgp 65200
 peer 5.0.28.2 route-policy toR2 export
 原管理员还没来得及部署该策略,就被ISP骨干网领导挖走,也没来得及完成工作交接。
 B区数据中心新管理员不会使用route-policy,担心配置错误没有按照原管理员方案执行。
 但是当他仔细查看R8的OSPF路由表和BGP路由表发现:
 R8使用ospf学习到200.0.0.0/24和200.0.1.0/24,cost为2.
 R8使用bgp学习到200.0.0.0/24和200.0.1.0/24,MED为0.
 于是他灵机一动,R8上只新增了两条命令,在不影响其他路由的情况下完成了这个需求。
 R8:
 bgp 65200
 network 200.0.0.0 24
 network 200.0.1.0 24
 R8直接宣告OSPF路由,OSPF的cost值会写入MED,发送给R2的路由MED自动变成2。
 [R2]dis bgp routing-table
 R2上看,R8的MED为2,R4MED默认为0,但是由于需求7中修改了权重(PrefVal),所以依
 旧选择R8。
 dis bgp routing-table
 R5上看,R2的MED为2,R4的MED为默认0,所以选择R4。
 9.3 原管理员得知新管理员的办法后,表示这个办法看似简单,实则将来更麻烦,尝试分
 析原因。
 新管理的方法必须逐条使用network命令通告路由,将来B区数据中心扩容,IP地址增多会
 导致更多的network宣告,如果忘记宣告还可能导致流量从R8进入AS65200。
 原管理员的方法直接匹配所有路由,新增路由自动修改MED,具备很好的扩展性。










