IS-IS 中的灵活算法,适用于分段路由流量工程
总结 灵活的算法允许 IGP 单独计算网络上基于约束的路径,从而在不使用网络控制器的情况下提供简单的流量工程。对于尚未实施具有完整分段路由的控制器,但仍希望在其网络中利用分段路由的优势的网络,这是一种轻量级解决方案。
下一步
有关配置灵活算法的更多信息,请参阅 IS-IS 用户指南
了解用于分段路由的 IS-IS 灵活算法
从 Junos OS 19.4R1 版开始,您可以通过定义灵活的算法来根据您的需求计算使用不同的参数和链路约束来对网络进行细化切片。例如,您可以定义一个灵活的算法,该算法可计算一个路径以最大程度地减少 IGP 指标,并定义另一种灵活的算法来根据流量工程指标计算路径,从而将网络划分为不同的平面。此功能允许没有控制器的网络使用分段路由配置流量工程,而无需实际实施网络控制器。您可以使用前缀 SID 沿着基于约束的路径引导数据包。您可以通过策略配置为灵活的算法配置前缀 SID。
IGP 协议使用链路指标来计算最佳路径。但是,最佳 IGP 路径可能并不总是某些类型的流量的最佳路径。因此,由于 IGP 指标没有反映流量要求,IGP 基于最短 IGP 指标计算出的最佳路径通常会被流量设计的路径所取代。通常,RSVP-TE 或 SR TE 用于根据附加指标和约束计算路径,以克服此限制。Junos 除了作为 IGP 计算的原始路径之外,还将其安装在转发表中,或者作为 IGP 计算的替代路径。
- 配置灵活算法的优势
- 什么是灵活算法定义 (FAD)?
- 灵活算法的参与
- 使用灵活算法定义配置的网络拓扑
- 灵活的算法 RIB
- BGP 社区和灵活算法
- 灵活算法和灵活算法前缀指标跨 IS-IS 多实例泄露
- 将 BGP-LU 前缀泄露到灵活的算法中
- 将 BGP-CT 前缀泄露到灵活的算法中
- 支持和不支持的功能
配置灵活算法的优势
-
可用于网络核心的分段路由流量工程的轻量级版本。
-
允许您使用分段路由配置流量工程,即使无需安装网络控制器。
-
在不配置 BGP-LS 或静态路径的情况下,为每个切片利用等价多路径 (ECMP) 和 TI-LFA。
-
使用相同的灵活算法定义和约束计算计算 TI-LFA 备份路径。
-
仅使用 IS-IS,无需配置 RSVP 或 LDP,即可充分利用分段路由流量工程。
-
能够基于单个标签调配受约束的主路径。
什么是灵活算法定义 (FAD)?
灵活的算法允许 IGP 根据指定的约束计算其他最佳路径,从而在不使用网络控制器的情况下提供简单的流量工程。这是一种轻量级解决方案,适用于尚未实施具有完全正式分段路由的控制器,但仍希望在其网络中利用分段路由的优势的网络。每个操作员都可以根据自己的要求定义单独的约束或颜色。
要定义灵活的算法,请将语句[edit routing-options]
包含在flex-algorithm id
层次结构级别。为灵活算法定义 (FAD) 分配的标识符范围为 128 到 255。这种灵活的算法可以在网络的一个或多个路由器上定义。灵活的算法会根据以下参数计算最佳路径:
-
Calculation type-SPF 或严格 SPF 是两个可用的计算类型选项。您可以在 FAD 中指定其中一种计算类型。如果要根据特定的本地策略(如流量工程捷径)影响设备上的 SPF 计算,请选择 SPF 计算类型。如果您选择严格 SPF,则本地策略不会影响 SPF 路径的选择。
-
Metric type- IGP 指标或 TE 指标是可用的指标类型选项。您可以根据您的网络需求在 FAD 中指定其中一种指标类型。如果不想对特定链路使用 IGP 指标,可以配置 IS-IS 可用于计算路由的 TE 指标。
-
Priority- 您可以根据您的要求为 FAD 分配优先级,而 IS-IS 会根据您的分配的优先级将特定 FAD 广告优先于其他 FAD 广告。
注意:要使具有链路约束的 FAD 正常工作,所有相关链路都应在 IS-IS 中播发管理颜色,这意味着要么在接口上启用 RSVP,要么
set protocols isis traffic-engineering advertise always
已配置。 -
Set of Link constraints- 您可以在层级为许多协议
[edit protocols mpls admin-groups]
配置管理员组,为单个链路着色。然后,可以将这些admin-groups
定义为include any
,include-all
或在exclude
[edit routing-options flex-algorithm definition admin-groups]
层次结构级别上定义。
我们建议仅在几个路由器上配置灵活的算法定义,以提供冗余并避免冲突。灵活的算法定义在 IGP 中播发为 FAD sub-TLVs
。在超大型网络中,我们不建议配置超过 8 个灵活的算法,因为每个灵活算法都会计算自己的路径,并且可能会导致性能问题超出此范围。
它还建议在配置任何设备以参与该 FAD 之前,先配置特定 ISIS 级别的多个 FAD 服务器。如果是 ISIS L1/L2 节点 (ABR),还建议您同时在 ISIS 级别 1 和级别 2 配置 FAD。如果仅在单个 ABR 上配置一个 FAD,那么如果该 ABR 上的路由进程重新启动,可能会通过 flex 算法路径丢弃流量。因此,拥有多个 ABER 是一个很好的设计实践,每个 ABER 都同时在 ISIS 级别上配置了 FAD。
默认 FAD 使用以下参数:
-
计算类型:spf
-
指标类型:igp 指标
-
优先级:0
-
链路约束:无
在实时网络或飞行中修改灵活的算法定义可能会导致流量中断,直到所有节点融合到新路径上。
灵活算法的参与
您可以配置特定路由器以根据您的要求加入特定灵活的算法。根据灵活的算法定义计算出的路径被各种应用程序使用,每个应用都可能使用自己的特定数据平面通过此类路径转发数据。用于 IS-IS 的分段路由灵活算法子TLV中的每个应用,参与设备必须明确通告其对特定灵活算法的参与。您可以将节点配置为加入某个灵活的算法,前提是节点可以支持该 FAD 中指定的约束。
要配置灵活算法的参与, flex-algorithm
请在层级添加语句 [edit protocols isis source-packet- routing]
。同一设备可以播发 FAD 并加入灵活的算法。
使用灵活算法定义配置的网络拓扑
图 1 显示了示例拓扑,共有 8 个路由器 R0、R1、R2、R3、R4、R5、R6 和 R7。定义 128、129、130 和 135 四种灵活算法,并使用以下表格中列出的管理组进行配置:
Flex 算法定义 (FAD) |
颜色 |
---|---|
128 |
包括任何红色 |
129 |
包括任何绿色 |
130 |
包括任何绿色和蓝色 |
135 |
排除红色 |

图 2 显示了 FAD 128 如何在配置有管理员组红色的任何接口上路由流量。

图 3 显示了 FAD 129 如何在配置有管理员组绿色的任何接口上路由流量。

图 4 显示了 FAD 130 如何在配置了管理员组绿色和蓝色的任何接口上路由流量。

图 5 显示了 FAD 135 如何在未使用管理组红色配置的任何接口上路由流量。

灵活的算法 RIB
对于路由器参与相应灵活算法路由的每个灵活算法,都安装在相应的灵活算法 RIB 组中,也称为路由表。默认情况下,标记的 IS-IS 灵活算法路由安装在 inet.color inet(6)color.0
和 mpls.0
RIB 中。
BGP 社区和灵活算法
灵活的算法可以与颜色相关联。当服务前缀(例如 VPN 服务)携带 BGP 颜色扩展社区时,默认情况下,BGP 服务前缀解析具有相同关联颜色值的 flex-algo 路由。安装在 inet(6)color.0
表中的灵活算法入口路由将具有与路由关联的此颜色值。但是,您可以在层级配置不同的关联颜色值 [edit routing-options flex-algorithm id color color]
。
在灵活的算法中更改相关颜色值可能会导致流量中断。如果在灵活的算法定义中修改颜色,则与该灵活算法相关的所有路由都将从 RIB 中移除,然后再次使用新颜色添加。
灵活算法和灵活算法前缀指标跨 IS-IS 多实例泄露
我们增加了跨内部网关协议 (IGP) 实例读取灵活算法 (flex algo) 前缀分段标识符 (SID) 和灵活算法前缀指标 (FAAM) 的支持。我们还增加了对从其他协议中读取前缀以及通过策略向这些前缀分配 flex algo 前缀 SID 的支持。

在 图 6 所示的示例拓扑中,不同的 IS-IS 域、城域 A、城域 B 和核心构成单分段路由域。对于端到端分段路由 flex algo 路径,节点 02 和 05 必须跨 IGP 实例重新转换 flex algo 前缀-SID 和 FAP。
Flex algo 路由安装在inet(6)color.0
表中。也可将其安装在彩色 RIB 中,例如junos-rti-tc-<color>.inet(6).3
在下方routing-options flex-algorithm <id>
配置语句时use-transport-class
。要支持跨 IGP 实例泄露 flex algo 前缀 SID,必须为该 use-transport-class
flex algo 配置语句。跨 IGP 实例的 flex algo 前缀 SID 泄露是策略驱动的。策略配置示例如下:
[edit policy-options policy-statement name] user@host# show from { igp-instance <x>; (optional) protocol isis; (optional) rib <transport-class-rib>; route-filter 10.10.10.0/24 orlonger; (optional) route-filter 10.20.20.0/24 orlonger; (optional) prefix-segment; (optional) } then { prefix-segment { redistribute; } }
当 FLEX algo 前缀-SID 在 IGP 实例之间泄露时,FAPM 子TLV将使用从导出策略或路由自己的指标派生的指标进行播发。导出策略中定义的指标优先于路由自己的指标。此外,IS-IS 在 mpls.0 表中安装拼接路由,以将传入的 MPLS 流量从一个 IGP 实例拼接到另一个 IGP 实例。
有关如何对多实例 IS-IS 应用导出策略的信息,请参阅 导出。
将 BGP-LU 前缀泄露到灵活的算法中
您可以使用 flex algo 前缀 SID 将 BGP-LU 前缀泄露到 IGP 中。您可以配置中的 prefix-segment
(和 metric
), policy-statement
将 BGP-LU 学习的前缀泄露到 flex algo 中。

例如,在 “了解分段路由的 IS-IS 灵活算法”中显示的拓扑中,IGP 域包括 flex algos 128 和 129。设备 R9 位于 IGP 域之外。无法通过 IGP 域中的 flex algo 访问设备 R9。前往设备 R9 的任何流量都遵循灵活的 algo 路径,直至设备 R5,然后跟随设备 R5 到 R9 链路。
当 flex algo 前缀-SID 从 BGP-LU 泄露到 IGP 实例时,FAPM 子TLV将使用从导出策略或路由自己的指标派生的指标进行播发。导出策略中定义的指标优先于路由自己的指标。此外,IS-IS 在 mpls.0 表中安装拼接路由,以将来自 BGP-LU 的传入 MPLS 流量拼接到 IS-IS。
将 BGP-CT 前缀泄露到灵活的算法中
现在,您可以将 BGP-CT 前缀泄露到 flex algo 中,反之亦然。

例如, 在了解分段路由的 IS-IS 灵活算法 中所示的拓扑包含多个 IS-IS IGP 实例。ISIS-A 具有灵活的 algo,但没有 BGP-CT。在此类部署中,BGP-CT 前缀可能会泄露到 flex algo 中,反之亦然,通过策略配置。
目前,BGP-CT 前缀不支持携带前缀-SID 信息。为前缀配置策略,并在将前缀重新分配到 IS-IS flex algo 的路由器上关联前缀-SID。
当 BGP-CT 泄露 flex algo 前缀-SID 时,FAPM 子TLV将使用从导出策略或路由指标派生的指标进行播发。导出策略中定义的指标对路由指标的优先级更高。此外,IS-IS 在 mpls.0 表中安装拼接路由,将传入的 MPLS 流量从 BGP-CT 拼接到 IS-IS。
支持和不支持的功能
Junos OS 在以下情况下支持灵活算法:
-
支持为不同的灵活算法配置和发布前缀 SID。
-
部分支持互联网草案 draft-ietf-lsr-flex-algo-05.txt IGP 灵活算法
-
支持灵活算法前缀 SID 的级别间 (IS_IS) 泄漏。
Junos OS 不支持以下功能与灵活的算法:
-
灵活算法仅适用于默认单播拓扑,不支持 IS-IS 多拓扑。
-
IS-IS 快捷键和其他 IS-IS 流量工程配置选项不适用于灵活的算法计算
-
不支持前缀和 SID 冲突解决。
-
不支持远程无环路替代功能,因为 TI-LFA 是首选 FRR 计算
-
不支持扩展管理组 (EAG),因为这些组在 IS-IS 中不受支持。