NetBouncer防御DDoS攻击

目录

NetBouncer论文翻译

摘要

1      介绍

2      目前的DDoS防护与合法性过滤的DDoS防护(NetBouncer)的对比

2.1      相关工作

2.2      基于客户端合法性的DDoS防护

2.3      策略与合法性测试的例子

3      集成合法性与Qos

3.1      合法性的权重和成本

3.2      基于合法性权重和服务优先级的服务类

3.3      双层自适应流量管理框架

4      NetBouncer硬件原型的架构

4.1      英特尔IXP1200网络处理器概述

4.2      原型架构

4.3      支持高速高效的IP地址查找

5      结论和后续的工作

6      微软介绍

7      文章总结

7.1      是否实现了路径检测?

7.2      功能?对哪些协议或者哪些层实现了防御DDoS攻击??

7.3      性能,硬件原型是否可以借鉴?


DOS和DDOS

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。 这种攻击方式可分为以下几种:

通过使网络过载来干扰甚至阻断正常的网络通讯;

通过向服务器提交大量请求,使服务器超负荷;

阻断某一用户访问服务器;

阻断某服务与特定系统或个人的通讯。

DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当被攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了 - 目标对恶意攻击包的"消化能力"加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果。

这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。你理解了DoS攻击的话,它的原理就很简单。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。

高速广泛连接的网络给大家带来了方便,也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。

论文地址:

http://napl.gmu.edu/pubs/JPapers/ThomasMarkJC-McAfee04.pdf

NetBouncer论文翻译

摘要

NetBouncer是针对ddos提供实用和高性能的防护方法和一系列技术。NetBouncer过滤和减轻DDoS的攻击方法的核心创新点在于从非法流量中区分合法流量,以便只丢弃非法流量。 特别是,这允许启用NetBouncer的网络来区分由于闪存拥塞造成的DDoS拥塞。这个与其他DDoS防护技术相比,诸如基于过滤和拥塞控制的技术,这些技术必然导致合法流量(请求)的丢失。它具有独特的优势。

NetBouncer方法的特点是基于端点的DDos解决方案。NetBouncer在主机和服务器前可能存在的潜在阻塞点或者瓶颈处提供本地化保护。NetBouncer试图在最近的瓶颈上游阻止流量靠近受害机。NetBouncer技术的直接表现形式是基于网络处理器技术的对在线设备的高速数据包处理。但是,NetBouncer技术的长期发展,采用和集成可能是商用高速路由器的背板/快速路由器。

1      介绍

区分合法客户端,流控子系统会提供不同的带宽分配和速率限制,防止被合法流量淹没。

Netbouncer的创新点体现如下:

1. 使用无状态合法性测试和随后对流量访问控制的强制执行来测试网络流量合法性的新技术。

2.对非常庞大的合法性列表进行高效查找和更新的算法

3. 服务质量(QoS)相关的流量管理方案,基于客户端合法性和服务优先级为各种类型的流量提供速率限制和带宽管理。

4. 硬件辅助的高速数据包处理技术和使用网络处理器实现上述功能的架构,以便提供防止DDoS攻击的防御,这些攻击导致最小的性能降级(通过数据包吞吐量,延迟等来测量)。

我们的初步研究产生了基于Linux操作系统的NetBouncer软件原型。 本文报告了我们目前使用领先的网络处理器技术开发高速硬件原型的努力。

2      目前的DDoS防护与合法性过滤的DDoS防护(NetBouncer)的对比

2.1      相关工作

为了应对不断增长的DDoS问题,我们看到了各种供应商提供的解决方案以及面向研究的解决方案和原型的出现。商用路由器制造商建议采用各种基于流量采样,监控和过滤的技术来检测和缓解DDoS攻击。这些包括设置计数器和访问列表以监控流量模式和过滤不需要的数据包,伪造IP地址的入口和出口过滤以及跨路由器和接口的传入流量的手动跟踪[6,7,8]。

最近,我们见证了来自新星公司(或所谓的DDoS供应商)的一些解决方案[2,3,4]。 这些解决方案通常使用NetFlow [9]或串联传感器设备等技术从路由器导入传入流量跟踪和统计信息。 然后将这些跟踪和统计信息与众所周知的DDoS攻击特征和基线流量配置文件进行比较,以识别潜在的DDoS攻击条件,并向路由器推荐过滤器和速率限制参数。这些产品的优势在于它们可以为网络提供更多针对DDoS的可见性。但是,这些流量监控和过滤方法的缺点是,当通过过滤器和速率限制机制减轻攻击时,也可能丢弃某些比例的合法流量(如[5]中所述)。

用于DDoS缓解的其他技术包括基于主机和基于中间的方法。 基于主机的方法在主机内部本地使用更好的资源管理技术,防止由于资源不足而出现的DDoS漏洞。示例包括更好的连接和超时管理(例如TCP连接表)以及通过客户端谜题[10]和拥塞控制机制减慢或限制发件人。基于中介的方法依赖于攻击者和目标主机之间的中间设备。中间设备可以通过代表服务器协商连接来拦截和终止可疑连接请求或提供有状态连接绑定。后者的一个例子是运行IOS操作系统的许多CISCO设备上的TCP intercept功能[8]。

目前正在寻求的DDoS解决方案的研究方向包括通过网络设备的协作自动跟踪攻击(以便尽可能地阻止攻击[23])、协同拥塞控制[17]以及使用路由信息来跟踪攻击[22]。 但是,此类跟踪可能需要来自多个路由器,ISP和网络管理员的协作。 此外,在及时交换攻击信息之前,必须克服许多法律和后勤方面的挑战和隐私问题。

2.2      基于客户端合法性的DDoS防护

上面调查的商业解决方案有一些局限性。例如,基于访问过滤器和速率限制的方法将不可避免地和非法流量一起丢弃一定比例的合法流量,因为它们通常无法区分基于DDoS的泛洪与大量合法用户可能从服务器请求服务的闪存拥塞情况。基于中介的方法只是将DDoS漏洞从目标主机移动到中间主机。基于网络范围拥塞控制,协同攻击跟踪等的方法具有长期潜力,但是目前的形式不会扩展并面临成本效益和易于部署的限制,需要面对技术、法律和组织挑战。 因此,NetBouncer提供了一个实用的,易于以本地化方式部署的,基于端点和短期的DDoS解决方案。它可以被视为为其他解决方案提供补充方法。

NetBouncer方法的关键创新是能够区分合法流量和非法流量。如果我们更仔细地研究这个问题,我们就会认识到,确定流量是否合法,反过来要求我们确定流量的来源(客户端)本身是否与流量目标相关(服务器)。通常,确定合法性可能需要我们抽象和分析协议栈的一个或多个级别的流量。因此,我们的方法依赖于一系列合法性测试,每个测试针对特定协议层识别的特定类型的流量。因此,流量的来源和验证的客户端身份的相关概念将取决于协议层(例如,网络层,应用层等)和应用程序或服务(ftp,真实视频等),进行测试。因此,在网络层进行合法性测试以确定由其IP地址标识的主机或路由器的有效性是有意义的。在传输层,合法性测试可以旨在验证TCP连接。在应用层,我们的合法性测试将尝试确定有效的应用程序会话以及用户进程和标识符。根据具体情况和应用,我们可以连续申请各种协议层和应用程序级别概念(如会话)的测试组合。

我们在这个项目中开发的合法性测试都受到一些共同原则和设计目标的支配。 其中包括:

1.网络协议或客户端和服务器上的配置不需要进行任何更改。

2.不需要管理员干预即可实时进行合法性测试。

3. NetBouncer设备的整体运行和合法性测试的执行必须是状态安全的。 状态安全的概念可以非正式地定义为一种属性,可以保证非法流量的比例和速率不会直接引起NetBouncer的状态消费数量和速率。 这可以防止合法性测试本身的实施容易受到状态消耗DDoS攻击的攻击。

2.3      策略与合法性测试的例子

我们正在进行的研究使我们相信至少存在三类合法性测试。 具体来说,这些包括基于数据包的测试,基于流的测试和基于服务的测试[w1] 。 为了理解这些之间的具体和有时微妙的差异,让我们首先更详细地定义合法性测试的概念。 特别地,我们模拟了所有合法性测试的公共元素。

定义:合法性测试t是一个六元祖:

<assertion,legit-id, pre-scope, pre-state, post-state, post-scope>

assertion: 测试成功通过的合法性断言

legit-id: 是断言中的标识符,该标识符经过验证并随后用于处理请求。

pre-scope: 应用测试的实体(例如数据包,协议流,应用程序会话等)。

pre-state: 维护和检查的状态,以验证合法性断言。 这种状态信息的一个很好的例子是响应客户端被质询后返回的消息的认证和完整性检查信息。

post-state: 合法性建立后需要的状态,并被维护,检查和更新以处理合法数据流量。 通常,post-state将包括legit-id和其他格式的一些统计信息。

post-scope: 这指的是刚刚验证的合法性断言和标识符适用的实体

 

2.3.1        基于数据包的测试

简言之,决定数据包能否通过,仅仅是检查数据包的内容。尤其是新来一个数据包,而且之前的数据包没有可供查询的信息的时候。

在网络层的源主机地址验证

许多DDoS攻击使用欺骗性的和虚假的源IP地址,使得难以追踪攻击的来源。 因此,可以用来防止或阻止某些类型的DDoS攻击的一种技术是使用合法性测试来确定即将到来的请求中的IP地址是否与活动主机相关联。 一个这样的测试基于ICMP echo消息的创造性使用

我们意识到基于ICMP echo的测试不是很可靠,因为许多主机,防火墙和路由器被配置为不响应回显请求; 然而,这提供了一个简单的思路说明。

NetBouncer设备拦截任何发往服务器的传入数据包。如果数据包的来源被识别为不在合法性列表中,则NetBouncer将通过向该源发送ICMP echo请求来质询数据包(需要小于MTU)的来源。但是,为了避免在NetBouncer中存储任何状态,原始传入请求数据包将封装在传出ICMP回显请求的有效负载中。如果请求的原始发件人是有效主机,则合法性测试主机可以期望返回ICMP回显应答包(反ping能ping通?肉鸡也能ping通,所以需要验证此类回复并验证其完整性)。但是,我们需要验证此类回复并验证其完整性。为了实现这一点,ICMP回应请求的有效载荷还包括使用密钥散列函数计算的散列消息认证码(HMAC),并将如下字段作为输入[w2] :数据包标记,源IP地址,有效负载长度,到期时间和现时,输入请求数据包。如果接收到ICMP回显应答并且可以验证HMAC,则验证ICMP回显应答的真实性和完整性,并且将提取的传入请求数据包的源IP地址添加到由已经验证的源地址组成的合法性列表中。 HMAC是pre-state[w3] 的一个例子。该测试的详细消息在图2中给出,其中“hk”代表使用密钥k的HMAC函数h。

通过出口数据包标记和入口过滤进行反smurf过滤

一些DDoS攻击(例如smurf攻击)欺骗受害者的源地址,并利用放大网络用诸如ICMP回显应答之类的消息来压倒服务器。为了防范此类攻击,NetBouncer以加密方式对来自内部网络可信端的ICMP-echo请求进行加密签名和标记,并且只有在包含先前插入的标记时才接受来自不受信任方的ICMP-echo回复。这个标签基本上是pre-state。 因此,可以过滤和丢弃由Smurf攻击中的不可信源生成的大量ICMP回应答复。 尽管我们已经在smurf样式攻击的环境中讨论了该测试,但是这种出口数据包标记与入口过滤相结合的方案可以用于任何仅在响应先前发送的外出请求而在网络上接收传入数据包的情况。

 

2.3.2        基于流的测试

我们将“流”定义为来自特定协议连接/会话(在网络堆栈中的第4层传输层)的数据包流,因此具有相同的(源地址,源端口,目的地址,目的端口)属性。 与基于数据包的测试相反,post-state不包含在单个数据包内,并且更明显地,单个post-state适用于属于流的整个数据包流。

传输层的TCP连接请求验证采用无状态的TCP SYN cookie

此第4层测试通过提供验证TCP连接请求的合法性的方法,为基于TCP SYN泛洪的拒绝服务攻击提供防御。 NetBouncer基本上拦截了TCP连接建立请求。在传统的TCP实现中,只要收到第一个TCP SYN数据包,就会为连接分配状态。 这违反了状态安全

为了详细说明,NetBouncer拦截SYN数据包并生成私有可循环使用的密钥和TCP / IP头中各个字段的加密校验和(cookie)。此cookie作为NetBouncer生成的初始序列号存储在传出的SYN / ACK数据包中(此cookie实际上是pre-state)。然后将SYN / ACK返回到SYN数据包的源地址。当ACK(来自客户端对SYN / ACK的响应)到达NetBouncer时,如果cookie(pre-state)验证,则为连接实例化状态。然后,基于ACK数据包和存储的cookie中的信息重新创建原始SYN以及客户端提供的序列号,并将其转发到原始目的服务器。但是,原始目的服务器将返回其自己的SYN / ACK服务器序列号,并且NetBouncer将完成3次握手。NetBouncer还将保留其序列号和服务器序列号之间的偏移量,允许它通过NetBouncer将TCP连接上每个数据包的序列号转换为服务器(序列号)。该偏移量和相关信息构成测试的post-state[w4] 。我们的解决方案是对[1]提出的SYN cookie思想的改编。该测试的详细消息如图1所示。

如果原始SYN数据包是来自一个不活跃主机使用的欺诈ip地址发出的不实请求,则不会生成ACK数据包,并且原始SYN数据包实际上会被忽略掉。 现在,如果另一台主机使用了欺骗性地址,但是没有发送原始客户端SYN数据包的主机,主机将发送一个重置(RST)数据包,并且不会建立任何连接。 总之,这种技术允许我们以无状态方式处理TCP连接请求。 这显然是状态安全的。 仅当生成请求的主机已证明其是合法的,即它接收到SYN / ACK并且想要完成连接握手时,才保留状态。 我们的无状态方法优于有状态连接绑定或编织方法,如TCP-Interrupt [8],因为它避免了基于状态的DDoS攻击。TCP-Interrupt等方法试图更好地管理状态,但确实不是状态安全的。

 

2.3.3        应用程序和面向会话的合法性测试

与基于数据包和基于流的测试相比,第三类测试与更高级别(第4层)服务和应用程序相关。 特别是,这些测试了解应用程序级抽象和结构以及会话语义。测试合法性需要了解应用程序级别的结构和语义。因此,基于数据包和基于流的IP数据包和流级别的流量检查通常不能提供应用流量合法性的确凿证据。相反,这需要检查应用程序头。在应用程序级别测试中,pre-state可以分布在几个IP数据包上,并且应用post状态可能需要检查应用程序级头部。我们现在描述一些应用程序级合法性测试。

实际上,这类测试可以被认为是由两个子类别组成。第一个是我们所谓的结构化组合服务(SCS)。这些包括服务和协议,例如实时流协议(RTSP)。RTSP会话的结构可以被认为是一个复合结构,由许多底层的低级协议会话和连接(包括TCP,UDP和RTP等)组成。但是,确切的结构由RFC和标准确定。

第二个子类别包括特殊的组合服务(ACS)。ACS服务的结构也是一个复合结构,但不是由标准定义,而是根据环境的变化而变化。ACS服务的简单示例是用户点击网站上的URL并且服务器随后将一个或多个小程序下载到客户端机器的服务。这些小程序随后可以根据应用程序逻辑和事务结构启动附加的网络连接和服务。因此,这里的关键挑战是了解如何通过各种组件会话和应用程序交互来保留和跟踪合法性状态。

我们现在描述一些应用程序级合法性测试,但将我们的讨论限制在SCS子类别。ACS子类别目前是一项深入研究的主题,将在未来进行报道。

应用层图灵测试检测人类用户的存在

随着针对DDoS攻击的验证方法和对策变得越来越强大,我们可以预期攻击会从协议级别上升到应用程序级别。在DDoS攻击期间,将攻击者与非威胁用户区分开来至关重要。由于大多数DDoS攻击由指导大量自动攻击代理的处理程序组成[13],我们可以利用数字代理的非智能性来区分它们与智能人类用户。关键的想法是中断应用程序会话并用一个只有人类用户可以回答的问题来质询客户端主机。我们可以通过质疑代理来测试智力,这些问题/问题需要一些基本的人类智能水平来回答; 例如,“苹果是什么颜色的?”或“你在图片中看到了多少房子?”

这些是技术被用于许多历史战斗中以暴露间谍。 如果客户端正确回答了问题,则将其身份输入到允许后续访问的良好客户端列表中。为了具备筛选,必须以自动代理无法欺骗的方式进行此测试。换句话说,提出的问题应该是足够随机的,但是这些问题的答案应该需要一定程度的智能,这将使自动代理(或计算机程序)难以构建。

在我们当前的NetBouncer硬件原型中,我们已在应用程序级别完成了此测试的初始实现,并将其与HTTP / HTML集成。在该实现中,从web浏览器发起http(web)请求的用户(客户端)面临问题(即,拼图)。如果用户可以提供正确答案,则将其添加到合法性列表中。

测试的工作原理如下。 通过传入的HTTP请求,NetBouncer拦截来自客户端的连接建立TCP SYN数据包,并代表服务器以SYN / ACK数据包进行响应。 然后,客户端使用TCP ACK数据包进行响应,以完成TCP 3路握手过程,然后跟进HTTP get请求。 然后,NetBouncer通过发布HTML表单来发布质询。然而,拼图的正确答案是加密密封并与表格一起发送。如果客户端响应正确,通过比较用户提供的答案与加密密封和提取的答案进行验证,然后NetBouncer将向客户端的浏览器发送HTTP刷新请求,这将导致客户端发出第二个HTTP get请求,此时NetBouncer直接引导到服务器。个人整理流程图(文档中未给出)如下图所示。

上面讨论的测试仅代表我们在开发NetBouncer原型时的初步研究中的一小部分样本。然而,这些合法性测试的多样性应该让读者对各种协议层的复杂性和适用性以及更新的协议和应用的可能性范围有所了解。开发额外的测试以及确定给定情况和主机的测试的正确组合的算法以及应用这些测试的顺序,都代表了这项工作的活跃研究领域。关于这些问题的一些讨论如下。

 

3      集成合法性与Qos

NetBouncer方法中至关重要的新概念是将合法性,安全性和与保证关联的属性集成到服务质量(QoS)配置中。 目标是即使在DDoS条件下也为不同的服务类提供QoS。 NetBouncer将合法性权重和服务优先级纳入基于QoS的流量管理,包括速率限制和传出数据包的公平调度。 我们希望流量管理功能成为许多可以部署NetBouncer技术的环境的重要要求。

许多ISP和企业环境必须为其客户提供某些QoS保证。如果ISP即使在其网络遭受DDoS攻击时也可以提供此类保证,那么这项功能的轻松使用将是该ISP与其他ISP的分野。区分不同类别客户的电子商务环境可能希望为某些优选(高级)客户提供优质服务。例如,股票经纪人可能希望为账户余额超过一定金额的客户提供更快的响应时间和更好的网络访问(特别是在DDoS条件下)。最后,在企业环境中,人们可能希望为某些类别的服务(例如,http,视频,语音等)保留更多带宽并保证更高的数据包传输速率。

我们的目标是提供一组丰富的底层机制,以便NetBouncer可以灵活地支持基于客户端合法性和服务类的各种QoS策略。 支持这些策略需要采用包含各种速率限制和调度机制的集成方法。

3.1      合法性的权重和成本

为了管理各种成本和保证权衡,我们将每个测试与权重(w)和成本(c)相关联。测试的权重是测试“良好”的度量,而成本是测试时可能产生的费用的度量。当我们考虑表征测试的优点时,我们可以使用一个或多个标准,例如保证,可靠性,强度或难度等。因此,我们的目标是确定测试权重,作为保证、可靠性和强度的函数。即

直观地说,测试中的高度保证(或信任)应该表明测试不能轻易地被规避或妥协。这反过来又涉及实施的可靠性以及执行测试所需的消息和协议步骤的安全性。测试的可靠性涉及各种质量,包括获得一致和准确结果的能力。测试的强度与测试质疑的严格性以及所需答案的难度级别和特异性有关。这里的想法是,通过将受访者缩小到测试范围,更强有力的测试将更加确定合法性。

为了模拟合法性测试的执行成本,我们考虑了导致测试总体开销的各种因素。 我们的初步调查确定了三个明显的自变量。这些包括数据包处理,消息传输和各种计算开销。 因此,我们可以将成本表示为:

详细说明,

数据包处理成本包括处理各种报头和有效负载的开销以及队列和出队数据包的开销。 消息传输成本包括发送和接收消息的成本,其中消息可以包括一个或多个数据包。

我们还必须考虑额外的计算开销,例如涉及加密的操作。

3.2      基于合法性权重和服务优先级的服务类

我们的QoS方法的核心是服务类的概念。服务类决定了数据包的速率限制和带宽分配策略。分配给到达NetBouncer端口的数据包的服务类由以下因素确定:(1)发送数据包的源的合法性权重(2)数据包所属服务的预先分配的服务优先级。 对于每个数据包,服务类分数根据其合法性权重和服务优先级权重计算:

在制定计算服务类评分的函数时,重要的是要考虑处理发往具有高服务优先级但合法性非常低的服务的数据包的含义。特别是,不应将这些数据包分配给高服务优先级队列。 为此,为每个服务类定义了service-class-threshold。 数据包的service-class-score必须达到或超过service-class-threshold才能将其分配给相应的服务类队列。计算服务类得分的函数的初始选择是:

通常,应选择service-priority-weights,以使service-class得分间隔不重叠。 service-class得分低于最低service-class-threshold的所有数据包都将分配给默认的低优先级服务队列。 仅当系统中没有其他数据包时,才会为此队列提供服务。

3.3      双层自适应流量管理框架

NetBouncer采用双层框架,可以支持各种基于安全性的QoS策略。 第1层和第2层分别提供类间和类内流量管理。类间数据包调度提供不同服务类之间的QoS区分,而类内调度确保资源公平地分配给属于同一服务类的客户端。

在任何给定时间,可能需要安装NetBouncer来支持各种QoS策略,并且可以基于持续的网络拥塞及其对QoS的影响来自适应地修改流量管理策略。我们框架的自适应方面是指一个系统实现,它持续监视需要支持的策略,并在每个层动态提供适当的流量管理,以支持当前的策略。理想情况下,这种适应应该以自动化的方式完成,只需要最少的人力/操作员干预。

3.3.1        类间调度

严格优先级(SP)调度是提供服务区分的简单方法,但不足以为服务类提供QoS保证。 在SP下,最高优先级的服务类可以有效地保证所有可用带宽,而其余类不接收带宽保证。为了向不同的服务类提供QoS保证,我们已经调整了[14]中报告的动态速率调度(DRS)的使用。DRS允许NetBouncer系统支持各种QoS和速率限制策略。特别是,它提供了为各种服务类别设置硬件速率限制的能力,并动态调整这些速率以利用可用的额外带宽。

为了说明DRS的基本框架,请考虑两类服务:高(H)和低(L)。根据DRS,这些类别的速率受以下因素控制:

其中RH和RL是H和L类的有效服务速率,MH和ML是H和L的最小保证速率,E是可用的额外带宽。权重WH和WL分别确定将分配给H和L的E的比例。

本质的想法是每个服务类都会有最低的保证速率。直观地,需要更多带宽的服务类被分配更高的最小速率。应仔细分析后选择这些最低速率,以确保系统能够保证配给这些速率。一旦分配了最小速率M,则有效速率R被动态地计算为M,类权重W和可用的额外带宽E之和。为了确保服务类的硬件速率限制,其相关的类权重W可以设置为零。基于流量利用率和/或聚合队列长度动态地计算超额带宽E,以便确保具有严格正权重W的服务类可以使用任何可用带宽。因此,DRS适应不断变化的流量状况。

3.3.2        类内调度

类内调度在服务类内提供公平的带宽分配。让我们讨论为什么需要这样的方案。考虑有两个合法源(客户端)S1和S2已分配给同一服务类的场景。如果S1为此服务类发送95%的数据包,它将明显占用分配给服务类的带宽。从S2的角度来看,这实际上是基于带宽的拒绝服务(DoS)情况。

为解决上述问题,NetBouncer流量管理框架的第2层包括了用于服务类内带宽管理的类内加权公平排队(ICWFQ)方案。加权公平队列(WFQ)是一种数据包调度方案,通过为到达的数据包分配时间戳来实现近似的理想公平调度[16,21]。时间戳值与理想公平调度下的数据包的完成时间成比例。然后以递增的时间戳值的顺序处理数据包。已经设计了WFQ的几种变体,其实现了足够的公平性,同时还具有计算效率。WFQ及其变体的时间戳计算的基本形式如下

其中TS(i,k)和P(i,k)分别表示从第i个源到达的第k个数据包的时间戳值和数据包长度,W(i)是分配给第i个源的权重值。权重W(i)与第i个源接收的带宽份额成比例,即,WFQ调度保证第i个源将接收与W(i)成比例的最小带宽份额。从(6)可以看出,假设所有其他变量为对于两个数据包都是相同的情况下,属于具有小W(i)值的源的数据包将被分配比与较小W(i)值相关联的数据包更大的时间戳。因此,第一个数据包将在第二个数据包之前被处理。在WFQ中,变量VT(虚拟时间)表示在理想化[w5] 的公平调度器下来自第i个源的第k个数据包的归一化结束时间。被称为自时钟公平队列(SCFQ)[16]的WFQ的流行变体将变量VT设置为等于当前数据包到达时所服务的数据包的时间戳值。在繁忙时段结束时,VT重置为零。

我们的创新是ICWFQ采用公平队列方案(即WFQ或其变体之一)来保证给定服务类中的客户端在第1层分配给该类的带宽的公平份额,相对于客户端的合法性级别而言。 与第i个客户相关联的权重W(i)被设置为等于客户的合法性权重。 因此,客户端合法性被考虑到服务类中的QoS供应中。

ICWFQ的实现需要为每个服务类维护优先级队列。在这样的优先级队列中,数据包按其相关时间戳的递增值排序,其可以作为数据包描述符的一部分存储。与(合法)客户端关联的最新时间戳值必须存储在合法性列表索引的列表中。我们目前正在探索[w6] 如何在基于IXP-1200的NetBouncer硬件原型中支持ICWFQ。

4      NetBouncer硬件原型的架构

我们现在讨论在Intel IXP1200网络处理器上实现的NetBouncer硬件原型的架构。 该原型是网络透明的内联设备,具有通过光纤电缆连接的千兆输入和输出端口。我们首先概述一下我们的硬件平台。

4.1      英特尔IXP1200网络处理器概述

IXP1200芯片和网络处理器开发系统由StrongArm处理器(协处理器)和六个微引擎(控制平面和处理平面)组成。英特尔StrongArm核心处理器是一款32位RISC处理器,目前工作频率为200 MHz,可作为主通用处理器并支持控制平面。它将负责执行包括控制平面的大量信令和网络管理功能。数据和数据包处理操作的实际移动由六个运行频率为200MHz的32位RISC微引擎执行,并作为专用从处理器。每个微引擎可以通过四个独立的程序计数器,零开销上下文切换和硬件信号量来执行四个并行线程。此外,Microengine包含一个ALU和移位器,4 KB RAM控制存储器,128个32位通用寄存器和128个32位传输寄存器,用于访问SRAM和SDRAM单元。 IXP1200还包含一个用于生成48位和64位哈希键的哈希单元。 IXP1200支持两个千兆以太网端口和八个快速以太网(100 Mbps)端口。对于我们当前的原型,仅使用千兆端口。

4.2      原型架构

图3详细说明了我们当前硬件原型的架构。我们的原型仅使用两个千兆端口。粗箭头显示了架构中的快速路径-合法数据包处理和传输的路径。虚线箭头表示测试路径,该路径是处理和传输合法性检验失败的数据包以及与发送和验证合法性测试的数据包的路径。该图还显示了将各种NetBouncer数据包过滤和合法性管理功能仔细分配给可用的微引擎(标记为uE1到uE6)。从媒体访问控制(MAC)层接收,处理和发送数据包。为此,使用了各种队列。当从MAC层接收数据包时,将其存储在SRAM[w7] 中。然而,来自数据包的重要信息(例如关键报头信息)被提取并存储在称为数据包描述符的结构中。包描述符还存储指向存储包的物理SRAM地址的指针。随着数据包处理的进行,队列用于将数据包描述符从一个微引擎传递到另一个微引擎。这比将实际数据包从一个队列传递到另一个队列更有效。

让我们看一下原型上如何处理数据包的细节。我们从架构中的快速路径开始。处理从“Internet接收”微引擎(uE1)开始,读取来自MAC层的输入数据包,并将其数据包描述符存入标记为Q-fast-in的队列。标记为“Fast-Path-Manager”(uE2)的第二个微引擎使这些描述符出列,提取源地址并检查合法性列表以查看该数据包是否来自合法来源。如果源地址在合法性列表中,我们认为数据包已通过合法性测试,并且相应的数据包描述符排队到标记为Q-fast-out的队列中。标记为“受保护 - 发送”的第三个微引擎(uE3)使用来自该队列的描述符,并使用描述符中的指针来提取数据包内容并将它们发送到可信端的适当目的地。

现在,如果数据包不在合法性列表中,则其描述符将排队到标记为Q-test-in的队列中,现在通过测试路径处理该数据包。标记为“Test-Manager”(uE5)的微引擎清空此队列中的条目并发出一个或多个合法性测试。每个(用于)合法性测试质询的数据包排队到队列Q-test-out,微引擎“Source-transmit”(uE4)将质疑发送回客户端源。现在我们的设计适应这样的场景:如果合法性测试对于微引擎中的数据平面处理来说太复杂,[w8] 则适当的描述符被转发到StrongArm处理器以通过标记为Q-strong-arm的队列进行进一步处理。 StrongArm可以执行更复杂的处理,例如涉及非常复杂的合法性测试的处理。最后,如果一个数据包能被uE1识别为客户端对先前发出的质询的响应,那么它的描述符将直接放入队列Q-test-in中,从而避免使用Fast-Path-Manager“(uE2)microengine。这些响应数据包最终将由测试管理器Test-Manager(uE5)处理和验证。

 由于有限的指令存储和内存以及其他效率问题,在IXP1200上实现HMAC功能需要仔细考虑。诸如MD5和SHA1之类的常见方案过于复杂且效率低下。因此,我们选择实现一种名为Michael [15]的替代算法来为各种合法性测试数据包生成HMAC。鉴于NetBouncer的设计意图经常更改密钥,Michael易于实现并在性能和安全强度之间提供可接受的权衡。默认情况下,Michael生成64位身份验证标记。NetBouncer通过将XOR操作应用于两个32位的一半来执行一些适当的Michael输出后处理,以生成封装在传出合法性测试数据包中的最终32位结果。

4.3      支持高速高效的IP地址查找

在NetBouncer体系结构中,合法性列表可能包含数十万个条目。由于查找功能位于硬件架构的快速路径上并且在每个传入的数据包上执行,因此它可能成为主要的系统瓶颈,从而大大降低了数据包吞吐量。此外,NetBouncer必须能够处理合法性表的更高频率的更新。我们希望合法性列表每隔几秒更新一次。相比之下,路由器上的路由表更新频率更低。另一个独特的要求是合法性列表的大小。由于客户端对应于完整源IP地址而不是前缀所指示的子网,因此合法性列表的大小可能比典型的路由表大得多。这些要求带来一些独特的挑战。

在文献[11,19,20,25]中已经提出了各种快速IP地址查找方法。 [20]中提出的LCtrie结构(尝试的变体[18])提供了非常好的查找性能和最小的存储要求,但未针对动态更新进行优化。通过结合散列表和LC尝试的特性,我们开发了一种称为hash-trie的结构,可以支持有效插入和删除合法性列表。进一步的细节见[24]。

5      结论和后续的工作

我们提出了一种实用且高性能的DDoS过滤方法。NetBouncer方法的关键要素包括使用合法性测试来区分合法流量,通过使用网络处理器实现高性能以及灵活的两层面向QoS的流量管理方案。NetBouncer与其他DDoS保护方法的不同之处在于它专注于区分合法流量和非法流量。这将允许将NetBouncer置于即使在DDoS攻击条件下的环境中,从高优先级客户端到关键服务的合法请求也可以保证可用性和服务质量。这对电子商务网站来说是一个很大的好处,因为它们理想情况下不会导致合法流量的任何损失,因为这直接导致了收入损失。在这种情况下,NetBouncer方法代表了当前最新技术的明确而独特的进步。

我们已经构建了一个基于硬件的初始NetBouncer原型作为内联包过滤设备。原型的初始测试已经证明了有可观的性能,但也暴露了低端网络处理器(如IXP1200)在支持简单数据包转发之外的功能方面的局限性。这些初始性能结果的详细介绍超出了本文的范围,但在[24]中有报道。

最值得注意的是,应用HMAC和加密技术会增加每个数据包的开销,从而降低吞吐量并增加延迟。我们获得的结果使用了迈克尔HMAC算法的初始实现。未来的其他优化和更强大的网络处理器的使用应该允许NetBouncer技术扩展到10 Gbps(OC 192)线路速率,并允许与边缘和核心和路由器集成。例如,预计发布的英特尔第二代网络处理器IXP2800将配备16个微引擎,并提供更多的处理能力和接近10Gbps的吞吐量。

至于目前和未来的工作,我们目前正在完成我们的双层流量管理计划的设计,并期望尽快实施。我们还在扩展我们的性能分析实验,以了解各种合法性测试的效率。我们还将研究额外服务和基于会话的合法性测试的发明。为了完成这项任务,我们目前正在收集数据并研究互联网上最流行的应用程序级协议和服务。我们未来的工作,我们计划研究NetBouncer在真实网络流量上的表现。我们还将研究与各种网络拓扑中的NetBouncer技术集成相关的问题。特别是,与网络地址转换和非对称和多路径路由相关的问题需要更多的研究。我们还将研究部署架构,其中可以在网络中部署多个NetBouncer设备,并且将带外命令发送到一个或多个设备以“唤醒它们”,唤醒的操作是基于那些正在遭受DDoS攻击的部分网络的知识来提供按需DDoS过滤。

6      微软介绍

各种网络事件危及数据中心服务的可用性。网络事件处理面临的最大挑战之一是在数十万个网络设备和数百万个电缆和光纤中实时准确地检测和定位故障网络设备和链路。 NetBouncer旨在应对这一挑战。 NetBouncer使用服务器发送IP-in-IP探测数据包,以测量网络路径的数据包成功概率,而不涉及交换机CPU。它进一步介绍了一种算法,用于将路径的数据包成功概率映射到链路和设备的数据包成功率。我们的分析和实验结果都显示,在各种测量数据不一致的情况下,NetBouncer接近实现零误报和漏报。我们在Microsoft数据中心实施并部署了NetBouncer,现在它已成为网络故障排除和事件自动缓解的必不可少的服务。

7      文章总结

7.1      是否实现了路径检测?

没有实现路径检测。论文中引用了一些实现了跟踪技术的论文。

7.2      功能?对哪些协议或者哪些层实现了防御DDoS攻击??

论文中提及的有ping,tcp, http

提出了一种实用且高性能的DDoS过滤方法。NetBouncer方法的关键要素包括使用合法性测试来区分合法流量,通过使用网络处理器实现高性能以及灵活的两层面向QoS的流量管理方案。

7.3      性能,硬件原型是否可以借鉴?

论文中未明确提及,我们还在扩展我们的性能分析实验,以了解各种合法性测试的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值