13、BGP路由反射器、路由优选
由于水平分割的原因,为了保证AS内的路由器都学到完整路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:
- 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时;
- AS内BGP网络的可扩展性较差。
为此可以采用路由反射器技术。
路由反射器
引入路由反射器之后存在两种角色:
- RR(Route Reflector):路由反射器
- Client:RR客户端
RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。
将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR。
路由反射器规则
RR在接收BGP路由时:
- 如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户。
- 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。
- 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。(该规则,实际上就是BGP的基本规则之一:从EBGP学到的,会发送给所有IBGP)
总结:非非不传。从非客户学到的不会传给非客户。其他情况都传。
注意:路由反射只是在AS内部传递。
反射规则示例
注意此处“反射”和“发送”的区别。
- “发送”指的是传统情况下(相当于RR不存在的场景下)的BGP路由传递行为。
- “反射”指的是遵循路由反射规则的情况下,RR执行的路由传递动作,被反射出去的路由会被RR插入特殊的路径属性。

RR场景下的路由防环
RR的设定使得IBGP水平分割原则失效,这就可能导致环
路的产生,为此RR会为BGP路由添加两个特殊的路径属
性来避免出现环路:
- Originator_ID(起源者ID)
- Cluster_List(集群列表、簇列表)
Originator_ID、Cluster_List属性都属于可选非过渡类型。
Originator ID
RR将路由反射出去时,会加上Originator_ID属性,其值为通告该路由的路由器的Router ID。
如果AS内有多个RR,则Originator_ID由第一个RR创建,并且不会被后续的RR更改。
与AS_Path类似,当路由器收到的路由的Originator_ID的值与自己的Router ID相同时,则会忽略该条路由更新。

路由反射簇(Cluster)
路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇(如下图)。
每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )。
当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
当RR收到的路由的Cluster_list中包含自己的Cluster_ID时,则认为该路由存在环路,忽略该条路由更新。


RR应用举例

配置案例
基本配置介绍:
- 配置路由反射器及其客户端
缺省情况下,BGP未配置路由反射器及其客户。
[Huawei-bgp] peer {group-name | ipv4-address } reflect-client
# 例子
peer 1.1.1.1 reflect-client
- 配置路由反射器的集群ID
缺省情况下,每个路由反射器使用自己的Router ID作为集群ID。
[Huawei-bgp] reflector cluster-id cluster-id
# 例子
reflector cluster-id 2.2.2.2
PPT上的案例
注意:
-
R3的g0/0/1接口也要宣告进OSPF。因为从EBGP学到的路由传递给IBFP时会保持下一跳不变【10.0.34.4,当R3收到路由10.4.4.0/24后下一跳仍然为34.4,但是R3却没有前往34网段的路由,所以认为路由不可达,不会讲路由反射出去。
当路由反射器执行路由反射时,它只将自己使用的、最优的BGP路由进行反射
-
各R1、2、3的环回口也需要宣告进ospf,否则缺乏到达对等体的路由,路由器讲无法建立TCP连接,从而停留在idle状态。

R1的配置:
bgp 100
router-id 10.0.1.1
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loopback 0
R2的配置:
bgp 100
router-id 10.0.2.2
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loopback 0
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface loopback 0
peer 10.0.3.3 reflect-client
R3的配置:
bgp 100
router-id 10.0.3.3
peer 10.0.2.2 as-number 100
peer 10.0.2.2 connect-interface loopback 0
peer 10.0.34.4 as-number 20
R4的配置:
bgp 200
router-id 10.0.4.4
peer 10.0.34.3 as-number 100
network 10.4.4.0 24
配置完成后,分别在R3和R1上查看BGP路由10.4.4.0/24的信息
display bgp routing-table 10.4.4.0 24

思考题
-
(单选题)AS_Path属性属于哪种类型的BGP属性?( C)
-
A. 可选过渡
-
B. 可选非过渡
-
C. 公认必遵
-
D. 公认任意
-
-
(简答题)MED值的作用是什么?是否可以跨越AS传递该属性值?
在本AS存在多个入口时通过MED值可影响其他AS选择进入本AS的路径,MED作为可选非过渡属性,不可以跨越AS传递。
- (简单题)为防止环路产生,路由反射器使用了何种路径属性?
Originator_ID、Cluster_ID
BGP路由优选
BGP路由优选规则如下:

当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:
0.丢弃下一跳不可达的路由。
- 优选Preferred-Value属性值最大的路由。
- 优选Local_Preference属性值最大的路由。
- 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。
- 优选AS_Path属性值最短的路由。
- 优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
- 优选MED属性值最小的路由。
- 优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。
- 优选到Next_Hop的IGP度量值最小的路由。
- 优选Cluster_List最短的路由。
- 优选Router ID(Orginator_ID)最小的设备通告的路由。
- 优选具有最小IP地址的对等体通告的路由。
BGP路由表中显示的路径属性比较的先后顺序。

BGP路由聚合
第三条规则,简称本地优先。
从高到低优先级如下:
- 手动聚合:手动通过aggregate命令在BGP视图内聚合生成的聚合路由
- 自动聚合:Summary automatic命令生成的自动聚合路由
- Network方式注入的路由
- Import-route方式注入的路由
手动聚合:
ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
# 配置手动聚合,detail-suppressed用于抑制明细路由的发布
aggregate 10.0.45.0 255.255.255.0 detail-suppressed
import-route static
自动聚合:
BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP只向对等体通告聚合后的路由。(也就是只聚合成有类路由)
ip route-static 10.0.45.0 255.255.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
# 开启自动聚合
summary automatic
import-route static
BGP负载分担
形成BGP路由等价负载分担的条件:
- Preferred-Value属性值相同。
- Local_Preference属性值相同。
- 都是聚合路由或者非聚合路由。
- AS_Path属性长度相同。
- Origin类型(IGP、EGP、Incomplete)相同。
- MED属性值相同。
- 都是EBGP路由或都是IBGP路由。
- AS内部IGP的Metric相同。
- AS_Path属性完全相同。(注意,该条条件不是BGP优选规则之一)
配置ibgp负载均衡:
bgp 200
# 启用ibgp多路径负载均衡,并允许在ibgp路由中选择最多两条路由进行负载均衡。
maximum load-balancing ibgp 2
配置BGP路由负载分担后:

思考题
-
(简答题)从EBGP对等体收到的BGP路由通告给IBGP对等体时如何修改next_hop属性值为自身更新源地址?
答:使用
peer x.x.x.x next-hop-local命令指定next_hop属性为TCP连接源地址。 -
(判断题)当前三条优选规则相同的情况下,BGP会比较AS_Path长度,当AS_Path长度相同时会比较AS号的大小。
错。AS_Path只比较长度,长度相同时,就比较下一跳规则(5、Origin属性)。

浙公网安备 33010602011771号