CN101867558B - 用户态网络协议栈系统及处理报文的方法 - Google Patents

用户态网络协议栈系统及处理报文的方法 Download PDF

Info

Publication number
CN101867558B
CN101867558B CN2009101068354A CN200910106835A CN101867558B CN 101867558 B CN101867558 B CN 101867558B CN 2009101068354 A CN2009101068354 A CN 2009101068354A CN 200910106835 A CN200910106835 A CN 200910106835A CN 101867558 B CN101867558 B CN 101867558B
Authority
CN
China
Prior art keywords
message
module
proxy module
protocol stack
protocol
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.)
Active
Application number
CN2009101068354A
Other languages
English (en)
Other versions
CN101867558A (zh
Inventor
戚建淮
唐威
李俊刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Y&D Electronics Information Co Ltd
Original Assignee
SHENZHEN RONGDA ELECTRONICS CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN RONGDA ELECTRONICS CO Ltd filed Critical SHENZHEN RONGDA ELECTRONICS CO Ltd
Priority to CN2009101068354A priority Critical patent/CN101867558B/zh
Publication of CN101867558A publication Critical patent/CN101867558A/zh
Application granted granted Critical
Publication of CN101867558B publication Critical patent/CN101867558B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种用户态网络协议栈系统,包括协议栈配置管理模块、接收队列模块、发送队列模块以及多个协议代理模块,所述协议栈配置管理模块,用于裁剪协议栈内的协议代理、配置各协议代理的过滤规则;所述接收队列模块,用于实现对接收报文的缓存区域进行管理;所述发送队列模块,用于实现对发送报文的缓存区域进行管理;所述多个协议代理模块位于多个层,每一协议代理模块包括A类接口、B类接口及C类接口,其中:所述A类接口,用于接收上层协议代理模块的传送的报文;所述B类接口,用于供下层协议代理模块提交报文;所述C类接口,用于供协议配置管理模块对该协议代理模块进行配置。本发明通过协议栈配置管理模块实现了用户态网络协议栈。

Description

用户态网络协议栈系统及处理报文的方法
技术领域
本发明涉及计算机网络领域,尤其涉及一种用户态网络协议栈系统及处理报文的方法。
背景技术
在网络操作系统(例如Linux、FreeBSD操作系统等)中,TCP/IP协议栈从属于操作系统内核。上述方式可以保证协议栈具有较高的稳定性与较高性能。
将网络协议封装进操作系统内核,虽然可以为用户提供完整的网络操作系统,简化用户的网络支持工作,但是不利于用户添加和实现新的用户协议,也不利于用户根据自己的特殊需要对协议的实现细节进行调整,或根据自己的特殊要求对协议进行动态组装或协议包进行深度检测,同时也不利于协议代码的维护、调试和开发。例如当前的Linux操作系统中,可以通过修改内核代码方式修改协议栈,但Linux操作系统中的TCP/IP协议栈比较复杂,要求修改人员同时熟悉内核,因此对修改人员要求较高;此外对Linux操作系统庞大的协议栈进行裁剪时也需要耗费大量时间。而MACH3.0这类微内核的操作系统将网络协议栈移动到用户态,并作为一个独立的后台服务进程来实现,但是其性能非常低,而且在协议栈进程与用户进程间数据交互时,存在多次上下文切换和内存拷贝。
鉴于此,技术人员已经在TCP/IP协议栈的用户态实现上进行了不同的尝试。2002年《计算机工程与应用》的“网络协议栈的用户层实现机制研究”出于维护与调试目的提出了网络协议栈在用户层实现的机制:协议功能编译成动态库,直接链接到用户程序地址空间;登录服务器,在操作系统中作为可靠的高优先级进程运行;网络I/O模块,从属于内核网络驱动设备;网络I/O模块与协议动态库间通过共享内存交互数据。工作时,应用(该应用为不属于协议栈的程序)首先调用协议功能库,协议功能库向登录服务器申请连接,登录服务器协调网络I/O模块建立通信通道,并把通信许可返回给协议库,随后的通信过程中,登录服务器不再参与。2004年的《计算机工程与应用》的“构件化网络协议栈”、2008年的《计算机系统应用》的“TCP/IP网络协议栈的构件化研究”提出了构件化网络协议栈机制:从软件复用的角度出发,利用构件技术,将整个协议栈划分为粒度不等的构件体,通过对构件部署来完成定制。
然而,目前的用户态协议栈虽然可以解决调试难、组装难、定制化难的问题,但存在如下问题:
1)性能与效率问题。无论是共享库方式还是构件方式,协议栈中各协议间充斥了接口调用、数据拷贝。这类操作将带来性能瓶颈。
2)安全性问题。“网络协议栈的用户层实现机制研究”中强调了登录服务器对通信实体鉴权、I/O模块保存利用通信许可证中的发送头与接收头构成验证模板,只有与模板匹配到报文才会发送或接收。这样,只要中止或控制了登录服务器,即可使整个协议栈瘫痪。同时,基于构件的协议栈,其构件接口地址可能被篡改,从而导致协议栈失效。
3)报文控制问题。目前的用户态协议栈,出发点是协议栈调试与裁剪定制化,较少考虑报文控制。即使是防火墙,也只能简单的ACL规则控制,未在协议栈内实现报文的深度检测。目前的实时阻隔总是滞后。
发明内容
本发明要解决的技术问题在于,针对上述用户态网络协议栈性能效率低、安全性不高、报文控制不佳等缺陷,提出一种新的用户态网络协议栈系统及处理报文的方法。
本发明解决上述技术问题的技术方案是,构造一种用户态网络协议栈系统,其特征在于,包括协议栈配置管理模块、接收队列模块、发送队列模块以及多个协议代理模块,
所述协议栈配置管理模块,用于裁剪协议栈内的协议代理、配置各协议代理的过滤规则;
所述接收队列模块,用于实现对接收报文的缓存区域进行管理;
所述发送队列模块,用于实现对发送报文的缓存区域进行管理;
所述多个协议代理模块位于多个层,每一协议代理模块包括A类接口、B类接口及C类接口,其中:
所述A类接口,用于接收上层协议代理模块的传送的报文;
所述B类接口,用于供下层协议代理模块提交报文;
所述C类接口,用于供协议配置管理模块对该协议代理模块进行配置。
在本发明所述的用户态网络协议栈系统中,所述多个协议代理模块包括:IP代理模块、ICMP代理模块、ARP代理模块、传输层协议代理模块和应用层协议代理模块,其中:
所述IP代理模块,用于根据协议栈配置管理模块配置的过滤规则报文进行过滤,并将合法的上行报文依据协议类型提交到ICMP代理模块、ARP代理模块或传输层协议代理模块,将合法的下行报文通知网络接口卡驱动发送;
所述ICMP代理模块,用于实现ICMP协议的相应功能,并依据协议栈配置管理模块配置的过滤规则对报文进行过滤;
所述ARP代理模块,用于实现ARP协议的功能,并依据协议栈配置管理模块配置的过滤规则,对ARP协议包进行过滤;
传输层协议代理模块,用于接收IP代理模块提交的报文,并依据协议栈配置管理模块配置的过滤规则,对报文过滤后,依据服务类型提交到应用层协议代理模块;同时对来自应用层协议代理模块的报文进行过滤处理后,将合法的下行报文提交给IP代理模块;
所述应用层协议代理模块,用于对上行报文和下行报文依据协议栈配置管理模块配置的规则进行过滤,并将上行报文拷贝提交到用户应用或者将源自用户应用提交的报文拷贝到发送队列模块。
在本发明所述的用户态网络协议栈系统中,所述传输层协议代理模块包括TCP代理模块和UDP代理模块,其中:
所述TCP代理模块,用于接收IP代理模块提交的报文,并依据协议栈配置管理模块配置的过滤规则,对TCP报文过滤后,依据服务类型提交到上层应用代理;同时,该TCP代理模块对来自应用层协议代理的报文进行过滤处理后,将合法的下行报文提交给IP代理模块;
所述UDP代理模块,用于接收IP代理模块提交的上行报文,并对UDP报文进行过滤后,将合法的报文提交给应用层协议代理模块;同时,该UDP代理模块还将来自应用层协议代理模块的下行报文经过过滤检测后,提交到IP代理模块。
在本发明所述的用户态网络协议栈系统中,所述应用层协议代理模块包括透传模块、HTTP代理模块、FTP代理模块、TNS代理模块、SMTP代理模块、POP3代理模块和DNS代理模块,其中:
所述透传模块,用于将上行报文拷贝提交到用户应用,或者将源自用户应用提交的报文拷贝到发送队列模块,并将报文提交到传输层协议代理模块;
所述HTTP代理模块、FTP代理模块、TNS代理模块、SMTP代理模块、POP3代理模块和DNS代理模块分别对上行报文和下行报文依据协议栈配置管理模块配置的规则进行过滤。
在本发明所述的用户态网络协议栈系统中,所述接收队列模块采用直接内存映射法,直接操作内核空间内存区域;所述发送队列模块采用直接内存映射法,直接操作内核空间内存区域。
在本发明所述的用户态网络协议栈系统中,下层协议代理对上层协议代理进行动态身份验证。
在本发明所述的用户态网络协议栈系统中,所述协议栈运行在操作系统为用户预留的地址空间。
本发明还提供一种使用上述系统处理接收报文的方法,包括以下步骤:
(a)从接收队列获取数据报文,启动接收流程;
(b)取得的报文进行IP拆包,并依据源自协议配置管理功能配置的IP层数据包过滤规则;
(c)检测IP报文是否合法,如果合法则执行步骤(d),否则直接通知接收队列模块,恢复本数据报文所在内存区域为空闲;
(d)根据报文的IP头域判断IP报文是否为分片报文,如果是则执行步骤(e),否则执行步骤(f);
(e)对IP报文进行IP分片组包处理,并返回步骤(a);
(f)根据IP头域的服务类型,将IP报文发送到各协议代理进行处理。
在本发明所述的处理接收报文的方法中,所述步骤(a)中,在连续2次取不到新数据报文时,以线性递增的时间间隔从接收队列中获取数据报文,并在超过最大时间间隔后,重新以0时间间隔从接收队列获取数据报文。
本发明还提供一种使用上述系统处理应用层协议报文的方法,包括以下步骤:
(a’)应用层协议代理收到报文后对报文进行检测,其检测规则来源于通过协议栈配置管理模块配置的规则;
(b’)若报文非法,则直接丢弃该非法报文;否则执行步骤(c’)。
(c’)判断报文是否为上行报文,如果是上行报文,执行步骤(e’);否则向发送队列模块申请空间,并将用户态下的报文数据拷贝到所申请的内核空间;
(d’)发送报文并通知发送队列管理模块所申请内存区域已空闲,完成数据发送;
(e’)将报文从接收队列模块所提示的内核内存空间拷贝出来,并提示接收队列模块该区域已空闲,同时应用层协议代理将数据报文提交给用户应用。
本发明的用户态网络协议栈系统及处理报文的方法,通过协议栈配置管理模块实现了用户态网络协议栈。此外本发明进一步采用基于用户设定的规则在协议栈内对报文进行深度检测,解决了目前用户态防火墙的低效率问题;同时,用户可以自己设置报文过滤规则,增强了用户对报文的安全管控能力。本发明还提供了实体间安全认证方法,使协议栈内上下层实体无法冒称与伪造,同时,即使在运行时某实体被篡改,也能通过其在内存中的备份自动恢复,增强了协议栈的安全性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明用户态网络协议栈系统实施例的结构框图;
图2是上下层协议代理模块间的接口示意图;
图3是协议代理模块间动态身份验证的流程示意图;
图4是协议代理间注册与初始身份验证流程图;
图5是处理接收报文的流程图;
图6为处理应用层协议报文的流程图。
具体实施方式
下面结合附图对本发明具体实施方式进行详细说明。
本发明的协议栈运行在用户态内存空间而非操作系统内核内存空间,其中用户态内存空间是操作系统为用户预留的地址空间,而非操作系统为自身预留的地址空间,且上述用户空间与内核空间无重叠。协议栈的接收数据缓存区与发送数据缓存区直接映射在操作系统内核内存空间,映射通过调用操作系统提供的内存映射方法,将内核空间映射到用户空间。从而协议栈只进行了一次内存拷贝,即尽在协议栈接收和/或发送数据到栈外用户应用时,才进行内存拷贝。
如图1所示,是本发明用户态网络协议栈系统实施例的示意图。该系统包括协议栈配置管理模块11、接收队列模块12、发送队列模块13、IP代理模块14、ICMP代理模块16、ARP代理模块15、传输层协议代理模块17和应用层协议代理模块18。其中,传输层协议代理模块17包括TCP代理模块171和UDP代理模块172。
协议栈配置模块11是系统的配置中枢,具体执行协议代理模块13-18裁剪、协议栈搭建以及各协议代理模块13-18的过滤规则配置等。此外,各协议代理13-18在内存中的备份与恢复也可由协议栈配置管理模块11完成的。特别地,在某些特定使用场景中,协议栈配置模块11还可内嵌SNMP功能。
具体地,上述过滤规则至少包括关联过滤规则和/或统计过滤规则,其中关联过滤规则为由用户设定的、与协议头、协议内容相关的检测标准,至少包括协议类型、属性名称、标准值、是否丢弃等属性;统计规则是由用户设定的、与协议类型、协议头、协议内容相关的统计过滤标准,至少包括协议类型、源IP、源端口、目标IP、目标端口、频率阈值、统计量阈值、是否丢弃等属性。
接收队列模块12用于实现对系统接收报文的缓存区域进行管理。该接收队列模块12采用直接内存映射法,直接操作内核空间内存区域。网络接口卡驱动直接将从网络接收到的报文移动此内核空间内存区域。接收队列模块11仅在数据报文被协议栈内的任意协议代理明确丢弃或拷贝到用户应用(该应用为不属于协议栈的程序)空间后,才能将该报文区域标志为空闲。
发送队列模块13用于实现对系统发送报文的缓存区域进行管理。该发送队列模块13采用直接内存映射法,直接操作内核空间内存区域。网络接口卡驱动可以直接操纵此内核空间内存区域。发送队列模块13仅在网络接口驱动明确标识数据发送完毕或协议栈内某协议代理表明数据包检测非法时,才能重用发送报文所占内存。
IP代理模块14用于实现IP协议的功能,根据其过滤规则对IP包进行过滤,并将合法的上行报文依据协议类型提交到ICMP代理模块16、ARP代理模块15、TCP代理模块171或UDP代理模块172,将合法的下行报文通知网络接口卡驱动发送。该IP代理模块14通过协议栈配置管理模块11配置过滤规则。
ICMP代理模块16用于接收IP代理模块14提交的数据,完成ICMP协议所要求的功能,并直接在所述发送队列模块所管理的操作系统内核内存中创建应答消息。该ICMP代理模块16还依据协议栈配置管理模块11配置的过滤规则对ICMP包进行过滤。
ARP代理模块15用于接收IP代理模块14的数据包,完成ARP协议所要求的功能,并直接在所述发送队列模块所管理的操作系统内核内存中创建应答消息。该ARP代理模块15还依据协议栈配置管理模块11配置的过滤规则,对ARP协议包进行过滤。
传输层协议代理模块17由TCP代理模块171和UDP代理模块172。其中TCP代理模块171接收IP代理模块14提交的报文并对报文进行TCP协议处理,并依据协议栈配置管理模块11配置的过滤规则对TCP报文过滤后,依据服务类型提交到上层应用代理;同时,该TCP代理模块171对来自应用层协议代理18的报文进行过滤处理后,将合法的下行报文提交给IP代理模块14。UDP代理模块172接收IP代理模块14提交的上行报文并对报文进行UDP协议处理,并对UDP报文进行过滤后将合法的报文提交给应用层协议代理模块18;同时,UDP代理模块172还将来自应用层协议代理模块18的下行报文经过过滤检测后,提交到IP代理模块14。
应用层协议代理模块18由透传模块181、HTTP代理模块182、FTP代理模块183、TNS代理模块184、SMTP代理模块185、POP3代理模块186和DNS代理模块187组成。透传模块181为缺省模块,用于将上行报文拷贝提交到用户应用,或者将源自用户应用提交的报文拷贝到发送队列模块12,并将报文提交到传输层协议代理模块17的TCP代理模块171或UDP代理模块A72。HTTP代理模块182、FTP代理模块183、TNS代理模块184、SMTP代理模块185、POP3代理模块186和DNS代理模块187是具体应用协议代理模块,分别对上行报文和下行报文依据协议栈配置管理模块11配置的规则进行过滤。
如图2所示,是上述系统中上下层协议代理模块的耦合关系的结构图。每一协议代理均具有3类接口:A类接口、B类接口和C类接口。下面以下层服务提供者22及上层服务使用者21为例说明上述三类接口:A类接口由下层服务提供者22提供,用于接收上层服务使用者21的注册信息并接收上层服务提供者21传送的报文;B类接口由上层服务使用者21提供,用于供下层服务提供者22提交报文;C类接口用于供协议配置管理模块11使用,各协议代理的各种配置信息、状态信息等都是通过该C类接口实现。
为了保证安全性,需在各协议代理间增加身份验证。图3所示为协议代理间动态身份验证流程图。
步骤S31:图2所示的服务提供者22轮询注册到本协议代理的上层服务使用者21的动态身份验证接口。如果存在服务使用者21身份验证接口,则执行步骤S32,否则流程结束。
步骤S32:服务提供者22直接向上述身份验证接口发送身份验证请求消息,该身份验证请求包括服务提供者22的身份标识、随机数、验证用算法标识、服务使用者21的身份标识、最长时延等信息。
步骤S33:服务使用者21收到身份验证请求后,检测身份验证请求消息中服务提供者22的身份标识、服务使用者21的身份标志以及验证用算法标志是否合法。如果合法,服务使用者21则将验证用算法标识对应的验证用算法作用在预先设置的协议代理耦合密码和随机数(该随机数由身份验证请求消息提供)上,生成响应数,并产生新的随机数,最后将身份验证响应消息返回给服务提供者22,并由服务提供者22执行步骤S34,其中身份验证响应消息包括身份测试结果、响应数、验证用算法标识、服务使用者21的标识、新的随机数等。具体地,上述身份标志可以为128位数字标签;随机数可以为32位数值串;应答数可以为32位数字串。
步骤S34:服务提供者22检测身份验证响应消息,如果验证成功,即该消息中身份测试结果为真,响应数正确,并且服务使用者21的标识都正确时,则置本地验证结果为真,同时取得身份验证响应消息中的验证用算法标识、新的随机数、服务使用者21的标志后执行步骤S35。如果响应消息验证失败,则执行步骤S38。
步骤S35:服务提供者22准备构造身份验证确认消息,即利用服务使用者21的标识,取得该服务使用者21的耦合密码(该耦合密码通过协议栈配置管理模块11手工配置,服务使用者21与服务提供者22间的耦合密码这2个模块均需缓存),并将验证用算法标识对应的验证用算法作用在耦合密码与新的随机数上产生新的响应数,然后执行步骤S36。
步骤S36:服务提供者22依据本地缓存的验证结果、新的响应数、服务使用者21的标识、服务提供者22的标识构建身份验证确认消息,并发送给服务使用者21。服务提供者22端身份验证流程结束。
步骤S37:服务使用者21得到身份验证确认消息后,验证服务使用者21返回的身份验证确认结果,并验证新的响应数是否正确,如果两者均正确,则本次动态身份验证成功,服务使用者21端身份验证流程结束;否则,身份验证失败,转步骤S38。
步骤S38:在身份验证失败时通过协议代理自身的C类接口通知协议栈配置管理模块11,并由协议栈配置管理模块11完成协议代理完整性检查以及自动恢复;在响应超时的情况下,服务使用者21会依据协议栈配置管理模块11所设定的时间间隔和尝试次数,发起新一轮身份验证或启动身份验证失败处理。
如图4所示,是本发明协议代理间注册与初始身份验证流程图。
首先,在步骤S41中,通过协议栈配置管理模块11配置上层协议代理的耦合参数,其中耦合参数包括底层服务提供者标识、A类接口地址、耦合密码、运行时用的身份验证算法标识等,耦合密码将同时保留在上、下层协议代理中。
步骤S42,上层协议代理尝试向所配置的下层协议代理的A类接口发起注册请求,该注册请求包括上层协议代理标识、接收消息B类接口的地址等信息。缺省地,下底层协议代理一般都返回注册成成功,并携带下层协议代理的面向上层协议的接收消息接口地址。
步骤S43,上层协议代理向下层协议代理发起初始身份验证请求,该初始身份验证请求包括上层协议代理标识、随机数、超时时间、验证用算法等信息。下层协议代理收到身份验证请求后,查看该上层协议代理是否注册,并将验证用算法作用到随机数并通过协议代理标识检索到的耦合密码计算出响应数,并生成包含验证结果、响应数、新随机数和下层协议代理标识的身份验证响应消息发送到上层协议代理。
步骤S44,上层协议代理收到下层协议代理的身份验证响应消息后,测试验证结果为真,并且响应数正确后,置本地验证结果为真,转步骤S45。
步骤S45,从本地缓存中取出验证用算法标识,将验证算法作用在新随机数和耦合密码上,计算新响应数。
步骤S46,上层协议代理向下层协议代理发送身份验证确认消息,包括本地验证结果,新响应数。下层协议代理收到确认消息后,检测验证结果,并测试新响应数是否正确,最后将这2者都正确的上层协议代理标识、接收消息地址保存到协议代理关系表中。
步骤S47,上层协议代理正式向下层协议代理注册,包括动态身份验证接口地址、心跳接口地址等信息。下层协议代理收到注册请求后,将接口地址保留到协议代理关系表中。
步骤S42到步骤S47中,如果出错,则终止流程,并告知协议栈配置管理模块11。
如图5所示,为本发明用户态网络协议栈处理接收报文的流程图。
首先,步骤S51中,IP代理模块14从接收队列获取数据报文,启动接收流程。为了提高性能,连续2次取不到新数据包时,随后取包的时间间隔遵循线性递增规律,并在超过最大时间间隔后,重新从0开始。只要取到了数据包,取包间隔恢复为0。
步骤S52:IP代理模块14对取得的报文进行IP拆包,并依据源自协议配置管理功能配置的IP层数据包过滤规则,。
步骤S53:检测IP报文是否合法,如果合法则执行步骤S54,否则直接通知接收队列模块,恢复本数据报文所在内存区域为空闲。
步骤S54:根据IP头域判断IP报文是否为分片报文,如果是则执行步骤S55,否则执行步骤S56。
步骤S55:对IP报文进行IP分片组包处理,然后处理下一IP报文。
步骤S56:基于IP头域的服务类型,将IP报文发送到各协议代理进行相应处理。
具体地,当根据IP头域确认是ARP报文且拆包后是ARP请求时,进行ARP请求处理。在实现ARP请求处理功能前,需要对ARP报文依据协议栈配置管理模块11配置的ARP数据包过滤规则,去除非法ARP报文。
当根据IP头域确认是ARP报文且拆包后是ARP响应时,进行ARP响应处理。在实现ARP响应处理功能前,需要对ARP报文依据协议栈配置管理模块11配置的ARP数据包过滤规则,去除非法报文。
当根据IP头域确认是ICMP报文且拆包后是ICMP应答报文时,进行ICMP应答处理。在实现ICMP应答处理功能前,需要对ICMP报文依据协议栈配置管理模块11配置的ICMP数据包过滤规则,去除非法报文。
当根据IP头域确认是UDP报文,拆包后,依据协议栈配置管理模块11配置的UDP数据包过滤规则,去除非法UDP报文,并执行步骤S57。
当根据IP头域确认是TCP报文,首先拆包,再依据协议栈配置管理模块11配置的TCP数据包过滤规则,去除非法TCP报文,并执行步骤S57。
步骤S57:基于传输层拆包后的应用端口,将数据报文提交到已注册的应用层协议服务代理模块。
如图6所示,为本发明用户态网络协议栈处理应用层协议报文的流程图。
首先,步骤S61中,应用层协议代理(例如透传服务、HTTP代理、FTP代理、TNS代理、SMTP代理、POP3代理和DNS代理等)收到报文后启动应用层协议报文处理流程。
步骤S62:应用层协议代理对报文进行检测,其检测规则来源于通过协议栈配置管理模块11配置的规则。
步骤S63:若报文非法,则直接丢弃该非法报文。否则执行步骤S64。
步骤S64:判断报文是否为上行报文,如果是上行报文,执行步骤S68,否则执行步骤S65。
步骤S65:针对下行报文(即源自用户应用),向发送队列模块申请空间。该空间直接位于内核空间,通过内存映射后,用户态下可以直接操作此空间区域。
步骤S66:将用户态下的报文数据拷贝到步骤S65所申请的内核空间。
步骤S67:将报文通过应用协议代理的下层协议代理的接收接口提交给传输层协议代理;传输层协议代理收到报文通知后,基于预设的过滤规则,去掉非法报文后,将合法报文组包,并调用IP协议代理的路由接口,取得目标IP路由后,通过IP协议代理的接收接口提交给IP协议代理;IP协议代理基于预设的过滤规则,去掉非法报文后,将合法报文组包,并通知网络接口驱动,开始发送报文。IP报文发送成功后,通知发送队列管理模块由步骤S65所申请内存区域已空闲。发送报文流程结束。
优选地,如果IP协议代理发现目标机器与源机器是同一台机器时,不通知网络接口驱动发送消息,而是直接将发送队列中数据报文的地址,插入接收队列的接收报文指示中,并打上特殊标志。
步骤S68:针对上行报文(即源自传输层的报文),将内容从接收队列模块所提示的内核内存空间拷贝出来,并提示接收队列模块该区域已空闲。接收队列模块检查该区域的特殊标志,如果置位则通知发送队列模块该内存区域已空闲。
步骤S69:应用协议代理将数据报文提交给用户应用,完成数据接收。接收报文流程结束
本发明的系统及方法可以广泛用于主机防火墙、内容检测设备、信息交换设备等需要用户频繁更新过滤规则的场景,以定制出更符合实际要求的安全管控产品。本发明采用内核态空间与用户态空间映射法,避免了用户态协议栈与内核间2次内存拷贝,同时协议栈内各协议代理间共享同一内存空间,避免了数据包在各协议代理间拷贝,减少了内存拷贝操作,增强了性能与效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种用户态网络协议栈系统,其特征在于,包括协议栈配置管理模块、接收队列模块、发送队列模块以及多个协议代理模块,
所述协议栈配置管理模块,用于裁剪协议栈内的协议代理、配置各协议代理的过滤规则;
所述接收队列模块,用于实现对接收报文的缓存区域进行管理;
所述发送队列模块,用于实现对发送报文的缓存区域进行管理;
所述多个协议代理模块位于多个层,每一协议代理模块包括A类接口、B类接口及C类接口,其中:
所述A类接口,用于接收上层协议代理模块的传送的报文;
所述B类接口,用于供下层协议代理模块提交报文;
所述C类接口,用于供协议配置管理模块对该协议代理模块进行配置。
2.根据权利要求l所述的用户态网络协议栈系统,其特征在于,所述多个协议代理模块包括:IP代理模块、ICMP代理模块、ARP代理模块、传输层协议代理模块和应用层协议代理模块,其中:
所述IP代理模块,用于根据协议栈配置管理模块配置的过滤规则对报文进行过滤,并将合法的上行报文依据协议类型提交到ICMP代理模块、ARP代理模块或传输层协议代理模块,将合法的下行报文通知网络接口卡驱动发送;
所述ICMP代理模块,用于实现ICMP协议的相应功能,并侬据协议栈配置管理模块配置的过滤规则对报文进行过滤;
所述ARP代理模块,用于实现ARP协议的功能,并依据协议栈配置管理 模块配置的过滤规则,对ARP协议包进行过滤;
传输层协议代理模块,用于接收IP代理模块提交的报文,并依据协议栈配置管理模块配置的过滤规则,对报文过滤后,依据服务类型提交到应用层协议代理模块;同时对来自应用层协议代理模块的报文进行过滤处理后,将合法的下行报文提交给IP代理模块;
所述应用层协议代理模块,用于对上行报文和下行报文依据协议栈配置管理模块配置的规则进行过滤,并将上行报文拷贝提交到用户应用或者将源自用户应用提交的报文拷贝到发送队列模块。
3.根据权利要求2所述的用户态网络协议栈系统,其特征在于,所述传输层协议代理模块包括TCP代理模块和UDP代理模块,其中:
所述TCP代理模块,用于接收IP代理模块提交的报文,并依据协议栈配置管理模块配置的过滤规则,对TCP报文过滤后,依据服务类型提交到上层应用代理;同时,该TCP代理模块对来自应用层协议代理的报文进行过滤处理后,将合法的下行报文提交给IP代理模块;
所述UDP代理模块,用于接收IP代理模块提交的上行报文,并对UDP报文进行道滤后,将合法的报文提交给应用层协议代理模块;同时,该UDP代理模块还将来自应用层协议代理模块的下行报文经过过滤检测后,提交到IP代理模块。
4.根据权利要求2所述的用户态网络协议栈系统,其特征在于,所述应用层协议代理模块包括透传模块、HTTP代理模块、FTP代理模块、TNS代理模块、SMTP代理模块、POP3代理模块和DNS代理模块,其中:
所述透传模块,用于将上行报文拷贝提交到用户应用,或者将源自用户应用提交的报文拷贝到发送队列模块,并将报文提交到传输层协议代理模块; 
所述HTTP代理模块、FTP代理模块、TNS代理模块、SMTP代理模块、POP3代理模块和DNS代理模块分别对上行报文和下行报文依据协议栈配置管理模块配置的规则进行过滤。
5.根据权利要求1所述的用户态网络协议栈系统,其特征在于,所述接收队列模块采用直接内存映射法,直接操作内核空间内存区域;所述发送队列模块采用直接内存映射法,直接操作内核空间内存区域。
6.根据权利要求l所述的用户态网络协议栈系统,其特征在于,下层协议代理对上层协议代理进行动态身份验证。
7.根据权利要求l所述的用户态网络协议栈系统,其特征在于,所述协议栈运行在操作系统为用户预留的地址空间。
8.一种使用权利要求l所述的系统处理接收报文的方法,其特征在于,包括以下步骤:
(a)从接收队列获取数据报文,启动接收流程;
(b)取得的报文进行IP拆包,并依据源自协议配置管理功能配置的IP层数据包过滤规则;
(c)检测IP报文是否合法,如果合法则执行步骤(d),否则直接通知接收队列模块,恢复本数据报文所在内存区域为空闲;
(d)根据报文的IP头域判断IP报文是否为分片报文,如果是则执行步骤(e),否则执行步骤(f);
(e)对IP报文进行IP分片组包处理,并返回步骤(a);
(f)根据IP头域的服务类型,将IP报文发送到各协议代理进行处理。
9.根据权利要求8所述的处理接收报文的方法,其特征在于,所述步骤(a)中,在连续2次取不到新数据报文时,以线性递增的时间间隔从接收队列中获取数据报文,并在超过最大时间间隔后,重新以0时间间隔从接收队列获取数据报文。
10.一种使用权利要求1所述的系统处理应用层协议报文的方法,其特征在于,包括以下步骤:
(a’)应用层协议代理收到报文后对报文进行检测,其检测规则来源于通 过协议栈配置管理模块配置的规则;
(b’)若报文非法,则直接丢弃该非法报文;否则执行步骤(c’);
(c’)判断报文是否为上行报文,如果是上行报文,执行步骤(e’);否则向发送队列模块申请空间,并将用户态下的报文数据拷贝到所申请的内核空间;
(d’)发送报文并通知发送队列管理模块所申请内存区域己空闲,完成数据发送;
(e’)将报文从接收队列模块所提示的内核内存空间拷贝出来,并提示接收队列模块该区域已空闲,同时应用层协议代理将数据报文提交给用户应用。 
CN2009101068354A 2009-04-17 2009-04-17 用户态网络协议栈系统及处理报文的方法 Active CN101867558B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101068354A CN101867558B (zh) 2009-04-17 2009-04-17 用户态网络协议栈系统及处理报文的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101068354A CN101867558B (zh) 2009-04-17 2009-04-17 用户态网络协议栈系统及处理报文的方法

Publications (2)

Publication Number Publication Date
CN101867558A CN101867558A (zh) 2010-10-20
CN101867558B true CN101867558B (zh) 2012-11-14

Family

ID=42959126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101068354A Active CN101867558B (zh) 2009-04-17 2009-04-17 用户态网络协议栈系统及处理报文的方法

Country Status (1)

Country Link
CN (1) CN101867558B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546398B (zh) * 2011-12-16 2015-02-25 华为技术有限公司 一种报文匹配方法及装置
CN104142867B (zh) * 2013-05-09 2018-01-09 华为技术有限公司 数据处理装置及数据处理方法
CN104734993B (zh) 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
CN104767781B (zh) * 2014-01-08 2018-09-04 杭州迪普科技股份有限公司 一种tcp代理装置以及方法
CN104811431B (zh) 2014-01-29 2018-01-16 华为技术有限公司 基于并行协议栈实例的数据包处理方法和装置
CN104202315A (zh) * 2014-08-25 2014-12-10 山东超越数控电子有限公司 一种基于PowerPC硬件架构的网络数据包过滤方法
CN105743894A (zh) * 2016-01-29 2016-07-06 瑞斯康微电子(深圳)有限公司 一种基于文件方式的多协议报文解析方法与系统
CN106210101B (zh) * 2016-07-20 2019-06-18 上海携程商务有限公司 消息管理系统及消息管理方法
CN106302199B (zh) * 2016-08-10 2019-12-17 成都广达新网科技股份有限公司 一种基于三层交换机设备的用户态协议栈实现方法及系统
CN110602262A (zh) * 2018-06-13 2019-12-20 网宿科技股份有限公司 路由器及其处理数据报文的方法
CN110602155A (zh) * 2018-06-13 2019-12-20 网宿科技股份有限公司 代理服务器及其处理数据报文的方法
CN109547580B (zh) * 2019-01-22 2021-05-25 网宿科技股份有限公司 一种处理数据报文的方法和装置
US10904719B2 (en) 2019-05-06 2021-01-26 Advanced New Technologies Co., Ltd. Message shunting method, device and system based on user mode protocol stack
CN110278161B (zh) * 2019-05-06 2020-08-11 阿里巴巴集团控股有限公司 基于用户态协议栈的报文分流方法、装置及系统
CN110430172B (zh) * 2019-07-18 2021-08-20 南京茂毓通软件科技有限公司 基于动态会话关联技术的互联网协议内容还原系统及方法
CN110493329A (zh) * 2019-08-08 2019-11-22 西藏宁算科技集团有限公司 一种基于用户态协议栈的并发推送服务方法和系统
CN110830434A (zh) * 2019-08-27 2020-02-21 杭州美创科技有限公司 通用透明代理方法
CN110768865B (zh) * 2019-10-23 2021-08-27 新华三信息安全技术有限公司 一种深度报文检测引擎激活方法、装置及电子设备
CN113596171B (zh) * 2021-08-04 2024-02-20 杭州网易数之帆科技有限公司 云计算数据交互方法、系统、电子设备及存储介质
CN113810397B (zh) * 2021-09-09 2023-04-18 山石网科通信技术股份有限公司 协议数据的处理方法及装置
CN114143061B (zh) * 2021-11-25 2023-06-02 郑州信大信息技术研究院有限公司 基于用户态协议栈实现数据安全可靠传输的方法及系统
CN114710570B (zh) * 2022-03-16 2023-08-25 深圳市风云实业有限公司 一种基于内核态协议栈的udp数据零拷贝传输方法
CN114866331B (zh) * 2022-05-31 2024-02-09 新华三信息安全技术有限公司 一种零信任网络下动态访问鉴权方法及设备、存储介质

Also Published As

Publication number Publication date
CN101867558A (zh) 2010-10-20

Similar Documents

Publication Publication Date Title
CN101867558B (zh) 用户态网络协议栈系统及处理报文的方法
RU2420029C2 (ru) Способ конфигурирования точки доступа и управления точкой доступа и контроллер доступа
CN101291205B (zh) 传输备份数据的方法、系统和镜像服务器
CN102724175A (zh) 泛在绿色社区控制网络的远程通信安全管理架构与方法
CN102255918A (zh) 一种基于DHCP Option 82的用户接入权限控制方法
JP2008146410A (ja) ネットワーク管理システム、情報処理装置、および情報処理装置の制御方法
CN105847108B (zh) 容器间的通信方法及装置
US11252196B2 (en) Method for managing data traffic within a network
CN101217482A (zh) 一种穿越nat下发策略的方法和一种通信装置
CN1682516A (zh) 用于防止网络地址盗用的方法和装置
CN105262738A (zh) 一种路由器及其防arp攻击的方法
CN101841813B (zh) 防攻击的无线控制系统
CN109547250B (zh) 云蜜网装置及云蜜网配置方法、系统、设备、计算机介质
CN103179100A (zh) 一种防止域名系统隧道攻击的方法及设备
CN108964985B (zh) 一种使用协议报文的虚拟客户终端设备的管理方法
CN102404346A (zh) 一种互联网用户访问权限的控制方法及系统
CN1921496B (zh) 一种dhcp客户端识别dhcp服务器的方法
CN101150390B (zh) 基于信任检测的应用指纹通信方法及系统
JP5562951B2 (ja) セキュアデバイスに関連付けられるルータ
CN111371807A (zh) 基于接入层的安全系统及其构建方法、终端、存储介质
JP2013516016A (ja) 可用性保障のためのプロキシベースセキュリティーシステム
CN115150830A (zh) 5g专网接入认证失败时保障终端公网访问的方法和系统
CN112653583B (zh) 一种基于Windows操作系统的IP地址管理方法
CN113315764B (zh) 防arp攻击的数据包发送方法、装置、路由器及存储介质
US11831677B2 (en) DHCP-communications monitoring by a network controller in software defined network environments

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
C56 Change in the name or address of the patentee

Owner name: SHENZHEN YONGDA ELECTRONIC INFORMATION CO., LTD.

Free format text: FORMER NAME: SHENZHEN RONGDA ELECTRONICS CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 518057 Shenzhen Aerospace Science and Technology Innovation Research Institute, South ten road, Nanshan District science and technology, Guangdong, Shenzhen D301-D309

Patentee after: Shenzhen Yongda electronic Touchplus information Corp

Address before: 518057 Shenzhen Aerospace Science and Technology Innovation Research Institute, South ten road, Nanshan District science and technology, Guangdong, Shenzhen D301-D309

Patentee before: Shenzhen Rongda Electronics Co., Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: User mode network protocol stack system and method for processing message

Effective date of registration: 20190807

Granted publication date: 20121114

Pledgee: Bank of Beijing Limited by Share Ltd Shenzhen branch

Pledgor: Shenzhen Yongda electronic Touchplus information Corp

Registration number: Y2019440020003

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20201203

Granted publication date: 20121114

Pledgee: Bank of Beijing Limited by Share Ltd. Shenzhen branch

Pledgor: SHENZHEN Y&D ELECTRONICS INFORMATION Co.,Ltd.

Registration number: Y2019440020003

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: User mode network protocol stack system and message processing method

Effective date of registration: 20201216

Granted publication date: 20121114

Pledgee: Bank of Beijing Limited by Share Ltd. Shenzhen branch

Pledgor: SHENZHEN Y&D ELECTRONICS INFORMATION Co.,Ltd.

Registration number: Y2020980009416

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20220408

Granted publication date: 20121114

Pledgee: Bank of Beijing Limited by Share Ltd. Shenzhen branch

Pledgor: SHENZHEN Y&D ELECTRONICS INFORMATION Co.,Ltd.

Registration number: Y2020980009416