Skip to content

Protocol support ​

There are 16 built-in Wasm packages. The HTTP family shares a package because it shares connection state. Support means the scope below, not every protocol version, extension, authentication mode, or replication mode.

Capability matrix ​

ProtocolAvailable featuresMain limits
HTTP/1.xRequest-stage events, transactions, pipelining, chunked/trailers, gzip/deflate, upgradesUnsupported Upgrade modes produce anomalies
HTTP/2HPACK, concurrent streams, CONTINUATION, trailers, RST/GOAWAY, h2c64 streams/connection; plaintext and SETTINGS context required
WebSocketHandshake validation, fragmentation, control frames, UTF-8, hex auditingpermessage-deflate with context takeover; other extensions rejected; compressed/decoded messages each <=64 KiB
gRPCUnary/streaming, trailer status, message counts, gzip, descriptor decodingHTTP 200 is not RPC success; no guessed message types without descriptors
DNS UDP/TCPCorrelation, name compression, common records, TTL, all response sectionsNo DNSSEC validation or automatic DoH/DoT decryption
TLSHello, SNI, versions, ciphers, visible ALPN and TLS 1.2 certificatesNo trust-chain validation; encrypted TLS 1.3 certificates/ALPN cannot be recovered from capture
MySQLOrdinary/prepared requests, multi-results, parameters, long data, read-only cursors/FETCHNo binlog semantics; unsupported cursor modes rejected
PostgreSQLSimple/extended, prepared requests, pipelines, COPY IN/OUT/BOTHReplication payloads only get bounded auditing, not WAL semantics
RedisInline, RESP2/3, pipelines, subscriptions/push, MONITOR/RESETNo SYNC/PSYNC replication; credentials omitted
MongoDBOP_MSG, BSON, ID correlation, snappy/zlib/zstd, CRC32CLegacy OP_QUERY/REPLY only for hello; 1 MiB frames
KafkaProduce v0–12, Fetch v0–17, batch v2, common compressionOther APIs are metadata-only; no non-length-framed SASL
MQTT3.1.1/5.0, QoS 0/1/2, subscriptions, topic aliases, DUPMust observe CONNECT; CONNECT/AUTH credentials omitted
AMQP0-9-1 publish/deliver/get/return, publisher confirmsNo AMQP 1.0; authentication exchange omitted
DubboDubbo 2, IDs, Hessian2 method metadata, responses/exceptionsNo Triple, reverse requests, or full argument-object decoding
ThriftFramed binary/compact, method/ID correlation, oneway, exceptionsNo unframed, HeaderTransport, or reverse requests
MemcachedClassic ASCII, multi-key reads, non-quiet binary, hits/missesNo meta, UDP, binary quiet/STAT; noreply does not imply success
NATSCore, PUB/MSG, HPUB/HMSG, exclusive same-connection reply correlationNo JetStream semantics, cluster routes, or WebSocket; observed publishing is not delivery
LDAP v3Bind results, Search counts, ID correlation, modifications, Extended OIDsMetadata only; no authentication/attribute/filter values, SASL security layer, or page aggregation
HTTP/3Passive goquic plaintext, independent streams, FIN/reset, static QPACKSupported quic-go only; no mirrored UDP decryption; see below

Requests, bodies, and decoding ​

http.request is off by default. When enabled, it emits after complete request headers. Only http.transaction contributes to HTTP business request counts. Query capture defaults to empty; default header allowlisting covers content-type/x-request-id/traceparent. Allowlisting does not bypass event redaction.

For gRPC, generate a descriptor set including dependencies:

sh
protoc --include_imports --descriptor_set_out=service.pb service.proto

Add "grpc":{"descriptors":["./service.pb"]} to the main configuration and restart the analyzer. grpc.request_json/response_json contain JSON message arrays as strings, usable through DSL JSON pointers. decoded applies only to retained content: complete-content decisions also need not truncated and completeness checks. Unknown compression, missing context, and decoding failure do not imply health.

Passive HTTP/3 ​

Use module=goquic and protocol=http3. Supported quic-go versions are v0.64.0 / v0.59.1, with runtime evidence on Linux arm64 / Go 1.26.9. Requirements include Linux ≥ 5.17, BTF, root, target ELF symbols, and DWARF. Stripped symbols, missing DWARF, unsupported dependency layouts, and other QUIC implementations reject attachment.

Static QPACK works; dynamic QPACK, server push, and WebTransport are explicitly rejected. Ordinary OpenSSL/Go TLS probes cannot substitute for the QUIC probe.

Inspect active capabilities ​

sh
netflowscout plugin info --config /etc/netflowscout/netflowscout.json
netflowscout status --component analyzer --config /etc/netflowscout/netflowscout.json

Manifest capabilities describe implementation scope. Active versions, module hashes, and actual requests establish what is working locally. Two shards of built-ins declare 544 MiB of linear memory against a 640 MiB current-generation budget and 1280 MiB including draining generations. Declared limits are not RSS. Load only needed protocols to reduce the budget.