BGP选路原则
华为路由器当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
如果此路由的下一跳不可达,忽略此路由
- 优选协议首选值(PrefVal)最高的路由
- 优选本地优先级(Local_Pref)最高的路由
- 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选本地手动聚合> 本地自动聚合> 本地network> 本地import> 从对等体学到的。
- 优选AS路径(AS_Path)最短的路由
- 比较Origin属性,依次优选Origin类型为IGP(聚合或者network方式)、EGP、Incomplete的路由
- 优选MED值最低的路由
- 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
- 优选到下一跳IGP Metric较小的路由
- 优选Cluster_List最短的路由
- originator ID 越小越优
- 优选Router ID最小的路由器发布的路由
- 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
BGP等价路由实现方式
当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。
EBGP
以上前8条可以实现等价负载均衡。但是需要开启maximum load-balancing命令
IBGP
11条全部相同才会等价负载均衡。但是这种网络在实际网络中不存在。怎么办?
IBGP使用虚拟下一跳实现等价路由负载均衡:IBGP选路最优的路由,通过策略修改该路由的next-hop为一个虚拟地址,该虚拟地址同时配置在2台需要等价的设备上。BGP路由协议在根据next-hop属性转发时会进行IGP迭代,发现下一跳IP有2个等价IGP路由,故出接口被迭代到2个链路上实现等价均衡。
IBGP等价路由负载实验:虚拟下一跳
互联链路和loopback全部起ISIS level 2。
RR为AR1、 AR2、 AR3、 AR4的BGP 路由反射器。
AR1和AR2向RR通告BGP路由100.100.100.0/24
RR上看路由只会优先1条:来自peer 1.1.1.1通告,没有优选peer 2.2.2.2 通告(原因为not preferred for router ID,11条选路规则的第10条)。RR只将优先的路由通告给4个客户端
<RR>dis bgp routing-table 100.100.100.0
BGP local router ID : 5.5.5.5
Local AS number : 100
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 100.100.100.0/24:
RR-client route.
From: 1.1.1.1 (1.1.1.1)
Route Duration: 00h07m35s
Relay IP Nexthop: 10.5.3.2
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 1.1.1.1
Qos information : 0x0
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, bes
t, select, active, pre 255, IGP cost 20
Advertised to such 4 peers:
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
BGP routing table entry information of 100.100.100.0/24:
RR-client route.
From: 2.2.2.2 (2.2.2.2)
Route Duration: 00h07m19s
Relay IP Nexthop: 10.5.3.2
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 2.2.2.2
Qos information : 0x0
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre
255, IGP cost 20, not preferred for router ID
Not advertised to any peer yet
未使用BGP虚拟下一跳负载均衡方案时路由
在AR3上看路由只有一条BGP路由,因为RR只反射了RR优选的这一条最优路由
<AR3>dis bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.100.100.0/24 1.1.1.1 0 100 0 i
<AR3>
配置BGP虚拟下一跳负载均衡
这个实现在AR1和AR2配置虚拟IP 100.1.1.1并IGP发布。实现在AR3上到达100.1.1.1IGP负载均衡2个下一跳。
[AR1-LoopBack1]dis th
[V200R003C00]
#
interface LoopBack1
ip address 100.1.1.1 255.255.255.255
isis enable 1
#
return
[AR2-LoopBack1]dis th
[V200R003C00]
#
interface LoopBack1
ip address 100.1.1.1 255.255.255.255
isis enable 1
#
return
<AR3>dis ip routing-table 100.1.1.1
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
100.1.1.1/32 ISIS-L2 15 10 D 10.1.3.1 GigabitEthernet0/0/0
ISIS-L2 15 10 D 10.2.3.1 GigabitEthernet2/0/1
<AR3>
<AR3此时到达100.1.1.1有2个路由,等价均衡的。>
使用路由策略将通告的BGP路由next-hop改为虚拟IP
<AR1>
#
route-policy bgp-export permit node 10
if-match ip-prefix bgp-export
apply ip-address next-hop 100.1.1.1
#
ip ip-prefix bgp-export index 10 permit 100.100.100.0 24
#
[AR1-bgp]dis th
#
bgp 100
router-id 1.1.1.1
peer 5.5.5.5 as-number 100
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
network 100.100.100.0 255.255.255.0
peer 5.5.5.5 enable
peer 5.5.5.5 route-policy bgp-export export <应用路由策略>
peer 5.5.5.5 advertise-community
#
虚拟下一跳负载均衡实现效果。
<AR3>dis bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 100.100.100.0/24 100.1.1.1 0 100 0 i
<AR3>dis ip routing-table 100.100.100.0
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
100.100.100.0/24 IBGP 255 0 RD 100.1.1.1 GigabitEthernet0/0/0
IBGP 255 0 RD 100.1.1.1 GigabitEthernet2/0/1
<这个时候IBGP路由存在2个下一跳,已经等价负载了>
<AR3>
ENSP实验配置文件: