基于Flow的IP流量测量技术正在被广泛应用于流量整形、流量工程、网络规划、入侵检测以及Qos保证等领域。
无论是MIB(管理信息库)还是后来的RMON(远程监控),SNMP(简单网络管理协议)所关注的都是网络设备状态信息,如接口吞吐率、收到的坏帧数量、CPU/RAM利用率等。而Flow技术所关注的是链路上所传输流量的特征信息,而这些信息能够更直接地反映出当前的网络状态以及用户所得到的真实的服务质量水平,Flow记录能够提供传统SNMP MIB无法比拟的丰富信息。
然而,在实际应用中,目前存在很多大厂商自己定义的Flow格式和IP流输出系统,但是这些系统之间缺乏兼容性,这就无法满足大规模异构网络中应用的需要,我们需要一种统一的输出流格式。因此,无论是在学术界还是工业界,都有必要建立一套输出IP流信息的标准。
IETF正在开发一项IP流信息导出(IPFIX)建议标准,IPFIX定义了一种路由器和交换机向网络管理系统输出流量数据的方法,如果这项标准得到采用,它将被应用到Cisco、 Nortel等厂商的网络设备中,符合IPFIX的管理产品将能够采集和分析流量数据,并将流量数据与管理控制台中的应用性能指标建立关联。IPFIX将以一种灵活的可扩展的输出流格式为用户提供更加丰富细致的流量信息。
Flow技术概述
最初,Flow是网络设备厂商为了在网元设备内部提高路由转发速度而引入的一个概念,其本意是将路由表软件查询功能部分转移到硬件实现的快速转发模块上(如Cisco的CEF),在这种功能模块中,通过匹配一些给定的字段将数据包归并到特定的集合中,这个集合就是Flow。
每个Flow的第一个数据包除了促成该Flow记录的产生以外,还要驱动网元三层模块完成路由查询,并将查询结果放入Flow记录中,而该Flow的后续数据包将直接在Flow的已有记录中获得路由转发信息,从而提高网元设备的路由转发效率。
Flow具有比Session更加全面的标识特征,除了五元组以外还增加了ToS服务类型、输入接口号等字段,通过这些字段就可以惟一地标识一个Flow,任何一个字段的差异都意味着一个新Flow的产生。
目前业内存在一些不同版本的Flow,Flow的版本差异通常直观地表现在其输出报文格式上,这些Flow所定义的字段和数量随着厂商及协议版本的不同而各有不同(如包含自治域号、下一跳等)。
在这些不同版本的Flow中,Cisco公司的NetFlow获得最大范围的应用。目前NetFlow已经发展到了第9版,Juniper公司的CFlowd推出后缺乏厂商的有效支持,HP和NEC等公司联合推出的sFlow在实时性方面表现较好,华为公司的Net Stream和Cisco的NetFlow非常相似,而IPFIX则是完全基于Net Flow第9版设计的IETF的草案标准。随着IETF对IPFIX的标准化,网络流量分析的数据采集协议必将逐步统一到IPFIX上来。
IPFIX工作机制
IPFIX系统包括三个部分:
1. 描述流信息的数据模型;
2. 输出设备,通常是路由器、交换机或其它测量设备,用于导出流数据;
3.采集设备,通常是服务器,用于采集流数据。
IPFIX 要达到下述目标:
1. 定义“标准IP流”的概念。类似的定义在实践中已经广为应用,这里要做的就是把它们标准化。
2. 在分组采样的基础上考虑IP流信息的概念。
3. 考虑影响到流数据的安全和隐私问题,为输出的流数据选择安全的传送。
4. 规定将IP流信息在传输层上的传送方式。
5.保证流输出系统的可靠性。
IPFIX工作原理
IPFIX提供了一种数据交换方式,它记录并导出所有经过网络上观测点的流量信息,IPFIX的工作流程依次可以分为流生成、流老化、流导出和流采集这四个步骤,图1所示为IPFIX的工作原理。
流生成
IPFIX根据以下七元组来确定一个流:源IP地址、目的IP地址、源端口、目的端口、三层协议类型、服务类型字节和输出逻辑接口。七元组相同的IP包被归入同一个流,并且,IPFIX流是在一个源IP地址和目的IP地址之间传输的单向数据流。
IPFIX设备上的每个观测点上至少有一个测量进程,测量进程主要负责创建新的流记录、更新存在的流记录、计算流记录的统计信息。测量进程根据七元组将通过观测点的每个IP包归并到相应的流,如果该IP包属于一个已经存在的流,则更新该流的统计信息,否则,创建一个新的流,同时生成IPFIX缓存。
流老化
流老化就是当达到一定条件时终止该流记录并清空其缓存空间的操作,流老化是测量进程的一项主要功能。当一个流满足如下三个条件之一时需要进行老化处理:
(1) 在指定的时间长度内没有属于该流的数据包到达;
(2) IPFIX设备的缓存空间耗尽;
(3) 长连接会话强制超时。
流导出
当一个流老化后,流导出器上的导出进程负责把测量进程产生的流记录用IPFIX协议发送给一个或多个IPFIX流采集器,一方面,导出进程需要和测量进程交互以获取流记录,另一方面,导出进程要向流采集进程发送数据。
在观察域上可以定义一些规则来有选择性地导出一些流记录,比如:只导出发往某一特定目的地址的流记录。导出进程决定一个被老化流的导出时机,一个流要被导出必须首先满足上述三个老化条件之一。对于长连接会话的流,也可以配置一定的导出策略。
一个IPFIX设备必须能够通过拥塞感知的传输协议传输其控制信息和数据流,如果IPFIX设备所在的网络无法保证传输可靠性,那么,至少应该保证控制信息传输的可靠性,而数据流的传输则可以使用可靠的或不可靠的传输协议。IPFIX默认使用流控传输协议SCTP作为传输层协议,TCP和UDP作为备选协议。
流采集
流采集器上的流采集进程的主要功能包括:
1.接收并解析IPFIX消息;
2.接收、存储控制信息;
3. 使用控制信息解析并存储从IPFIX设备来的流记录。
IPFIX具有基于模板的数据导出格式,每个模版都有一个ID号,IPFIX导出器向IPFIX采集器发送模板定义,采集进程就可以根据流记录的模板ID来解析流记录的各个字段,并将流记录存储到本地设备上。由于导出的数据都以一种标准的格式存在,所以,用户可以自由地添加或修改一些字段,并参照这些字段来监视IP流量的变化情况,当需要支持某种新的格式或以不同的标准查看流量信息时,由于使用了基于模板的灵活数据格式,我们将不再需要对软件进行频繁的修改,因此也就具备良好的可扩展性。
IPFIX中Flow技术的优点
IPFIX的Flow技术提供了流量分析系统与主流网络设备之间数据采集接口的规范,定义了数据交互的标准格式,保证了对采集目标网元设备良好的兼容性,这种规范标准必将为业内大多主流网络设备所支持。
1.Flow使高速链路实时流量检测成为可能。
相对于SNMP或者SPAN镜像方式,Flow允许对目标流量进行适当的采样和聚集,如基于帧采样、基于时间采样、伪随机方式采样等,能将原有高速流量进行几乎不失真的缩小处理,从而能够在不影响准确率的前提下有效降低对分析系统处理能力的要求,为流量分析系统在高速链路上的部署提供了可能。
2.Flow可有效支持监测目标网络的平滑扩展。
IPFIX通过模板方式实现了对未来功能扩展的支持,允许分析系统在无需修改代码的情况下实现功能扩展,而且IPFIX可变的抽样率和不失真的采样操作,能够满足监测目标网络包括容量、功能在内的多方面升级扩展需求。
3.Flow提供实现针对性应用内容检测的可行性。
IPFIX在进行流量信息导出的同时,并没有忽视对应用层内容安全的保护。入侵检测应用能够从IPFIX的采集器中导出的流记录信息中分析检测出攻击流量和可疑会话的端口信息,从而为网管调整安全策略提供了支持。
4.Flow具备更详尽的会话描述能力。
IPFIX缺省提供了多种字段类型,并允许通过模版和聚集机制进行任意组合、汇聚,能够详细描述流量分布的各类特征,为快速、准确地进行流量分析提供了坚实的数据基础。
IPFIX与SNMP的不同
IPFIX与SNMP的主要差异表现在:
1.IPFIX关注流量特征,而SNMP关注设备状态;
2.IPFIX直接围绕Session会话连接进行数据提取,而SNMP则以物理接口为基本单位进行数据统计;
3.IPFIX采用数据主动推送技术,SNMP则主要采取被动轮询机制;
4.IPFIX比SNMP的数据信息更为丰富、描述能力更强;
5.IPFIX支持采样操作,具备良好的可扩展性,能够更好适应高端网络需求;
6.IPFIX的流记录能够提供传统SNMP MIB无法比拟的丰富信息,具备更细致的标识特征。
IPFIX在流量分析技术中的应用
RFC 3917定义了IPFIX的一些重要的应用需求,包括基于使用的统计、流量整形、流量工程、入侵检测和QoS监测。
例如,支持IPFIX的基于使用的统计数据可以被计费系统所使用,可以针对每个独立的用户也可以针对一个用户组,可以按照时间统计也可以按照用户所使用的具体的服务来统计。
流量整形是一个采用一些能反映流的关键特征(比如流的持续时间、流量)的模型对IP流进行特征化的过程,它被广泛应用于网络规划、趋势分析、网络业务部署等领域。
流量工程包括网络流量的测量、建模、特征化和控制,流量工程的目标是优化网络的资源配置和优化流量性能。
捕获并分析流量信息对于网络安全具有十分重要的意义,由于DDOS攻击行为具有一定的流量特征,入侵检测应用能够从IPFIX的采集器中导出的流记录信息中分析检测出攻击流量。
Qos监测是一种针对IP流的被动测量方式,不同于主动测量,被动测量利用网络中现有流量进行Qos分析,支持IPFIX的应用可以通过读取服务类型字节,显示每一个等级的QoS服务所消费带宽的数量,此外,还可以根据服务类型策略对应用和用户进行分类。
IPFIX标准化工作进展
从1996 年起,IETF就开始对流量工程有关的领域进行了跟踪,并成立了很多相关的工作组,IPFIX就是其中的一个工作组。
IPFIX标准源于思科的NetFlow,它以NetFlow version 9为基础,在这个版本中引入了模板的概念来描述流记录,这为系统带来了很好的可扩展性。在IPFIX的RFC3917被提议后,IETF一直在做流导出的标准化工作,目前RFC 3917已被提交给IETF进行最后的审批。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。