用于协议处理的硬件体系结构.doc
《用于协议处理的硬件体系结构.doc》由会员分享,可在线阅读,更多相关《用于协议处理的硬件体系结构.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章 用于协议处理的硬件体系结构前面我们讨论了常规计算机上的协议处理软件的体系结构,本章讨论用于协议处理的硬件体系结构。我们将讨论为什么常规计算机不适用于协议处理,目前有哪几种用于协议处理的硬件体系结构,它们的优缺点是什么。和早期的计算机设计者一样,网络系统的建造者尝试设计各种功能单元并把它们互连起来。大量的尝试以及缺乏可供借鉴的经验导致出现了很多种方法和体系结构,很难对它们进行一个清楚的分类,对于哪一种结构是最佳的目前也没有统一的认识。尽管如此,我们仍然可以确定出几种基本的方法,我们将简要介绍它们的基本思想。6.1 传统的软件路由器第一个网络设备由分组交换机组成。分组交换机的实验开始于上世
2、纪六、七十年代,那时DEC等公司引入了小型机来代替庞大、昂贵和高性能的主机。小型机的硬件被广泛采用,将它们用于分组交换机有几个好处:1)由于早期的网络运行在很低的速率,小型机的CPU足够用来处理分组交换;2)小型机较小的物理尺寸使得分组交换机可以放入已有的机房;3)小型机较简单的I/O接口简化了网络接口的设计;4)小型机低廉的代价使得用多个分组交换机构成一个网络在经济上是可行的。当因特网技术出现时,更廉价的微型机已经商用,网络工程师们也知道如何将它们用于网络系统。那时候,CPU的速度提高很快,微机的CPU已有足够的能力完成IP包的转发。因此,第一个商用的IP路由器使用的就是常规计算机硬件,目前
3、低端的路由器仍是如此。所谓常规计算机硬件主要指的是通用处理器(General Purpose Presessor,GPP),基于常规计算机的IP路由器也称为软件路由器,因为所有的协议都是用运行在通用处理器上的软件实现的。软件路由器的硬件体系结构如图6-1所示,由一个CPU和若干NIC组成。其中,CPU执行所有的协议处理任务,NIC执行组帧和卡上地址识别。图6-1 软件路由器的硬件体系结构软件路由器的主要优点是代价低,主要缺点是处理速度低。由于路由器必须处理来自各个网络接口的数据包,因此路由器的处理速度决定了可以连接到路由器上的网络的最大数据速率以及路由器能够支持的最大网络接口数。我们使用集合速
4、率指代数据进入或离开一个网络系统的总速率。有时候我们只关心一个方向上的集合速率,如考虑路由表查找时我们只需要关心到达的包,这时集合速率是指所有接口上的数据速率之和。类似地,对于使用单工传输的硬件,我们只考虑一个方向的数据速率;对于使用全双工模式的硬件,我们考虑两个方向的数据速率。一个系统的最大集合速率非常重要,因为它决定了系统可能的效用。尽管集合数据速率易于计算并且提供了系统能力的一种度量,但不够全面。我们知道数据包的长度是变化的,而许多协议处理操作对于每个包的处理时间是固定的,比如IP路由查找的时间不依赖于包的长度,因此,对于许多处理任务来说每秒处理的数据包数比集合数据速率更重要。每秒钟有多
5、少个包通过网络到来呢?这取决于网络的吞吐量以及包的长度。图6-2列出了不同类型网络中的包速,用Kpps表示,1Kpps表示每秒钟1000个包。在高端网络中,一条OC-192线路就可以提供高达20Mpps的包速,由于路由器通常连接多个网络,因此路由器的集合包速比表中列出的值还要大得多。图6-2 不同网络中的包速一个软件系统每秒钟能够处理多少个包呢?一个典型的运行Linux内核的PC机每秒钟最多可以处理50000个IP数据报,前提是每个数据报只要求最少的处理;若每个数据报必须由防火墙软件处理,则每秒钟最多只能处理8000个包。确切的包速要取决于CPU速度、总线带宽、内存延迟以及处理量等。为了获得每
6、秒钟N个数据包的集合速率,CPU处理每个包的时间不能多于1/N,图6-3列出了不同类型的网络中处理每个数据包所允许的最大CPU时间。图6-3 不同网络中一个数据包的最大处理时间实际上,处理一个包的时间包括了中断处理、将包拷入内存以及处理包的时间,在这里我们忽略中断处理时间,只关注CPU处理协议的时间。每个包要求的处理时间取决于包的内容(如使用的协议),并且不同的协议要求的处理时间差异很大。在一个典型的CPU上,处理一个分组的指令不会超过10000条,许多分组要求少于5000条的指令。下面我们看一下,软件路由器在什么场合下是可行的。考虑两个10Base-T的以太网,每个网络的最大包速是19500
7、pps,CPU最多只有25.6微秒时间处理一个包。为了处理从两个10Mbps以太网上到来的网络流量,CPU必须在25.6微秒内执行500010000条指令。也就是说,CPU的执行速度必须在195Mips390Mips之间。许多商用的CPU可以有超过400Mips的执行速度,因此,一个软件路由器可以连接两个10Mbps以太网。考虑一个10Gbps的网络,每微秒产生大约20个数据包,这时CPU每秒钟必须执行21011条指令。即使是像交换机这样工作在第二层、每个数据包只要求几百条指令的网络设备,这样的分组速率也超过了一个CPU的处理能力。由此可见,运行在通用处理器上的软件不足以应付高速网络,因为集合
8、包速超过了当前CPU的处理能力。6.2 克服单CPU瓶颈尽管已经设计出了专门的算法及数据结构来优化网络系统的性能,但要进一步提高性能还需要对网络系统的硬件进行改进。硬件工程师们使用了多种硬件机制、技术和体系结构来优化性能,它们包括:l 细粒度并行l 对称粗粒度并行l 非对称粗粒度并行l 专用协处理器l 具有板上处理功能的智能NICl 数据流水线以上这些方法有些是通用的,即适用于大多数包处理系统,有些只适用于特殊的网络系统。值得注意的是,一种能够改善某个网络系统性能的方法可能会降低其它网络系统的性能,一种能够改善某类数据包性能的方法可能会降低另一类包的性能。在实际的网络中,不存在一种十全十美的解
9、决方案,每一种方案都代表了在效率、通用性和代价之间的一种权衡。(1)细粒度并行从理论上说,并行的思想很简单:为克服单CPU的局限性,使用多个CPU一起来解决一个问题。一个可以并行执行的系统应当比每次只能执行一个操作的系统有更强的处理能力。并行通常应用于计算密集的任务,比如那些涉及对整个包进行计算的协议处理操作。设计图形系统的开发人员发现,他们可以通过细粒度并行(也称指令级并行)来优化性能。本质上说,一个并行CPU有一些特殊的指令可以应用到一批数据上而不只是一个数据上。比如,有些CPU包含并行指令,可以同时操作在内存的连续8个位置上。尽管指令级并行已在一些网络系统中使用,但是实验和仿真研究表明并
10、没有获得很高的性能。原因有以下几点:1)包处理功能很少有能被细粒度优化的,特别是对包所做的处理要取决于包的内容,因此系统不可能用同一个指令序列处理N个包;2)程序必须花时间建立并行指令,对于较小的包,并行指令建立的时间占总开销的大部分;3)细粒度并行仅能改善CPU性能,而在许多情况下瓶颈是I/O;4)细粒度并行代价很高,因为它要求改变CPU。(2)对称粗粒度并行对称多处理器提供一组N个相同的CPU,由于每个CPU独立运行,一个对称多处理器可以同时处理多个包或多个协议。比如,一个CPU执行重组IP包的代码,而另一个CPU执行发送TCP段的代码。对称多处理器是最早应用于基于软件的网络系统的优化措施
11、之一,它有两个主要的优点:1)网络系统设计者不需要发明新的对称多处理器硬件,因为通用系统已经可以从商业渠道获得;2)设备提供商已经将一个传统的Unix操作系统移植到了他们的多处理器硬件上,这个环境对于程序员来说非常熟悉,他们只需要学习用于控制和调度多处理器的新特性就可以了。有人可能认为N个处理器每秒钟处理的数据包数量大约是一个处理器的N倍,事实上,对称多处理器网络系统的性能令人失望。对称多处理器的处理能力并不随着处理器数目的增加而线性增长,这主要有以下几方面的原因。1)大多数多处理器系统使用共享存储模式,所有处理器共享一个内核地址空间。尽管共享内存可以使得一个数据包很快地从一个处理器传到另一个
12、处理器,但是每次内存访问都会引起竞争,因为一次只能有一个处理器访问内存。2)包处理软件必须协调对数据结构(如包队列)的访问,降低整个系统的处理速度。3)尽管对称多处理器提供了一种增加处理能力的方法,但多处理器体系结构并不自动增加I/O的带宽。(3)非对称多处理器非对称多处理技术使用多个可同时运行的异构处理器。非对称的优点在于专门化的能力,每个处理器可针对一种特定的任务优化。比如,一个处理器可能具有针对第三层处理的特殊指令,而另一个处理器可能具有针对第二层处理的特殊指令。非多称多处理器有四个缺点:1)除了针对特定任务的专门指令外,处理器还需要通用指令;2)非对称系统比对称系统难以编程;3)针对某
13、个特定任务或协议而优化的处理器用于其它任务或协议时性能可能不好;4)设计和构造非对称多处理器代价很高。(4)专用协处理器结合通用处理器与非对称系统优点的体系结构由一个通用处理器和一个或多个称为协处理器的专用处理器组成。每个协处理器被设计为执行一个特定的功能,所有协处理器在CPU的控制下运行。使用协处理器的主要优点是它给了设计者很大的自由度。可以将一个协处理器设计为一个强大的计算引擎,也可以只是执行某个操作的逻辑电路。也就是说,和非对称多处理器不同,协处理器不要求能够独立运行,也不需要通用指令,也没有取指令-执行周期。比如,一个设计用来验证IP头校验的协处理器,CPU只要将数据包在内存中的存放地
14、址及包头长度传给协处理器,协处理器计算后将返回一个值,指示头校验是否正确。如果协处理器执行一个任务的时间比通用CPU少,则系统的吞吐量会提高。然而,如果允许所有的协处理器同时执行,则系统性能的提高会更多。也就是说,硬件必须允许CPU在一个协处理器执行完之前启动另一个协处理器。这种异步性允许系统同时处理多个包或对同一个包执行多个独立的操作。那么需要为一个常规CPU增加哪些额外的设施来更好地完成包处理呢?很显然,应该选择那些消耗CPU时间最多或者最频繁执行的操作,如验证校验和、加/解密等,将它们交给协处理器完成。所以,在网络系统设计中一个重要的原则是:将那些最消耗CPU时间的操作转移到硬件上去。术
15、语“应用特定集成电路(ASIC)”是指为某种特殊需要而定制的集成电路。ASIC生产技术已经商业化,这对于设计和构造满足特殊需要的协处理器非常重要。由于ASIC硬件的设计和实现非常昂贵,因此,工程师们努力使每一种芯片尽可能通用。也就是说,不是设计一种只能理解一种包格式或一种协议的协处理器,而是设计一种能适应许多协议的协处理器。(5)智能NIC以上讨论的硬件机制都是为了改善计算性能,然而,网络系统设计者发现计算并不是唯一的瓶颈,许多协议处理任务是I/O密集的,因此必须优化数据穿过系统的流动。前面我们讨论了改善传统I/O接口速度的技术:DMA、卡上缓存和操作链,还讨论了卡上地址识别和过滤。随着网络速
16、度的提高,需要能够支持更高包速的技术。一种显而易见的优化是将一部分处理转移到NIC上,比如,NIC可以验证IP头校验或从IP头中抽取某些域,也可以执行加密或压缩这样的功能。卡上处理的主要优点是减轻了CPU的负担;其次,由于NIC只需要处理来自一个网络接口的包,不像基于软件的网络系统中CPU必须处理来自所有网络接口的包,因此NIC硬件处理包的速度不要求很高。图6-4是带有智能NIC的系统的硬件体系结构及功能划分。有两种实现智能NIC的方法:ASIC硬件和嵌入式RISC硬件。ASIC硬件方法使用定制的硬件,硬件制造商设计一组专用芯片,工程师们将这些芯片集成到NIC上,每个ASIC芯片执行一种协议处
17、理任务。RISC方法用一个标准的RISC处理器代替定制硬件,除了RISC处理器外,智能NIC还包括一个卡上RAM用于包缓存和一个卡上ROM用于存放协议处理软件。RISC处理器比ASIC硬件的设计代价低,且系统易于修改。图6-4 带有智能NIC的系统的硬件体系结构RISC处理器使我们有可能将更多的协议处理功能转移到NIC上。我们能将整个协议栈都放到NIC上吗?如果我们这么做了,它能够消除CPU瓶颈并使系统支持任意多的网络接口吗?工程师们确实已经开发出了能处理第三层上大部分功能的智能NIC。然而,在常规计算机上用智能NIC扩展系统还受到其它因素的制约,特别是在以包转发为目的的网络系统中,智能NIC
18、之间的数据路径将成为瓶颈。在传统的计算机系统中,数据路径包括总线和内存,这些都是在多个NIC间共享的。后面我们将介绍一种能在智能I/O板卡之间提供高速互连的非传统体系结构。(6)数据流水线术语“数据流水线”是指由一系列硬件stage组成的硬件体系结构,数据包经过每一级时被执行一种操作。比如,我们可以设想将IP包的处理安排成一系列的stage。一个IP包到达时进入第一级,检查头校验,第二级对TTL域减1,第三级处理选项,第四级查找路由表,第五级进行IP包分片,第六级计算输出包的头校验,第七级封装数据包,等等。使用流水线结构有两个主要的优点。第一,由于每级只执行一个操作,因此每级的硬件可以做得很简
19、单,从而运行速度很快。第二,由于每级用独立的硬件实现,因此所有的级可以同时执行。也就是说,当第k级在处理一个包时,第k-1级可以处理下一个包。当然,仅当数据包快速连续到达时,所有级才会同时执行。由于每级的处理时间可能不同,流水线结构通常用包队列来连接两个级。每个级从输入队列中取出包执行,处理完后将包放入连接下一级的队列中,见图6-5。另外,一个级输出的包数可能与输入的包数不同,比如它可能丢弃包,可能将一个包划分成若干个报片,或者将若干个报片组装成一个包。由于不同级执行的任务不同,这些级可以是异构的,比如有的级可能包含很复杂的硬件,有的可能很简单。图6-5 一个5级数据流水线的例子我们可以看到,
20、已经有很多种硬件体系结构、机制和技术应用于网络系统,集合数据速率、集合包速、要进行的包处理决定了需要使用什么样的硬件。传统的基于软件的网络系统已经不能适应高速网络的需要,高速网络要求的硬件体系结构包括:多处理器系统、ASIC协处理器、智能NIC和/或数据流水线。第七章 分类和转发本章讨论协议处理中一个非常重要的概念:分类,介绍分类的目的、分类的软硬件实现以及分类与高速转发之间的关系。(1)解多路复用的局限性我们前面介绍过分层协议处理中的解多路复用:输入的数据包在沿着协议栈向上传递的过程中,每一层的协议实体利用协议头中特定域的内容决定将包的内容交给哪一个上层协议。解多路复用的特点是:使用全局类型
21、系统,发送方参与,逐层执行。解多路复用的主要优点在于传输效率和灵活性。解多路复用允许我们为每一种协议定义一个包头,包头中只包含这个协议需要的域,而不需要建立一个能够适用于所有协议的包头。其次,解多路复用允许设计者增加一个新的协议或改变一个已有的协议而不影响其它的协议,这是因为每个协议独立地定义它的协议头,不同协议头中的域不共享。尽管解多路复用有以上优点,但是解多路复用的传统实现却很低效,因为它是顺序执行的。当数据包需要穿过一个L层的协议栈时,需要执行L次解多路复用。(2)包分类如何既保持解多路复用的优点又提高系统的整体效率呢?解决的办法就是用包分类来代替解多路复用。包分类的思想很简单:保持分层
22、协议的设计不变,发送端依然将类型域写入包头中,接收端一次性检查多个协议头中的相关域,将包划分到相应的类(也称流)中。比如,我们希望从输入的以太帧流中分离出去往Web服务器的流量。这个流量定义如下:以太帧中包含一个IP包,IP包中包含一个TCP段,TCP段中的目的协议端口号指定一个Web服务器。在这个例子中,需要三条分类规则来定义Web流量:以太帧中的type域为0x0800(表示包含了一个IP包),IP数据报中的protocol域为6(表示包含了一个TCP段),TCP段中的destination port域为80(表示包含了一个HTTP消息)。从概念上说,分类器需要计算以上三个条件的逻辑“与”
23、。(3)包分类的软件实现最简单的实现方法是使用一系列的条件测试,每次检查一个头域,当有一个域不匹配时即停止往下检查,并声明不匹配,仅当所有测试都通过时才声明匹配。如:If(type=0x0800)&(protocol=6)&(destination port=80)Declare the packet matches the classification;ElseDeclare the packet does not match the classification;对于基于软件的分类器来说,顺序检查是很流行的,最坏情况下需要测试分类规则中描述的所有域。以上算法可以被优化。我们注意到,虽然最坏
24、情况下的测试次数是固定的,但是通过适当安排条件测试的顺序可以最小化平均测试次数。比如,假如我们知道95%的帧携带了IP包,92%的IP包携带了TCP段,85%的TCP段的目的端口号为80,则按下面的测试顺序可使平均测试次数最小。If(destination port=80) &(protocol=6) &(type=0x0800)Declare the packet matches the classification;ElseDeclare the packet does not match the classification;(4)包分类的硬件实现以上算法是针对运行在常规计算机上的分类软
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用于 协议 处理 硬件 体系结构
限制150内