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

Mate/Discussion

Gog

GogExtra 的 On=...;

Gog****Extra 必须有一个 On=...; avp,用于说明应从哪种 gop 类型复制这些 avps。

GogIdleTimeout

如果一个 Gog 的 Gops 在一段时间内没有再被分配任何 pdus,则应释放该 Gog。

GogAbsoluteTimeout

Gop 应在其创建后经过一定时间后自动释放自身。

合并具有相同键的 Gogs

每当某个 gog 发生变化,并且它的某些键碰巧与另一个或多个 gog 匹配时,将所有这些 gogs 合并为一个 gog。

Gop

FullStop=

GopDef、GopStop 和 GopExtra 的属性,用于指示一旦 GopStop 到达就应移除该键,这样就不会再有匹配 Gop****Key 的 Pdus 被分配给该 Gop。

预启动的 Gops

✅ 每当一个 Pdu 匹配某个尚未被显式赋予 GopStart 的 Gop 的 GopKey,并且该键已经作为 GogKey 存在时,该 Pdu 应成为一个自动启动的 Gop 的一部分,该 Gop 会自动属于拥有该 GogKey 的 Gog。

待办:这些 Gops 的生命周期应与其所属的 Gog 相同,而不是无限期。

Transform

Transform 的 Mode=Map;

应存在一种映射版本的 transforms,其中一组固定的匹配键通过哈希映射到一组固定的 AVPLs,用于 Inserted 或 Replace 匹配集。对于非常长的转换序列,这将节省大量时间。

Transformation AVP 操作

为 Transform 的 insert/replace 部分创建一组操作。

  • append .operand>str;

  • prepend .operand<str;

  • insert .operand^pos^string;

  • slice .operand[-pos1,pos2-pos3,pos4,pos5-];

  • replace .operand~str1~str2;

  • convert to number and operate .operand(+5,*8,-attr_a); -- (integer only and RPN)

  • "rename" AVP .new$old;

内部功能

avp_subscribe, avp_unsubscribe

用于节省空间并加速 avpl ops 的内部优化。它也能简化内存管理。

  • 使用 hash 保存 avp2strs
  • avp_hash 和 avp_equal

avpl 转字符串以使用静态缓冲区

  • 静态缓冲区应能加快 avpl 键匹配速度

内存管理

应限制 mate 允许使用的内存量;一旦 mate 达到该限制,它就应在创建较新的项目时开始销毁最旧的项目。这对于在长时间运行的 tshark 嗅探中使用 mate 至关重要,但如果在 wireshark 中以交互方式使用,它可能会造成严重问题。

已知 Bug

将会保留的问题

同一个 AVPL 中不能有两个相同的 AVP

这其实并不是一个 BUG。这是最初为了避免 AVPL 匹配操作变得过于复杂而有意作出的选择。这可能会令人厌烦。但事实就是如此。如果不能拥有多个副本是个问题,那么你的配置必须绕过它。

示例变通方法:当两个端口相等且只有一个 port; 被插入 AVPL 时,添加 port=0;。

# transformations stop at the fisrt good match# do nothing (insert an empty avpl) if both ports are defined Action=Transform; Name=Fix_same_port; Mode=Insert; Match=Strict; port; port;# insert a port=0; so that both ports are defined Action=Transform; Name=Fix_same_port; Mode=Insert; Match=Every; port; .port=0;Action=PduTransform; For=xxx_pdu; Name=Fix_same_port;

需要修复的问题

Gog 机制没有被正确重新初始化

它在第一次运行时工作正常,但在后续运行中无法正常工作。

变通方法:重启 wireshark。

✅ 修复:已在 Git commit c3440553 中修复。

当操作数 avpl 为空时,一些 AVPL 操作会导致 wireshark 崩溃

在某些情况下,对空 AVPL 执行操作可能会导致 wireshark 崩溃。

变通方法:避免在配置中将空 AVPLs 作为操作数。(插入一个空 AVPL 可以正常工作)

修复:我们需要能够复现该条件(所用配置和抓包文件)。

一些错误/不完整的 GoG 配置会导致 wireshark 崩溃

如果配置正确,它工作正常。但在某些情况下,你会得到崩溃报告,而不是错误消息。

变通方法:没有已知方法。无论如何你都得修复那个配置,不是吗?

✅ 修复:已在 Git commit c3440553 中修复。

没有 GopStart 的 Gops 可能会被创建,也可能不会

重新初始化后,没有 GopStart 的 Gops 可能会被创建,也可能不会;这似乎以随机方式发生(有些会被创建,有些不会,而且并不总是同一批)。

变通方法:没有已知方法。

修复:尚无。

Imported from https://wiki.wireshark.org/Mate/Discussion on 2020-08-11 23:16:30 UTC

相关 Wireshark Wiki 页面

网络分析技术档案