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 组播协议用户指南。https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/config-guide-multicast/config-guide-multicast.html

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

注:

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

在 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-Constrain

  • 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

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

对于 ,请指定一个介于 1 到 4,294,967,295 之间的值。maximum number 当超过指定的最大前缀数时,将发送系统日志消息。

如果包含该 语句,则当超过最大前缀数时,会话将被拆除。teardown 如果指定百分比,则当前缀数超过指定最大限制的该百分比时,将记录消息。会话被拆除后,它会在短时间内重新建立(除非您包含该 语句)。idle-timeout 如果包含该 语句,则可以将会话保持指定的时间量或永久关闭。idle-timeout 如果指定 ,则只有在发出 命令后才会重新建立会话。foreverclear 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

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

对于 ,请指定一个介于 1 到 4,294,967,295 之间的值。maximum number

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

注:

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

注:

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

配置 BGP 路由表组

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

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

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

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

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

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

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

允许标记和未标记的路由

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

要允许交换标记和未标记的路由,请包含以下 语句:rib

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

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

此示例演示如何通过 IPv4 连接导出 IPv6 和 IPv4 前缀,其中两端都配置了 IPv4 接口。

要求

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

概述

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

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

    注:

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

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

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

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

图 1 显示了示例拓扑。

图 1: 用于通过 IPv4 传输配置 IPv6 BGP 路由的拓扑用于通过 IPv4 传输配置 IPv6 BGP 路由的拓扑

配置

CLI 快速配置

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

设备 R1

设备 R2

设备 R3

配置设备 R1

分步过程

下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置设备 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 命令。

意义

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

检查路由表

目的

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

操作

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

通过 BGP 通告 IPv4 路由概述

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

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

要通过 IPv6 会话启用 IPv4 路由播发,请按如下方式进行配置 :local-ipv4-address

注:

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

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

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

此示例说明如何通过 IPv6 BGP 会话通告 IPv4 路由。在以 IPv6 为核心的双堆栈环境中,需要访问远程 IPv4 主机。因此,BGP 使用 IPv6 源地址和目标地址,通过 BGP 会话向 BGP 对等方播发具有 IPv4 下一跃点的 IPv4 路由。此功能使 BGP 能够通过 IPv6 BGP 会话上的 IPv4 下一跃点通告 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 使用自下一跃点播发路由时,才使用配置的 。local-ipv4-address

注:

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

拓扑

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

图 2: 通过 IPv6 BGP 会话通告 IPv4 路由通过 IPv6 BGP 会话通告 IPv4 路由

配置

CLI 快速配置

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

路由器 R1

路由器 R2

路由器 R3

配置路由器 R1

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置路由器 R1:

注:

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

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

  2. 配置环路地址。

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

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

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

  6. 启用该功能以通过 BGP IPv6 会话通告 IPv4 地址 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 是否正在向配置的 BGP 邻接方播发配置的 IPv4 地址。

操作

在操作模式下,在路由器 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 下一跳入 BGP 的 IPv4 路由重新分配

在主要传输 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 接收没有封装社区的路由时,将在不创建 V4oV6 隧道的情况下解析 BGP 路由。

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

隧道定位

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

隧道处理

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

隧道入口

隧道入口或隧道封装将网络流量转发到客户站点。当流量进入机箱的数据包转发引擎上存在隧道状态时,路由协议进程 (rpd) 使用以下过程通过 IPv6 隧道重新分配 IPv4 路由:
图 3: 隧道状态在同一 PFE 上可用时的隧道入口处理隧道状态在同一 PFE 上可用时的隧道入口处理
图 4: 隧道状态位于不同 PFE 上时的隧道入口处理隧道状态位于不同 PFE 上时的隧道入口处理
  1. 将 IPv4 流量封装在 IPv6 标头内。

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

  2. 对内部数据包标头使用基于哈希的流量负载平衡。

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

隧道出口

隧道出口将流量从客户端设备转发到网络端。
图 5: 隧道状态在同一 PFE 上可用时的隧道出口处理隧道状态在同一 PFE 上可用时的隧道出口处理
图 6: 隧道状态在远程 PFE 上可用时的隧道出口处理隧道状态在远程 PFE 上可用时的隧道出口处理
  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. 定义策略以将配置的动态隧道属性配置文件关联到前缀列表或路由过滤器。

    例如,定义 策略以仅将动态隧道 属性关联到特定路由 2.2.2.2/32 的流量。dynamic_tunnel_policyfirst_tunnel

  5. 导出定义的策略。

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

启用第 2 层 VPN 和 VPLS 信令

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

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

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

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

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

设置最大前缀数时,当达到该数量时,将记录一条消息。如果包含该 语句,则当达到最大前缀数时,会话将被拆除。teardown 如果指定百分比,则当前缀数达到该百分比时,将记录消息。会话被拆除后,它会在短时间内重新建立。包括语句以 将会话关闭指定的时间量或永久关闭。idle-timeout 如果指定 ,则只有在使用该 命令后,才会重新建立会话。foreverclear 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 的路由验证。作为此增强功能的一部分,引入了两个新语句。请参阅 强制先行 和 不安装。enforce-first-asno-install

注:

从 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 数据包字段的前 6 位修改为扩展社区的相应值。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: 流路由匹配条件

匹配条件

Description

destination prefix prefix-offset number

IP 目标地址字段。

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

destination-port number

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

要代替数值,可以指定以下文本同义词之一(还会列出端口号):(1483), (179), (512), (68), (67), (514), (2401), (67), (53), (2105), (2106), (512), (79), (21), (20), (80), (443), (113), (143), (88), (543), (761), (754), (760), (544), (389), (513), (434), (435), (639), (138), (137), (139), (2049), (119), (518), (123), (110), (1723), (515), (1813), (1812), (520), (2108), (25), (161), (162), (444), (1080), (22), (111), (514), (65), (517), (23), (69), (525), (513), (177), (2103) 或 (2104)。afsbgpbiffbootpcbootpscmdcvspserverdhcpdomainekloginekshellexecfingerftpftp-datahttphttpsidentimapkerberos-seckloginkpasswdkrb-propkrbupdatekshellldaploginmobileip-agentmobilip-mnmsdpnetbios-dgmnetbios-nsnetbios-ssnnfsdnntpntalkntppop3pptpprinterradacctradiusriprkinitsmtpsnmpsnmptrapsnppsockssshsunrpcsyslogtacacs-dstalktelnettftptimedwhoxdmcpzephyr-cltzephyr-hm

dscp number

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

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

flow-label numeric-expression

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

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

fragment type

片段类型字段。关键字按与其关联的片段类型分组:

  • dont-fragment

    注:

    IPv6 不支持此选项。

  • first-fragment

  • is-fragment

  • last-fragment

  • not-a-fragment

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

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

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

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

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

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

  • 超过时间:(1)、 (0)ttl-eq-zero-during-reassemblyttl-eq-zero-during-transit

  • 遥 不可 及:(13), (10), (7), (9), (6), (4), (14), (1), (12), (0), (11), (3), (15), (2), (8), (5)communication-prohibited-by-filteringdestination-host-prohibiteddestination-host-unknowndestination-network-prohibiteddestination-network-unknownfragmentation-neededhost-precedence-violationhost-unreachablehost-unreachable-for-TOSnetwork-unreachablenetwork-unreachable-for-TOSport-unreachableprecedence-cutoff-in-effectprotocol-unreachablesource-host-isolatedsource-route-failed

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

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

代替数值,您可以指定以下文本同义词之一(字段值也会列出):(0)、(8)、(16)、(15)、(17)、(18)、(12)、(5)、(9)、(10)、(4)、(11)、(13)、 (14)或(3)。echo-replyecho-requestinfo-replyinfo-requestmask-requestmask-replyparameter-problemredirectrouter-advertisementrouter-solicitsource-quenchtime-exceededtimestamptimestamp-replyunreachable

packet-length number

IP 数据包总长度。

port number

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

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

protocol number

IP 协议字段。代替数值,您可以指定以下文本同义词之一(字段值也会列出):(8)、(50)、(47)、(1)、(2)、(4)、(41)、(89)、(103)、(46)、 (6)或(17)。 ah, egpespgreicmpigmpipipipv6ospfpimrsvptcpudp 

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

source prefixprefix-offset number

IP 源地址字段。

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

source-port number

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

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

tcp-flag type

TCP 标头格式。

流路由的操作

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

表 2 描述了流路由操作。

表 2: 流路由操作修饰符

动作或动作修改器

Description

操作

accept

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

discard

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

community

将路径中的所有社区替换为指定的社区。

马克 value

为与此流匹配的流量设置 DSCP 值。指定一个介于 0 到 63 之间的值。仅具有针对模式配置 的增强型 MPC 的 Junos 设备才支持此操作。enhanced-ip

next term

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

routing-instance extended-community

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

rate-limit bits-per-second

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

sample

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

验证流路由

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

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

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

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

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

最佳实践:

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

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

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

注:

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

注:

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

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

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

示例:使 BGP 能够承载流量规范路由

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

要求

准备工作:

  • 配置设备接口。

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

  • 配置 BGP。

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

概述

通过在 BGP 过程中传播防火墙过滤器信息,可以跨自治系统动态传播防火墙过滤器,以防止拒绝服务 (DOS) 攻击。流路由被封装到流规范 NLRI 中,并通过网络或虚拟专用网络 (VPN) 传播,共享类似过滤器的信息。流路由是匹配条件和数据包结果操作的聚合。它们为您提供流量过滤和速率限制功能,与防火墙过滤器非常相似。默认实例、VPN 路由和转发 (VRF) 实例以及虚拟路由器实例支持单播流路由。

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

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

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

启用 BGP 的接收设备在将防火墙过滤器安装到流路由表 之前执行验证过程。instance-name.inetflow.0 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) 能够承载地址族的 流规范 NLRI,请在层次结构级别包含 该语句 。inet-vpnflow[edit protocols bgp group group-name family inet-vpn] VPN 流路由仅支持默认实例。为具有系列 的 VPN 配置的流路由不会自动验证,因此 该语句在层次结构级别不受支持 。inet-vpnno-validate[edit protocols bgp group group-name family inet-vpn] 如果在单个 AS 中的设备之间本地配置流路由,则不需要验证。

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

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

  • 允许通告路由筛选器指定的流路由的策略。仅通告 10.13/16 块覆盖的流路由。此策略不会影响单播路由。

  • 允许将所有单播和流路由通告到邻接方的策略。

  • 不允许向邻接方播发所有路由(单播或流)的策略。

拓扑

配置

配置静态流路由

CLI 快速配置

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

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

  1. 配置匹配条件。

  2. 配置操作。

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

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

成果

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

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

由路由过滤器指定的通告流路由

CLI 快速配置

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

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

  1. 配置 BGP 组。

  2. 配置流策略。

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

成果

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

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

播发所有单播和流路由

CLI 快速配置

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

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

  1. 配置 BGP 组。

  2. 配置流策略。

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

成果

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

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

播发无单播或流路由

CLI 快速配置

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

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

  1. 配置 BGP 组。

  2. 配置流策略。

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

成果

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

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

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

CLI 快速配置

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

注:

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

要限制流路由:

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

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

成果

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

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

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

CLI 快速配置

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

注:

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

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

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

要限制前缀的数量,请执行以下操作:

  1. 将来自邻居 10.12.99.2 的 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.0show route table instance-name.inetflow.0instance-name 或者,您可以通过运行 命令来显示跨多个路由实例的所有本地配置的流路由。show route protocol flow

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

操作

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

意义

流路由表示防火墙过滤器的术语。配置流路由时,请指定匹配条件和操作。在匹配属性中,您可以匹配源地址、目标地址和其他限定符,例如端口和协议。对于包含多个匹配条件的单个流路由,所有匹配条件都封装在该路由的前缀字段中。在流路由上发出 命令时,将显示路由的前缀字段以及所有匹配条件。 表示匹配条件为 。show route10.12.44.1,*match destination 10.12.44.1/32 如果输出中的前缀为 ,则表示匹配条件为 。*,10.12.44.1match 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 版本中,通过 BGP 传播 IPv4 的流规范规则作为网络层可达性信息。从 Junos OS 16.1 版开始,IPv6 系列支持流规范功能,并允许传播 IPv6 和 IPv6 VPN 的流量规范规则。

拓扑

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

图 7: 配置 BGP 以承载 IPv6 流路由配置 BGP 以承载 IPv6 流路由

配置

CLI 快速配置

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

路由器 R1

路由器 R2

配置路由器 R2

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置路由器 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 中显示表中的 路由,并验证 BGP 是否已学习流路由。inet6flow

操作

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

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

意义

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

验证 BGP 摘要信息

目的

验证 BGP 配置是否正确。

操作

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

意义

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

验证流验证

目的

显示流路由信息。

操作

在操作模式下,在路由器 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:11:30/128 已接受 88826 个数据包。

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

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

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

  1. 配置设备接口。

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

  3. 配置 MPLS 和 LDP。

  4. 配置 BGP。

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

  1. 按照 BGP 流规范互联网草案 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 社区回复的流量。

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

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

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

使用 nexthop 属性配置旧版流规范重定向到 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 会话的拓扑。

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

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

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

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

变更历史表

是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。

版本
说明
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 到 100000000000]。
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 的路由验证。