专利名称:具有拒绝服务缓解的文件服务器流水线的制作方法
具有拒绝服务缓解的文件服务器流水线
北旦 冃眾
此背景旨在提供本专利申请的基本上下文,而不旨在描述要解决的具体问题。
文件客户机可以向文件服务器投送多个待办请求,并且所投送的这些请求 中的每一个都将使用文件服务器资源,直到该请求被处理且响应被发送为止。 在不限制由客户机发送的待办文件操作请求的数量的情况下,文件服务器自己
遭受拒绝服务(DoS)攻击的危险。阻止客户机连接锁定过多服务器资源的最 简单方式是对待办操作的数量施加小的、静态的限额。然而,由于为了完全利 用带宽,深操作流水线是必要的,所以,尤其是在具有高等待时间连接的情况 下,此方法限制了性能。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,
也不旨在用于限定所要求保护的主题的范围。
公开了在服务器上使用信用度来计量带宽分配的方法。该方法可以从客户 机接收数据请求,对该数据请求做出响应并确定客户机的数据请求是否超过该 客户机的当前数据分配信用度限额。使用往返时间,该方法可以计算客户机的 连接吞吐量,并且如果服务器有资源备用、该客户机正积极地使用当前允许的 流水线深度以及网络连接等待时间和带宽指示需要更深的流水线来达到饱和, 则可以增加该客户机的数据分配信用度限额。如果服务器没有资源备用,该方 法可以减少客户机的当前数据分配信用度限额。
附图
图1是可根据各权利要求来操作的计算系统的框图;图2是使用信用度在服务器上计量带宽分配的方法的流程图。 图3是计量带宽的优点的图示。
描述
尽管以下正文阐明众多不同实施例的详细描述,但是应当理解,该描述的 法律范围由本发明所附的权利要求书的言辞来限定。该详细描述应被解释为仅 是示例性的,且不描述每一可能的实施例,因为描述每一可能的实施例即使不 是不可能的也是不切实际的。可使用现有技术或在本申请提交日之后开发的技 术来实现众多替换实施例,而这仍落入权利要求书的范围之内。
还应该理解,在本专利中,除非使用句子"如此处所用,术语'_'特此
被定义为意指......"或者类似句子来明确地定义一个术语,否则不管是明确地
还是含蓄地,都没有限制该术语意义超出其平常或普通意义的意图,并且,这 -术语不应该被解释为被限制在基于本专利的任何部分中(除了权利要求书的 语言之外)所做的任何陈述的范围中。就本专利所附的权利要求书中所述的任 何术语在本专利中以与单数意义相一致的方式来引用而言,这是为简明起见而 如此做的,仅仅是为了不使读者感到混淆,且这类权利要求术语并不旨在隐含 地或以其它方式限于该单数意义。最后,除非一权利要求要素是通过叙述单词 "装置"和功能而没有叙述任何结构来定义的,否则任何权利要求要素的范围并
不旨在基于35 U.S.C. §12第6段的应用来解释。
图i示出在其上可实现用于所要求保护的方法和装置的步骤的系统的合 适的计算系统环境100的示例。计算系统环境100仅为合适的计算环境的一个 示例,并不旨在对本权利要求的装置的方法的使用范围或功能提出任何局限。 也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其 组合有任何依赖性或要求。
所要求保护的方法和装置的步骤可运行于多种其它通用或专用计算系统 环境或配置。适合在本权利要求的方法或装置中使用的公知的计算系统、环境 和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上 型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、 网络PC、小型机、大型机、包括上述系统或设备中的任一个 分布式计算机环境等。
所要求保护的方法和装置的步骤可在诸如程序模块等由计算机执行的计 算机可执行指令的一般上下文中描述。 一般而言,程序模块包括执行特定任务 或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。这些方法 和装置也可以在其中任务由通过通信网络链接的远程处理设备来执行的分布 式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储 设备在内的本地和远程计算机存储介质中。
参见图1,用于实现要求保护的方法和装置的各步骤的示例性系统包括计
算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理 单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处 理单元120的系统总线121。系统总线121可以是数种类型的总线结构中的任 何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结 构中的任一种的局部总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能由计 算机110访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不 可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通 信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程 序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动 和不可移动介质。计算机存储介质包括,但不限于,RAM、 ROM、 EEPROM、 闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、 磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以 由计算机110访问的任何其它介质。通信介质通常以诸如载波或其它传输机制 等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据, 并包括任意信息传送介质。上述中任一组合也应包括在计算机可读介质的范围 之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质, 如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入/输出系 统133 (BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基 本例程,它通常储存在ROM 131中。RAM132通常包含处理单元120可以立即访问和/或目前正在其上操作的数据和/或程序模块。作为示例而非局限,图
1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存 储介质。仅作为示例,图l示出了对不可移动、非易失性磁介质进行读写的硬 盘驱动器140,对可移动、非易失性磁盘152进行读写的磁盘驱动器151,以 及对诸如CD ROM或其它光学介质等可移动、非易失性光盘156进行读写的 光盘驱动器155。硬盘驱动器141通常由不可移动存储器接口,诸如接口 140 连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器 接口,诸如接口 150连接至系统总线121。
以上描述和在图1中示出的驱动器及其相关联的计算机存储介质为计算 机110提供对计算机可读指令、数据结构、程序模块和其它数据的存储。例如, 在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序 模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、 其它程序模块136和程序数据137相同,也可以与它们不同。操作系统144、 应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号 是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和 定点设备161 (通常称为鼠标、跟踪球或触摸垫)向计算机20输入命令和信息。 这些和其它输入设备通常由耦合至系统总线的用户输入接口 160连接至处理单
元120,但也可以由其它接口和总线结构,诸如并行端口、游戏端口或通用串 行总线(USB)连接。监视器191或其它类型的显示设备也经由接口,诸如视 频接口 190连接至系统总线121。除监视器以外,计算机也可以包括其它外围 输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口 190连接。
计算机110可使用至一个或多个远程计算机,如远程计算机180的逻辑连 接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、 网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110 描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所 示逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但也可以包括其 它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中
9是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连 接至LAN 171。当在WAN联网环境中使用时,计算机IIO通常包括调制解调 器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器 172可以是内置或外置的,它可以经由用户输入接口 160或其它适当的机制连 接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或 其部分可被储存在远程存储器存储设备中。作为示例而非局限,图l示出了远 程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例 性的,且可以使用在计算机之间建立通信链路的其它手段。
图2示出使用信用度在诸如服务器等计算机100上计量带宽分配的方法。 服务器具有有限的响应请求的能力。由于此限制,问题可能产生。例如,恶意 用户可以向服务器做出超出服务器的能力的请求来发起服务拒绝攻击。在另--示例中,如果没有采取在许多用户之间共享服务器的能力的步骤,则用户可能 能够垄断该服务器。图3可以示出样本客户机305和服务器310。该客户机305 传送请求315,而该服务器310传送响应320。
以下方法及其替换方法通过考虑特定服务器310资源、连接变量以及客户 活动模式来给予客户机合适深度的流水线来解决此问题。具体地,所允许的客 户机流水线深度仅在以下情况时增加l)服务器拥有资源备用;以及2)该客 户机正积极使用当前所允许的流水线深度;以及3)网络连接等待时间和带宽 指示需要更深的流水线来达成饱和度。结果,可以通过使用服务器310资源信 息、网络连接信息、以及客户机活动模式来确定扼流来动态地对文件服务器310 操作扼流。更具体地,给定服务器310、连接、以及客户机信息,该方法可以 用- 种在需要时在最大化流水线深度和性能的同时减少拒绝服务机会的方式 动态地确定每个客户机的信用度限额。
在框200,可以从客户机处接收数据请求。可以在例如服务器310等计算 机上接收该请求。在框210,该请求的接收者可以对该数据请求做出响应。例 如,服务器310可以传送与框200中的请求相关的数据。如果服务器310正忙, 则它可以发送它正忙的消息。其它响应也是可能的。
在框220,确定客户机的数据请求是否超过该客户机的当前数据分配信用度限额。文件服务器资源可以按照"信用度"来计量,其代表了还未被完成的 待办工作项目。每一信用度可以代表来自客户机的请求数据的最大数量(例如,
64KB)以及跟踪该请求的处理的服务器专用资源。服务器消息块("SMB") 2.0文件共享协议提供分配信用度的机制。
文件服务器310可以通过允许每一客户机使用特定的最大数量信用度来 控制来自客户机的待办请求的数量。任何超过此限额的请求会失败并可以终止 客户机到服务器310的连接。通常,此最大流水线深度是不仅限制拒绝服务机 会,还限制并发性和性能的小的、静态的值。
随着网络连接的带宽延迟产品增加,可能需要更深的流水线来完全利用带 宽。例如,如果-…连接具有IO毫秒的往返时间(RTT)以及125兆字节/秒的 带宽,应用程序协议必须平均每轮往返传输1.25兆字节来完全利用可用的带 宽。如果该应用程序协议的流水线深度少于此值,它将不能每轮往返传输足够 的数据来利用它的带宽。图3可以示出更深流水线的好处。
每一客户机可以从它的数据分配信用度限额的默认值开始。通过调整该信 用度限额,该服务器310能够在确保拒绝服务攻击不成功的同时确保最大化带 宽分配。理想地,该默认值可以使典型的带宽延迟产品饱和。例如,使用10 毫秒往返时间(RTT)的1千兆比特每秒连接需要1.25兆字节的待办数据,其 等于大约二十个64KB信用度。在一个实施例中,可以通知该客户机它的当前 信用度限额。
在框230,可以为客户机计算连接吞吐量。 一般而言,吞吐量可被计算为, 在目的地正确接收到的数据分组(或包含在数据分组中的比特)的数量除以数 据分组被接收所花的时间。在一个实施例中,可以在每次花费了整个信用度窗 口时计算连接的吞吐量。例如,如果客户机拥有IO信用度并且第1和第11个 SMB请求之间的时间间隔是100毫秒、其中每一信用度可以代表最多64KB的 数据,则该连接吞吐量被计算为在0.1秒中640KB、或6.4兆字节/秒。此吞吐 量可以具有下限值来防止恶意客户机通过模拟非常低的初始吞吐量来获取信 用度。该下限值应该低到足以满足最差的所支持的往返时间("RTT")。例 如,如果该方法适用于2秒的RTT连接,并且默认信用度限额是二十个64KB 信用度,则施加的下限吞吐量应该不高于每2秒1.28兆字节,或640KB/秒。否则,此类连接将不能够在被给予更多信用度的情况下展示出更高的计算出的 吞吐量,因为该下限值将高于它们的真正最大吞吐量。同样,下限吞吐量自然 地防止小控制服务器消息块不必要地贡献更深的流水线。
在框240,可以确定服务器是否具有额外的可用资源备用。在一个实施例
中,具有可用或备用资源意味着具有足够的存储器来跟踪请求并保持传入数 据。在另一实施例中,具有可用资源可以意味着具有跟踪请求并保持传入数据 所需的被特别分配的数据结构。
在框250,如果服务器具有资源备用,并且客户机正积极地使用当前所允 许的流水线深度,且网络连接等待时间和带宽指示需要更深的流水线来达成饱 和度,则可以增加该客户机当前的数据分配信用度限额。确定客户机是否正积 极使用当前所允许的流水线深度可以意味着该连接的吞吐量在假定上次信用 度增加的情况下已经增加了预期数量的给定百分比(例如50%)。例如,如果 上次将连接的限额从20增加到40,并且当时的吞吐量是100kB/秒,则该连接 必需达到至少150kB/秒以便有资格进行另一次增加。
在框260,如果服务器310没有资源备用,则可以减少客户机的当前数据 分配信用度限额。如相对于框240所述,资源可以涉及跟踪并保持传入数据所 需的存储器和被特别分配的数据结构。
在操作中,可以从具有最大数量的信用度的连接中减少客户机的当前数据 分配信用度限额。在另一实施例中,可以在所有客户机之间成比例地减少信用 度。还可以存在客户机可以保持在其之上的信用度下限。此外,在减少客户机 的当前数据分配信用度限额时,还可以或者异步地或者在下一 SMB响应中通 知客户机它的信用度已经被减少。此外,可以在传输级对传入请求扼流来遵守 当前信用度限额。
如果流水线满了 (前一深度),则超过新信用度限额的传入请求可以是失 败的。这允许信用度改变时网络上的任何待办请求被优雅地处理。
在另一实施例中,可以尽可能快地为受影响的连接完成当前正被处理的数 据请求来减少连接的资源使用。例如,可以立即触发待决改变通知请求来释放 它们的服务器资源。此外,超出新信用度限额的连接资源可在其变为可用时被 释放。此算法的效果可以是如下所述
所有连接可以流水线处理足够的数据来使典型带宽延迟产品连接饱和; 看上去可以从更高的信用度获得真正好处的连接将接收到更高的信用度。 这允许高等待时间和/或高带宽连接最终使它们的网络容量饱和;以及
恶意客户机无法简单地获取服务器310资源,并且无法永久地锁定它们。 该客户机可以通过以与合法用户相同的方式执行大量工作来取得额外的服务 器310资源一服务器无法区分这两种做真正工作的情况。在最差的情况下,恶 意客户机可以通过持续在模拟的高等待时间连接上执行工作来逐渐获取服务
器资源。如果服务器310确定资源少或其它客户机更需要现有资源,则这样的 客户机将不能取得额外资源。如果服务器310想要回收资源,则该客户机还将 失去它的额外资源并被扼流。
尽管以上正文陈述了众多不同实施例的详细描述,但是应当理解,本专利 的法律范围由本专利所附的权利要求书的言辞来限定。该详细描述应被解释为 仅是示例性的,且不描述每-可能的实施例,因为描述每一可能的实施例即使 不是不可能的也是不切实际的。可使用现有技术或在本申请提交日之后开发的 技术来实现众多替换实施例,而这仍落入权利要求书的范围之内。
由此,可在此处所描述和示出的技术和结构上作出许多修改和变化而不脱 离本权利要求的精神和范围。因此,应当理解,此处所描述的方法和装置仅是 说明性的,且不限制本权利要求的范围。
权利要求
1.一种在服务器上使用信用度来计量带宽分配的方法,所述方法包括从客户机接收数据请求200;对所述数据请求做出响应210;确定所述客户机的数据请求是否超过所述客户机的当前数据分配信用度限额220;计算客户机的连接吞吐量230;如果符合以下条件,则增加所述客户机的当前数据分配信用度限额250所述服务器具有资源备用240;以及所述客户机正积极使用当前所允许的流水线深度;以及网络连接等待时间和带宽指示需要更深的流水线来达成饱和度;以及如果符合以下条件,则减少所述客户机的当前数据分配信用度限额260所述服务器不具有资源备用。
2. 如权利要求1所述的方法,其特征在于,所述客户机正积极使用当前所 允许的流水线深度还包括,所述连接的吞吐量在在假定上次信用度增加的情况 下已经至少增加了预期数量的给定百分比250。
3. 如权利要求2所述的方法,其特征在于,所述给定百分比是百分之五十。
4. 如权利要求1所述的方法,其特征在于,具有可用资源还包括跟踪请求 并保持传入数据的足够的存储器240。
5. 如权利要求4所述的方法,其特征在于,具有可用资源还包括具有跟踪 请求并保持传入数据所需的被分配的数据结构240。
6. 如权利要求1所述的方法,其特征在于,减少客户机的当前数据分配信用度限额还包括从具有最大数量的信用度的连接中取走信用度260。
7. 如权利要求6所述的方法,其特征在于,减少客户机的当前数据分配信 用度限额还包括,或者异步地、或者在下一SMB响应中,让所述客户机知道 它的信用度已经被减少260。
8. 如权利要求6所述的方法,其特征在于,还包括在传输级对传入请求进 行扼流来遵守所述当前信用度限额310。
9. 如权利要求8所述的方法,其特征在于,还包括如果前一深度的全流水 线已经被处理,则开始使超过新的信用度限额的传入请求失败260。
10. 如权利要求6所述的方法,其特征在于,还包括为受影响的连接尽 可能快地完成当前正被处理的数据请求来减少连接的资源使用310。
11. 如权利要求10所述的方法,其特征在于,还包括如果存在客户机 的待决改变通知请求,则立即释放为此客户机保持的服务器资源310。
12. 如权利要求6所述的方法,其特征在于,还包括在超过新的信用度 限额的连接资源变为可用时将它们释放260。
13. —种用于存储计算机可执行指令的计算机可读存储介质,所述计算 机可读介质包括用于使用信用度在服务器上计量带宽分配的计算机可读指令, 所述指令包括用于以下步骤的计算机可执行指令确定客户机的数据请求是否超过所述客户机的当前数据分配信用度限额220;计算客户机的连接吞吐量230;如果符合以下条件,则增加所述客户机的当前数据分配信用度限额250: 所述服务器具有资源备用240;以及所述客户机正积极使用当前所允许的流水线深度;以及 网络连接等待时间和带宽指示需要更深的流水线来达成饱和度;以及如果符合以下条件,则减少所述客户机的当前数据分配信用度限额260:所述服务器不具有资源备用。
14. 如权利要求13所述的计算机可读存储介质,其特征在于,所述客 户机正积极使用当前所允许的流水线深度还包括,所述连接的吞吐量在假定上 次信用度增加的情况下己经至少增加了预期数量的百分之五十250。
15. 如权利要求13所述的计算机可读存储介质,其特征在于,所述具 有可用资源还包括跟踪请求并保持传入数据的足够的存储器和被分配的数据 结构240。
16. 如权利要求13所述的计算机可读存储介质,其特征在于,所述减 少客户机的当前数据分配信用度限额还包括从具有最大数量的信用度的连接 中取走信用度260。
17. 如权利要求13所述的计算机可读存储介质,其特征在于,还包括 用于以下步骤的计算机可执行指令在传输级对传入数据进行扼流来遵守当前 信用度限额310,并且如果前一深度的全流水线已经被处理,则开始使超过新 的信用度限额的传入请求失败260。
18. 如权利要求13所述的计算机可读存储介质,其特征在于,还包括 如果存在客户机的待决改变通知请求,则立即释放为此客户机保持的服务器资 源310的计算机可执行指令。
19. 一种包括根据可执行计算机可执行指令配置的处理器、用于存储计算机可执行指令的存储器以及输入一输出设备的计算机系统,所述计算机可执 行指令包括用于以下步骤的指令确定客户机的数据请求是否超过所述客户机的当前数据分配信用度限额220;确定所述客户机的数据请求是否超过所述客户机的当前数据分配信用度限额;计算客户机的连接吞吐量230;如果符合以下条件,则增加所述客户机的当前数据分配信用度限额250: 所述服务器具有资源备用,其中具有可用资源还包括跟踪请求并保 持传入数据的足够的存储器和数据结构;以及所述客户机正积极使用当前所允许的流水线深度,其中所述客户机 正积极使用当前所允许的流水线深度还包括连接的吞吐量在假定上次信用度 增加的情况下己经增加了预期数量的至少百分之五十;以及网络连接等待时间和带宽指示需要更深的流水线来达成饱和度;以及如果符合以下条件,则减少所述客户机的当前数据分配信用度限额260:所述服务器不具有资源备用。
20.如权利要求19所述的计算机系统,其特征在于,还包括用于以下步骤的计算机可执行指令在传输级对传入数据进行扼流来遵守当前信用度限额310,并且如果前一深度的全流水线已经被处理,则开始使超过新的信用度 限额的传入请求失败260。
全文摘要
公开了在服务器上使用信用度来计量带宽分配的方法。该方法可以从客户机接收数据请求,对该数据请求做出响应并确定客户机的数据请求是否超过该客户机的当前数据分配信用度限额。使用往返时间,该方法可以计算一客户机的连接吞吐量,并且如果服务器拥有资源备用、该客户机正积极地使用当前允许的流水线深度以及网络连接等待时间和带宽指示需要更深的流水线来达成饱和度,则可以增加该客户机的数据分配信用度限额。如果服务器没有资源备用,该方法可以减少客户机的当前数据分配信用度限额。
文档编号G06F21/00GK101647025SQ200880010105
公开日2010年2月10日 申请日期2008年2月28日 优先权日2007年3月26日
发明者D·克鲁斯, J·C·福勒, M·乔治, R·加纳帕锡 申请人:微软公司