CN1633110A - 基于Linux内核的流量分析方法 - Google Patents
基于Linux内核的流量分析方法 Download PDFInfo
- Publication number
- CN1633110A CN1633110A CNA2005100042471A CN200510004247A CN1633110A CN 1633110 A CN1633110 A CN 1633110A CN A2005100042471 A CNA2005100042471 A CN A2005100042471A CN 200510004247 A CN200510004247 A CN 200510004247A CN 1633110 A CN1633110 A CN 1633110A
- Authority
- CN
- China
- Prior art keywords
- kernel
- packet
- flow analysis
- flow
- method based
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于Linux内核的流量分析方法,采用Linux中可装载内核的方式实现,可以实现数据包级及流级的流量分析。提供的监测分析指标包括流量速率,链路利用率,2-7层协议分布,不同协议的流量速率,包大小分布等;还可根据各种流定义规则,进行特定类型流的监测并提供相关统计结果。由于采用了可装载内核模块的方式,降低了系统调用和内存拷贝等开销,提高了流量分析性能。实验结果显示对于100Mbps和1000Mbps链路,采样该方法可以分别实现对速率为142000pps和405000pps的流量进行实时监测和分析。比较基于libpcap的用户空间流量分析方法,该方法可以提高约50%的处理能力。
Description
技术领域
本发明涉及计算机网络流量分析技术领域,特别是设计一种基于Linux内核的流量分析方法。
背景技术
流量指标是网络运维最重要的指标之一,是网络规划设计、协议设计、业务部署、流量工程实施、攻击检测与故障诊断的基础。通过网络流量的监测和分析可以获得大量网络性能信息、网络服务状况以及网络中存在的攻击或者弱点。通过数据包捕获与协议分析的被动流量监测获得各个协议层次的流量指标,是流量监测最常用的方法。
近几年来,网络链路速率迅速增长,已经开始从Mbit/s迈向Gbit/s,不久的将来可能还会发展至40Gbit/s甚至Tbit/s。千兆网卡和千兆交换机已经相当的便宜,几乎每个新的局域网用户都会采用此项技术,一个普通的家庭用户所能够获得的带宽比两年前一个公司获得的带宽还要大。网络应用的普及与网络技术的发展,导致网络流量也日益庞大,基于数据包捕获的被动流量监测分析受到诸多技术的限制,如PCI(PeripheralComponent Interconnect,外设部件互连)总线吞吐量、存储容量、内存访问速度以及磁盘阵列的速率[1],使得满足低速链路流量监测分析的传统被动流量监测分析技术不能适用于更高速率的网络环境,如基于libpcap的流量监测分析工具。为了克服操作系统、PCI总线带宽和系统资源所带来的性能限制,很多研究人员开始采用网络处理器进行流量监测分析。而采用网络处理器往往需要专用的设备,开发周期长,大量部署不太现实。
数据包捕获方法是进行被动流量监测分析最常用的方法。近几年,也有很多研究人员和硬件生产厂商试图A通过专用硬件实现被动流量监测和分析,如OC3MON及DAG。另外,有关流量监测分析的一些新的研究项目也正在进行,如欧洲的SCAMP设计了一种数据包捕获的体系结构;MAGNet则可以进行应用流的监测;CoralReef是由著名的CAIDA组织开发实现的一种收集和分析Internet被动流量监测信息的重要工具之一。
在通用平台上实现流量监测分析仍然是最为常用的方法,如Tcpdump/Libpcap,Sniffer等,其基本原理是捕获流经链路或者端口的数据包,分析每个数据包并获得流量统计分析结果。流量分析方法被广泛应用到入侵检测(snort,Bro),流量分析(ntop,ethereal,tcpflow)系统中。目前大部分的流量分析工具是基于libpcap实现的,能够提供基本的网络链路状况信息,比如链路利用率,带宽,协议分布等。
Libpcap是可以适用于多种操作系统(如Linux,FreeBSD,Solaris等)的数据包捕获库,利用该库可以向开发人员屏蔽底层网络链路所采用技术。Libpcap提供强大的内核包过滤器-BPF(Berkeley Packet Filter)。在介绍BPF之前,首先解释Linux操作系统中网络通信的实现。图1是一个简单linux系统中数据包接收的流向图,其中包括了BPF的位置。Linux网络接口包括四个重要部分:网络设备接口、网络核心接口、网络协议栈和网络socket接口。前两个部分是实现网络通信的基础,也是和本文介绍的流量分析方法密切相关的。网络设备接口是实现网络通信的最关键的部分之一,可以屏蔽底层不同的物理介质,提供统一的数据包发送/接收接口,如图1中所示的网络设备(Network Interface)。网络核心接口则负责从网络设备获得相应的数据包并缓存在内核中,根据用户或者系统缺省注册的处理函数进行分发处理,图1所示的BPF即属于网络核心接口。BPF是基于内核的数据包过滤器,是进行数据包捕获的重要组件之一。BPF被认为是Unix中实现数据包过滤组件中最好的一种实现[10]。BPF包括两个主要部分:数据包复制器和数据包过滤器。数据包复制器负责从网络设备驱动获得网络链路中数据包的备份,并把该备份传送给数据包过滤器。过滤器则根据过滤规则决定数据包取舍。非常重要的一点,BPF只把符合规则要求的数据包传递到用户空间。同时,BPF也支持只把所需要的部分数据包,如数据包的前64字节,传递到用户空间,以降低数据包拷贝开销。举例来讲,对于以太网数据包,前64字节足以满足对以太网头与IP/TCP头的分析。
发明内容
本发明是一种基于Linux内核的流量分析方法,该方法的关键在于其采用了基于Linux内核可装载模式实现,以字符设备方式供用户空间程序使用,具体内容叙述如下:
1)基于Linux内核的流量分析方法在Linux内核空间实现,并且集成BPF的数据包过滤以及网络流量分析功能,能够支持对2-7层100多种协议数据包的分析。其实现方法能够有效减少内存拷贝及系统调用时间,降低存储空间的需求,提高流量监测分析的效率。附图1为该方法设计的系统结构图。
2)网络数据包在Linux系统内核中的到达和处理流程可描述如下:网卡收到数据包即向CPU发送硬中断,CPU将把数据包从网卡的缓存中取出并在内核的Skbuff链表中创建新的结点存储接收到的数据包等待协议栈或者其他注册的功能函数的处理。由于方法在内核中完成所有的流量分析功能,只是把分析结果通过API方式提供给用户空间程序。而且,待分析的网络数据包可以直接从内核中的Skbuff链表中获得,大大降低了内核到用户空间的内存拷贝和系统调用开销。
该方法通过直接获取Skbuff中数据包的内容,并在内核空间实现所有的流量分析功能,包括数据包捕获功能均在内核中实现。
3)本发明的流量分析方法支持两种级别的流量分析:数据包级和流(Flow)级。数据包级,缺省情况下能够完成对所有原始数据包的协议分析,并提供200多种协议分析结果。这些结果可以通过方法本身提供的用户空间可用的接口获得,主要的分析指标包括流量速率(包速率和字节速率),链路利用率,不同层次的协议分布,包大小分布、包间隔分布以及不同协议流量速率等。除此之外,还可以根据不同的流规则定义实现指定流的监测并提供基于流的分析指标,其中统计指标包括流持续时间的统计分布,流速率,流大小统计分布,并发流数量统计分布等;其他详细指标根据流规则定义不同而有所不同,例如出入境流量区分、特定端口、特定AS域、特定IP地址段、特定服务的监测分析、流量排名前N的IP主机,IP主机对及流量排名前N的端口和AS域等。
4)支持原始数据包的捕获也是流量分析工具的一个重要功能,因此本方法提供了对一定数量的原始数据包捕获的功能支持。方法中能够提供的配置功能、原始数据包以及统计分析数据的上传都可以通过设计的API接口供用户空间程序使用。并且鉴于BPF(BerkeleyPacket Filter)是一种比较成熟,且被广泛使用的过滤器,方法中继承了对BPF的过滤规则的语法支持。
附图说明
图1是Linux系统下数据包接收过程流程图。
图2是基于内核的流量分析方法的系统结构示意图。
图3是基于Linux内核的流量分析方法流程图。
具体实施方式
图1:Linux系统内核中数据包接收过程的走向图,首先网卡收到数据包会向CPU发送中断请求,CPU根据中断请求从网卡缓存中获得到达的数据包,数据包经由PCI总线传到内核空间,并在Skbuff中创建对应数据包的结点,最后交给协议栈或者类似BPF的基于内核的处理模块处理。所有的处理以及结果根据用户需求通过系统调用方式和用户空间程序互通。
图2:基于内核的流量分析方法体系结构设计图。该方法的所有分析功能均在内核中实现,并且提供两种级别:数据包级和流级的监测分析指标,并支持一定数量原始数据包的捕获。分析结果和原始数据包都通过API方式提供给用户空间程序使用。
图3的基于Linux内核的流量分析方法,其步骤如下:
首先网卡收到数据包会向CPU发送中断请求,CPU根据中断请求从网卡缓存中获得到达的数据包,数据包经由PCI总线传到内核空间,并在Skbuff中创建对应数据包的结点,最后交给协议栈以及在内核中注册的其他处理网络数据包处理函数进行处理。
具体步骤为:
步骤S1,把网卡设置为混杂模式以获得所有网络数据包;
步骤S2,注册内核级网络流量分析函数,用来对分析函数指定的
协议类型进行处理,本方法中的流量分析函数指定的协
议类型为所有以太网类型;
步骤S3,配置流量分析参数,使得流量分析函数能够分析根据用
户自定义规则进行分析;
步骤S4,如果内核空间中的数据包内核缓存链表不为空,则调用
已注册的流量分析函数进行分析,结果放在统计结果缓
存和流记录缓存中;
步骤S5,如果模块接收到用户空间卸载模块请求则取消网卡混杂
模式并执行S6;
步骤S6,取消注册的内核级流量分析函数;
步骤S7,如果模块接收到用户空间获取分析结果的请求,则处理
请求并返回相应结果。
具体实施例:
1.以Linux内核下的字符设备驱动方式实现方法中提到的流量分析功能、配置功能、结果获取API。
2.装载实现流量分析功能的字符设备驱动,并根据提供的字符设备操作API对内核中的流量分析功能进行配置并获取分析结果。
Claims (8)
1.基于Linux内核的流量分析方法,其特征在于,该方法完全在Linux内核空间实现,降低了系统调用、内存拷贝开销以及PCI总线带宽的需求。
2.根据权利要求1所述的基于Linux内核的流量分析方法,其特征在于,该方法通过直接获取Skbuff中数据包的内容,并在内核空间实现所有的流量分析,包括数据包捕获均在内核中实现。
3.根据权利要求1所述的基于Linux内核的流量分析方法,其特征在于,该方法通过可装载内核模块方式,以字符设备方式供用户空间程序使用。
4.根据权利要求1所述的基于Linux内核的流量分析方法,其特征在于,该方法提供两种不同级别流量分析指标:数据包级及流级。
5.根据权利要求4所述的基于Linux内核的流量分析方法,其特征在于,方法中数据包级指标提供200多种协议分析,主要分析指标有流量速率,链路利用率,不同层次的协议分布,包大小分布、包间隔分布以及不同协议流量速率。
6.根据权利要求4所述的基于Linux内核的流量分析方法,其特征在于,方法中流级统计指标包括流持续时间的统计分布,流速率,流大小统计分布,并发流数量统计分布。
7.一种基于Linux内核的流量分析方法,首先网卡收到数据包会向CPU发送中断请求,CPU根据中断请求从网卡缓存中获得到达的数据包,数据包经由PCI总线传到内核空间,并在Skbuff中创建对应数据包的结点,最后交给协议栈以及在内核中注册的其他处理网络数据包处理函数进行处理。
8.根据权利要求7的基于Linux内核的流量分析方法,其具体步骤如下:
步骤S1,把网卡设置为混杂模式以获得所有网络数据包;
步骤S2,注册内核级网络流量分析函数,用来对分析函数指定的协议类型进行处理,本方法中的流量分析函数指定的协议类型为所有以太网类型;
步骤S3,配置流量分析参数,使得流量分析函数能够分析根据用户自定义规则进行分析;
步骤S4,如果内核空间中的数据包内核缓存链表不为空,则调用已注册的流量分析函数进行分析,结果放在统计结果缓存和流记录缓存中;
步骤S5,如果模块接收到用户空间卸载模块请求则取消网卡混杂模式并执行S6;
步骤S6,取消注册的内核级流量分析函数;
步骤S7,如果模块接收到用户空间获取分析结果的请求,则处理请求并返回相应结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200510004247A CN100576819C (zh) | 2005-01-14 | 2005-01-14 | 基于Linux内核的流量分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200510004247A CN100576819C (zh) | 2005-01-14 | 2005-01-14 | 基于Linux内核的流量分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1633110A true CN1633110A (zh) | 2005-06-29 |
CN100576819C CN100576819C (zh) | 2009-12-30 |
Family
ID=34853019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510004247A Expired - Fee Related CN100576819C (zh) | 2005-01-14 | 2005-01-14 | 基于Linux内核的流量分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100576819C (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435514C (zh) * | 2006-03-10 | 2008-11-19 | 中国科学院软件研究所 | 以太网驱动级底层过滤方法和系统 |
CN101370009B (zh) * | 2008-03-12 | 2011-08-24 | 武汉理工大学 | 基于Linux内核网络子系统的虚拟网络块框架的构建方法 |
CN102752321A (zh) * | 2012-08-07 | 2012-10-24 | 广州微仕科信息技术有限公司 | 一种基于多核网络处理器的防火墙实现方法 |
CN106878107A (zh) * | 2017-02-28 | 2017-06-20 | 无锡研勤信息科技有限公司 | 基于Linux内核驱动的网络带宽测速方法 |
CN107171895A (zh) * | 2017-07-01 | 2017-09-15 | 浙江省计量科学研究院 | 一种通信网络数据流量测量方法 |
CN107483287A (zh) * | 2017-08-17 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种自动监测网口数据包收发故障系统及方法 |
CN108540333A (zh) * | 2017-03-02 | 2018-09-14 | 中兴通讯股份有限公司 | 测量网络侧吞吐量的方法、家庭网关、装置及系统 |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
CN110351275A (zh) * | 2019-07-11 | 2019-10-18 | 北京脉冲星科技有限公司 | 一种主机端口流量监控方法、系统、装置和存储设备 |
CN111756575A (zh) * | 2020-06-19 | 2020-10-09 | 星辰天合(北京)数据科技有限公司 | 存储服务器的性能分析方法及装置、电子设备 |
CN111917835A (zh) * | 2020-07-13 | 2020-11-10 | 北京天空卫士网络安全技术有限公司 | 一种监控网络数据的系统、方法和装置 |
CN112153013A (zh) * | 2020-09-02 | 2020-12-29 | 杭州安恒信息技术股份有限公司 | 一种Socket数据转发方法、装置、电子设备和存储介质 |
CN113037532A (zh) * | 2019-12-25 | 2021-06-25 | 中兴通讯股份有限公司 | 一种流媒体码流探测方法、装置、服务器和可读存储介质 |
CN114726633A (zh) * | 2022-04-14 | 2022-07-08 | 中国电信股份有限公司 | 流量数据处理方法及装置、存储介质及电子设备 |
CN115037658A (zh) * | 2022-06-08 | 2022-09-09 | 广东电网有限责任公司 | 基于bpf的计量主站网络检测方法及计量主站 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040009225A (ko) * | 2002-07-23 | 2004-01-31 | 엘지엔시스(주) | 커널 후킹에 의한 네트워크 패킷 검사방법 |
CN1271816C (zh) * | 2002-08-09 | 2006-08-23 | 联想(北京)有限公司 | 包过滤的网络协议层用户认证方法 |
KR100501210B1 (ko) * | 2002-12-03 | 2005-07-18 | 한국전자통신연구원 | 보안 게이트웨이의 커널 기반 고속 침입탐지 시스템 및 그방법 |
-
2005
- 2005-01-14 CN CN200510004247A patent/CN100576819C/zh not_active Expired - Fee Related
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435514C (zh) * | 2006-03-10 | 2008-11-19 | 中国科学院软件研究所 | 以太网驱动级底层过滤方法和系统 |
CN101370009B (zh) * | 2008-03-12 | 2011-08-24 | 武汉理工大学 | 基于Linux内核网络子系统的虚拟网络块框架的构建方法 |
CN102752321A (zh) * | 2012-08-07 | 2012-10-24 | 广州微仕科信息技术有限公司 | 一种基于多核网络处理器的防火墙实现方法 |
CN106878107B (zh) * | 2017-02-28 | 2019-10-29 | 无锡研勤信息科技有限公司 | 基于Linux内核驱动的网络带宽测速方法 |
CN106878107A (zh) * | 2017-02-28 | 2017-06-20 | 无锡研勤信息科技有限公司 | 基于Linux内核驱动的网络带宽测速方法 |
CN108540333A (zh) * | 2017-03-02 | 2018-09-14 | 中兴通讯股份有限公司 | 测量网络侧吞吐量的方法、家庭网关、装置及系统 |
CN107171895A (zh) * | 2017-07-01 | 2017-09-15 | 浙江省计量科学研究院 | 一种通信网络数据流量测量方法 |
CN107483287A (zh) * | 2017-08-17 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种自动监测网口数据包收发故障系统及方法 |
CN107483287B (zh) * | 2017-08-17 | 2021-07-20 | 郑州云海信息技术有限公司 | 一种自动监测网口数据包收发故障系统及方法 |
CN110138797B (zh) * | 2019-05-27 | 2021-12-14 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
CN110351275A (zh) * | 2019-07-11 | 2019-10-18 | 北京脉冲星科技有限公司 | 一种主机端口流量监控方法、系统、装置和存储设备 |
CN113037532A (zh) * | 2019-12-25 | 2021-06-25 | 中兴通讯股份有限公司 | 一种流媒体码流探测方法、装置、服务器和可读存储介质 |
CN111756575A (zh) * | 2020-06-19 | 2020-10-09 | 星辰天合(北京)数据科技有限公司 | 存储服务器的性能分析方法及装置、电子设备 |
CN111756575B (zh) * | 2020-06-19 | 2023-08-11 | 北京星辰天合科技股份有限公司 | 存储服务器的性能分析方法及装置、电子设备 |
CN111917835A (zh) * | 2020-07-13 | 2020-11-10 | 北京天空卫士网络安全技术有限公司 | 一种监控网络数据的系统、方法和装置 |
CN112153013A (zh) * | 2020-09-02 | 2020-12-29 | 杭州安恒信息技术股份有限公司 | 一种Socket数据转发方法、装置、电子设备和存储介质 |
CN114726633A (zh) * | 2022-04-14 | 2022-07-08 | 中国电信股份有限公司 | 流量数据处理方法及装置、存储介质及电子设备 |
CN114726633B (zh) * | 2022-04-14 | 2023-10-03 | 中国电信股份有限公司 | 流量数据处理方法及装置、存储介质及电子设备 |
CN115037658A (zh) * | 2022-06-08 | 2022-09-09 | 广东电网有限责任公司 | 基于bpf的计量主站网络检测方法及计量主站 |
CN115037658B (zh) * | 2022-06-08 | 2023-05-02 | 广东电网有限责任公司 | 基于bpf的计量主站网络检测方法及计量主站 |
Also Published As
Publication number | Publication date |
---|---|
CN100576819C (zh) | 2009-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100576819C (zh) | 基于Linux内核的流量分析方法 | |
US9641413B2 (en) | Methods and computer program products for collecting storage resource performance data using file system hooks | |
BE1022604B1 (nl) | Efficiente monitoring van een datacenter | |
JP4126707B2 (ja) | 情報システムの状態を解析する技術 | |
CN102769549B (zh) | 网络安全监控的方法和装置 | |
JP5014282B2 (ja) | 通信データ統計装置、通信データ統計方法およびプログラム | |
US20090092057A1 (en) | Network Monitoring System with Enhanced Performance | |
Choi et al. | Content-aware internet application traffic measurement and analysis | |
US20140129705A1 (en) | Security network processor system and method | |
CN106972985B (zh) | 加速dpi设备数据处理与转发的方法和dpi设备 | |
Papadogiannakis et al. | Improving the performance of passive network monitoring applications with memory locality enhancements | |
CN115002186A (zh) | 网络信息采集方法、装置、电子设备及可读存储介质 | |
CN107277062B (zh) | 数据包的并行处理方法及装置 | |
Papadogiannakis et al. | Stream-oriented network traffic capture and analysis for high-speed networks | |
US11528187B1 (en) | Dynamically configurable networking device interfaces for directional capacity modifications | |
US11954630B2 (en) | Real time method and system for analyzing data streams | |
CN102932330A (zh) | 一种检测分布式拒绝服务攻击的方法和装置 | |
WO2008121690A2 (en) | Data and control plane architecture for network application traffic management device | |
CN113422699B (zh) | 数据流处理方法、装置、计算机可读存储介质及电子设备 | |
US11218394B1 (en) | Dynamic modifications to directional capacity of networking device interfaces | |
CN114185681A (zh) | 一种自动化限流处理方法及装置 | |
Michel | Packet-Level Network Telemetry and Analytics | |
Papadogiannakis et al. | Improving the performance of passive network monitoring applications using locality buffering | |
Wang et al. | Robust pipelined memory system with worst case performance guarantee for network processing | |
CN115396319B (zh) | 数据流分片方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091230 Termination date: 20190114 |
|
CF01 | Termination of patent right due to non-payment of annual fee |