一种基于流粒度的访问控制方法

文档序号:9711429阅读:428来源:国知局
一种基于流粒度的访问控制方法
【技术领域】
[0001]本发明涉及访问控制的技术领域,具体涉及一种基于流粒度的访问控制方法。
【背景技术】
[0002]目前,各种应用层出不穷,每种应用通常都包含多种业务流类型。对于企业通讯来说,一般都会包含两种业务类型,一种是敏感业务,另一种是非敏感业务。而某些敏感类业务可能只能在某个部门内使用,或者限制在某层楼使用,这就需要在边界网关处能够对应用进行以流为粒度的访问控制,实现灵活高效的业务通信。
[0003]申请号为200910106116.2的中国发明专利公开了一种交换机实现全线速调度业务流的方法,调度带有业务标识的业务流生成一个虚队列,然后对没有业务标识的业务流和虚队列进行调度,其提供了一种业务区分服务方案,可以实现不同业务的带宽区分对待,但是并未提供以流为粒度的访问控制方案。

【发明内容】

[0004]为了解决上述技术问题,本发明提供了一种基于流粒度的访问控制方法,能够支持以流为粒度的访问控制。
[0005]为了达到上述目的,本发明的技术方案是:一种基于流粒度的访问控制方法,其步骤如下:
步骤1:业务流管理模块对数据包进行类型分析,对数据包进行粗粒度和细粒度判断,分别获取数据包的业务类型和数据流类型;
步骤2:队列管理模块将不同类型的数据包放入不同的类型队列中;
步骤3:利用访问控制管理模块建立以流为粒度的访问控制策略;
步骤4:队列管理模块根据访问控制策略对不同的数据包进行队列调度,若访问控制策略为通过,对每个队列进行依次调度;若访问控制策略未通过,将该队列清空。
[0006]所述业务流管理模块用于对数据包进行捕获处理,并按照类型将数据包放入相应的发送队列中;业务流管理模块包括业务流管理单元,用于对数据包进行捕获并分析业务类型。
[0007]所述队列管理模块用于根据访问控制策略对不同类型的数据包进行队列调度;队列管理模块包括队列管理单元,用于将不同类型的数据包放入不同的队列,并协同访问控制管理模块进行队列调度。
[0008]所述访问控制管理模块用于根据用户需求建立访问控制策略;访问控制管理模块包括访问控制单元,访问控制单元用于根据用户需求对访问控制策略进行更新维护。
[0009]所述业务流管理模块以LKM形式加载在操作系统中,业务流管理模块为内核态,可伴随系统自启动;在业务流管理模块中设有基于Netfilter框架下挂载点添加的钩子函数。
[0010]所述访问控制策略存储在访问控制策略表,访问控制策略表在内核态下以二维数组的形式存在,行代表业务类型,列代表数据流类型。[0011 ]所述业务流管理模块获取数据包的业务类型和数据流类型的方法是:利用业务流识别方法对数据包进行业务类型识别,判断数据包所属的业务类型,判断数据包所属数据流类型,每个业务类型建立一个数据包链表,业务类型判断完成的数据包挂载在的链表后面。
[0012]所述业务流识别方法包括L7识别法、DPI或DFI。
[0013]所述链表结构采用单向链表实现。
[0014]本发明通过在边界网关处对不同的业务进行类型识别区分,根据类型识别建立访问控制策略表,然后根据预先设定的访问控制策略,查找访问控制策略表对不同类型的业务流进行区分控制。本发明可以对一个业务进行不同的流划分,比如视频流、音频流、文件流、其他等,且针对用户的需求将业务以流为粒度进行访问控制,可以更安全、更灵活的进行数据通信。
【附图说明】
[0015]图1为本发明的流程图。
[0016]图2为本发明数据传输的示意图。
【具体实施方式】
[0017]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0018]一种基于流粒度的访问控制方法,如图1所示,其步骤如下:
步骤1:业务流管理模块对数据包进行类型分析,对数据包进行粗粒度和细粒度判断,分别获取数据包的业务类型和数据流类型。
[0019]业务流管理模块用于对数据包进行捕获处理,并按照类型将数据包放入相应的发送队列中。业务流管理模块包括业务流管理单元,用于对数据包进行捕获并分析业务类型。业务流管理模块以LKM(LoadabIe Kernel Module)形式加载在操作系统中的,其为内核态,可伴随系统自启动。具体工作时,在业务流管理模块基于Netfilter框架下的挂载点添加相应的钩子函数,就可以自动的对数据包进行捕获分析。数据包的五元组信息可以唯一标识一条业务流。业务流管理模块对于本机发送的所有数据包进行分析操作,可以查看其五元组信息,即源IP地址,目的IP地址,源端口号,目的端口号,协议类型,通过Hash运算,定位数据包的ID入口,从而识别出数据包的类型。
[0020]业务流管理单元挂载在操作系统内核态下,可以实时的对通过本机的数据包进行捕获分析。当业务流管理单元捕获到数据包后,可以采用已经比较成熟的业务流识别方法,比如L7(Layer_7)识别法、DPI (Deep Packet Inspect1n)、DFI (Deep/Dynamic FlowInspect1n)等。业务流管理单元识别包括两步,第一步属于粗粒度识别,即先识别出属于哪种应用,比如数据包是QQ、迅雷等;第二部属于细粒度识别,即识别该数据包的具体业务流类型,比如视频、音频、文件、其他等。
[0021]步骤2::队列管理模块将不同类型的数据包放入不同的类型队列中。
[0022]队列管理模块用于根据访问控制策略对不同类型的数据包进行队列调度。队列管理模块包括队列管理单元,用于将不同类型的数据包放入不同的队列,并协同访问控制管理模块进行队列调度。根据业务流管理单元识别出的数据包的业务类型和数据流类型,队列管理单元将不同业务类型的数据包存放在不同的数据列表中,不同数据流类型的数据包放入业务流表的类型入口处,将数据包挂载在对应的类型队列中去。可以预先设定不同的业务类型,比如视频、音频、文件和其他,然后为每种类型设置数据包队列。可以采用数据链表的实现形式,将数据包放入对应类型的数据包中。
[0023]如图2所示,首先判断数据包是否属于已经存在的数据列表DataTable中,如果存在,则根据数据包的业务类型定位到数据流表Flow Table的类型入口处,如果不存在,则将该数据包所属业务类型添加至数据列表Data Table中,根据数据包的业务类型定位到数据流表Flow Table的类型入口处,最后将数据包挂载在对应的类型链表队列Queue List中去。具体地,首先,判断数据包所属的业务类型,确定业务类型后,判断该数据包所属数据流类型,需要说明的是,每个业务类型后面对应一个数据包链表,链表结构可以采用数据结构中的常用链表类型,比如单向链表,每个业务类型判断完成的数据包就会直接挂载对应的链表后面。
[0024]步骤3:利用访问控制管理模块建立以流为粒度的访问控制策略。
[0025]访问控制管理模块用于根据用户需求建立访问控制策略。可
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1