东软NetFlow技术连载栏目
流量分析新贵-----NetFlow
文:东软 姚伟栋
IP网络承载能力与所提供的应用业务规模向来都是相辅相成的,一方面IP网络的建设将给新应用技术的推广提供有效的实施平台,另一方面应用业务也会随着自身系统发展需要而对现有IP网络提出更高的资源需求,从而推动IP网络基础建设进入新的建设周期。在这种类似于“鸡生蛋、蛋生鸡”的逻辑悖论中,另外一个问题却是毋庸置疑的凸现了出来,那就是如何把应用业务与其所占用的IP资源(如带宽)清晰、准确的对应起来,如何保证有限的IP资源能够被合理应用的到主要利润业务中。
以NetFlow为代表的Flow技术正是为响应这种挑战而出现的新型解决途径。
什么是Flow
在最开始,Flow是网络设备厂商为了在网元设备内部提高路由转发速度而引入的一个技术概念,其本意是将高CPU消耗的路由表软件查询匹配作业部分转移到硬件实现的快速转发模块上(如Cisco的CEF模式)。在这种功能模式中,数据包将通过几个给定的特征定义归并到特定的集合中,这个集合就是Flow。每个Flow的第一个数据包除了促使该Flow记录的产生以外,还要驱动网元三层模块完成路由查询并将查询结果同期放入Flow记录中,而该Flow集合的后续数据包将直接在Flow的已有记录中获得路由转发信息,从而提高了网元设备的路由转发效率。
作为网元设备内部路由机制优化的副产物,Flow记录能够提供传统SNMP MIB无法比拟的丰富信息,因此Flow数据被广泛用于高端网络流量测量技术的支撑,以提供网络监控、流量图式分析、应用业务定位、网络规划、快速排错、安全分析(如DDOS)、域间记帐等数据挖掘功能。
相对于会话(“Session”)而言,“Flow”具备更细致的标识特征,在传统的TCP/IP五元组的基础上增加了一些新的域值,至少包括以下几个字段:
Ø 源IP地址
Ø 目的IP地址
Ø 源端口
Ø 目的端口
Ø IP层协议类型
Ø ToS服务类型
Ø 输入物理端口
以上七个字段可以唯一地确定任意一个数据包属于哪个特定的Flow,换而言之任何一个字段出现了差异都意味着一个新Flow的发生。
在实际软件实现中,Flow所包含的字段定义及数量将会随着厂商甚至协议版本的不同而出现变化(如包含AS信息、Next_Hop等),业界因此也相应地出现了各种不同的实现版本。而在这些不同的Flow版本中,NetFlow得益于Cisco公司在网络设备行业内无与伦比的领袖地位而获得最大范围的认同。
有多少种Flow
Flow的版本差异通常直观的表现在其输出报文格式上。目前业内常见的主流Flow格式大致有以下几种:
表格2 业内常见的Flow类型
随着IETF对IPFIX的标准化,网络流量分析的数据采集协议也将也将逐步转移到NetFlow V9/IPFIX标准上来。因此,下文将以NetFlow V9为例介绍Flow的详细内容。
NetFlow的运行机制
NetFlow的运行可分解为以下几个关键功能单元,包括:
3.1 Cache缓存空间
NetFlow Cache是所有活跃Flow统计信息的存储位置,所有具备相同关键字段的数据包都将在该Cache相应表项中进行数据累计,如数据包数量、字节数等。除了被称之为Main Cache的上述缓存之外,部分支持Aggregation机制的网元设备还需提供相应的聚合缓存(Aggregation Cache),最终的输出报文将包含该聚合缓存的汇总结果,从而能够有效降低NetFlow流量对网络带宽的占用;
3.2 可配置的Cache维护机制
一般情况下Cache空间的占用是与所监控的Flow数量呈正比的,但是当链路中充斥着大量的短连接Session时,Flow表项数量可能会因为没有得到及时释放而过多占用有限的Cache空间。为此,NetFlow提供了一种非常复杂、高效的算法以快速定位一个数据包在该Cache中的位置或判断是否应新建表项,并且通过管理员给定的阀值进行各类表项的超时导出,从而及时释放老的表项以容纳新建Flow信息。
Cache表项Timed-Out操作可由以下几项因素进行驱动:
Ø 该表项已经空闲了指定的时间长度(Inactive Timer,缺省15 seconds);
Ø 长连接会话强制超时(Active Timer,缺省30 minutes);
Ø 缓存空间耗尽所触发的强制超时;
Ø TCP FIN/RST触发的超时。
3.3 规范的导出报文格式
NetFlow采用了主动式数据推送机制,当Cache表项超时后,网元设备中的NetFlow Agent将通过规范的报文格式将超时表项数据送往指定主机(须事前指定IP地址、协议和端口)。虽然NetFlow在设计中可以接受任何传输层协议作为承载协议,但在一般实现中通常采用UDP作为缺省选择,我们平时所看到的各种Flow协议版本主要描述了这种报文导出格式的定义。
NetFlow的封装格式分为1个Header和若干个Record:
Ø Header:主要包括版本号、序列号、后续Record数量、系统启动时间等;
Ø Record:提供对每个Flow的详细数据记录。
下文以NetFlow V9为例,输出报文Header与Record整体结构如下所示:
在上述格式中,各字段的具体含义描述如下:
表格3-3 NetFlow V9各字段含义
3.4 NetFlow V9的特色
相对于较老的V5而言,NetFlow V9作为最新版本,主要体现出了以下两个技术特色:
Ø Aggregation功能:在高端路由器上启用NetFlow时有可能产生较大的数据输出。为有效降低NetFlow报文对资源的占用,其中一个有效的方法就是利用Aggregation的聚合作用(另外一个方法就是提高Sampling抽样率)。NetFlow V9提供了11种Aggregation方案,分别基于AS、Destination_Prefix、Prefix、Protocol_Port、Source Prefix、AS_ToS、Destination_Prefix_ToS 、Prefix_ToS、Protocol_Port_ToS、Source Prefix_ToS、Prefix_Port进行数据汇总,能够有效降低NetFlow数据对传输带宽和处理主机的资源占用,提高了NetFlow在高端网络中的适用性;
Ø Template功能:NetFlow V9是首先对Template进行支持的版本,通过Template功能NetFlow V9获得了前所未有的扩展灵活性。Template描述了NetFlow输出记录的各字段定义,无需改变现有规范即可支持将来可能出现的增强功能,从而无需重新编译、修改流量采集分析系统即可快速支持新增功能特征。
NetFlow与SNMP的不同
无论是MIB还是后来的RMON,SNMP所针对的信息一般都围绕网元设备展开,如Interface吞吐率、接收到的坏帧数量、CPU/RAM利用率等。而NetFlow正如同它的名字一样,其所关注的重点在于网络链路上所传输流量的特征信息,并且这些信息能够更直接的反映出当前网络上访问行为分布以及合同客户此时所得到的真实的服务质量水平。
NetFlow与SNMP的主要差异可以从以下几点得到说明:
Ø NetFlow关注流量特征,SNMP关注设备状态;
Ø NetFlow直接围绕Session会话连接进行数据提取,而SNMP则以物理接口为基本单位进行数据统计;
Ø 从Agent角度来看,NetFlow采用数据主动推送技术,SNMP则主要采取被动轮询机制;
Ø NetFlow数据信息更为丰富、描述能力更强;
Ø NetFlow支持抽样操作,具备良好的扩展弹性,能够更好适应高端网络实际需求;
Ø SNMP功能通常随着设备销售而免费提供,而在很多现有设备中,NetFlow作为增值功能则需要额外购买许可License或特定软件包。
因此,在网络流量测量及分析系统中,如异常流量分析系统,NetFlow已经成为一个重要的数据提取方式,为高端网络骨干链路的实时流量采集分析提供高效、准确的数据摘要提取服务,是网络流量分析阵营不可或缺的基础技术。
NetFlow在流量分析技术中的应用
正是由于Flow技术突出的技术优势,在东软公司NTars异常流量分析与响应系统中,NetFlow被作为基本的数据采集手段而获得支持,为NTars在电信运行商和其他高端行业用户流量分析市场的应用提供了重要的技术保障。
NTars异常流量分析与响应系统是综合了流量采集、行为分析、实时监控、蠕虫监测、垃圾邮件监测、网络管理、设备管理、安全响应、应用审计、内容检测、路由分析等功能的复合体,覆盖了安全检测系统(如IDS)、安全防护系统(如防火墙)、网络管理系统(如通用网管系统)多个传统职能范围,是面向高端骨干网络提供跨越安全体系与网管体系的综合运行维护系统。
NetFlow、Sflow、Cflowd、NetStream是NTars系统最基本的数据采集手段。得益于Flow技术的强大支持,NTars充分体现了其在高端网络骨干链路中实时流量分析的适用性:
Ø Flow提供了NTars与主流网络设备之间数据采集接口的规范性。无论是哪种Flow格式,都定义了数据交互的标准格式,NTars系统能够通过这些格式规范支持业内几乎所有的主流网络设备,如Cisco、Foundry、Extreme、Juniper、华为等,保证了对采集目标网元设备良好的兼容性;
Ø Flow使高速链路实时流量检测成为可能。相对于SNMP或者SPAN镜像方式,Flow允许对目标流量进行适当的抽样采集和汇总,如基于帧抽样、基于时间抽样、伪随机方式抽样以及Aggregation方案等,能够将原有高速流量进行几乎不失真的缩小处理,从而能够在不影响准确率的前提下有效降低对分析系统处理能力的要求,为NTars在高端网络10G以上链路的部署提供了可能;
Ø Flow可有效支持监测目标网络的平滑扩展。Flow通过Template实现了对未来功能扩展的支持,允许分析系统在无需重编译的情况下快捷的实现功能扩充,而且Flow可变的抽样率和不失真的采样操作,能够满足监测目标网络包括容量、功能在内的多方面升级扩展需求;
Ø Flow提供实现针对性应用内容检测的可行性。NTars在进行流量统计分析的同时,丝毫没有忽视对应用层内容安全的保护。SPAN是NTars进行应用层内容检测的主要数据来源。由于SPAN是与物理/逻辑端口相关联的,而Flow能够告诉NTars当前可疑会话的出入端口信息,从而为NTars调整SPAN策略提供了信息支持;
Ø Flow具备更详尽的会话描述能力。在NetFlow V9中,缺省提供了多达89种字段类型,并允许通过Template和Aggregation机制进行任意组合、汇聚,能够详细描述流量分布的各类特征,为NTars快速、准确的完成流量分析提供了坚实的数据基础。
虽然NTars系统可通过Flow、SPAN/TAP/分光、SNMP多种方式实现数据信息采集,但正是由于Flow技术的上述特点才使得NTars系统真正具备了高端网络骨干链路实时监测能力,尤其是在未进行应用层内容检测的情况下,Flow几乎可以提供Ntars所需的全部检测流量特征信息,已经成为异常流量分析系统运行最基本的技术要求。