Appearance
Appearance
本页是 MATE 配置语法的参考页,用来查 Attribute/Value Pair、AVPL 匹配规则,以及 Pdu、Gop、Gog、Settings、Debug、Include 等配置块的具体子句。
| 需求 | 应读章节 | 注意点 |
|---|---|---|
| 判断一个 AVP 条件为什么匹配或不匹配 | 属性值对、属性/值对列表(AVPL) | 配置中的 AVP 可能带运算符;运行时提取出的 AVP 通常只是名称和值。 |
| 写 Pdu、Gop、Gog 配置块 | 配置 AVPL | Pdu 负责从帧中提取字段;Gop 负责把 Pdu 分组;Gog 负责把 Gop 再关联起来。 |
| 调整匹配、合并或改写属性 | AVPL 之间的操作、Transforms | Match、Merge、Transform 的作用层级不同,不要混作同一种过滤语法。 |
| 排查 MATE 输出或加载配置 | 调试内容、Action=Include | 调试级别会影响输出量;Include 只说明配置包含方式。 |
| 章节 | 内容 |
|---|---|
| 属性值对 | AVP 的名称、值、运算符,以及各类 AVP 运算符示例。 |
| 属性/值对列表(AVPL) | Loose、Every、Strict Match,AVPL Merge,以及 Transform 的基础规则。 |
| 配置 AVPL | Pdu、Gop、Gog、Settings、Debug、Include 等配置动作和子句。 |
MATE 几乎在所有地方都使用 AVP:既用于保存它从帧的树中提取的数据,也用于保存配置元素。
这些“对”(实际上是元组)由名称、值以及在配置 AVP 的情况下的运算符组成。名称和值都是字符串。带有非 = 运算符的 AVP 只在配置中使用,并在分析阶段用于匹配 Pdus、GoPs 和 GoGs 的 AVP。
名称是一个字符串,用于引用一类 AVP。除非两个属性的名称完全相同,否则它们不会匹配。首字母大写的名称保留给关键字使用(如果你愿意,也可以把它们用于自己的元素,但我认为通常不是这种情况)。MATE 属性名可以像 dissector 提供的协议字段名一样用于 Wireshark 的显示过滤器,但它们并不只是对协议字段的引用(或别名)。
值是一个字符串。它要么在配置中设置(对于配置 AVP),要么由 MATE 在从 dissection tree 中提取感兴趣字段和/或后续操作这些字段时设置。从字段提取的值使用与它们在过滤器字符串中相同的表示形式。
目前只定义了匹配运算符(计划(重新)添加 transform 属性,但在此之前还需要解决一些内部问题)。匹配操作始终在两个操作数之间执行:配置中声明的某个 AVP 的值,以及从数据包数据中提取的某个 AVP(或多个同名 AVP)的值(称为“数据 AVP”)。不能将数据 AVP 彼此匹配。
已定义的匹配运算符包括:
Equal= 测试相等性,也就是说:要么值字符串完全相同,要么匹配失败。
Not Equal! 仅当值字符串不相等时才匹配。
One Of{} 如果列出的某个值字符串等于数据 AVP 的字符串,则匹配。花括号内列表的各个条目使用 | 字符分隔。
Starts With^ 如果配置值字符串匹配数据 AVP 值字符串的开头字符,则匹配
Ends WIth$ 如果配置值字符串匹配数据 AVP 值字符串的结尾字符,则匹配
Contains~ 如果配置值字符串匹配数据 AVP 值字符串中的一个子串,则匹配
Lower Than< 如果数据 AVP 的值字符串在语义上低于配置值字符串,则匹配
Higher Than> 如果数据 AVP 的值字符串在语义上高于配置值字符串,则匹配
Exists?(可以省略)如果 AVP 名称匹配,则无论值字符串是什么都会匹配
此运算符测试运算符和操作数 AVP 的值是否相等。
attrib=aaa 匹配 attrib=aaa
attrib=aaa 不匹配 attrib=bbb
如果两个 AVP 的值字符串不相等,此运算符会匹配。
attrib=aaa 匹配 attrib!bbb
attrib=aaa 不匹配 attrib!aaa
如果数据 AVP 值等于 "one of" AVP 中列出的某个值,则 "one of" 运算符会匹配。
attrib=1 匹配 attrib
attrib=2 匹配 attrib
attrib=4 不匹配 attrib
如果数据 AVP 值的开头字符与配置 AVP 值相同,则 "starts with" 运算符会匹配。
attrib=abcd 匹配 attrib^abc
attrib=abc 匹配 attrib^abc
attrib=ab 不匹配 attrib^abc
attrib=abcd 不匹配 attrib^bcd
attrib=abc 不匹配 attrib^abcd
如果数据 AVP 值的最后若干字节等于配置 AVP 值,则 ends with 运算符会匹配。
attrib=wxyz 匹配 attrib$xyz
attrib=yz 不匹配 attrib$xyz
attrib=abc...wxyz 不匹配 attrib$abc
如果数据 AVP 值包含与配置 AVP 值相同的字符串,则 "contains" 运算符会匹配。
attrib=abcde 匹配 attrib~bcd
attrib=abcde 匹配 attrib~abc
attrib=abcde 匹配 attrib~cde
attrib=abcde 不匹配 attrib~xyz
如果数据 AVP 值在语义上低于配置 AVP 值,则 "lower than" 运算符会匹配。
attrib=abc 匹配 attrib<bcd
attrib=1 匹配 attrib<2
但请注意:attrib=10 不匹配 attrib<9
attrib=bcd 不匹配 attrib<abc
attrib=bcd 不匹配 attrib<bcd
它应该检查这些值是否为数字,并按数值进行比较
如果数据 AVP 值在语义上高于配置 AVP 值,则 "higher than" 运算符会匹配。
attrib=bcd 匹配 attrib>abc
attrib=3 匹配 attrib>2
但请注意:attrib=9 不匹配 attrib>10
attrib=abc 不匹配 attrib>bcd
attrib=abc 不匹配 attrib>abc
它应该检查这些值是否为数字,并按数值进行比较
只要两个操作数具有相同名称,exists 运算符总是会匹配。
attrib=abc 匹配 attrib?
attrib=abc 匹配 attrib(这只是前一个示例的另一种写法)
显然 attrib=abc 不匹配 other_attrib?
Pdus、GoPs 和 GoGs 使用一个 AVPL 来包含追踪信息。AVPL 是一个未排序的 AVP 集合,可以与其他 AVPL 进行匹配。
可以在 AVPL 之间执行三种类型的匹配操作。Pdu/GoP/GoG 的 AVPL 始终是操作数之一;AVPL 运算符(匹配类型)和第二个操作数 AVPL 始终来自配置。
请注意,可以为配置 AVPL 中的每个 AVP 指定不同的 AVP 匹配运算符。
AVPL 匹配操作会返回一个结果 AVPL。在 Transforms 中,结果 AVPL 可以被另一个 AVPL 替换。替换意味着现有数据 AVP 会被丢弃,而配置中的替换 AVPL 会被 Merge 到 Pdu/GoP/GoG 的数据 AVPL 中。
Loose Match:如果两个操作数 AVPL 中至少有一个 AVP 匹配,则匹配成功。如果匹配成功,它会返回一个结果 AVPL,其中包含数据 AVPL 中与配置 AVP 匹配的所有 AVP。
"Every" Match:如果配置 AVPL 中没有任何 AVP 在数据 AVPL 中匹配失败,则匹配成功,即使并非所有配置 AVP 都有匹配项。如果匹配成功,它会返回一个结果 AVPL,其中包含数据 AVPL 中与配置 AVPL 中某个 AVP 匹配的所有 AVP。
Strict Match:当且仅当配置 AVPL 中的每个 AVP 在数据 AVPL 中至少有一个匹配项时,才匹配成功。如果匹配成功,它会返回一个结果 AVPL,其中包含数据 AVPL 中那些匹配的 AVP。
如果至少一个数据 AVP 匹配至少一个配置 AVP,则 AVPL 之间的 loose match 成功。其结果 AVPL 包含所有匹配的数据 AVP。
Loose match 用于针对 Pdu 的 AVPL 的 Extra 操作,以便将结果合并到 Gop 的 AVPL;也用于针对 Gop 的 AVPL,以便将结果合并到 Gog 的 AVPL。它们也可以用于 Criteria 和 Transforms。
⚠️ 截至当前版本(2.0.1),Loose Match 并未按此处描述的方式工作,请参见 Bug 12184。该 bug 实际影响的只有在 Transforms 和 Criteria 中的使用。
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Loose (attr_a?, attr_c?) ==> (attr_a=aaa, attr_c=xxx)
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Loose (attr_a?, attr_c=ccc) ==> (attr_a=aaa)
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Loose (attr_a=xxx; attr_c=ccc) ==> No Match!
如果配置中的 AVP 只要在数据 AVPL 中有对应项就没有任何匹配失败,则 AVPL 之间的 "every" match 成功。其结果 AVPL 包含所有匹配的数据 AVP。
这些只能用于 Criteria 和 Transforms。
⚠️ 截至当前版本(2.0.1),Every Match 并未按此处描述的方式工作,请参见 Bug 12184
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Every (attr_a?, attr_c?) ==> (attr_a=aaa, attr_c=xxx)
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Every (attr_a?, attr_c?, attr_d=ddd) ==> (attr_a=aaa, attr_c=xxx)
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Every (attr_a?, attr_c=ccc) ==> No Match!
(attr_a=aaa; attr_b=bbb; attr_c=xxx) Match Every (attr_a=xxx, attr_c=ccc) ==> No Match!
当且仅当配置 AVPL 中的每个 AVP 在数据 AVPL 中至少有一个对应项,并且没有任何 AVP 匹配失败时,AVPL 之间的 Strict match 成功。结果 AVPL 包含所有匹配的数据 AVP。
这些用于 Gop key(key AVPL)和 Pdu AVPL 之间。它们也可以用于 Criteria 和 Transforms。
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Strict (attr_a?, attr_c=xxx) ==> (attr_a=aaa, attr_c=xxx)
(attr_a=aaa, attr_b=bbb, attr_c=xxx, attr_c=yyy) Match Strict (attr_a?, attr_c?) ==> (attr_a=aaa, attr_c=xxx, attr_c=yyy)
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Strict (attr_a?, attr_c=ccc) ==> No Match!
(attr_a=aaa, attr_b=bbb, attr_c=xxx) Match Strict (attr_a?, attr_c?, attr_d?) ==> No Match!
Extra match 的结果与 Gop 或 Gog 的 AVPL 之间,
Transform match 的结果与 Pdu/Gop 的 AVPL 之间。如果 Match 子句指定的操作为 Replace,则在将 modify_avpl 合并进去之前,会先从该项的 AVPL 中移除匹配结果 AVPL。
(attr_a=aaa, attr_b=bbb) Merge (attr_a=aaa, attr_c=xxx) 前者变为 (attr_a=aaa, attr_b=bbb, attr_c=xxx)
(attr_a=aaa, attr_b=bbb) Merge (attr_a=aaa, attr_a=xxx) 前者变为 (attr_a=aaa, attr_a=xxx, attr_b=bbb)
(attr_a=aaa, attr_b=bbb) Merge (attr_c=xxx, attr_d=ddd) 前者变为 (attr_a=aaa, attr_b=bbb, attr_c=xxx, attr_d=ddd)
Transform 是一系列 Match 规则,后面可选地跟随一条说明,说明如何使用额外的 AVPL 修改匹配结果。这种修改可以是 Insert(merge)或 Replace。语法如下:
Transform name { Match [Strict|Every|Loose] match_avpl [[Insert|Replace] modify_avpl] ; // may occur multiple times, at least once };有关 Transforms 示例,请查看 Manual 页面。
TODO:把示例迁移到这里?
Transform 内部的 Match 规则列表按从上到下处理;一旦某条 Match 规则成功,或所有规则都尝试失败,处理就会结束。
Transforms 可以作为辅助工具,在某个项继续被处理之前操作该项的 AVPL。项声明可以包含一个 Transform 子句,用于指示一个此前声明的 Transforms 列表。无论单个 transform 成功还是失败,该列表始终会按给定顺序完整执行,也就是从左到右。
在 MATE 配置文件中,Transform 必须在声明任何使用它的项之前声明。
以下配置 AVPL 处理 PDU 创建和数据提取。
在抓包的每个帧中,MATE 会按照其配置中声明出现的顺序查找源 proto_name 的 PDU,并会从该帧中创建它能够创建的每一种类型的 Pdu,除非明确指示某种 Pdu 类型是该帧中最后要查找的类型。如果对给定类型这样指示,MATE 会提取它在该帧中找到的该类型以及此前声明类型的所有 Pdu,但不会提取后续声明的类型。
Pdu 的完整声明如下所示;各个子句的强制顺序如图所示。
Pdu name Proto proto_name Transport proto1[/proto2/proto3[/...]]] { Payload proto; //optional, no default value Extract attribute From proto.field ; //may occur multiple times, at least once Transform (transform1[, transform2[, ...]]); //optional Criteria [{Accept|Reject}] [{Strict|Every|Loose} match_avpl]; DropUnassigned {true|false}; //optional, default=false DiscardPduData {true|false}; //optional, default=false LastExtracted {true|false}; //optional, default=false };名称是 Pdu 声明的必需属性。它可以任意选择,但每个名称在 MATE 配置中只能使用一次,不论它用于哪一类项。该名称用于区分不同类型的 Pdus、Gops 和 Gogs。该名称也会作为 MATE 创建的、与此类 Pdu 相关的可过滤字段名的一部分。
不过,多个 Pdu 声明可以共享同一个名称。在这种情况下,只要每个源 PDU 匹配它们的 Proto、Transport 和 Payload 子句,它们都会从该源 PDU 创建出来,而它们声明的主体可以彼此完全不同。结合 Accept(或 Reject)子句,当需要根据其他源字段的内容(或仅仅是存在性)从不同源字段集合构建 Pdu 的 AVPL 时,此功能很有用。
帧中协议 proto_name PDU 的每个实例都会生成一个 Pdu,其中包含从 proto_name 范围内和/或 Transport 列表指定的底层协议范围内字段提取的 AVP。这是 Pdu 声明的必需属性。proto_name 是 Wireshark 显示过滤器中使用的协议名称。
Pdu 的 Proto,以及由 / 分隔的协议 Transport 列表,会告诉 MATE 帧中的哪些字段可以进入 Pdu 的 AVPL。为了让 MATE 从帧的协议树中提取一个属性,该字段在帧的十六进制显示中所代表的区域必须位于 Proto 或其相关 Transports 的区域内。Transports 会按照给定顺序,从协议区域向后移动来选择。
Proto http Transport tcp/ip 的行为符合你的预期——它选择当前 http 范围之前最近的 tcp 范围,以及该 tcp 范围之前最近的 ip 范围。如果在最近的 ip 范围之前还有另一个 ip 范围(例如在 IP 隧道情况下),那个范围不会被选中。Transport tcp/ip/ip 从“逻辑上”应当也选择封装 IP 头,但目前还不能工作。
一旦我们选择了 Proto 和 Transport 范围,MATE 就会获取属于这些范围的协议字段,而这些字段的提取是在该 Pdu 类型的 Extract 子句中声明的。Transport 列表也是必需的;如果你实际上不想使用任何传输协议,请使用 Transport mate。(这在 0.10.9 之前不能工作。)
除了 Pdu 的 Proto 及其 Transport 协议之外,还有一个 Payload 属性,用于告诉 MATE 应从 Proto 的哪些 payload 范围中提取帧字段到 Pdu 中。为了从帧的树中提取一个属性,该字段在十六进制显示中高亮的区域必须位于 Proto 相关 payload 的区域内。Payloads 会按照给定顺序,从协议区域向前移动来选择。Proto http Transport tcp/ip Payload mmse 会选择当前 http 范围之后的第一个 mmse 范围。一旦我们选择了 Payload 范围,MATE 就会获取属于这些范围的协议字段,而这些字段的提取是在该 Pdu 类型的 Extract 子句中声明的。
每个 Extract 子句都会告诉 MATE 要将哪个协议字段值提取为 AVP 值,以及要使用什么字符串作为 AVP 名称。协议字段通过 Wireshark 显示过滤器中使用的名称来引用。如果帧中有多个这样的协议字段,则满足上述条件的每个实例都会被提取到自己的 AVP 中。AVP 名称可以任意选择,但为了在分析后续阶段匹配原本来自不同 Pdu 的值(例如 DNS 查询中的 hostname 和 HTTP GET 请求中的 hostname),必须为它们分配相同的 AVP 名称,并且 dissector 必须以相同格式提供字段值(但情况并不总是如此)。
Transform 子句指定一个此前声明的 Transforms 列表,在所有协议字段都被提取到 Pdu 的 AVPL 后对其执行。该列表始终从左到右完整执行。相反,每个单独 Transform 内的 Match 子句列表只执行到第一个匹配成功为止。
此子句告诉 MATE 是否将该 Pdu 用于分析。它指定一个 match AVPL、一个 AVPL 匹配类型(Strict、Every 或 Loose),以及在匹配成功时要执行的动作(Accept 或 Reject)。一旦每个属性都被提取并且可能的 transform 列表已被执行,如果存在 Criteria 子句,则会将 Pdu 的 AVPL 与 match AVPL 进行匹配;如果匹配成功,则执行指定动作,即接受或拒绝该 Pdu。如果省略相应关键字,默认行为分别为 Strict 和 Accept。因此,如果省略该子句,则接受所有 Pdu。
如果设置为 TRUE,当 MATE 无法将 Pdu 分配给 Gop 时,会销毁该 Pdu。如果设置为 FALSE(未给出时的默认值),MATE 会保留它们。
如果设置为 TRUE,MATE 会在分析 Pdu 的 AVPL 并最终从中提取一些 AVP 到 Gop 的 AVPL 后删除该 Pdu 的 AVPL。这对于节省内存很有用(MATE 会使用大量内存)。如果设置为 FALSE(未给出时的默认值),MATE 会保留 Pdu 属性。
如果设置为 FALSE(未给出时的默认值),MATE 会继续在该帧中查找其他类型的 Pdu。如果设置为 TRUE,它不会尝试从当前帧创建其他类型的 Pdu,但仍会继续尝试当前类型。
声明一个 Gop 类型及其预匹配候选 key。
Gop name On pduname Match key { Start match_avpl; // optional Stop match_avpl; // optional Extra match_avpl; // optional Transform transform_list; // optional Expiration time; // optional IdleTimeout time; // optional Lifetime time; // optional DropUnassigned [TRUE|FALSE]; //optional ShowTree [NoTree|PduTree|FrameTree|BasicTree]; //optional ShowTimes [TRUE|FALSE]; //optional, default TRUE };名称是 Gop 声明的必需属性。它可以任意选择,但每个名称在 MATE 配置中只能使用一次,不论它用于哪一类项。该名称用于区分不同类型的 Pdus、Gops 和 Gogs。该名称也会作为 MATE 创建的、与此类 Gop 相关的可过滤字段名的一部分。
此类型的 Gop 应当分组的 Pdus 名称。这是必需项。
定义哪些 AVP 组成 Gop 的 AVPL 的 key 部分(Gop 的 key AVPL,或简称 Gop 的 key)。所有匹配活动 Gop 的 key AVPL 的 Pdu 都会被分配给该 Gop;如果某个 Pdu 包含其属性名列在 Gop 的 key AVPL 中的 AVP,但它们不严格匹配任何活动 Gop 的 key AVPL,则会创建一个新的 Gop(除非给出了 Start 子句)。当 Gop 被创建时,其 key AVPL 的元素会从创建它的 Pdu 复制而来。
如果给出,它会告诉 MATE:除了匹配 Gop 的 key 之外,Pdu 的 AVPL 还必须匹配什么 match_avpl 才能启动一个 Gop。如果未给出,任何 AVPL 匹配 Gop 的 Key AVPL 的 Pdu 都会作为 Gop 的开始。与 match_avpl 匹配的 Pdu AVP 不会自动复制到 Gop 的 AVPL 中。
如果给出,它会告诉 MATE:除了匹配 Gop 的 key 之外,Pdu 的 AVPL 还必须匹配什么 match_avpl 才能停止一个 Gop。如果省略,Gop 会被“自动停止”——也就是说,Gop 在创建后立即被标记为已停止。与 match_avpl 匹配的 Pdu AVP 不会自动复制到 Gop 的 AVPL 中。
如果给出,会告诉 MATE 除了 Gop 的 key 之外,还要将 Pdu 的 AVPL 中哪些 AVP 复制到 Gop 的 AVPL 中。
Transform 子句指定一个此前声明的 Transforms 列表,在由 key AVPL 和 Extra 子句的 match_avpl 指定的、来自每个新 Pdu 的 AVP 被合并到 Gop 的 AVPL 之后,对该 AVPL 执行。该列表始终从左到右完整执行。相反,每个单独 Transform 内的 Match 子句列表只执行到第一个匹配成功为止。
Gop 被 Stopped 后的一个(浮点)秒数,在此期间,进一步匹配已 Stopped Gop 的 key 但不匹配 Start 条件的 Pdu 仍会被分配给该 Gop。默认值零的实际含义是无穷大,因为它会禁用此计时器,因此所有匹配已 Stopped Gop 的 key 的 Pdu 都会被分配给该 Gop,除非它们匹配 Start 条件。
从分配给该 Gop 的最后一个 Pdu 起经过的一个(浮点)秒数,超过该时间后该 Gop 将被视为已释放。默认值零的实际含义是无穷大,因为它会禁用此计时器,因此即使没有 Pdu 到达,该 Gop 也不会被释放——除非 Lifetime 计时器过期。
Gop Start 后的一个(浮点)秒数,超过该时间后,无论其他情况如何,该 Gop 都会被视为已释放。默认值零的实际含义是无穷大。
是否丢弃尚未分配给任何 Gog 的 Gop。如果为 TRUE,Gop 会在创建后立即被丢弃。如果为 FALSE(默认值),未分配的 Gop 会被保留。将其设置为 TRUE 有助于节省内存并加快过滤速度。
控制 Gop 的 Pdus 子树显示:
NoTree:完全抑制树的显示
PduTree:显示树,并按 Pdu Id 显示 Pdus
FrameTree:显示树,并按 Pdus 所在的帧号显示 Pdus
BasicTree:需要研究
是否显示 Gop 的 times 子树。如果为 TRUE(默认值),带有计时器的子树会添加到 Gop 的树中。如果为 FALSE,则抑制该子树。
声明一个 Gog 类型及其预匹配候选 key。
Gog name { Member gopname (key); // mandatory, at least one Extra match_avpl; // optional Transform transform_list; // optional Expiration time; // optional, default 2.0 GopTree [NoTree|PduTree|FrameTree|BasicTree]; // optional ShowTimes [TRUE|FALSE]; // optional, default TRUE };名称是 Gog 声明的必需属性。它可以任意选择,但每个名称在 MATE 配置中只能使用一次,不论它用于哪一类项。该名称用于区分不同类型的 Pdus、Gops 和 Gogs。该名称也会作为 MATE 创建的、与此类 Gop 相关的可过滤字段名的一部分。
为每个 Gop 类型 gopname 单独定义 Gog 的 key AVPL。所有 gopname 类型的 Gop,只要其 key AVPL 匹配某个活动 Gog 的相应 key AVPL,都会被分配给该 Gog;如果某个 Gop 包含其属性名列在 Gog 相应 key AVPL 中的 AVP,但它们不严格匹配任何活动 Gog 的 key AVPL,则会创建一个新的 Gog。当 Gog 被创建时,其 key AVPL 的元素会从创建它的 Gop 复制而来。
虽然 key AVPL 是针对每个 Member gopname 分别指定的,但在大多数情况下它们是相同的,因为 Gog 的真正目的就是把由不同类型 Pdu 组成的 Gop 分组在一起。
如果给出,会告诉 MATE 除了 Gog 的 key 之外,还要从任一 Gop 的 AVPL 中复制哪些 AVP 到 Gog 的 AVPL 中。
在分配给某个 Gog 的所有 Gop 都释放后的一个(浮点)秒数,在此期间,匹配任一 session key 的新 Gop 仍应分配给现有 Gog,而不是创建新的 Gog。其值可以从 0.0 到无穷大。默认值为 2.0 秒。
Transform 子句指定一个此前声明的 Transforms 列表,在由 key AVPL 和 Extra 子句的 match_avpl 指定的、来自每个新 Gop 的 AVP 被合并到 Gog 的 AVPL 之后,对该 AVPL 执行。该列表始终从左到右完整执行。相反,每个单独 Transform 内的 Match 子句列表只执行到第一个匹配成功为止。
控制 Gog 的 Gops 子树显示:
NoTree:完全抑制树的显示
BasicTree:需要研究
FullTree:需要研究
是否显示 Gog 的 times 子树。如果为 TRUE(默认值),带有计时器的子树会添加到 Gog 的树中。如果为 FALSE,则抑制该子树。
Settings 配置元素用于向 MATE 传递各种运行参数。可能的参数包括
在分配给某个 gog 的所有 gop 都释放后经过多少秒,匹配任一 session key 的新 gop 应创建新的 gog,而不是分配给先前的 gog。其值可以从 0.0 到无穷大。默认值为 2.0 秒。
每个 Pdu 的 AVPL 在处理完成后是否应被删除(节省内存)。它可以是 TRUE 或 FALSE。默认值为 TRUE。如果你的配置不工作,将它设置为 FALSE 可以让你少些头痛。
如果 Pdu 未分配给任何 Gop,是否应删除。它可以是 TRUE 或 FALSE。默认值为 FALSE。如果未分配的 Pdu 没有用处,将其设置为 TRUE 可节省内存。
如果 GoP 未分配给任何 session,是否应删除。它可以是 TRUE 或 FALSE。默认值为 FALSE。将其设置为 TRUE 可节省内存。
以下设置用于调试 MATE 及其配置。所有级别都是从 0(只打印错误)到 9(用垃圾信息淹没我)的整数,默认值为 0。
Debug { Filename "path/name"; //optional, no default value Level [0-9]; //optional, generic debug level Pdu Level [0-9]; //optional, specific debug level for Pdu handling Gop Level [0-9]; //optional, specific debug level for Gop handling Gog Level [0-9]; //optional, specific debug level for Gog handling };path/name 是要写入调试输出的文件的完整路径。不存在的文件会被创建;每次打开抓包文件时,已有文件都会被覆盖。如果缺少该语句,调试消息会写入控制台,这意味着它们在 Windows 上不可见。
设置通用调试消息的调试级别。它是从 0(只打印错误)到 9(用垃圾信息淹没我)的整数。
设置关于 Pdu 创建的消息的调试级别。它是从 0(只打印错误)到 9(用垃圾信息淹没我)的整数。
设置关于 Pdu 分析(即它们如何归入 GoPs)的消息的调试级别。它是从 0(只打印错误)到 9(用垃圾信息淹没我)的整数。
设置关于 GoP 分析(即它们如何归入 GoGs)的消息的调试级别。它是从 0(只打印错误)到 9(用垃圾信息淹没我)的整数。
Action=Settings; SessionExpiration=3.5; DiscardPduData=FALSE;
会将一个文件包含到配置中。
Action=Include; {Filename=filename;|Lib=libname;}要包含的文件的 filename。如果它不以 / 开头,则会在当前路径中查找该文件。
要包含的 lib 配置的名称。会在 wiresharks_dir/matelib 中查找 libname.mate。
Action=Include; Filename=rtsp.mate; 这会将名为 "rtsp.mate" 的文件包含到当前配置中。
Imported from https://wiki.wireshark.org/Mate/Reference on 2020-08-11 23:16:35 UTC