- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 解复用 什么是解复用(demultiplexing) 解复用: 协议将收到的消息分发给合适的客户。 分层解复用: 利用包含在消息各层协议头中的解复用域逐层进行。 提前解复用(early demultiplexing): 消息到达时,使用一个操作确定消息要经过的整条协议路径。 分层解复用示意图 为什么要提前解复用 在用户空间实现协议栈,减少上下文切换。 将不同应用的包流分开,进行显式调度,如: 优先处理重要的包; 尽快丢弃超载应用的包,避免接收端活锁; 保证某些应用的服务质量,等等。 定制路径:为确定的包处理路径定制高效的处理代码。 快速分发:消除每一层上的解复用代码,以及由逐层解复用产生的控制开销。 包过滤器(包分类器) 实现提前解复用的数据结构,称为包过滤器或包分类器。 包过滤器: 以完整的包头作为输入,将包映射到一条路径的端点; 端点代表最终处理该包的应用进程; 路径代表在包交给端点之前,需要用来处理该包的一个协议序列。 算法设计目标 安全性: 包过滤器由用户级程序提供,在内核实现,应确保用户之间不相互影响。 高速度: 解复用必须实时完成。 可组合性: 应能将N个独立的包过滤器组合为一个复合的包过滤器,并获得更高的匹配速度。 8.1 CMU/Stanford包过滤器(CSPF) 应用程序提供给内核一个包过滤器,用于处理收到的包。若某个包为应用 A 希望接收的,A的包过滤器返回“真”。 包过滤器是一段程序,用来对描述包特征的表达式树进行求值。 为保证安全性: 使用能力有限的堆栈指令; 监视堆栈引用,以保证引用与堆栈范围一致; 检查包的引用,以保证引用在包长范围之内。 CSPF的表达式树模型 CSPF的问题 架构不匹配:CSPF堆栈模型是为PDP-11发明的,和现代的RISC架构很不匹配。 模型低效:表达式树模型经常导致更多的操作(不能记住包的解析状态)。 只能解析包头中固定偏移位置的域。 为了约束运行时间,没有跳转或循环结构。 8.2 Berkeley Packet Filter(BPF) 用基于寄存器的语言替换了基于堆栈的语言,以与RISC架构相匹配。 使用一个间接操作符将指定偏移位置的域装入寄存器,从而可以访问非固定偏移位置的域,比如Load[14]。 可以进行比较和跳转操作。 使用一个控制流图模型(状态机)进行计算,可减少比较操作的次数。 BPF的控制流图模型 BPF内置于OS内核 BPF的扩放性 BPF提高了单个过滤器的匹配速度,但是每个包仍然必须与每一个过滤器比较,处理时间为O(n)。 BPF应用于提前解复用,有扩放性问题: 一个繁忙的服务器中,并发的TCP连接数可能很大,每一个TCP连接可能提供一个包过滤器。 8.3 Pathfinder 设想有500个过滤器,每个过滤器具有相同的Ethernet type =IP和 IP protocol =TCP,只是TCP端口对不同。 BPF的问题: 用到来的包与每个过滤器匹配,需比较500次Ethernet type 和 500次IP protocol。重复! 用包的端口号与500个过滤器的端口号逐个比较,类似于通过线性查找进行精确匹配。 低效! Pathfinder的设计思想 合并N个包过滤器为一个复合过滤器: 将在同一个包头域上进行的比较放在一个节点中; 每个节点实现为一个哈希表,用哈希查找代替线性查找。 Pathfinder的数据结构示例 Pathfinder 推广了 Trie Trie是一种树结构: 每个节点包含一个value, pointer数组;每个value对应一个固定字符集中的一个取值,pointer指向对应该值的一个subtrie。 在Trie上查找一个关键字: 将关键字划分成字符;从树根开始,用第 i 个字符作为索引查找路径上的第 i 个节点,得到指向第(i+1)个节点的指针。 pathfinder结构是Trie的推广: 在每个节点上,包头域代替了要查找的字符,哈希表代替了数组。 Pathfinder的技术细节 Pathfinder的最基本单位称为一个cell。 一个cell描述了包头中的一个域(用偏移量、长度和掩码表示)、一个比较值和一个指针。 举例: 检查IP protocol是否为TCP: cell = (9, 1 ,0xff, 6, Ptr)。 Line 和 pattern 将一组cell串在一起,构成一个line。 若一个line中的所有cell匹配一个包,就说这个line匹配这个包。 直观上,一个line匹配一个协议头,一个cell匹配协议头中的一个域。 在最简单的情形中,协议用一个pattern =hdrlen, line描述希望进行的匹配,hdrlen给出协议头的长度。 举例 Pathfinder的
您可能关注的文档
最近下载
- 最新2023版知识产权贯标GBT29490 09知识产权维护运用控制程序(含表单)[知识产权合规管理体系文件].docx
- 煤矿合法股权转让协议9篇.docx VIP
- GB_T 9711-2023石油天然气工业 管线输送系统用钢管.doc VIP
- 导体结构设计.xls VIP
- 电梯安全风险管控清单.doc VIP
- 生殖医学中心专业技术人员考核试题及答案.docx VIP
- 2024年度健康体检大数据蓝皮书.pdf
- 部编版语文六年级上册第四单元教案+教学反思(共6篇).pdf VIP
- 球墨铸铁管与其它管材的连接件技术规范.docx VIP
- NB∕T 11273-2023 工业锅炉设计文件鉴定技术导则.pdf
文档评论(0)