Traffic Flow
Traffic-Flow 将穿过路由器的数据包流统计信息以 Cisco NetFlow(v1/v5/v9)或 IPFIX 格式导出到采集器:启用服务、选择接口与超时、添加目标并验证。
流量流
MikroTik Traffic-Flow 提供穿过路由器的数据包的统计信息。除网络监控与计费外,系统管理员还可以识别网络中的各种问题,并分析与优化整体网络性能。Traffic-Flow 兼容 Cisco NetFlow,因此为 NetFlow 设计的工具可与它配合使用。
Traffic Flow 仅处理经过路由器 CPU 的流量。硬件卸载流量(例如交换机芯片端口之间由硬件卸载的桥接流量)永远不会出现在 Traffic Flow 中。
支持的导出格式:
- 版本 1:最初的 NetFlow 格式。提供流经路由器的 IP 数据包的基本信息,不支持不同协议类型与服务类型(ToS)。
- 版本 5:版本 1 的增强版,支持服务类型(ToS)、TCP 标志与自治系统信息。RouterOS 不会填充 BGP AS 号。
- 版本 9:基于模板的导出格式,支持新的记录类型;可导出 IPv4 与 IPv6 流信息。
- IPFIX:基于 NetFlow 版本 9 的 IETF 标准化协议,流记录可定制性更强;支持组播等较新字段。
启用 Traffic Flow 并选择接口
在 /ip/traffic-flow 中启用服务:
[admin@MikroTik] > /ip/traffic-flow/set enabled=yes
[admin@MikroTik] > /ip/traffic-flow/print
enabled: yes
interfaces: all
cache-entries: 256k
active-flow-timeout: 30m
inactive-flow-timeout: 15s
packet-sampling: no
sampling-interval: 0
sampling-space: 0
cache-entries 的默认值取决于设备内存(较大板卡为 256k,最小板卡为 4k)。active-flow-timeout 与 inactive-flow-timeout 决定流何时过期并导出(请参阅 参数说明)。
数据包采样
数据包采样仅统计部分数据包:
/ip/traffic-flow/set packet-sampling=yes sampling-interval=2222 \
sampling-space=1111
采样 2222 个连续数据包,然后省略 1111 个,如此循环。
添加导出目标
在 /ip/traffic-flow/target 中添加接收流数据的主机:
[admin@MikroTik] > /ip/traffic-flow/target/add dst-address=192.168.0.2 \
port=2055 version=9
[admin@MikroTik] > /ip/traffic-flow/target/print
Columns: SRC-ADDRESS, DST-ADDRESS, PORT, VERSION
# SRC-ADDRESS DST-ADDRESS PORT VERSION
0 0.0.0.0 192.168.0.2 2055 9
src-address=0.0.0.0 表示路由器自动选择出接口的源地址。导出会以所选格式通过 UDP(默认端口 2055)发送,例如这里的 NetFlow 版本 9。
查看流计数器
/ip/traffic-flow/monitor 命令显示流缓存状态(实时更新;在 duration 后停止):
[admin@MikroTik] > /ip/traffic-flow/monitor duration=3
finished-flows: 0
active-flows: 8
unmanaged-packets: 0
unmanaged-bytes: 0
如果采集器没有收到任何内容,请检查流是否出现在这里:路由器转发流量时 active-flows 会上升,流过期并导出后 finished-flows 开始上升(默认 inactive-flow-timeout 为流中最后一个数据包之后 15 秒)。请检查目标条目,并确认你观察的流量确实经过 CPU 路由(而非硬件卸载)。
为 IPFIX 选择导出字段
/ip/traffic-flow/ipfix 菜单选择 IPFIX 流记录中出现哪些字段:地址、端口、协议、标志、接口、时间信息(例如 sys-init-time、first-forwarded、last-forwarded)、NAT 地址与端口等,所有行均列在 CLI 参考 中。
所有字段默认开启;使用 set 关闭不需要的字段:
[admin@MikroTik] > /ip/traffic-flow/ipfix/set gateway=no tcp-flags=no
说明
Traffic flow 在 数据包流 图的 input、forward 与 output 链栈末尾记录流,因此只有到达这些链之一的流量才会被统计。
因此,不能使用连接到路由器的交换机镜像端口来统计镜像数据包:镜像帧在到达 input 链之前就会被丢弃。
如果流量经过其他接口以及监控接口,这些接口也会出现在报告中。
最小端到端示例
在一台路由器上从零开始设置,将 NetFlow v9 导出到 192.168.0.2 上的采集器:
/ip/traffic-flow/set enabled=yes
/ip/traffic-flow/target/add dst-address=192.168.0.2 port=2055 version=9
路由器会开始发送包含流信息的导出数据包;可使用 /ip/traffic-flow/monitor 观察。
信息
要在 MikroTik 上使用 ntop-ng,需要使用 Nprobe,这是付费软件。