Feature #7896
openReport stream/socket bytes transferred in flow logs
Description
Suricata reports total packets and bytes in flow logs, which counts the total data volume transferred including the overhead of layer 3 & 4 protocols. In forensic investigations, the volume of data transferred is a very frequently-used metric but it is more usefully reported as the number of bytes transferred without the protocol level overhead, as the number of bytes that would have been sent & received by the endpoint applications over their sockets. Zeek reports these values as orig_bytes
and resp_bytes
separately from the total byte counts including overhead, and Suricata could do something similar.
{ "timestamp": "2025-09-12T22:55:02.341058+0000", "flow_id": 1746311224371101, "event_type": "flow", "src_ip": "192.168.88.117", "src_port": 49921, "dest_ip": "142.251.215.228", "dest_port": 443, "proto": "TCP", "app_proto": "tls", "flow": { "pkts_toserver": 23, "pkts_toclient": 26, "bytes_toserver": 2121, "bytes_toclient": 24077, "start": "2025-09-12T22:55:02.341058+0000", "end": "2025-09-12T22:55:02.460308+0000", "age": 0, "state": "closed", "reason": "shutdown", "alerted": true }, "tcp": { "tcp_flags": "1b", "tcp_flags_ts": "1b", "tcp_flags_tc": "1b", "syn": true, "fin": true, "psh": true, "ack": true, "state": "last_ack", "ts_max_regions": 1, "tc_max_regions": 1 } }
This example is a flow log from a simple GET to google.com, for this packet capture Wireshark's "follow stream" reports 591 bytes to server and 22k to client, which would be very useful if reported directly by Suricata.