基于流的技术被越来越广泛地用于刻画网络传输流,它在设置QoS 策略、部署应用和进行容量规划上都有着巨大的价值。但是,网络管理员却缺少一种输出传输流的标准格式。
IPFIX 全称为IP Flow Information Export,即IP数据流信息输出,它是由IETF公布的用于网络中的流信息测量的标准协议。该协议主要在于:
l 统一 IP数据流的统计、输出标准,这使得网络管理员很容易地提取和查看存储在这些网络设备中的重要流量统计信息。
l 输出格式具有较强的可扩展性,因此如果流量监控的要求发生改变,网络管理员也可通过修改相应配置来实现,不必升级网络设备软件或管理工具。
IPFIX 定义的格式以Cisco Netflow Version 9数据输出格式作为基础,可使IP流量信息从一个输出器(Exporter)传送到收集器(Collector)。因为IPFIX 是一种针对数据流特征分析、基于模板的格式输出的协议,因此具有很强的可扩展性,对于不同的需求都可以定义不同的数据格式。
为了较完整的输出数据,IPFIX 缺省使用网络设备的七个关键域来表示每股网络流量:
l 源 IP 地址
l 目的IP 地址
l TCP/UDP 源端口
l TCP/UDP 目的端口
l 三层协议类型
l 服务类型(Type-of-service)字节
l 输入逻辑接口
如果不同的IP 报文中所有的七个关键域都匹配,那么这些IP 报文都将被视为属于同一股流量。通过记录网络中这些流量的特征,如流量持续时间、流量中报文平均长度等, 我们可以了解到当前网络的应用情况,并根据这些信息对网络进行优化,安全检测,流量计费。
l Export 对网络流进行分析处理,提取符合条件的流统计信息,并将统计信息输出Collector ;
l Collector 负责解析Export的数据报文,把统计数据收集到数据库中,可供Analyser 进行解析;
l Analyser 从Collector 中提取统计数据,进行后续处理,为各种业务提供依据,以图形界面的形式显示出来。
-
图 3‑1IPFIX报文构成
IPFIX数据由报文头(Packet Header)以及流组(FlowSet)组成。
1.3.1 Packet Header3‑2 IPFIX Packet Header格式
Version:0x0009。
Count:报文中携带的记录的数量。
System Uptime:设备运行的时间,以ms为单位。
UNIX Seconds:从UTC时间1700 0时至现在的秒数。
Sequence:报文序列号,依次累加。
Source ID:取值为0。
1.3.2 FlowSetFlowSet有两种:模板流组合(Template FlowSet)以及数据流组合(Data FlowSet)。一个IPFIX报文可以有多个FlowSet。1.3.2.1 Template FlowSetTemplate FlowSet由多个模板记录(Template Record)组成。每个模板记录都定义了一个模板。模板用来规定对应的数据记录如何解释,Collector只能根据收到的模板来解释后续收到的数据。流记录模板组成的FlowSet格式如下。
图 3‑3 流模板的格式
FlowSet ID:流模板ID固定为0。
Length:FlowSet的总长度。
Template ID:用于数据与模板的对应。从256开始。
Filed Count:Template record的字段数。
Filed Type:字段类型,用数字表示。
Filed Length:Filed Type定义的字段的字节数。
IPFIX模板使用的字段类型定义如下。
类型值
英文名
中文含义
42
TOTAL_FLOWS_EXP
历史导出的流记录总数
41
TOTAL_PKTS_EXP
历史导出的IPFIX报文总数
1
IN_BYTES
输入字节数
2
IN_PKTS
输入报文数
21
LAST_SWITCHED
流最近被报文命中的时间
22
FIRST_SWITCHED
流被创建的时间
8
IPV4_SRC_ADDR
IP源地址
12
IPV4_DST_ADDR
IP目的地址
10
INPUT_SNMP
入端口的MIB索引
14
OUTPUT_SNMP
出端口的MIB索引
7
L4_SRC_PORT
源端口号
11
L4_DST_PORT
目的端口号
4
PROTOCOL
协议
5
SRC_TOS
源TOS
6
TCP_FLAGS
TCP标志
32
ICMP_TYPE
ICMP类型
23
OUT_BYTES
输出字节数
24
OUT_PKTS
输出报文数
表 3‑1 模板字段类型
1.3.2.2 Data FlowSetData FlowSet记录了流统计信息。一个Data FlowSet中可以放置多条流信息,一个IPFIX数据报文中也可以放置多个Data FlowSet。
图 3‑4 Data FlowSet的报文结构FlowSet ID:数据流集合的FlowSet ID是对应模板的模板ID,IPFIX根据这种对应关系才能正确解释数据信息。
Length:FlowSet的长度。
Padding:用于使FlowSet的长度按照32位圆整。Length的长度包含Padding。
l Usage-based Accounting(基于使用流量的计费)