一、BGP的路由黑洞

BGP同步规则水平分割 bgp不同步引起的问题_网络


由于BGP协议可以非直连建邻, 故可能出现BGP协议跨越未运行BGP协 议的路由器, 导致BGP路由传递后, 显示控制层面可达, 但是, 数据层 面, 流量经过未运行BGP协议的路由器时, 无法通过, 形成路由黑洞。

解决方案:

1、让AS内所有设备都运行BGP协议
2、可以在AS内部运行BGP的设备上像AS内部使用的IGP协议中进行重 发布
3、使用MPLS技术解决路由黑洞问题 — 是当前工程中主要使用的解 决BGP路由黑洞方案。

BGP为了防止BGP路由黑洞的产生, 提出了BGP同步机制 — 即当一台 路由器从自己IBGP对等体学习到一条BGP路由时, 他不能将这条路由 通告给自己的EBGP对等体, 除非他又从IGP协议中(包含静态路由)
学习到这条路由。也就是要求IBGP路由和IGP路由同步。 华为设备默认关闭BGP的同步规则。

2、BGP的防环机制

BGP使用的防环机制 ---- 水平分割
在BGP中的水平分割分为两种:
1、EBGP水平分割 — 专门解决EBGP对等体之间可能出现的环路 问题。
2、IBGP水平分割 — 专门解决IBGP对等体之间可能出现的环路 问题。

EBGP水平分割:

bgp协议在路由条目中记录所经过的AS编号 — AS_PATH属性

(记载所有经过AS编号的属性, 该属性除了可以用来进行EBGP对等体 之间的防环外, 还可以在特定情况下进行路由选路) 。

接收到的BGP 路由条目中的AS_PATH中若包含本地的AS号, 则将拒绝接受, 避免环路产出。

IBGP水平分割

BGP同步规则水平分割 bgp不同步引起的问题_java_02


因为BGP的AS-BY-AS的特性, 导致AS内部被认为是一个整体, 在默认 情况下, 路由的属性是不会发生变化的, 所以, 无法通过属性来进行防 环。所以, IBGP水平分割的做法 — 当一个路由器从一个IBGP对等体出 学习到某一条BGP路由时, 他将不再把这条路由信息通告给其他的IBGP对 等体。

BGP同步规则水平分割 bgp不同步引起的问题_网络_03


IBGP水平分割可以有效的解决IBGP对等体之间路由回传造成的环路问 题, 但是, 也会引发路由信息传递障碍问题。想要避免IBGP水平分割带来 的问题, 可以让所有AS内部运行BGP的路由器均建立IBGP对等体关系。---- 这种建立全连的IBGP对等体的方案并不是最佳解决方案 — 因 为, 当一个AS内运行BGP协议的路由器数量较多时, 建立全连的邻居关 系, 将造成大量的资源浪费, 并且降低网络的可扩展性。

三、BGP的基本配置

BGP邻居建立过程
1)EBGP对等体直连建邻 1,启动BGP进程
[r1]bgp 1 — 1 指的是该路由器所在的AS号, 并不是进程。因 为一个路由器只能属于一个AS中, 所以, 一个路由器只能启动一 个BGP进程
[r1-bgp]

2,配置RID
[r1-bgp]router-id 1.1.1.1

3,指定建立邻居关系
[r1-bgp]peer 12.0.0.2 as-number 2 — 指定建邻的IP地址和 邻居所在的AS的编号(邻居关系指定是双向的)

[r1-bgp]display bgp peer — 可以查看BGP的邻居表

由于, IBGP邻居处于同一个AS中, 正常一个AS中存在大量的备份 路径, 若使用物理接口建立邻居关系, 将浪费这些备份或者负载均衡 的路径; 故建议使用环回接口来进行IBGP对等体关系的建立。
2) IBGP对等体环回建邻
[r2-bgp]peer 3.3.3.3 as-number 2

[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 — 指 定给邻居发送数据包的连接接口是环回接口

切记: 一旦使用环回地址作为建邻地址, 同时需要修改源IP地址 未本地环回地址。
3)EBGP对等体环回建邻
因为EBGP对等体之间一般采用直连建邻的方法, 所以, 我们将EBGP对 等体之间的数据包中的TTL值设置为1,同时, 加入了直连检测(检测源目 IP是否在同一个网段) ;
因为华为设备并没有直接关闭直连检测的方法, 但是可以通过修改 TTL值来让EBGP邻居间可以正常非直连建邻, 直连检测将会自动失效。

4,BGP路由聚合

BGP的路由聚合 — 自动聚合 — 仅针对重发布的路由 — 手工聚合

自动聚合

在R1上建立两条172.16.1.0/24和172.16.2.1/24直连路由, 之后通过 重发布发布到BGP中
1,抓取流量
[r1]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24 less-equal 24
2,路由策略
[r1]route-policy aa permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix aa
3,重发布中调用
[r1-bgp]import-route direct route-policy aa

自动聚合的问题 — 1,只能聚合到主类, 导致产生巨大的路由黑洞 2,只能对重发布的路由生效
[r1-bgp]summary automatic ---- 华为设备默认关闭自动聚合功 能, 开销自动聚合
Info: Automatic summarization is valid only for the routes imported through the
import-route command.

S — 状态码 — SUPPRESSED — 抑制 ---- 一旦路由前面的状 态码中添加S标记, 则代表该路由被抑制, 将不再加标和传递。
自动聚合完成后会自动生成一条指向汇总的空接口路由进行防环。

因为我们自动汇总的问题, 所以, 当我们需要对路由汇总进行精准把 控时, 手工聚合将是更理想的解决方案。

手工聚合

[r1-bgp]aggregate 172.16.0.0 22 — 手动聚合的命令

手工聚合的问题 — 1,手工聚合时没有抑制明细路由, 导致传递的 路由条目没有减少, 反而增加
2,手工聚合的路由条目存在路由属性缺失的问 题, 尤其是不懈怠明细路由中的AS_PATH属性, 因为该属性是用来防 环的, 不携带可能会导致环路的产生。

[r4-bgp]aggregate 172.16.0.0 22 detail-suppressed ---- 在聚 合路由的同时已知所有明细路由
但是, 因为BGP协议的特殊性, 导致在一些环境下, 往往不能将所有 明细路由全部抑制。
所以, 我们在做BGP的聚合时, 往往仅抑制一部分路由信息, 而实现 这个效果, 需要用到 — suppress - Policy — 抑制策略、
1,先抓取流量
[r4]ip ip-prefix aa permit 2,使用路由策略匹配流量 [r4]route-policy aa permit Info: New Sequence of this
[r4-route-policy]if-match ip-prefix aa
3,使用抑制策略进行调用
[r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa

[r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa as- set — 通过激活AS_SET关键字, 使汇总路由携带明细路由的 AS_PATH属性。

*> 172.16.0.0/22 127.0.0.1 0 {1 4}? — 当
明细路由来自不同AS时的解决方案, 在进行防环时, 大括号中的AS号 都需要考虑, 但在进行选路时, 大括号将被看作是一个整体, 当作一 个AS号。

正因为聚合后的路由存在属性丢失的情况, 所以, 这样的汇总路由需 要格外关注。为此, BGP专门设计了两个聚合相关的属性 — ATOMIC_AGGREGATE,AGGRGATOR
ATOMIC_AGGREGATE ---- 纯粹的预警属性, 聚合路由将会携带(只有 将所有明细路由全部抑制的汇总路由才会携带) ,意图是提醒该路由 为聚合路由, 可能存在属性丢失问题。
AGGRGATOR ---- 将会记录执行汇总路由器所在的AS号及RID。

[r4]display bgp routing-table 172.16.0.0 — 可以查看一条路 由的详情信息