Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

Network_Status_Monitoring_Protocol

由于 NFS 远没有许多文档所声称的那样无状态,现实要求 NFS 跟踪由客户端或服务器重启/重新引导等事件导致的状态变化。NSM 协议用于 NFS 版本 2 和 3,尤其是用于通知对等端发生了重新引导,以便清理文件锁。 该协议的目的是允许客户端和/或服务器在服务已重新启动时通知其所有对等端,以便释放或重新声明任何悬挂的锁。这对 NFS 非常重要,因为客户端持有的锁否则永远不会超时,也永远不会自动释放。(针对 NFS 的一种不错的 DoS 攻击是捕获大量 filehandle,然后向服务器发送针对它们的 NLM 请求,并让这些锁一直悬挂,直到有人重新引导服务器)。 对等端重新引导的这些通知由正在重新引导的客户端在服务重新启动时发出,依据是稳定存储上记录的应通知对象信息。通常该协议使用 TCP 作为传输,并且通常只会向那些正在使用 NLM 协议持有文件锁的对等端发送通知。 某些实现不会向仅有处于 blocked 状态(尚未 acquired/granted)的锁的客户端发送通知,因为无论如何,该状态都会在客户端超时后重新发出原始的(blocked)锁请求时解决。其他实现会向它拥有的、曾经与 NLM 通信过的任何和所有对等端发送通知事件,而不管当时是否实际持有任何锁。

如果 NFS 共享以只读方式导出,或者未使用文件锁定,则不需要此协议。

历史

NSM 协议是在 NFS 最初发布之后出现的,当时 SunOS 中加入了字节范围锁定支持,因为锁定更明显需要有状态协议。该协议的目的是在对等端重新启动其服务时通知它们,因此所有已持有的 NLM 锁都将被清除。

协议依赖

  • ONC-RPC:NSM 协议在 ONC-RPC 之上实现,程序号为 100024。NSM 通常在 TCP 之上实现,但也存在使用 UDP 的客户端。

  • Portmap:客户端通常需要 Portmap 服务,以便发现 NSM 服务在哪个端口可用。

Wireshark

NSM dissector 功能完整。Wireshark 和 TShark 中的 Service Response Time 统计功能可以计算该协议的响应时间统计信息。

首选项设置

NSM 协议没有首选项设置。

示例捕获文件

SampleCaptures/nsm.pcap.gz

显示过滤器

完整的 NSM 显示过滤器字段列表可在显示过滤器参考中找到

仅显示 NSM 协议:

 stat

该协议的真实名称是 NSM,但在 wireshark 中,该协议按通常实现此协议的服务 "rpc.statd" 的名称被称为 "stat"。这是一个错误。

XXX should we rename if to NSM ? ronnie

捕获过滤器

捕获时不能直接按 NSM 协议进行过滤。由于 NSM 不使用标准端口,因此也不能按特定端口进行捕获。

外部链接

  • TheOpenGroups NFS 标准,其中描述了 NSM 协议的一部分

工具

  • rpcinfo 可用于 "ping" 服务器上的 NSM 服务。

讨论

Imported from https://wiki.wireshark.org/Network_Status_Monitoring_Protocol on 2020-08-11 23:17:23 UTC

相关 Wireshark Wiki 页面

网络分析技术档案