在单个TCP标头中多次出现直径消息

时间:2015-11-09 13:10:45

标签: tcp wireshark tshark diameter-protocol

我想使用tshark过滤和处理直径消息。在我的捕获中,我看到我在一个TCP标头内有三个直径消息。我的用例要求我在直径消息中搜索结果代码。根据直径规范,可以在单个直径消息中具有多个结果代码。直径消息中也可能没有结果代码。

由于这个原因,如果我得到三个直径消息的结果代码为A,B,C,我无法识别哪个结果代码属于哪个直径消息。

是否可以应用一些插件/功能来帮助我分割三条直径的消息?

我可以看到https://ask.wireshark.org/questions/4291/multiple-occurrences-filter-for-diameter中类似主题上有一个旧链,但没有答案如何完成。

2 个答案:

答案 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规则...... :-)只是想让它变得更好。