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,这是付费软件。

延伸阅读

相关主题