Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 错误消息

了解 BGP 更新消息的错误处理

当任何一个消息属性格式错误时,BGP 消息被视为格式错误。当参与 BGP 会话的路由器收到格式错误的更新消息时,默认情况下会重置整个会话。这是不可取的,因为具有有效路由的更新消息也会受到影响。为避免这种不良行为,需要修改 BGP 更新消息的错误处理。

要配置 BGP 更新消息的错误处理,请在层次结构级别配置bgp-error-tolerance[edit protocols bgp]语句 、 [edit protocols bgp group group-name]或 。[edit protocols bgp group group-name neighbor address]

如果属性包含与“属性类型”字段的值冲突的属性标志,则属性标志将重置为正确的值并处理更新消息。属性标志中的 Extended Length 位值保持不变,因为此值定义属性长度是 1 个还是 2 个八位位组。因此,属性标志的值会影响 BGP 更新数据包的解析方式。

注意:

路径属性的属性标志值没有显式规范。

从 Junos OS 24.2R1 版开始,默认情况下会启用 BGP 错误处理。您仍然可以在此配置语句下配置子选项,如、 malformed-route-limitmalformed-update-log-intervalno-malformed-route-limit 。请注意,如果删除该 bgp-error-tolerance 语句,该功能仍将保持启用状态,并且子选项将重置为默认值。

格式错误的更新消息将根据消息中包含的属性值逐案处理。有三种处理格式错误的 BGP 更新消息的方法,按严重性降序列出。

  1. Notification message approach— 在本地记录格式错误的消息错误,向对等方的管理部门发送错误代码更新消息,并重置整个 BGP 会话。

    在以下情况下选择此方法:

    • BGP 更新消息包含 MP reach 属性或 MP unreach 属性。

    • 由于属性长度与属性长度字段的值不匹配,无法正确解析 NLRI 字段或 BGP 更新消息。

  2. Treat-as-withdraw approach— 格式错误的更新消息中的所有路由都被视为隐藏路由,除非配置了 keep none 该语句,在这种情况下,路由将被丢弃。如果没有该 keep none 语句,则会为隐藏的格式错误路由的数量配置一个限制,当超过该限制时,将丢弃路由,并防止隐藏任何进一步的格式错误的路由。当达到格式错误的路由限制时,Junos OS 会移除新收到的格式错误的路由。

  3. Attribute discard approach- 更新消息中格式错误的属性将被丢弃;但是,消息会被处理。如果要丢弃的属性会影响路由选择或安装,则不建议使用此方法。

    注意:

    如果某个属性在更新消息中出现多次,则除第一次之外,该属性的所有出现都将被丢弃,并处理该消息。

将扫描 BGP 更新消息以查找以下属性,并根据这些属性的值被视为格式错误:

  • The origin attribute—通过撤回后处理方法处理。

  • The AS path attribute—通过撤回后处理方法处理。

  • The AS 4 path attribute- 通过属性放弃方法处理。

  • The aggregator attribute- 通过属性放弃方法处理。

  • The aggregator 4 attribute- 通过属性放弃方法处理。

  • The next-hop attribute—通过撤回后处理方法处理。

  • The multiple exit discriminator attribute—通过撤回后处理方法处理。

  • The local preference attribute—通过撤回后处理方法处理。

  • The atomic aggregate attribute- 通过属性放弃方法处理。

  • The community attribute—通过撤回后处理方法处理。

  • The extended community attribute—通过撤回后处理方法处理。

  • The originator attribute—通过撤回后处理方法处理。

  • The cluster attribute—通过撤回后处理方法处理。

  • The PMSI attribute—通过撤回后处理方法处理。

  • The MP reach attribute- 通过通知消息方法处理。

  • The MP unreach attribute- 通过通知消息方法处理。

  • The attribute set attribute—通过撤回后处理方法处理。

  • The AIGP attribute—通过撤回后处理方法处理。

  • Unknown attribute— 如果 BGP 标志未指示这是可选属性,则此格式错误的属性将由通知消息方法处理。

注意:

当 BGP 更新消息包含多个格式错误的属性时,将遵循由其中一个属性触发的最严重方法。

以下是 BGP 错误消息输出的示例:

在此示例中,您可以看到源 (ORIGIN) 和本地优先级 (LOCAL_PREF) 格式错误的属性。

示例:配置 BGP 更新消息的错误处理

此示例说明如何配置 BGP 错误处理。

要求

开始之前:

  • 配置路由器接口。

  • 配置内部网关协议 (IGP)。

  • 配置 BGP。

  • 配置路由策略。

概述

当路由设备收到具有格式错误属性的更新消息时,需要路由器重置会话。这在 RFC 4271 边界网关协议 4 (BGP-4) 中指定。会话重置不仅会影响具有违规属性的路由,还会影响通过会话交换的其他有效路由。此外,在可选的传递属性的情况下,此行为可能会带来潜在的安全漏洞。为了最大程度地减少格式错误的更新消息对路由的影响,Internet 草案draft-ietf-idr-error-handling-01.txt BGP UPDATE 消息的修订错误处理 指定了处理具有格式错误属性BGP更新消息的修改。新的错误处理允许维护已建立的会话并保持有效路由的交换,同时删除格式错误的 UPDATE 消息中携带的路由。

拓扑结构

图 1 中,设备 R1 与设备 R0 有一个内部 BGP 对等会话,以及一个与设备 R2 的外部 BGP 对等会话。

图 1:BGP 错误处理示例拓扑 Network diagram with routers R0, R1, R2 connected sequentially. R0 to R1 via interface fe-1/2/0, IBGP; R1 to R2 via fe-1/2/1, EBGP. Loopback IPs: R0 192.168.0.3, R1 192.168.0.1, R2 192.168.0.2.

为了防止格式错误的更新消息导致网络不稳定,设备 R1 配置了 BGP 错误处理,如下所示:

默认情况下,当任何一个消息属性格式错误时,BGP 消息被视为格式错误。当参与 BGP 会话的路由器收到格式错误的更新消息时,整个会话将被重置。该 bgp-error-tolerance 语句覆盖此行为,以便以下 BGP 错误处理生效:

  • 对于致命错误,Junos OS 会发送一条名为“错误代码更新消息”的通知消息,并重置 BGP 会话。MP_{UN}REACH 属性中的错误被视为致命错误。如果一次BGP更新中存在多个 MP_{UN}REACH 属性,也会被视为致命错误。如果 Junos OS 无法正确解析 NLRI 字段或 BGP 更新,则会重置 BGP 会话。当属性长度与属性值的长度不匹配时,可能会发生解析 BGP 更新数据包失败的情况。

  • 对于某些非致命错误,Junos OS 会将格式错误的 BGP 更新消息中包含的所有路由视为撤回的路由并将其安装为隐藏路由,除非 keep none 该语句包含在 BGP 配置中。Junos OS 对涉及以下任何属性的情况使用此错误处理方法:ORIGIN、AS_PATH、NEXT_HOP、MULTI_EXIT_DISC、LOCAL_PREF、ORIGINATOR、CLUSTER、ATTRSET、PMSI、社区和扩展社区。此外,如果缺少任何必需的已知路径属性,Junos OS 会将 BGP 更新视为格式错误。为了限制这些格式错误的隐藏路由的内存使用量,在达到此类格式错误的隐藏路由的最大数量后,Junos OS 将停止安装新的格式错误的隐藏路由。在此示例中,使用语句将 malformed-route-limit 最大数字设置为 5。默认值为 1000。或者,您可以允许无限数量的路由因格式错误的属性而隐藏。通过包含 no-malformed-route-limit 语句来执行此操作。

  • 对于其他非致命错误,Junos OS 会丢弃格式错误的路径属性,并继续处理 BGP 更新消息。对可能影响路由选择或安装的路径属性使用此方法是不安全的。Junos OS对涉及以下任何属性的情况使用此错误处理方法:ATOMIC_AGGREGATE、聚合器、AGGREGATOR4和AS4PATH。

为了便于排除格式错误的数据包,Junos OS 会记录错误,其中列出格式错误的路径属性代码、标志、长度、有关对等方和家族的信息以及格式错误 BGP 更新的第一个前缀。如果在短时间内收到大量格式错误的数据包,记录格式错误的数据包可能会降低 Junos OS 的性能。为了限制性能影响,Junos OS 实施了一种算法来记录格式错误的更新,在一段时间内抑制日志记录,并记录摘要。当日志记录抑制计时器到期时,软件将记录在此时间间隔内接收到的格式错误的属性总数。在此示例中,计时器使用 语句 设置为 malformed-update-log-interval 10 秒。默认值为 300 秒(5 分钟)。

CLI 快速配置 显示了图 1 中所有设备的配置。

#d101e193__d101e403 节介绍了设备 R1 上的步骤。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。

设备 R0

设备 R1

设备 R2

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关导航CLI的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用CLI编辑器

要配置 BGP 错误处理,请执行以下操作:

  1. 配置路由器接口。

  2. 配置内部网关协议 (IGP),例如 OSPF 或 IS-IS。

  3. 配置自治系统 (AS) 编号和路由器 ID。

  4. 配置路由策略。

  5. 配置 EBGP 会话。

  6. 配置 IBGP 会话。

  7. 启用 BGP 容错。

  8. (选答)配置日志间隔。

  9. (选答)配置要存储的隐藏路由数量限制。

结果

在配置模式下,输入 show interfacesshow protocolsshow policy-optionsshow routing-options、 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请从配置模式进入。commit

验证

确认配置工作正常。

检查 BGP 邻接方会话

目的

验证是否启用了 BGP 容错,并显示与格式错误的路径属性相关的计数器。

行动
意义

“格式错误的属性”字段显示已启用容错。日志间隔和路由限制字段将显示配置的值。

属性计数器显示,在 EBGP 连接上,从设备 R2 收到了几个格式错误的属性。

检查隐藏路由

目的

查看有关隐藏路径的信息并了解它们隐藏的原因。

行动
意义

格式错误的隐藏路由在 AS 路径字段中用 MalformedAttr 标记。

您可以通过运行 clear bgp neighbor 10.10.10.2 malformed-route 命令来移除隐藏的路由。

验证隐藏路由的来源

目的

查看有关隐藏路径的信息并了解它们隐藏的原因。

行动
意义

Junos OS 在命令输出 show route receive-protocol bgp 10.10.10.2 detail hidden 的 AS 路径字段中显示 MalformedAttr。

您可以通过运行 clear bgp neighbor 10.10.10.2 malformed-route 命令来移除隐藏的路由。