第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 更低,精度降低

七、实战案例:定位带宽占用者

场景:某企业出口带宽被异常占满,需要定位原因。

步骤

  1. 在出口路由器启用 NetStream
  2. 采集器分析流量
流量分析结果:
  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/源端口/目标端口/协议)
采样率 权衡精度与性能
典型应用 流量分析、异常检测、计费

九、思考

  1. NetStream 和 sFlow 的核心区别是什么?
  2. 流的五元组包含哪些字段?
  3. 选择采样率时需要考虑哪些因素?
  4. NetStream 中流老化的三种条件是什么?
  5. 如果出口带宽被异常占满,如何通过 NetStream 定位异常流量?

下篇预告:第129篇《园区网 QoS 基础——队列调度与拥塞管理》——讲解园区网中 QoS 的核心机制:队列调度、拥塞管理和流量整形。