摘要
- RFC 3395 把应用动词加入 RMON 协议标识符;这里的“动词”可以是跨越多个数据包和两个方向的事务,而非当前包里直接可读的一条命令。
- 每个包仍须按完整叶节点恰好计数一次。若包内出现多个动词,代理必须自行选一个,因此计数既包含流量,也包含实现的记忆与取舍。
假设两台探针接在同一链路上,收到完全相同的字节,使用完全相同的注册名称,也都遵守规范。人们很自然地期待它们的 GET 计数完全一致。RFC 3395 在一条不起眼的规则里打破了这种期待:一个包若含有多种动词,代理必须选一个;至于怎么选,由实现决定。
这份标准轨 RFC 于 2002 年 9 月发布,用来更新 RFC 2895 的协议标识符参考。RMON 已经能够回答“这里有多少 HTTP、SNMP 或 FTP 流量”,但同一协议中的操作,其成本、风险与性能意义可能截然不同。RFC 3395 提供了共同的应用事务命名方法,却没有创建新的 MIB 模块或管理对象。
原有目录把数据包视为逐层封装。每识别一层,protocolDirID 增加四个八位组,protocolDirParameters 增加一个八位组;完整序列指向一片叶子,而不是孤立地说“这是 TCP”。RFC 3395 把应用动词作为新的协议层追加进去。
它的二进制表示很紧凑:四个八位组,首字节保留为零,后面是按网络字节序排列的 24 位无符号枚举。显式值从 1 到 16,777,215,在同一个父协议下必须唯一,最好紧密分配。参数序列再追加一个零字节;这个参数没有业务含义,只是维持目录结构的一致形状。
枚举零已经有固定用途。每个应用协议都隐含 connect(0),收纳那些没有归入其他动词的会话建立与结束流量,任何注册都不能重新定义它。但 connect 这个名字本身并非全局禁用词:HTTP 示例又把显式 CONNECT 操作登记为 connect(8)。只看名称而丢掉父协议和数值,就会把两个不同证据面混在一起。
VERB-IDENTIFIER 宏把父协议、必需的描述、可选但在存在权威文本时应提供的参考,以及名称—数值列表绑定起来。定义中的名称区分大小写,在同一父协议内必须唯一,并应沿用协议自己的权威术语。这样,两家设备至少能打印相同标签;但标签一致不等于分类过程一致。
SNMP 的响应揭示了最关键的困难。单看一个 Response PDU,探针无法知道它回应的是 Get 还是 GetNext。它必须保存反方向先前出现的请求,再把两者关联。因此,规范示例没有把 Response 和 Report 当作独立动词,而是让它们归入所对应的请求事务。计数器的输入不只是眼前这个包,还包括过去。
TCP 又带来另一种时间问题。一个应用操作可能拆到多个报文段中,探针要跟踪传输流,重组出足够内容,才能做出分类。如果抓包策略本身依赖动词,判断往往在最初几个相关包抵达之后才成立。没有预缓冲,那些早到的包就无法被补回所谓“按操作抓取”的记录。
所以,“动词”并不等于单个 opcode、命令词或 PDU 类型。一个事务可能包含多类消息,甚至跨过多个协议目录条目。FTP 是直观例子:控制连接中的命令与另一个数据连接,可能共同构成真正值得测量的一次操作。动词是监测模型给事务的名字,不是保证出现在每个包里的原始字段。
然而,RMON 记账必须给出清晰结果。每个包只能落入一个完整叶协议封装,并以整个包的长度增加计数,而不是只加上被识别字段的几个字节。当一个包容纳多种动词时,不能把字节平均分到多个桶里;代理必须选一个。
RFC 3395 给了几种可能办法:选第一个、出现次数最多的、占用八位组最多的,或根据协议知识选择“最值得关注”的那个。它没有把任何一种上升为统一算法。不同规则回答不同问题,因此两台合规探针面对同一份抓包,也可能得到不同的动词分布。
FTP、POP3、SNMP、HTTP 与 SMTP 示例让注册方法变得具体,也划清了证据上限。GET 计数不能证明是哪位用户发起请求、是否获得授权、事务是否成功,也不能证明完整负载对探针可见。它只证明某个代理在当时可用的上下文和策略下,把包归入这个叶节点。
安全部分同样没有把细粒度当作无害变化。规范没有增加新的 MIB 操作,却明确指出按动词收集的数据会暴露网络正在使用哪些应用操作,因而可能需要额外保护。“没有新增操作”并不等于“没有新增信息”。
后来,RFC 4502 取代 RFC 2021 成为 RMON-2 MIB 的规范。这个演进能说明制度谱系,却不能证明 RFC 3395 被普遍部署,更不能证明产品在状态表耗尽、丢包、加密或非对称路由下采取同样行为。标准给出可检验的契约,运行实例才给出事实。
Lu Heng 的“最小初始规范”原则解释了这种克制。RFC 固定了互操作真正需要共享的部分:编码、父级、名称、保留零值、能力表达,以及每包只归一片叶子的义务;它把超时、缓存、重组与多动词偏好留给本地工程,避免用一个早期启发式冻结所有协议。
“运行代码优先”则要求人们在信任数字时把生成条件一起带上:探针与解码器版本、状态容量、丢失率、重组规则、预缓冲深度和选择策略。缺少这些溯源信息,共同词汇只能支持比较标签,不能保证比较的是同一种观察。
RFC 3395 的历史意义不是宣告测量不可靠,而是承认测量在产生数值之前已经做了推断。链路提供包,探针构造事务。计数器写着 GET 的那一刻,也悄悄写下了探针记住了什么、等到了什么,以及最后选择相信什么。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
