Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

多协议 BGP

了解多协议 BGP

多协议 BGP (MP-BGP) 是 BGP 的扩展,使 BGP 能够传输多个网络层和地址族的路由信息。MP-BGP 可以将用于组播路由的 单播 路由与用于单播 IP 转发的路由分开承载。

要启用 MP-BGP,请将 BGP 配置为携带单播 IPv4 以外的地址族的网络层可达性信息 (NLRI),方法是包含以下 family inet 语句:

要使 MP-BGP 能够为 IPv6 地址族携带 NLRI,请添加以下 family inet6 语句:

要仅在路由器上启用 MP-BGP 为 IPv4 地址族传输第 3 层虚拟专用网络 (VPN) NLRI,请添加以下 family inet-vpn 语句:

要仅在路由器上启用 MP-BGP 为 IPv6 地址族传输第 3 层 VPN NLRI,请添加以下 family inet6-vpn 语句:

要仅在路由器上启用 MP-BGP 以便为 IPv4 地址族传输组播 VPN NLRI 并启用 VPN 信令,请包含以下 family inet-mvpn 语句:

要使 MP-BGP 能够为 IPv6 地址族携带组播 VPN NLRI 并启用 VPN 信令,请包含以下 family inet6-mvpn 语句:

有关基于多协议 BGP 的组播 VPN 的更多信息,请参阅 Junos OS 组播协议用户指南

有关可包含这些语句的层次结构级别列表,请参阅这些语句的语句摘要部分。

注意:

如果更改层级中 [edit protocols bgp family] 指定的地址族,则路由设备上的所有当前 BGP 会话都将被丢弃,然后重新建立。

在 Junos OS 9.6 及更高版本中,您可以为特定的 BGP 地址族指定环路值。

默认情况下,BGP 对等方仅承载用于单播转发目的的单播路由。要将 BGP 对等方配置为仅承载组播路由,请指定该 multicast 选项。要将 BGP 对等方配置为同时承载单播和组播路由,请指定该 any 选项。

配置 MP-BGP 后,BGP 会将 MP-BGP 路由安装到不同的路由表中。每个路由表都由协议族或地址族指示器 (AFI) 和后续地址族标识符 (SAFI) 标识。

以下列表显示了所有可能的 AFI 和 SAFI 组合:

  • AFI=1,SAFI=1,IPv4 单播

  • AFI=1,SAFI=2,IPv4 组播

  • AFI=1,SAFI=128,L3VPN,IPv4 单播

  • AFI=1,SAFI=129,L3VPN IPv4 组播

  • AFI=2,SAFI=1,IPv6 单播

  • AFI=2,SAFI=2,IPv6 组播

  • AFI=25,SAFI=65,BGP-VPLS/BGP-L2VPN

  • AFI=2,SAFI=128,L3VPN,IPv6 单播

  • AFI=2,SAFI=129,L3VPN IPv6 组播

  • AFI=1,SAFI=132,RT 约束

  • AFI=1,SAFI=133,流量规格

  • AFI=1,SAFI=134,流量规格

  • AFI=3,SAFI=128,CLNS VPN

  • AFI=1,SAFI=5,NG-MVPN IPv4

  • AFI=2,SAFI=5,NG-MVPN IPv6

  • AFI=1,SAFI=66,MDT-SAFI

  • AFI=1,SAFI=4,标记为 IPv4

  • AFI=2,SAFI=4,标记为 IPv6 (6PE)

inet.2 路由表中安装的路由只能导出到 MP-BGP 对等方,因为它们使用 SAFI,将其标识为到组播源的路由。inet.0 路由表中安装的路由只能导出到标准 BGP 对等方。

inet.2 路由表应是 inet.0 中路由的子集,因为您不太可能有到无法将单播流量发送到的组播源的路由。inet.2 路由表存储用于组播反向路径转发检查的单播路由,以及 MP-BGP 从 NLRI 组播更新中获知的其他可访问性信息。配置 MP-BGP 时,会自动创建 inet.2 路由表(通过将 NLRI 设置为 any)。

启用 MP-BGP 后,您可以执行以下作:

限制在 BGP 对等会话上接收的前缀数量

您可以限制在 BGP 对等体会话上接收的前缀数,并在注入的前缀数超过设置的限制时记录速率限制消息。当前缀数量超过限制时,您还可以拆除对等互连。

要配置 BGP 会话上可接收的前缀数量限制,请包含以下 prefix-limit 语句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

对于 maximum number,指定 1 到 4,294,967,295 范围内的值。当超过指定的最大前缀数时,将发送系统日志消息。

如果包含该 teardown 语句,则当超过最大前缀数时,会话将被拆除。如果指定百分比,则当前缀数量超过指定最大限制的百分比时,将记录消息。拆除会话后,会在短时间内重新建立(除非包含该 idle-timeout 语句)。如果包含该 idle-timeout 语句,则会话可以在指定的时间内或永久保持关闭状态。如果指定 forever,则仅在发出 clear bgp neighbor 命令后重新建立会话。如果包含该 drop-excess <percentage> 选项,则当达到最大前缀数时,多余的路由将被丢弃。如果指定百分比,则当前缀数量超过最大数量的百分比值时,将记录路由。如果包含该 hide-excess <percentage> 选项,则当达到最大前缀数时,多余的路由将被隐藏。如果指定百分比,则当前缀数量超过最大数量的百分比值时,将记录路由。如果修改了百分比,则会自动重新评估路由。如果活动路由低于指定百分比,则这些路由将保持为隐藏。

注意:

在 Junos OS 9.2 及更高版本中,您也可以配置 BGP 对等体会话上可接受的前缀数量限制。有关更多信息,请参阅 限制 BGP 对等会话上接受的前缀数

限制 BGP 对等会话上接受的前缀数

在 Junos OS 9.2 及更高版本中,您可以限制可在 BGP 对等体会话上接受的前缀数量。超过指定限制时,将发送系统日志消息。您还可以指定在超过指定前缀数量限制时重置 BGP 会话。

要配置 BGP 对等体会话上可接受的前缀数量限制,请包含以下语 accepted-prefix-limit 句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

对于 maximum number,请指定 1 到 4,294,967,295 范围内的值。

包括以下 teardown 语句以在接受的前缀数量超过配置的限制时重置 BGP 对等体会话。您还可以添加一个从 1 到 100 的百分比值,以便在接受的前缀数量超过最大限制的百分比时发送系统日志消息。默认情况下,重置的 BGP 会话会在短时间内重新建立。包括该 idle-timeout 语句以防止在指定的时间段内重新建立 BGP 会话。可以配置 1 到 2400 分钟的超时值。包括 永久选项 以防止重新建立 BGP 会话,直至您发出 clear bgp neighbor 命令。如果包含该 drop-excess <percentage> 语句并指定百分比,则当前缀数量超过百分比时,多余的路由将被丢弃。如果包含该 hide-excess <percentage> 语句并指定百分比,则当前缀数量超过百分比时,多余的路由将被隐藏。如果修改了百分比,则会自动重新评估路由。

注意:

启用不间断活动路由 (NSR) 并切换到备份路由引擎时,关闭的 BGP 对等方将自动重新启动。即使配置了语句,对 idle-timeout forever 等方也会重新启动。

注意:

或者,您可以配置对在 BGP 对等体会话上 可接收 (而不是接受)的前缀数量进行限制。有关更多信息,请参阅限制在 BGP 对等会话上接收的前缀数

配置 BGP 路由表组

当 BGP 会话收到单播或组播 NLRI 时,它会在相应的表中安装路由(单播为 inet.0inet6.0 ,组播为 inet.2inet6.2 )。要将单播前缀添加到单播表和组播表,可以配置 BGP 路由表组。如果无法执行组播 NLRI 协商,这将很有用。

要配置 BGP 路由表组,请包含以下 rib-group 语句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

将路由解析为位于其他 AS 中的 PE 路由设备

您可以允许将标记的路由放置在 inet.3 路由表中以进行路由解析。然后,在远程 PE 位于其他自治系统 (AS) 的提供商边缘 (PE) 路由设备连接中解析这些路由。若要使 PE 路由设备在 VPN 路由和转发 (VRF) 路由实例中安装路由,下一跃点必须解析为存储在 inet.3 表中的路由。

要将路由解析到 inet.3 路由表中,请包含以下 resolve-vpn 语句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

允许带标签和不带标签的路由

您可以允许在单个会话中交换带标记和不带标记的路由。标记的路由放置在 inet.3 或 inet6.3 路由表中,路由设备可以发送或接收标记的单播路由。

要允许同时交换带标签和不带标签的路由,请包含以下语 rib 句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

示例:通过 IPv4 传输配置 IPv6 BGP 路由

此示例演示如何通过 IPv4 连接(双方均配置了 IPv4 接口)导出 IPv6 和 IPv4 前缀。

要求

配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

导出 IPv6 BGP 前缀时,请记住以下几点:

  • BGP 使用 IPv4 映射的 IPv6 前缀派生下一跃点前缀。例如,IPv4 下一跃点前缀 10.19.1.1 转换为 IPv6 下一跃点前缀 ::ffff:10.19.1.1。

    注意:

    必须有一个到 IPv4 映射的 IPv6 下一跃点的活动路由,才能导出 IPv6 BGP 前缀。

  • 必须通过链路配置 IPv6 连接。连接必须是 IPv6 隧道或双堆栈配置。本例使用了双堆叠。

  • 配置 IPv4 映射 IPv6 前缀时,请使用长于 96 位的掩码。

  • 如果要使用普通 IPv6 前缀,请配置静态路由。此示例使用静态路由。

图 1 显示了示例拓扑。

图 1:用于通过 IPv4 传输 Topology for Configuring IPv6 BGP Routes over IPv4 Transport配置 IPv6 BGP 路由的拓扑

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

配置设备 R1

分步程序

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

要配置设备 R1:

  1. 配置接口,包括 IPv4 地址和 IPv6 地址。

  2. 配置 EBGP。

  3. 启用 BGP 以承载 IPv4 单播和 IPv6 单播路由。

    IPv4 单播路由默认处于启用状态。但是,配置其他 NLRI 地址族时,必须显式配置 IPv4 单播。

  4. 配置路由策略。

  5. 配置一些静态路由。

  6. 配置自治系统 (AS) 编号。

结果

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

如果完成设备配置,请从配置模式输入 commit 。在设备 R2 和设备 R3 上重复配置,根据需要更改接口名称和 IP 地址。

验证

确认配置工作正常。

检查邻居状态

目的

确保启用 BGP 以承载 IPv6 单播路由。

行动

在作模式下,输入命令 show bgp neighbor

意义

输出中出现的各种 inet6-单播 表明,BGP 已启用以承载 IPv6 单播路由。

检查路由表

目的

确保设备 R2 的 inet6.0 路由表中有 BGP 路由。

行动

在作模式下,输入命令 show route protocol bgp inet6.0

通过 BGP 播发 IPv4 路由 IPv6 会话概述

在 IPv6 网络中,BGP 通常通过 BGP 对等方之间的 IPv6 会话通告 BGP 网络层可达性信息。在早期版本中,Junos OS 仅支持交换 inet6 单播、inet6 组播或 inet6 标签单播地址族。此功能允许交换所有 BGP 地址族。在以 IPv6 为核心的双堆栈环境中。此功能使BGP能够通过 IPv6 BGP会话通过 IPv4 下一跃点通告 IPv4 单播可达性。

此功能仅适用于 BGP IPv6 会话,其中两个端点均配置了 IPv4。 local-ipv4-address 可以是环路地址,也可以是 IBGP 或多跳 EBGP 会话的任何 IPv4 地址。对于不属于 BGP 联合的单跃点外部 BGP 发送方,如果配置的本地 IPv4 地址未直接连接,则 BGP 会话将关闭并保持空闲状态,并生成错误,该错误显示在命令输出 show bgp neighbor 中。

要通过 IPv6 会话启用 IPv4 路由播发,请按以下步骤进行配置 local-ipv4-address

注意:

您无法为 inet6 单播、inet6 组播或 inet6 标签单播地址族配置此功能,因为 BGP 已具备通过 IPv6 BGP 会话播发这些地址族的能力。

仅当 BGP 播发具有自下一跃点的路由时,才会使用 configure local-ipv4-address 。当 IBGP 播发从 EBGP 对等方获知的路由或路由反射器向其客户端播发 BGP 路由时,BGP 不会更改路由下一跃点,忽略配置 local-ipv4-address的 ,并使用原始 IPv4 下一跃点。

示例:通过 IPv6 BGP 会话播发 IPv4 路由

此示例说明如何通过 IPv6 BGP 会话播发 IPv4 路由。在以 IPv6 为核心的双堆栈环境中,需要访问远程 IPv4 主机。因此,BGP 会使用 IPv6 源地址和目标地址,通过 BGP 会话将带有 IPv4 下一跃点的 BGP 路由播发至 BGP 对等方。此功能使BGP可以通过 IPv6 下一跃点BGP会话来通告 IPv4 单播可达性。

要求

此示例使用以下硬件和软件组件:

  • 三台路由器具有双堆栈功能

  • 在所有设备上运行 Junos OS 16.1 或更高版本

通过 IPv6 BGP 会话启用 IPv4 播发之前,请务必:

  1. 配置设备接口。

  2. 在所有设备上配置双堆栈。

概述

从 16.1 版开始,Junos OS允许BGP通过 IPv6 BGP会话通过 IPv4 下一跃点通告 IPv4 单播可达性。在早期的 Junos OS 版本中,BGP 只能通过 IPv6 BGP 会话播发 inet6 单播、inet6 组播和 inet6 标记的单播地址族。此功能允许 BGP 通过 IPv6 会话交换所有 BGP 地址族。您可以启用 BGP,以便通过 IPv6 会话将带有 IPv4 下一跃点的 IPv4 路由播发至 BGP 对等方。仅当 BGP 播发具有自下一跃点的路由时,才会使用 configure local-ipv4-address

注意:

您无法为 inet6 单播、inet6 组播或 inet6 标签单播地址族配置此功能,因为 BGP 已具备通过 IPv6 BGP 会话播发这些地址族的能力。

拓扑学

图 2 中,路由器 R1 和 R2 之间正在运行 IPv6 外部 BGP 会话。路由器 R2 和路由器 R3 之间将建立 IPv6 IBGP 会话。IPv4 静态路由将重新分配给 R1 上的 BGP。要通过 IPv6 BGP 会话重新分配 IPv4 路由,必须在层次结构级别的所有路由器 [edit protocols bgp address family] 上启用新功能。

图 2:通过 IPv6 BGP 会话 Network topology diagram with three routers labeled R1 R2 and R3 connected linearly. R1 is in AS 64497 connected to R2 via interface ge-0/0/0 with IPv6 140.1.1.1/126. R2 and R3 in AS 64496. R2 connects to R3 via ge-0/0/1 with IPv6 150.1.1.1/126. Loopback addresses: R1 1::1/128 R2 1::2/128 R3 1::3/128.播发 IPv4 路由

配置

CLI 快速配置

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

路由器 R1

路由器 R2

路由器 R3

配置路由器 R1

分步程序

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

要配置路由器 R1,请执行以下作:

注意:

修改相应的接口名称、地址和其他参数后,对其他路由器重复此过程。

  1. 使用 IPv4 和 IPv6 地址配置接口。

  2. 配置环路地址。

  3. 配置需要播发的 IPv4 静态路由。

  4. 为 BGP 主机配置自治系统。

  5. 在外部边缘路由器上配置 EBGP。

  6. 启用该功能以通过 BGP IPv6 会话播发 IPv4 adddress 140.1.1.1。

  7. 定义策略 p1 以接受所有静态路由。

  8. 对 EBGP 组 ebgp-v6 应用策略 p1。

结果

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

如果完成设备配置,请提交配置。

验证

确认配置工作正常。

验证 BGP 会话是否已开启

目的

验证 BGP 是否在配置的接口上运行,以及每个邻接方地址的 BGP 会话是否处于活动状态。

行动

在作模式下,对路由器 R1 运行 show bgp summary 命令。

意义

BGP 会话已启动并正在运行,并且已建立 BGP 对等互连。

验证是否正在播发 IPv4 地址

目的

验证路由器 R1 是否正在将配置的 IPv4 地址播发至配置的 BGP 邻接方。

行动

在作模式下,对路由器 R1 运行 show route advertising-protocol bgp ::150.1.1.2 命令。

意义

IPv4 静态路由正在播发至 BGP 邻接方路由器 R2。

验证 BGP 邻接路由器 R2 是否接收播发的 IPv4 地址

目的

验证路由器 R2 是否收到了路由器 R1 通过 IPv6 向 BGP 邻接方播发的 IPv4 地址。

行动
意义

如果路由器 R2 的路由表中存在静态 IPv4 路由,则表示该路由正在从路由器 R1 接收播发的 IPv4 路由。

了解将带有 IPv6 下一跃点的 IPv4 路由重新分配给 BGP

在主要传输 IPv6 流量的网络中,需要按需路由 IPv4 路由。例如,某互联网服务提供商拥有仅支持 IPv6 的网络,但其客户仍路由 IPv4 流量。在这种情况下,有必要满足此类客户的需求,并通过 IPv6 网络转发 IPv4 流量。如 RFC 5549 中所述, 使用 IPv6 下一跳宣传 IPv4 网络层可达性信息 IPv4 流量从客户端设备 (CPE) 设备以隧道传输到 IPv4-over-IPv6 网关。这些网关通过任播地址通告给 CPE 设备。然后,网关设备会创建通向远程 CPE 设备的动态 IPv4-over-IPv6 隧道,并通告 IPv4 聚合路由以引导流量。

注意:

动态 IPv4-over-IPv6 隧道功能不支持 Junos OS 17.3R1 版中的统一 ISSU。

带有可编程接口的路由反射器 (RR) 通过 IBGP 连接到网关路由器,并将 IPv6 地址作为下一跃点的主机路由。这些 RR 播发 IPv4 /32 地址,以便将隧道信息注入网络。网关路由器可创建通向远程客户提供商边缘的动态 IPv4-over-IPv6 隧道。网关路由器还会播发 IPv4 聚合路由来引导流量。然后,RR 将隧道源路由播发给 ISP。当 RR 移除隧道路由时,BGP 也会撤回路由,从而导致隧道被拆除,CPE 无法访问。当所有聚合路由参与者路由都被移除时,网关路由器还会撤回 IPv4 聚合路由和 IPv6 隧道源路由。当锚点数据包转发引擎线卡出现故障时,网关路由器会发送路由撤回,以便将流量重定向到其他网关路由器。

为了支持具有 IPv6 下一跃点的 IPv4 路由,引入了以下扩展:

BGP 下一跳编码

BGP 通过下一跃点编码功能进行了扩展,用于发送具有 IPv6 下一跃点的 IPv4 路由。如果此功能在远程对等方上不可用,BGP 会根据此编码功能对对等方进行分组,并从协商的网络层可达性信息 (NLRI) 列表中移除不具备编码功能的 BGP 家族。Junos OS 只允许一个解析表,如 inet.0。为了允许具有 IPv6 下一跃点的 IPv4 BGP 路由,BGP 会创建一个新的解析树。此功能允许 Junos OS 路由表具有多个解析树。

除了 RFC 5549 之外,使用 IPv6 下一跳通告 IPv4 网络层可达性信息 RFC 5512 中指定的新封装社区,引入了 BGP 封装后续地址族标识符 (SAFI) 和 BGP 隧道封装属性 ,以确定下一跃点地址的地址族。封装社区表示入口节点需要创建的隧道类型。当 BGP 收到具有 IPv6 下一跃点地址和 V4oV6 封装社区的 IPv4 路由时,BGP 将创建 IPv4-over-IPv6 动态隧道。当 BGP 收到没有封装社区的路由时,BGP 路由将在不创建 V4oV6 隧道的情况下得到解析。

层次结构级别提供了[edit policy-statement policy name term then]新的策略作dynamic-tunnel-attributes dyan-attribute ,以支持新的扩展封装。

隧道定位

动态隧道基础架构通过隧道定位得到增强,可以支持更多的隧道。需要进行隧道定位来提供弹性,以便在锚点发生故障时处理流量。一个或多个机箱相互备份,并让路由协议进程 (rpd) 将流量从故障点引导到备份机箱。机箱仅将这些聚合前缀而不是单个环路地址播发到网络中。

隧道处理

IPv6 上的 IPv4 隧道使用动态隧道基础架构和隧道锚定,以支持所需的机箱范围。隧道状态被本地化为一个数据包转发引擎,其他数据包转发引擎将流量引导到隧道锚点。

隧道入口

隧道入口或隧道封装将网络流量转发到客户站点。当流量进入机箱的数据包转发引擎上存在隧道状态时,路由协议进程 (rpd) 将使用以下过程通过 IPv6 隧道重新分配 IPv4 路由:
图 3:当隧道状态为同一 PFE Data packet path in a network device through ingress, fabric, and egress stages in a Packet Forwarding Engine architecture, highlighting IPv4/IPv6 processing. 上可用时的隧道入口处理
图 4:当隧道状态位于不同的 PFE Data packet flow through network device with PFEs, showing ingress, anchor, and egress stages, transitioning from IPv4 to IPv6 headers. 上时的隧道入口处理
  1. 将 IPv4 流量封装在 IPv6 报头中。

    封装前会执行最大传输单元 (MTU) 实施。如果封装的数据包大小超过隧道 MTU,且未设置 IPv4 数据包, DF-bit 则数据包将被分段,并将这些分段封装。

  2. 在内部数据包标头上使用基于散列的流量负载平衡。

  3. 将流量转发至目标 IPv6 地址。IPv6 地址取自 IPv6 报头。

隧道出口

隧道出口将流量从客户端设备转发到网络端。
图 5:当隧道状态为同一 PFE Data packet path through a network device: ingress, processing, and egress in PFE architecture with IPv6 and IPv4 handling. 上的可用时的隧道出口处理
图 6:当隧道状态在远程 PFE Data packet path through network device with PFEs; transitions from IPv6 to IPv4 via ingress, fabric, anchor, and egress stages. 上为可用时的隧道出口处理
  1. 解封装 IPv6 数据包内的 IPv4 数据包。

  2. 执行反欺骗检查,以确保 IPv6、IPv4 对与用于设置隧道的信息匹配。

  3. 从解封装数据包的 IPv4 标头中查找 IPv4 目的地址,并将数据包转发至指定的 IPv4 地址。

隧道负载平衡和锚点数据包转发引擎故障处理

需要及时处理数据包转发引擎故障,以避免对锚定在数据包转发引擎上的隧道流量进行空路由过滤。隧道本地化涉及使用 BGP 播发来全局修复故障。隧道流量将从故障点转移到包含相同隧道状态的其他备份机箱。为了实现流量负载平衡,机箱配置为为每个前缀集通告不同的多出口点识别器 (MED) 值,以便只有四分之一的隧道流量通过每个机箱。CPE 流量也以类似的方式处理,方法是在每个机箱上配置相同的任播地址集,并且仅将四分之一的流量引导到每个机箱。

锚点数据包转发引擎是执行隧道所有处理的单个实体。锚点数据包转发引擎选择通过静态调配进行,并绑定到数据包转发引擎物理接口。当其中一个数据包转发引擎发生故障时,守护程序会将线卡上的所有数据包转发引擎标记为关闭,并将此信息发送给路由协议进程、路由协议进程和其他守护程序。路由协议进程会为锚定在故障数据包转发引擎上的前缀和分配给故障数据包转发引擎的 IPv6 地址发送 BGP 撤销。这些播发会将流量重新路由到其他备份机箱。当故障数据包转发引擎再次启动时,机箱会将数据包转发引擎标记为并 up 更新路由协议进程。路由协议进程会触发对等方的 BGP 更新,以便锚定到特定数据包转发引擎的隧道现在可用于路由流量。对于大规模隧道配置,此过程可能需要几分钟时间。因此,系统中内置了该 Ack 机制,以确保在将流量切换回原始机箱时将流量损失降至最低。

隧道环路流统计信息

动态隧道基础架构在封装后使用数据包转发引擎中的环路流对数据包进行循环。由于该环路流的带宽有限,因此需要监控隧道环路流的性能。

要监控环路流的统计信息,请使用作命令 show pfe statistics traffic detail 来显示聚合的环路流统计信息,包括转发速率、丢包速率和字节速率。

配置 BGP 以使用 IPv6 下一跃点地址重新分配 IPv4 路由

从 17.3R1 版开始,Junos OS 设备可以通过仅支持 IPv6 的网络转发 IPv4 流量,而这通常无法转发 IPv4 流量。如 RFC 5549 中所述,IPv4 流量从 CPE 设备以隧道传输到 IPv4-over-IPv6 网关。这些网关通过任播地址通告给 CPE 设备。然后,网关设备会创建通向远程客户端设备的动态 IPv4-over-IPv6 隧道,并通告 IPv4 聚合路由以引导流量。带有可编程接口的路由反射器将隧道信息注入网络。路由反射器通过 IBGP 连接到网关路由器,网关路由器以 IPv6 地址作为下一跃点播发主机路由的 IPv4 地址。

注意:

动态 IPv4-over-IPv6 隧道功能不支持 Junos OS 17.3R1 版中的统一 ISSU。

开始配置 BGP 以分发具有 IPv6 下一跃点地址的 IPv4 路由之前,请执行以下作:

  1. 配置设备接口。

  2. 配置 OSPF 或任何其他 IGP 协议。

  3. 配置 MPLS 和 LDP。

  4. 配置 BGP。

要配置 BGP 以分发具有 IPv6 下一跃点地址的 IPv4 路由:

  1. 为具有 IPv6 对等方的 BGP 组配置扩展下一跃点编码选项,以通过 IPv6 会话路由 IPv4 地址族。
  2. 配置动态 IPv4-over-IPv6 隧道并定义其属性,以通过仅支持 IPv6 的网络转发 IPv4 流量。IPv4 流量从 CPE 设备以隧道传输到 IPv4-over-IPv6 网关。
  3. 配置隧道属性。

    例如,配置具有以下属性的 first_tunnel 动态隧道:

  4. 定义一个策略,以便将配置的动态隧道属性配置文件与前缀列表或路由过滤器相关联。

    例如,定义 dynamic_tunnel_policy 策略以仅将动态隧道 first_tunnel 属性与前往特定路由 2.2.2.2/32 的流量相关联。

  5. 导出定义的策略。

    例如,导出配置 dynamic_tunnel_policy 的策略。

启用第 2 层 VPN 和 VPLS 信令

您可以启用 BGP 以传输第 2 层 VPN 和 VPLS NLRI 消息。

要启用 VPN 和 VPLS 信令,请包含以下语 family 句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

要配置最大前缀数,请包含以下语 prefix-limit 句:

有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。

设置最大前缀数数时,当达到该数量时,将记录一条消息。如果包含该 teardown 语句,则当达到最大前缀数时,会话将被拆除。如果指定百分比,则当前缀数量达到该百分比时,将记录消息。一旦会话被拆除,它就会在短时间内重新建立。包括以下 idle-timeout 语句以将会话保持关闭指定时间或永久。如果指定 forever,则仅在使用命令 clear bgp neighbor 后重新建立会话。如果包含该 drop-excess <percentage> 语句并指定百分比,则当前缀数量超过百分比时,多余的路由将被丢弃。如果包含该 hide-excess <percentage> 语句并指定百分比,则当前缀数量超过百分比时,多余的路由将被隐藏。如果修改了百分比,则会自动重新评估路由。

了解用于流量过滤的 BGP 流路由

流路由是 IP 数据包匹配条件的聚合。流路由作为输入转发表过滤器(隐式)安装,并使用流规范网络层可达性信息 (NLRI) 消息通过网络传播并安装到流路由表 instance-name.inetflow.0中。只有当满足特定匹配条件时,数据包才能通过流路由。

流路由和防火墙过滤器的类似之处在于,它们根据数据包的组件过滤数据包,并对匹配的数据包执行作。流路由提供流量过滤和速率限制功能,与防火墙过滤器非常相似。此外,您还可以在不同的自治系统之间传播流路由。

流路由由 BGP 通过流规范 NLRI 消息传播。您必须启用 BGP 才能传播这些 NLRI。

从 Junos OS 15.1 版开始,将实施一些更改以扩展对现有 inet-flow 和 inetvpn-flow 系列的不间断活动路由 (NSR) 支持,并根据 draft-ietf-idr-bgp-flowspec-oid-01 扩展 BGP Flowspec 的路由验证。作为此增强功能的一部分,引入了两个新语句。请参阅 强制优先 AS不安装

注意:

从 Junos OS 16.1 版开始,IPv6 支持已扩展到 BGP 流规范,允许传播 IPv6 和 VPN-IPv6 数据包的流量流规范规则。BGP 流规范可自动协调流量过滤规则,以减轻不间断活动路由 (NSR) 期间的分布式拒绝服务攻击。

从 Junos OS 16.1R1 版开始,BGP 流规范支持流量标记 extended-community 过滤作。对于 IPv4 流量,Junos OS 会将传输 IPv4 数据包的 DiffServ 代码点 (DSCP) 位修改为扩展社区的相应值。对于 IPv6 数据包,Junos OS 会将传输 IPv6 数据包字段的 traffic class 前六位修改为扩展社区的相应值。

从 Junos OS 17.1R1 版开始,BGP可以在安装了第三代 FPC(PTX5000 上的 FPC3-PTX-U2 和 FPC3-PTX-U3,PTX3000上的 FPC3-SFF-PTX-U0 和 FPC3-SFF-PTX-U1)的PTX 系列路由器上传输流规范网络层可达性信息 (NLRI) 消息。将防火墙过滤器信息传播为 BGP 的一部分,使您能够在各个自治系统中动态传播针对拒绝服务 (DOS) 攻击的防火墙过滤器。

从 Junos OS 17.2R1 版开始,BGP 可以在安装了第三代 FPC 的 PTX1000 路由器上传输流规范网络层可达性信息 (NLRI) 消息。将防火墙过滤器信息传播为 BGP 的一部分,使您能够在各个自治系统中动态传播针对拒绝服务 (DOS) 攻击的防火墙过滤器。

从 cRPD 20.3R1 版开始,通过 BGP 流规范 NLRI 传播的流路由和监管规则将通过 cRPD 环境中的 Linux Netfilter 框架下载到 Linux 内核。

流路由的匹配条件

您可以指定数据包必须匹配的条件,然后才能对流路由执行语句中的 then 作。语句中的所有 from 条件必须匹配才能执行作。指定匹配条件的顺序并不重要,因为数据包必须与术语中的所有条件匹配才能进行匹配。

要配置匹配条件,请在层次结构级别包含match[edit routing-options flow]该语句。

表 1 介绍了流路由匹配条件。

表 1:流路由匹配条件

匹配条件

描述

destination prefix prefix-offset number

IP 目标地址字段。

可选字段(仅在已配置为模式的enhanced-ip增强型 MPC 的 Junos 设备上可用)可用于prefix-offset指定在 Junos OS 开始匹配 IPv6 前缀之前必须跳过的位数。

destination-port number

TCP 或用户数据报协议 (UDP) 目标端口字段。不能在同一术语中同时指定 和 port destination-port match 条件。

可以指定以下文本同义词之一来代替数值(端口号也会列出): afs (1483)、 bgp (179)、 biff (512)、 bootpc (68)、 bootps (67)、 cmd (514)、 cvspserver (2401)、 dhcp (67)、 domain (53)、 eklogin (2105)、 ekshell (2106)、 exec (512)、 finger (79)、 ftp (21 ftp-data )、(20)、(80)、 https http (443)、 ident (113)、 imap (143)、 kerberos-sec (88)、 klogin (543)、 kpasswd (761)、 krb-prop (754)、 krbupdate (760)、 kshell (544)、 ldap (389)、 login (513)、 mobileip-agent (434)、mobilip-mn (435)、 msdp (639)、 netbios-dgm (138)、 netbios-ns (137)、 netbios-ssn (139)、 nfsd (2049)、 nntp (119)、 ntalk (518)、 ntp (123)、 pop3 (110)、 pptp (1723)、 printer (515)、 radacct (1813)、(1812)、 rip radius (520)、 rkinit (2108)、 smtp (25)、 snmp (161)、 snmptrap (162)、 snpp (444)、 socks (1080)、 ssh (22)、 sunrpc (111)、 syslog (514)、 tacacs-ds (65)、 talk (517)、 telnet (23)、 tftp (69)、 timed (525)、 who (513)、 xdmcp (177)、 zephyr-clt (2103)或zephyr-hm(2104)。

dscp number

差异服务代码点 (DSCP)。DiffServ 协议在 IP 报头中使用服务类型 (ToS) 字节。此字节的最有效六位构成 DSCP。

您可以指定十六进制或十进制形式的 DSCP。

flow-label numeric-expression

匹配流标签值。此字段的值范围为 0 到 1048575。

仅在具有配置为模式的 enhanced-ip 增强型 MPC 的 Junos 设备上才支持此匹配条件。IPv4 不支持此匹配条件。

fragment type

片段类型字段。关键字按与之关联的片段类型进行分组:

  • dont-fragment

    注意:

    IPv6 不支持此选项。

  • first-fragment

  • is-fragment

  • last-fragment

  • not-a-fragment

仅在具有配置为模式的 enhanced-ip 增强型 MPC 的 Junos OS 设备上才支持此匹配条件。

icmp-code numbericmp6-code icmp6-code-value;

ICMP 代码字段。此值或关键字提供比 icmp-type更具体的信息。由于值的含义取决于关联icmp-type的值,因此必须同时icmp-code指定 icmp-type

可以指定以下文本同义词之一来代替数值(也会列出字段值)。关键字按与之关联的 ICMP 类型进行分组:

  • 参数-问题: ip-header-bad (0)、 required-option-missing (1)

  • 重定向: redirect-for-host (1)、(0)、 redirect-for-tos-and-host redirect-for-network (3)、 redirect-for-tos-and-net (2)

  • 超时: ttl-eq-zero-during-reassembly (1)、 ttl-eq-zero-during-transit (0)

  • 不可访问: communication-prohibited-by-filtering (13)、 destination-host-prohibited (10)、 destination-host-unknown (7)、 destination-network-prohibited (9)、 destination-network-unknown (6)、 fragmentation-needed (4)、 host-precedence-violation (14)、 host-unreachable (1 host-unreachable-for-TOS )、(12)、 network-unreachable (0)、 network-unreachable-for-TOS (11)、 port-unreachable (3)、 precedence-cutoff-in-effect (15)、 protocol-unreachable (2)、 source-host-isolated (8)、 source-route-failed (5)

icmp-type number icmp6-type icmp6-type-value

ICMP 数据包类型字段。通常,将此匹配与 protocol match 语句一起指定,以确定端口上正在使用的协议。

可以指定以下文本同义词之一来代替数值(字段值也会列出): echo-reply (0)、 echo-request (8)、 info-reply (16)、 info-request (15)、 mask-request (17)、 mask-reply (18)、 parameter-problem (12)、 redirect (5)、 router-advertisement (9)、 router-solicit (10)、 source-quench (4)、(11)、 timestamp time-exceeded (13)、 timestamp-reply (14) 或 unreachable (3)。

packet-length number

IP 数据包总长度。

port number

TCP 或 UDP 源或目标端口字段。不能在同一术语中同时指定 port 匹配和 destination-port or source-port 匹配条件。

可以指定下面列出 destination-port的文本同义词之一,以代替数值。

protocol number

IP 协议字段。可以指定以下文本同义词之一来代替数值(也会列出字段值): ah, egp (8)、 esp (50)、 gre (47)、 icmp (1)、 igmp (2)、 ipip (4)、 ipv6 (41)、 ospf (89)、 pim (103)、 rsvp (46)、 tcp (6) 或 udp (17)。

只有在已配置为模式的 enhanced-ip 增强型 MPC 的 Junos 设备上,IPv6 才支持此匹配条件。

source prefixprefix-offset number

IP 源地址字段。

可选字段(仅在已配置为模式的enhanced-ip增强型 MPC 的 Junos 设备上可用)可用于prefix-offset指定在 Junos OS 开始匹配 IPv6 前缀之前必须跳过的位数。

source-port number

TCP 或 UDP 源端口字段。不能在同一术语中指定 portsource-port 匹配条件。

代替数字字段,可以指定下面列出 destination-port的文本同义词之一。

tcp-flag type

TCP 报头格式。

流路由作

您可以指定如果数据包与您在流路由中配置的条件匹配时要执行的作。要配置作,请在层次结构级别包含then[edit routing-options flow]该语句。

表 2 介绍了流路由作。

表 2:流路由作修饰符

动作或动作修饰符

描述

行动

accept

接受数据包。这是默认设置。

discard

以静默方式丢弃数据包,而不发送互联网控制信息协议 (ICMP) 消息。

community

将路由中的任何社区替换为指定的社区。

马克 value

为与此流量匹配的流量设置 DSCP 值。指定一个从 0 到 63 的值。仅在具有配置为模式的 enhanced-ip 增强型 MPC 的 Junos 设备上支持此作。

next term

继续进行下一个匹配条件进行评估。

routing-instance extended-community

指定数据包转发到的路由实例。

rate-limit bits-per-second

限制流路由上的带宽。以位/秒 (bps) 表示限制。从 Junos OS 16.1R4 版开始,速率限制范围为 [0 到 1000000000000]。

sample

对流路由上的流量进行采样。

验证流路由

只有当流路由已使用验证过程进行验证时,Junos OS 才会将流路由安装到流路由表中。在将路由安装到流路由表之前,路由引擎会执行验证。

使用 BGP 网络层可达性信息 (NLRI) 消息接收的流路由在安装到流主实例路由表 instance.inetflow.0之前会经过验证。draft-ietf-idr-flow-spec-09.txt, 流规范规则的传播中介绍了验证过程。您可以使用 BGP NLRI 消息绕过流路由的验证过程,并使用您自己的特定导入策略。

要跟踪验证作,请在层次结构级别包含[edit routing-options flow]validation语句。

支持 BGP 流规范算法版本 7 及更高版本

默认情况下,Junos OS 使用 BGP 流规范草案版本 6 中定义的术语排序算法。在 Junos OS 10.0 及更高版本中,您可以将路由器配置为符合 BGP 流规范版本 7 中首次定义并由 RFC 5575( 流规范路由的传播)支持的术语排序算法。

最佳实践:

建议将 Junos OS 配置为使用在 BGP 流规范草案版本 7 中首次定义的术语排序算法。我们还建议将 Junos OS 配置为在路由器上配置的所有路由实例上使用相同的术语排序算法。

要将 BGP 配置为使用互联网草案版本 7 中首次定义的流规范算法,请在层次结构级别包含[edit routing-options flow term-order]standard语句。

要恢复为使用版本 6 中定义的术语排序算法,请在层次结构级别包含[edit routing-options flow term-order]legacy语句。

注意:

配置的术语顺序仅具有本地意义。也就是说,术语顺序不会随着发送至远程 BGP 对等方的流路由一起传播,这些对等方的术语顺序完全由其自己的术语顺序配置决定。因此,当您不知道远程对等方的术语顺序配置时,在配置与顺序相关的作next term时应小心。本地next term可能不同于远程对等方上配置的。next term

注意:

在 Junos OS 演化版上, next term 不能显示为作的最后一个术语。不支持指定为作但未配置任何匹配条件的 next term 过滤器术语。

从 Junos OS 16.1 版开始,您可以选择不对特定接口上接收的流量应用 flowspec 过滤器。在过滤器的 flowspec 开头添加一个新术语,用于接受在这些特定接口上接收到的任何数据包。新术语是一个变量,用于创建附加到转发表过滤器的术语排除列表,作为流规范过滤器的一部分。

要排除flowspec过滤器不应用于特定接口上接收的流量,必须先通过在层次结构级别上[edit interfaces]包含 family inet filter group group-id 语句来在此类接口上配置 ,group-id然后通过在层次结构级别包含[edit routing-options]该语句,将flow interface-group group-id exclude过滤器与接口组附加flowspec。使用该语句,每个路由实例set routing-options flow interface-group group-id只能配置一个group-id

示例:启用 BGP 以传输流规范路由

此示例说明如何允许 BGP 携带流规范网络层可达性信息 (NLRI) 消息。

要求

开始之前:

  • 配置设备接口。

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

  • 配置 BGP。

  • 配置一个路由策略,用于将路由(例如直接路由或 IGP 路由)从路由表导出到 BGP。

概述

将防火墙过滤器信息传播为 BGP 的一部分,使您能够在各个自治系统中动态传播针对拒绝服务 (DOS) 攻击的防火墙过滤器。流路由被封装到流规范 NLRI 中,并通过网络或虚拟专用网络 (VPN) 传播,从而共享类似过滤器的信息。流路由是数据包匹配条件和结果作的聚合。它们为您提供流量过滤和速率限制功能,就像防火墙过滤器一样。默认实例、VPN 路由和转发 (VRF) 实例以及虚拟路由器实例支持单播流路由。

导入和导出策略可以应用于家族 inet flow 或家族 inet-vpn flow NLRI,从而影响接受或通告的流路由,类似于将导入和导出策略应用于其他 BGP 家族的方式。唯一的区别是,流策略配置必须包含 from rib inetflow.0 语句。此语句将使策略应用于流路由。如果策略只有 OR then rejectthen accept 句而没有 from 语句,则会出现此规则的例外情况。然后,策略会影响所有路由,包括 IP 单播和 IP 流。

流路由过滤器首先在路由器上静态配置,具有一组匹配标准,然后是要执行的作。然后,除了 family inet unicast之外 family inet flow ,还在此启用 BGP 的设备及其对等方之间配置 (或 family inet-vpn flow)。

默认情况下,静态配置的流路由(防火墙过滤器)会播发至支持 family inet flow family inet-vpn flow NLRI 的其他支持 BGP 的设备。

在将防火墙过滤器安装到流路由表 instance-name.inetflow.0之前,接收方启用 BGP 的设备会执行验证过程。RFC 5575, 流规范规则的传播中介绍了验证过程。

如果接收设备通过以下条件,则启用 BGP 的接收设备将接受流路由:

  • 流路由的发起方与路由中嵌入的目标地址的最佳匹配单播路由的发起方匹配。

  • 与已从不同下一跃点自治系统接收活动路由的流路由的目的地址相比,没有更具体的单播路由。

第一个标准确保过滤器由单播转发用于流路由中嵌入的目标地址的下一跃点播发。例如,如果流路由为 10.1.1.1,proto=6,port=80,则启用 BGP 的接收设备将在单播路由表中选择与目标前缀 10.1.1.1/32 匹配的更具体的单播路由。在包含 10.1/16 和 10.1.1/24 的单播路由表上,后者被选为要比较的单播路由。仅考虑活动的单播路由条目。这遵循了一个概念,即如果由最佳单播路由的发起方播发,则流路由是有效的。

第二个标准涉及将给定地址块分配给不同实体的情况。仅当解析为最佳匹配单播路由(聚合路由)的流不涵盖路由到不同下一跃点自治系统的更具体路由时,才会被接受。

您可以使用 BGP NLRI 消息绕过流路由的验证过程,并使用您自己的特定导入策略。当 BGP 传输流规范 NLRI 消息时, no-validate 在策略接受数据包后,层次结构级别的 [edit protocols bgp group group-name family inet flow] 语句省略流路由验证过程。您可以将导入策略配置为匹配目标地址和路径属性,例如社区、下一跃点和 AS 路径。您可以指定如果数据包与您在流路由中配置的条件匹配时要执行的作。要配置作,请在层次结构级别包含 [edit routing-options flow] 该语句。流规范 NLRI 类型包括 RFC 5575 中定义的目标前缀、源前缀、协议和端口等组件。导入策略可以使用流规范 NLRI 中的路径属性和目标地址过滤入站路由。导入策略无法过滤 RFC 5575 中的任何其他组件。

流规范定义了所需的协议扩展,以满足最常见的 IPv4 单播和 VPN 单播过滤应用。可以重复使用相同的机制,并添加新的匹配标准来解决其他 BGP 地址家族(例如 IPv6 单播)的类似过滤问题。

在表中 inetflow.0 安装流路由后,该路由也会添加到内核中的防火墙过滤器列表中。

VPN 仅在路由器上支持流规范的 NLRI 消息。VPN 会将 NLRI 中的路由目标扩展社区与导入策略进行比较。如果存在匹配项,VPN 就可以开始使用流路由来过滤和速率限制数据包流量。收到的流路由将安装到流路由表instance-name.inetflow.0中。流路由也可在整个 VPN 网络中传播并在 VPN 之间共享。要启用多协议 BGP (MP-BGP) 为地址族携带inet-vpn流规范 NLRI,请在层次结构级别包含[edit protocols bgp group group-name family inet-vpn]flow语句。VPN 流路由仅支持默认实例。为具有家族inet-vpn的 VPN 配置的流路由不会自动验证,因此层次结构级别不支持[edit protocols bgp group group-name family inet-vpn]no-validate语句。如果在单个 AS 中的设备之间本地配置流路由,则不需要验证。

导入和导出策略可以应用于 family inet flow family inet-vpn flow NLRI,从而影响接受或通告的流路由,类似于将导入和导出策略应用于其他 BGP 系列的方式。唯一的区别是,流策略配置必须包含该 from rib inetflow.0 语句。此语句将使策略应用于流路由。如果策略只有 OR then rejectthen accept 句而没有 from 语句,则会出现此规则的例外情况。然后,策略会影响所有路由,包括 IP 单播和 IP 流。

此示例说明如何配置以下导出策略:

  • 允许播发路由过滤器指定的流路由的策略。仅播发 10.13/16 块覆盖的流路由。此策略不会影响单播路由。

  • 一种允许将所有单播和流路由播发至邻接方的策略。

  • 禁止将所有路由(单播或流)播发至邻接方的策略。

拓扑学

配置

配置静态流路由

CLI 快速配置

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

分步程序

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

要配置 BGP 对等体会话,请执行以下作:

  1. 配置匹配条件。

  2. 配置作。

  3. (推荐)对于流规范算法,配置基于标准的术语顺序。

    在 flowspec RFC 草案版本 6 中指定的默认术语排序算法中,具有不太具体匹配条件的术语始终先于具有更具体匹配条件的术语之前进行评估。这会导致永远不会评估具有更具体匹配条件的术语。RFC 5575 的版本 7 对算法进行了修订,以便在不太具体的匹配条件之前评估更具体的匹配条件。为了向后兼容,Junos OS 中的默认行为不会改变,即使较新的算法更有意义。要使用较新的算法,请在配置中包含 term-order standard 该语句。Junos OS 10.0 及更高版本支持此语句。

结果

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

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

播发路由过滤器指定的流路由

CLI 快速配置

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

分步程序

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

要配置 BGP 对等体会话,请执行以下作:

  1. 配置 BGP 组。

  2. 配置流策略。

  3. 配置本地自治系统 (AS) 编号。

结果

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

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

播发所有单播和流路由

CLI 快速配置

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

分步程序

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

要配置 BGP 对等体会话,请执行以下作:

  1. 配置 BGP 组。

  2. 配置流策略。

  3. 配置本地自治系统 (AS) 编号。

结果

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

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

广告 无单播或流路由

CLI 快速配置

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

分步程序

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

要配置 BGP 对等体会话,请执行以下作:

  1. 配置 BGP 组。

  2. 配置流策略。

  3. 配置本地自治系统 (AS) 编号。

结果

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

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

限制路由表中安装的流路由数量

CLI 快速配置

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

分步程序

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

注意:

应用路由限制可能会导致不可预测的动态路由协议行为。例如,一旦达到限制且路由被拒绝,在路由数量降至限制以下后,BGP 不一定会尝试重新安装被拒绝的路由。可能需要清除 BGP 会话才能解决此问题。

要限制流路由:

  1. 设置表中 inetflow.0 安装的前缀数量上限。

  2. 将阈值设置为 50%,当安装 500 个路由时,系统日志中将记录警告。

结果

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

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

限制在 BGP 对等会话上接收的前缀数

CLI 快速配置

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

注意:

您可以一次添加 teardown <percentage>一个语句选项 、 drop-excess <percentage>hide-excess<percentage> 语句选项。

分步程序

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

为特定邻接方配置前缀限制,可以更可预测地控制哪个对等方可以通告多少个流路由。

要限制前缀数量:

  1. 将来自邻居 10.12.99.2 的 1000 个 BGP 路由限制设置为 1000 个。

  2. 将邻居会话或前缀配置为在 teardown <percentage>会话或前缀达到其限制时执行 、 drop-excess <percentage>hide-excess<percentage> 语句选项。

    如果指定该 teardown <percentage> 语句并指定百分比,则当前缀数量达到该百分比时,将记录消息。关闭会话后,会话会在短时间内重新建立,除非包含该 idle-timeout 语句。

    如果指定该 drop-excess <percentage> 语句并指定百分比,则当前缀数量超过该百分比时,多余的路由将被丢弃

    如果指定该 hide-excess <percentage> 语句并指定百分比,则当前缀数量超过该百分比时,多余的路由将被隐藏。

结果

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

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

验证

确认配置工作正常。

验证 NLRI

目的

查看为邻接方启用的 NLRI

行动

在作模式下,运行命令show bgp neighbor 10.12.99.5。在输出中查找。inet-flow

验证路由

目的

查看流量路由示例输出显示了从 BGP 获知的流路由和静态配置的流路由。

对于本地配置的流路由(在层次结构级别上 [edit routing-options flow] 配置),路由由流协议安装。因此,您可以通过指定表来显示流路由,如 show route table inetflow.0 中的 或 show route table instance-name.inetflow.0,其中 instance-name 是路由实例名称。或者,也可以通过运行命令 show route protocol flow 来显示跨多个路由实例的所有本地配置的流路由。

如果流路由不是本地配置的,而是从路由器的 BGP 对等体接收的,则该流路由由 BGP 安装在路由表中。您可以通过指定表或运行 show route protocol bgp来显示流路由,以显示所有 BGP 路由(流和非流)。

行动

在作模式下,运行命令 show route table inetflow.0

意义

流路由表示防火墙过滤器的一个术语。配置流路由时,请指定匹配条件和作。在匹配属性中,您可以匹配源地址、目标地址和其他限定符,例如端口和协议。对于包含多个匹配条件的单个流路由,所有匹配条件都封装在路由的前缀字段中。在流路由上发出 show route 命令时,将显示路由的前缀字段以及所有匹配条件。 10.12.44.1,* 表示匹配条件为 match destination 10.12.44.1/32。如果输出中的前缀为 *,10.12.44.1,则表示匹配条件为 match source 10.12.44.1/32。如果匹配条件同时包含源和目标,则星号将替换为地址。

术语顺序编号表示防火墙过滤器中正在评估的术语(流路由)的顺序。命令显示 show route extensive 每个术语(路由)的作。

验证流验证

目的

显示流量路由信息。

行动

在作模式下,运行命令 show route flow validation detail

验证防火墙过滤器

目的

显示内核中安装的防火墙过滤器。

行动

在作模式下,运行命令 show firewall

当超过允许的流路由数量时,验证系统日志记录

目的

如果配置了安装的流路由数限制(如 限制路由表中安装的流路由数中所述),请在达到阈值时查看系统日志消息。

行动

在作模式下,运行命令 show log <message>

当超过 BGP 对等会话上收到的前缀数时,验证系统日志记录

目的

如果配置了对安装的流路由数量的限制(如 限制在 BGP 对等会话上接收的前缀数中所述),请在达到阈值时查看系统日志消息。

行动

在作模式下,运行命令 show log message

如果指定 teradown <percentage> 语句选项:

如果指定 drop-excess <percentage> 语句选项:

如果指定 hide-excess <percentage> 语句选项:

示例:配置 BGP 以承载 IPv6 流规范路由

此示例说明如何配置流量过滤的 IPv6 流量规范。BGP 流规范可用于自动执行域间和域内流量过滤规则协调,以减轻拒绝服务攻击。

要求

此示例使用以下硬件和软件组件:

  • 两台 MX 系列路由器

  • Junos OS 16.1 或更高版本

启用 BGP 以承载 IPv6 流规范路由之前:

  1. 在设备接口上配置 IP 地址。

  2. 配置 BGP。

  3. 配置一个路由策略,用于将路由(例如静态路由、直接路由或 IGP 路由)从路由表导出到 BGP。

概述

流规范提供对拒绝服务攻击的保护,并限制消耗带宽并将带宽阻止在源附近进行拦截的恶意流量。在早期的 Junos OS 版本中,用于 IPv4 over BGP 的流量规范规则作为网络层可达性信息进行传播。从 Junos OS 16.1 版开始,IPv6 系列支持流规范功能,并允许传播 IPv6 和 IPv6 VPN 的流量规范规则。

拓扑学

图 7 显示了示例拓扑。路由器 R1 和路由器 R2 属于不同的自治系统。IPv6 流规范在路由器 R2 上配置。所有传入流量都将根据流量规范条件进行过滤,并根据指定的作对流量进行不同的处理。在此示例中,所有与流量规范条件匹配的 abcd::11:11:11:10/128 的流量都将被丢弃;而接收发往 ABCD::11:11:11:30/128 且符合流量规范条件的流量。

图 7:配置 BGP 以承载 IPv6 流路由 Network topology diagram with two routers: R1 in AS 64496 and R2 in AS 64497. IPv6 link between R1's ge-1/1/4 and R2's ge-1/1/5 on subnet abcd::13:14:2:0/120. R2 has additional connection via ge-1/0/0.

配置

CLI 快速配置

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

路由器 R1

路由器 R2

注意:flow (IPv6)语句在 [edit routing-options rib inet6.0]层次结构级别配置,而 flow IPv4 的语句在层次结构级别配置 [edit routing-options]

配置路由器 R2

分步程序

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

要配置路由器 R2,请执行以下作:

注意:

修改相应的接口名称、地址和其他参数后,对路由器 R1 重复此过程。

  1. 配置具有 IPv6 地址的接口。

  2. 配置 IPv6 环路地址。

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

  4. 在路由器 R1 和路由器 R2 之间配置 EBGP 对等会话。

  5. 配置静态路由和下一跳。因此,路由将添加到路由表中,以验证本例中的功能。

  6. 指定流量规格条件。

  7. 配置作以 discard 丢弃与指定匹配条件匹配的数据包。

  8. 指定流量规格条件。

  9. 配置作 accept 以接受与指定匹配条件匹配的数据包

  10. 定义允许 BGP 接受静态路由的策略。

结果

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

验证

确认配置工作正常。

验证 inet6flow 表中是否存在 IPv6 流规范路由

目的

在路由器 R1 和 R2 的表中 inet6flow 显示路由,并验证 BGP 是否已获知流路由。

行动

在作模式下,对路由器 R1 运行 show route table inet6flow.0 extensive 命令。

在作模式下,对路由器 R2 运行 show route table inet6flow.0 extensive 命令。

意义

表中 inet6flow 存在路由 abcd::11:11:11:10/128 和 abcd::11:11:11:30/128 确认 BGP 已学习流路由。

验证 BGP 汇总信息

目的

验证 BGP 配置是否正确。

行动

在作模式下,对路由器 R1 和 R2 运行 show bgp summary 命令。

意义

验证表是否 inet6.0 包含 BGP 邻接方地址,以及是否已与其 BGP 邻接方建立对等会话。

验证流验证

目的

显示流量路由信息。

行动

在作模式下,对路由器 R1 运行 show route flow validation 命令。

意义

输出显示表中的 inet6.0 流量路由。

验证 IPv6 路由的流规范

目的

显示根据指定的流量规范路由丢弃和接受的数据包数。

行动

在作模式下,对路由器 R2 运行 show firewall filter_flowspec_default_inet6_ 命令。

意义

输出指示发往 abcd::11:11:11:10/128 的数据包将被丢弃,并且路由 abcd::11:11:11:11:30/128 已接受 88826 个数据包。

配置 BGP 流规范 重定向至 IP

BGP 流规范重定向到 IP 功能允许基于流规范 (FlowSpec) 规则进行流量重定向,从而增强了流量工程能力。此功能支持重定向到 IPv4 或 IPv6 地址,如 BGP Flow-Spec Internet 草案中所述:draft-ietf-idr-flowspec-redirect-ip-02.txt, 重定向到 IP作。它对于服务提供商 (SP) 网络中的 DDoS 缓解和虚拟化服务环境 (vSCG) 中基于策略的转发特别有利。

用例

  • DDoS 缓解 – 将恶意流量重定向到清洗中心进行分析和清理。

  • 基于策略的转发 – 根据预定义规则将流量定向到特定目的地,从而实现高级流量管理。

拓扑学

  • 图 8:现有流 Existing Flow
    • 检测到攻击时,入口提供商边缘 (PE) 路由器上会应用 FlowSpec 重定向到 VRF

    • 然后,脏的 VRF 会将流量重定向到连接到前端 PE (HE-PE)洗涤器

    • 流量被清理后,HE-PE 会将其转发到预期目标。

  • 图 9:新流程 New Flow
    • FlowSpec 重定向到 IP 不是重定向到 VRF,而是应用于入口 PE 的外部接口。

    • 恶意流量会直接转发至 HE-PE

    • 然后,HE-PE 会根据重定向到 IP 规则将流量重定向到 洗涤器

    • 清理后的流量被转发到其目标,无需专用的脏 VRF。

目标平台

  • vMX、MX 系列路由器

性能和扩展目标

  • 该功能旨在支持 1,000 个这样的 FlowSpec 路由,以有效管理流量重定向。

  1. 在 BGP 会话上启用 FlowSpec:
  2. 配置重定向到 IP 的 FlowSpec 规则:
  3. 策略应用于接口:

验证命令:

此功能通过基于 IP 的流量处理(而不是基于 VRF 的分段)简化重定向过程,从而确保提高可扩展性、降低延迟并有效缓解 DDoS。

配置 BGP 流规范作 重定向到 IP 以过滤 DDoS 流量

从 Junos OS 版本 18.4R1 开始,BGP Flow-Spec Internet 草案draft-ietf-idr-flowspec-redirect-ip-02.txt中所述BGP流规范,支持 重定向到 IP作 。重定向到 IP作 使用扩展的 BGP 社区来提供流量过滤选项,以缓解服务提供商网络中的 DDoS。传统流规范重定向到 IP 使用 BGP 下一跃点属性。默认情况下,Junos OS 会使用扩展社区播发重定向至 IP 流规范作。这是支持虚拟服务控制网关 (vSCG) 中的服务链所必需的功能。重定向到 IP作允许将匹配的流规范流量转移到可全局可达的地址,该地址可以连接到可以过滤 DDoS 流量并将干净流量发送到出口设备的过滤设备。

注意:

IPv6 仅在传统的重定向到下一跃点编码模式下受支持。IPv6 不支持新的重定向到 IP 编码格式。

开始将流量重定向到 BGP 流规范路由的 IP 之前,请执行以下作:

  1. 配置设备接口。

  2. 配置 OSPF 或任何其他 IGP 协议。

  3. 配置 MPLS 和 LDP。

  4. 配置 BGP。

使用 BGP 扩展社区配置重定向到 IP 功能。

  1. BGP Flow-Spec Internet 草案draft-ietf-idr-flowspec-redirect-ip-02.txt“重定向到 IP作”中所述,为静态 IPv4 流规范路由配置重定向到 IP作

    默认情况下,Junos OS 使用扩展社区重定向到 IP 来播发重定向到 IP 流规范作。入口设备检测并将 DDoS 流量发送到指定的 IP 地址。

    例如,将 DDoS 流量重定向到 IPv4 地址 10.1.1.1。

  2. 静态 IPv6 流规范路由配置重定向到 IP作。

    例如,将 DDoS 流量重定向到 IPv6 地址 1002:db8::

  3. 定义用于过滤来自特定 BGP 社区的流量的策略。

    例如,定义策略 p1 以过滤来自 BGP 社区 redirip 的流量。

  4. 定义用于设置、添加或删除 BGP 社区的策略,并指定扩展社区。

    例如,定义策略 p1 以设置、添加或删除社区 reidirip,以及定义扩展社区以将流量重定向到 IP 地址 10.1.1.1。

  5. 配置 BGP 以使用 VRF.inet.0 表解析层次结构级别的 VRF 流规范路由包含语句。

使用下一跃点属性配置传统流规范重定向到 IP 功能。

注意:

您无法配置策略以将流量重定向到使用 BGP 扩展社区和旧版重定向到下一跃点 IP 地址的 IP 地址。

  1. 配置旧流量规范重定向到互联网草案draft-ietf-idr-flowspec-redirect-ip-00.txt中指定的 IP , BGP流量规范扩展社区,用于将流量重定向到 IP 下一跃点包含在 层次结构级别。

  2. 定义与下一跃点属性匹配的策略。

    例如,定义一个策略 p1,用于将流量重定向到下一跳 IP 地址 10.1.1.1。

  3. 定义一个策略,以使用传统流量规范下一跃点属性重定向到 IP作来设置、添加或删除 BGP 社区。

    例如,定义策略 p1 并设置、添加或删除 BGP 社区 redirnh,以将 DDoS 流量重定向到下一跃点 IP 地址 10.1.1.1。

使用 BGP 转发流量 流规范 DSCP作

配置 BGP 流规范 (FlowSpec) DSCP作,以便使用转发类和丢失优先级信息有效地通过网络转发数据包。

转发数据包的 BGP FlowSpec DSCP作的优势

  • 将流量转发到预期的 COS 队列,其中 COS 策略将正确应用于流量。

  • 根据调配的 DSCP 值影响本地转发行为(例如,选择隧道)。

  • 有助于有效管理网络流量。

当数据包进入路由器时,数据包会通过入口接口上应用的功能(如防火墙、COS 等)。在入口接口上配置 BGP FlowSpec 过滤器时,系统会根据 DSCP作对每个路由实例的数据包应用该过滤器。DSCP作对数据包进行分类和重写,并通过 BGP FlowSpec 过滤器更改 DSCP 代码。根据转发类和丢失优先级信息,数据包会被放入正确的转发队列。只有当满足特定匹配条件时,数据包才会通过流路由传输。匹配条件可以是源和目标 IP 地址、源和目标端口、DSCP、协议号等。转发类和丢失优先级信息通过反向映射表进行更新。

以下是服务提供商与企业客户网络之间建立的 BGP 会话拓扑。

Network topology diagram showing customer devices connected to an enterprise via a service provider network with routers PE1, PE2, PE3, and CE1.

在此拓扑中,服务提供商与企业客户网络之间为 BGP FlowSpec 配置 BGP 会话。BGP FlowSpec 过滤器适用于 PE1 和 PE2 路由器。进入这些路由器的数据包将根据 BGP FlowSpec 过滤器和 DSCP作进行重写。

要在设备上启用 BGP FlowSpec 过滤器,需要在 [edit forwarding-options family (inet | inet6)] 层次结构级别添加dscp-mapping-classifier配置语句:

以下服务等级配置示例将 DSCP 代码点映射到转发类和丢失优先级:

配置流路由验证策略

当使用流规范将过滤器通过网络分发到对等点时,流规范过滤器的格式将在源端进行验证。如果希望通过 EBGP 会话向对等方发出信号流路由,则必须在边缘路由器上验证流规范过滤器。

策略可用于对流路由执行这种附加验证。策略可以过滤流路由匹配条件,以防止允许从源注入的格式错误、不受支持或不需要的流路由。它还可以防止流路由意外或恶意地阻止协议会话。

策略可用于

  • 检查是否存在特定的流量规范匹配/作条件

  • 防止对无效或不需要的匹配条件进行编程。

配置策略以检查是否存在流规范匹配/作条件

您可以配置策略来检查是否从源播发了特定流量匹配/作条件,并采取任何必要的措施。每个流路由都有一个匹配条件和一个作条件。配置以下语句,指定匹配条件以及发生匹配时要执行的作。

set policy-options flowspec-attribute <> match condition <>

set policy-options flowspec-attribute < Flow Route action >

这些策略配置会查找流路由中的完全匹配项或部分匹配项,找到后,策略将与流路由匹配。如果配置多个匹配条件,则仅当满足所有条件时才会进行匹配。

您可以使用“反转”匹配选项来排除特定匹配条件。例如;在以下配置语句中,策略匹配“不带 TCP 协议”的流路由,然后匹配“具有 DSCP 值”X“的流路由。如果找到两个匹配项,则策略接受流路由。

配置策略以检查流规范匹配属性

您可以配置策略来检查流量路由是否与流量匹配条件的特定值匹配。这可以防止流路由意外或恶意地阻止协议会话。

配置以下语句,指定属性的特定值。

set policy-options flowspec-attribute < match value >

特定于 IPv4 的流量注意策略匹配属性不会影响 IPv6 流量路由,反之亦然。

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。

释放
描述
20.3R1
从 cRPD 20.3R1 版开始,通过 BGP 流规范 NLRI 传播的流路由和监管规则将通过 cRPD 环境中的 Linux Netfilter 框架下载到 Linux 内核。
17.2R1
从 Junos OS 17.2R1 版开始,BGP 可以在安装了第三代 FPC 的 PTX1000 路由器上传输流规范网络层可达性信息 (NLRI) 消息。
17.1R1
从 Junos OS 17.1R1 版开始,BGP可以在安装了第三代 FPC(PTX5000 上的 FPC3-PTX-U2 和 FPC3-PTX-U3,PTX3000上的 FPC3-SFF-PTX-U0 和 FPC3-SFF-PTX-U1)的PTX 系列路由器上传输流规范网络层可达性信息 (NLRI) 消息。
16.1R4
从 Junos OS 16.1R4 版开始,速率限制范围为 [0 到 1000000000000]。
16.1
从 Junos OS 16.1 版开始,IPv6 支持已扩展到 BGP 流规范,允许传播 IPv6 和 VPN-IPv6 数据包的流量流规范规则。
16.1
从 Junos OS 16.1R1 版开始,BGP 流规范支持流量标记 extended-community 过滤作。
16.1
从 Junos OS 16.1 版开始,您可以选择不对特定接口上接收的流量应用 flowspec 过滤器。
15.1
从 Junos OS 15.1 版开始,将实施一些更改以扩展对现有 inet-flow 和 inetvpn-flow 系列的不间断活动路由 (NSR) 支持,并根据 draft-ietf-idr-bgp-flowspec-oid-01 扩展 BGP Flowspec 的路由验证。