2015-11-09 70 views
2

我想使用tshark過濾和處理直徑消息。在我的捕獲中,我看到在一個TCP頭部中有三個直徑消息。我的用例要求我在直徑消息中搜索結果代碼。根據直徑規格,可以在單個直徑信息中包含多個結果代碼。在直徑消息中也可能沒有結果代碼。單個TCP報頭中直徑消息的多次出現

因爲這個原因,如果我得到三個直徑信息的結果代碼爲A,B,C,我無法識別哪個結果代碼屬於哪個直徑信息。

是否可以應用一些插件/功能來幫助我分割三個直徑信息?

我可以看到在https://ask.wireshark.org/questions/4291/multiple-occurrences-filter-for-diameter中有一個類似主題的舊鏈,但沒有答案如何完成。

回答

0

首先,你對結果代碼的假設是錯誤的。

根據RFC 6733(3588說的一樣):

7.1。結果代碼AVP

的結果代碼AVP(AVP代碼268)的類型爲UNSIGNED32的和
指示特定請求是否被成功或
發生錯誤完成。 IETF定義的所有Diameter應答消息
Diameter應用規範必須包含一個結果代碼AVP

如果你會使用Wireshark,你將能夠看到每個問題的答案seperatly,你就能很容易地看到哪些AVP屬於每個答案

+0

首先,我需要使用tshark來處理捕獲,而不是wireshark。這是因爲我必須分析大約10Gb大小的文件。 –

+0

更重要的是,我同意規範要求在每個直徑消息中必須有一個結果代碼。單個直徑消息也可能包含多個結果代碼(在命令級別有一個結果代碼,在某些分組的AVP內有一個結果代碼)。因此,如果我正在處理的直徑消息中有一個包含此模式,則很難將結果代碼映射到直徑會話標識。 –

+0

如果你有3個答案和3個結果代碼,我不會擔心多個結果代碼。無論如何,當我想拆分一個大的捕獲文件時,我將cap文件帶到windows並使用與wireshark一起安裝的editcap.exe(儘管我從未嘗試過10GB)。你可以在這裏找到更多關於它的數據:https://www.wireshark.org/docs/man-pages/editcap.html – kurdt

0

我將第二拉傑夫這一點。在分析大量直徑消息時,管理單個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 rules ... :-)只是爲了讓它變得更好。

+0

我找到了解決此問題的方法。這是漫長的,但它的作品! tshark不是將其轉換爲文本文件,而是提供了轉換爲xml文件的靈活性。我現在使用golang來處理xml。 –

+0

是的,tshark規則:) –