有效率的多个过滤器包统计生成.pdf

上传人:1****2 文档编号:4060110 上传时间:2018-08-13 格式:PDF 页数:20 大小:734.04KB
返回 下载 相关 举报
摘要
申请专利号:

CN201080057542.2

申请日:

2010.10.19

公开号:

CN102656573A

公开日:

2012.09.05

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 13/14申请公布日:20120905|||公开

IPC分类号:

G06F13/14

主分类号:

G06F13/14

申请人:

弗里塞恩公司

发明人:

J·K·加兰特; K·亨德森

地址:

美国弗吉尼亚州

优先权:

2009.10.27 US 12/606,840

专利代理机构:

中国专利代理(香港)有限公司 72001

代理人:

张涛;卢江

PDF下载: PDF下载
内容摘要

本发明涉及通过以下步骤管理输入数据流:在至少一个网络接口卡(NIC)上接收数据流,并且为每个网络接口卡使用运行若干第一线程的第一进程,和使用每个具有选用组第二线程的至少一组第二多个进程对所述数据流执行操作。所述第一进程和所述一组或多组第二多个进程是独立的并且经由共享内存而通信。所述每个网络接口卡的第一线程不同于所述组的第二线程。

权利要求书

1: 一种用于管理数据流的方法, 其包括 : 在至少一个网络接口卡上接收数据流 ; 使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作, 其 包括 : 将所述数据流的多个部分分布在多个缓冲器当中以由所述多个第一线程处理 ; 用专用第一进程线程处理存储在每个所述多个缓冲器中的数据流的每个部分, 其中所 述专用第一进程线程是所述多个第一线程之一 ; 将所述数据流的每个经过处理的部分存储在多个专用共享内存之一中 ; 使用每个具有至少一组第二线程的至少一组第二多个进程对所述数据流中经过处理 的部分执行操作, 其包括 : 用专用第二进程线程处理存储在每个所述共享内存中的所述数据流的每个经过处理 的部分, 其中所述专用第二进程线程是所述第二线程之一 ; 其中所述第一进程和所述一组或多组第二多个进程是独立的并且经由所述共享内存 而通信 ; 且 其中每个网络接口卡的所述多个第一线程不同于所述至少一组第二线程。
2: 根据权利要求 1 所述的方法, 其中在所述第一进程中执行操作还包括 : 使用单独的多个专用第一进程线程从每个所述多个缓冲器中读取所述数据部分 ; 和 使用所述单独多个专用第一进程线程过滤从每个所述多个缓冲器中读取的所述数据 以生成所述数据流的经过处理的部分。
3: 根据权利要求 1 所述的系统, 其中所述第一进程和所述第二进程是异步的。
4: 根据权利要求 1 所述的系统, 其中由单独且不同的第一进程线程访问每个所述多个 缓冲器。
5: 根据权利要求 1 所述的方法, 其中将所述数据流的每个部分存储在单独一个的所述 多个缓冲器中。
6: 根据权利要求 1 所述的方法, 其中将所述数据流的每个经过处理的部分存储在单独 的共享内存中。
7: 一种用于管理数据流的方法, 其包括 : 在至少一个网络接口卡上接收数据流 ; 使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作, 其 包括 : 将所述数据流的多个部分分布在多个缓冲器当中以由所述多个第一线程来处理 ; 用专用第一进程线程处理存储在每个所述多个缓冲器中的所述数据流的每个部分, 其 中所述专用第一进程线程是所述多个第一线程之一 ; 将每个所述数据流中经过处理的部分存储在多个专用共享内存之一中 ; 使用至少一组第二多个进程对所述数据流中经过处理的部分执行操作, 其包括 : 从每个所述共享内存中读取所述数据流的经过存储处理的部分 ; 对从所述共享内存中读取的所述数据流的经过处理的部分执行统计并且将所述统计 周期性地保存到区间文件 ; 且 其中所述第一进程和所述至少一组第二多个进程是独立的并且经由所述共享内存通 2 信;
8: 根据权利要求 7 所述的方法, 其中在所述第一进程中执行操作还包括 : 使用相同的专用第一进程线程从每个所述多个缓冲器中读取数据 ; 和 使用所述相同的专用第一进程线程过滤从所述多个缓冲器中读取的数据以生成所述 数据流的经过处理的部分。
9: 根据权利要求 7 所述的系统, 其中所述第一进程和所述第二进程是异步的。
10: 根据权利要求 7 所述的系统, 其中仅由所述第一进程使用所述多个缓冲器。
11: 根据权利要求 7 所述的方法, 其中将每个所述数据流的分布部分存储在单独一个 所述多个缓冲器中。
12: 根据权利要求 7 所述的方法, 其中将每个所述数据流的经过处理的部分存储在单 独共享内存中。
13: 一种用于管理数据流的方法, 其包括 : 在至少一个网络接口卡上接收数据流 ; 将所述数据流的多个部分分布在由运行用于每个网络接口卡的多个线程的第一进程 使用的多个缓冲器当中, 其中每个线程处理来自所述多个缓冲器中特定一个的数据 ; 和 用专用于所述缓冲器的特定线程处理存储在每个缓冲器中的所述数据流的多个部分, 其中所述特定线程是所述多个线程之一。 将所述经过处理的数据流存储在指定的共享内存中。
14: 一种用于管理数据流的方法, 其包括 : 在至少一个网络接口卡上接收数据流 ; 将所述数据流的多个部分分布在多个缓冲器当中, 其中由运行多个第一进程线程的第 一进程访问所述多个缓冲器, 且其中每个所述第一进程线程处理来自所述多个缓冲器中特 定一个的数据 ; 和 将所述数据流的一部分存储在指定的共享内存中。
15: 根据权利要求 14 所述的方法, 其还包括由运行多个第二进程线程的第二进程从所 述共享内存中读取数据。
16: 根据权利要求 15 所述的方法, 其中所述多个第二进程线程还执行内存中区间统计 并且将所述统计周期性地保存到区间文件。
17: 根据权利要求 15 所述的系统, 其中所述第一进程和所述第二进程是异步的。
18: 根据权利要求 14 所述的方法, 其还包括 : 使用用于处理来自每个所述多个缓冲器的数据的相同第一进程线程从每个所述多个 缓冲器中读取数据 ; 和 使用所述相同第一进程线程过滤从所述多个缓冲器中读取的数据以生成所述数据流 的经过处理的部分。
19: 根据权利要求 14 所述的方法, 其中将每个所述数据流的分布部分存储在单独一个 所述多个缓冲器中。
20: 根据权利要求 14 所述的方法, 其中将每个所述数据流的分布部分存储在单独共享 内存中。
21: 一种用于管理数据流的方法, 其包括 : 3 在至少一个网络接口卡上接收数据流 ; 使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作, 其 包括 : 将所述数据流解析成多个子数据流 ; 将所述多个子数据流分布在多个缓冲器当中 ; 将每个所述多个子数据流的一部分存储在共享内存中 ; 使用至少一组第二多个进程对所述多个子数据流执行操作, 其包括 : 从所述共享内存中读取存储在所述共享内存中的所述子数据流的多个部分 ; 对从所述共享内存中读取的所述子数据流的多个部分执行统计并且将所述统计周期 性地保存到区间文件 ; 并且 其中所述第一进程和所述第二进程是独立的并且经由所述共享内存通信。
22: 一种用于管理数据流的系统, 其包括 : 至少一个网络接口卡, 其接收数据流 ; 第一处理器, 其耦合到至少一个所述网络接口卡并且将所述数据流分布在多个缓冲 器当中, 所述第一处理器被配置来运行使用用于每个网络接口卡的多个第一线程的第一进 程; 其中所述多个第一进程线程访问存储在所述多个缓冲器中的数据, 处理所述访问的数 据并且将所述经过处理的数据存储在多个共享内存中。
23: 根据权利要求 22 所述的系统, 其中所述多个第一线程为了特定特征而过滤从所述 多个缓冲器中访问的数据, 并且将具有特定特征的数据保存在特定的共享内存中。
24: 根据权利要求 22 所述的系统, 其中所述第一处理器分布由所述网络卡接收的数据 流的拷贝并且将所述拷贝存储在所述多个缓冲器之一中。
25: 根据权利要求 22 所述的系统, 其还包括从所述共享内存中读取数据的至少一组第 二多个进程, 其中所述至少一组第二多个进程每个均使用至少一组第二线程。
26: 根据权利要求 22 所述的系统, 其中所述至少一组第二多个进程分析数据以生成内 存中区间统计并且将所述统计周期性地保存到区间文件。
27: 根据权利要求 22 所述的系统, 其中所述共享内存是队列。

说明书


有效率的多个过滤器包统计生成

    发明背景
     联网时, 计算机通过经由设计用于联网目的的共享信道发送和接收信息而彼此通 信。网络接口卡 (NIC)- 其是安装在计算机上的硬件装置, 是用来实现联网并且用来支持由 计算机用户维持的联网偏好设定。例如, NIC 用于将称为 MAC( 媒体访问控制 ) 的唯一地址 分配到将所述 NIC 安装在其上的计算机。 NIC 还包括集线器或交换器, 所述集线器或交换器 行为表现为使用 MAC 地址在计算机之间传递信息的中继器。NIC 被计算机用于接收输入数 据流。
     由于多数操作系统包括用于读取所有到 NIC 的包的一般实用程序, 所以计算机通 常使用这种一般实用程序来操作所安装的 NIC。应用程序通常通过使用如在操作系统中提 供的一般实用程序, 或通过使用相似实用程序来并入这种实用程序。 在这种背景下, 输入数 据流的典型处理将包括接收包, 检查所述包和维护具有关于所述包的信息的某些主内存数 据结构。图 1 示出这种处理。
     在图 1 中, 具有多个中央处理单元的计算机 110 接收三个满包数据流 120a、 120b 和 120c, 使用三个不同进程 ( 进程 I(140a)、 进程 II(140b) 和进程 III(140c)) 处理所述满 包数据流 120a、 120b 和 120c。三个进程 140a、 进程 140b 和进程 140c 是独立的进程。存在 若干与现有技术架构相关的缺点。首先, 存在起因于运行一个以上全孔网络接口包捕获进 程的低效率。例如, 需要大量的计算机处理资源来处理这类流。如果每个进程是单独的, 那 么需要计算机资源迅速地增大到无法运行多个应用程序的点。 第二个缺点源自将主内存数 据结构转储到磁盘文件的需要。 在转储过程期间, 包可能丢失并且应用程序不对其计数。 当 监视输入数据时, 这些缺点会由于当多个独立进程和应用程序同时在计算机上运行时需要 大量资源来监视数据而造成诸多问题。
     因此, 期望有一种增强数据监视能力并且有效捕获和处理包流, 同时减少丢失的 数据, 硬件 / 软件成本、 操作成本和网络成本的计算机架构。
     发明概述
     本发明的实施方案提供用于通过增强数据监视能力, 同时减少硬件 / 软件成本、 操作成本和网络成本而有效管理数据流的技术。 通过提供一种将每个使用高速包捕获和过 滤的至少两个不同应用程序组合到一个机器中的机构管理数据流。
     在本发明的实施方案中, 一个机器上的软件进程和线程经过架构使得引入经由共 享内存通信的两个单独进程。 第一进程处理与网络对接的所有包并且第二进程处理统计到 磁盘文件的保存。 因此, 虽然第二进程将统计转储到磁盘文件, 但是第一进程仍捕获包并且 将其放在缓冲器中以供稍后检查。第一进程和第二进程是异步的。此外, 对于每个应用程 序, 第一进程可具有独立的缓冲器。共享内存可为消息队列。
     根据本发明的实施方案, 一种用于管理数据流的方法包括在至少一个网络接口卡 上接收数据流和使用运行用于每个网络接口卡的若干第一线程的第一进程对所述数据流 执行操作。使用运行若干第一线程的第一进程执行的操作包括 : 生成所述数据流的多个拷 贝; 将所述数据流的多个拷贝分布在由第一进程使用的多个缓冲器当中 ; 和将每个所述数
     据流的多个拷贝的一部分存储在共享内存中。 所述方法还包括使用每个具有选用组第二线 程的至少一组第二多个程序对所述数据流中经过处理的部分执行附加操作。 所述附加操作 包括从要由第二进程使用的共享内存中读取数据, 所述第二进程可执行内存区间分析以生 成统计, 并且将所述统计周期性地保存到区间文件。所述第一进程和所述一组或多组第二 多个进程是独立的并且经由所述共享内存通信。 所述每个网络接口卡的第一线程可不同于 第二线程组。
     每个所述数据流的多个拷贝可存储在单独一个的所述多个缓冲器中。此外, 可将 所述数据流的多个拷贝的每个部分存储在单独共享内存中。
     根据本发明的另一实施方案, 一种用于管理数据流的系统包括 : 至少一个网络接 口卡, 其接收数据流 ; 和第一处理器, 其耦合到至少一个所述网络接口卡并且将所述数据流 分布在一个或多个缓冲器当中。 所述第一处理器被配置来运行使用用于每个网络接口卡的 一个或多个第一线程的第一进程。 所述一个或多个第一线程访问存储在所述一个或多个缓 冲器中的数据、 处理所述访问的数据并且将所述经过处理的数据存储在一个或多个共享内 存中。 所述一个或多个第一线程可为了特定特征而过滤从所述一个或多个缓冲器中访问的 数据, 并且将具有特定特征的数据保存在特定共享内存中。所述第一处理器可分布由所述 网络卡接收的数据流的拷贝并且将所述拷贝存储在所述缓冲器之一中。 所述系统还包括从 所述共享内存中读取数据的至少一组第二多个进程。 所述至少一组第二多个进程每个均可 使用选用组的第二线程。所述组的第二线程可用于分析数据以生成内存中区间统计, 并且 将所述统计周期性地保存到区间文件。所述共享内存可为队列。所述第一进程和所述一组 或多组第二多个进程是独立的并且经由所述共享内存而通信。
     从后文提供的详述中本公开的适用性的其它领域将变得显而易知。 应当了解希望 详述和特定实施例在指示各种实施方案时仅为了阐释目的, 并且不希望必定限制本公开的 范畴。
     附图简述
     可以参考下文呈现的说明书和图示的剩余部分领悟对本发明的特性和优点的深 入了解。图示被并入本发明的详述部分中。
     图 1 是示出用于接收计算机系统中的包并且为所述包定路径的现有技术架构的 方框图。
     图 2 是示出根据本发明的实施方案的用于使用两个进程接收计算机系统中的包 并且为所述包定路径的架构的方框图。
     图 3 是示出根据本发明的实施方案的用于分类 / 合并 / 聚集数据的架构的方框 图。
     图 4 是示出根据本发明的实施方案的用于管理数据流的方法的流程图。
     图 5 是示出根据本发明的实施方案的来自图 4 的操作 410 的其它详情的流程图。
     图 6 是示出根据本发明的实施方案的来自图 4 的操作 415 的其它详情的流程图。
     图 7 是示出根据本发明的实施方案的管理数据流的方法的流程图。
     图 8 是示出根据本发明的实施方案的管理数据的方法的流程图。 具体实施方案在下文描述中, 为了说明目的, 陈述特定详情以提供对本发明的彻底了解。然而, 将显而易知的是可以在没有这些特定详情的情况下实践本发明。
     本发明的实施方案提供用于通过增强数据监视能力, 同时减少硬件 / 软件成本、 操作成本和网络成本而有效管理数据流的系统和方法。 监视是通过将使用高速包捕获和过 滤的至少两种不同应用程序组合到一个机器中而得到增强。 本发明通过提供一种系统和方 法而减少这些成本, 所述系统和方法有效管理通过网络接口卡到达机器的数据流。本发明 在具有多核心 ( 例如, 八个核心 ) 的机器中特别有用, 因为其通过一个核心实现数据的有效 处理而不会使其它核心变慢或关闭。此外, 本发明增强所有产品的监视能力。
     在本发明的实施方案中, 一个机器上的软件进程和线程经过架构使得引入经由共 享内存 ( 例如消息队列 ) 通信的两个单独进程。第一进程处理与网络对接的所有数据包, 而且第二进程分析数据包且生成统计。使用第一进程处理与网络对接的所有数据包, 消除 维护每个应用程序的多个接口的额外开销。 随着第一进程捕获数据包并且将其保存在缓冲 器中以供稍后检查, 第二进程编译关于数据包的统计并且将这些统计保存到磁盘文件, 而 不使第一进程变慢。第一进程和第二进程经由共享内存 ( 例如队列 ) 通信。此外, 对于每 个应用程序, 第一进程可具有独立的缓冲器。这种架构消除或减少了丢失的包的数目。 本发明的实施方案可以用硬件、 软件或其组合实施。可以将本发明的组件并成独 立系统, 所述独立系统被配置来处理用于使用至少一个网络接口卡 (NIC) 进行处理的信 息。还可以将本发明的组件并入一个或多个系统 ( 其可以是分布式的 ) 中, 使所述系统或 多个系统能够接收和处理从网络中接收用于使用 NIC 进行处理的信息。例如, 可将本发明 的一个实施方案并入网络装置 ( 例如交换器或路由器 ) 中, 从而使所述网络装置能够使用 NIC 接收和处理 IP 地址。
     图 2 是示出用于使用两个进程而接收计算机系统中的包并且为所述包定路径的 架构的方框图。 所述架构包括通过共享内存 215a、 215b 和 215c 而彼此通信的第一进程 205 和第二进程 210。虽然图 3 示出了三个共享内存 215a、 215b 和 215c, 但是共享内存的数目 可为 N, 其中 N 是大于或等于 1 的有限整数。第一进程 205 接收满包数据流 220 并且通过包 分布模块 225 分布数据流 220。 数据流 220 被分布到可为了特定目的, 例如存储不同数据类 型而配置的一个或多个包缓冲器 230a、 230b 和 230c。例如, 图 2 示出指定为 “类型 A 包缓 冲器” 230a、 “类型 B 包缓冲器” 230b 和 “类型 C 包缓冲器” 230c 的三个包缓冲器。包缓冲 器 230a、 230b 和 230c 每个可专用于仅存储识别为类型 A、 类型 B 和类型 C 的数据流 220 的 部分。包分布模块 225 将输入满包数据流解析成类型 A、 类型 B 和类型 C 并且将数据推送 到适当的包缓冲器 230a、 230b 和 230c。在替代实施方案中类型 A 包缓冲器 230a、 类型 B 包 缓冲器 230b 和类型 C 包缓冲器 230c 每个可用于存储相同信息, 在这种情况下, 包分布模块 225 将相同数据推送到每个包缓冲器 230a、 230b 和 230c。
     过滤器 235a、 235b 和 235c 每个用于分别从包缓冲器 230a、 230b 和 230c 中拉取数 据。然后, 拉取的数据被过滤成特定类型的数据以使之通过。例如, 类型 A 过滤器 235a 可 过滤数据使得仅仅拉取类型 A 数据。相似地, 类型 B 过滤器 235b 可过滤数据, 使得仅拉取 类型 B 数据并且类型 C 过滤器 235c 可过滤数据使得仅仅拉取类型 C 数据。一旦数据已被 过滤器 235a、 235b 和 235c 拉取和过滤, 过滤的数据就被推送到共享内存 215a、 215b 和 215c 中。 共享内存可包括单独的共享内存 215a、 215b 和 215c, 其每个用于存储已被过滤器 235a、
     235b 和 235c 过滤的数据。因此, 共享内存 215a 存储已被 “类型 A 过滤器” 235a 推送到其 上的类型 A 数据。相似地, 共享内存 215b 存储已被 “类型 B 过滤器” 235b 推送到其上的类 型 B 数据, 并且共享内存 215c 存储已被 “类型 C 过滤器” 235c 推送到其上的类型 C 数据。
     第二进程 210 从共享内存 215a、 215b 和 215c 中拉取数据, 处理这个数据并且将经 过处理的数据周期性地转储到文件中。第二进程 210 包括 : 第一子处理模块 240a, 其从共 享内存 215a 中拉取数据 ; 第二子处理模块 240b, 其从共享内存 215b 中拉取数据 ; 和第三子 处理模块 240c, 其从共享内存 215c 中拉取数据。子处理模块 240a 包括 : 类型 A 模块 245a, 其用于处理从含有类型 A 数据的共享内存 215a 中拉取的类型 A 数据 ; 和内存中区间统计模 块 250a, 其用于对经过处理的类型 A 数据执行统计分析。子处理模块 240b 包括 : 类型 B 模 块 245b, 其处理从含有类型 B 数据的共享内存 215b 中拉取的类型 B 数据 ; 和内存中区间统 计模块 250b, 其用于对经过处理的类型 B 数据执行统计分析。子处理模块 240c 包括 : 类型 C 模块 245c, 其处理从含有类型 C 数据的共享内存 215c 中拉取的类型 C 数据 ; 和内存中区 间统计模块 250c, 其用于对经过处理的类型 C 数据执行统计分析。如下文参考图 3 另作说 明, 在由子处理模块 240a、 240b 和 240c 处理数据后, 将经过处理的数据周期性地转储到文 件。 在图 2 中示出的架构可用于一个具有多个中央处理单元 (CPU) 的计算机。第一进 程 205 可运行具有用于类型 A、 类型 B 和类型 C 的不同子线程的单个进程 I。第二进程 210 还可以运行具有用于类型 A、 类型 B 和类型 C 的不同子线程的单个进程 II。
     在一个实施方案中, 第一进程 205 对数据流执行操作, 在一个或多个网络接口卡 上使用运行用于每个网络接口卡的至少一个子线程的第一进程接收所述数据流。 接收的数 据的部分分布在包缓冲器 230a、 230b 和 230c 当中以由至少一个或多个子线程来处理。然 后, 用专用第一进程子线程 ( 其是所述至少一个或多个子线程之一 ) 处理存储在包缓冲器 230a、 230b 和 230c 中的数据的部分。然后, 将数据的处理部分存储在共享内存 215a、 215b 和 215c 中。然后, 第二进程 210 使用每个具有选用组第二线程的至少一组第二多个子进程 240a、 240b 和 240c 对数据流中经过处理的部分执行操作。 然后, 第二多个子进程 240a、 240b 和 240c 从各自共享内存 215a、 215b 和 215c 中拉取数据, 并且用专用第二进程线程处理每 个数据中经过处理的部分。 第一进程和一组或多组第二多个子进程是独立的并且经由共享 内存通信。此外, 每个网络接口卡的子线程可不同于选用组的第二线程。
     图 2 还示出机器上的软件进程和线程如何被架构使得引入经由共享内存 ( 例如消 息队列 ) 通信的两个单独进程。第一进程处理与网络对接的所有数据包, 并且第二进程分 析数据包和生成统计。使用第一进程处理与网络对接的所有数据包, 消除维护每个应用程 序的多个接口的巨大额外开销。 随着第一进程捕获数据包并且将其保存在缓冲器中以供稍 后检查, 第二进程编译关于数据包的统计并且将这些统计保存到磁盘文件, 而不使第一进 程变慢。第一进程和第二进程经由共享内存 ( 例如队列 ) 通信。此外, 对于每个应用程序, 第一进程可具有独立的缓冲器。这种架构消除或减少了丢失的包的数目。
     图 3 是示出用于分类 / 合并 / 聚集数据的架构的方框图, 由子处理模块 240a、 240b 和 240c 将所述数据周期性地转储到文件。图 3 示出分别周期性地转储到区间文件 305a、 305b 和 305c 的类型 A 数据、 类型 B 数据和类型 C 数据。然后, 分类 / 合并 / 聚集处理模块 310a 拉取存储在区间文件 305a 中的数据, 处理数据使得所述数据被分类 / 被合并 / 被聚
     集, 并且然后将经过分类 / 合并 / 聚集的数据推送到存储其的分类 / 合并 / 聚集文件 315a。 分类 / 合并 / 聚集处理模块 310a 可执行任何或所有的分类、 合并或聚集功能以及其它功 能。相似地, 分类 / 合并 / 聚集处理模块 310b 和 310c 还分别拉取存储在区间文件 305b 和 305c 中的数据, 处理数据使得所述数据被分类 / 合并 / 聚集, 并且然后将经过分类 / 合并 / 聚集的数据推送到存储其的分类 / 合并 / 聚集的文件 315b 和 315c。分类 / 合并 / 聚集处 理模块 310b 和 310c 还可执行任何或所有的分类、 合并或聚集功能以及其它功能。然后, 文 件传送环 320a 从分类 / 合并 / 聚集的文件 315a 中拉取数据并且将拉取的数据推出以供另 外处理。相似地, 文件传送环 320b 和 320c 还分别从分类 / 合并 / 聚集的文件 315b 和 315c 中拉取数据并且将拉取的数据推出以供另外处理。
     图 4 示出根据本发明的实施方案的管理数据流的方法的流程图。所述方法开始于 其中至少一个网络接口卡接收数据流的操作 405。在 410 中运行每个网络接口卡的多个第 一线程的第一进程处理数据流。下文参考图 5 详细讨论在操作 410 中执行的处理。然后在 步骤 415 中, 使用至少一组第二多个进程再次处理数据流中经过处理的部分, 其中每个进 程具有选用组的第二线程。下文参考图 6 详细讨论在操作 415 中执行的处理。第一进程和 一组或多组第二多个进程是独立的并且经由共享内存通信。此外, 用于每个网络接口卡的 子线程可不同于所述组的第二线程。 图 5 是示出根据本发明的实施方案的来自图 4 且用于管理数据流的操作 410 的另 外详情的流程图。在操作 505 中, 将接收的数据流的多个部分分布在多个缓冲器当中并且 存储在所述缓冲器中以由第一线程来处理。在某些实施方案中, 将数据流的每个部分存储 在多个缓冲器的单独一个中。在其它实施方案中, 将相同数据流的副本存储在每个多个缓 冲器中。然后在操作 510 中, 使用专用第一进程线程读取存储在每个缓冲器中的数据。专 用第一进程线程是选自所述组的第一线程。在操作 515 中, 使用相同的专用第一进程线程 过滤从缓冲器中读取的数据以生成数据流的经处理部分。在操作 520 中, 可使用相同组的 进程线程再次处理经过过滤的数据。然后在操作 525 中, 将每个数据流中经过处理的部分 存储在专用的共享内存之一中。在某些实施方案中, 数据流中每个经过处理的部分存储在 单独的共享内存中。或者, 可使用不同的专用第一进程线程读取、 过滤和处理数据。
     图 6 是示出根据本发明的实施方案的来自图 4 且用于管理数据流的操作 415 的另 外详情的流程图。在操作 605 中, 用专用第二进程线程读取在操作 525 期间存储在专用共 享内存之一中的数据流中经过处理的部分。 所述专用第二进程线程是来自第二过程进程线 程组组的线程之一。然后在操作 610 中, 对读取的数据执行统计分析。可用相同的专用第 二进程线程或用来自第二过程进程线程组组的另一线程执行统计分析。 统计分析还生成统 计数据。在操作 615 中, 将统计数据周期性地保存到区间文件。将统计数据周期性地保存 到文件可由用户配置或可例如每天一次或每小时一次。在另一实施方案中, 当统计数据的 大小达到某个阀值时, 统计数据可周期性地保存到区间文件。
     在参考图 5-6 描述的实施方案中, 每个具有选用组第二线程的第一进程和一组或 多组第二多个进程是独立的并且经由共享内存而彼此通信。 每个网络接口卡的第一线程组 可不同于选用组的第二线程。在某些实施方案中, 第一进程和一组或多组第二多个子进程 是异步的。
     图 7 是示出根据本发明的实施方案的管理数据流的另一方法的流程图。所述方法
     开始于至少一个网络接口卡接收数据流的步骤 705。 在操作 710 中, 生成接收的数据流的多 个拷贝。然后在操作 715 中, 将数据流的多个拷贝分布到多个缓冲器。然后, 读取多个缓冲 器并且使用运行每个网络接口卡的多个第一线程的第一进程处理数据。 使用相同第一线程 过滤从缓冲器中读取的数据以生成数据流的经过处理的部分。如果若干线程正同时运行, 那么来自每个所述多个缓冲器的数据可由每个线程读取, 并且然后由每个线程过滤使得每 个线程仅允许通过特定类型的数据。 这种过滤进程可用于解析数据流使得每个线程仅处理 特定类型的数据。然后在操作 720 中, 将数据流中经过处理的部分存储在专用共享内存之 一中。由于每个线程滤出不同类型的数据, 所以多个共享内存每个可用于存储为原始数据 流的所有部分的特定类型的数据。 用于读取和过滤特定类型的数据的线程可专用于特定类 型的数据。例如, 一个线程可用于读取数据, 过滤类型 A 数据的数据, 并且将类型 A 数据存 储在共享内存中。相似地, 另一线程可用于读取数据, 过滤类型 B 数据的数据, 并且将类型 B 数据存储在共享内存中。这种情况可被一般化使得 N 个线程 ( 其中 N 是大于或等于 1 的 有限整数 ) 可用于读取数据, 过滤 N 种类型的数据的数据, 并且将 N 种类型的数据存储在共 享内存中。
     在操作 725 中, 使用每个具有选用组第二线程的至少一组第二多个子进程读取存 储在共享内存中的数据流的经过处理的部分。 可用不同于第二线程的线程或专用线程读取 每个共享内存。然后在操作 730 中, 对从共享内存中读取的数据流的部分执行统计分析。 可用用于从共享内存中读取数据的相同线程或用来自第二进程线程组的另一线程完成统 计分析。用于读取和 / 或分析存储在特定共享内存中的数据的线程可为专用的第二进程线 程。统计分析还生成统计数据。在操作 735 中, 将统计数据周期性地保存到区间文件。将 统计数据周期性地保存到文件可由用户配置或可例如每天一次或每小时一次。 在另一实施 方案中, 当统计数据的大小达到某个阀值时, 可将统计数据周期性地保存到区间文件。
     在参考图 7 描述的实施方案中, 每个具有选用组第二线程的第一进程和一组或多 组第二多个进程是独立的并且经由共享内存彼此通信。 每个网络接口卡的第一线程组可不 同于选用组的第二线程。在某些实施方案中, 第一进程和一组或多组第二多个进程是异步 的。
     图 8 是示出根据本发明的实施方案的管理数据流的另一方法的流程图。所述方 法开始于至少一个网络接口卡接收数据流的操作 805。在操作 810 中, 运行每个网络接口 卡的至少一个第一线程的第一进程处理接收的数据流, 组织经过处理的数据流, 过滤经过 处理的数据流并且将经过处理的数据流存储在共享内存中。然后在操作 815 中, 使用至少 一组第二多个进程再次处理存储在共享内存中的数据, 其中每个进程具有选用组的第二线 程。 来自所述组的第二线程的至少一个线程是用于从共享内存中读取数据并且生成关于共 享内存的统计。如果存在多个共享内存, 那么可用不同于第二线程的线程或专用线程读取 每个共享内存。在操作 820 中, 将生成的统计周期性地保存到区间文件。将生成的统计周 期性地保存到文件可由用户配置或可例如每天一次或每小时一次。在另一实施方案中, 当 统计数据的大小达到某个阀值时, 可将生成的统计周期性地保存到区间文件。在操作 825 中, 从区间文件中读取数据, 并且将其分类、 合并和聚集。
     在参考图 8 描述的实施方案中, 每个具有选用组第二线程的第一进程和一组或多 组第二多个进程是独立的并且经由共享内存彼此通信。 每个网络接口卡的第一线程组可不同于选用组的第二线程。在某些实施方案中, 第一进程和一组或多组第二多个进程是异步 的。
     根据本发明的实施方案, 一种管理数据流的方法包括在至少一个网络接口卡上接 收数据流, 和使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行 操作。使用运行多个第一线程的第一进程执行的操作包括 : 将所述数据流的部分分布在多 个缓冲器当中以由所述多个第一线程来处理 ; 用专用第一进程线程处理存储在每个所述多 个缓冲器中的数据流的每个部分 ; 和将每个所述数据流的处理部分存储在多个专用共享内 存之一中。所述专用第一进程线程可为所述多个第一线程之一。所述方法还包括使用每个 具有选用组第二线程的至少一组第二多个进程对所述数据流的处理部分执行附加操作, 所 述操作包括用专用第二进程线程处理存储在每个所述共享内存中的所述数据流的每个经 过处理的部分。所述专用第二进程线程可为所述第二线程之一。所述第一进程和所述一组 或多组第二多个进程可独立的并且经由所述共享内存而通信。 所述每个网络接口卡的多个 第一线程可不同于所述组的第二线程。
     根据本发明的另一实施方案, 在所述第一进程中执行操作还包括 : 使用单独多个 专用第一进程线程从每个所述多个缓冲器中读取所述数据部分 ; 和使用所述单独多个专用 第一进程线程过滤从每个所述多个缓冲器中读取的所述数据以生成所述数据流的处理部 分。
     根据本发明的又一实施方案, 所述第一进程和所述第二进程是异步的。 根据本发明的又一实施方案, 由单独并且不同的第一进程线程访问每个所述多个缓冲器。 根据本发明的又一实施方案, 将所述数据流的每个部分存储在单独一个所述多个 缓冲器中。
     根据本发明的又一实施方案, 将每个所述数据流的经过处理的部分存储在单独的 共享内存中。
     根据本发明的另一实施方案, 一种用于管理数据流的方法包括在至少一个网络接 口卡上接收数据流, 和使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数 据流执行操作。所述使用运行多个第一线程的第一进程执行的操作包括 : 将所述数据流的 多个部分分布在多个缓冲器当中以由所述多个第一线程来处理 ; 用专用第一进程线程处理 存储在每个所述多个缓冲器中的数据流的每个部分 ; 和将每个所述数据流中经过处理的部 分存储在多个专用共享内存之一中。所述专用第一进程线程可为所述多个第一线程之一。 所述方法还包括使用每个具有选用组第二线程的至少一组第二多个进程对所述数据流的 经过处理的部分执行操作, 所述操作包括用专用第二进程线程从每个所述共享内存中读取 所述数据流的存储处理部分。所述专用第二进程线程可为所述组的第二线程之一。所述方 法还包括用所述专用第二进程线程对从所述共享内存中读取的数据流的经处理部分执行 统计并且将所述统计周期性地保存到区间文件。 所述第一进程和所述至少一组第二多个进 程可为独立的并且经由所述共享内存而通信。
     根据本发明的又一实施方案, 一种用于管理数据流的方法包括 : 在至少一个网络 接口卡上接收数据流 ; 将所述数据流的多个部分分布在由运行用于每个网络接口卡的多个 线程的第一进程使用的多个缓冲器当中 ; 和用专用于所述缓冲器的特定线程处理存储在每
     个缓冲器中的数据流的部分。每个线程处理来自特定个的多个缓冲器的数据。所述特定线 程可为所述多个线程之一。 所述方法还可包括将经过处理的数据流存储在指定的共享内存 中。
     根据本发明的又一实施方案, 一种用于管理数据流的方法包括在至少一个网络接 口卡上接收数据流, 将所述数据流的多个部分分布在多个缓冲器当中, 其中由运行多个第 一进程线程的第一进程访问所述多个缓冲器, 并且其中每个所述第一进程线程处理来自特 定一个所述多个缓冲器的数据。 所述方法还可包括将所述数据流的一部分存储在指定的共 享内存中。 所述方法还可包括由运行第二多个进程线程的第二进程从所述共享内存中读取 数据。 所述第二多个进程线程还可执行内存中区间统计并且将所述统计周期性地保存到区 间文件。所述第一进程和所述第二进程可为异步的。所述方法还可包括 : 使用用于处理来 自每个所述多个缓冲器的数据的相同第一进程线程从每个所述多个缓冲器中读取数据 ; 和 使用所述相同第一进程线程过滤从所述多个缓冲器中读取的数据以生成所述数据流的经 过处理的部分。可将每个所述数据流的分布部分存储在单独一个的所述多个缓冲器中。所 述数据流的分布部分还可存储在单独共享内存中。
     根据本发明的又一实施方案, 一种用于管理数据流的方法包括在至少一个网络接 口卡上接收数据流, 和使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数 据流执行操作。所述使用运行多个第一线程的第一进程执行的操作包括 : 将所述数据流解 析成多个子数据流 ; 将所述多个子数据流分布在多个缓冲器当中 ; 将每个所述多个子数据 流的一部分存储在共享内存中。 所述方法还包括使用每个具有选用组第二线程的至少一组 第二多个进程对所述多个子数据流执行附加操作。 所述附加操作包括从所述共享内存中读 取存储在所述共享内存中的所述子数据流的部分 ; 和对从所述共享内存中读取的所述子数 据流的部分执行统计 ; 并且将所述统计周期性地保存到区间文件。所述第一进程和所述第 二进程可独立的并且经由所述共享内存而通信。
     根据本发明的又一实施方案, 一种用于管理数据流的系统包括 : 至少一个网络接 口卡, 其接收数据流 ; 第一处理器, 其耦合到至少一个所述网络接口卡并且将所述数据流分 布在多个缓冲器当中。 所述第一处理器被配置来运行使用用于每个网络接口卡的多个第一 线程的第一进程。所述多个第一进程线程访问存储在所述多个缓冲器中的数据, 处理所述 访问的数据并且将所述处理的数据存储在多个共享内存中。 所述多个第一线程可为了特定 特征而过滤从所述多个缓冲器中访问的数据, 并且将具有特定特征的数据保存在特定共享 内存中。所述第一进程可分布由所述网络卡接收的数据流的拷贝, 并且将所述拷贝存储在 所述多个缓冲器之一中。 所述系统还可包括从所述共享内存中读取数据的至少一组第二多 个进程。 所述至少一组第二多个进程每个均可使用来自选用组的第二线程的一个或第二多 个线程。 所述组的第二线程可用于分析数据以生成内存中区间统计并且将所述统计周期性 地保存到区间文件。所述共享内存可为队列。
     虽然已经描述本发明的特定实施方案, 但是各种修改、 变更、 替代结构和等效物也 涵盖在本发明的范畴内。所述发明不限于某些特定数据处理环境内的操作, 而是在多个数 据处理环境内自由操作。 此外, 虽然已使用特定系列的事务和步骤描述本发明, 但是所属领 域技术人员应当明白本发明不限于所述系列的事务和步骤。
     此外, 虽然已经使用硬件和软件的特定组合描述本发明, 但是应明白硬件和软件的其它组合也在本发明的范畴内。本发明仅可以用硬件, 或仅以软件或使用其组合予以实 施。
     因此, 在阐释性而非限制性意义上看待本说明书和图示。 然而, 显然可在不背离如 在权利要求中陈述的本发明的更广精神和范畴的情况下作出添加、 删减、 删除以及其它修 改和变化。

有效率的多个过滤器包统计生成.pdf_第1页
第1页 / 共20页
有效率的多个过滤器包统计生成.pdf_第2页
第2页 / 共20页
有效率的多个过滤器包统计生成.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《有效率的多个过滤器包统计生成.pdf》由会员分享,可在线阅读,更多相关《有效率的多个过滤器包统计生成.pdf(20页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102656573 A(43)申请公布日 2012.09.05CN102656573A*CN102656573A*(21)申请号 201080057542.2(22)申请日 2010.10.1912/606,840 2009.10.27 USG06F 13/14(2006.01)(71)申请人弗里塞恩公司地址美国弗吉尼亚州(72)发明人 JK加兰特 K亨德森(74)专利代理机构中国专利代理(香港)有限公司 72001代理人张涛 卢江(54) 发明名称有效率的多个过滤器包统计生成(57) 摘要本发明涉及通过以下步骤管理输入数据流:在至少一个网络接口卡(NIC)上接收数据。

2、流,并且为每个网络接口卡使用运行若干第一线程的第一进程,和使用每个具有选用组第二线程的至少一组第二多个进程对所述数据流执行操作。所述第一进程和所述一组或多组第二多个进程是独立的并且经由共享内存而通信。所述每个网络接口卡的第一线程不同于所述组的第二线程。(30)优先权数据(85)PCT申请进入国家阶段日2012.06.15(86)PCT申请的申请数据PCT/US2010/053230 2010.10.19(87)PCT申请的公布数据WO2011/053489 EN 2011.05.05(51)Int.Cl.权利要求书3页 说明书9页 附图7页(19)中华人民共和国国家知识产权局(12)发明专利申。

3、请权利要求书 3 页 说明书 9 页 附图 7 页1/3页21.一种用于管理数据流的方法,其包括:在至少一个网络接口卡上接收数据流;使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作,其包括:将所述数据流的多个部分分布在多个缓冲器当中以由所述多个第一线程处理;用专用第一进程线程处理存储在每个所述多个缓冲器中的数据流的每个部分,其中所述专用第一进程线程是所述多个第一线程之一;将所述数据流的每个经过处理的部分存储在多个专用共享内存之一中;使用每个具有至少一组第二线程的至少一组第二多个进程对所述数据流中经过处理的部分执行操作,其包括:用专用第二进程线程处理存储在每个所述共享内存中。

4、的所述数据流的每个经过处理的部分,其中所述专用第二进程线程是所述第二线程之一;其中所述第一进程和所述一组或多组第二多个进程是独立的并且经由所述共享内存而通信;且其中每个网络接口卡的所述多个第一线程不同于所述至少一组第二线程。2.根据权利要求1所述的方法,其中在所述第一进程中执行操作还包括:使用单独的多个专用第一进程线程从每个所述多个缓冲器中读取所述数据部分;和使用所述单独多个专用第一进程线程过滤从每个所述多个缓冲器中读取的所述数据以生成所述数据流的经过处理的部分。3.根据权利要求1所述的系统,其中所述第一进程和所述第二进程是异步的。4.根据权利要求1所述的系统,其中由单独且不同的第一进程线程访。

5、问每个所述多个缓冲器。5.根据权利要求1所述的方法,其中将所述数据流的每个部分存储在单独一个的所述多个缓冲器中。6.根据权利要求1所述的方法,其中将所述数据流的每个经过处理的部分存储在单独的共享内存中。7.一种用于管理数据流的方法,其包括:在至少一个网络接口卡上接收数据流;使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作,其包括:将所述数据流的多个部分分布在多个缓冲器当中以由所述多个第一线程来处理;用专用第一进程线程处理存储在每个所述多个缓冲器中的所述数据流的每个部分,其中所述专用第一进程线程是所述多个第一线程之一;将每个所述数据流中经过处理的部分存储在多个专用共享内存之。

6、一中;使用至少一组第二多个进程对所述数据流中经过处理的部分执行操作,其包括:从每个所述共享内存中读取所述数据流的经过存储处理的部分;对从所述共享内存中读取的所述数据流的经过处理的部分执行统计并且将所述统计周期性地保存到区间文件;且其中所述第一进程和所述至少一组第二多个进程是独立的并且经由所述共享内存通权 利 要 求 书CN 102656573 A2/3页3信;8.根据权利要求7所述的方法,其中在所述第一进程中执行操作还包括:使用相同的专用第一进程线程从每个所述多个缓冲器中读取数据;和使用所述相同的专用第一进程线程过滤从所述多个缓冲器中读取的数据以生成所述数据流的经过处理的部分。9.根据权利要求。

7、7所述的系统,其中所述第一进程和所述第二进程是异步的。10.根据权利要求7所述的系统,其中仅由所述第一进程使用所述多个缓冲器。11.根据权利要求7所述的方法,其中将每个所述数据流的分布部分存储在单独一个所述多个缓冲器中。12.根据权利要求7所述的方法,其中将每个所述数据流的经过处理的部分存储在单独共享内存中。13.一种用于管理数据流的方法,其包括:在至少一个网络接口卡上接收数据流;将所述数据流的多个部分分布在由运行用于每个网络接口卡的多个线程的第一进程使用的多个缓冲器当中,其中每个线程处理来自所述多个缓冲器中特定一个的数据;和用专用于所述缓冲器的特定线程处理存储在每个缓冲器中的所述数据流的多个。

8、部分,其中所述特定线程是所述多个线程之一。将所述经过处理的数据流存储在指定的共享内存中。14.一种用于管理数据流的方法,其包括:在至少一个网络接口卡上接收数据流;将所述数据流的多个部分分布在多个缓冲器当中,其中由运行多个第一进程线程的第一进程访问所述多个缓冲器,且其中每个所述第一进程线程处理来自所述多个缓冲器中特定一个的数据;和将所述数据流的一部分存储在指定的共享内存中。15.根据权利要求14所述的方法,其还包括由运行多个第二进程线程的第二进程从所述共享内存中读取数据。16.根据权利要求15所述的方法,其中所述多个第二进程线程还执行内存中区间统计并且将所述统计周期性地保存到区间文件。17.根据。

9、权利要求15所述的系统,其中所述第一进程和所述第二进程是异步的。18.根据权利要求14所述的方法,其还包括:使用用于处理来自每个所述多个缓冲器的数据的相同第一进程线程从每个所述多个缓冲器中读取数据;和使用所述相同第一进程线程过滤从所述多个缓冲器中读取的数据以生成所述数据流的经过处理的部分。19.根据权利要求14所述的方法,其中将每个所述数据流的分布部分存储在单独一个所述多个缓冲器中。20.根据权利要求14所述的方法,其中将每个所述数据流的分布部分存储在单独共享内存中。21.一种用于管理数据流的方法,其包括:权 利 要 求 书CN 102656573 A3/3页4在至少一个网络接口卡上接收数据流。

10、;使用运行用于每个网络接口卡的多个第一线程的第一进程对所述数据流执行操作,其包括:将所述数据流解析成多个子数据流;将所述多个子数据流分布在多个缓冲器当中;将每个所述多个子数据流的一部分存储在共享内存中;使用至少一组第二多个进程对所述多个子数据流执行操作,其包括:从所述共享内存中读取存储在所述共享内存中的所述子数据流的多个部分;对从所述共享内存中读取的所述子数据流的多个部分执行统计并且将所述统计周期性地保存到区间文件;并且其中所述第一进程和所述第二进程是独立的并且经由所述共享内存通信。22.一种用于管理数据流的系统,其包括:至少一个网络接口卡,其接收数据流;第一处理器,其耦合到至少一个所述网络接。

11、口卡并且将所述数据流分布在多个缓冲器当中,所述第一处理器被配置来运行使用用于每个网络接口卡的多个第一线程的第一进程;其中所述多个第一进程线程访问存储在所述多个缓冲器中的数据,处理所述访问的数据并且将所述经过处理的数据存储在多个共享内存中。23.根据权利要求22所述的系统,其中所述多个第一线程为了特定特征而过滤从所述多个缓冲器中访问的数据,并且将具有特定特征的数据保存在特定的共享内存中。24.根据权利要求22所述的系统,其中所述第一处理器分布由所述网络卡接收的数据流的拷贝并且将所述拷贝存储在所述多个缓冲器之一中。25.根据权利要求22所述的系统,其还包括从所述共享内存中读取数据的至少一组第二多个。

12、进程,其中所述至少一组第二多个进程每个均使用至少一组第二线程。26.根据权利要求22所述的系统,其中所述至少一组第二多个进程分析数据以生成内存中区间统计并且将所述统计周期性地保存到区间文件。27.根据权利要求22所述的系统,其中所述共享内存是队列。权 利 要 求 书CN 102656573 A1/9页5有效率的多个过滤器包统计生成0001 发明背景0002 联网时,计算机通过经由设计用于联网目的的共享信道发送和接收信息而彼此通信。网络接口卡(NIC)-其是安装在计算机上的硬件装置,是用来实现联网并且用来支持由计算机用户维持的联网偏好设定。例如,NIC用于将称为MAC(媒体访问控制)的唯一地址分。

13、配到将所述NIC安装在其上的计算机。NIC还包括集线器或交换器,所述集线器或交换器行为表现为使用MAC地址在计算机之间传递信息的中继器。NIC被计算机用于接收输入数据流。0003 由于多数操作系统包括用于读取所有到NIC的包的一般实用程序,所以计算机通常使用这种一般实用程序来操作所安装的NIC。应用程序通常通过使用如在操作系统中提供的一般实用程序,或通过使用相似实用程序来并入这种实用程序。在这种背景下,输入数据流的典型处理将包括接收包,检查所述包和维护具有关于所述包的信息的某些主内存数据结构。图1示出这种处理。0004 在图1中,具有多个中央处理单元的计算机110接收三个满包数据流120a、1。

14、20b和120c,使用三个不同进程(进程I(140a)、进程II(140b)和进程III(140c)处理所述满包数据流120a、120b和120c。三个进程140a、进程140b和进程140c是独立的进程。存在若干与现有技术架构相关的缺点。首先,存在起因于运行一个以上全孔网络接口包捕获进程的低效率。例如,需要大量的计算机处理资源来处理这类流。如果每个进程是单独的,那么需要计算机资源迅速地增大到无法运行多个应用程序的点。第二个缺点源自将主内存数据结构转储到磁盘文件的需要。在转储过程期间,包可能丢失并且应用程序不对其计数。当监视输入数据时,这些缺点会由于当多个独立进程和应用程序同时在计算机上运行时。

15、需要大量资源来监视数据而造成诸多问题。0005 因此,期望有一种增强数据监视能力并且有效捕获和处理包流,同时减少丢失的数据,硬件/软件成本、操作成本和网络成本的计算机架构。0006 发明概述0007 本发明的实施方案提供用于通过增强数据监视能力,同时减少硬件/软件成本、操作成本和网络成本而有效管理数据流的技术。通过提供一种将每个使用高速包捕获和过滤的至少两个不同应用程序组合到一个机器中的机构管理数据流。0008 在本发明的实施方案中,一个机器上的软件进程和线程经过架构使得引入经由共享内存通信的两个单独进程。第一进程处理与网络对接的所有包并且第二进程处理统计到磁盘文件的保存。因此,虽然第二进程将。

16、统计转储到磁盘文件,但是第一进程仍捕获包并且将其放在缓冲器中以供稍后检查。第一进程和第二进程是异步的。此外,对于每个应用程序,第一进程可具有独立的缓冲器。共享内存可为消息队列。0009 根据本发明的实施方案,一种用于管理数据流的方法包括在至少一个网络接口卡上接收数据流和使用运行用于每个网络接口卡的若干第一线程的第一进程对所述数据流执行操作。使用运行若干第一线程的第一进程执行的操作包括:生成所述数据流的多个拷贝;将所述数据流的多个拷贝分布在由第一进程使用的多个缓冲器当中;和将每个所述数说 明 书CN 102656573 A2/9页6据流的多个拷贝的一部分存储在共享内存中。所述方法还包括使用每个具。

17、有选用组第二线程的至少一组第二多个程序对所述数据流中经过处理的部分执行附加操作。所述附加操作包括从要由第二进程使用的共享内存中读取数据,所述第二进程可执行内存区间分析以生成统计,并且将所述统计周期性地保存到区间文件。所述第一进程和所述一组或多组第二多个进程是独立的并且经由所述共享内存通信。所述每个网络接口卡的第一线程可不同于第二线程组。0010 每个所述数据流的多个拷贝可存储在单独一个的所述多个缓冲器中。此外,可将所述数据流的多个拷贝的每个部分存储在单独共享内存中。0011 根据本发明的另一实施方案,一种用于管理数据流的系统包括:至少一个网络接口卡,其接收数据流;和第一处理器,其耦合到至少一个。

18、所述网络接口卡并且将所述数据流分布在一个或多个缓冲器当中。所述第一处理器被配置来运行使用用于每个网络接口卡的一个或多个第一线程的第一进程。所述一个或多个第一线程访问存储在所述一个或多个缓冲器中的数据、处理所述访问的数据并且将所述经过处理的数据存储在一个或多个共享内存中。所述一个或多个第一线程可为了特定特征而过滤从所述一个或多个缓冲器中访问的数据,并且将具有特定特征的数据保存在特定共享内存中。所述第一处理器可分布由所述网络卡接收的数据流的拷贝并且将所述拷贝存储在所述缓冲器之一中。所述系统还包括从所述共享内存中读取数据的至少一组第二多个进程。所述至少一组第二多个进程每个均可使用选用组的第二线程。所。

19、述组的第二线程可用于分析数据以生成内存中区间统计,并且将所述统计周期性地保存到区间文件。所述共享内存可为队列。所述第一进程和所述一组或多组第二多个进程是独立的并且经由所述共享内存而通信。0012 从后文提供的详述中本公开的适用性的其它领域将变得显而易知。应当了解希望详述和特定实施例在指示各种实施方案时仅为了阐释目的,并且不希望必定限制本公开的范畴。0013 附图简述0014 可以参考下文呈现的说明书和图示的剩余部分领悟对本发明的特性和优点的深入了解。图示被并入本发明的详述部分中。0015 图1是示出用于接收计算机系统中的包并且为所述包定路径的现有技术架构的方框图。0016 图2是示出根据本发明。

20、的实施方案的用于使用两个进程接收计算机系统中的包并且为所述包定路径的架构的方框图。0017 图3是示出根据本发明的实施方案的用于分类/合并/聚集数据的架构的方框图。0018 图4是示出根据本发明的实施方案的用于管理数据流的方法的流程图。0019 图5是示出根据本发明的实施方案的来自图4的操作410的其它详情的流程图。0020 图6是示出根据本发明的实施方案的来自图4的操作415的其它详情的流程图。0021 图7是示出根据本发明的实施方案的管理数据流的方法的流程图。0022 图8是示出根据本发明的实施方案的管理数据的方法的流程图。具体实施方案说 明 书CN 102656573 A3/9页7002。

21、3 在下文描述中,为了说明目的,陈述特定详情以提供对本发明的彻底了解。然而,将显而易知的是可以在没有这些特定详情的情况下实践本发明。0024 本发明的实施方案提供用于通过增强数据监视能力,同时减少硬件/软件成本、操作成本和网络成本而有效管理数据流的系统和方法。监视是通过将使用高速包捕获和过滤的至少两种不同应用程序组合到一个机器中而得到增强。本发明通过提供一种系统和方法而减少这些成本,所述系统和方法有效管理通过网络接口卡到达机器的数据流。本发明在具有多核心(例如,八个核心)的机器中特别有用,因为其通过一个核心实现数据的有效处理而不会使其它核心变慢或关闭。此外,本发明增强所有产品的监视能力。002。

22、5 在本发明的实施方案中,一个机器上的软件进程和线程经过架构使得引入经由共享内存(例如消息队列)通信的两个单独进程。第一进程处理与网络对接的所有数据包,而且第二进程分析数据包且生成统计。使用第一进程处理与网络对接的所有数据包,消除维护每个应用程序的多个接口的额外开销。随着第一进程捕获数据包并且将其保存在缓冲器中以供稍后检查,第二进程编译关于数据包的统计并且将这些统计保存到磁盘文件,而不使第一进程变慢。第一进程和第二进程经由共享内存(例如队列)通信。此外,对于每个应用程序,第一进程可具有独立的缓冲器。这种架构消除或减少了丢失的包的数目。0026 本发明的实施方案可以用硬件、软件或其组合实施。可以。

23、将本发明的组件并成独立系统,所述独立系统被配置来处理用于使用至少一个网络接口卡(NIC)进行处理的信息。还可以将本发明的组件并入一个或多个系统(其可以是分布式的)中,使所述系统或多个系统能够接收和处理从网络中接收用于使用NIC进行处理的信息。例如,可将本发明的一个实施方案并入网络装置(例如交换器或路由器)中,从而使所述网络装置能够使用NIC接收和处理IP地址。0027 图2是示出用于使用两个进程而接收计算机系统中的包并且为所述包定路径的架构的方框图。所述架构包括通过共享内存215a、215b和215c而彼此通信的第一进程205和第二进程210。虽然图3示出了三个共享内存215a、215b和21。

24、5c,但是共享内存的数目可为N,其中N是大于或等于1的有限整数。第一进程205接收满包数据流220并且通过包分布模块225分布数据流220。数据流220被分布到可为了特定目的,例如存储不同数据类型而配置的一个或多个包缓冲器230a、230b和230c。例如,图2示出指定为“类型A包缓冲器” 230a、“类型B包缓冲器” 230b和“类型C包缓冲器” 230c的三个包缓冲器。包缓冲器230a、230b和230c每个可专用于仅存储识别为类型A、类型B和类型C的数据流220的部分。包分布模块225将输入满包数据流解析成类型A、类型B和类型C并且将数据推送到适当的包缓冲器230a、230b和230c。。

25、在替代实施方案中类型A包缓冲器230a、类型B包缓冲器230b和类型C包缓冲器230c每个可用于存储相同信息,在这种情况下,包分布模块225将相同数据推送到每个包缓冲器230a、230b和230c。0028 过滤器235a、235b和235c每个用于分别从包缓冲器230a、230b和230c中拉取数据。然后,拉取的数据被过滤成特定类型的数据以使之通过。例如,类型A过滤器235a可过滤数据使得仅仅拉取类型A数据。相似地,类型B过滤器235b可过滤数据,使得仅拉取类型B数据并且类型C过滤器235c可过滤数据使得仅仅拉取类型C数据。一旦数据已被过滤器235a、235b和235c拉取和过滤,过滤的数据。

26、就被推送到共享内存215a、215b和215c中。共享内存可包括单独的共享内存215a、215b和215c,其每个用于存储已被过滤器235a、说 明 书CN 102656573 A4/9页8235b和235c过滤的数据。因此,共享内存215a存储已被“类型A过滤器” 235a推送到其上的类型A数据。相似地,共享内存215b存储已被“类型B过滤器”235b推送到其上的类型B数据,并且共享内存215c存储已被“类型C过滤器”235c推送到其上的类型C数据。0029 第二进程210从共享内存215a、215b和215c中拉取数据,处理这个数据并且将经过处理的数据周期性地转储到文件中。第二进程210包。

27、括:第一子处理模块240a,其从共享内存215a中拉取数据;第二子处理模块240b,其从共享内存215b中拉取数据;和第三子处理模块240c,其从共享内存215c中拉取数据。子处理模块240a包括:类型A模块245a,其用于处理从含有类型A数据的共享内存215a中拉取的类型A数据;和内存中区间统计模块250a,其用于对经过处理的类型A数据执行统计分析。子处理模块240b包括:类型B模块245b,其处理从含有类型B数据的共享内存215b中拉取的类型B数据;和内存中区间统计模块250b,其用于对经过处理的类型B数据执行统计分析。子处理模块240c包括:类型C模块245c,其处理从含有类型C数据的共。

28、享内存215c中拉取的类型C数据;和内存中区间统计模块250c,其用于对经过处理的类型C数据执行统计分析。如下文参考图3另作说明,在由子处理模块240a、240b和240c处理数据后,将经过处理的数据周期性地转储到文件。0030 在图2中示出的架构可用于一个具有多个中央处理单元(CPU)的计算机。第一进程205可运行具有用于类型A、类型B和类型C的不同子线程的单个进程I。第二进程210还可以运行具有用于类型A、类型B和类型C的不同子线程的单个进程II。0031 在一个实施方案中,第一进程205对数据流执行操作,在一个或多个网络接口卡上使用运行用于每个网络接口卡的至少一个子线程的第一进程接收所述。

29、数据流。接收的数据的部分分布在包缓冲器230a、230b和230c当中以由至少一个或多个子线程来处理。然后,用专用第一进程子线程(其是所述至少一个或多个子线程之一)处理存储在包缓冲器230a、230b和230c中的数据的部分。然后,将数据的处理部分存储在共享内存215a、215b和215c中。然后,第二进程210使用每个具有选用组第二线程的至少一组第二多个子进程240a、240b和240c对数据流中经过处理的部分执行操作。然后,第二多个子进程240a、240b和240c从各自共享内存215a、215b和215c中拉取数据,并且用专用第二进程线程处理每个数据中经过处理的部分。第一进程和一组或多组。

30、第二多个子进程是独立的并且经由共享内存通信。此外,每个网络接口卡的子线程可不同于选用组的第二线程。0032 图2还示出机器上的软件进程和线程如何被架构使得引入经由共享内存(例如消息队列)通信的两个单独进程。第一进程处理与网络对接的所有数据包,并且第二进程分析数据包和生成统计。使用第一进程处理与网络对接的所有数据包,消除维护每个应用程序的多个接口的巨大额外开销。随着第一进程捕获数据包并且将其保存在缓冲器中以供稍后检查,第二进程编译关于数据包的统计并且将这些统计保存到磁盘文件,而不使第一进程变慢。第一进程和第二进程经由共享内存(例如队列)通信。此外,对于每个应用程序,第一进程可具有独立的缓冲器。这。

31、种架构消除或减少了丢失的包的数目。0033 图3是示出用于分类/合并/聚集数据的架构的方框图,由子处理模块240a、240b和240c将所述数据周期性地转储到文件。图3示出分别周期性地转储到区间文件305a、305b和305c的类型A数据、类型B数据和类型C数据。然后,分类/合并/聚集处理模块310a拉取存储在区间文件305a中的数据,处理数据使得所述数据被分类/被合并/被聚说 明 书CN 102656573 A5/9页9集,并且然后将经过分类/合并/聚集的数据推送到存储其的分类/合并/聚集文件315a。分类/合并/聚集处理模块310a可执行任何或所有的分类、合并或聚集功能以及其它功能。相似地。

32、,分类/合并/聚集处理模块310b和310c还分别拉取存储在区间文件305b和305c中的数据,处理数据使得所述数据被分类/合并/聚集,并且然后将经过分类/合并/聚集的数据推送到存储其的分类/合并/聚集的文件315b和315c。分类/合并/聚集处理模块310b和310c还可执行任何或所有的分类、合并或聚集功能以及其它功能。然后,文件传送环320a从分类/合并/聚集的文件315a中拉取数据并且将拉取的数据推出以供另外处理。相似地,文件传送环320b和320c还分别从分类/合并/聚集的文件315b和315c中拉取数据并且将拉取的数据推出以供另外处理。0034 图4示出根据本发明的实施方案的管理数据。

33、流的方法的流程图。所述方法开始于其中至少一个网络接口卡接收数据流的操作405。在410中运行每个网络接口卡的多个第一线程的第一进程处理数据流。下文参考图5详细讨论在操作410中执行的处理。然后在步骤415中,使用至少一组第二多个进程再次处理数据流中经过处理的部分,其中每个进程具有选用组的第二线程。下文参考图6详细讨论在操作415中执行的处理。第一进程和一组或多组第二多个进程是独立的并且经由共享内存通信。此外,用于每个网络接口卡的子线程可不同于所述组的第二线程。0035 图5是示出根据本发明的实施方案的来自图4且用于管理数据流的操作410的另外详情的流程图。在操作505中,将接收的数据流的多个部。

34、分分布在多个缓冲器当中并且存储在所述缓冲器中以由第一线程来处理。在某些实施方案中,将数据流的每个部分存储在多个缓冲器的单独一个中。在其它实施方案中,将相同数据流的副本存储在每个多个缓冲器中。然后在操作510中,使用专用第一进程线程读取存储在每个缓冲器中的数据。专用第一进程线程是选自所述组的第一线程。在操作515中,使用相同的专用第一进程线程过滤从缓冲器中读取的数据以生成数据流的经处理部分。在操作520中,可使用相同组的进程线程再次处理经过过滤的数据。然后在操作525中,将每个数据流中经过处理的部分存储在专用的共享内存之一中。在某些实施方案中,数据流中每个经过处理的部分存储在单独的共享内存中。或。

35、者,可使用不同的专用第一进程线程读取、过滤和处理数据。0036 图6是示出根据本发明的实施方案的来自图4且用于管理数据流的操作415的另外详情的流程图。在操作605中,用专用第二进程线程读取在操作525期间存储在专用共享内存之一中的数据流中经过处理的部分。所述专用第二进程线程是来自第二过程进程线程组组的线程之一。然后在操作610中,对读取的数据执行统计分析。可用相同的专用第二进程线程或用来自第二过程进程线程组组的另一线程执行统计分析。统计分析还生成统计数据。在操作615中,将统计数据周期性地保存到区间文件。将统计数据周期性地保存到文件可由用户配置或可例如每天一次或每小时一次。在另一实施方案中,。

36、当统计数据的大小达到某个阀值时,统计数据可周期性地保存到区间文件。0037 在参考图5-6描述的实施方案中,每个具有选用组第二线程的第一进程和一组或多组第二多个进程是独立的并且经由共享内存而彼此通信。每个网络接口卡的第一线程组可不同于选用组的第二线程。在某些实施方案中,第一进程和一组或多组第二多个子进程是异步的。0038 图7是示出根据本发明的实施方案的管理数据流的另一方法的流程图。所述方法说 明 书CN 102656573 A6/9页10开始于至少一个网络接口卡接收数据流的步骤705。在操作710中,生成接收的数据流的多个拷贝。然后在操作715中,将数据流的多个拷贝分布到多个缓冲器。然后,读。

37、取多个缓冲器并且使用运行每个网络接口卡的多个第一线程的第一进程处理数据。使用相同第一线程过滤从缓冲器中读取的数据以生成数据流的经过处理的部分。如果若干线程正同时运行,那么来自每个所述多个缓冲器的数据可由每个线程读取,并且然后由每个线程过滤使得每个线程仅允许通过特定类型的数据。这种过滤进程可用于解析数据流使得每个线程仅处理特定类型的数据。然后在操作720中,将数据流中经过处理的部分存储在专用共享内存之一中。由于每个线程滤出不同类型的数据,所以多个共享内存每个可用于存储为原始数据流的所有部分的特定类型的数据。用于读取和过滤特定类型的数据的线程可专用于特定类型的数据。例如,一个线程可用于读取数据,过。

38、滤类型A数据的数据,并且将类型A数据存储在共享内存中。相似地,另一线程可用于读取数据,过滤类型B数据的数据,并且将类型B数据存储在共享内存中。这种情况可被一般化使得N个线程(其中N是大于或等于1的有限整数)可用于读取数据,过滤N种类型的数据的数据,并且将N种类型的数据存储在共享内存中。0039 在操作725中,使用每个具有选用组第二线程的至少一组第二多个子进程读取存储在共享内存中的数据流的经过处理的部分。可用不同于第二线程的线程或专用线程读取每个共享内存。然后在操作730中,对从共享内存中读取的数据流的部分执行统计分析。可用用于从共享内存中读取数据的相同线程或用来自第二进程线程组的另一线程完成。

39、统计分析。用于读取和/或分析存储在特定共享内存中的数据的线程可为专用的第二进程线程。统计分析还生成统计数据。在操作735中,将统计数据周期性地保存到区间文件。将统计数据周期性地保存到文件可由用户配置或可例如每天一次或每小时一次。在另一实施方案中,当统计数据的大小达到某个阀值时,可将统计数据周期性地保存到区间文件。0040 在参考图7描述的实施方案中,每个具有选用组第二线程的第一进程和一组或多组第二多个进程是独立的并且经由共享内存彼此通信。每个网络接口卡的第一线程组可不同于选用组的第二线程。在某些实施方案中,第一进程和一组或多组第二多个进程是异步的。0041 图8是示出根据本发明的实施方案的管理。

40、数据流的另一方法的流程图。所述方法开始于至少一个网络接口卡接收数据流的操作805。在操作810中,运行每个网络接口卡的至少一个第一线程的第一进程处理接收的数据流,组织经过处理的数据流,过滤经过处理的数据流并且将经过处理的数据流存储在共享内存中。然后在操作815中,使用至少一组第二多个进程再次处理存储在共享内存中的数据,其中每个进程具有选用组的第二线程。来自所述组的第二线程的至少一个线程是用于从共享内存中读取数据并且生成关于共享内存的统计。如果存在多个共享内存,那么可用不同于第二线程的线程或专用线程读取每个共享内存。在操作820中,将生成的统计周期性地保存到区间文件。将生成的统计周期性地保存到文件可由用户配置或可例如每天一次或每小时一次。在另一实施方案中,当统计数据的大小达到某个阀值时,可将生成的统计周期性地保存到区间文件。在操作825中,从区间文件中读取数据,并且将其分类、合并和聚集。0042 在参考图8描述的实施方案中,每个具有选用组第二线程的第一进程和一组或多组第二多个进程是独立的并且经由共享内存彼此通信。每个网络接口卡的第一线程组可不说 明 书CN 102656573 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1