type
Page
status
Invisible
date
Mar 30, 2026
slug
paper/connected-vehicle-paper-review/04
summary
第4篇精读论文
tags
车联网
机器学习
category
icon
password

MM4flow: A Pre-trained Multi-modal Model for Versatile Network Traffic Analysis

期刊会议:CCS(CCF-A) 年份:2025 链接:https://dl.acm.org/doi/10.1145/3719027.3744804 代码https://github.com/Shangshu-LAB/MM4flow

一、论文基本信息

该论文的研究主题是面向网络流量分析的多模态预训练模型,作者提出了名为MM4flow的模型,目标是让同一个模型能适配多种网络流量分析任务,而不是只在单一任务上表现好。

二、论文要解决什么问题

作者认为,现有网络流量预训练方法主要有两个核心问题。
第一,很多方法只建模原始字节流,忽略了传输模式这类行为信息,所以在某些任务上效果很差,尤其是像“加密隧道下的网站识别”这种几乎没有明显字节模式的任务。
第二,已有预训练模型通常只在 GB 级、且往往来自公开任务型数据集的数据上训练,数据规模和多样性不足,容易导致泛化能力有限。MM4flow就是针对这两个问题提出的。

三、核心思想

把网络流分成两种模态来学习
作者把网络流量表示为:
  1. Payload byte stream(载荷字节流):反映内容信息
  1. Packet length sequence(包长序列):反映行为信息/传输模式
作者认为,这两种模态分别对应“看内容”和“看行为”,二者互补。对于普通识别任务,字节流往往更强;但对隧道流量、代理流量这类任务,包长序列这种侧信道信息更关键。

四、方法框架

MM4flow整体遵循 “预训练 + 微调” 的范式,结构上有四个阶段:
  1. 数据采集
  1. Tokenization(分词/序列化)
  1. Uni-modal Pre-training(单模态预训练)
  1. Multi-modal Fine-tuning(多模态微调)
思路是分别学好两种模态,再在下游任务中融合。作者这样设计,是为了避免多模态训练里常见的“某个模态压制另一个模态”的问题。
notion image

五、方法细节

1. 数据采集

作者基于 Zeek 设计了一套实时数据采集方案,在网络网关处通过端口镜像抓包,并写了两个 Zeek 插件来分别记录:
  • 包长序列 ps.zeek
  • 载荷字节流 bytes.zeek
他们总共采集了约 77.6 TB 的真实网络流量,处理后得到 4.65 亿条 flow。相比已有方法需要先切分 flow 再离线解析,这个方案把日志压缩到 475.3 GB,存储开销约降到原来的 0.6%,同时避免了离线解析带来的巨大时间成本。

2. 两种模态如何表示

在表示设计上,作者刻意避开容易引入偏差的信息:
  • 不用包头里的强标识字段,避免学到环境偏差
  • 不用时间信息,因为时间容易受网络波动影响,不稳定
具体做法是:
  • 字节流模态:取上行前 256 字节 + 下行前 256 字节,共 512 字节
  • 包长序列模态:用带方向的包长度作为 token;上行为正、下行为负;无有效载荷的数据包被去掉
这说明作者不是简单“把数据喂进去”,而是做了比较强的归纳偏置设计。

3. 为什么不用 2-gram 字节切分

论文特别批评了已有工作常见的 2-gram tokenization。作者认为,在 MLM 预训练里,2-gram 的被 mask token 很容易由前后 token 机械推断出来,模型不一定真的学到语义。
因此 MM4flow直接用单字节 tokenization,让模型必须结合上下文去理解字节流。这个点很关键,因为它解释了作者为什么觉得自己的预训练更“有效”。
notion image

4. 预训练与融合

模型包含两个子模型:
  • BERT-bytes:学习字节流
  • BERT-ps:学习包长序列
两者都采用 Encoder-only 的 BERT 风格结构,预训练任务是 MLM。mask比例为 15%,其中 80% 替换成 [MASK],10% 替换成随机 token,10% 保持不变。
在下游任务中,作者引入了基于 cross-attention 的模态融合模块,而不是简单拼接两个模态表示。更具体地说,他们把两种模态的输出拼接后作为 query,再分别与两个模态交互,从而尽量在融合时保留单模态自身的信息。

5. 两阶段微调

微调不是一步到位,而是分两阶段:
  • Stage 1:冻结预训练参数,只训练分类头
  • Stage 2:解冻全部参数,用更小学习率做全参数微调
作者这样做的理由是:如果一开始就全量更新,小数据集上未训练好的分类头可能会把已经稳定的预训练参数“带偏”。

六、实验设置

预训练数据规模非常大:
  • 原始流量约 77.6 TB
  • 处理后 465M flows
  • 字节流 token 约 249.9B
  • 包长序列 token 约 18.98B
预训练共 2 个 epoch,约 908K steps,耗时约 350 小时
实验在 6 个公开数据集上进行,覆盖 6 类任务,包括恶意流量检测、代理流量分类、加密隧道下的网站识别、浏览器分类、移动应用识别、TLS1.3 网站识别。

七、实验结果

1. 总体效果

MM4flow 在 6 个公开数据集上都表现很强,尤其在以下两个任务上优势明显:
  • NUDT_MobileTraffic:准确率 0.9111
  • CSTNET-TLS1.3:准确率 0.9826
相对最优 baseline,准确率分别提升 5.28%6.17%。论文还特别强调,在加密隧道下的网站识别任务上,相比已有预训练模型,MM4flow 的准确率提升达到 84%

2. 模态层面的结论

这篇论文一个很有价值的发现是:不同任务依赖的主模态不同
  • 字节流更重要:恶意流量检测、移动应用识别、浏览器分类
  • 包长序列更重要:加密代理流量分类、加密隧道下的网站识别
尤其在 DataCon2021-p2 这个“加密隧道网站识别”任务上,作者指出所有只基于字节流的方法几乎都失败,因为这个任务基本没有可用字节模式,只能靠行为模式。

3. 少样本泛化能力

作者还测试了 few-shot 场景,结论是:MM4flow在多数任务中需要更少的标注数据
例如:
  • 在 DataCon2021-p1 上,要达到 0.9 准确率,MM4flow 只需要 FS-Net 的 10% 标注数据
  • 在 DataCon2021-p2 上,要达到 0.8 准确率,MM4flow 只需要 FS-Net 和 AppScanner 约 30% 的标注数据
  • 在 CSTNET-TLS1.3 上,要达到 0.9 准确率,MM4flow 比 FlowLens 少用约 90% 的标注数据
这说明它的预训练确实学到了更通用的流量表示。

4. 消融实验

消融实验说明了三点:
  • 多模态优于单模态
  • cross-attention 融合通常优于简单拼接
  • 有预训练参数的 SFT 明显优于从零训练 TFS
例如在 NUDT_MobileTraffic 上,MM4flow 从零训练的准确率是 0.7614,而用预训练参数微调后达到 0.9111,提升 0.1497。这说明预训练对复杂多分类任务尤其有效

八、局限

作者自己也承认有两个主要限制。
一是attention 机制在长序列上容易出现注意力分散、甚至显存/内存压力问题,特别是在字节流模态上更明显。
二是推理速度和 GPU 依赖会限制它在高速网络中的实时部署。

九、总结

本文提出了一个面向网络流量分析的多模态预训练模型 MM4flow。与以往主要依赖原始字节流的工作不同,MM4flow同时建模载荷字节流包长序列,分别对应网络流的内容信息行为信息。方法上,作者先对两种模态分别进行单模态预训练,再在下游任务中通过 cross-attention 进行融合,从而兼顾多模态互补性与训练稳定性。实验表明,MM4flow 在 6 个公开数据集上的表现均优于现有方法,尤其在加密隧道下的网站识别任务上提升显著,同时在少样本场景下也展现出更强的泛化能力。不过,该方法仍存在长序列 attention 开销较大推理依赖 GPU部署成本高等问题。
 
Loading...