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 进程的尝试失败。
有关系统日志错误消息的详细信息,请参阅 系统日志浏览器。