各評価グループに対して使用される合計データを計算するために、すべての入力/出力オクテット AVP を追加しようとしています。問題は、必ずしも両方の入力/出力オクテット AVP が各サービス データ コンテナー AVP に存在するとは限らないことです。Tfields または Tjson オプションを指定して tshark コマンドを使用すると、出力で元の階層が失われ、どのオクテット AVP がどの評価グループに関連付けられているかを特定できなくなります。
以下は、Rf ACR パケットの簡単なスナップショットです。
Diameter>
Service-Information>
PS--Information>
Service-Data-Container>
Accounting-Input-Octets=1000
Accounting-Output-Octets=2000
Rating-Group=1111
...
...
Service-Data-Container>
Accounting-Output-Octets=7000
Rating-Group=1111
...
...
Service-Data-Container>
Accounting-Input-Octets=4000
Rating-Group=2222
...
...
Service-Data-Container>
Accounting-Input-Octets=6000
Accounting-Output-Octets=5000
Rating-Group=2222
...
...
上記の例で追加すると、Rating-Group=1111 の場合、合計 Accounting-Input-Octets は 1000 で、Accounting-Output-Octets は 9000 です。同様に、Rating-Group=2222 の場合、合計 Accounting-Input-Octets は 10000 であり、 Accounting-Output-Octets は 5000 です。
次のオプションを指定して tshark を実行します。
tshark -r <file.pcap> -Y <diameter_filter> -Tjson -e diameter.Rating-Group -e diameter.Accounting-Input-Octets -e diameter.Accounting-Output-Octets
[
{
"_index": "packets-2019-08-12",
"_type": "pcap_file",
"_score": null,
"_source": {
"layers": {
"diameter.Rating-Group": [
"1111",
"1111",
"2222",
"2222"
],
"diameter.Accounting-Input-Octets": [
"1000",
"4000",
"6000"
],
"diameter.Accounting-Output-Octets": [
"2000",
"7000",
"5000"
]
}
}
}
]
ご覧のとおり、評価グループに対してオクテットを集約することは不可能です。
以下のようなパケットのより良い階層を取得できるオプションを探しています。
[
{
"Service-Data-Container":
{
"Accounting-Input-Octets":1000
"Accounting-Output-Octets":2000
"Rating-Group"=1111
}
},
{
"Service-Data-Container":
{
"Accounting-Output-Octets":7000
"Rating-Group"=1111
}
},
{
"Service-Data-Container":
{
"Accounting-Input-Octets":4000
"Rating-Group"=2222
}
},
{
"Service-Data-Container":
{
"Accounting-Input-Octets":6000
"Accounting-Output-Octets":5000
"Rating-Group"=2222
}
}
]