「BGP」- 路由通告规则(四大原则)

  CREATED BY JENKINSBOT

问题描述

BGP 通过 network、import-route、aggregate 方式生成 BGP Route 后,通过 Update 报文将 BGP Peer 传递路由;

但是,当通告路由时,BGP 需要遵循通告原则,以防止出现环路等等问题;

解决方案

BGP 通告遵循以下原则:
1)有效、最优:只发布最优且有效路由;
2)EBGP 全部通告:从 EBGP Peer 获取的路由,会发布给所有其他 BGP Peer;
3)IBGP 水平分割:从 IBGP Peer 获取的路由,不会发送给 IBGP Peer;
4)BGP 同步规则指的是:当一台路由器从自己的 IBGP Peer 学习到一条 BGP Route 时(这类路由被称为 IBGP Route),它将不能使用该条路由或把这条路由通告给自己的 EBGP Peer,除非它又从 IGP 协议(例如 OSPF、ISIS 等等,也包含静态路由)学习到这条路由,也就是要求 IBGP 路由与 IGP 路由同步。该规则主要用于规避 BGP 路由黑洞问题。

第一原则:发布最优且有效的路由

第一原则:只发布最优有效(即下一跳地址可达)路由,并且才可能在本地路由表中使用;

通过 display bgp routing-table 命令,能够查看 BGP RIB 信息:

 Total Number of Routes: 2
      Network            NextHop       MED   LocPrf    PrefVal   Path/Ogn
 *>i  10.1.0.0/24        11.1.0.1      0     100        0              ?
 *i                      11.1.0.2      0     100        0              ?


在 BGP RIB 中,同时存在以下两个标志的路由为最优、有效:
* : 代表有效
> : 代表最优

Q:部分 NextHop 可达的路由也没有放入路由表(我们观察到现象是,建立 BGP 关系的直连路由,虽然本端通告,但是下一端未再继续通告该路由)。
A:为了防止 BGP 抖动,这是华为设备的行为(并非因为其不是最优路由)。

[AR2-bgp]display bgp routing-table 
...
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   10.1.1.1/32        10.1.12.1       0                     0      200i
      10.1.12.0/24       10.1.12.1       0                     0      200i

第二原则:EBGP ⇒ IBGP

第二条原则:从 EBGP Peer 获取的路由,会发布给所有对等体(EBGP、IBGP);

R2 从 EBGP Peer 获取的 BGP Route,会发布给所有 EBGP Peer、IBGP Peer;

第三原则:IBGP ⇒ IBGP(水平分隔)

第三原则:从 IBGP Peer 获取的 BGP Route 将不再向其他 IBGP Peer 通告,该原则也称为 BGP Split-Horizon Rule(IBGP 水平分割),用于 Intra-BGP 防环(补充 Inter-AS 通过 AS_Path 进行防环)。

如图所示,如果没有该规则,则 IBGP Peer 学习到的路由会继续传递给其他的 IBGP Peer:
1)R2 将某条路由传递给 IBGP Peer R3;
2)R3 收到路由后,传递给 IBGP Peer R1;
3)R1 继续传递给 IBGP Peer R2;
4)最后,在该网络中将形成路由环路;

第四原则:IBGP ⇒ EBGP(同步原则)

第四原则:
1)当 Router 从自己的 IBGP Peer 学习到 BGP 路由时(这类路由被称为 IBGP 路由),它将不能使用该条路由(因为 BGP 能够非直连来传递路由,此时可能下一跳不可达)不能把这条路由通告给自己的 EBGP Peer
2)除非它又从 IGP 协议(例如 OSPF 等,此处也包含静态路由)学习到这条路由;

该条规则也被称为 BGP 同步原则,用于防止黑洞 —— 没有路由而导致数据丢失。

如图所示:
1)BGP 路由器 R4 上存在一条路由 10.0.4.0/24,R4 将其传递给 R2;
2)R2 将路由传递给非直连 IBGP 对等体 R3;
3)R3 将路由传递给 R5;
4)之后 R5 向 R4 10.0.4.4 发起访问 ⇒ 如果没有该原则,即 R3 会将路由下发给 R5,此时到达 R1 将丢包,因为 R1 未包含相关路由条目(数据黑洞问题)。 该规则的存在便是为了避免该问题。

解决方案:
1)通过同步(synchronization,类似路由引入)功能:此功能将 BGP 路由引入 IGP 协议中,IGP 将同步所有路由,此时 BGP 生效(下一跳可达)。但是 BGP 路由条目数量庞大,导致 IGP 设备(计算)压力大,所以很多设备厂商已禁用该特性;
2)通过 Full Mesh 技术,两两建立 IBGP 关系;但是设备 TCP 连接数会增多,同时该模式不利于 BGP 大规模部署;
3)通过 Route Reflector 或 MPLS 技术来解决;

参考文献

IBGP Advanced Configuration Synchronization Rule – CCIE