用于过滤数据分组的方法和设备的制作方法

文档序号:7936932阅读:102来源:国知局
专利名称:用于过滤数据分组的方法和设备的制作方法
技术领域
本发明一般地涉及网络安全,具体地涉;SJ艮务拒绝(DDoS)攻击。
背景技术
在DDoS攻击期间,若干受威胁计算机通常发送不期望的大量业务(即 数据分组)给接收方计算机系统(例如web服务器、网络链路、路由器等)。 这个不期望的业务通常耗>^接收方计算机的资源并且阻碍接收方计算机服 务于它的合法用户。
为了防御DDOS攻击,接收方计算机通常必须在不期望的业务和合法 的业务之间进行区分。 一旦不期望的业务被识别,接收方计算机就可以过 滤(例如阻塞)不期望的业务以使得它不会使得接收方计算机的资源超载。
由于不期望的业务通常由许多受威胁计算机发送,接收方计算机通常 难以从合法业务中识别出(并过滤出)不期望的业务。接收方计算机通常 必须确定每个接收的分组是不期望的业务的一部分还是合法业务的一部 分。这个分析通常要求计算机检查每个接收分組的源互联网协议(IP)地 址。
每个分组具有源互联网协议(IP )地址。IP地址通常具有a.b.e.d的格 式,其中a、 b、 c、和d是0-255范围内的整数.用于计数DDoS攻击的 一种过滤技术是确定在接收方计算机被纳入网络之前要过滤的业务(即静 态过滤)。例如,如果知道受威胁计算机参与DDoS攻击,则接收方计算 机可以被配置成过滤(例如阻塞)所有接收自该受威胁计算机的分组.静 态过滤通常要求接收方计算机检查每个分组的完整IP地址并且将该IP地 址与疑似参与DDoS攻击的IP地址列表中的IP地址相比较。

发明内容
需要一种用于更高效且有效地过滤分组以对抗分布式服务拒绝攻击的 技术。
根据本发明的实施例,接收方计算机险查接收分组的IP地址的一个或
多个部分或段,以动态地过滤接收分组并且降低DDoS攻击成功的可能性。 根据本发明的实施例,维护具有被组织成多个级别的多个节点的分层 树。树的根节点之上的每个级别都具有一个或多个节点,其中该一个或多 个节点中的每一个都对应于互联网协议(IP)地址段的特定值。所述M 于树的特定级别的每个节点都是相同的。位于树的特定级别的每个节点存 储一数值,该数值代表针对关联于特定级别的IP地址段而具有相同值的接 收分组的数量。 一些接收数据分组基于分层树而被过滤出来。
在一个实施例中,当对应于一个段的特定值的节点所具有的子节点的 数量大于子节点阈值时,针对一个源IP地址段而具有特定值的接收数据分 组4皮过滤出来。响应于存储于特定节点中的大于溢出阈值(例如关联于节 点、树等)的数值而生成对应于一个段的特定值的节点的子节点。
在一个特定实施例中,分层树的维护包括在接收具有针对第一 IP地址 段的第一值和针对第二 IP地址段的第二值的分组之后执行几个步骤。所述 步骤包括确定分组的当前级别处的当前级别节点。当前级别节点存储代表 针对第一 IP地址段而具有第一值的接收分组数量的数值。所述步骤包括如 果所存储的数值(溢出计数器)小于溢出阈值(例如对于当前级别节点而 言)则增加所存储的数值(即关联于当前级别节点的溢出计数器)。如果 所存储的数值大于当前级别节点的溢出阈值,则位于树的下 一级别的当前 级别节点的子节点因而被确定。子节点代表具有针对第一 IP地址段的第一 值和针对第二 IP地址段的第二值的接收分组的数量。所述步骤包括在执行 创建子节点的步骤之后增加当前级别节点的子节点的数量。在 一 些实施例 中,上述步骤可以-故重复直到当前级别节点的子节点的数量大于子节点阈 值为止。
在所述方法的一个特定实施例中,所述步骤包括当当前级别节点的子节点数量大于子节点阈值时过滤(例如被阻塞的)接收分组。此外,每个 节点可以具有可被所述方法用来(例如以预定速率)减少关联于节点的溢
出计数器的泄漏参数(leakage parameter)。
此外,所述步骤可以包括例如利用在无攻击期间对系统正常使用的统 计来独立地调整子节点阈值和溢出阈值。
参考附图,通过阅读下面的详细描述,本发明的所述和其他优点对于 本领域技术人员将变得显而易见。


图1是受到网络上的分布式服务拒绝攻击的第一计算机的示例性框
图2是根据一个实施例的、计算机为过滤分组而执行的各步骤的流程
图3是根据一个实施例(例如图2的实施例)的数据结构的框图;和 图4是根据一个实施例的计算机的高级框图。
具体实施例方式
图1是受到网络106上的分布式服务拒绝(DDoS)攻击的第一计算机 104 (例如web服务器、路由器等)的示例性框图。在DDoS攻击期间, 例如第二计算机108、第三计算机112和第四计算机116的若干受威胁计 算机发送不期望的业务(例如数据分组)120到第一计算机104。这个不期 望的业务120的速率通常高到能够耗尽第一计算机的资源并且阻碍第一计 算机104服务于其合法用户。为此,DDoS攻击可能损毁第一计算机104。
为了防御DDoS攻击,第一计算机104通常必须在不期望的业务120 与合法业务之间进行区分,例如来自第五计算机128的合法业务124。 一 旦第一计算机104识别出不期望的业务120,该第一计算机就可以过滤(例 如阻塞)不期望的业务120以使得该业务不会使得第一计算机104的资源 超载。由于不期望的业务120是由DDoS攻击中的许多计算机发送的,因此 可能难以从合法业务124中识别出(并过滤出)不期望的业务120。第一 计算机104通常必须确定每个接收分组是不期望业务120的一部分还是合 法业务124的一部分。这种分析会要求第一计算机104执行静态过滤并检 查每个接收分组的完整互联网协议(IP)地址。
图2是说明根据本发明一个实施例的、第一计算机(这里也称为计算 机)为了动态过滤分组而执行的各步骤的流程图。首先以下面给出的详细 描述的例子、在较高级别描述图2的流程图。
计算机首先在步骤205中初始化分层树数据结构(这里称作树)。该 树具有被组织成多个级别的多个节点。每个级别关联于一个IP地址段(例 如一个IP地址字节),并且在特定级别的每个节点存储一数值,该数值代
一个实施例中,仅就根节点初始化该树,并且当接收到分组时将该根节点 的次节点添加至该树。
计算机然后在步骤210中接收分组。该分组具有针对第一 IP地址段的 第一值和针对第二 IP地址段的第二值。该分组的当前级别节点然后在步骤 215中被确定。当前级别节点位于当前级别并且代表针对第一IP地址段而 具有笫一值的接收分组的数量。当前级别节点是位于与第一 IP地址段相对 应的级别处的节点。
为了找到当前级别节点,分组的完整IP地址的段按照树中的节点而被 分析。当找到匹配于当前级别的段的节点时,分析下一IP地址段,并且匹 配于下一段的节点位于树中的下一级别。重复进行这些步骤。当前级别节 点因而是树中最匹配的节点。这个过程通常称作最长前缀匹配(它也可以 称作最长第一段匹配)。结果,第一段(以及因此当前级别节点)不是静 态的,而是针对每个分组而变化。第一段对应于分组的IP地址中匹配于节 点(即当前级别节点)的段。
然后在步骤220中确定当前级别节点是否处于溢出状态。这个确定可 以通过将针对第一 IP地址段而具有第一值的接收分组数量和溢出阈值相比较来完成。在一个实施例中,溢出阈值对于每个节点都是特定的(例如 针对当前级别节点的特定溢出阈值)。可选地,对于在一个级别的、或可 选地在整个树中的所有节点存在一个溢出阈值。如果针对第一 IP地址段而 具有第一值的接收分组数量小于或等于溢出阈值(例如针对当前级别节
点),则当前级别节点未处于溢出状态并且在步骤225中增加代表针对第 一 IP地址段而具有第一值的接收分组数量的所存储数值。该过程然后返回 到步骤210并重复进行。
如果所存储数值(代表针对第一 IP地址段而具有第一值的接收分组数 量)大于溢出阈值,则当前级别节点处于溢出状态并且在步骤230中针对 该分组创建当前级别节点的子节点。该子节点位于比当前级别的数值更大 的级别(例如第二级别至第三级别)(但是在图形上可以被看作是位于树 中的当前级别之下的级别),并且代表具有针对第一 IP地址段的第一值和 针对第二IP地址段(例如不相交的第二IP地址段)的第二值的接收分组 的数量。
然后在步骤235中创建或增加与当前级别节点的子节点的数量相对应 的计数器。计算机然后在步骤240中确定当前级别节点的子节点数量的计 数器是否大于子节点阈值。如果不是,则该过程返回步骤210并重复进行。
如果当前级别节点的子节点数量大于子节点阈值,则在步骤250过滤 出关联于当前级别节点的分组。因此,计算机过滤出针对第一IP地址段而 具有第一值的接收数据分组。该过程然后返回步骤210。
如上所述,每个IP地址段都是0-255范围内的整数。因此,在一个实 施例中,存在四个级别,并且每个级别的子节点的最大数量是256。然而, 存在可选的实施例,其包括但不限于32个级别并且每级别两个子节点、16 个级别并且每级别256个子节点、以及128个级别并且每级别两个子节点, 这覆盖了互联网协议版本4和版本6的地址惯例。
图3示出了根据本发明一个实施例的树300的例子。计算机需要判定 它接收的任一分组是否是DDoS攻击的一部分。如果计算机判定一些或全 部分组是DDoS攻击的一部分,则计算机过滤分组。计算机使用树300来进行这个判定。
假设计算机正从下列IP地址中的每一个接收许多分组
100.50.207.124,
100.51.207.91,
100.51.208.6,
100.51.209.121,
100.51.210.14,
100.51.211.251,
100.52.05.44,
100.53.68.148,
200.125.65.188,和
200.188.251.12。
树300具有根节点305,其代表通用的或根级别310。根级别310是树 300的最高级别。在根级别310之下是对应于(如上所述的)a.b.c.d格式 的IP地址的a段的a级315。例如,上面显示的IP地址100.52.05.44是 a.b.c.d格式的,其中100=a、 52=b、 05=c以及44=d。在一个实施例中, 计算机创建两个a级节点第一 a级节点320和第二 a级节点325。第一 a 级节点320代表具有a级地址100的接收分组的数量(例如具有IP地址 100.50.207.124或100.52.05.44的分组)。第二 a级节点325代表具有a 级地址200的接收分组的数量(例如具有IP地址200.125.65.188或 200.188.251.12的分组)。
在一个实施例中,图3所示的树300中的每个节点都用于圓圏表示, 每个圆圏中有一个数值。这个数值代表溢出计数器。该溢出计数器代表针
节点或级别也可以具有相应的溢出阈值。当针对关联于特定级别的IP地址 段而具有相同值的接收数据分组的数量大于溢出阈值时,计算机必须创建 当前级别节点的子节点。
例如,数值5位于两个a级节点320和325中的每一个之内。这意味着针对每个a级地址100和200已经接收了至少五个分组。由于溢出阈值, 可能针对a级地址100或200中的任一个或针对二者已经接收了多于五个 分组。例如,假i殳树300的a级节点的溢出阈值等于4。由于两个a级节 点320、 325在节点内具有五个,因此a级节点320、 325处于其溢出状态 并且它们的溢出计数器不再增加。相反,关于下一级别(例如b级330) 来分析具有a级地址100或200的接收分组。当分组被接收或可能之前已 经被创建(例如创建树时)时,这个下一级别(例如b级330)可以被创 建。因此,当计算机收到具有a ,址100 (或200 )的另一分组时,计算 机首先确定a级节点320 (或325)处于溢出状态。计算机然后关于b级 330来分析这个分组。
在第一a级节点320之下有四个b级节点335、 340、 345和350。第 一 b级节点335对应于具有b级地址50 (即100.50)的分组并且具有溢出 计数器1。第二 b级节点340对应于具有b级地址51 (即100.51)的分组 并且具有溢出计数器4。第三b级节点345对应于具有b级地址52 (即 100.52)的分组并且具有溢出计数器1。第四b级节点350对应于具有b ,址53 (即100.53 )的分组并且具有溢出计数器1。
类似地,在第二a级节点325之下有第五b级节点355。该第五b级 节点355对应于b级地址125 (即200.125 )并且具有溢出计数器1。
假设b级(即b级的每个节点)具有溢出阈值3。因此,具有溢出计 数器1的b级节点(例如节点335、 340、 345和350)当前未处于溢出状 态。结果,不必针对这些节点335、 340、 345和350来分析树中的下一级 另'J (c级360)。
然而,第二b级节点340具有大于溢出阈值3的溢出计数器。结果, 第二 b级节点340处于溢出状态并且计算机不再增加第二 b级节点的计数 器。相反,当第二b级节点处于溢出状态时c级用于所接收的分组。
如上文所述,假设计算机接收在a级地址100和b级地址51之下的下 列五个分组
100.51.207.91,■51.208.6, 100.51.209.121, 100.51.210.14,和 100.51.211.251。
b级节点340处于溢出状态并且分组因而在c级被分析。五个c级节 点因而被创建与具有c级地址207的分组相对应的第一 c级节点365、 与具有c ^址208的分组相对应的第二 c级节点370、与具有c级地址 209的分组相对应的第三c级节点375、与具有c级地址210的分组相对应 的第四c级节点380、以及与具有c级地址211的分组相对应的第五c级节 点385。每个都具有溢出计数器l,并且假设c级的溢出阈值是2,没有c 级节点处于溢出状态。因此,不必针对任何接收分组来创建d级节点。
在一个实施例中,每当计算机生成下一级节点时,关联于当前节点(即 父节点)的子节点计数器就增加。例如,每当c级节点365-385被生成时, 关联于b级节点340的子节点计数器就增加(因为所有c级节点365-385 都是第二 b级节点340的子节点)。
每个级别可以具有可在关联于特定父节点的分组被过滤(例如阻塞) 之前存在的子节点数目阈值(即子节点阈值)。例如,假设c级子节点阈 值是4。因此,当计算机判定第二b级节点340具有五个与它关联的子节 点时,计算机可以判定过滤出符合第二 b级节点340的IP地址要求的所有 分组(即具有a级IP地址100和b级IP地址51的所有分组)。
在一个实施例中,维护每个节点(或每个级别或树300)的泄漏>|*. 该泄漏M关联于泄漏桶模型并且控制关联于节点的溢出计数器的减少。 该泄漏参数对应于正常的业务流。该泄漏参数可以是速率(例如针对特定 节点每5秒减小溢出计数器)。由于这个(由泄漏M控制的)减少,在 一个时间周期内节点可能处于溢出状态,但是在另 一稍后的时间周期内节 点可能由于按照泄漏桶模型有规律地减少溢出计数器而未处于溢出状态。 该泄漏参数以及溢出阈值和/或子节点阈值可以是常数,或者可以(例如通 过系统管理员或计算机用户)被动态地调整。在另一实施例中,利用允许分组从节点中被自然排出的时间来调整溢出阁值(即溢出计数器在例如给 定时刻减少)。
本领域技术人员应当认识到,可以实现循环计时器(circular clock) 算法来以较低的计算成本实现泄漏参数。例如,针对每个节点维护两个在0 ... T-l中取值的计数器,其中T是节点阈值,设定T-l增加1就生成0 (循环算法)。 一个计数器(CA )对应于实际到达分组数量,而另一个(CN ) 对应于正常轨迹。计数器CA按照实际到达而增加;计数器CN按照正常 "泄漏"速率而增加。存在两个可能的沖突模式(计数器值一致的事件) 一个是CA试图超过CN,在这种情况下宣告阈值溢出;另一个是CN试图 超过CA,这对应于溢出计数减少到零。
此外, 一旦节点的溢出计数器由于上述泄漏的实现而减少到零(或特 定的预定值),就可以从树中删除该节点,结果,树可以整理它自己以使 得在业务量少的时期内该树可以变得更小或甚至返回至只有根节点的空 树。此外,当存在服务拒绝攻击时, 一旦来自特定子网的攻击减轻,关联 于该子网的子树就可能消失,由此释放资源来处理其他正蜂皮攻击的子网。
在各个不同的实施例中,所执行的分组过滤可以基于各种形式的分层
树。例如,尽管上述例子基于IP地址子集内的分组数目而过滤,然而其他 实施例可以使用树结构来过滤流(例如TCP会话)。
上面的描述说明了一种用于实现本发明实施例的方法。这些方法的各 步骤可以由适当编程的数字计算机或数字处理器来执行,这种计算机的配 置是本领域公知的。合适的计算机可以利用例如已知的计算机处理器、存 储器单元、存储设备、计算机软件和其他部件来实现。图4示出了这种计 算机的高级框图。计算机402包括通过执行定义计算机402的全部操作的 计算机程序指令来控制这种操作的处理器404。计算机程序指令可以被存 储在存储设备412 (例如磁盘)中并且当希望执行计算机程序指令时被载 入存储器410中。特别地,存储于数据存储^h质(例如存储器或光盘或磁 盘)上的一个或多个程序可以包括用于执行上述方法各步骤的计算机可执 行指令。计算机402还可以包括一个或多个用于与其他设备(例如本地或经由网络)通信的接口 406。计算机402还可以包括输X/输出408,其代 表使得用户能够与计算机402交互的设备(例如显示器、键盘、鼠标、扬 声器、按钮等)。本领域技术人员应当认识到,实际计算机的实现还将包 括其他部件,并且图4是这种计算机的一些部件的高M示用以进行说明。 例如,计算机402可以代表上述计算机。此外,本领域技术人员应当认识 到,这里描述的各处理步骤也可以利用专用硬件来实现,该专用硬件的电 路被专门配置用来实现所述处理步骤。可选地,所述处理步骤可以利用软 件和硬件的各种组合来实现。同样,所述处理步骤可以在计算机中执行或 可以是更大型机器的一部分。
前面的详细描述应当被看作是说明性和示例性的,而不是限制性的, 并且这里公开的本发明的范围不是由该详细描述所确定的,而是由权利要 求来确定。应当理解,这里显示和描述的实施例仅为了说明本发明的原理, 并且本领域技术人员可以在不脱离本发明范围和精神的前提下实现各种修 改。本领域技术人员可以在不脱离本发明的范围和精神的前提下实现各种 其他特征组合。
权利要求
1.一种用于过滤在网络地址接收的数据分组的方法,包括维护包括被组织成多个级别的多个节点的分层树,在所述树的根节点之上的每个级别具有所述节点中的一个或多个,所述节点中一个或多个中的每一个都对应于互联网协议地址的段的特定值,所述段对于所述树的特定级别中的每个节点都是相同的,位于所述树的特定级别的每个独立节点存储一数值,该数值代表针对关联于所述特定级别的所述互联网协议地址的段而具有相同值的接收分组的数量;以及基于所述分层树过滤所述接收数据分组中的一些数据分组。
2. 根据权利要求1所述的方法,其中,过滤所述接收数据分 组中的一些数据分组包括响应于与一个段的特定值相对应的节点 具有比子节点阈值更多的子节点数量而过滤针对源互联网协议地 址的所述一个段而具有特定值的接收数据分组。
3. 根据权利要求1所述的方法,其中,对所述分层树的所述 维护还包括a ) 对于包括针对源互联网协议地址的第 一段的第 一值和针对所述 源互联网协议地址的第二段的笫二值的接收数据分组,来确定定位于当前 级别的当前级别节点,所述当前级别节点存储一数值,该数值代表针对所 述源互联网协议地址的所述第 一段而具有所述第 一值的所述接收数据分組 的数量;b)如果所存储的数值小于所述当前级别节点的溢出阈值则增加所 存储的数值;和c ) 如果所存储的数值大于所述当前级别节点的所述溢出阈值则在 所述树的下一级别创建所述当前级别节点的子节点,所述子节点对应于所 述源互联网协议地址的针对所述第 一段的所述第 一值和针对所述第二段的 所述第二值。
4. 根据权利要求3所述的方法,还包括d)重复步骤a)至c),直到所述当前级别节点的被创建子节点的 数量大于子节点阈值。
5. 才艮据权利要求4所述的方法,其中,所述过滤还包括当所 述当前级别节点的被创建子节点的数量大于所述子节点阈值时过 滤所述接收数据分组。
6. 根据权利要求1所述的方法,其中,所述多个节点中每个 节点的所存储的数值按照由泄漏参数确定的速率而减小,所述泄 漏参数用于减小针对所述互联网协议地址的段而具有所述相同值 的接收分组的数量。
7. —种用于过滤在网络地址接收的数据分组的设备,包括 用于维护包括被组织成多个级别的多个节点的分层树的装置,在所述树的根节点之上的每个级别具有所述节点中的一个或 多个,所述节点中一个或多个中的每一个都对应于互联网协议地 址的段的特定值,所述段对于所述树的特定级别中的每个节点都 是相同的,位于所述树的特定级别的每个独立节点存储一数值,而具有相同值的接收分组的数量;和用于基于所迷分层树而过滤所述接收数据分组中的一些数据 分组的装置。
8. 根据权利要求7所述的方法,其中,用于过滤所述接收数 据分组中的一些数据分组的装置包括用于响应于与一个段的特定 值相对应的节点具有比子节点阈值更多的子节点数量而过滤针对 源互联网协议地址的所述一个段而具有特定值的接收数据分组。
9. 根据权利要求7所述的方法,其中,用于维护所述分层树 的所述装置还包括a )用于对于包括针对源互联网协议地址的第 一段的第 一值和针对 所述源互联网协议地址的第二段的第二值的接收数据分组、来确定定位于当前级别的当前级别节点的装置,所述当前级别节点存储一数值,该数值 代表针对所述源互联网协议地址的所述第一段而具有所述第一值的所述接收数据分组的数量;b) 用于在所存储的数值小于所述当前级别节点的溢出阈值的情况 下增加所存储的数值的装置;和c) 用于在所存储的数值大于所述当前级别节点的所述溢出阈值的 情况下、在所述树的下一级别创建所述当前级别节点的子节点的装置,所 述子节点对应于所述源互联网协议地址的针对所述第 一段的所述第 一值和 针对所述第二段的所述第二值。
10.根据权利要求9所述的设备,还包括d )用于重复步骤a)至c)直到所述当前级别节点的被创建子节点 的数量大于子节点阈值的装置。
全文摘要
公开了一种用于过滤接收数据分组的方法和设备。维护分层树。该树包括被组织成多个级别的节点。该树的根节点之上的每个级别具有所述节点中的一个或多个,每个都对应于IP地址段的特定值。所述段对于该树的特定级别的每个节点都是相同的。位于该树的特定级别的每个节点存储一数值,该数值代表针对关联于特定级别的IP地址的段而具有相同值的接收分组的数量。基于该分层树而过滤出所述接收数据分组中的一些数据分组。
文档编号H04L29/06GK101622850SQ200880006841
公开日2010年1月6日 申请日期2008年2月29日 优先权日2007年3月1日
发明者D·罗米克, E·H·格罗斯, F·X·赞恩, Y·巴里士尼科夫 申请人:朗讯科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1