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 更新消息配置错误处理,请在 、 [edit protocols bgp group group-name][edit protocols bgp group group-name neighbor address]层次结构级别配置bgp-error-tolerance语句[edit protocols bgp]

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

注:

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

格式错误的更新消息将根据具体情况进行处理,具体取决于消息中包含的属性值。有三种方法可以处理格式错误的 BGP 更新消息,按严重性降序列出。

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

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

    • BGP 更新消息包含 MP 到达属性或 MP 不到达属性。

    • 由于属性长度与属性长度字段的值不匹配,因此无法正确解析 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- 由属性丢弃方法处理。如果任何属性的属性标志与属性类型代码冲突,Junos OS 会将属性标志重置为正确的值。将继续处理更新消息。

    Junos OS 不会更改属性标志中扩展长度位的值。此位定义属性长度是一个八位位组还是两个八位位组。此标志的值会影响 BGP 数据包的分析方式。对于路径属性,没有显式指定此值。

  • 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 更新消息的错误处理

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

要求

准备工作:

  • 配置路由器接口。

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

  • 配置 BGP。

  • 配置路由策略。

概述

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

拓扑学

在 中 图 1,设备 R1 与设备 R0 具有内部 BGP 对等会话,与设备 R2 具有外部 BGP 对等会话。

图 1: BGP 错误处理示例拓扑BGP 错误处理示例拓扑

为了防止格式错误的更新消息导致网络不稳定,设备 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所有设备的配置。

#d202e115__d202e306本节介绍设备 R1 上的步骤。

配置

CLI 快速配置

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

设备 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 命令来删除隐藏的路由。