35 traffic classes across 9 protocol families shipped. Archives
ROADMAP, REQUIREMENTS, and phase directories to milestones/v1.2-*.
Updates README with new protocol families, sound design table,
and [groups] TOML config documentation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LDAP, Kerberos, and Syslog excluded from AllClasses() per D-01 — no ClassFreqConfigs entries until Phase 11; exclusion keeps TestAllClassesHaveConfig green
Plain/TLS variants share a single class constant per D-03 (e.g. IMAP 143 and IMAPS 993 both map to ClassIMAP)
SMTP-sub (port 587) is a separate class from SMTP (port 25) per D-04
QUIC uses Protocol "udp" with DstPort 443 to distinguish from HTTPS (tcp/443)
All 30 new specific-port rules placed before catch-alls per D-06
duration
completed
tasks_completed
files_modified
3 min
2026-03-27
2
2
PROTO-01
PROTO-02
PROTO-03
PROTO-04
PROTO-05
PROTO-06
PROTO-07
PROTO-08
Phase 10 Plan 1: Classification Layer — Constants and Rules Summary
Added 21 new TrafficClass constants (IMAP, POP3, SMTP-sub, FTP, SMB, TFTP, RDP, Telnet, VNC, MySQL, PostgreSQL, Redis, MongoDB, mDNS, SSDP, SNMP, SIP, QUIC, LDAP, Kerberos, Syslog) and 30 new port-matching rules to the classify package, expanding traffic classification from 14 to 35 classes (32 in AllClasses(), 3 deferred to Phase 11).
Tasks Completed
Task
Name
Commit
Files
1
Add 21 new TrafficClass constants and update AllClasses()
AllClasses() updated to return 32 classes — the 14 existing classes plus 18 new ones. ClassLDAP, ClassKerberos, and ClassSyslog are intentionally excluded because their ClassFreqConfigs entries do not exist until Phase 11.
Task 2 expanded DefaultRules in classify/rules.go from 12 to 42 rules. All 30 new rules are specific-port rules placed before the catch-all entries. Key behaviors:
Plain/TLS variants map to the same class (IMAP 143/993, POP3 110/995, LDAP 389/636, SIP 5060/5061 tcp+udp, FTP 20/21)
QUIC uses Protocol: "udp", DstPort: 443 — distinct from HTTPS at tcp/443
Catch-alls {tcp, 0, ClassOtherTCP} and {udp, 0, ClassOtherUDP} remain as the final two entries
Verification Results
go build ./classify/... — clean compilation, no errors
go test -count=1 ./... — all 7 packages pass (classify, synth, aggregate, capture, cmd, config, encode)
TestAllClassesHaveConfig — PASS (32 AllClasses entries all have ClassFreqConfigs entries)
TestClassFreqConfigsMatchAllClasses — PASS
TestFrequenciesInRange — PASS
TestGroupFieldPopulated — PASS
Final counts:
Total TrafficClass constants: 35 (14 existing + 21 new)