公开/公告号CN104008130A
专利类型发明专利
公开/公告日2014-08-27
原文格式PDF
申请/专利权人 开网科技(北京)有限公司;
申请/专利号CN201410173987.7
申请日2014-04-28
分类号G06F17/30;H04L12/24;H04L12/70;
代理机构北京庆峰财智知识产权代理事务所(普通合伙);
代理人刘元霞
地址 100193 北京市海淀区东北旺西路8号中关村软件园孵化器2258室
入库时间 2023-12-17 00:55:30
法律状态公告日
法律状态信息
法律状态
2023-04-04
未缴年费专利权终止 IPC(主分类):G06F17/30 专利号:ZL2014101739877 申请日:20140428 授权公告日:20170714
专利权的终止
2017-07-14
授权
授权
2014-09-24
实质审查的生效 IPC(主分类):G06F17/30 申请日:20140428
实质审查的生效
2014-09-17
著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20140428
著录事项变更
2014-08-27
公开
公开
技术领域
本发明涉及一种基于混合计算硬件的多级网络报文分类系统 和方法,属于报文分类技术领域。
背景技术
计算机网络设备从网络接口接收到来自外部的网络报文,需要根 据其自身任务对报文进行相关处理,譬如,路由器和交换机接收到报 文后需要往其他网络接口进行转发,NAT网关设备接收到数据报文后 需要对报文进行修改,负载均衡器需要对报文进行重定向。这些设备 在对报文进行操作(转发或修改)前,均必不可少地需要先对数据报 文进行分类,针对不同类别的网络报文执行不同的操作。现有技术通 常采用专用硬件芯片来对报文固定位置的内容进行提取并且与各条 分类规则进行逐一对比,若报文与某条规则匹配,则将数据报文归类 到该规则所指定的分类中。传统利用专用硬件芯片进行报文分类的方 法存在灵活性不足,用户只能根据网络报文目的IP地址、物理地址 等少数给定的规则中进行选取,难以根据用户自定义的报文字段进行 分类。新型网络报文分类方法有尝试采用通用处理器或者图形处理器 实现报文分类,以实现灵活定义的报文分类机制,然而现有方法均局 限于采用单一类型的计算硬件(CPU或GPU),其报文分类处理能力非 常有限,难以满足现有计算机网络海量网络报文分类处理要求。
发明内容
为了解决现有技术中的技术问题,本发明提出了基于混合计 算硬件的多级网络报文分类系统和方法。通过中央处理器对多种 不同计算硬件资源进行集中调度,构建多级分类处理流水线,将 匹配规则按照不同计算硬件的特性进行合理分割并配置到流水线 各级中,对于简单规则可以通过专用硬件芯片完成分类处理,对 应复杂自定义分类规则可以由专用硬件芯片、通用并行处理器和通 用中央处理器协同实现。
具体地,本发明采用如下技术方案:
本发明提供一种基于混合计算硬件的多级网络报文分类系统,其 特征在于:该系统包括网络接口、专用硬件芯片、通用并行处理器、 通用中央处理器和中央处理器;该网络接口用于接收网络报文,中央 处理器控制专用硬件芯片、通用并行处理器和通用中央处理器三个部 分,所述三个部分作为分类处理中的三个分级;中央处理器将各种计 算硬件资源配置成多级分类流水线,并且对分类规则数据库中全部规 则进行逐条分析和拆分;专用硬件芯片用于实现流水线第一级;通用 并行处理器用于实现流水线第二级;通用中央处理器用于实现流水线 第三级。
优选的是,中央处理器识别网络接口,标识不同网络接口的类型 和数目。
优选的是,中央处理器识别计算硬件,标识不同计算硬件的类型、 数目及其相关资源。
优选的是,中央处理器逐条规则的拆分具体为:拆分为若干部分, 第一部分是能被流水线第一级处理的部分,第二部分是能被流水线第 二级处理的部分,如此类推,每一部分均有可能为空。
优选的是,中央处理器为流水线每一级构建并维护一个描述表, 该描述表记录对应流水线级的级数、所支持的字段类型、当前存储的 全部表项的内容、组织方式和存储位置。
本发明还提供一种混合计算硬件的多级网络报文分类方法,其特 征在于:该方法分为单级流水线内容处理和多级流水线分类处理。 所述单级流水线内容处理方法具体为:第一级和第二级流水线根据流 水线设置从报文提取字段,合成待匹配值,将所述待匹配值与当前表 项进行对比,并输出对应对比结果。第三级流水线根据当前表项自定 义字段从报文提取字段,合成待匹配值,将所述待匹配值与当前表项 进行对比,并输出对应对比结果。
所述多级流水线分类处理方法具体为:从网络接口取出数据报文, 加入缓冲队列,并送入流水线处理;在流水线第一级进行查找,如果 命中则根据命中表项跳转至第二级流水线进行查找;如果命中则根据 命中表项跳转至第三级流水线进行查找,在同样命中的情况下输出分 类类别,并进行存储;如果上述任何一级出现不命中的情况,则直接 输出无命中对应的分类类别并进行存储。
在单级流水线内容处理或者多级流水线分类处理之前还包括分 类流水线增加新分类规则的方法,具体为:系统初始化,并增加一条 新分类规则;把新增规则拆分成三部分;在流水线第一级进行查找, 如果命中则根据命中表项跳转至第二级流水线进行查找;如果命中则 根据命中表项跳转至第三级流水线进行查找,在同样命中的情况下判 断为新增加的规则已经存在,不需要增加;如果上述第一级或者第二 级出现不命中的情况,则在不命中的一级新增表项且在下一级新增搜 索域,并跳转至新的搜索域;如果上述第三级出现不命中的情况,则 直接在第三级新增表项。
附图说明
图1是混合计算硬件的多级网络报文分类系统示意图。
图2是分类流水线增加新分类规则流程图。
图3是第一第二级流水线分类处理流程图。
图4是第三级流水线分类处理流程图。
图5是多级流水线分类处理流程图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进行详细描 述。
如图1所示,本发明的系统包括网络接口、专用硬件芯片、通用 并行处理器、通用中央处理器和中央处理器(未示出),该网络接口 用于接收网络报文,中央处理器控制专用硬件芯片、通用并行处理器 和通用中央处理器三个部分,这三个部分作为分类处理中的三个分级。
其中,中央处理器可以识别网络接口,标识不同网络接口的类型 和数目。例如系统有十个千兆以太网接口和四个万兆以太网接口,分 别标识为eth0,eth1,...,eth9和xge0,xge1,xge2,xge3。中央 处理器还可以识别计算硬件,标识不同计算硬件的类型、数目及其相 关资源。例如系统中有两个八核CPU,两块独立显卡和一块专用硬件 分类芯片(例如FPGA、商用交换芯片等),分别标识为CPU0,CPU1,..., CPU14,CPU15,GPU0,GPU1和HW0,其中所有CPU共享16GB主机内 存,每个GPU可使用3GB专用显存,专用硬件分类芯片能够存储4K 条128比特长度的分类规则。
中央处理器将各种计算硬件资源配置成多级分类流水线。流水线 第一级P1由专用硬件芯片实现,在表项长度允许情况下覆盖最常用 的分类规则检查字段,譬如,目地IP地址、源IP地址、目的MAC地 址、源MAC地址等等;流水线第二级P2由通用并行计算硬件(例如 GPU和DSP等)实现,覆盖全部次常用分类检查字段,譬如TTL字段、 ACK/SYN标识位、IP报文长度字段等等;流水线第三级P3由通用处 理器即CPU实现,覆盖用户配置分类规则指定的报文任意位置和任意 长度,以提供充分的分类灵活性。
用户输入配置的分类规则统一存储在规则数据库中,用户增加、 删除、修改分类规则均通过操作数据库内容实现。
中央处理器对分类规则数据库中全部规则进行逐条分析,将每条 规则拆分为若干部分,第一部分是能被流水线第一级P1处理的部分, 第二部分是能被流水线第二级P2处理的部分,如此类推,每一部分均 有可能为空。譬如,一条分类规则需要检查目的IP地址(P1),TCP 目的端口号(P1),IP数据报文总长度(P2)和TCP荷载第的10个字节 (用户自定义,P3)三部分,则该规则分为如下三部分,第一部分是“目 的IP地址,TCP目的端口号”,第二部分是“IP数据报文总长度”, 第三部分是“TCP荷载第的10个字节”。
中央处理器为流水线每一级构建并维护一个描述表,该描述表记 录对应流水线级的级数、所支持的字段类型、当前存储的全部表项的 内容、组织方式和存储位置。该描述表与流水线具体表项的存储方式 和组织结构相互独立,中央处理器依据该描述表来对流水线各级进行 具体表项配置管理,包括表项查询、增加、删除、修改等。
流水线的第一级(P1)的所有表项处于同一个搜索域中,流水线 的第二级(P2)和第三级(P3)可由多个搜索域组成。当一个搜索域中的 一条表项被命中时,中央处理器根据该表项的输出值跳转到下一级流 水线的指定搜索域,继续查找,直至通过全部流水线。
如图2所示,中央处理器将分类规则逐一添加到多级流水线中的 方法具体为:
a)系统初始化阶段,流水线各级存储表项清空,流水线第一级初 始化为一个搜索域,流水线第二级和第三级初始化无搜索域;
b)中央处理器管理流水线从规则数据库中提取一条新增的分类 规则,并按照上述方法拆分成三部分,设置当前流水线级为第 一级;
c)中央处理器管理流水线在流水线当前级对应的描述表的搜索 域中进行查找将新分类规则的相应部分;
d)若流水线当前级描述表没有表项命中,执行e),否则执行h);
e)中央处理器管理流水线将新规则的对应部分的内容加入到流 水线当前级(Pi)描述表尾部,若当前级不是最后一级,在流水 线下一级(Pi+1)的描述表中增加一个空的搜索域,同时将新加 入到Pi描述表的表项的输出值指向Pi+1描述表新增的搜索域;
f)中央处理器管理流水线将e)中Pi描述表和Pi+1描述表的变 化更新到流水线的实际表项中,即流水线当前级(Pi)增加新表 项,若当前级不是最后一级,流水线下一级(Pi+1)增加新搜索 域,Pi新增表项输出指向Pi+1新增搜索域;
g)若当前级不是最后一级,中央处理器管理流水线跳转至流水线 下一级Pi+1描述表的新增搜索域,执行c),否则停止操作;
h)当前级Pi描述表中某表项被命中,若当前级不是最后一级, 则根据该表项的输出值跳转到流水线下一级(Pi+1)的描述表 的指定搜索域,执行c),否则停止操作;
混合计算硬件的多级网络报文分类方法分为以下两种:
第一种方法,如图3所示数据报文在流水线单级内部处理流程: a)第一级和第二级流水线执行b),第三级流水线执行d);
b)流水线根据当前流水线级所覆盖的字段,从报文的相应位置提 取内容,并且合并成待匹配值;
c)流水线将待匹配值与当前搜索域的全部表项逐一对比,若其中 有表项命中,则该级流水线输出命中表项序号,若无表项命中, 则该级流水线输出无命中。该级流水线处理结束;
d)如图4所示第三级流水线按如下方式将报文与所有表项逐一 进行对比:
i.根据表项指定的检查字段,从报文中提取出相应的内容, 并且合并成待匹配值;
ii.将待匹配值与当前表项进行对比,若该表项命中,则该级 流水线输出命中表项序号,该级流水线处理结束;若表项 不命中且当前表项不是当前搜索域最后一条表项,则转至 下一条表项并执行i),若表项不命中且当前表项是当前搜 索域最后一条表项,则输出无命中,该级流水线处理结束;
第二种方法,如图5所示多级流水线分类处理流程:
a)中央处理器收包流水线轮询所有网络接口取出数据报文,并存 放在环形缓冲队列尾部;
b)中央处理器分类处理流水线从环形缓冲队列首部取出数据报 文,并将报文送进流水线进行分类处理:
i.分类处理流水线将报文在流水线第一级(专用硬件芯片) 进行查找,若第一级查找结果显示某表项被命中,则根 据命中表项的输出值跳转至流水线下一级的指定搜索 域,继续执行ii);否则若流水线第一级无表项被命中, 则根据流水线第一级预先配置的无命中情况输出值指 定的分类标号作为该数据报文最终分类类别,并且终止 对该数据报文的流水线处理;
ii.分类处理流水线将报文在流水线第二级(通用并行处理 器)的指定搜索域中进行查找,若第二级查找结果显示 该搜索域中某表项被命中,则根据命中表项的输出值跳 转至流水线下一级的指定搜索域,继续执行iv);
iii.否则若流水线第二级该搜索域中无表项被命中,则根据 流水线第二级该搜索域中预先配置的无命中情况输出 值指定的分类标号作为该数据报文最终分类类别,并且 终止对该数据报文的流水线处理;
iv.分类处理流水线将报文在流水线第三级(通用中央处理 器)的指定搜索域中进行查找,若第三级查找结果显示 该搜索域中某表项被命中,则根据命中表项的输出值指 定的分类标号作为该数据报文最终分类类别,并且终止 对该数据报文的流水线处理;
v.否则若流水线第三级该搜索域中无表项被命中,则根据 流水线第三级该搜索域中预先配置的无命中情况输出 值指定的分类标号作为该数据报文最终分类类别,并且 终止对该数据报文的流水线处理;
c)中央处理器分类处理流水线记录并存储流水线分类处理结果 作为数据报文最终分类类别。
通过本发明的多级分类处理方法,可以对用户自定义的报文字段 进行分类,提高了报文处理灵活性,采用多类型硬件协同处理,提高 了报文分类处理能力,实现了计算机网络海量报文分类处理的要求。
机译: 基于非重叠规则组编码方案的计算机网络报文分类方法和系统
机译: 具有基于硬件的包过滤和分类的计算机系统和网络接口
机译: 两级计算机网络报文分类方法及系统