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 计算的原始路径的补充或替换。
- 配置灵活算法的好处
- 什么是灵活算法定义 (FAD)?
- 参与灵活的算法
- 配置了灵活算法定义的网络拓扑
- 灵活的算法 RIB
- BGP 社区和灵活的算法
- 灵活的算法和灵活的算法前缀指标 跨 IS-IS 多实例的泄漏指标
- 将 BGP-LU 前缀泄露到灵活算法中
- 将 BGP-CT 前缀泄露到灵活算法中
- 支持和不支持的功能
配置灵活算法的好处
-
分段路由流量工程的轻量级版本,可在网络核心中使用。
-
即使无需安装网络控制器,也可以使用分段路由配置流量工程。
-
每切片利用等价多路径 (ECMP) 和 TI-LFA,无需配置 BGP-LS 或静态路径。
-
使用相同的灵活算法定义和约束计算计算 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定义为 或[edit routing-options flex-algorithm definition admin-groups]include-allexclude。include any
我们建议仅在少数路由器上配置灵活的算法定义,以提供冗余并避免冲突。灵活的算法定义在 IGP 中公布为 FAD sub-TLVs。在超大型网络中,我们不建议配置超过 8 个灵活算法,因为每个灵活算法都会计算自己的路径,超出这个范围可能会导致性能问题。
它还建议您在配置任何设备参与该 FAD 之前,在特定的 ISIS 级别中配置多个 FAD 服务器。对于 ISIS L1/L2 节点 (ABR),还建议在 ISIS 级别 1 和级别 2 配置 FAD。如果仅在单个 ABR 上配置 FAD,则如果路由进程在该 ABR 上重新启动,则流量可能会通过 Flex 算法路径丢弃。因此,拥有多个 ABR 是一种良好的设计实践,每个 ABR 在两个 ISIS 级别都配置了 FAD。
默认 FAD 具有以下参数:
-
计算类型:SPF
-
指标类型:IGP-度量
-
优先级:0
-
链路限制:无
在实时网络中或动态修改灵活的算法定义可能会导致流量中断,直到所有节点都汇聚到新路径上。
参与灵活的算法
您可以根据需要将特定路由器配置为参与特定灵活的算法。各种应用程序使用基于灵活算法定义计算的路径,每个应用程序可能使用自己的特定数据平面来通过此类路径转发数据。参与的设备必须向分段路由灵活算法子 TLV for IS-IS 中的每个应用明确播发其参与特定灵活算法的情况。您可以将节点配置为参与某种灵活的算法,前提是它可以支持该 FAD 中指定的约束。
要在灵活的算法中配置参与,请在[edit protocols isis source-packet- routing]层次结构级别包含flex-algorithm语句。同一设备可以通告 FAD,也可以参与灵活的算法。
配置了灵活算法定义的网络拓扑
图 1 显示了示例拓扑,有 8 个路由器 R0、R1、R2、R3、R4、R5、R6 和 R7。四种灵活的算法 128、129、130 和 135 被定义并配置了管理组,如下表所示:
| Flex 算法定义 (FAD) |
颜色 |
|---|---|
| 128 |
包括任何红色 |
| 129 |
包括任何绿色 |
| 130 |
包括任何绿色和蓝色 |
| 135 |
排除红色 |
图 2 显示了 FAD 128 如何在配置了管理组 red 的任何接口上路由流量。
的流量
图 3 显示了 FAD 129 如何在配置了管理组绿色的任何接口上路由流量。
图 4 显示了 FAD 130 如何在配置了管理组绿色和蓝色的任何接口上路由流量。
的流量
图 5 显示了 FAD 135 如何在未配置管理组 red 的任何接口上路由流量。
的流量
灵活的算法 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) 和灵活算法前缀指标 (FAPM)。我们还添加了对重新播发来自其他协议的前缀的支持,并通过策略将 Flex 算法前缀 SID 分配给这些前缀。
之间的灵活算法泄漏
在 图 6 所示的示例拓扑中,不同的 IS-IS 域(城域网 A、城域网 B 和核心)构成了单段路由域。对于端到端分段路由 Flex 算法路径,节点 02 和 05 必须跨 IGP 实例重新播发 Flex 算法前缀 SID 和 FAPM。
Flex 算法路由安装在表中inet(6)color.0。它们也可以安装在彩色 RIB 中,例如junos-rti-tc-<color>.inet(6).3在 下routing-options flex-algorithm <id>配置语句时use-transport-class。要支持跨 IGP 实例泄露的 flex 算法前缀 SID,use-transport-class必须为该 flex 算法配置语句。跨 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;
}
}
当 IGP 实例之间泄露 Flex 算法前缀 SID 时,将使用派生自导出策略或路由自身指标的指标来播发 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 算法中。
例如,在 了解用于分段路由的 IS-IS 灵活算法中所示的拓扑中,IGP 域包括 Flex 算法 128 和 129。设备 R9 位于 IGP 域之外。无法通过 IGP 域中的 flex 算法访问设备 R9。发往设备 R9 的任何流量都遵循灵活算法路径直至设备 R5,然后沿着设备 R5 到 R9 链路。
当 Flex 算法前缀 SID 从 BGP-LU 泄露到 IGP 实例时,将使用派生自导出策略或路由自身指标的指标来播发 FAPM 子 TLV。导出策略中定义的指标优先于路由自身的指标。此外,IS-IS 会在 mpls.0 表中安装拼接路由,以拼接从 BGP-LU 到 IS-IS 的传入 MPLS 流量。
将 BGP-CT 前缀泄露到灵活算法中
您现在可以将 BGP-CT 前缀泄露到 flex 算法中,反之亦然。
例如, 了解用于分段路由的 IS-IS 灵活算法 中所示的拓扑由多个 IS-IS IGP 实例组成。ISIS-A 具有弹性算法,但没有 BGP-CT。在此类部署中,BGP-CT 前缀可能会通过策略配置泄露到 Flex 算法中,反之亦然。
目前,BGP-CT 前缀不支持携带前缀 SID 信息。为前缀配置策略,并在路由器上关联前缀 SID,以便将前缀重新分发到 IS-IS Flex 算法中。
当 Flex 算法前缀 SID 从 BGP-CT 泄露时,将使用派生自导出策略或路由指标的指标来播发 FAPM 子 TLV。导出策略中定义的指标优先于路由的指标。此外,IS-IS 会在 mpls.0 表中安装拼接路由,以拼接从 BGP-CT 到 IS-IS 的传入 MPLS 流量。
支持和不支持的功能
Junos OS 在以下场景中支持灵活的算法:
-
支持为不同的灵活算法配置和播发前缀 SID。
-
部分支持 IGP 灵活算法 draft-ietf-lsr-flex-algo-05.txt互联网草案
-
支持灵活算法前缀 SID 的级别间 (IS_IS) 泄露。
Junos OS 不支持以下功能与灵活算法结合使用:
-
灵活的算法仅适用于默认单播拓扑,不支持 IS-IS 多拓扑。
-
IS-IS 快捷方式和其他 IS-IS 流量工程配置选项不适用于灵活的算法计算
-
不支持前缀和 SID 冲突解决。
-
不支持无远程环路替代功能,因为 TI-LFA 是首选的 FRR 计算
-
不支持扩展管理组 (EAG),因为它们在 IS-IS 中不受支持。