基于Tilera多核板卡网络数据包的邮件还原方法与流程

文档序号:11279177阅读:392来源:国知局
基于Tilera多核板卡网络数据包的邮件还原方法与流程

本发明属于电子邮件通讯领域,尤其是涉及一种基于tilera多核板卡网络数据包的邮件还原方法。



背景技术:

目前,对网络数据包进行邮件还原的技术实现上,有通过pfring或libpcap等开源收包库进行网络数据包获取,该两种方式在获取包的效率上由于存在数据到达硬件层面后经过内存多次拷贝造成cpu资源开销负担;也有通过多核处理器来进行收包,但多核的核数较少有达到tilera产品中100核的指标,设备板卡形态也较少达到tilera一样可通过pci-e插槽小巧轻便安装。而邮件还原算法有借助开源库libnids接口也有自己设计实现的。



技术实现要素:

有鉴于此,本发明旨在提出一种基于tilera多核板卡网络数据包的邮件还原方法,以解决现有的网络数据包邮件还原技术中网络数据包截获性能不足,还原算法运行平台较少达到多核并行的情况。

为达到上述目的,本发明的技术方案是这样实现的:

基于tilera多核板卡网络数据包的邮件还原方法,包括以下步骤:

s1、邮件还原前需要对开发环境进行部署,包括tilera多核板卡与机箱硬件的连接,以及软件系统的安装;

s2、开发环境部署后,进行邮件还原,首先基于tilera多核板卡进行初始化配置,启动使用的硬件资源并调用收包接口进行收包;

s3、将收到的数据包进行tcp流重组模块;

s4、最后根据端口分类进入到不同的邮件还原模块进行邮件还原操作。

进一步的,所述步骤s1中开发环境部署,具体方法如下:

s101、将tilera多核板卡插入便携式一体机的机箱pcie插槽上,固定好多核板卡后,将多核板卡的一个或不多于四个光口通过光模块和光纤进行连接,网络数据流通过光纤进入多核板卡的光口形成数据通路;

s102、在电脑上安装centos6.5的liunx操作系统,并且安装tilera开发环境版本mde4.3.3;

s103、通过tilera的登录命令tile-monitor来登录到tilera板卡内部的liunx系统,在该环境下开发部署邮件还原程序代码。

进一步的,所述步骤s1中,所述开发环境部署后,对串口进行调试时,将多核板卡的串口调试口通过调试线连接到电脑的usb口上,通过tile-console命令登录到串口调试输出端。

进一步的,所述步骤s2中,所述tilera多核板卡初始化和收包接口的方法,具体如下:

s201、通过接收用户设置参数进行相应配置和初始化硬件资源,给多核板卡进行内存分配;

s202、对tcp流重组模块进行初始化和回调函数注册;

s203、调用mpipe高速收包接口,peek方式收包进行网络数据包的接入。

进一步的,所述tcp流重组模块的执行方法,具体如下:

s301、nids_next_special_mpipe函数处理收包数据;

s302、注册回调函数指针链表循环调用;

s303、process_tcp进行tcp重组;

s304、tcp重组完成后进入回调函数进行邮件协议的分类判断,根据端口走入不同的邮件还原模块中。

进一步的,所述步骤s4中邮件还原模块包括pop3邮件还原模块、stmp邮件还原模块、imap邮件还原模块、http邮件还原模块。

进一步的,所述pop3邮件还原模块,具体执行方法如下:

s401、符合pop3邮件协议的特征,进入pop3邮件还原函数入口;

s402、判断是否是客户端数据,如果是则邮件内容获取标志位为1;如果不是则判断协议命令是否为top或者retr,如果协议命令符合则邮件内容获取标志位置为1;

s403、如果内容获取标志位为1,则判断邮件内容结束符;

403、判断邮件内容结束符,如果有则内容存入eml文件,如果没有则缓存邮件内容供下一次接收使用。

进一步的,所述stmp邮件还原模块,具体执行方法如下:

s501、符合stmp邮件协议特征,进入stmp邮件还原函数入口;

s502、判断是否为服务器端数据,如果是则进一步判断邮件内容获取标志位是否为1;如果标志位不为1则判断协议命令是否为data,如果是data命令,则邮件内容获取标志位置为1;

s503、邮件内容获取标志位置为1的邮件,则进一步判断邮件内容结束符;

s504、判断邮件内容结束符,如果有则内容存入eml文件,如果没有则缓存邮件内容供下一次接收使用。

进一步的,所述imap邮件还原模块,具体执行方法如下:

s601、符合imap邮件协议交互特征,进入imap邮件还原函数入口;

s602、判断是否为客户端数据,如果是则进一步判断邮件内容获取标志位是否为1;如果不是客户端数据,则进一步判断协议命令,如果协议命令符合,则邮件内容标志位为1并且组合缓存出邮件内容结束符;

s603、当邮件内容到达时,判断是否有结束符,有则进行单封邮件的循环拆分和eml存储,没有则缓存邮件内容。

进一步的,所述http邮件还原模块只针对于163邮箱的http网络数据包的邮件还原,具体执行方法如下:

s701、符合http邮件协议交互特征,进入http邮件还原模块入口;

s702、判断是否为客户端数据,如果是客户端数据,则进一步判断是否为对应标志位;如果不是客户端数据,判断是否为readmessage、listmessage、readmessage接口标志位,如果是,delivermessage接口数据内容url解码,解码内容进行mime格式的组合,将组合的mime结构内容写入eml文件中;

s703、如果是客户端数据且符合对应的标志位,则利用zlib库解压gzip内容,对解压内容进行判断;

s704、判断是否为readmessage接口标志位,如果是,则填写邮件mime结构体的head部分;如果不是则进一步判断是否为readhtml接口标志位,如果是readhtml标志位,则填写邮件mime结构体的html部分,然后将组合的mime结构内容写入eml文件;

s705、如果不是readhtml接口标志位,则进一步判断是否为listmessage接口标志位,如果是listmessage接口标志位,则拆分出单封邮件内容,组合mime结构体head部,然后将组合的mime结构内容写入eml文件。

相对于现有技术,本发明所述的基于tilera多核板卡网络数据包的邮件还原方法具有以下优势:

本发明所述的基于tilera多核板卡网络数据包的邮件还原方法能够利用多核tilera硬件高速收包和多核并行处理等性能实现对网络数据包的邮件还原功能,根据所使用的tilera板卡配置(实际tilera板卡最高达到了100核的高速并行处理,在对性能要求更高的应用场景下,可以选择更高配置tilera板卡来满足),目前本发明使用的是36核的tilera多核板卡,能最高实现10ge网络数据包流量的36核并行处理邮件还原输出eml文件,并且兼容pop3、stmp、imap和webmail中163邮箱的邮件还原功能,可并行处理多邮件协议业务或单独处理单邮件协议业务,在网路数据的邮件还原领域中使用tilera多核板卡该种硬件形态开发算法夯实了该实现技术手段。并且由于多核板卡的小巧性,能直接插在电脑的pci-e插槽中,在便携式一体机中能直接安装部署了邮件还原算法的硬件板卡,进行随时随地的针对邮件的网络侦查,在实际应用中有很大应用前景。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的基于tilera多核板卡网络数据包的邮件还原方法整体框架图;

图2为本发明实施例所述的tilera多核板卡初始化和收包模块流程图;

图3为本发明实施例所述的tcp流重组模块模块流程图;

图4为本发明实施例所述的pop3邮件还原模块流程图;

图5为本发明实施例所述的stmp邮件还原模块流程图;

图6为本发明实施例所述的imap邮件还原模块流程图;

图7为本发明实施例所述的http邮件还原模块流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。

下面将参考附图并结合实施例来详细说明本发明。

如图1所示,基于tilera多核板卡网络数据包的邮件还原方法,其特征在于,包括以下步骤:

s1、邮件还原前需要对开发环境进行部署,包括tilera多核板卡与机箱硬件的连接,以及软件系统的安装;

s2、开发环境部署后,进行邮件还原,首先基于tilera多核板卡进行初始化配置,启动使用的硬件资源并调用收包接口进行收包;

s3、将收到的数据包进行tcp流重组模块;

s4、最后根据端口分类进入到不同的邮件还原模块进行邮件还原操作。

其中,所述步骤s1中开发环境部署,具体方法如下:

s101、将tilera多核板卡插入便携式一体机的机箱pcie插槽上,固定好多核板卡后,将多核板卡的一个或不多于四个光口通过光模块和光纤进行连接,网络数据流通过光纤进入多核板卡的光口形成数据通路,tilera多核板卡的光口支持ge和xge,目前选择xge的流量即10ge;

s102、在电脑上安装centos6.5的liunx操作系统,并且安装tilera开发环境版本mde4.3.3;

s103、通过tilera的登录命令tile-monitor来登录到tilera板卡内部的liunx系统,在该环境下开发部署邮件还原程序代码。

其中,所述步骤s1中,所述开发环境部署后,对串口进行调试时,将多核板卡的串口调试口通过调试线连接到电脑的usb口上,通过tile-console命令登录到串口调试输出端。

如图2所示,所述tilera多核板卡初始化和收包模块的执行方法,具体如下:

s201、通过接收用户设置参数进行相应配置和初始化硬件资源,给多核板卡进行内存分配;

s202、对tcp流重组模块进行初始化和回调函数注册;

s203、调用mpipe高速收包接口,peek方式收包进行网络数据包的接入。

该模块主要通过接收用户设置参数进行相应配置和初始化硬件资源,给多核板卡的notifrng、notifgroup、buckets、queues等进行内存分配,同时对tcp重组的部分进行初始化和回调函数注册,最后调用mpipe高速收包接口,peek方式收包进行网络数据包的接入。

图3为具体流程图,所述tcp流重组模块的执行方法,方法如下:

s301、nids_next_special_mpipe函数处理收包数据;

s302、注册回调函数指针链表循环调用;

s303、process_tcp进行tcp重组;

s304、tcp流重组完成后进入回调函数进行邮件协议的分类判断,根据端口走入不同的邮件还原模块中。

主要借助于开源库libnids的tcp流重组功能,将开源代码进行重构修改,添加与mpipe的对接接口,将网络数据包流量引入tcp流重组模块,同时对libnids的数据结构进行修改,加入数据还原算法需要用到的用户字段,方便后续处理。tcp流重组完成后进入回调函数进行邮件协议的分类判断,根据端口走入不同的邮件还原模块算法中。

其中,所述步骤s2中邮件还原模块包括pop3邮件还原模块、stmp邮件还原模块、imap邮件还原模块、http邮件还原模块。

如图4所示,所述pop3邮件还原模块,根据pop3邮件协议的特征,进行算法设计,pop3邮件协议中服务端发送top或retr协议命令时客户端才会有邮件数据发送具体执行方法如下:

s401、符合pop3邮件协议的特征,进入pop3邮件还原函数入口;

s402、判断是否是客户端数据,如果是则邮件内容获取标志位为1;如果不是则判断协议命令是否为top或者retr,如果协议命令符合则邮件内容获取标志位置为1;

s403、如果内容获取标志位为1,则判断邮件内容结束符;

403、判断邮件内容结束符,如果有则内容存入eml文件,如果没有则缓存邮件内容供下一次接收使用。

如图5所示,所述stmp邮件还原模块,根据stmp邮件协议特征,进行算法设计,该算法和pop3类似,不同的是对我们有用的stmp的协议命令和邮件内容数据流都是服务端发送过来的,且获取邮件内容的协议命令是data,具体执行方法如下:

s501、符合stmp邮件协议特征,进入stmp邮件还原函数入口;

s502、判断是否为服务器端数据,如果是则进一步判断邮件内容获取标志位是否为1;如果标志位不为1则判断协议命令是否为data,如果是data命令,则邮件内容获取标志位置为1;

s503、邮件内容获取标志位置为1的邮件,则进一步判断邮件内容结束符;

s504、判断邮件内容结束符,如果有则内容存入eml文件,如果没有则缓存邮件内容供下一次接收使用。

如图6所示,所述imap邮件还原模块,该模块根据imap邮件协议交互特征,带用fetch协议命令,并携带参数body.peek[]或body.peek[header]等类似请求获取邮件全部内容或部分内容的协议命令时,记录进入邮件内容还原状态,并且组合缓存出邮件内容结束符,当邮件内容到达时,判断是否有结束符,有则进行单封邮件的循环拆分和eml存储,没有则缓存邮件内容。具体执行方法如下:

s601、符合imap邮件协议交互特征,进入imap邮件还原函数入口;

s602、判断是否为客户端数据,如果是则进一步判断邮件内容获取标志位是否为1;如果不是客户端数据,则进一步判断协议命令,如果协议命令符合,则邮件内容标志位为1并且组合缓存出邮件内容结束符;

s603、当邮件内容到达时,判断是否有结束符,有则进行单封邮件的循环拆分和eml存储,没有则缓存邮件内容。

如图7所示,所述http邮件还原模块目前只针对163邮箱的http网络数据包的邮件还原,根据邮箱操作产生的网络数据包分析得到邮箱操作的协议命令格式:

a)当用户点击“收件箱”时显示邮件列表操作,对应http协议中请求url为post方法并且包含"&func=mbox:listmessage"标识;

b)当用户点击某个邮件查看邮件内容时,对应http协议中两个请求url,一个是post方法并且包含”&func=mbox:readmessage”和"&action=read"标识,包含邮件头部信息;另一个是get方法并且包含"read/readhtml.jsp?"标识,包含邮件以html形式展示的邮件内容;

c)当用户点击发送邮件时,对应http协议中请求url为post方法并且包含"&func=mbox:compose"和"&action=deliver"标识;

根据这些接口类型分配不同的接口标志位,当分析url时,识别到对应接口时置位相应接口标志位,当邮件内容到达时进行分接口的解析,首先需要利用zlib进行gzip压缩的内容的解压缩,其中delivermessage发送邮件接口则进行的操作是被url转码的内容进行解码,然后再对内容解析抽取mime格式中的from、to、subject等字段信息进行mime格式的组合,最后将mime格式写入eml文件中。

具体执行方法为:

具体执行方法为:

s701、符合http邮件协议交互特征,进入http邮件还原模块入口;

s702、判断是否为客户端数据,如果是客户端数据,则进一步判断是否为对应标志位是否为content-encoding:gzip\r\n\r\n和结束符0\r\n\r\n;如果不是客户端数据,判断是否为readmessage、listmessage、readmessage接口标志位,如果是,delivermessage接口数据内容url解码,解码内容进行mime格式的组合,将组合的mime结构内容写入eml文件中;

s703、如果是客户端数据且符合对应的标志位,则利用zlib库解压gzip内容,对解压内容进行判断;

s704、判断是否为readmessage接口标志位,如果是,则填写邮件mime结构体的head部分;如果不是则进一步判断是否为readhtml接口标志位,如果是readhtml标志位,则填写邮件mime结构体的html部分,然后将组合的mime结构内容写入eml文件;

s705、如果不是readhtml接口标志位,则进一步判断是否为listmessage接口标志位,如果是listmessage接口标志位,则拆分出单封邮件内容,组合mime结构体head部,然后将组合的mime结构内容写入eml文件。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1