【教学课件】第四章原则的运用.ppt
《【教学课件】第四章原则的运用.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章原则的运用.ppt(107页珍藏版)》请在三一办公上搜索。
1、第四章 原则的运用,4.1 应用设备通道的缓冲区验证,应用设备通道(Application Device Channels)允许应用程序直接读写网络适配器的存储区域来进行网络收发。需要一种隔离应用程序的保护机制:内核为每个应用程序分配一组用于网络收发的内存页,并用这组内存页设置网络适配器。网络适配器必须保证每个应用程序只能从分配给它的内存页中读写。,问题,功能需求:当应用程序P发出读写请求时,适配器必须验证请求中指定的页属于P的合法页集合。朴素的解决方案:将合法页的页号组织在一个线性表中,适配器顺序检查。验证的代价为O(n),n为合法页的数量。问题:如果n很大,如何加速验证的过程?,分析,运用
2、P15,设计更好的数据结构:哈希表:平均查找时间O(1),但冲突概率小的哈希函数计算复杂度高,最差性能不能保证。二分查找:可以提供logN的最坏查找时间,但当N较大时开销也比较大(要求排序)。,分析,运用P15,设计更好的数据结构:哈希表:平均查找时间O(1),但冲突概率小的哈希函数计算复杂度高,最差性能不能保证。二分查找:可以提供logN的最坏查找时间,但当N较大时开销也比较大(要求排序)。采用系统思维:令应用程序在请求中传递一个线索,帮助适配器快速找到指定的页。(P9,在模块接口中传递线索),解决方案,适配器将不同应用的合法页号保存在不同的数组中应用在读写请求中向适配器传递一个句柄,指出指
3、定的页号在数组中的索引适配器使用该句柄快速查找并验证页号最坏情况性能:一次数组查找,一次比较操作通过传递线索改进了最坏情况下的性能,4.2 ATM流量控制调度器,ATM是一种面向连接的网络:通信前先建立虚电路(VC),然后在VC上传输长度为53字节的信元(cell)ATM适配器可同时支持几百条已经建立的VC每条VC上使用流量控制限制其发送速度VC上的流量控制:VC每隔一定的时间获得一些credit,每个credit可以发送一个信元,VC状态表,问题,功能需求:从VC状态表中选择下一个要发送的VC简单的方法:调度器依次检查每个VC,寻找一个合格的如果有许多不合格的VC,顺序查找很低效问题:如何避
4、免查找不合格的VC?,分析,为避免查找不合格的VC,可将合格的VC抽出来组织在一起,供调度器查找。运用P12(增加额外的状态),增加一个线性表来维护合格的VC。如何有效维护合格的VC表是一个难点:合格VC的加入不合格VC的删除发送了一个信元的VC怎么处理(要体现公平),解决方案,除VC状态表外,再维护一个合格VC列表。合格VC列表的维护:当一个VC在服务后变成了不活跃的(没有信元或credit为0),将其从列表中删除;否则,将其添加到列表尾部(以实现公平调度);当一个VC从不合格变成合格,将其添加到列表尾部。,4.3 使用Dijkstra算法计算路由,从源节点开始,在每一轮迭代中,都从当前未包
5、含在最小路径树的节点中选择代价最小的节点加入树中。,问题,算法的要求:每次迭代需要一个优先级队列,迭代的次数等于网络中的节点个数N。通用的方法:通用的、性能最好的优先级队列(如堆),找到最小单元的代价为O(logN),整个运行时间为O(NlogN)。问题:如果N很大,如何加速路由的计算?,分析,链路代价是一个小整数,域内路由适用的网络规模也不大,因此路径代价也是一个小整数。对于小规模问题能不能有特殊的数据结构呢?(P14),分析,链路代价是一个小整数,域内路由适用的网络规模也不大,因此路径代价也是一个小整数。对于小规模问题能不能有特殊的数据结构呢?(P14)对于小整数来说,桶排序是比较有效的,
6、因此,能不能构造一个基于桶排序的优先级队列呢?,解决方案,构造一个基于桶排序的优先级队列。假定最大的链路代价为MaxLinkCost,网络直径为Diam,用一个长度为Diam*MaxLinkCost的数组C存放0(Diam*MaxLinkCost-1)所有可能的代价。如果节点X的当前代价为c,将X存放在数组元素Cc指向的列表中。每当节点X的代价从c变为c,将节点X从Cc指向的列表中删除,并移入Cc指向的列表。,基于桶排序的优先级队列,解决方案(续),查找最小代价节点:初始化一个指针CurrentMin为0,它对应源节点S的代价。每当希望寻找下一个最小代价节点时,CurrentMin加1,直至到
7、达一个非空元素,将该元素所指列表中的所有节点加入最小路径树。算法复杂度:O(N+Diam*MaxLinkCost),远低于O(NlogN)。,思考,在图示的例子中,如何在添加了节点C之后使算法终止,而不是一直扫描到数组结束?如何快速地将一个节点从一个列表中删除,然后加入到另一个列表?,4.4 使用网桥硬件的以太网监视器,将网桥改造成以太网流量监视器,统计每一对活跃节点A与B之间的流量PA,B。每个包的统计工作要求在64微秒内完成。瓶颈是查找与A、B两个MAC地址相关联的PA,B。网桥有一个查找引擎,可快速查找与一个MAC地址相关联的状态:查找引擎用lookup(X,D)调用,X为48位的关键字
8、,D为要查找的数据库,返回与X相关联的状态如果数据库不超过64000个关键字,调用延迟为1.4微秒,问题,功能需求:每当一个从A到B的数据包到来,监视器要快速找到PA,B。已有硬件:监视器的查找引擎只能查找单个MAC地址,而不是一个地址对。问题:如何使用已有硬件查找地址对?(P4c),分析,原理上,可将PA,B组织在一个二维表中,分别用A和B的地址作为行、列索引。内存使用太多!减少内存的简单方案:先将A和B转换成较小的(小于24比特)索引 IA 和 IB,然后分别用IA和IB作为行、列索引。若当前活跃的节点对数远小于N*N(N为网络中的节点数),内存使用仍然很多!如何令内存使用量与当前活跃的节
9、点对成正比?,解决方案,基本思路:将IA和IB合并成一个新的查找关键字,查找一个一维表。方案:先使用两次查找,分别将A和B转换成小于24比特的索引 IA和IB(查找MAC-索引数据库)然后将IA和IB合并成一个新的查找关键字IAB,再查找,得到PA,B(查找IAB-PA,B 数据库),三次查找,4.5 x-kernel中的解复用,协议解复用:根据包头中的协议域,将包交给相应的协议实体处理大多数协议基于协议头中的标识符解复用,不同协议头中的标识符长度可能不同X-kernel允许对可变长度的协议标识符解复用:系统初始化时,协议例程向x-kernel注册它所定义的协议标识符和协议之间的映射数据包到达
10、时,协议例程从包头中获得协议标识符,查询x-kernel的解复用例程,获得协议,问题,要求:解复用例程必须很快最快的查找方法是哈希表:先对标识符 K 计算哈希索引,查找哈希表,比较表项中的关键字 L 与 K(逐字节比较)。假设最常见的情形是4字节标识符,而4字节刚好是一个机器字,更有效的是字比较。问题:如何利用高效的字比较(P4c)来优化最常见的情形(P11),与此同时仍然支持任意协议?,分析,比较例程是一个可以利用的自由度:针对最常见的情形(如字比较,长字比较),使用更高效的比较例程对于其它情形,使用缺省的比较例程(逐字节比较)解复用例程如何知道对于哪个协议应使用哪个比较例程?,解决方案,系
11、统初始化时,客户协议向x-kernel传递一些信息,声明其定义的协议标识符(包括长度)和协议的对应关系利用以上信息,x-kernel为每个客户协议维护一个查找协议标识符的哈希表,给每个哈希表关联一个比较例程,运用的原则,传递线索(P9):系统初始化时,客户向X-kernel声明协议标识符的长度这个线索通过关联的比较例程被传递给解复用例程进行某些预先计算(P2a):系统初始化时,x-kernel为每个客户协议预计算一个哈希表,4.6 带压缩节点的trie,Trie是网络中常用的一种树形结构,每个节点是具有M个元素的数组,用于保存关键字或指向另一个节点的指针。,Trie节点的查找,若c=log2M
12、,将输入字符串划分成大小为c的块,从树根开始,第 j 个块查第 j 层的节点。如果块 j 的值等于i,检查节点中第 i 个数组元素:若是一个指向节点N的非空指针,用块j+1查找节点N;否则查找结束。如果许多节点是稀疏的,空间被极大地浪费了。,问题,压缩节点的简单方法:将数组换成一个形如(i,val)的列表,例如根节点表示为(1,ptr);(7,key1)。缺点:必须顺序查找(i,val)列表,极大地降低查找速度。问题:如何压缩trie节点,使得查找速度的降低不超过一个小的常数因子?,分析,必须保持数组索引的有效性,即不查找列表,就能迅速知道有无要查找的元素,以及(如果有)定位到要查找的数组元素
13、,分析,必须保持数组索引的有效性,即不查找列表,就能迅速知道有无要查找的元素,以及(如果有)定位到要查找的数组元素使用一个比特串来标记数组中空元素及非空元素的位置,解决方案,压缩后的trie节点由一个比特串和一个仅包含非空元素的数组组成。,压缩节点的查找,用一个block(假设值为i)查找当前节点的过程:读入当前节点的bitmap;用 i 作为索引,检查bitmap中的第 i 位:若该位为“0”,查找结束;若该位为“1”,令 C=bitmap中前 i 位中“1”的个数,读数组中第C个元素。两次访存:一次访问bitmap,一次访问数组,运用的原则,P14(小规模问题使用高效算法):比特串的方法仅
14、适用于长度较小的串P4a(利用局部性):将空元素、非空元素的位置放在一个比特串中一次读入,4.7 路由器中的包过滤,接收节点通过一个包过滤器(也称分类器)表明它希望接收的数据包(流)。路由器应将数据包发送给所有提出请求的接收节点。,问题,功能需求:每个到来的数据包必须同所有的过滤器进行匹配,过滤器描述了数据包使用的源地址、源端口和目的端口。若数据包匹配了某个过滤器F,数据包必须发送给所有声明了F的接收节点。过滤器查找:如果过滤器数量很大,顺序查找很低效。问题:如何加快过滤器查找的操作?,分析,包分类是一种开销很高的操作,利用cache优化预期情形(P11a)是目前相对容易操作的方法。Cache
15、可看成是由形如的值对构成的数据库,a为索引。给定输入a,首先查找cache:若cache中存在a,返回f(a)若不存在,用某种方法计算出f(a),插入,分析(续),本例的包过滤问题:计算与数据包P关联的一组接收节点,P用三元组 进行刻画本例中,a=,f(a)=一组接收节点更一般地,a可能包含包头中的任何域缓存多个包头域的时空开销很大:关键字很宽,cache查找的时间开销很大空间开销大,cache命中率低,分析(续),能否仅缓存12个唯一指示数据包 P 的包头域,而不是大量的包头域?IPv6报头中有流标签域;IPv4中没有,但有一个ToS域(可自定义)流标识是全局的还是本地的?为避免全局命名的标
16、准化过程,最好使用本地命名的标识符,解决方案,源节点为每个流分配一个本地标识符,用二元组作为查找关键字。源节点的应用程序向路由层请求一个流标识符,该应用发送的所有数据包都加上该流标识符(如放在IPv4包头的ToS域)。,解决方案(续),应用数据包第一次到达路由器时:路由器使用包头中的多个域对所有过滤器执行一个(较慢的)线性查找,确定一组接收节点路由器将作为查找关键字,缓存与一组接收节点的映射关系后续数据包到达时:路由器用查找缓存,获得一组接收节点,4.8 避免链路状态分组的分片,在使用链路状态路由时,路由器必须定期发送一个包含所有邻居节点的链路状态分组(LSP),LSP采用扩散法传输。路由器使
17、用分组序号识别重复及过时的LSP,并只使用最新的链路状态计算最小代价路由。路由器可能有大量直接连接的主机邻居,使得LSP远远超过大多数常见链路的MTU。(假定每个端节点使用8个字节:6个字节标识端节点,2个字节表示代价),LSP分片传输的问题,如果对LSP进行分片,存在以下问题:每一跳传输都要进行LSP的分片和重组,极大地增加了LSP的处理时间和传输时间。无法独立传输每个分片:每个LSP具有唯一的序号,如果分片使用相同的序号,则后到的分片会被丢弃;如果使用不同的序号,序号大的分片会淘汰序号小的分片。原因:同一个路由器发布的同一时刻的链路状态必须放在同一个LSP中传输。,问题,所有主机的信息必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 原则 运用

链接地址:https://www.31ppt.com/p-5664934.html