Traffic Flow
MikroTik Traffic-Flow 通过收集经过路由器的数据包的统计信息来提供网络监控和计费,支持 NetFlow 版本 1、5、9 以及 IPFIX,以实现灵活的流分析。它允许配置接口、缓存条目、超时、数据包采样以及用于流数据传输的目标主机。
Traffic Flow
MikroTik Traffic-Flow 是一个提供经过路由器数据包统计信息的系统。除了网络监控和计费之外,系统管理员还可以识别网络中可能出现的各种问题。借助 Traffic-Flow,可以分析和优化整体网络性能。由于 Traffic-Flow 与 Cisco NetFlow 兼容,因此可以与各种为 Cisco NetFlow 设计的实用工具一起使用。
Traffic Flow 只能处理由路由器 CPU 处理的流量,因此 HW offloaded 流量不会出现在 Traffic Flow 流中(例如,HW offloaded 的桥接流量)。
Traffic-Flow 支持以下 NetFlow 格式:
- version 1 - 这是 NetFlow 使用的原始格式。它提供有关流经路由器的 IP 数据包的基本信息,但不支持诸如不同协议类型和 Type of Service (ToS) 等高级功能。
- version 5 - 对 Version 1 的增强,此格式支持诸如 Type of Service (ToS)、TCP 标志和自治系统编号等附加功能。除 version 1 之外,version 5 还可以包含 BGP AS 和流序列号信息。目前,RouterOS 不包含 BGP AS 编号。
- version 9 - 此版本引入了基于模板的导出格式,允许扩展并支持超出以前版本处理范围的新记录类型。它可以基于定义的模板导出数据,并且能够导出 IPv4 和 IPv6 流信息。
- IPFIX - 由 IETF 标准化,此协议基于 NetFlow Version 9。它进一步扩展了能力,允许更可定制和灵活的流记录。IPFIX 支持 NetFlow 未涉及的新技术,如组播。
通用
Sub-menu: /ip/traffic-flow
本节列出 Traffic-Flow 的配置属性。
| Property | Description |
|---|---|
| interfaces (string | all; Default: all) | 将使用这些接口的名称来收集 traffic-flow 的统计信息。要指定多个接口,请用逗号分隔。 |
| cache-entries (128k | 16k | 1k | 256k | 2k | ... ; Default: 4k) | 可同时存在于路由器内存中的流数量。 |
| active-flow-timeout (time; Default: 30m) | 流的最大生存时间。 |
| inactive-flow-timeout (time; Default: 15s) | 如果流处于空闲状态,保持其活动的时间。如果连接在此超时内没有看到任何数据包,则 traffic-flow 将把数据包作为新流发送出去。如果此超时过小,可能会产生大量流并使缓冲区溢出。 |
| packet-sampling (no | yes; Default: no) | 启用或禁用数据包采样功能。 |
| sampling-interval (integer; Default: 0) | 连续采样的数据包数量。 |
| sampling-space (integer; Default: 0) | 连续省略的数据包数量。 |
警告
info
数据包采样在 RouterOS v7 中可用。 在以下示例中:
/ip/traffic-flow/set packet-sampling=yes sampling-interval=2222 sampling-space=1111
将采样 2222 个连续数据包,然后省略 1111 个。然后采样周期以此方式重复。
目标
Sub-menu: /ip/traffic-flow/target
通过 Traffic-Flow target,我们指定将从路由器收集 Traffic-Flow 信息的主机。
| Property | Description |
|---|---|
| src-address (IP ; Default: ) | 发送 Traffic-Flow 统计信息时用作源的 IP 地址 |
| dst-address (IP; Default: ) | 从路由器接收 Traffic-Flow 统计数据包的主机的 IP 地址。 |
| port (Port; Default:2055) | 从路由器接收 Traffic-Flow 统计数据包的主机的端口 (UDP)。 |
| v9-template-refresh (integer; Default: 20) | 在多少数据包之后将模板发送到接收主机(仅适用于 NetFlow version 9 和 IPFIX) |
| v9-template-timeout (time; Default: ) | 如果模板尚未发送,超过多长时间后发送。(仅适用于 NetFlow version 9 和 IPFIX) |
| version (1 | 5 | 9 | IPFIX; Default: ) | 使用哪种 NetFlow 版本格式 |
IPFIX
Sub-menu: /ip/traffic-flow/ipfix
允许自定义流记录
| Property | Description |
|---|---|
| bytes | 流中处理的字节总数。 |
| ip-total-length | IP 数据包的长度(字节)。 |
| src-address | 流的源 IP 地址。 |
| dst-address | 流的目的 IP 地址。 |
| ipv6-flow-label | IPv6 头部中的 Label 字段,用于对流进行分类。 |
| src-address-mask | 源地址的网络掩码,在汇总数据时很有用。 |
| dst-address-mask | 目的地址的网络掩码。 |
| is-multicast | 指示该流是否为组播流。 |
| src-mac-address | 源 MAC 地址。 |
| dst-mac-address | 目的 MAC 地址。 |
| last-forwarded | 流中最后一个被转发数据包的时间戳。 |
| src-port | 源端口号。 |
| dst-port | 目的端口号。 |
| nat-dst-address | 经 NAT 转换后的目的 IP 地址。 |
| sys-init-time | 系统初始化时间,可用于时序分析。 |
| first-forwarded | 流中第一个被转发数据包的时间戳。 |
| nat-dst-port | 经 NAT 转换后的目的端口号。 |
| tcp-ack-num | TCP 连接中的确认号。 |
| gateway | 流所经路由的网关 IP 地址。 |
| nat-events | 与该流的网络地址转换相关的事件。 |
| tcp-flags | TCP 头部中的标志(例如,SYN、ACK)。 |
| icmp-code | 用于错误消息和操作信息的 ICMP 代码。 |
| nat-src-address | 经 NAT 转换后的源 IP 地址。 |
| icmp-type | ICMP 消息的类型,对诊断消息很重要。 |
| nat-src-port | 经 NAT 转换后的源端口号。 |
| tcp-seq-num | TCP 连接中的序列号。 |
| tcp-window-size | TCP 连接中的窗口大小,表示接收数据缓冲的规模。 |
| igmp-type | Internet Group Management Protocol 操作的类型。 |
| out-interface | 流的出站数据包所经过的接口。 |
| in-interface | 流的入站数据包所经过的接口。 |
| packets | 流中处理的数据包数量。 |
| ip-header-length | IP 头部的长度。 |
| protocol | 协议编号(例如,TCP、UDP、ICMP)。 |
| tos | IP 头部中的 Type of Service 字段,指示数据包的优先级和处理方式。 |
| ttl | 数据包的 Time To Live,由每个路由器递减以防止无限循环。 |
| udp-length | UDP 有效载荷的长度。 |
说明
通过查看 packet flow 图,您可以看到 traffic flow 位于 input、forward 和 output 链栈的末尾。这意味着 traffic flow 只会统计到达这些链之一的流量。
例如,您在交换机上设置了一个镜像端口,将镜像端口连接到路由器,并将 traffic flow 设置为统计镜像数据包。遗憾的是,这样的设置将无法工作,因为镜像数据包在到达 input 链之前就被丢弃了。
如果流量经过其他接口以及监控接口,这些接口也会出现在报告中。
示例
此示例展示如何在路由器上配置 Traffic-Flow
在路由器上启用 Traffic-Flow:
[admin@MikroTik] /ip/traffic-flow> set enabled=yes
[admin@MikroTik] /ip/traffic-flow> print
enabled: yes
interfaces: all
cache-entries: 4k
active-flow-timeout: 30m
inactive-flow-timeout: 15s
[admin@MikroTik] /ip/traffic-flow>
指定将接收 Traffic-Flow 数据包的主机的 IP 地址和端口:
[admin@MikroTik] /ip/traffic-flow/target> add dst-address=192.168.0.2 port=2055 version=9
[admin@MikroTik] /ip/traffic-flow/target> print
Flags: X - disabled
# SRC-ADDRESS DST-ADDRESS PORT VERSION
0 0.0.0.0 192.168.0.2 2055 9
[admin@MikroTik] /ip/traffic-flow/target>
现在,路由器开始发送带有 Traffic-Flow 信息的数据包。
信息
要将 ntop-ng 与 MikroTik 一起使用,您需要使用 Nprobe,这是付费软件。