RIFT 概述和设置
总结 Fat Tree 中的路由 (RIFT) 是一种零运营支出路由协议,可用于以基于 CLOS 的变体和胖树网络拓扑的变体路由数据包。它是链路状态和距离向量技术的混合体,为 IP 交换矩阵提供了多项优势,例如易管理性以及为网络增加弹性。
了解胖树路由 (RIFT) 协议中的 Junos 路由实施
RIFT 协议的优势
RIFT 协议是一种零运营支出路由协议,可实现:
几乎不需要任何必要的配置,使得 IP 交换矩阵的管理更简单。
广泛的跟踪和日志记录功能,可以为 IP 交换矩阵提供扩展优势。
在不环路的情况下最大利用路径,从而在 IP 交换矩阵中增加弹性。
作为距离向量和链路状态协议的混合体,RIFT 协议继承了两种协议类型的优势,从而提供其他优势,例如:
尽可能快地融合。
自动检测拓扑。
架顶式设备上的最小路由。
高度等价多路径 (ECMP)。
RIFT 协议概述
随着 CLOS 和胖树架构(也称为脊叶模型)中基于 IP 转发的数据中心的部署增加,内部网关协议 (IGP) 和 BGP 当前用于处理必要的路由决策。这些协议使用的方法依赖于复杂且成本高昂的运维扩展,无法满足此类 IP 交换矩阵的要求。这是因为 IGP 和 BGP 协议最初是为通用和稀疏的网络拓扑而构建的。胖树中的路由 (RIFT) 克服了这些问题,满足了不断演进的 IP 交换矩阵的需求。
RIFT 协议是一种开放标准协议。它是向叶应用扩散计算的距离向量协议的混合版本,以及使用分布式计算和向主干泛洪的链路状态协议。换言之,启用 RIFT 协议后,设备在北向泛洪其链路状态信息,而除枝叶之外的每台交换机都会生成默认路由(在正常条件下),该路由在南向泛洪。
RIFT 协议的主要功能:
自动构建肥树拓扑。
自动检测 IP 交换矩阵的不当链路。
最大程度地减少数据中心网络各个级别的路由状态信息量。
自动将泛洪量降至最低。
在链路和节点故障上自动分解前缀,以防止黑洞和次优路由。
允许非 ECMP 转发。
根据可用带宽自动将流量重新平衡至主干。
同步可在协议融合后使用的有限密钥价值数据存储;例如,在节点上引导更高级别的功能
有关更多详细信息,请参阅互联网草案 draft-ietf-rift-rift-09(2020 年 5 月 7 日到期) RIFT:胖树中的路由。
Junos 实施 RIFT 协议对网络性能的影响
将 RIFT 协议集成到 Junos OS 会对通用数据中心架构的路由负载和内存利用率产生一定影响。这是因为 RIFT 协议能够使用所有可用核心来提高协议性能。
并非完全支持 RIFT 的动态配置。Junos OS CLI 中的配置更改可能会重新启动 RIFT 协议,从而导致协议重新组合并导致流量丢失。
采用 RIFT 协议的不受支持的功能
RIFT 的 Junos OS 实施符合 https://datatracker.ietf.org/doc/draft-ietf-rift-rift/ RIFT Internet 草案中所述标准,但不支持以下功能:
逻辑系统
SNMP
不中断服务的软件升级 (ISSU) 和不间断软件升级
平滑路由引擎切换 (GRES)
遥测
RIFT 的 Junos OS 实施未实施:
密钥价值存储
水平链路
叶-2 叶支持
负分解
前缀上的移动性属性
接口上的标签绑定
启用 RIFT 协议
RIFT 软件包是一个独立的软件包,瞻博网络的协议实施采用现代内存和安全编程语言执行,旨在最优利用多核处理器架构。
RIFT 协议初始化关联的 RIFT 进程,并通过配置应用全自动配置默认值。它还可在所有以太网接口上自动启用 RIFT。自动 system-id
从系统 MAC 地址派生,并通过 level
协议操作的发现部分自动确定。
总结 RIFT 协议需要接近于零的必要配置。启用 RIFT 协议时,它会自动从 junos-rift
软件包默认值中继承所需配置,使 IP 交换矩阵的管理更简单。
开始之前
启用协议之前,您必须在设备上下载并安装 RIFT 软件包。
要安装 RIFT 协议:
从需要与基准 Junos OS 软件一起运行的软件包中下载特殊
junos-rift
软件包。注意:部署软件包的
junos-rift
基准 Junos OS 软件必须是 64 位版本,从 Junos OS 版本 19.4R1 开始。安装
junos-rift
软件包时,设备必须采用 CLOS 架构进行电缆安装。由于
junos-rift
是单独的软件包,因此可以从 Junos OS 基准包中单独获得许可。此软件包的
junos-rift
许可根据最终用户许可协议授予,并特别强调第 15、16 和第 17 节。
从软件包中提取
junos-rift
软件包并将其下载到/var/tmp
主机设备上的目录中。成功下载软件包后,运行以下命令:
user@host> request system software add package-name
例如:
user@host> request system software add /var/tmp/junos-rift.tgz
要启用 RIFT 协议,必须在设备上激活 RIFT 软件包。您可以使用 request rift package activate
命令激活 RIFT,或者手动加载,并将指定文件中的 RIFT 配置与 CLI 中的当前配置相结合。
Enabling RIFT Using Activate Command
要使用 request rift package activate
命令激活 RIFT 软件包:
junos-rift
软件包后,运行以下命令:
user@host >request rift package activate
激活命令会自动提交 RIFT 配置。
Enabling RIFT Using Load Command
要手动加载 RIFT 配置:
成功安装
junos-rift
软件包后,运行以下命令加载并结合指定文件中的 RIFT 配置与 CLI 中的当前配置:user@host# load merge /etc/config/junos-rift/package-defaults.conf user@host# load merge /etc/config/junos-rift/platform/platform-defaults.conf
platform这里是主机设备,可以是以下任何值mx之一, qfx或 vmx。
提交配置。
user@host> commit
Enabling RIFT in CLOS-based Topology (ZTP Mode)
要激活 CLOS 拓扑上的 RIFT 软件包,需要额外配置。您必须识别拓扑中结构顶部的节点,并配置所有结构上设备以覆盖 auto
默认配置中的级别。
要在基于 CLOS 的拓扑中激活 RIFT 软件包:
覆盖默认配置中的自动级别,可选择手动指定级别。
[edit protocols rift] user@host# set level top-of-fabric
提交附加配置。
user@host> commit
Traceoptions for RIFT
尽管启用 RIFT 协议会自动继承必要的配置,但您还可以将最小追踪配置为可选配置。
要配置 RIFT 的追踪配置:
在 裂谷 语句下指定追踪配置和代理进程参数。
[edit protocols rift] user@host# set traceoptions file size size user@host# set traceoptions file files number user@host# set traceoptions level level user@host# set traceoptions flag flag user@host# set proxy-process traceoptions file size size user@host# set proxy-process traceoptions level level user@host# set proxy-process traceoptions file files number user@host# set proxy-process traceoptions flag flag
例如:
[edit protocols rift] user@host# set traceoptions file size 1000000 user@host# set traceoptions file files 4 user@host# set traceoptions level info user@host# set traceoptions flag node user@host# set proxy-process traceoptions file size 1000000 user@host# set proxy-process traceoptions level info user@host# set proxy-process traceoptions file files 4 user@host# set proxy-process traceoptions flag if-events
Verifying RIFT Configuration
您可以从以下层次结构级别验证 RIFT 协议配置:
[groups rift-defaults]
[interfaces interface-range rift-interfaces]
[protocols rift]
[edit] user@host# show groups rift-defaults protocols { rift { node-id auto; level auto; lie-receive-address { family { inet 224.0.0.120; inet6 ff02::a1f7; } } interface <*> { lie-transmit-address { family { inet 224.0.0.120; inet6 ff02::a1f7; } } bfd-liveness-detection minimum-interval 1000; } } }
[edit] user@host# show interfaces interface-range rift-interfaces member ge-0/0/*; description "Match interfaces that RIFT could use.";
[edit] user@host# show protocols rift apply-groups rift-defaults; interface rift-interfaces;
您还可以查看从软件包中应用 junos-rift
的默认值来验证 RIFT 配置。要执行此操作,请运行 show configuration protocols rift | display inherited
命令。
例如:
user@host> show configuration protocols rift | display inherited ## ## 'auto' was inherited from group 'rift-defaults' ## node-id auto; level auto; ## ## 'lie-receive-address' was inherited from group 'rift-defaults' ## lie-receive-address { ## ## 'family' was inherited from group 'rift-defaults' ## family { ## ## '224.0.0.120' was inherited from group 'rift-defaults' ## inet 224.0.0.120; ## ## 'ff02::a1f7' was inherited from group 'rift-defaults' ## inet6 ff02::a1f7; } } interface ge-0/0/0.1 { ## ## 'lie-transmit-address' was inherited from group 'rift-defaults' ## lie-transmit-address { ## ## 'family' was inherited from group 'rift-defaults' ## family { ## ## '224.0.0.120' was inherited from group 'rift-defaults' ## inet 224.0.0.120; ## ## 'ff02::a1f7' was inherited from group 'rift-defaults' ## inet6 ff02::a1f7; } } ## ## 'bfd-liveness-detection' was inherited from group 'rift-defaults' ## ‘400’ was inherited from group 'rift-defaults' ## bfd-liveness-detection minimum-interval 400; }
表 1 列出了可用于验证 RIFT 协议配置和状态的命令。
命令 |
描述 |
|
检查 RIFT 协议的运行时状态。 |
|
RIFT 协议可用于接受其他协议的策略和命令中。 |
|
查看详细的 RIFT 安装路由。 |
|
清除 RIFT 数据库。 |
|
重新启动 RIFT 协议。 |
有关更多信息,请参阅软件包分配中的常见问题解答文件。
Troubleshooting the RIFT Protocol
除极端情况下外,RIFT 协议不会生成核心文件。它通过广泛的日志记录报告每一次故障,有时还会在出口回溯。RIFT 进程提供可配置的跟踪事件,可使用追踪配置收集。
要排除 RIFT 实施的故障,请参阅:
Forming Adjacency
Problem
RIFT 邻接上下翻动,显示拒绝
Multiple Neighbors
或Remote Uses Our Own SystemID
错误。Solution
在形成点对点邻接的以太网链路上,RIFT 协议不支持两个以上的邻接方,或者节点自己的接口回传。检查并纠正电缆连接。
Undefined Level
Problem
所有交换机均显示未定义级别,不构成三向邻接,但是正在发送和接收链路信息元素 (LIEs)。
Solution
不存在结构顶层配置的可能性。所有结构上设备都必须配置结构顶部级别,以便为 ZTP 提供锚点。
Loopback Address
Problem
无法将回传地址传至 RIFT 中的节点。
Solution
要在结构顶部配置所有环路地址,最简单的方法是在所需的每个节点中配置一个环路地址,然后在北向方向重新分配至 RIFT。为此,需要以下配置:
[edit policy-options] policy-statement lo0-rift { term 0 { from { protocol direct; route-filter loopback-address exact; } then accept; } term default { then reject; } }
[edit protocols rift] export { northbound { lo0-rift; } }
此配置允许每个枝叶对所有其他节点(结构上设备除外)的环路地址进行 ping 处理。
如果结构上设备也应从叶设备访问,反之亦然,则结构顶式回传地址需要暴露在下面的一个级别(即向南)。为此,需要以下配置:
[edit protocols rift] export { southbound { lo0-rift; } }
注意:要使结构上地址传播到所有叶节点,请在层次结构级别下
[edit protocols rift export southbound]
配置allow-rift-routes
选项。System Log Error Messages
RIFT 进程会生成系统日志消息,记录与将 RIFT 协议集成到 Junos OS 相关的错误。要解释系统日志消息,请参阅以下内容:
RIFT_PROXYD_ALREADY_RUNNING
—RIFT 进程的另一个实例已经在运行。RIFT_PROXYD_CONNECT_RIFT
—连接到本地 RIFT 进程的尝试失败。
有关系统日志错误消息的详细信息,请参阅 系统日志浏览器。