我想使用tshark过滤和处理直径消息。在我的捕获中,我看到我在一个TCP标头内有三个直径消息。我的用例要求我在直径消息中搜索结果代码。根据直径规范,可以在单个直径消息中具有多个结果代码。直径消息中也可能没有结果代码。
由于这个原因,如果我得到三个直径消息的结果代码为A,B,C,我无法识别哪个结果代码属于哪个直径消息。
是否可以应用一些插件/功能来帮助我分割三条直径的消息?
我可以看到https://ask.wireshark.org/questions/4291/multiple-occurrences-filter-for-diameter中类似主题上有一个旧链,但没有答案如何完成。
答案 0 :(得分:0)
首先,您对结果代码的假设是错误的。
根据RFC 6733(3588说同样):
7.1。结果代码AVP
结果代码AVP(AVP代码268)的类型为Unsigned32和
表示特定请求是成功完成还是
发生错误。 IETF定义的所有Diameter应答消息
直径应用规范必须包含一个结果代码AVP 。
如果您将使用wireshark,您将能够分别看到每个答案,并且您将能够轻松地看到每个答案属于哪个AVP
答案 1 :(得分:0)
我是第二个Rajeev。在分析大量直径消息时,在单个TCP有效负载中管理合并直径消息变得难以处理。
示例:
tshark -Tfields -e diameter.Session-Id -e diameter.Result-Code -e diameter.CC-Total-Octets -r mydiametercap.pcap -Y "diameter.Result-Code" > session-ids-and-results.txt
这个命令有时会给我这个(抽象的)输出:
<session-id-1>,<session-id-2>,<session-id-3><tab><many result codes (sometimes 3 per message)><tab><one value of total octets>
我无法相信所有字段都遵循相同的约定,因此无法使用可靠的解析算法来查看结果。当你认为AVP(在这种直径实现中以非常平坦的方式解释)可能属于MSCC部分或完全不同的部分时,情况会更糟,并且没有任何东西可以解除这些。
不要误会我的意思:tshark规则...... :-)只是想让它变得更好。