首页> 中国专利> 基于Linux内核的高速网络流量测量器及流量测量方法

基于Linux内核的高速网络流量测量器及流量测量方法

摘要

一种基于Linux内核的高速网络流量测量器及流量测量方法,涉及计算机网络技术。该流量测量器主要包括:数据采集模块、报文匹配模块、流超时卸出模块,数据采集模块提取的数据报文的“流”特征域通过映射缓冲区传递给报文匹配模块进行数据处理,采用用户空间到内核缓冲区映射与高速流匹配的hash桶查找两种方法,有效解决了数据报文丢失,海量数据报文匹配的问题,减少系统调度开销,能够有效提高查询效率。本发明可广泛用于网络计费、网络安全、网络拓扑分析等与流量工程相关的领域。

著录项

  • 公开/公告号CN1700664A

    专利类型发明专利

  • 公开/公告日2005-11-23

    原文格式PDF

  • 申请/专利权人 重庆邮电学院;

    申请/专利号CN200510057116.X

  • 发明设计人 唐红;赵国峰;张毅;徐川;朱亮;

    申请日2005-06-10

  • 分类号H04L12/26;H04L12/24;

  • 代理机构重庆市恒信专利代理有限公司;

  • 代理人刘小红

  • 地址 400065 重庆市南岸区黄桷垭堡上园1号

  • 入库时间 2023-12-17 16:46:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-31

    未缴年费专利权终止 IPC(主分类):H04L12/26 授权公告日:20070530 终止日期:20180610 申请日:20050610

    专利权的终止

  • 2013-11-06

    专利权的转移 IPC(主分类):H04L12/26 变更前: 变更后: 登记生效日:20131008 申请日:20050610

    专利申请权、专利权的转移

  • 2013-11-06

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/26 变更前: 变更后: 申请日:20050610

    专利权人的姓名或者名称、地址的变更

  • 2007-05-30

    授权

    授权

  • 2006-01-18

    实质审查的生效

    实质审查的生效

  • 2005-11-23

    公开

    公开

查看全部

说明书

技术领域

本发明涉及计算机网络技术,尤其是涉及高速网络的流量测量技术。

背景技术

网络流量测量主要是对网络的“业务流”进行测量和分析,以掌握网络的流量特性,如协议的使用情况、应用的使用情况、用户的行为特征等,用于指导网络资源规划、用户流量统计和流量调整,以更好地管理网络和改善网络的运行。

网络流量测量的有效性取决于对数据报文的捕获,然而光通信网络的应用使得网络速度大幅提高,骨干网络的链路速度已经达到1Gbps/s~10Gbps/s,网络速度的提升给网络流量测量带来更大的困难。目前,大多数网络测量器已经远远不能满足高速网络流量测量的要求。

与本发明最接近的现有网络测量技术为LinuxFlow及TICKETing技术,LinuxFlow(LI Zhichun,ZHANG Hui,YOU Yue,HE Tao.“Linuxflow:A HighSpeed Backbone Measurement Facility”Passive and Active MeasurementWorkshop(PAM)2003,La Jolla,California,USA,April,2003。)技术能够在千兆链路环境下测量网络流量的测量系统,它修改了Linux内核的网络协议栈,专门设计了一个包括3个模块的包捕获协议栈,通过加入过滤器,使内核只复制需要测量包的信息,这个测量工具可对1Gbps链路进行测量。但是,该方法采用了修改内核建立内核中独立的流量采集协议栈方法,不仅复杂,可扩展性不好,而且在内核实现包过滤一般会采用BPF(BSD PacketsFilter)的CFG(Control Flow Graph)模式,这种方法编制过滤规则复杂,需要专门的训练,同时,规则数不能太多(一般几十个到几百个);而且对该协议栈的应用还是以系统调用API的形式提供,这种系统调用直接带来的是上下文切换,消耗大量的CPU系统资源。

发明内容

本发明所要解决的技术问题是:设计一种适合于高速网络环境下的流量测量器,及监测流量的方法,解决现有高速网络流量器的设计中,报文捕获模块的系统上下文切换、消耗大量的CPU系统资源、流匹配模块中的报文匹配效率、可扩展性不好等急需解决的问题,针对上述问题,我们提出相应的解决方案。

本发明设计的高速网络流量测量器主要包括以下三个模块:数据采集模块、报文匹配模块、流超时卸用模块。

数据采集模块:基于INET socket(TCP/IP协议所支持的地址族套接字)层构建,连接网卡,主要负责采集由网卡捕获被操作系统内核空间得到的数据报文拷贝,提取数据报文的“流”特征域;

报文匹配模块:本模块负责把从数据采集模块得到的报文进行“流”特征域匹配,得到流记录;

流超时卸出模块:本模块负责监控流匹配缓冲区中的流记录,将超时流记录从缓冲区中卸出,通过IPFIX(IP流信息导出协议)协议将流记录传递到数据分析主机。

数据采集模块提取的数据报文的“流”特征域通过映射缓冲区传递给报文匹配模块进行数据处理。

在用户空间开辟一块缓冲区,映射缓冲区采用双向链表的方式进行内存块的格式化,用前向与后向指针将格式化好的内存块串成一个循环链表,然后将其前向与后向指针分别映射到内核空间与用户空间。

报文匹配模块采用一种高速的流匹配hash(哈希)查找,把传统的大的缓冲区划分为多个较小的缓冲区,是基于端口的hash桶查找,能够有效的提高查询效率。

本发明还提供了一种测量高速网络流量的方法,该方法包括以下步骤:

1、将网卡设置为混杂模式,配置好系统初始参数,建立映射缓冲区、端口hash桶缓冲区和二级缓冲区;

2、测量器从内核INET socket(TCP/IP协议所支持的地址族套接字)层得到IP包,由数据采集模块进行IP包信息提取,向映射缓冲区中写入报文记录;

3、报文匹配模块从映射缓冲区中得到报文记录,将其放入相应的端口hash(哈希)桶中进行快速流匹配;

4、如在端口hash桶中匹配到相应的流记录,则刷新该流记录,如未能匹配,则在二级缓冲区中进行流匹配,如还是未能匹配,则创建新的流记录,匹配成功就刷新该流记录;

5、定时启动流超时卸出模块,对hash桶缓冲区、二级缓冲区中的流记录使用IPFIX防议进行“导出”。

采用本发明的高速网络流量测量器及流量测量方法,直接由数据采集模块通过缓冲区映射传递给报文匹配模块进行数据处理,减少系统调度开销;采用缓冲区映射,能有效采集报文数据,减少丢包;把传统的大的缓冲区划分为多个较小的缓冲区,能够有效的提高查询效率,采用模块化结构,增强了系统的可扩展性。本发明适用于高速网络环境下的流量测量。

说明书附图

图1高速网络流量测量器体系结构

图2采用缓冲区映射的报文捕获模式示意图

图3高速流匹配的hash桶查找示意图

图4高速流匹配流程

图5本发明流量测量器测量流程

具体实施方式

如图1所示为基于Linux内核的高速网络流量测量器Traflow(网络流量“流”测量系统)体系结构示意图,该流量测量器主要由以下三个模块组成:

①数据采集模块,此模块主要负责采集由网卡捕获被操作系统内核空间得到的数据报文拷贝,提取数据报文的“流”特征域。数据采集模块是基于INETsocket层,直接由数据采集模块通过缓冲区映射传递给报文匹配模块进行数据处理,不经过BSD socket(伯克利套接字)层,这样减少系统调度开销。

②报文匹配模块,本模块负责把从数据采集模块得到的报文进行“流”特征域匹配,得到流记录;传统的匹配方案采用分段或中间查找进行流匹配,查找速度慢,影响系统性能,Traflow采用一种新的hash桶匹配方案形成流纪录,把传统的大的缓冲区划分为多个较小的缓冲区,能够有效的提高查询效率。

③流超时卸出模块,本模块负责监控流匹配缓冲区中的流记录,将超时流记录从缓冲区中卸出,通过IPFIX协议将流记录传递到数据分析主机。IPEIX协议是一个高效的、标准化的IP流量测量系统导出协议,在IETF领导下的IPFIX工作组通过对各种候选协议进行认真地评估、比较后,以NetFlow V9为基础进行修改而提出的。

为了解决在高速网络环境下的高数据报文丢失率问题,Traflow系统在报文捕获模块采用了用户空间到内核缓冲区映射的方法,避免了传统系统每次只能存取一个数据报文的缺点。

如图2所示为采用缓冲区映射的报文捕获模式示意图,在用户空间开辟一块缓冲区,缓冲区的大小与网络速度成正比,关闭测量系统时将由计算模块估计出缓冲区大小范围值k,写入配置文件set.ini;系统启动时,将set.ini配置数据读入系统,缓冲区大小=k*一条流记录大小,开辟相应内存块。

映射缓冲区采用双向链表的方式进行内存块的格式化,用前向与后向指针将格式化好的内存块串成一个链表循环,然后将其前向与后向指针映射到内核空间。在用户空间将其头、尾(当前指针记为UP1、UP2、UPC),对应的内核空间映射指针为KP1、KP2、KPC,使得用户空间与内核空间都拥有该映射缓冲区在各自空间的镜像。

当用户空间从缓冲区的末尾开始前向读取数据报文,记录其指针位置UPC(用户空间当前位置指针);在内核空间从缓冲区的头部后向填充数据报文,同样记录指针位置KPC(内核空间当前位置指针)。对指针进行同步与互斥,我们使用了系统时钟中断的方法,每一个时钟中断的周期取决于系统的jiffies(时基)值,即一个CPU tick。Linux系统时钟的频率由一个常数HZ决定,它的大小为100,也即每10ms一个时钟中断,保证了用户空间与内核空间对映射缓冲区进行读写操作的原始性。

这样用户空间与内核空间就可以同时对数据报文进行读写操作,使得报文处理进程与捕获进程利用效率将达到最大,能够有效的提高报文捕获能力即S,使得S≈实际网络数据报文数,极大地降低了数据报文丢失率。

在报文匹配模块中采用高速流匹配的hash桶查找,如图3所示,从内核采集的数据报文在用户空间的报文处理模块进行报文->流的归并,划分流的方法采用五个域:源ip、目的ip、协议、源端口和目的端口。端口号用来划分应用层的服务类型,可根据服务类型划分几种主要的流,如目前占Internet总流量85%的http流,ftp流,多媒体流等。高速网络环境中海量的数据报文匹配需要相当大的系统消耗,采用本发明的基于端口的hash桶查找,把传统的大的缓冲区划分为多个较小的缓冲区,能够有效地提高查询效率。

初始化时按源和目的端口80、20、21、23和其它开辟九个hash桶缓冲区,hash桶的大小由系统启动时动态设定,80端口hash桶肯定比其余端口hash桶大。每个端口hash桶的数据空间用流记录结构体进行格式化,然后将格式化的所有流记录空间使用双向链表链接起来,最后分别将所有hash桶的头指针Port_PH、尾指针Port_PO和当前指针位置Port_PC存储到相应的控制表中。

对数据报文匹配采用分级查找的方法,具体流程见图4所示。当到达一个报文,根据它的端口号落入相应的hash桶,得到该hash桶的当前指针位置Port_PC与它间隔最近的流记录开始匹配,由于属于同一个流的报文具有连续性,此方法能够快速的查找报文属于的流。如果是一个新的流记录,则创建一个新流,并更新当前指针位置;如果该数据报文端口不在这些端口hash桶之内,就将该报文放入二级缓冲区中进行查找。

如图5所示,为采用本发明的高速网络流量测量流程,流量测量器的测量流程主要包括如下五个步骤:

1、网卡设置为混杂模式,配置好系统初始参数(包括映射缓冲区、hash桶缓冲区与二级缓冲区的大小等参数),建立映射缓冲区、hash桶缓冲区和二级缓冲区,启动数据采集、报文匹配与流超时卸出模块;

2、从内核INET socket层得到IP包,由数据采集模块进行IP包信息提取,将包头信息组装成报文,向映射缓冲区中写入报文记录;

3、同时报文匹配模块从映射缓冲区中得到报文记录,根据报文的端口号将其放入相应的端口hash桶中进行快速流匹配;

4、在报文匹配中,如未能在端口hash桶缓冲区中匹配到相应的流记录,就转入二级缓冲区中进行匹配,如果还是没有流记录与其匹配,则在相应的端口hash桶缓冲区中创建新的流记录,并将该hash桶缓冲区当前指针指向此条流记录;如有流记录与其匹配,则刷新该流记录,并将当前指针指向此条流记录;

一定时间间隔后,启动流超时卸出模块,对hash桶、二级缓冲区中的流记录进行“导出”。对于TCP(传输控制协议)流,通过FIN(发端完成发送任务)位来判断其是否超时,UDP(用户数据报协议)流通过其“不活跃”时间判断其是否超时。将“导出”后超时的流记录通过IPFIX协议发送给数据库服务器进行存储,以待分析。

本发明的网络流量测量器及测量方法,与传统的报文捕获模式比较,具有以下优点:

·支持内核中数据缓冲,数据采集模块把所接收到的数据缓冲到内存中,从而能够更有效地采集网络报文数据,减少丢包;

·支持一个系统调用读取多个报文的能力;

·支持报文捕获的零拷贝机制,用户空间数据处理模块与内核空间数据采集模块共同操作映射缓冲区,能够有效提高捕获效率;

·流匹配算法中,将大缓冲区划分为多个较小的缓冲区,减少资源消耗,提高查询效率;

·采用双向循环链表的设计,由于流的连续性,能够快速地处理报文的匹配,能够对流进行有效的分类管理,有利于后续流分析。

该基于Linux内核的高速网络流量测量器、测量方法能广泛用于网络计费、网络安全、网络拓扑分析等与流量工程相关的领域。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号