- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 解复用 什么是解复用(demultiplexing) 解复用: 协议实体将收到的报文交付给相应的客户 分层解复用: 利用包含在报文各层协议头中的解复用域逐层进行,例如: 以太帧头中的type域 IP头中的protocol域 TCP/UDP头中的dest port域 提前解复用(early demultiplexing): 报文到达时,使用一个操作确定报文要经过的整条协议路径 分层解复用示意图 为什么要提前解复用? 区分处理: 优先处理重要的包 尽早丢弃超载应用的包 保证某些应用的服务质量,等等 定制路径: 为确定的包处理路径定制高效的处理代码 快速分发: 去除每一层上的解复用代码,以及由逐层解复用产生的控制开销(进程或线程调用) 包过滤器(包分类器) 实现提前解复用的数据结构,称为包过滤器或包分类器。 包过滤器: 以完整的包头作为输入,将包映射到一条路径的端点 处理路径: 路径端点代表最终处理该包的应用进程路径代表在包交给端点之前,需要用来处理该包的一个协议序列 算法设计目标 安全性: 包过滤器由用户级程序提供,在内核实现,应确保用户之间不相互影响 高速度: 解复用必须实时(线速)完成 可组合性: 应能将N个独立的包过滤器组合为一个复合的包过滤器,并获得更高的匹配速度 8.1 Berkeley Packet Filter(BPF) 专为高性能网络监视工具(如tcpdump)而设计 使用一个控制流图模型(状态机)进行计算 感兴趣的包: src IP=X 的所有 IP包和ARP包 BPF内置于OS内核 BPF的调用 BPF由用户提供的一组包过滤器组成,每个包过滤器有一个对应的缓冲区 到达的包首先被网卡驱动程序处理: 若BPF是活跃的,首先调用BPF: 用包头与每个过滤器匹配 对于每个匹配的过滤器,将一定数量的字节(由过滤器指定)拷贝到对应的缓冲区中 不与任何一个过滤器匹配的包交给TCP/IP栈处理 BPF的有用特性 先过滤再缓存: 若大多数包都不是应用想要的,可以避免不必要的浪费(缓冲空间,拷贝时间) 允许一次read()调用返回多个包: 为区分包的边界,BPF为每个包加上一个头部,包括一个时间戳和包长度 BPF的扩放性 收到的每一个包必须与每一个包过滤器匹配,处理时间为O(n): 对于典型的BPF应用没有问题:一个典型的BPF应用可能只提供几个过滤器 将BPF应用于提前解复用,有扩放性问题: 一个繁忙的服务器中,并发的TCP连接数可能很大,每一个TCP连接可能提供一个包过滤器。 8.2 Pathfinder 为在x-kernel中支持用户级网络而设计 设想有500个过滤器,每个过滤器具有相同的Ethernet type =IP和 IP protocol =TCP,只是TCP端口对不同。 如果用BPF实现: 用到来的包与每个过滤器匹配,需比较500次Ethernet type 和 500次IP protocol。重复! 用包的端口号与500个过滤器的端口号逐个比较,类似于通过线性查找进行精确匹配。 低效! Pathfinder的设计思想 合并N个包过滤器为一个复合过滤器: 将在同一个包头域上进行的比较放在一个节点中: 比如,将对Ethernet type的查找放在一个节点中 每个节点实现为一个哈希表,用哈希查找代替线性查找 Pathfinder的数据结构示例 根节点对应以太帧的type域,包含过滤器集合中描述的所有Ethernet type值。 根节点实现为一个哈希表,每个哈希表项包含一个值和一个指针,指针指向下一个要查找的节点。 Pathfinder的每个节点用于匹配包头中的一个域 Pathfinder 推广了 Trie Trie是一种前缀树: 每个节点包含一个value, pointer数组,pointer指向一个subtrie 键并不保存在节点中,而是作为查找节点数组的索引 在Trie上查找一个关键字: 将关键字划分成字符;从树根开始,用第 i 个字符作为索引查找路径上第 i 个节点的数组,得到指向第(i+1)个节点的指针。 pathfinder结构是Trie的推广: 在每个节点上,包头域代替了要查找的字符,哈希表代替了数组。 Pathfinder的技术细节 Pathfinder的最基本单位称为一个cell 一个cell描述了包头中的一个域(用offset、 length、mask表示)、一个比较值和一个指针 举例: 检查IP protocol是否为TCP,cell = (9, 1 ,0xff, 6, Ptr): 9:相对于IP头部起始位置偏移9个字节处 1:读取一个字节的内容 0xff:提取整个字节作为比较关键字 6:将提取的关键字与6(TCP协议号)进行比较 Ptr:若匹配,沿指
您可能关注的文档
- 第一种方式.ppt
- 第一章营养物质间的相互关系.ppt
- 第一章运动的描述第一节质点参考系和坐标系.ppt
- 第一组预防爱滋病.ppt
- 第一节会见礼仪二.ppt
- 第一节减数分裂中的染色体行为.ppt.ppt
- 第一节脂肪烃.ppt.ppt
- 第七章数量性状的遗传分析.ppt
- 第三单元11-20题.doc.doc
- 第三期.doc-上海市储能中学.doc
- 2024-2025学年桑植一中高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年上海市进才中学高一入学分班考试语文作文押题及范文分析.docx
- 中国滴水水表行业市场情况研究及竞争格局分析报告.pdf
- 2024-2025学年上海师大附中高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年清华大学附属实验学校高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年上海市控江中学高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年上海静安外国语中学高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年宁波外国语学校高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年南通中学高一入学分班考试语文作文押题及范文分析.docx
- 2024-2025学年宁波市鄞州中学高一入学分班考试语文作文押题及范文分析.docx
文档评论(0)