Views
No views yet
audio_streaming · cdn_web_assets · ecommerce · file_transfer · gaming ·
messaging · search_info_news · social_media · video_streamingseq [30 × 5] → SSM encoder (pure-PyTorch, Mamba-style) → h
│
flow context (6) → Gated FiLM conditioning
↓
Tiny FasterKAN reasoning head (r = h + KAN(h))
↓
Projection head → z ∈ ℝ¹²⁸ (L2-normalised, SupCon-trained)z (the projection output), classified by k-NN against class centroids.mamba-ssm dependency) — runs on any GPU/CPU.[30, 5]: signed packet size, direction (±1), inter-arrival time, RFC-3550 jitter, direction-change flag. (30-packet cap is set by the CESNET PPI field.)[6]: flow_duration, packet_rate, roundtrip_density, upload/download ratio, truncation_ratio, burstiness. Normalised with the checkpoint's stored sm/ss/cm/cs (do not feed raw features — the on-disk data is raw and must be normalised first).| KPI | Value | Target |
|---|---|---|
| QUIC accuracy | 91.1% | ≥ 90% ✅ |
| TLS accuracy | 90.6% | ≥ 90% ✅ |
| Intra-class cosine | 0.941 | > 0.7 ✅ |
| Inter-class cosine | −0.090 | < 0.3 ✅ |
| Latency | ~6.7 ms/flow | < 100 ms ✅ |
generalization/unknown_apps_combined.npz):1import numpy as np, torch
2from huggingface_hub import hf_hub_download
3# (define the MJKAN model class — see src/ in the project repo)
4
5ck = torch.load(hf_hub_download("donbosoc/shigan-mjkan-baseline",
6 "combined_temporal/combined_temporal_best.pt"),
7 map_location="cpu", weights_only=False)
8sm, ss, cm, cs = (np.array(ck["norm"][k], np.float32) for k in ("sm","ss","cm","cs"))
9
10model = MJKAN(nf=5, nc=len(cm)); model.load_state_dict(ck["model"], strict=True); model.eval()
11
12def embed(seq_raw, ctx_raw): # seq:[N,30,5], ctx:[N,6] RAW
13 mk = (np.abs(seq_raw).sum(-1, keepdims=True) > 0)
14 Sn = ((seq_raw - sm) / ss * mk).astype(np.float32)
15 Cn = ((ctx_raw - cm) / cs).astype(np.float32)
16 with torch.no_grad():
17 return model(torch.tensor(Sn), torch.tensor(Cn))[1].numpy() # z, L2-normalisedtorch.load needs weights_only=False (PyTorch 2.6+ default change).combined_temporal/ — flagship MJKAN Temporal checkpoint + temporal test data (RAW features)protocol_invariance/, condition_invariance/ — V-ladder ablation checkpoints (V1, V2, V3, V5z, V7, V-COND)realtime_joint_temporal/ — window-only real-time variant (mid-flow classification)generalization/unknown_apps_combined.npz — published unseen-app benchmark (19 apps, QUIC+TLS, RAW features)roundtrip_density, truncation_ratio) are CESNET-exporter-specific and cannot be reconstructed from raw packet captures. Deploying on a different capture pipeline requires replicating that exporter or retraining on the target pipeline's features. (Confirmed empirically: a cross-distribution test on an external 5G traffic dataset failed for exactly this reason — its context features did not match our pipeline, surfacing the coupling rather than a model deficiency.)Luxemburk, J., Hynek, K., Čejka, T., Lukačovič, A., & Šiška, P. (2023). CESNET-QUIC22: A large one-month QUIC network traffic dataset from backbone lines. Data in Brief, 46, 108888.
Luxemburk, J., et al. (2024). CESNET-TLS-Year22: A year-spanning TLS network traffic dataset. Scientific Data, 11.
attribution.md in the project repository for full attribution.@misc{mjkan-net-2026,
title = {MJKAN-Net: Payload-Free, Protocol-Invariant Encrypted-Traffic Classification},
author = {Shivam Patel and Kavan Gandhi},
year = {2026},
note = {Samsung EnnovateX AX Hackathon, Team Shigan, IIIT Hyderabad},
url = {https://huggingface.co/donbosoc/shigan-mjkan-baseline}
}