一、 UDF 核心机制UDF 允许用户从报文的任意位置提取连续的2 个字节16 bit作为 ACL 匹配字段。它由三个关键参数控制1.Offset Type基准点类型定义从哪里开始算偏移。如 IPv4 (从IPv4头起)、IPv6、TCP、UDP、L4 等。2.Offset Value偏移值极其重要工具中的单位是“2字节”Word而非1字节。实际字节偏移量 填入的值 × 2。例如 Offset: 50 意味着实际偏移100 字节Offset: 2 意味着实际偏移4 字节。3.Offset Valid有效性标志用于防止报文长度不足畸形包导致越界提取出垃圾数据而产生“假命中”。二、 结合示例 3.3.5 详细解释example 3.3.5 展示了配置 DSCP 重标记和任意偏移设置UDF 槽位定义Index: 8Type: IPv4Offset: 50。实际取数位置为IPv4 头起点 (50 × 2) 字节 第 100 字节取第 100 和 101 字节。ACL 模板引用在上方的 Template 中选择 OFFSET8对应 UDF 索引 8Data 填入 8899Mask 为 FFFF。含义提取出的数据必须严格等于 0x8899。为什么要加 OFFSET[0:15] 且设为 0100此字段是 UDF 的 Offset Valid有效性标志0x0100对应OFFSET8。它确保提取动作合法完成防止短包因长度不够导致提取出乱码从而误匹配。三、 结合 ComboIndex 详细解析ComboIndex “44” 配置这条规则是结合 UDF 实现精准定位的典型核心原理内层标签定位Field 7报文最外层的 TPID 直接写在了 Ethernet 帧头的 Ether Type 字段中所以直接匹配。Field 10该字段使用了底层 EntryAclUdfList 中 Index: 0, Type: L3, Offset: 2 的配置。Type: L3的基准点通常为 MAC 头结束即外层标签起始处。Offset: 2表示偏移 2 × 2 4 字节。外层标签固定占用 4 字节2字节TPID 2字节TCI偏移 4 字节后正好落在内层标签的 TPID 字段上。从而实现了 0x8100 的精确匹配。Field 110001/0001 确保提取有效即报文长度足够。四、 总结与易错点重点笔记1.混淆的单位OFFSET 值是 “字Word” 而非“字节”。一定要乘以 2才是实际字节数。这也是为什么匹配目的端口要填 1跳过2字节匹配内层标签要填 2跳过外层4字节。2.槽位号 vs 偏移量OFFSET8 中的 8 不是偏移量而是底层 UDF 的Index槽位编号。若底层的 Index 填 8ACL 中必须引用 OFFSET8底层没配置的 IndexACL 中引用也是无效的。3.内/外标签区分SPID外层直接看Ether Type字段。TPID内层必须通过UDF穿越外层标签偏移4字节才能提取。4.安全前提在所有涉及 UDF 精确匹配的规则中务必设置 Offset Valid如 OFFSET[0:15] 设为 0001/0001这是防止畸形短包误入规则的最佳实践。