故障排除
生活中的事情可能不会根据计划–进行,BGP 网络也不例外。当您开始使用安全路由表并在网络中部署 RPKI 时,客户可能会注意到,在少数情况下,他们想访问的某些网络或 IP 地址变得不可达。
本章讨论您可以执行哪些步骤,了解已报告的问题是否是路由安全实施的结果。不要期望全面 BGP 故障排除教程、只是一些提示和技巧,以及一些有关在何处找到可供使用的附加信息的指针。
故障排除 BGP 的一个好切入点是瞻博网络技术库:https://www.juniper.net/documentation/en_US/junos/topics/task/verification/bgp-configuration-process-summary.html.
检查路由表中是否存在目标
Junos OS 使用两个数据库(表)来提供路由信息:
路由表:包含所有路由协议 [筋] 了解的所有路由信息。
转发表:包含实际用于转发数据包的路由 [FIB]。
Junos OS 将路由表中的所有活动路由都安装到转发表中。活动路由是用于将数据包转发到目的地的路由。Junos 操作系统内核维护转发表的主副本。它会将转发表复制到数据包转发引擎,该组件负责转发数据包。
如果客户表示某个前缀可能无法到达,则需要将路由检查为该前缀。为了确保路由已安装且目标可从您的网络中访问,您应在路由和转发表中查看。
检查不同表的方法有三种:
show route <destination-prefix>
可以:这将显示路由表条目。show route forwarding-table destination <destination-prefix>
可以:这将在转发表中显示路由引擎的目标前缀版本。show pfe route ip prefix <destination-prefix>
可以:这将显示每个 PFE 中实际安装的转发表条目。
在完美的世界中,目标前缀将在所有三个场景中可见,并应显示 RPKI valida-tion-state:
valid
如果它具有有效的 ROA 并通过 RPKI 验证。
检查路由的 RPKI 验证状态
为了检查是否使用了路由,在配置 RPKI 路由验证时,必须能够显示有关路由验证数据库的信息。您可以查询与给定前缀匹配的所有路由验证记录,或者 origin-autonomous-system
. 此外,您可以通过特定 RPKI 缓存会话过滤输出:
user@R1> show route inet.0: 3 destinations, 3 routes (2 active, 0 holddown, 1 hidden) + = Active Route, - = Last Active, * = Both 2.2.0.2/32 *[BGP/170] 01:06:58, localpref 110, from 1.0.1.1 AS path: 200 I, validation-state: valid > to 10.0.0.2 via lt-1/2/0.1 172.16.1.1/32 *[BGP/170] 00:40:52, localpref 90, from 1.0.1.1 AS path: 200 I, validation-state: invalid Unusable 192.168.2.3/32 *[BGP/170] 01:06:58, localpref 100, from 1.0.1.1 AS path: 200 I, validation-state: unknown > to 10.0.0.2 via lt-1/2/0.1 224.0.0.5/32
验证状态可以是 RFC 6811 中定义的任何状态:
Valid
无效
清楚
此外,另一种状态是“指根本不运行验证”:
证
未验证的不同于未知的;如果尝试验证,则未验证的路由可能是有效、无效或未知的。未验证的基本上意味着原始验证(RPKI)根本’未启用或’未在您的路由器上运行。
有关其他命令,请访问 Juniper 技术库:https://www.juniper.net/documentation/en_US/junos/topics/reference/command-summary/show-validation-database.html
检查 RPKI 验证程序是否可访问以及数据库是否处于最新状态
显示验证统计信息
此命令显示有关验证数据库的统计信息。显然,如果您已启用 RPKI,并且与验证器的连接正常工作,则应看到数据库中的条目:
user@host> show validation statistics Total RV records: 453455 Total Replication RV records: 453455 Prefix entries: 35432 Origin-AS entries: 124400 Memory utilization: 16.31MB Policy origin-validation requests: 234995 BGP import policy reevaluation notifications: 460268 inet.0: 435345 inet6.0: 3454
显示验证数据库
此命令向您显示数据库的实际内容:
user@host> show validation database RV database for instance master Prefix Origin-AS Session State Mismatch 172.16.1.0/24-32 1 10.0.77.1 valid 172.16.2.0/24-32 2 10.0.77.1 valid 172.16.3.0/24-32 3 10.0.77.1 valid 172.16.4.0/24-32 4 10.0.77.1 valid 172.16.5.0/24-32 5 10.0.77.1 valid 172.16.6.0/24-32 6 10.0.77.1 valid 172.16.7.0/24-32 7 10.0.77.1 valid 172.16.8.0/24-32 8 10.0.77.1 valid 72.9.224.0/19-24 26234 192.168.1.100 valid * 72.9.224.0/19-24 3320 192.168.1.200 invalid * 10.0.0.0/8-32 0 internal valid IPv4 records: 14 IPv6 records: 0
显示验证会话
如果您的验证数据库为空或您想要检查验证器是否仍处于运行状态,则可以使用 show validation session brief
及 show validation session detail
指令
user@host> show validation session brief Session State Flaps Uptime #IPv4/IPv6 records 1.3.0.2 up 2 00:01:37 13/0 10.255.255.11 up 3 00:00:01 1/0 10.255.255.12 connect 2 64/68
请注意,此输出中的第三个会话显示 connect
而不是 up
. 这很有可能是在同一 RPKI 组下配置所有三个会话的结果。如果您这样做,如果您’不更改每个组的最大验证器数,则只有两个会话会启动,并且任何其他操作都将保持关闭。
显示验证会话详细信息
user@host> show validation session detail Session 10.0.77.1, State: up Group: test, Preference: 100 Local IPv4 address: 10.0.77.2, Port: 2222 Refresh time: 300s Session flaps: 14, Last Session flap: 5h13m18s ago Hold time: 900s Record Life time: 3600s Serial (Full Update): 0 Serial (Incremental Update): 0 Session flaps 2 Session uptime: 00:48:35 Last PDU received: 00:03:35 IPv4 prefix count: 71234 IPv6 prefix count: 345
根据指定的路由重新运行验证(可选)
如果配置了 BGP 原始验证,并且由于数据库遭到破坏或您想要刷新它,请手动请求路由 validation policy
重新评估。此命令会导致依赖路由验证记录重新评估。依赖路由验证记录完全匹配且具有更具体的记录:
user@host> request validation policy Enqueued 1 IPv4 records Enqueued 0 IPv6 records