工程师很容易对 BGP 路由通告产生误解,这是本章第一个需要解释清楚的概念。
4.1.1 本地路由通告问题
假设现在有一台路由器,它要把网络 10.1.0.0/16 和 10.0.0.0/8 放到 BGP 中,以便这些前缀
可以被通告给其他路由器。例 4-1 中展示了与此相关的基本配置。

例 4-1 基本的 10.1.0.0/16 网络通告和 10.0.0.0/8 聚合

R1# show run | s router bgp
router bgp 100
no bgp log-neighbor-changes
!
address-family ipv4
network 10.0.0.0
network 10.1.0.0 mask 255.255.0.0
exit-address-family

通过查看 BGP 表,工程师发现没有任何路由被放入 BGP 路由表中,详见例 4-2。

例 4-2 缺失 BGP 路由的配置

R1# show bgp ipv4 unicast
R1#

通过查看路由器的本地路由表,工程师发现路由器上有一条去往 10.1.1.0/24 网络的直连路
由,详见例 4-3。通过在路由器的全局路由表(也就是 RIB[路由信息库])中对这两个配置的网
络执行精确的路由查找,工程师发现这两个网络都不存在于这个表中。

例 4-3 在 RIB 中查找路由

R1# show ip route | b Gateway
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.1.1.0/24 is directly connected, Ethernet0/1
L 10.1.1.1/32 is directly connected, Ethernet0/1
192.168.1.0/32 is subnetted, 1 subnets
C 192.168.1.1 is directly connected, Loopback0
R1# show ip route 10.1.0.0 255.255.0.0
% Subnet not in table
R1# show ip route 10.0.0.0 255.0.0.0
% Subnet not in table

路由器的 RIB(路由表)中必须有明确的路由信息,这条路由才会被放入 BGP 表中,也就
才会被通告给 BGP 邻居。工程师有两种解决方案:更改 BGP 配置,使之与 RIB 中已有的路由
条目相匹配;或者为 BGP 配置中的网络创建静态路由。例 4-4 中展示了新的配置。

例 4-4 R1 上正确的路由通告和聚合配置

R1# show run | section route
router bgp 100
!
address-family ipv4
network 10.0.0.0
network 10.1.1.0 mask 255.255.255.0
exit-address-family
ip route 10.0.0.0 255.0.0.0 Null0

注释 在静态路由中使用 Null 0 接口是能够防止路由环路的安全机制。如果 R1 上有更精
确的路由(更长的匹配),它会按照更精确的路由来转发数据包。如果它没有更精确的路由,
数据包就会被丢弃。

在做出了适当的更改后,例 4-5 中展示出 10.0.0.0/8 和 10.1.1.0/24 网络已经被放入了 BGP
表中。

例 4-5 查看 R1 上的 BGP 路由

R1# show bgp ipv4 unicast
! Output omitted for brevity
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.0 0.0.0.0 0 32768 i
*> 10.1.1.0/24 0.0.0.0 0 32768 i

4.1.2 路由聚合问题
另一个常见的问题是与 BGP 路由聚合相关的问题。详见例 4-6,R1 上有多条 RIB 路由都
属于 10.1.0.0/16 这个网络范围,它希望在 BGP 中把这些路由聚合为单条 10.1.0.0/16 地址。注意
这时候工程师已经重新配置了 BGP 配置,只有 10.1.0.0/16 网络被定义为聚合前缀。

例 4-6 R1 的全局 RIB 表

R1# show ip route
! Output omitted for brevity
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.1.12.0/24 is directly connected, Ethernet0/0
C 10.1.13.0/24 is directly connected, Ethernet0/1
C 10.1.14.0/24 is directly connected, Ethernet0/2
R1# show run | s router bgp
router bgp 100
bgp log-neighbor-changes
!
address-family ipv4
aggregate-address 10.1.0.0 255.255.0.0
exit-address-family

例 4-7 中展示了 R1 上的 BGP 表。10.1.0.0/16 聚合路由并没有出现在 BGP 表中,这是因为
BGP 表中没有任何前缀属于这个汇总的聚合前缀范围中。

例 4-7 R1 上的 BGP 表
R1# show bgp ipv4 unicast
R1#

通过在 BGP 表中添加较小的网络前缀(10.1.12.0/24、10.1.14.0/24 和 10.1.14.0/24),就可
以创建 10.1.0.0/16 聚合路由。例 4-8 中展示了新的配置,并通过查看 BGP 表,确认路由器已经
正确生成了三个较小的前缀和聚合路由。需要注意的是,路由器并没有抑制三个较小的前缀
(10.1.12.0/24、10.1.14.0/24 和 10.1.14.0/24),它们会与聚合路由一起被通告出去。

例 4-8 R1 上的小前缀和聚合前缀配置

R1# show run | section router bgp
router bgp 100
bgp log-neighbor-changes
!
address-family ipv4
network 10.1.12.0 mask 255.255.255.0
network 10.1.13.0 mask 255.255.255.0
network 10.1.14.0 mask 255.255.255.0
aggregate-address 10.1.0.0 255.255.0.0
exit-address-family
R1# show bgp ipv4 unicast
BGP table version is 31, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.1.0.0/16 0.0.0.0 32768 i
*> 10.1.12.0/24 0.0.0.0 0 32768 i
*> 10.1.13.0/24 0.0.0.0 0 32768 i
*> 10.1.14.0/24 0.0.0.0 0 32768 i

如果不想通告较小的前缀,工程师可以通过路由器的出向 BGP 策略来进行过滤,或者通过
在 aggregate-address 命令中添加关键字 summary-only,从本地抑制小前缀的通告。
例 4-9 中展示了新的配置和新的 BGP 表。这时较小的前缀已经被抑制了,工程师可以从输
出内容中的 s 得出这个结论。

例 4-9 R1 上抑制小前缀的 BGP 配置

R1# show run | section router bgp
router bgp 100
bgp log-neighbor-changes
!
address-family ipv4
network 10.1.12.0 mask 255.255.255.0
network 10.1.13.0 mask 255.255.255.0
network 10.1.14.0 mask 255.255.255.0
aggregate-address 10.1.0.0 255.255.0.0 summary-only
exit-address-family
R1# show bgp ipv4 unicast
! Output omitted for brevity
BGP table version is 34, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.1.0.0/16 0.0.0.0 32768 i
s> 10.1.12.0/24 0.0.0.0 0 32768 i
s> 10.1.13.0/24 0.0.0.0 0 32768 i
s> 10.1.14.0/24 0.0.0.0 0 32768 i

4.1.3 路由重分布问题
把路由重分布到 BGP 中,是一种常见的生成 BGP 表的方式。图 4-1 简单描绘了 R1 与 R2、
R3 和 R4 的连接

R1 希望把路由表中包含的所有前缀都重分布到 BGP 中,其中包括从 EIGRP(增强型内部
网关路由协议)、OSPF(开放式最短路径优先)和 IS-IS(中间系统到中间系统)学到的前缀。
例 4-10 中展示了 R1 的 BGP 配置和 RIB。需要注意的是,R1 上有从三个路由协议学到的
192.168.0.0 范围内的路由,并且要把三个路由协议学到的路由都重分布到 BGP 中。

例 4-10 R1 上要进行路由重分布的路由表

R1# show ip route | exclude subnetted
! Output omitted for brevity
Gateway of last resort is not set
C 10.1.12.0/24 is directly connected, Ethernet0/0
C 10.1.13.0/24 is directly connected, Ethernet0/1
C 10.1.14.0/24 is directly connected, Ethernet0/2
D EX 192.168.2.2 [170/409600] via 10.1.12.2, 00:06:30, Ethernet0/0
O E2 192.168.3.3 [110/20] via 10.1.13.3, 00:02:12, Ethernet0/1
i L2 192.168.4.4 [115/10] via 10.1.14.4, 00:06:30, Ethernet0/2
R1# show run | section router bgp
router bgp 100
!
address-family ipv4
redistribute isis level-2
redistribute eigrp 1
redistribute ospf 1
exit-address-family

例 4-11 中展示了 R1 上重分布后的 BGP 表。从 OSPF 学到的前缀 192.168.3.3/32 和从 IS-IS
学到的网络 10.1.14.0/24 没有被重分布到 BGP 中。另外需要注意的是,对于非直连网络,BGP
下一跳 IP 地址会匹配重分布路由协议中的下一跳 IP 地址,如例 4-10 所示。

例 4-11 重分布后的 R1 BGP 表

R1# show bgp ipv4 unicast | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 10.1.12.0/24 0.0.0.0 0 32768 ?
*> 10.1.13.0/24 0.0.0.0 0 32768 ?
*> 192.168.2.2/32 10.1.12.2 409600 32768 ?
*> 192.168.4.4/32 10.1.14.4 10 32768 ?

出于以下原因,OSPF 和 IS-IS 路由没有被重分布到 BGP 中。
? OSPF:在把 OSPF 路由重分布到 BGP 时,默认行为中只包括内部 OSPF 路由(在路由
表中显示为 O 或 O IA)。要想重分布外部 OSPF 路由,工程师需要在重分布命令中明
确指定,和/或者使用重分布 route-map 进行匹配。
? IS-IS:IS-IS 中不包含目的路由协议的直连子网。要想解决这个问题,工程师需要把直
连网络重分布到 BGP 中。

注释 如果在条件匹配命令中没有配置关键字 internal,内部 OSPF 路由是不会被重分
布的

例 4-12 中提供了正确的配置,工程师在 OSPF 重分布命令中添加了条件匹配命令,同时重
分布直连网络解决了 IS-IS 的限制。
例 4-12 R1 上重分布所有网络到 BGP 中的正确配置

R1# show run | section router bgp
router bgp 100
!
address-family ipv4
redistribute connected
redistribute isis level-2
redistribute eigrp 1
redistribute ospf 1 match internal external 1 external 2
exit-address-familyR1#
R1# show bgp ipv4 unicast | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 10.1.12.0/24 0.0.0.0 0 32768 ?
*> 10.1.13.0/24 0.0.0.0 0 32768 ?
*> 10.1.14.0/24 0.0.0.0 0 32768 ?
*> 192.168.2.2/32 10.1.12.2 409600 32768 ?
*> 192.168.3.3/32 10.1.13.3 20 32768 ?
*> 192.168.4.4/32 10.1.14.4 10 32768 ?

注释 尽管与把路由重分布到 BGP 中没有直接的关系,但把路由从 BGP 重分布到 IGP 协
议有可能会产生问题。默认情况下,出于安全性的考量,BGP 不会把任何内部路由(从 IBGP
对等体学到的路由)重分布到 IGP 协议(比如 OSPF)中。工程师可以使用命令 bgp
redistribute-internal 把 IBGP 路由重分布到 IGP 路由协议中。

4.1.4 BGP 表
BGP 使用三张表来维护网络前缀和与每个前缀每条路径相关的路径属性,这三张 BGP 表
如下所示。
? Adj-RIB-in:包含 NLRI(网络前缀和前缀长度)和 BGP PA(路径属性),并且将其保
留为 BGP 对等体发来时的原始形式。当设备执行了所有路由策略来节省内存后,
Adj-RIB-in 表会被清除。
? Loc-RIB:包含所有本地初始的 NLRI,或者包含经过了入向路由策略处理过的来自
Adj-RIB-in 表的路由。需要注意的是,Loc-RIB 表中的 BGP PA 可能已经按照工程师为
指定邻居配置的路由入向路由策略,进行了修改。
当 NLRI 通过了有效性和下一跳可达性检查后,BGP 最优路径算法会为指定前缀选出
最优 NLRI。Loc-RIB 表是用来向 IP 路由表提供路由的表,也是通常被称为“BGP 表”
的那个 BGP 表。
? Adj-RIB-out:包含了由出向路由策略处理过的 NLRI。不同邻居应用的出向路由策略
可能不同,因此 Adj-RIB-out 表会追踪每个邻居以及每个邻居的 NLRI。出向路由策略
可以为指定邻居更改 PA。
BGP 命令 network 并不会为指定接口启用 BGP 协议;而是指明要将指定网络前缀放入
Loc-RIB 表中。在工程师配置了 BGP network 命令后,BGP 进程会在全局 RIB 中查找与配置中
精确匹配的网络前缀。网络前缀可以是直连网络、次直连网络,或者从其他路由协议学到的路
由。当确认全局 RIB 中有工程师在 network 命令中配置的前缀后,BGP 进程会把这个前缀放入
BGP Loc-RIB 表中。
并不是 Loc-RIB 表中的所有路由都会被通告给 BGP 对等体。在向 BGP 对等体通告 Loc-RIB
表中的路由时,设备会采取以下步骤。
步骤 1  检查下一跳的可达性。确认下一跳地址在全局 RIB 中是可达的。如果无法在全局
RIB 中解析下一跳地址,这个 NLRI 会保留,但不会进行步骤 2 之后的处理。这
个下一跳地址必须能够由 BGP 最优路径进程解析,才会进行步骤 3 的处理。
步骤 2  设置 BGP 路径属性。根据路由在本地 RIB 中的位置,来设置如下 BGP PA。
? 直连网络:下一跳 BGP 属性设置为 0.0.0.0;源属性设置为 i(IGP);BGP 权
重设置为 32768。
? 静态路由或路由协议:下一跳 BGP 属性设置为 RIB 中的下一跳 IP 地址;源
属性设置为 i(IGP);BGP 权重设置为 32768;MED(多出口鉴别符)设置为
IGP 度量值。
? 重分布:下一跳 BGP 属性设置为 RIB 中的下一跳 IP 地址;源属性设置为?(不
完整);BGP 权重设置为 32768;MED(多出口鉴别符)设置为 IGP 度量值。
步骤 3  确认 BGP 最优路径。在 BGP 中,路由通告由 NLRI 和 PA(路径属性)构成。一
个 BGP 路由可能包含去往同一个目的网络的多条路径。每条路径的属性会影响路
由器的最优路径选择。BGP 路由器只会把最优路径通告给邻居路由器。
在 BGP Loc-RIB 表中,所有路由及其路径属性都会被保留下来,以便进行最优路
径的计算。之后最优路径会被放入路由器的 RIB 表中。当最优路径变得不可用时,
路由器可以从现有的路径中快速计算出新的最优路径。BGP 会在以下 4 个事件发
生时,重新计算最优路径:
? BGP 下一跳可达性发生了变化;
? 连接 EBGP(外部边界网关协议)对等体的接口出现了故障;
? 重分布发生了变化;
? 接收到了去往一个目的地的新路径。
BGP 最优路径选择算法会影响流量进入或离开 AS 的方式。通过改变 BGP PA,工
程师可以影响流量进入、离开和穿越 AS 的方式。
步骤 4  处理出向邻居路由策略。使用指定的出向邻居路由策略来处理 NLRI。处理后,如
果出向策略没有拒绝这条路由的话,这条路由就会被放到 Adj-RIB-out 表中以备
后续使用。
步骤 5  把 NLRI 通告给 BGP 对等体。路由器把 NLRI 通告给 BGP 对等体。如果 NLRI
的下一跳 BGP PA 是 0.0.0.0,就把下一跳地址改为 BGP 会话的 IP 地址。
图 4-2 中展示了把本地化的 BGP 网络通告的前缀放入 BGP 表的过程。

4.1.5 接收并查看路由
完整的 BGP 路由通告过程中必须包含那些在本地通告的路由,以及从其他 BGP 邻居那里
接收到的路由。当从一个 BGP 对等体那里接收到前缀信息时,并不是 Loc-RIB 中的所有前缀都
会被通告给 BGP 对等体,或者放入全局 RIB 中。BGP 会执行以下路由处理步骤。
步骤 1  执行快速有效性检查。这个检查是为了确保这条路由不会造成路由环路。如果
路由器发现自己的 ASN(自治系统号码)在 AS-Path 中,或者自己的 RID(路
由器 ID)在 IBGP(内部边界网关协议)路径属性(起源/集群 ID)中,说明
这条路由会导致环路。如果没有发现上述情况,NLRI 就通过了有效性检查并
进入下一步。
步骤 2  把路由放入 Adj-RIB-in 表中并处理入向路由策略。NLRI 会以最原始的状态被放
入 Adj-RIB-in 表中。根据发送这条路由的邻居相关的入向路由策略来处理路由。
步骤 3  更新 Loc-RIB。在使用入向路由策略处理过 NLRI 后,更新 BGP Loc-RIB 数据库。
Adj-RIB-in 表被清除以便节省内存。
步骤 4  检查下一跳可达性。确认下一跳地址在全局 RIB 中是可以解析的。如果下一跳地
址无法在 RIB 中解析,NLRI 会保留下来,但不会进一步进行处理。
步骤 5  计算 BGP 最优路径。在 Loc-RIB 表中,去往相同网络前缀的 NLRI(路径)可能
有多条。BP 只会向自己的邻居通告最优路径。路由器必须找出 BGP 路由路径,
然后只把最优路径及其路径属性交给步骤 6。第 1 章中介绍了 BGP 最优路径选择
过程。
步骤 6  把 BGP 最优路径放入全局 RIB 表中并将其通告给对等体。使用从 BGP Loc-RIB
表中查询到的下一跳 IP 地址,把前缀放入全局 RIB 表中。
有时路由无法被放入全局 RIB 表中(比如静态路由的管理距离值小于 BGP),这
会导致 RIB 故障。RIB 故障并不会影响路由器把 NLRI 通告给其他 BGP 邻居。工
程师可以使用命令 show ip bgp rib-failure 来查看 RIB 故障的具体原因。
步骤 7  处理出向邻居路由策略。使用指定的出向邻居路由策略来处理 NLRI。处理后,如
果出向策略没有拒绝这条路由的话,这条路由就会被放到 Adj-RIB-out 表中以备
后续使用。
步骤 8  把 NLRI 通告给 BGP 对等体。路由器把 NLRI 通告给 BGP 对等体。如果 NLRI
的下一跳 BGP PA 是 0.0.0.0,就把下一跳地址改为 BGP 会话的 IP 地址。
图 4-3 中展示了完整的 BGP 路由处理逻辑,包含了从 BGP 对等体接收路由和计算 BGP 最
优路径的步骤。

BGP路由器协议排错教程:BGP 路由通告的排错相关推荐

  1. BGP路由器协议排错教程:BGP 基本配置

    在配置 BGP 时,最好从模块化的角度考虑配置信息.BGP 路由器上需要配置以下组成 部分. ? BGP 会话参数:BGP 会话参数中提供了用来与远端 BGP 邻居建立通信所需的设置. 会话设置中包含 ...

  2. BGP路由器协议排错教程:缺失 BGP 路由的排错

    完整版下载 2022年BGP路由协议排错全方面教程-网络安全文档类资源-CSDN下载 我们已经全面介绍过从 BGP 对等体接收路由,以及把路由通告给其他对等体的完整过程. 这些知识能够为对等体之间路由 ...

  3. BGP路由器协议排错教程:BGP 对等体翻动问题

    完整版下载 2022年最新BGP路由协议排错教程指南-网络安全文档类资源-CSDN下载 BGP 对等体失效问题讨论的是当 BGP 邻居关系总是在 Idle(空闲)状态和 Active(活跃) 状态之间 ...

  4. BGP路由器协议排错教程:AS总结

    1.15 允许 AS 允许 AS(Allow AS)特性允许路由器在一条路由的 AS-Path 中检测到自己 ASN 的情况下, 仍接收并处理这条路由.作为一种防环机制,路由器在 AS-Path 中看 ...

  5. BGP路由器协议排错教程:BGP 对等体失效的问题

    当一个已经配置好的 BGP 邻居并没有处于已建立状态的话,网络工程师就把这种情况称为 BGP 对等体失效.以下情况都有可能引发对等体失效的问题. ? 由于配置错误导致 BGP 会话停留在建立过程中. ...

  6. BGP路由器协议排错教程:IBGP

    当一个AS内需要使用多种路由策略,或者当一个AS要在多个AS之间提供传输联通性时, 就需要在一个 AS 内使用 BGP.如图 1-3 所示,AS65200 提供了 AS65100 和 AS65300 ...

  7. 水星mw310r虚拟服务器,水星MW310R(V1-V4)路由器桥接设置教程 | 192路由网

    本文主要介绍了水星MW310R(V1-V4)路由器WDS桥接设置方法,也可以说是无线中继设置.但是需要注意的是,是V1-V4版本的水星MW310R路由器的无线桥接设置方法哦! 温馨提示: 水星MW31 ...

  8. wr885n 虚拟服务器,TP-Link TL-WR885N V1-V3路由器桥接设置教程 | 192路由网

    问:TP-Link TL-WR885N路由器的桥接怎么设置?家里已经有一台无线路由器了,但是无线信号覆盖不是很好,因此又买了一台TP-Link TL-WR885N无线路由器:请问怎么设置TL-WR88 ...

  9. gm220s路由器怎么设置_二级路由器怎么设置_二级路由器设置图解教程-192路由网...

    二级路由器怎么设置?使用路由器上网时,经常会遇到这样的情况,一个路由器不能够满足使用需求:为了解决这个问题,可以在增加一个二级路由器,对网络进行扩展.本文将通过图解教程的方式,详细介绍二级路由器的设置 ...

最新文章

  1. 【原】Java学习笔记030 - 异常
  2. 智点财务软件记账凭证的录入
  3. 用于软件包管理的21个Linux YUM命令 转载
  4. 中国智慧城市前瞻及开发运营可行性分析报告2022-2027年版
  5. 案例分析:产品中非模态反馈”信息设计的意义与方式
  6. office online server收费吗_上海公司注册价格有乱收费吗?
  7. TP的依赖注入:将类类型的对象作为参数注入到当前类中
  8. linux不自动创建sda1,linux下头挂载新硬盘(转)
  9. matlab 误差椭圆,求3倍标准差误差椭圆分析的程序
  10. 曲线聚类_R语言确定聚类的最佳簇数:3种聚类优化方法
  11. jQuery.closest() 函数详解
  12. HAL库配置F407ZE DDS AD9854
  13. Shiny的架构浅析
  14. python中 math.isfinite返回值为false_带有Python示例的math.isfinite()方法
  15. volatile关键字
  16. 【Verilog】加法器减法器的设计
  17. 谈新手Java SE JDK 下载那个版本好!
  18. 论文阅读:How Does NLP Benefit Legal System:A Summary of LAI如何使用NLP技术帮助法律智能:关于法律智能的综述
  19. 损失函数——KL散度(Kullback-Leibler Divergence,KL Divergence)
  20. 上市公司财务报告的那点事(4):我的选股策略和实际投资组合

热门文章

  1. 检测按键正确的小游戏
  2. 关于如何用WORD实现图片转文字
  3. @03Python基础语法
  4. ijKPlayer - 视频直播
  5. C++ 实现斗地主玩法
  6. 微信原图暴露的只能是 Exif ,你的隐私不在这!!!
  7. 代码提交到GitHub时出现的反复报错
  8. NRF24L01实验(STM32F103ZE与STM32L475ZE通信)
  9. 用PS给证件照排版教程
  10. 抓取网易云音乐网页歌单(url)js