第128篇:NetStream/sFlow 流量采样与监控
关键词
NetStream、sFlow、流量采样、NetFlow、流量分析、NMS、带宽监控
一、为什么需要流量采样?
1.1 SNMP 的局限
SNMP 可以获取接口的累积流量(ifInOctets / ifOutOctets),但无法回答以下问题:
- 谁在占用带宽?(源 IP)
- 访问什么?(目标 IP + 端口)
- 什么协议?(TCP/UDP/ICMP)
- QoS 是否有效?(丢包情况)
1.2 流量采样技术的价值
流量采样技术(NetStream/sFlow/NetFlow)通过分析网络流,提供精细化的流量分析:
| 能力 | 说明 |
|---|---|
| 应用识别 | HTTP、VoIP、P2P 等流量占比 |
| 用户溯源 | 哪个 IP 消耗了最多带宽 |
| 异常检测 | DDoS 攻击、蠕虫病毒扩散 |
| 流量计费 | 按流量/时长计费 |
| 容量规划 | 链路带宽利用率趋势 |
二、主流流量采样技术
| 技术 | 开发商 | 采样方式 | 导出协议 | 说明 |
|---|---|---|---|---|
| NetFlow | 思科 | 基于流 | UDP | 最早的流量采样技术 |
| sFlow | InMon | 基于数据包 | UDP | 采样率可控 |
| NetStream | 华为 | 基于流 | UDP | 兼容 NetFlow v5/v9 |
| IPFIX | IETF | 基于流 | SCTP/TCP/UDP | NetFlow v10 标准化 |
2.1 NetStream vs sFlow
| 对比项 | NetStream(华为) | sFlow |
|---|---|---|
| 采样粒度 | 流(Flow) | 数据包(Packet) |
| 完整性 | 完整流记录 | 部分数据包采样 |
| CPU 负载 | 较高 | 低 |
| 导出格式 | v5/v9/IPFIX | sFlow v5 |
| 典型场景 | 流量计费 | 实时流量监控 |
三、NetStream 工作原理
3.1 流的概念
流(Flow) 是具有相同特征的报文集合:
同一个流匹配:
- 源 IP 地址
- 目标 IP 地址
- 源端口
- 目标端口
- 协议号
- ToS(服务类型)
3.2 NetStream 工作流程
1. 设备收到报文 → 创建流记录
2. 流记录缓存(累计字节数、报文数、时间戳)
3. 流结束(TCP FIN/RST / 超时 / 缓存满)
4. 导出 NetStream 报文到采集器(Collector)
5. 采集器分析 → 生成报表
NetStream 设备 NetStream 采集器
| 接口 ──► 流缓存 采样 ──► 流记录 | ──UDP──► | 流量分析 (SolarWinds/ 华为 iManager) |
|---|---|---|
3.3 流老化条件
| 条件 | 说明 |
|---|---|
| FIN/RST | TCP 连接正常关闭 |
| 活跃超时 | 流长时间无新报文(默认 30 分钟) |
| 非活跃超时 | 流存在但无新报文(默认 30 秒) |
| 缓存满 | 流缓存溢出 |
四、NetStream 配置
4.1 华为 NetStream 配置
# ===== 1. 定义流行为 =====
flow-record CAMPUS
match ip source-address # 记录源 IP
match ip destination-address
match ip protocol
match transport source-port
match transport destination-port
collect interface input
collect counter bytes # 记录字节数
collect counter packets
# ===== 2. 启用采样 =====
# 在接口启用 NetStream
interface GigabitEthernet0/0/1
ip netstream sampler fix-rate 1000 # 1:1000 采样率
ip netstream inbound # 入方向采样
ip netstream outbound # 出方向采样
# ===== 3. 配置采集器 =====
netstream export source ip 10.254.1.1
netstream export ipv4 destination 10.254.100.100 9996 # 采集器 IP 和端口
netstream export version 9 # NetFlow v9 格式
# ===== 4. 查看状态 =====
display netstream statistics
display netstream export
4.2 sFlow 配置(华为)
# ===== sFlow 配置 =====
sflow-agent
sflow sampling-rate 1000 # 1:1000 采样
sflow collector 10.254.100.100 6343 # 采集器
sflow source-ip 10.254.1.1
# 接口启用
interface GigabitEthernet0/0/1
sflow enable
五、流量采集平台
常用的流量采集和分析平台:
| 平台 | 类型 | 说明 |
|---|---|---|
| SolarWinds NetFlow Traffic Analyzer | 商业 | 功能强大 |
| PRTG Network Monitor | 商业 | 易于使用 |
| ntopng | 开源 | 实时流量分析 |
| Elasticsearch + Kibana | 开源 | 大数据分析 |
| 华为 iMaster NCE | 商业 | 华为管理平台 |
六、流量采样率的选择
采样率影响精度和 CPU 负载:
| 采样率 | 含义 | CPU 负载 | 精度 | 场景 |
|---|---|---|---|---|
| 1:1 | 采样所有报文 | 最高 | 100% | 小流量/计费 |
| 1:100 | 每 100 个报文采 1 个 | 高 | ~99% | 核心链路 |
| 1:1000 | 每 1000 个报文采 1 个 | 中 | ~90% | 常规监控 |
| 1:10000 | 每 10000 个报文采 1 个 | 低 | ~70% | 高速链路 |
# 调整采样率
ip netstream sampler fix-rate 1000 # 提高采样率 → 更精确,CPU 更高
ip netstream sampler fix-rate 10000 # 降低采样率 → CPU 更低,精度降低
七、实战案例:定位带宽占用者
场景:某企业出口带宽被异常占满,需要定位原因。
步骤:
- 在出口路由器启用 NetStream
- 采集器分析流量
流量分析结果:
Top 5 流量用户:
1. 192.168.10.100: 320 Mbps (P2P 下载)
2. 192.168.20.50: 120 Mbps (视频流)
3. 192.168.10.200: 80 Mbps (HTTP)
Top 5 应用协议:
1. P2P (BitTorrent): 45%
2. 视频流: 25%
3. HTTP: 15%
4. VoIP: 5%
5. 其他: 10%
结论:某用户在进行 P2P 下载,消耗了近一半带宽。
措施:通过 QoS 限制 P2P 流量或直接封禁该 IP。
八、总结
| 知识点 | 核心要点 |
|---|---|
| NetStream | 华为流采样技术,基于流记录 |
| sFlow | 基于数据包采样,CPU 负载低 |
| 流定义 | 五元组(源IP/目标IP/源端口/目标端口/协议) |
| 采样率 | 权衡精度与性能 |
| 典型应用 | 流量分析、异常检测、计费 |
九、思考
- NetStream 和 sFlow 的核心区别是什么?
- 流的五元组包含哪些字段?
- 选择采样率时需要考虑哪些因素?
- NetStream 中流老化的三种条件是什么?
- 如果出口带宽被异常占满,如何通过 NetStream 定位异常流量?
下篇预告:第129篇《园区网 QoS 基础——队列调度与拥塞管理》——讲解园区网中 QoS 的核心机制:队列调度、拥塞管理和流量整形。