CN102143083A - 一种阿瑞斯协议分析系统中双缓存的设计与实现方法 - Google Patents
一种阿瑞斯协议分析系统中双缓存的设计与实现方法 Download PDFInfo
- Publication number
- CN102143083A CN102143083A CN2011100857478A CN201110085747A CN102143083A CN 102143083 A CN102143083 A CN 102143083A CN 2011100857478 A CN2011100857478 A CN 2011100857478A CN 201110085747 A CN201110085747 A CN 201110085747A CN 102143083 A CN102143083 A CN 102143083A
- Authority
- CN
- China
- Prior art keywords
- module
- kernel
- node
- data
- ltsh chain
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种阿瑞斯协议分析系统中双缓存的设计与实现方法采用了哈希链表的存储结构,即开地址散列表的存储方式对抓取的数据包进行存取,并创新性地增加了统计信息头结构,缩短查询时间。此外,本发明借鉴了内存池的存取机制,在对节点进行删除操作时,只对节点内容进行清空,而不释放节点空间,有效地提高了存储的效率。同时基于散列表的存储方式,在查询速度以及存储空间方面本身就具有优势,可以有效减少查找范围,降低查找时间,动态地扩充容量。另外,采用的双哈希链表的双缓冲机制,使得共享数据的两个不同模块在同一时刻可以并行地操作共享缓冲区,互不干扰,有效地减少了模块间的协作,大大地增加了模块的独立性。
Description
技术领域
本发明是一种针对阿瑞斯协议分析系统的缓存的设计与实现,主要用来解决阿瑞斯网络报文的截获和篡改重定向之间速率不匹配的问题,解决了高速实时和变速可延时模块共享数据导致处理速率下降的问题,属于缓冲技术领域。
背景技术
近些年来P2P流量大量地占据了主干网络,使得运营成本不断增加,如何降低主干网的压力,有效控制P2P流量是关键。阿瑞斯协议也是一个比较优秀的P2P协议,为了达到控制该协议流量的目的,我们需要对该协议进行实时地分析,然后控制它在主干网上的流量,使阿瑞斯协议的客户端尽量能够在城域网范围内完成下载功能,降低主干网的负担。为了解决阿瑞斯协议分析中实时处理和延时等待的问题,我们必须采用一定的存储技术来实现模块间的良好运转。
缓冲技术就是为了协调吞吐速度相差很大或者实时性要求很高的设备以及模块之间的数据传送工作。在数据到达与离去速度不匹配的地方,就应该使用缓冲技术。缓冲技术好比是一个水库,如果上游来的水太多,下游来不及排走,水库就起到“缓冲”作用,先让水在水库中停留一段时间,等下游能继续排水,再把水送往下游。它的应用非常广泛,在计算机硬件技术领域,通常CPU的速度要比I/O设备的速度快得多得多,所以可以设置缓冲区,对于从CPU来的数据,先放在缓冲区中,然后设备可以慢慢地从缓冲区中读出数据,这样的缓冲区有内存以及cache缓存。在计算机软件技术领域,通常为了匹配两个不同模块的工作速率或者工作延迟,我们可以也采用软缓冲技术来实现,如使用缓冲技术在线播放视频。常见的缓冲技术有:单缓冲,双缓冲,循环缓冲,缓冲池。
当然,缓冲区的高效管理也离不丌一个合理的数据存储结构,不同的数据存储结构体现出不同的访问性能,对于不同的使用场合,就应该使用对应的存储结构。现今的数据存储结构大体上包括了线性结构、树形结构、图形结构、集合结构等。
因此一个灵活的,高效的缓冲区的设计不但需要考虑需求本身的因素,而且还要综合考虑它的数据结构的存取性能,代价因素等等。针对阿瑞斯协议分析系统,我们考虑到内核抓包模块对数据包抓取的实时性要求很高,但内核数据处理模块需要对数据进行延时处理,所以有必要设计一个高效的,符合要求的缓冲区,以提高各个模块的工作性能。
发明内容
技术问题:本发明的目的是提供一种阿瑞斯协议分析系统中双缓存的设计与实现方法,缓冲高速实时模块(内核抓包模块)和变速可延时模块(内核数据处理模块),以提高各模块的工作效率。本发明相比以往的方案,有效分离高速实时模块和变速可延时模块,具有运行的高效性、稳定性、灵活性。
技术方案:本发明的方法采用了哈希链表的存储结构对截获的阿瑞斯协议的哈希搜索数据包进行存储,并使用数据包的源端的IP地址和端口号作为输入,计算其MD5值作为哈希链表的哈希值的来源,并使用了双哈希链表的方式,分离了两个不同模块的共享数据,使两个不同模块对共享数据的读、写分开,互补干扰,以提高高速实时模块(即内核抓包模块)的运行效率,将不需要或者无法实时处理的部分放到内核数据处理模块当中,进一步细化模块分工。
该方法为:
步骤1)进行需求分析,对内核抓包模块需要存储的信息进行详细分析,并生成需求分析文档;
步骤2)根据步骤1的分析文档,理清内核抓包模块和内核数据处理模块的处理流程以及他们之间的逻辑关系,并生成逻辑交互图以及功能说明文档;
步骤3)根据步骤2的逻辑关系以及功能说明文档,设计并实现了内核抓包模块中有关数据处理的相关步骤,并针对该模块对高速度和实时性的要求,专门设计了基于哈希值的哈希链表结构的存储模式,该存储结构具有存储的灵活性,较线性表存储结构而言,具有更好的查询优势,并使用链表结构,可以随意增减哈希链表的容量;
步骤4)根据步骤2的逻辑关系以及功能说明文档,设计并实现了内核数据处理模块,实现了该模块与用户态的NETLINK(一种内核态与用户态的通信套接字)通信,对哈希链表的读取操作,以及通知内核抓包模块完成双哈希链表之间的轮换,有效提高了模块与模块之间的独立性;
步骤5)根据步骤2的逻辑关系以及功能说明文档,定义了3种结构,包括:节点结构、线性表结构、哈希表头结构,设计并实现了双缓冲结构下的哈希链表的节点创建、存储、读取、删除、获取节点个数等操作,借鉴了内存池的相关特性在删除操作上使用了只清空节点信息,而不释放内存的方式以提高写入速度,同时使用了内核态的锁机制,对公共数据区进行数据保护,实现了数据的可靠操作。
有益效果:本发明采用了双哈希链表、双缓冲的存储形式,分离了两个不同速率模块之间的交互,较以往的方法具有以下优点:
1、高度的实时性:由于采用了双哈希双缓冲的存储结构,有效分离了两个模块对同一数据区的访问,尤其是读写访问,使得在同一时刻两个模块能够并行访问数据缓冲区,所以内核抓包模块可以完全独立地将数据写入其中一个哈希链表,不受其他模块的限制,处理速度更快,实时性更好;
2、访问效率高:由于采用了哈希链表的存储结构,可以根据数据包的源IP地址和端口号进行计算得出它的MD5值,从而可以直接获得该数据包应该存放的行号,同时在读取的时候也可以直接获得行号,减少了扫描的时间,综合效率优于线性表结构;
3、存储灵活性好:采用了开地址的散列表结构,即在术端使用了链表的存储形式,在不考虑存储空间的情况下可以认为它的存储空间是无限的,可以动态地对存储空间进行扩容,删减。
4、数据安全性好:在哈希链表中,为了避免不必要的误操作,使用了锁机制,对内核态下的存储结构中的数据进行了锁保护,即使是误操作,也不会对数据区的安全造成威胁;
5、增强了模块的独立性:由于采用了双哈希链表、双缓冲机制,在同一时刻两个模块(即内核抓包模块和内核数据处理模块)之间不存在互操作同一个哈希链表的情况,两个模块之间唯一相关就只有消息通信(即内核数据处理模块在判断哈希链表1中节点数为0时通知内核抓包模块进行哈希链表切换的消息)这一个唯一关联了,模块耦合性小;
6、写入速度快:由于借用了内存池的相关特性,在节点删除操作上并不是完全删除节点(即释放节点的内存空间),而只是清空有效数据区,因此有效保证了内存的写入速度。
附图说明
图1是阿瑞斯协议分析系统网络整体架构图,
图2是哈希链表的体系结构图,
图3是用于缓存报文的哈希链表整体框架图,
图4是内核抓包模块对哈希链表的处理时序图,
图5是内核数据处理模块对哈希链表的处理流程图,
图6是双哈希链表工作状态转移图(注:同一虚线框内表示哈希链表在同一时刻的状态)。
具体实施方式
一、体系结构
本发明主要包括了3个功能模块,内核抓包模块、内核数据处理模块以及哈希链表缓存模块,下面主要描述这3个模块的主要功能。
1、内核抓包模块的功能
内核抓包模块的主要功能是使用Linux内核态下的Netfilter来抓取并识别阿瑞斯数据包,同时提取哈希搜索数据包作为伪造报文以及报文重定向的依据。其中该模块识别出阿瑞斯的哈希搜索报文后,需要对该报文进行存储(即存入哈希链表),同时使用NETLINK向用户态发送一个哈希请求(该哈希请求最后送往索引服务器,并由它返回搜索结果)。
2、内核数据处理模块的功能
内核数据处理模块的主要功能是等待用户态发回的来自索引服务器的节点列表报文,并提取哈希链表中的哈希搜索报文进行搜索结果的伪造,实现数据下载的可控性。
3、哈希链表缓存模块的功能
哈希链表缓存模块的主要功能是为上述的两个模块提供缓冲服务,使用双缓冲的设计模式实现读写分离。图2是哈希链表的体系结构图,它包括了八项基本功能:创建哈希表头、创建节点、插入节点、删除节点、查询节点、获取节点总数目、销毁节点、销毁哈希链表,其中插入节点、删除节点以及查询节点功能比较重要,下面主要描述这3个功能模块。插入节点的功能是使用原始输入数据进行直接存储或者创建新节点,并存入哈希链表;删除节点的功能是根据哈希值这个唯一标识对特定的节点内容进行清空,以实现尽量少地重复申请释放内存;查询节点的功能是根据哈希值查找特定节点以实现节点读取的可操作性。
二、方法流程
该部分详细说明发明内容各个部分的设计与实现:
1、内核抓包模块的实现
该模块利用Linux内核态下提供的Netfilter中的钩子函数在钩子点NF_IP_PRE_ROUTING处对过往的数据包进行分析,识别和处理的,主要是分析sk_buff结构体(该结构维护一个收到的或者要发送的网络包)中的相关数据,并对数据部分进行识别,以确定是否是阿瑞斯报文,同时若判定是阿瑞斯的哈希搜索报文,则将搜索的哈希ID发送到用户态,并将该结构体指针存入哈希链表当中去,等待内核数据处理模块对数据进行处理。
2、内核数据处理模块的实现
该模块主要是和上一模块进行配合工作,首先接收用户态发来的来自索引服务器的哈希搜索节点列表,再在哈希链表中提取节点信息(即sk_buff的结构指针),进行搜索结果返回报文的伪造,伪造成功后将该结果报文发送到阿瑞斯的客户端,以实现欺骗阿瑞斯客户端,让阿瑞斯客户端将这些节点加入到下载节点列表中,实现内网下载的目的。
3、哈希链表缓存模块的实现
该模块是上述两个模块交互的共享数据区,也可以称为数据缓冲区,由于内核抓包模块运行在实时的抓包状态,不可能一直等待索引服务器搜索并返回结果信息,需单独设计出内核数据处理模块,来等待索引服务器的返回消息。显然这两个模块之间的处理速度和时间上是不同步的,所以还需设计一个共享区对数据进行暂时性的存储,实现数据的共享。考虑数据存取的时间有效性及灵活性,所以把节点存取放在链表当中,整体上采用散列表结构,和线性表结构比较,在查询上具有速度优势。
该方法包括的步骤为:
步骤1)进行需求分析,对内核抓包模块需要存储的信息进行详细分析,并生成需求分析文档;
步骤2)根据步骤1的分析文档,理清内核抓包模块和内核数据处理模块的处理流程以及他们之间的逻辑关系,并生成逻辑交互图以及功能说明文档;
步骤3)根据步骤2的逻辑关系以及功能说明文档,设计并实现了内核抓包模块中有关数据处理的相关步骤,并针对该模块对高速度和实时性的要求,专门设计基于哈希值的哈希链表结构的存储模式,该存储结构具有存储的灵活性,较线性表存储结构而言,具有更好的查询优势,并使用链表结构,可以随意增加哈希链表的容量;
步骤4)根据步骤2的逻辑关系以及功能说明文档,设计并实现内核数据处理模块,并使用内核态与用户态通信套接字,实现该模块与用户态的双向通信,以及对哈希链表的读取操作,以及通知内核抓包模块完成双哈希链表之间的交互,提高模块与模块之间的独立性;
步骤5)根据步骤2的逻辑关系以及功能说明文档,定义3种结构,包括:节点结构、线性表结构、哈希表头结构,设计并实现双缓冲结构下的哈希链表的节点创建、存储、读取、删除、获取节点个数操作,借鉴了内存池的相关特性在删除操作上使用只清空节点信息,而不释放内存的方式以提高写入速度,同时使用内核态的锁机制,对公共数据区进行数据保护,实现了数据的可靠操作。
该模块使用双哈希链表的形式使得两个模块可以同一时刻并行操作数据缓冲区,同时使用基于内存池的技术,在删除节点时并不立即释放节点的存储空间,而只进行关键区域的清空,使得写入速度更快,并使用锁机制,对数据区进行保护,安全性更高。
Claims (1)
1.一种阿瑞斯协议分析系统中双缓存的设计与实现方法,其特征在于该方法包括的步骤为:
步骤1)进行需求分析,对内核抓包模块需要存储的信息进行详细分析,并生成需求分析文档;
步骤2)根据步骤1的分析文档,理清内核抓包模块和内核数据处理模块的处理流程以及他们之间的逻辑关系,并生成逻辑交互图以及功能说明文档;
步骤3)根据步骤2的逻辑关系以及功能说明文档,设计并实现了内核抓包模块中有关数据处理的相关步骤,并针对该模块对高速度和实时性的要求,专门设计基于哈希值的哈希链表结构的存储模式,该存储结构具有存储的灵活性,较线性表存储结构而言,具有更好的查询优势,并使用链表结构,可以随意增加哈希链表的容量;
步骤4)根据步骤2的逻辑关系以及功能说明文档,设计并实现内核数据处理模块,并使用内核态与用户态通信套接字,实现该模块与用户态的双向通信,以及对哈希链表的读取操作,以及通知内核抓包模块完成双哈希链表之间的交互,提高模块与模块之间的独立性;
步骤5)根据步骤2的逻辑关系以及功能说明文档,定义3种结构,包括:节点结构、线性表结构、哈希表头结构,设计并实现双缓冲结构下的哈希链表的节点创建、存储、读取、删除、获取节点个数操作,借鉴了内存池的相关特性在删除操作上使用只清空节点信息,而不释放内存的方式以提高写入速度,同时使用内核态的锁机制,对公共数据区进行数据保护,实现了数据的可靠操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100857478A CN102143083A (zh) | 2011-04-02 | 2011-04-02 | 一种阿瑞斯协议分析系统中双缓存的设计与实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100857478A CN102143083A (zh) | 2011-04-02 | 2011-04-02 | 一种阿瑞斯协议分析系统中双缓存的设计与实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102143083A true CN102143083A (zh) | 2011-08-03 |
Family
ID=44410318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100857478A Pending CN102143083A (zh) | 2011-04-02 | 2011-04-02 | 一种阿瑞斯协议分析系统中双缓存的设计与实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102143083A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103051678A (zh) * | 2012-12-04 | 2013-04-17 | 中国电信股份有限公司云计算分公司 | 一种高可靠性的数据通信方法和装置 |
CN105407481A (zh) * | 2015-10-23 | 2016-03-16 | 上海斐讯数据通信技术有限公司 | 上网数据的获取方法 |
CN105608202A (zh) * | 2015-12-25 | 2016-05-25 | 北京奇虎科技有限公司 | 数据包分析方法及装置 |
CN109240621A (zh) * | 2018-09-25 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种非易失性内存储器管理方法与装置 |
CN111159074A (zh) * | 2019-12-31 | 2020-05-15 | 山东超越数控电子股份有限公司 | 一种基于FPGA的超大规模数据hash运算加速卡 |
WO2021143139A1 (zh) * | 2020-01-19 | 2021-07-22 | 苏州浪潮智能科技有限公司 | 一种提高交换机性能的方法、系统、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795214A (zh) * | 2010-01-22 | 2010-08-04 | 华中科技大学 | 一种大流量环境下基于行为的p2p检测方法 |
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析系统的实现方法 |
-
2011
- 2011-04-02 CN CN2011100857478A patent/CN102143083A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795214A (zh) * | 2010-01-22 | 2010-08-04 | 华中科技大学 | 一种大流量环境下基于行为的p2p检测方法 |
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析系统的实现方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103051678A (zh) * | 2012-12-04 | 2013-04-17 | 中国电信股份有限公司云计算分公司 | 一种高可靠性的数据通信方法和装置 |
CN105407481A (zh) * | 2015-10-23 | 2016-03-16 | 上海斐讯数据通信技术有限公司 | 上网数据的获取方法 |
CN105608202A (zh) * | 2015-12-25 | 2016-05-25 | 北京奇虎科技有限公司 | 数据包分析方法及装置 |
CN109240621A (zh) * | 2018-09-25 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种非易失性内存储器管理方法与装置 |
CN109240621B (zh) * | 2018-09-25 | 2021-12-24 | 郑州云海信息技术有限公司 | 一种非易失性内存储器管理方法与装置 |
CN111159074A (zh) * | 2019-12-31 | 2020-05-15 | 山东超越数控电子股份有限公司 | 一种基于FPGA的超大规模数据hash运算加速卡 |
WO2021143139A1 (zh) * | 2020-01-19 | 2021-07-22 | 苏州浪潮智能科技有限公司 | 一种提高交换机性能的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102130838B (zh) | 一种基于阿瑞斯协议的对等网络缓存系统的实现方法 | |
CN102143083A (zh) | 一种阿瑞斯协议分析系统中双缓存的设计与实现方法 | |
CN104301360B (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN105138678B (zh) | 一种地图瓦片数据的读取、分发方法及读取、分发系统 | |
Bonorden et al. | The paderborn university BSP (PUB) library | |
US8161244B2 (en) | Multiple cache directories | |
CN100530195C (zh) | 一种分布式文件系统的文件读系统和方法 | |
JP2003531435A (ja) | ソフトな実時間応答性と連続利用可能性とを用意する分散形計算機処理システムクラスタ化モデル | |
CN103020257B (zh) | 数据操作的实现方法和装置 | |
US20030115190A1 (en) | System and method for retrieving data from a database system | |
CN101375241A (zh) | 集群文件系统中的有效数据管理 | |
Yang et al. | Huge: An efficient and scalable subgraph enumeration system | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
US20070194957A1 (en) | Search apparatus and search management method for fixed-length data | |
CN101087210A (zh) | 高性能的Syslog日志处理和存储方法 | |
CN102184256A (zh) | 一种针对海量相似短文本的聚类方法和系统 | |
CN106484713A (zh) | 一种基于面向服务的分布式请求处理系统 | |
CN101452465A (zh) | 大批量文件数据存放和读取方法 | |
CN105637524B (zh) | 硬件平台中的资产管理设备和方法 | |
CN104408111A (zh) | 一种删除重复数据的方法及装置 | |
CN109408536A (zh) | 一种云平台数据管理方法 | |
CN101160856A (zh) | 一种网络处理器 | |
CN104317957B (zh) | 一种报表处理的开放平台、系统及报表处理方法 | |
CN106133703A (zh) | 使用rdma来扫描内存用于删除重复 | |
US9083725B2 (en) | System and method providing hierarchical cache for big data applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110803 |