开发者社区> 异步社区> 正文

《数据驱动的网络分析》——2.3 NetFlow

简介:
+关注继续查看

本节书摘来自异步社区《数据驱动的网络分析》一书中的第2章,第2.3节,作者: 【美】Michael Collins 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 NetFlow

NetFlow是Cisco开发的流量汇总标准,最初用于网络服务记账。虽然本意不是为了安全性,但是人们臆测NetFlow对此有益,因为它提供了紧凑的网络通信会话摘要,可以快速访问,并且包含了以相对紧凑的格式保存的最高价值信息。从1999年flow-tools软件包发布以来,NetFlow越来越多地用于安全分析,已经开发出了各种工具,这些工具为NetFlow提供了更多的字段,例如可选择的载荷片段。

NetFlow的核心是流(Flow)的概念,它与TCP会话近似。回忆前面介绍的知识,TCP会话在端点通过比较顺序号组装。在路由器判断处理多个TCP会话中包含的顺序号是不可能的,但是可以用超时值做出合理的估算。流是一组时间上很接近的同地址封包。

2.3.1 NetFlow v5格式和字段
NetFlow v5是最早的通用NetFlow标准,在讨论替代的版本之前,有必要介绍一下NFv5的字段值。NetFlow的字段如表2-2所示,大致分为3类:直接从IP封包中复制的字段、IP封包摘要字段和与路由相关的字段。


<a href=https://yqfile.alicdn.com/d12a2fa22769d6fd24892a453282356f02673484.png" >


<a href=https://yqfile.alicdn.com/bd4ed8eecbeb8b48dbc7c1c933ce4b3e8b7c6d16.png" >

  a这个值是路由器系统启动时间的相对值

NetFlow记录的srcaddr、 dstaddr、 srcport、 dstport、 prot和 tos字段直接从IP封包的对应字段复制。但是,对于IP协议族中的每个协议都会生成流,这就意味着,srcport和dstport字段严格来说是TCP/UDP专用的,不一定总是有意义的。在ICMP协议中,NetFlow在dstport字段中记录类型和代码,其他协议则忽略该值。

packets、dOctets、 first、 last和 tcp_flags字段都是从一个或者多个封包中汇总而得。packets和dOctets是简单的总和,需要注意的是,dOctets值是第3层的字节总数,也就是说包含了IP和协议报头(例如,没有载荷的单封包TCP流将记录为40个字节,而没有载荷的单封包UDP流将记录为28个字节)。first和last值分别是流中第一次和最后一次观察到封包的时间。

tcp_flags的情况特殊。在NetFlow v5中,tcp_flags字段由出现在流中的所有标志进行或运算求得。在形式合法的流中,这意味着SYN、FIN和ACK标志总为高值。

最后一组字段——nexthop、input、output、src_as、dst_as、src_mask和dst_mask都与路由相关。这些值只能在路由器上采集。

“流和内容”:NetFlow v9和IPFIX
Cisco开发了NetFlow的多个版本,最终NetFlow v5成为这个标准的主力实现。但是v5是一个受限和过时的标准,主要针对IPv4,而且是在流被广泛采用之前设计的。Cisco的解决方案是NetFlow v9,这是一个基于模板的流报告标准,路由器管理员可以用它指定包含在流中的字段。

之后,基于模板的NetFlow由IETF标准化为IPFIX1。IPFIX提供了几百种流字段,这些字段在RFC 5102中说明。该标准优先考虑的是网络监控和流量分析,而不是信息安全。为了处理可选的字段,IPFIX有一个“供应商空间”的概念。在开发SiLK工具包的过程中,卡内基梅隆大学的CERT网络态势感知小组在他们的IPFIX空间内开发了一组安全敏感字段,提供一组用于安全分析的有用字段。

2.3.2 NetFlow生成和采集
NetFlow记录由网络硬件设施(例如路由器或者交换机)直接生成,或者使用软件将封包转换为流。每种方法各有不同的优劣之处。

基于设施的生成手段使用的是硬件制造商提供的NetFlow机制。不同制造商使用类似但不同于Cisco的名称,例如Juniper Networks的Jflow和华为的NetStream。因为NetFlow由许多不同制造商提供,具有各种各样的规则,不可能在本书的范围内对必要的配置进行技术性探讨。但是,下面的经验法则值得一提。

NetFlow生成可能在路由器上造成性能问题,尤其是旧的型号。各个公司以不同的方式解决这个问题,包括降低该进程优先级(并抛弃记录)和将NetFlow生成任务卸载到可选(且昂贵)的硬件上。
大部分NetFlow配置默认采用某种形式的采样,以便降低性能负载。对于安全分析,NetFlow应该配置为提供未采样记录。
许多NetFlow配置提供一些汇总和报告格式,你应该采集原始的NetFlow数据,而不是汇总。
基于路由采集的替代方法是使用应用程序,如CERT的Yet Another Flowmeter(YAF)工具、softflowd 或者QoSient Argus 工具提供的大量流监控工具,从pcap数据生成NetFlow。这些应用程序将Pcap当成文件,或者直接从网络接口上采集封包并将其聚合成流。此类传感器缺乏路由器的观察点,但是同时能够提供更多的处理资源,分析封包和生成更加丰富的NetFlow输出,包含深度封包检查等功能。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
西门子Softnet驱动的成功开发
前段时间用西门子提供的Prodave5.5开发了基于YFIOServer的驱动程序,很可惜以太网方式它不支持,所以只好用西门子的softnet来开发相应的驱动了
482 0
功能大图之集成:如何将业务系统的数据抽取汇聚到数据中台
本文将介绍Dataphin的集成功能模块在产品大图中的定位,系统地介绍了集成的能力以及集成场景的关注要点。
140 0
Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
1049 0
Netflix开源面向稀疏数据优化的轻量级神经网络库Vectorflow
在Netflix公司,我们的机器学习科学家在多个不同的领域处理着各种各样的问题:从根据你的爱好来定制电视和推荐电影,到优化编码算法。我们有一小部分问题涉及到处理极其稀疏的数据;手头问题的总维度数很容易就能达到数千万个特征,即使每次要看的可能只是少数的非零项。
4374 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载