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.