专利名称:针对拒绝服务攻击的硬件过滤支持的制作方法
技术领域:
本发明 一般地涉及网络通信,更具体而言涉及用于过滤诸如路由器这 样的中间网络节点中的拒绝服务流量的系统和方法。
背景技术:
##"教^#吝是用于在诸如计算机这样的节点之间传输数据的互连子网
的地理上分布的汇集。局域网(LAN)是这种子网的一个示例。网络的拓 扑由通常通过一个或多个中间网络节点(例如路由器或交换机)彼此通信 的客户端节点的布置所限定。这里所使用的客^户4f萝,点是被配置为发起或 终止网络上的通信的末端站节点。相反,^/矽A^多芳:^是帮助在客户端节 点之间路由数据的节点。节点之间的通信通常是通过根据预定的协议交换 分离的数据分组来实现的。在此上下文中,坊'议由限定节点如何与彼此交
、每个数据^组通常包括前插有(封装了)至少一个根据网络通信协议 编排了格式的网络头部的"有效载荷"数据。网络头部包括使得客户端节 点和中间节点能够通过计算网络高效地路由分组的信息。通常,按照开放 系统互连(OSI)参考模型,分组的网络头部至少包括数据链路(第2 层)头部、网络(第3层)头部和传输(第4层)头部。OSI参考模型一 般在1999年9月出版的Radia Perlman的标题为/w/erco朋e"/o似Seco"J 的参考书的第1.1节中更详细描述,这里通过参考将其全部结合进 来,就好像在这里完整阐述了一样。
数据链路头部提供用于经由诸如点到点链路、以太网链路、无线链 路、光链路等特定物理链路(即通信介质)传送分组的信息。为此,数据 链路头部可以指定由物理链路连接的一对"源"和"目的地"网络接口。 /^/多麥"包含用于将网络节点耦合到一个或多个物理链路的机械、电气和信令电路和逻辑。网络接口通常与依硬件而异的地址相关联,所述地址被 称为媒体访问控制(MAC)地址。因此,数据链路头部中的源和目的地网
络接口通常被表示为源和目的地MAC地址。数据链路头部还可以存储用
于管理物理链路上的数据传送的流控制、帧同步和差错校验信息。
网络头部提供限定分组通过计算机网络的逻辑路径(或"虚拟电 路")的信息。值得注意的是,路径可能跨越多个物理链路。网络头部可 以根据因特网协议(IP)来编排格式,所述协议指定逻辑路径的端点处的 源和目的地节点的IP地址。从而,分组可以沿其逻辑路径从一个节点 "跳"到另一个节点,直到它到达被分配了存储在分组的网络头部中的目 的地IP地址的客户端节点。在每一跳之后,如果必要,分组的数据链路头
部中的源和目的地MAC地址可被更新。但是,当分组在网络中的链路间 传送时,源和目的地IP地址通常保持不变。
传输头部提供用于确保分组被可靠地从源节点传送到目的地节点的信 息。传输头部通常包括分别标识源和目的地节点中执行的特定软件应用的 源和目的地端口号,等等。更具体而言,分组在源节点中是由被分配了源 端口号的应用生成的。然后,分组被转发到目的地节点,并被定向到被分 配了目的地端口号的应用。传输头部还可以包括差错校验信息(即校验 和)以及其他数据流控制信息。例如,在诸如传输控制协议(TCP)这样 的面向连接的传输协议中,传输头部可以存储指示分组在传送的数据分组 流中的相对位置的定序信息。
这里所使用的Jf薪》f (data flow)是从源节点传输到目的地节点的数 据分组的流。流中的每个分组满足一组预定的标准,例如基于分组的内 容、大小或在数据流中的相对位置(即时间上的或空间上的)。中间网络 节点可被配置为执行"基于流"的路由选择操作,以便以相同的方式路由 数据流中的每个分组。中间节点通常接收流中的数据分组,并根据利用诸 如开放最短路径优先(OSPF)协议这样的协议分发的预定的路由选择信息 转发分组。由于流中的每个分组被寻址到相同的目的地节点,因此中间节 点只需要例如基于流中接收到的第一分组对整个数据流执行一次转发判 决。然后,中间节点基于流的先前预定的路由选择信息(即邻接信息)转发数据流中的分组。以这种方式,与为数据流中的每个分组执行单独的转 发判决相比,中间节点消耗更少的资源,例如处理器带宽和处理时间。
实践中,中间网络节点可以实现散列表,该表存储用于将接收到的分 组分类到其相应的数据流的与分组相关的信息。散列表通常被组织为链接 列表的表,其中每个列表可以通过将传统散列函数应用到"签名"信息的 结果来索引。在此上下文中,"遂—名"是对数据流中的每个分组保持恒定 的一组值。例如,假定第一数据流中的每个分组存储相同的源和目的地IP 地址值对。在这种情况下,第一数据流的签名可以基于这些源和目的地IP 地址的值来生成。类似地,可以为与第一数据流中的分组相比其分组存储 不同的源和目的地IP地址集合的第二数据流生成不同的签名。当然,本领 域的技术人员将会意识到,数据流的签名信息并不局限于IP地址,而是也 可以包括其他信息,例如TCP端口号、IP版本号等等。
散列表中的每个链接列表包含一个或多个条目,每个链接列表条目存 储与特定数据流相对应的信息。这种信息例如可以包括数据流的相关联的 签名信息和数据流标识符("流ID")等。流ID标识特定数据流,并且 还可用于定位与数据流相关联的路由选择信息。为此,中间网络节点可以
维护将流ID值映射到其相应的路由选择信息(例如存储在节点的本地或 内部存储器中)的存储器位置的数据结构。或者,流ID值可以直接结合
其数据流的路由选择信息的存储器位置。
当中间网络节点接收到分组时,从分组的网络头部提取签名信息,并
且利用诸如循环冗余校验(CRC)函数这样的传统散列函数对其进行散列 操作。所得到的散列值被用于索引散列表条目,而该条目又进而引用一个 链接列表。链接列表中的条目被顺序访问,直到存储提取出的签名的"匹 配"条目被找到。当匹配链接列表条目被定位到时,条目的存储的流ID 值被用于将接收到的分组与数据流相关联,并且分组根据该流被路由。
中间网络节点通常接收来自包括客户端节点和其他中间节点在内的各 种源的大量数据流。每个源可以负责建立与中间节点的一个或多个数据 流。为了优化对其处理带宽的使用,中间节点可以在区分优先级的基础上 处理接收到的流。即,当分组在中间节点处被接收到时,它们被识别为属于例如高或低优先级数据流。高优先级流中的分组可以先于低优先级分组 被中间节点处理,即使低优先级分组是在高优先级分组之前接收到的也是 如此。
拒绝服务(DoS)攻击已经成为用于禁止访问中间网络节点中的资源 和/或服务的相当常见的技术。DoS攻击对应于"恶意"分组的数据流,所 述"恶意"分组在被中间网络节点处理时,剥夺非恶意分组(即非DoS分 组)对节点中的某些资源和/或服务的访问权限。DoS分组可能是从单个源 发送的,或者可能是多个源之间协调出来的。后一种情况通常被称为分布 式DoS (DDoS)攻击。例如,计算机黑客可以通过向目标中间节点发送 数据分组的多个被危害的末端站发起DDoS攻击,从而耗尽中间节点的处 理带宽。
DoS攻击通常包括向中间网络节点发送大量特定类型的网络流量,例 如根据因特网控制消息协议(ICMP)或因特网群组管理协议(IGMP)编 排格式的分组。在许多情况下,DoS分组前插有网络头部的复杂布置。从 而,目标中间网络节点不仅由于接收到的大量DoS分组而超载,而且也由 于处理它们所需要的资源消耗而超载。由于中间节点的资源在处理这些恶 意分组时被过分消耗,因此发送到中间节点的其他非恶意分组通常被丢弃 或抛弃。因此,不同类型的中间网络节点尝试以各种方式来防止DoS攻 击。
高档"核心"路由器和交换机通常具有足够的处理带宽来处理恶意 DoS分组和非恶意分组。在此上下文中,高档路由器和交换机被设计为处 理例如网络"骨干"上的大量网络流量。因此,可以以接收到恶意分组的 速率(即"线路"速率)来处理恶意分组。这些高档中间节点从而主要依 赖于不会在识别和去除恶意DoS分组时变得使用过度(over-subscribed) 的硬件转发解决方案。结果,执行软件的中央处理单元(CPU)中的处理 带宽的一大部分可被消耗来识别和去除DoS分组。此解决方案的另-一个缺 点是由于包括用于从接收到的数据流过滤DoS分组的代码,因而路由选择 或交换软件变得更加复杂。
与其高档对应物不同,"中档"路由器和交换机通常由于DoS攻击而变得使用过度。这些中间节点通常是管理相对大量的数据流的企业或LAN
路由器/交换机。为了识别和去除DoS流量(即数据分组),中档路由器 和交换机通常利用在中央式CPU上或支持通用CPU的网络处理器上执行 的软件。与高档路由器和交换机中的软件一样,中档路由器和交换机中的 软件为了阻止DoS攻击而消耗过量的处理带宽和复杂性。
当"问题"DoS流量能被过滤并能被置于由软件维护的低优先级队列 上时,对进入流量的优先级区分的硬件支持有时在中档路由器和交换机中 被实现。但是,由于在DoS攻击期间恶意分组的数目通常变得过高,因此 低优先级队列通常被填满,因此其尾部被丢弃,其中既丢弃了恶意DoS流 量,也丢弃了非恶意的低优先级流量。此外,硬件过滤通常被实现为对包 括在接收到的数据分组中的数据链路(第2层)或网络(第3层)信息的 简单表查找。表査找可以用内容可寻址存储器(CAM)(例如三元CAM
(TCAM))来执行。如果DoS攻击流量经由复杂的封装到达,则这种基 于表的过滤无法支持这些封装,于是DoS流量被转发到CPU上执行的软 件。结果,硬件支持并没有防止CPU由于处理DoS流量而负担加重。
低档"访问"路由器和交换机通常是处理相对少量的网络流量的单个 CPU系统,因此比起上述中档和高档中间网络节点来更易受DoS攻击的影 响。在低档路由器和交换机中只有一个CPU,因此CPU带宽通常不消耗 在对传入数据进行预处理或优先级区分上。这种预处理将会要求CPU上执 行的软件处理每个接收到的分组两次(优先级区分和路由),从而其消耗 的处理资源量是不可接受的。因此,低档路由器和交换机通常只利用无法 识别复杂的DoS分组封装的简单查找表或TCAM过滤接收到的数据分组
(如果它们要进行过滤的话)。
一般来说,存在对能够在不消耗节点中的过量处理资源或带宽的情况 下识别和去除DoS流量的中间网络节点的需求。此外,该中间节点应当识 别和去除具有任意复杂度的封装的DoS流量。此外,应当在不影响非恶意 分组(例如低优先级非恶意分组)的处理的情况下,从中间节点去除恶意 DoS分组。
发明内容
本发明通过提供用于在诸如拒绝服务(DoS)分组这样的恶意数据分
组能被转发到中间网络节点中的中央处理单元(CPU)之前自动识别和去
除中间网络节点中的恶意数据分组的系统和方法,从而克服了现有技术的
缺陷。CPU的处理带宽因而不被消耗来识别恶意分组和将其从系统存储器 中去除。这样,对恶意分组的处理实质上被从CPU "卸载",从而使得 CPU能够以更高效的方式处理非恶意分组。与现有实现方式不同,本发明 识别具有复杂封装的恶意分组,这些分组用诸如TCAM或査找表之类的传 统技术是无法识别的。
有利地,本发明可用于被配置为执行高档、中档或低档访问路由器的 中间网络节点中。此外,本发明可与传统的访问控制列表(ACL)和/或入 侵检测系统(IDS)结合使用,以删除其封装太过复杂以至于ACL或IDS 无法过滤的DoS流量。更一般而言,本发明可被自动或手工地配置为过滤 具有任意复杂的封装的恶意分组。优选地,用基于散列的流识别来识别恶 意数据分组,但是也可采用其他流分类技术。作为说明,本发明被实现在 中间网络节点中的硬件辅助设备中。但是,也可明确设想,本发明可由硬 件和/或软件的其他组合实现。
通过结合附图参考以下描述将更好地理解本发明的以上和其他优点, 附图中类似的标识指示相同或功能类似的元件,其中
图1是包括互连的子网和节点的汇集的计算机网络的示意性框图,所 述节点中包括中间网络节点;
图2是根据本发明可以使用的说明性中间网络节点的示意性框图 ,
图3是可以实现在图2的说明性中间网络节点中的系统控制器的示意 性框图4是可以入队到本发明的进入和/或外出描述符环中的示例性缓冲器 描述符的示意性框图5是根据本发明可用于自动识别和去除恶意数据分组的说明性硬件辅助(HWA)模块的示意性框图6是可由HWA模块搜索以识别与接收到的数据分组相关联的数据 流的示例性散列表的示意性框图;以及
图7A-B是示出根据本发明可被执行以便自动识别和去除恶意数据分 组的步骤序列的流程图。
具体实施例方式
图1是包括互连的子网和节点的汇集的计算机网络100的框图。节点 可以包括计算机,其中包括末端节点130和140和中间网络节点200,所 述末端节点例如是发送末端节点120和接收末端节点150,所述中间网络 节点可以是交换机或路由器。网络100内包括的子网105、 IIO优选地是 由中间节点200互连的局域网(LAN),但是网络也可以包括其他通信链 路,例如广域网。耦合到LAN的节点之间的通信通常是通过在节点之间 交换分离的分组160来实现的。
例如,在数据经过协议栈的不同层时,发送节点120通过将"有效载 荷"数据封装在诸如传统数据链路和网络头部之类的头部内来生成数据分 组160。分组随后经由网络被传送到中间节点200,中间节点200通过将 数据分组路由到正确的接收节点150来帮助数据分组流过网络。具体而 言,节点200在其网络接口之一处接收分组,并基于分组的网络头部所指 定的目的地末端节点为分组作出转发判决。分组的数据链路头部根据转发 判决被修改,并且分组经由耦合到中间网络节点的适当子网被传送。
图2是可以有利地与本发明一起使用的中间节点200的示意性框图。 该节点包括多个网络接口 210、系统控制器300、中央处理单元(CPU) 230和存储器250。数据被网络接口 210接收,网络接口 210中的每一个耦 合到至少一个网络或子网,例如LAN 105和110。网络接口包含使得中间 网络节点200能够经由连接到网络或子网的物理链路进行通信的机械、电 气和信令电路,所述网络和子网包括异歩传送模式(ATM)网络、同步光 网络(SONET)、无线网络、帧中继网络、以太网、光纤分布数据接口 (FDDI)网络等等。系统控制器300通过中间网络节点中的不同本地总线耦合到每个网络
接口210、 CPU 230 (即处理器)和存储器250。例如,系统控制器可以通 过相应的外围组件互连(PCI)总线耦合到网络接口 210,而控制器可以通 过多个高速连接(例如超传输总线链路)耦合到存储器250。控制器300 因此充当用于将数据从一个本地总线传送到另一个的"桥梁"。即,控制 器经由例如耦合到网络接口 210的第一本地总线接收数据,并将数据转换 成可以经由例如耦合到存储器250的第二本地总线传送的格式。系统控制 器还可以包括其他功能,例如专用电路或逻辑。例如,控制器300可以实 现在诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的硬 件中,但是控制器的功能也可以实现在硬件和/或软件的各种组合中。
存储器250包括可由CPU 230和网络接口 210经由系统控制器300寻 址的多个存储位置。存储器包括一般通过动力循环或其他重启动操作来清 除的一种形式的随机访问存储器(RAM)(例如它是"非易失性"存储 器)。例如,存储器250可以包括适合于存储CPU 230可以访问的程序代 码和数据结构的动态随机访问存储器(DRAM)禾D/或同步DRAM (SDRAM)存储位置。对于本领域的技术人员来说显而易见的是,存储 器250也可以包括用于存储与中间网络节点200的操作相关的程序指令和 数据结构的其他存储装置,包括各种计算机可读介质。
路由器操作系统260的某些部分通常驻留在存储器250中并由CPU 230执行,它通过调用支持在中间节点上执行的软件进程的网络操作等等 来从功能上组织中间网络节点200。 Cisco Systems, Inc.的IOS 操作系统 是路由器操作系统260的一个示例。操作系统可以对网络接口 210接收到 的数据分组160执行路由选择操作。存储器250的一部分可被组织为数据 缓冲器242的缓冲器"池"240,所述数据缓冲器242被配置为存储接收 到的数据分组。例如,每个缓冲器可被配置为存储最多达某个固定量(例 如2千字节)的接收到的数据分组160。
在操作上,接收到的分组160被从网络接口 210传送到缓冲器242中 的一个或多个。执行路由器操作系统260的CPU 230基于存储在存储器 250中的路由选择信息270为接收到的分组作出转发判决。 一个或多个数据结构,例如散列表600,可被存储在存储器中,以辅助操作系统的转发
判决。例如,散列表600可被用于识别与接收到的分组相关联的数据流, 路由选择信息270可以存储与识别出的流相关联的邻接信息。在这种情况 下,分组的网络头部根据与分组的识别出的数据流相关联的邻接信息被修 改。
图3是可实现在说明性中间网络节点200中的系统控制器300的示意 性框图。系统控制器包括由设备总线360互连的多个第一本地总线 (PCI)接口 310、存储器控制器320、 CPU总线接口 330、总线控制器 340、片上存储器350和硬件辅助(HWA)模块500。在说明性实施例 中,每个PCI接口 310包括被配置为经由耦合到网络接口 210的PCI总线 发送和接收数据的电路和逻辑。但是,PCI接口 310也可以由经由其他类 型的总线(例如工业标准体系结构(ISA)总线、扩展ISA (EISA)总线 等)进行通信的相应控制器所替换。在网络接口 210处接收到的数据经由 PCI总线被转发到PCI接口 310,该PCI接口 310对接收到的数据进行成 帧操作,以便它可经由设备总线360被传送。相反,PCI接口可以接收来 自总线360的数据并重新编排数据格式以便经由PCI总线传送。
存储器控制器320包括被配置为经由第二本地总线将数据从存储器 250传送到设备总线360以及从设备总线360传送到存储器250的电路和 逻辑。例如,CPU 230可以将存储器地址(或地址范围)转发到CPU总线 接口 330。存储器地址可以伴随着用于在存储器地址处读或写数据的CPU 指令。CPU总线接口 330经由设备总线360将存储器地址及其相应的CPU 指令发送到存储器控制器320。作为响应,存储器控制器根据CPU指令在 指定的存储器地址处写数据或取得数据。
总线控制器340包括实现用于协调对设备总线360的访问的仲裁策略 等的电路和逻辑。即,控制器340防止两个或更多个实体,例如PCI接口 310、存储器控制器320等基本同时地尝试访问总线360。为此,总线控制 器340可被配置为基于预定的仲裁协议准予或拒绝对总线360的访问。
根据说明性实施例,执行路由器操作系统260的CPU 230通常执行的 一个或多个功能可被"卸载"给HWA模块500。例如,HWA模块可被配置为在分组能被CPU处理之前过滤在中间网络节点200处接收到的拒绝服
务(DoS)分组。这样,CPU 230的处理带宽不像以前的实现方式中那样 被消耗来识别和去除"恶意"DoS流量。此外,如下文更详细论述的, HWA模块被配置为识别具有任意复杂封装的DoS分组,这些分组用诸如 TCAM或查找表之类的传统技术是无法识别的。
片上存储器350包括驻留在系统控制器300上的一组可寻址存储器位 置。片上存储器可以是一种形式的易失性存储器,例如静态RAM (SRAM),或者是一种形式的可擦除非易失性存储器,例如闪存。虽然 说明性片上存储器350位于系统控制器300中,但是也可以明确设想片 上存储器可以驻留在耦合到系统控制器的单独的存储器模块中,或者片上 存储器的内容(或其一部分)可被结合到"主"存储器250中。
片上存储器350存储一个或多个"进入"描述符环350 (即循环先进 先出(FIFO)队列)、 一个或多个"外出"描述符环354和"删除"描述 符环356等等。每个网络接口 210与片上存储器350中的至少一个进入环 352相关联。当分组数据在网络接口 210处被接收到时,分组数据通过系 统控制器300经由适当的PCI总线被转发到存储器250中的可用数据缓冲 器242。对数据缓冲器的存储器引用(reference)(即"描述符")随后 被加入到与接收到分组数据的网络接口 210相关联的进入描述符环352 中。分组数据被存储,并且描述符以这种方式被加入队列,直到网络接口 210确定整个分组160都已被接收到或者发生差错。因此,网络接口的进 入环352存储与在接口 210处接收到分组数据的顺序相对应的描述符的有
在分组160被接收到之后,网络接口 210通知HWA模块500哪个进 入描述符环352包含接收到的分组的描述符。HWA模块使描述符撤出队 列,并处理接收到的分组数据以确定分组的相关联的数据流。根据说明性 实施例,HWA模块执行基于散列的流分类,这使得它能够对具有任意复 杂封装的分组进行分类。在识别了分组的相关联的数据流之后,HWA模 块将分组的描述符加入到基于识别出的数据流选择的适当的外出描述符环 354中。当分组的描述符被加入到其外出描述符环354之一上时,CPU 230例如通过硬件中断被通知。作为响应,CPU使描述符撤出其外出描述符
环,并为接收到的数据分组160作出转发判决。
作为说明,外出描述符环354中的每一个对应于可与识别出的数据流 相关联的不同的目的地和/或优先级。例如,在外出环354中,可能有相分 离的高优先级和低优先级外出描述符环,分别对应于CPU 230所处理的高 优先级和低优先级数据流。此外,在多CPU实现方式中, 一个或多个高优 先级和/或低优先级外出描述符环354的一组可以与多个CPU中的每个 CPU 230相关联。
如果HWA模块500例如基于分组的识别出的数据流确定接收到的数 据分组160是DoS分组或其他类型的恶意分组,则HWA模块将分组的描 述符加入到与网络接口 210相关联的删除外出环356或"空闲"缓冲器描 述符的先进先出队列(未示出)上,所述"空闲"缓冲器描述符是其引用 的缓冲器242可用于存储新的分组数据的描述符。有利的,被置于删除环 356或空闲缓冲器FIFO上的描述符在能被转发到CPU 230之前被"循环 利用"(即再使用)。这样,存储恶意DoS分组数据的数据缓冲器242能 够被HWA模块500回收,而无需消耗CPU的带宽或处理资源。
图4示出可被加入到进入和外出描述符环352-356中的至少一个中的 示例性描述符400。描述符400包括与描述符相关联的一组标志410、缓 冲器指针420以及其他信息430等。标志410例如可以包括所有权标志 412、分组开始(SOP)标志414、分组结束(EOP)标志416和差错 (ERR)标志418。所有权标志412存储指示哪个设备被授予对描述符400 的所有权(即控制)的值。例如,所有权标志可以等于第一值以指示网络 接口 210被给予对描述符400的排他访问权限;当对描述符的控制被转移 到HWA模块500时标志412可以等于第二值。
SOP标志414可被设置为等于指示描述符的引用的数据缓冲器242是 否包含接收到的数据分组160的开始的值。类似地,EOP标志416可被设 置为等于指示描述符的引用的数据缓冲器是否包含分组160的结束的值。 ERR标志418可被设置为等于指示出是否例如由于循环冗余校验(CRC) 之类的而在接收到的分组数据中检测到差错的值。当然,除了明确示出的这些以外,其他标志值也可被包括在该组标志410中。例如,描述符400
可以包括其值指示出描述符的引用的分组数据是否是新数据流的一部分的
标志(未示出)。
缓冲器指针420存储指示描述符的相应数据缓冲器242在例如存储器 250中的存储器位置的值。其他状态和配置信息430也可被包括在描述符 400中,以便为特定的中间节点实现方式定制描述符。例如,描述符的其 他信息430可以包括存储在描述符的引用的数据缓冲器242中的分组数据
图5是适合于在分组能被转发到CPU 230之前过滤DoS分组的说明性 HWA模块500的示意性框图。HWA模块500包括直接存储器访问 (DMA)控制器510和流分类器520等,该流分类器520能够集中过滤在 中间网络节点200处接收到的拒绝服务(DoS)流量。更具体而言,DMA 控制器510可以访问例如存储在存储器250中的一个或多个数据缓冲器 242中的接收到的分组数据。流分类器520使用接收到的分组数据和描述 符来识别与分组相关联的数据流。与先前的实现方式不同,如果流分类器 所识别出的数据流对应于DoS数据流,则DMA控制器可在DoS分组被转 发到CPU 230之前"丢弃"(即抛弃)DoS分组。通过以这种方式过滤 DoS流量,CPU带宽和其他处理资源不被消耗来处理DoS分组。
DMA控制器510包括一个或多个空闲缓冲器FIFO 512、进入描述符 FIFO 514、分组头部缓冲器516、外出描述符FIFO 518等。对于耦合到系 统控制器300的每个网络接口 210, DMA控制器510维护-一个单独的空闲 缓冲器FIFO 512。每个空闲缓冲器FIFO存储已被分配给其相关联的网络 接口的空闲缓冲器指针420的列表。CPU 230可经由设备总线360将预定 数目的空闲缓冲器指针420转发到DMA控制器,以便存储在每个接口的 相关联的空闲缓冲器FIFO 512中。分配给每个网络接口 210的那组空闲缓 冲器指针对应于为该接口分配的相应的一组数据缓冲器242。空闲缓冲器 指针420及其相关联的标志值410可被存储在进入描述符400中,而进入 描述符400进而又可被存储在进入描述符环352中。这样,所有权标志值 412被设置为等于指示描述符(从而其相应的空闲缓冲器指针)由网络接口 "所有"的值。
值得注意的是,如果加入网络接口的空闲缓冲器FIFO 512中的空闲缓 冲器指针420的数目变得小于预定的"低7jC位"级别,则DMA控制器可 向CPU 230发送为该接口请求额外的空闲缓冲器指针的中断。低水位阈值 优选是可编程的,从而可以针对中间网络节点200的系统性能来调节。 CPU 230通过将所请求的空闲缓冲器指针加入到适当的空闲缓冲器FIFO 512中来对该中断作出响应。
进入描述符FIFO 514适合于存储从进入描述符环352中的一个或多个 取得的缓冲器描述符。最初,描述符被加入到接口的(一个或多个)进入 描述符环352,直到进入描述符环中的每个条目都包含空闲缓冲器描述 符。然后,当分组数据在网络接口处被接收到时,接口将接收到的数据转 发到由排在其进入描述符环352的"头部"的描述符所引用的数据缓冲器 242。当数据缓冲器242变满时,或分组的结束被接收到时,网络接口 210 修改缓冲器的相应描述符中的所有权标志值412,以便将该描述符的所有 权转移到DMA控制器510。当然,接口也可以修改描述符中的其他信 息,例如标志值410。此过程被重复,直到接收到分组的结朿(例如由接 收到的数据分组160中的EOP标志值所指示),或者检测到差错。
在接收到数据分组160之后,网络接口 210向DMA控制器510发送 指令哪个进入描述符环352存储分组的描述符的中断。例如,进入环352 中的每一个可被分配一个唯一的标识(ID)值,该值可被结合中断中。响 应于接收到中断,控制器510与设备总线360交互,以取得分组的描述 符,并将描述符存储在进入描述符FIFO 514中。在操作上,DMA控制器 将描述符从进入环352撤出,从其SOP标志414值对应于数据分组160的 开始的描述符开始,直到分组的最后的描述符已被撤出,如其EOP标志 416或ERR标志418的值所指示的。出队的描述符随后被重新加入到进入 描述符FIFO 514中的适当条目中。对于从进入描述符环352出队的每个描 述符,DMA控制器510用包含从网络接口的空闲缓冲器FIFO 512获得的 空闲缓冲器指针的空闲缓冲器描述符来替换出队的描述符。
此外,DMA控制器510还可以取得某些(或全部)接收到的分组的头部信息,即存储在由分组的描述符所引用的数据缓冲器242中的。例 如,包含在分组的数据链路、网络和/或传输层头部中的信息可被控制器取
得,并被存储在分组头部缓冲器516中。在说明性实施例中, 一个或多个 选定的分组头部全部被DMA控制器取得,并被存储在分组头部缓冲器 516中。
在取得分组的描述符和头部信息之后,DMA控制器510从进入描述 符FIFO 514提取分组的描述符,从分组头部缓冲器516提取分组头部信 息,并从接收到的中断提取进入描述符环ID值,并且将此信息转发到流 分类器520中的分组标识符引擎522。分组标识符引擎包含被配置为基于 从DMA控制器转发的信息确定网络接口所接收到的分组160的类型的逻 辑和电路。例如,基于此信息,引擎552可确定分组是否是根据预定的网 络协议(例如IGMP或ICMP协议)编排格式的。在识别出分组类型之 后,分组标识符引擎还识别出分组头部、描述符和/或进入环ID值中的一 组预定的字段,从该组字段可提取一组"签名"信息。
该组预定的字段被从分组标识符引擎522转发到流分类器520中的签 名提取引擎524。签名提取引擎适合于从分组标识符引擎所标识的预定位 置提取签名信息。例如,引擎524所提取的签名信息可包括源或目的地 TCP端口号、源或目的地IP地址、协议标识符等等。
提取出的签名信息随后被输入到流分类器中的散列条目地址生成器 530。散列条目地址生成器包括散列函数单元532,该单元向接收到的签名 信息应用预定的散列函数,从而生成所得到的w位散列值。例如,散列函 数可以是传统的生成32位散列值(即《=32)的CRC-32散列函数。在另 一个实施例中,散列函数单元532可被配置为向签名信息应用其他散列函 数,例如消息摘要5函数。
散列函数单元532所生成的散列值可被转发到地址生成器530中的位 掩蔽单元534。位掩蔽单元选择w个接收到的散列位中的m位。例如,假 定散列函数单元532生成32位散列值("=32)。在这种情况下,位掩蔽 单元534可被配置为通过对此32位值和等于0x0000FF00 (十六进制)的 "掩蔽"值执行与操作来选择32位散列值的八个(m=8)预定位。位掩蔽单元所选择的W位可充当唯一标识具有2w个条目的散列表中的特定条目 的散列表索引。索引可被转换成例如位于存储器250中的其索引的散列表
条目的存储器地址。例如,假定每个散列表条目为四字节宽,则散列表索
引乘以4可被添加到散列表的基本存储器地址536,以得出被索引的散列 表条目的存储器地址。
所生成的存储器地址被从散列条目地址生成器530转发到链接列表遍 历器(walker) 526。链接列表遍历器526包含用于搜索从转发的散列表条 目存储器地址开始的链接列表直到定位到包含分组的提取出的签名信息的 链接列表条目或到达列表末尾为止的电路和逻辑。如果找到包含签名信息 的"匹配"列表条目,则链接列表遍历器从匹配条目提取出与分组相关的 信息,例如数据流ID值和目的地外出环ID值。流ID值对应于分组的相 关联的数据流,目的地外出环ID值对应于分组的描述符应当被加入其中 以便进一步处理的外出描述符环354。但是,根据说明性实施例,如果分 组的流ID值对应于DoS数据流,则分组的目的地外出环ID值对应于删除 环356。
在未找到匹配链接列表条目的情况下,链接列表遍历器526可将接收 到的分组160识别为属于新的数据流。在这种情况下,链接列表遍历器 (或HWA模块500的另一个组件)可修改分组的描述符中的 一个或多个 的内容,以指示接收到的数据分组160属于新的数据流。此外,分组的描 述符被与对应于例如片上存储器350中的预定的"遗漏描述符"外出环 354的目的地外出环ID值相关联。此遗漏描述符外出环存储其引用的分组 数据己被与新数据流相关联的描述符。
链接列表遍历器536将分组描述符、流ID值和目的地外出环ID值转 发到外出分组管理器528。外出分组管理器负责将描述符从进入描述符格 式重新编排格式为外出描述符格式(如果必要的话)。即,如果进入和外 出描述符环352-356中的至少一些被配置为存储具有不同格式的描述符, 则外出分组管理器对分组的描述符进行重新编排格式。例如,进入和外出 描述符格式可包括不同的标志值410或其他信息430。外出分组管理器 528随后将分组描述符、流ID值和目的地外出环ID值传送到DMA控制器510中的外出描述符FIFO 518。
当DMA控制器510识别出分组的描述符已被加入到外出描述符FIFO 518中时,DMA控制器经由设备总线360将描述符及其相关联的流ID值 转发到与描述符的相关联的目的地外出环ID值相对应的外出描述符环 356。 DMA控制器随后向CPU 230发送指示描述符被加入到哪个外出描述 符环上的中断。然后,CPU将分组描述符从适当的目的地外出环354撤 出,并根据其识别出的数据流为分组160作出转发判决。当CPU将描述符 从遗漏描述符外出环354撤出时,描述符的引用的分组数据被CPU当作新 数据流处理,并且针对该数据流,新的链接列表条目650可被添加在散列 表600中的适当位置处。
如果DMA控制器识别出与分组描述符相关联的目的地外出环ID值对 应于删除外出环356,则DMA控制器通过去除这些描述符内的缓冲器指 针420并将去除的缓冲器指针添加到空闲缓冲器FIFO 512来"循环利用" 描述符。在这种情况下,分组160己被识别为属于恶意数据流,例如DoS 数据流,并且其相关联的缓冲器指针被返回到网络接口的空闲缓冲器指针 池,而不是将分组的描述符转发到CPU 230。这样,CPU带宽和处理资源 不被消耗来处理接收到的DoS分组160。
如果目的地外出环ID值对应于删除外出环356,并且在空闲缓冲器 FIFO 512中没有足够的可用条目来存储分组的缓冲器指针420,例如CPU 230最近用空闲缓冲器指针填满了 FIFO 512,则分组的描述符也可被直接 存储在删除外出环356中。这样,删除外出环356充当空闲缓冲器FIFO 512的"溢出"队列,从而防止在DMA控制器等待FIFO 512中的新条目 变得可用的同时外出数据路径上可能出现的停滞。在删除外出环356上入 队的描述符中存储的缓冲器指针随后可被传送到适当的空闲缓冲器FIFO 512。例如,当空闲缓冲器FIFO 512中条目变得可用时,CPU 230可将描 述符从删除外出环356撤出。在这种情况下,出队的描述符的中的缓冲器 指针420随后可被CPU通过将缓冲器指针加入空闲缓冲器FIFO上来"循 环利用"。或者,当FIFO中条目变得可用时,DMA控制器510可将描述 符从删除外出环传送到空闲缓冲器FIFO。图6是被配置为存储可由链接列表遍历器526搜索的多个链接列表的 散列表600的示意性框图。散列表包含2"个散列表条目610,每个条目与 唯一散列表索引620相关联,并且被配置为引用相应的链接列表例如在存 储器250中的存储器位置的列表指针值630。或者,散列表条目可以不存 储列表指针值630,而是被配置为直接存储其引用的链接列表的第一条 目。如果散列表条目的引用的列表不包含任何列表条目600,即引用的链 接列表为"空",则散列表条目的列表指针值630可等于预定的"空" 值。
另一方面,每个"非空"链接列表包括一个或多个条目650,这些条 目包含签名信息652以及流ID值654和DE出环ID值656等。每个目的 地外出环ID值对应于片上存储器350中的外出描述符环354-356中的相应 的一个。更具体而言,预定的目的地外出环ID值656 (例如"3")对应 于删除外出环356,剩余的目的地外出环ID值(例如"1"和"2")对应 于相应的外出描述符环354。在操作中,链接列表遍历器526利用包含在 其存储器地址由散列条目地址生成器530生成的散列表条目610中的列表 指针630在散列表600中定位链接列表。然后,链接列表遍历器顺序遍历 ("走过")列表的链接列表条目650,直到它识别出包含分组的签名信 息652的匹配条目,或直到到达列表末尾。
图7是示出在中间网络节点200中可以执行以便在DoS分组能被转发 到CPU 230之前识别DoS分组的步骤序列的流程图。序列开始于歩骤 700,并且进行到歩骤704,在该步骤中,分组数据在网络接口 210处被接 收到。在步骤708,分组数据被转发到系统控制器300,系统控制器300 进而又在步骤712中将分组数据转发到存储器250中的一个或多个缓冲器 242。在步骤716,网络接口将与存储接收到的分组数据的数据缓冲器242 相对应的分组描述符加入到与该接口相关联的进入描述符环352中。
在步骤720,网络接口 210确定是否接收到分组160的结束。如果尚 未接收到分组结束,则序列返回步骤704。否则,在步骤724,网络接口 210向HWA模块500中的DMA控制器510发送中断。中断包括指示哪个 进入描述符环352存储接收到的分组的描述符的进入描述符环ID值等。响应于接收到中断,DMA控制器从进入描述符环取得分组的描述符。值
得注意的是,在将描述符从进入描述符环撤出后,DMA控制器510用从 与接收到分组的网络接口相关联的空闲缓冲器FIFO 512获取的空闲缓冲器 描述符替换出队的描述符。DMA控制器还取得接收到的分组的头部中的 一个或多个,例如其数据链路、网络或传输层头部。在步骤728, DMA控 制器510将分组的描述符、头部数据和进入描述符环ID值转发到HWA模 块500中的流分类器520。
在步骤732,流分类器中的分组标识符引擎522识别在网络接口 210 处接收到的数据分组160的类型。在步骤736,基于识别出的分组类型, 从分组的描述符和头部中的预定的一组字段中提取签名信息。例如,签名 信息可包括TCP端口号、IP地址、协议版本等等。在步骤740,提取出的 签名信息被转发到散列条目地址生成器530,在该生成器中,散列函数单 元532例如利用CRC 32散列函数之类的来计算签名信息的散列。签名信 息的散列被用于创建散列表600中的索引。在步骤744,索引可被添加到 散列表基本地址536,以生成散列表条目610例如在存储器250中的存储 器地址。
在步骤748,所生成的散列条目地址被转发到链接列表遍历器526, 该遍历器遍历存储在被索引的散列表条目610中的列表指针630所引用的 链接列表。搜索列表,直到找到包含分组的提取出的签名信息652的匹配 列表条目650,或者到达列表末尾。在步骤752,链接列表遍历器确定接 收到的数据分组160是否对应于新的数据流,即到达列表末尾而未找到匹 配链接列表条目650。如果接收到的分组被确定为属于新的数据流,则在 步骤756,分组的描述符被返回到DMA控制器510, DMA控制器510将 描述符转发到CPU 230以便处理。在步骤757, CPU根据路由器操作系统 260对接收到的分组160执行传统的路由选择操作。在这种情况下,执行 路由器操作系统的CPU 230可将与新数据流相对应的新的链接列表条目 650添加到散列表600。添加的链接列表条目可指定己被操作系统260分 配给流的新的流ID值654。
另一方面,如果在步骤748定位到具有匹配签名的链接列表条目,则链接列表遍历器526识别存储在匹配列表条目650中的预定位置处的流ID 值654和目的地外出环ID值656。链接列表遍历器随后将分组的描述符转 发到流分类器520中的对描述符进行重新编排格式(如果必要)的外出分 组管理器528。接下来,在步骤764,外出分组管理器将分组的描述符、 流ID值和目的地外出环ID值转发到DMA控制器510中的外出描述符 FIFO 518。
在步骤768,在描述符、流ID值和目的地外出环ID值已被加入外出 描述符FIFO 518中之后,DMA控制器确定目的地外出环ID值是否对应 于删除队列356。如果不,则在步骤772,控制器510将分组的流ID值 654和描述符加入到与目的地外出环ID值656相对应的目的地外出环354 上。然后,在步骤776, DMA控制器向CPU 230发送中断以通知CPU: 分组的描述符和流ID值己被加入到外出描述符环354上。序列在歩骤796 处结束。
如果在步骤768处分组的相关联的目的地外出环ID值656对应于删 除队列356,则在步骤780处,DMA控制器510确定在网络接口的空闲缓 冲器FIFO 512中是否有足够的可用条目用来存储分组的描述符中的缓冲器 指针420。如果有,则在步骤784,缓冲器指针被从描述符去除,并被加 入到空闲缓冲器FIFO 512上;序列在歩骤796处结束。相反,如果在歩骤 780处在空闲缓冲器FIFO 512中没有足够的可用条目,则在步骤788处, DMA控制器510将描述符加入删除队列356上。在步骤792,描述符保持 在删除队列上,直到它们包含的缓冲器指针420可被传送到空闲缓冲器 FIFO,例如,当FIFO中条目变得可用时。执行路由器操作系统260的 CPU 230可以负责将描述符从删除队列356撤出,并将它们的缓冲器指针 传送到空闲缓冲器FIFO 512。但是,本领域的技术人员将会意识到,其他 硬件和/或软件机构也可用于此目的。序列在步骤796处结束。
以上是对本发明的说明性实施例的详细描述。在不脱离本发明的精神 和范围的情况下,可以进行各种修改和添加。例如,用于过滤诸如DoS分 组这样的恶意分组的新颖技术除中间网络节点之外还可实现在其他网络节 点中。此外,本发明可以结合传统访问控制列表(ACL)和入侵检测系统(IDS)使用,以提供抵御例如DoS禾[]DDoS攻击的更强的安全性。更具
体而言,这里所描述的基于散列的流分类的灵活性使得能够检测到用传统
ACL或IDS方法无法检测到的复杂分组封装。从而,任意复杂的多组签名 信息652可被存储在其相关联的数据流已被识别为恶意数据流的链接列表 条目650。对恶意数据流的识别可以手工确定,例如由系统管理员手工确 定,以及/或者自动确定,例如由执行路由器操作系统260的CPU230自动确定。
虽然说明性实施例描述了位于片上存储器350中的进入和外出描述符 环352-356,但是本领域的技术人员将会意识到,这些描述符环也可以存 储在中间网络节点200中的(或耦合到中间网络节点200的)其他存储器 中。此外,虽然每个网络接口 210被描述为具有相应的进入描述符环 352,但是也可明确设想, 一个网络接口可以与多于一个进入描述符环相 关联,例如具有不同的优先级。类似地,虽然中间网络节点200中的每个 目的地(例如CPU 230)被描述为具有相应的外出描述符环354,但是也 可明确设想,节点200中的单个目的地可以与多个外出描述符环相关联, 例如具有不同的优先级。
还注意到,与接收到的分组160相关联的签名信息652不局限于例如 存储在分组的头部的字段中的那些值,而是可从分组的内容的其他部分或 其他相关分组信息中提取出来,所述其他相关分组信息例如是哪个接口 210接收到了分组。如上所述,分组的提取出的签名被与存储在链接列表 条目650中的签名信息652相比较,直到定位到匹配列表条目。但是,还 可以设想,链接列表条目或者可以存储对签名信息652进行散列的结果。 在这种情况下,如果其包含的签名信息652等于对分组的提取出的签名信 息进行散列的结果,则匹配列表条目被识别。
虽然是就单个散列表600来描述本发明的技术的,但是该技术也同样 适用于其中每一个按说明性实施例中所阐述的方式配置的多个不同的散列 表。例如, 一个单独的散列表600可以与中间网络节点200中的每个网络 接口 210相关联。这样,在特定网络接口处接收到的分组可根据存储在该 网络接口的相关联的散列表中的流ID值654被路由。此外,散列表600可由诸如搜索树之类的被配置为存储分组的签名信息652、流ID值654和 目的地外出环ID值656的不同的可搜索数据结构所替换。在这种实施例 中,链接列表遍历器526被适合于搜索该可搜索数据结构的搜索模块所替 换。
可以明确设想,本发明的教导可实现为软件、硬件、固件或其组合, 所述软件中包括具有在计算机上执行的程序指令的计算机可读介质。本发 明的技术因此可实现在硬件和/或软件的各种组合中。因此,本说明书只应 当以示例方式来理解,而不应当以其他方式限制本发明的范围。
权利要求
1. 一种用于网络节点的过滤在所述网络节点处接收到的恶意数据分组的方法,所述网络节点包括被配置为执行路由器操作系统的中央处理单元(CPU),所述方法包括在所述网络节点处接收数据分组;对接收到的数据分组执行基于散列的流分类,以确定所述接收到的数据分组是否是恶意数据分组;以及如果所述接收到的数据分组被确定为恶意数据分组,则在所述数据分组能被转发到所述CPU以由所述路由器操作系统处理之前抛弃所述接收到的数据分组。
2. 如权利要求1所述的方法,其中所述执行基于散列的流分类的步骤 还包括识别与所述接收到的数据分组相关联的分组类型; 提取与所述识别出的分组类型相对应的一组签名信息;以及 搜索散列表以定位所述提取出的这组签名信息。
3. 如权利要求2所述的方法,还包括手工或自动地配置所述散列表以将所述这组签名信息与数据流相关 联;以及确定与所述这组签名信息相关联的所述数据流是否对应于恶意数据流。
4. 如权利要求1所述的方法,还包括作为所述基于散列的流分类的结果,将所述接收到的数据分组与所述 网络节点中的目的地相关联。
5. 如权利要求4所述的方法,还包括确定与所述接收到的数据分组相关联的所述目的地是否是与恶意数据 分组相关联的预定目的地。
6. 如权利要求5所述的方法,还包括响应于确定与所述接收到的数据分组相关联的所述目的地是所述预定目的地,执行以下步骤:将缓冲器指针从与所述接收到的数据分组相关联的一组描述符中 去除;以及将去除的缓冲器指针存储在空闲缓冲器指针的队列上。
7. 如权利要求6所述的方法,还包括如果所述空闲缓冲器指针队列不包含足够的可用条目来存储所述去除 的缓冲器指针,则将与所述接收到的数据分组相关联的所述这组描述符存 储在删除队列上,直到在所述空闲缓冲器指针队列中有足够的条目变得可 用为止。
8. 如权利要求6所述的方法,还包括将空闲缓冲器指针从所述路由器操作系统传送到所述空闲缓冲器指针 队列。
9. 如权利要求1所述的方法,其中所述执行基于散列的流分类的歩骤被与访问控制列表或入侵检测系统结合使用。
10. 如权利要求1所述的方法,其中所述网络节点是中间网络节点。
11. 一种网络节点,包括被配置为执行实现路由器操作系统的指令的中央处理单元(CPU); 适合于接收数据分组的网络接口;具有可由所述CPU寻址的多个存储位置的存储器,所述存储位置被配置为存储-(i) 所述路由器操作系统指令的至少一部分,(ii) 用于存储接收到的数据分组的一个或多个数据缓冲器,以及(iii) 被配置为存储与所述接收到的数据分组相关联的信息的可搜索数据结构;以及耦合到所述存储器和所述CPU的系统控制器,所述系统控制器包括硬 件辅助(HWA)模块,所述硬件辅助模块被配置为在来自所述网络节点的 恶意数据分组能被转发到所述CPU以由所述路由器操作系统处理之前抛弃 所述恶意数据分组。
12. 如权利要求11所述的网络节点,其中所述可搜索数据结构是散列表。
13. 如权利要求11所述的网络节点,其中所述HWA模块包括直接存 储器访问(DMA)控制器和流分类器。
14. 如权利要求13所述的网络节点,其中所述DMA控制器包括 进入描述符先进先出(FIFO)队列,其被配置为存储引用其中存储了所述接收到的数据分组的一个或多个数据缓冲器的一组描述符;分组头部缓冲器,其被配置为存储前插在所述接收到的数据分组前的 至少一个分组头部中包含的信息;外出描述符FIFO,其被配置为存储所述这组描述符以及用于标识与 所述接收到的数据分组相关联的数据流的数据流标识(ID)值和用于标识 所述网络节点中与所述接收到的数据分组相关联的目的地的目的地值,所 述流分类器搜索所述可搜索数据结构以定位所述数据流ID值和所述目的 地值;以及空闲缓冲器FIFO,其包含为所述网络接口分配的一组空闲缓冲器描 述符。
15. 如权利要求13所述的网络节点,其中所述流分类器包括 分组标识符引擎,其被配置为基于从所述DMA控制器接收到的信息来识别与所述接收到的数据分组相关联的分组类型;签名提取引擎,其被配置为从接收自所述DMA控制器的信息中的预 定的一组字段中提取出一组签名信息,所述预定的这组字段是基于由所述 分组标识符引擎所识别出的分组类型而选择的;地址生成器,其被配置为基于所述这组签名信息生成存储器地址,所 述存储器地址对应于所述可搜索数据结构中的条目;以及搜索模块,其被配置为搜索所述可搜索数据结构以定位与所述接收到 的数据分组相关联的流ID值和目的地值。
16. 如权利要求15所述的网络节点,其中所述流分类器还包括 外出分组管理器,其被配置为将描述符从进入描述符格式重新编排成外出描述符格式。
17. 如权利要求11所述的网络节点,其中所述网络节点是中间网络节点。
18. —种包括被配置为执行路由器操作系统的中央处理单元(CPU) 的网络节点,该网络节点包括.-用于在所述网络节点处接收数据分组的装置;用于对接收到的数据分组执行基于散列的流分类以确定所述接收到的 数据分组是否是恶意数据分组的装置;以及用于在所述接收到的数据分组被确定为恶意数据分组的情况下在所述 数据分组能被转发到所述CPU以由所述路由器操作系统处理之前抛弃所述 接收到的数据分组的装置。
19. 一种包括供处理器执行的指令的计算机可读介质,所述指令用于 过滤在网络节点处接收到的恶意数据分组的方法,在所述网络节点中,中 央处理单元(CPU)被配置为执行路由器操作系统,所述方法包括在所述网络节点处接收数据分组;对接收到的数据分组执行基于散列的流分类,以确定所述接收到的数 据分组是否是恶意数据分组;以及如果所述接收到的数据分组被确定为恶意数据分组,则在所述数据分 组能被转发到所述CPU以由所述路由器操作系统处理之前抛弃所述接收到 的数据分组。
全文摘要
本发明提供了用于在诸如拒绝服务(DoS)分组这样的恶意数据分组能被转发到中间网络节点中的中央处理单元(CPU)之前自动识别和去除中间网络节点中的恶意数据分组的系统和方法。CPU的处理带宽因而不被消耗来识别恶意分组和将其从系统存储器中去除。这样,对恶意分组的处理实质上被从CPU“卸载”,从而使得CPU能够以更高效的方式处理非恶意分组。与现有实现方式不同,本发明识别具有复杂封装的恶意分组,这些分组用诸如三元内容可寻址存储器(TCAM)或查找表之类的传统技术是无法识别的。
文档编号H04L29/06GK101421991SQ200580009074
公开日2009年4月29日 申请日期2005年3月3日 优先权日2004年3月26日
发明者威廉·R·李, 特雷弗·加纳, 约翰·肯尼思·斯泰西, 马丁·W·休斯 申请人:思科技术公司