了解双向有源测量协议
了解如何使用双向有源测量协议 (TWAMP) 来测量网络中任意两台设备之间的网络性能。
RFC 5357 中描述的双向主动管理协议 (TWAMP) 是单向主动管理协议 (OWAMP) 的扩展,提供双向或往返测量而不是单向功能。双向测量很有帮助,因为往返延迟不需要主机时钟同步,远程支持可能是一个简单的回显功能。但是,用于此目的的 Internet 控制消息协议 (ICMP) 回显请求/回复(由 ping 使用)有几个缺点。TWAMP 定义了一种开放协议,用于使用时间戳以比其他方法更高的精度测量双向或往返指标(也可以考虑处理延迟)。
使用 功能浏览器:双向主动测量协议 来确认平台并发布对特定功能的支持。
查看 特定于平台的 TWAMP 行为 部分,了解与您的平台相关的注意事项。
TWAMP 的优势
-
TWAMP 探针配置可帮助您端到端激活、测试、监控和排除网络故障,而无需使用专用测试设备。
-
与其他方法相比,TWAMP 时间戳提供的双向或往返指标的准确性更高(也可以考虑处理延迟)。
-
TWAMP 通常用于检查服务级别协议 (SLA) 合规性,TWAMP 功能通常用于该上下文。
-
双向测量优于单向测量,因为往返延迟不需要主机时钟同步。这是可能的,因为反射器在数据包中放置了自己的序列号。
建议不要在同一设备上配置 RPM 客户端和 TWAMP 服务器。这可能会导致 RPM 探测结果出现一些问题。
了解双向有源测量协议 (TWAMP)
通常,TWAMP 在两个设备上扮演特定角色的接口之间运行。TWAMP 通常用于检查服务级别协议 (SLA) 合规性,TWAMP 功能通常在这种情况下呈现。TWAMP 使用两个相关协议,在几个定义的元素之间运行:
-
TWAMP-Control — 启动、启动和结束测试会话。TWAMP-Control 协议在 Control-Client 元素和 Server 元素之间运行。
-
TWAMP-Test — 在两个 TWAMP 元素之间交换测试数据包。TWAMP-Test 协议在 Session-Sender 元素和 Session-Reflector 元素之间运行。
这四个元素如 图 1 所示:
的四个要素
虽然四种不同的 TWAMP 设备可以执行 TWAMP 控制(客户端、服务器、会话发送方和会话反射器)这四个逻辑角色,但不同的设备可以扮演不同的角色。常见的实现是在一台设备(称为 TWAMP 控制器或 TWAMP 客户端)中组合控制客户端和会话发送器的角色,在另一台设备(称为 TWAMP 响应方或 TWAMP 服务器)中组合服务器和会话反射器的角色。在这种情况下,每个设备都运行 TWAMP-Control(在控制客户端和服务器之间)和 TWAMP-Test(在 Session-Sender 和 Session-Reflector 之间)协议。
实施后的TWAMP客户端-服务器架构如下所示:
-
TWAMP 客户端
-
Control-Client 设置、启动和停止 TWAMP 测试会话。
-
会话发送方创建 TWAMP 测试数据包,这些数据包发送到 TWAMP 服务器中的会话反射器。
-
-
TWAMP 服务器
-
Session-Reflector 在收到测试数据包时发回测量数据包,但不保留此类信息的记录。
-
服务器管理与 TWAMP 客户端的一个或多个会话,并侦听 TCP 端口上的控制消息。
-
图 2 显示了将这些元素打包到 TWAMP 客户端和 TWAMP 服务器进程中的过程。
TWAMP 灯支持
如 RFC 5357 附录 I 中所定义的 TWAMP Light 是 TWAMP 的无状态版本,其中测试参数是预定义的,而不是协商的。服务器在测试端口上收到的所有测试数据包都会被反射回来,并立即被遗忘。对于支持它们的设备,您还可以配置 IPv6 目标地址,包括 IPv6 链路本地目标地址。
使用 功能浏览器:双向主动测量协议 来确认平台并发布对特定功能的支持。
支持简单的双向有源测量协议 (STAMP)
如 RFC 8762( 简单双向有源测量协议)中所定义的,STAMP 对 TWAMP Light作模式进行了标准化和扩展,该模式在 RFC 5357 的附录 I 中定义, 双向有源测量协议 (TWAMP)。对于支持 STAMP 的设备,符合 STAMP 标准的反射器可确保对称的有效负载大小(根据 RFC 6038),并在无状态或有状态模式下运行,具体取决于反射有效负载中的序列号是从客户端帧复制还是独立生成。有状态反射器可以检测发生丢包的方向。在以前的版本中,我们支持对称有效负载和无状态反射。我们支持有状态反射、完全符合 STAMP 标准以及客户端的单向丢弃值。我们不仅支持 STAMP 客户端的单向丢弃值,还支持 TWAMP 托管模式客户端的单向丢弃值。对于 Junos OS 演化版,STAMP 在层次结构级别配置 [edit services monitoring twamp server light] 。有状态反射通过 stateful-sequence 语句配置。对于服务器,新的默认值 offload-type 是 now pfe-timestamp 而不是 inline-timestamp。
使用 功能浏览器:简单双向主动测量协议 (STAMP) 确认平台和版本支持。
静态路由跟踪
从 Junos OS 演化版 24.4R1 版开始,我们已将对静态路由跟踪的支持扩展到 Junos OS 演化版,并加入了双向主动测量协议 (TWAMP) 测试支持。您可以使用 TWAMP 探针检测链路状态,并根据探测结果更改首选路由状态。跟踪的静态路由可以是 IPv4 或 IPv6,每个 IPv4 和 IPv6 跟踪的静态路由最多支持 16 个下一跃点。您还可以为每个 IPv4 或 IPv6 目标前缀配置度量、路由首选项和标记值。但是,您在 Junos OS 演化版设备上对此功能的配置会有所不同;您在层次结构级别配置[edit routing-options]该sla-tracking语句。您还可以使用其他命令 来show route sla-tracking查看有关这些路由的信息。
分段路由支持配置路径
从支持 SR 的 PTX 路由器的 Junos OS 演化版 24.4R1 和支持该功能的 MX 路由器的 Junos OS 25.4R1 版开始,我们在双向主动测量协议 (TWAMP) 中添加了对 RFC 8402 中定义的分段路由 (SR) 的支持,该协议广泛规定了 SR 架构。我们支持 TWAMP 探针使用两种类型的 SR:
-
SR-MPLS: 使用标签列表,每个标签表示一个段结束节点。
-
SRv6: 使用 RFC 8754 中引入的 4 类 IPv6 路由标头,每个分段终端节点均表示为 IPv6 地址或 IPv6 分段标识符 (SID)。
您可以指定 TWAMP 探针到达反射器的 SR-MPLS 或 SRv6 分段列表。此外,您可以为从反射器到客户端的返回路径指定相同的信息。此返回路径信息通过使用 分段路由网络的简单 TWAMP (STAMP) 扩展 draft-ietf-ippm-stamp-srpm 中建议的扩展嵌入到探针本身中,即返回路径 TLV 及其返回分段列表子 TLV,具体取决于分段路由类型。TWAMP 探针在路由引擎或数据包转发引擎中添加时间戳。
要为 Junos OS Evolved 配置此功能,请在层次结构级别包含source-routing[edit services monitoring twamp client control-connection name test-session session-name] 该语句。要为 Junos OS 配置此功能,请在层次结构级别包含source-routing[edit services rpm twamp client control-connection name test-session session-name] 该语句。
时间戳记
默认情况下,对于大多数平台,时间戳是在数据包转发引擎主机处理器中设置的。为了考虑探查消息通信中的延迟,您可以将探查数据包的时间戳记卸载到数据包转发引擎硬件。这种时间戳称为内联时间戳,其中时间戳记是在数据包离开设备之前在生成器或反射器的硬件中完成的。对此卸载和内联时间戳记的支持因版本、平台和线卡支持而异:
-
Junos OS: 在 Junos OS 25.4R1 之前,您可以通过配置
si-或sp-接口来启用内联时间戳。从 Junos OS 25.4R1 版开始,对于支持该功能的 MX 线卡,您可以使用该offload-type inline-timestamp选项将时间戳记卸载到数据包转发引擎硬件。此内联时间戳记功能还支持 Flex Algo 和 SR-MPLS。如果在 MX 路由器上配置了用于 TWAMP 的接口,则
si-此选项是时间戳的默认选项。要调试接口实施,si-需要配置 或none选项pfe-timestamp。您可以在以下层级之一配置该
offload-type (inline-timestamp | none | pfe-timestamp)语句:[edit services rpm twamp client control-connection name test-session name]、[edit services rpm twamp server]或[edit services rpm twamp server light]。 -
Junos OS 演化版: 时间戳由 IPv4 流量的路由引擎或数据包转发引擎设置。对于 IPv6 流量,时间戳仅由路由引擎设置。对于 IPv6 流量,从 Junos OS 演化版 22.3R1 开始,我们支持数据包转发引擎时间戳。在 Junos OS 演化版 22.3R1 之前,对于 IPv6 流量,
offload-type层次结构级别的[edit services monitoring twamp client control-connection name test-session name]语句应配置为none。从受支持设备的 Junos OS 演化版 22.4R1 开始,您可以配置inline-timestamping该offload-type语句的选项来启用硬件内联设置的时间戳。从适用于服务器的 Junos OS 演化版 23.4R1 版开始,该offload-type语句的默认设置现在pfe-timestampinline-timestamp是 。从 Junos OS 演化版 25.4R1 开始,内联时间戳记功能还支持 Flex Algo 和 SR-MPLS。
Junos OS Evolved 在 TWAMP 支持方面的差异
Junos OS Evolved 对 TWAMP 的支持仅限于以下内容:
-
IPv4 和 IPv6 流量仅用于控制会话和测试会话。从 Junos OS 演化版 21.4R1 版开始,客户端列表、控制连接和测试会话支持 IPv6 源地址和目标地址(链路本地地址除外)。
-
探针统计和历史记录
-
控制和测试会话状态
-
测试会话探针的生成和接收以及反射
-
仅通过系统日志消息和 SNMP 陷阱进行错误报告
-
仅限未验证模式
Junos OS 演化版对 TWAMP 的支持还包括一些 Junos OS 中未包含的功能:
-
从 Junos OS 演化版 23.4R1 版开始,我们支持 RFC 8762, 即简单双向主动测量协议 (STAMP)。RFC 8762 对 TWAMP Light作模式进行了标准化和扩展,该模式在 RFC 5357 的附录 I 中定义,即双 向主动测量协议 (TWAMP)。有关更多信息,请参阅 简单双向有源测量协议 (STAMP) 支持。
-
从 Junos OS 演化版 24.4R1 版开始,对于支持此功能的设备,我们支持使用 TWAMP 进行静态路由跟踪。更多信息,请参阅 静态路由跟踪 。
特定于平台的 TWAMP 行为
使用 功能浏览器:双向主动测量协议 来确认平台并发布对特定功能的支持。
使用下表查看平台的特定于平台的行为。
| 平台 | 差异 |
|---|---|
| ACX 系列 |
|
| EX 系列 |
控制客户端和会话发送方(TWAMP 客户端)都驻留在同一瞻博网络路由器上。但是,TWAMP 客户端不要求服务器和会话反射器位于同一系统上。因此,瞻博网络 TWAMP 客户端能够与第三方服务器实现配合使用。 |
| MX 系列 |
|
| PTX 系列 |
|
| QFX10000 系列 |
控制客户端和会话发送方(TWAMP 客户端)都驻留在同一瞻博网络路由器上。但是,TWAMP 客户端不要求服务器和会话反射器位于同一系统上。因此,瞻博网络 TWAMP 客户端能够与第三方服务器实现配合使用。 |
| QFX5000 系列(Junos OS演化版) |
对于 Junos OS 演化版,TWAMP 在层次结构级别进行 |
| SRX 系列(SRX300、SRX320、SRX340、SRX345、SRX550M、SRX1500、SRX4100 和 SRX4200 设备和vSRX 虚拟防火墙实例) |
|
对于 MX 系列,下表显示了 RPM 客户端和服务器支持、TWAMP 客户端(带有控制组件)和 TWAMP 服务器(带有响应方组件)支持以及执行时间戳的硬件之间的关系。
| TWAMP 功能支持 |
路由引擎时间戳 |
MS-PIC/MS-DPC 时间戳 |
MS-MIC/MS-MPC 时间戳 |
数据包转发引擎(微内核)时间戳 |
数据包转发引擎 (LU) 时间戳( |
| RPM 客户端 |
是的 |
是的 |
是的 |
是的 |
不 |
| RPM 服务器 |
是的 |
是的 |
是的 |
是的 |
不 |
| TWAMP 客户端 |
不 |
不 |
不 |
是的 |
是的 |
| TWAMP 服务器 |
不 |
是的 |
不 |
是(无需响应器配置) |
是的 |
对服务接口(sp-、 ms-si-和接口)的支持略有不同。
表 3 提供了有关 MX 系列 TWAMP 的信息,以及 MPC、MS-MIC/MPC 和内联上的相关时间戳支持:
| 功能 |
角色 |
IP 版本 |
支持(是/否) |
时间戳内联 |
MPC 上的时间戳(硬件时间戳) |
MPC 上的时间戳(si 接口) |
MS-MIC/MPC 上的时间戳(委托探针) |
|---|---|---|---|---|---|---|---|
| TWAMP |
托管客户端 |
IPv4 |
Y |
N |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |
| IPv6 |
N |
N |
N |
N |
N |
||
| 托管服务器 |
IPv4 |
Y |
N |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |
|
| IPv6 |
N |
N |
N |
N |
N |
| 功能 |
角色 |
IP 版本 |
支持(是/否) |
时间戳内联 |
MPC 上的时间戳(硬件时间戳) |
MPC 上的时间戳(si 接口) |
MS-MIC/MPC 上的时间戳(委托探针) |
|---|---|---|---|---|---|---|---|
| TWAMP |
轻客户端 |
IPv4 |
Y |
Y(微秒)(从 25.4R1 版开始) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |
| IPv6 |
Y |
Y(微秒)(从 25.4R1 版开始) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |
||
| 轻型服务器 |
IPv4 |
Y |
Y(微秒)(从 25.4R1 版开始) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |
|
| IPv6 |
Y |
Y(微秒)(从 25.4R1 版开始) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
Y(微秒) 最多 1000 个探头 |
N |