版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 路由查询,北京邮电大学 网络技术研究院 下一代互联网技术研究中心,第一部分概述,影响IP网络性能的关键因素,链路速度 路由器的吞吐量 包转发速率 对路由变化的快速适应性,采用光纤等技术提高链路速度 在路由器中采用大容量的交换结构以提高吞吐量 采用高效的路由查询算法和硬件路由查询方案提高包转发速率(路由查询) 优化各种动态路由协议,解决方案,路由查询定义,设分组的目的地址为D,包含长度为W的比特数。 设路由前缀为P,包含的比特数为0W,L(P)表示前缀长度。 地址D匹配前缀P的含义:地址D的前L(P)位比特值与前缀P完全相同。 给定一个路由前缀集合PA,集合含有N个路由前缀,到达分组的目
2、的地址为D,路由的最长前缀匹配查找定义为:在前缀集合PA中搜索到的前缀Pm满足: 目的地址D匹配前缀Pm; 在集合PA中不存在其他的前缀P,满足D匹配P,且L(P)L(Pm),为什么是最长前缀匹配而不是精确匹配 CIDR等机制的引入:IP地址是无类别的,从IP地址不能判断出其网络前缀长度;IPv6单播地址也是无类别的。 最长前缀匹配给路由查询带来很大的困难,因为不仅要考虑前缀的值,还要考虑前缀的长度。 传统的关键字查找算法不能直接用于路由查询。 W. Doeringer, G. Karjoth, and M. Nassehi, “Routing on longest matching pref
3、ixes,” IEEE/ACM Trans. Networking, vol. 4, pp. 8697, Feb. 1996.,路由查询算法分类,按照采用的数据结构和实现方式,大致可以分为: 基于检索树(Trie)查找 基于硬件TCAM查找 分段查找 哈希表查找 Cache命中查找等。 按照路由查询的依据,可以分为: 基于路由前缀值的查找 基于路由前缀长度的查找,路由查询算法评价标准,时间复杂度(查找速度) 空间复杂度(占用的存储空间) 更新复杂度(增加、删除、变更路由表条目时,路由表的更新速度) 可扩展性 注意,上述复杂度一般是指最坏情况下的复杂度。,第二部分各种路由查询算法,路由前缀值的线
4、性查找,所有路由前缀按照线性链表的方式组织。 查询时要遍历路由表中的所有表项,并记录查询过程中匹配的最长路由前缀项,一直到最后一项为止。 时间复杂度O(N),空间复杂度O(N),插入/删除路由前缀条目的复杂度为O(1)。 如果使用有序链表,即把路由前缀按照长度大小排列,可以提高路由查询的平均速度,但更新复杂度上升。此时,时间复杂度O(N),空间复杂度O(N),插入/删除路由前缀条目的复杂度为O(N)。,基本的二叉检索树(Trie),路由前缀按照二叉树的结构来组织。 树中的每个节点含有路由前缀的1比特信息,并根据下一个比特生成两个子节点。 在树的非空节点处,存放该节点对应的下一跳信息。 在进行最
5、长前缀匹配时,首先根据路由前缀的比特信息遍历二叉树,达到最终匹配的叶子节点处,最后读出存储在叶子节点中的下一跳路由信息。,基本二叉检索树的一个例子,在查找的过程中,有可能出现多个前缀匹配的情况,如上图中的(A,C)和(B,D,E),这时要选择最长的前缀。 在查找时要记录当前最匹配的路由前缀,一直到叶子节点或者节点没有合适的分支为止。例如,对于地址111*,按照上图的例子,当查到B时,由于是匹配的,所以就记录下相应的信息,继续向下查询,没有更匹配的路由前缀,所以此时B就是最长匹配的路由前缀。 这种查找实际上是地址前缀长度空间的线性查找。因为是按照单个比特的顺序来查询的。,很显然,使用基本的二叉检
6、索树进行路由查询时,时间复杂度与树的深度(在这种算法中就等于路由前缀的最大长度)有关。如果最大可能的路由前缀长度为W,则最坏情况下的查找时间复杂度为O(W)。 最坏情况下的空间复杂度为O(N*W) 。 更新复杂度为O(W)。更新时需要先进行查找,找到之后进行相应的增删操作就可以了(包括中间节点和叶子节点两种情况)。 在IPv4中最多需要32次查找,在IPv6中最多需要128次查找。,路径压缩Trie,该算法是对基本二叉检索树的改进,最早起源于Patricia算法,后来Sklower对Patricia算法做了改进,使之可以用于路由查询。 其基本思想是去掉输出为1的中间节点,压缩叶子节点的路径,将
7、叶子节点提升到最近一级父节点的下一层。这样,每个中间节点都有两个输出。 由于有可能去掉了一些包含路由前缀的中间节点,所有某些节点会有多个路由前缀。 由于去掉了一些节点,某些比特将被忽略,所以节点要维护一个变量,用于维持下一个要检查的比特位。,路径压缩Trie对稀疏的基本Trie有明显的压缩效果,但对稠密的则作用不大。 路径压缩Trie不能从本质上降低树的深度,在最坏情况下它的时间复杂度仍然为O(W)。 路径压缩Trie的空间复杂度为O(N),因为这种Trie中N个叶子节点对应N1个内部节点。 路径压缩Trie更新算法的复杂度也是O(W),其动态性比基本Trie要差,因为当需要加入或者删除叶子节
8、点时,会导致其对应的若干条路径上的叶子节点位置发生变化。 这种算法在BSD系统上得到了实现(Radix树),并随着BSD的推广而得到广泛应用。,多比特检索树(Trie),在基本的二叉检索树中每次检查一个比特,即一级对应1个比特;如果让每一级对应多个比特,就可以大大降低树的深度。也就能够降低路由查询的时间复杂度。 每一级对应的比特数被称为查找步宽。同一级的步宽可以一样,也可以不一样。前者实现起来比较简单,但浪费存储空间,后者实现复杂一些,但是会节省一定的存储空间。 因为一次查找多个比特,因此不能处理任意长度的路由前缀,一般要使用前缀扩展。,每一级的步宽都是2,第一级的步宽是2 第二级三个节点步宽
9、是2,一个节点步宽是1,对于上图中绿色部分,如何应用多比特检索?,前缀扩展:将一条较短的路由前缀展开成多条较长的路由前缀集,这些前缀集的转发信息就是原来地址前缀所对应的转发信息。也就是扩展后的路由前缀要继承原来前缀的转发信息。例如,1*可以扩展为10*和11*。 对于Trie中不能直接应用多比特树的地方,可以先进行前缀扩展,使应用多比特树的局部成为一个满的子树。,由于步宽大于等于1,使检索树的深度明显降低,所以多比特检索树的时间复杂度比基本二进制Trie或路径压缩Trie要低,具体的数值与每一级步宽有关。当每一级步宽都是K时(这是多比特检索树中最简单的情况),时间复杂度为O(W/K)。 时间复
10、杂度降低的代价就是空间复杂度的上升,每一个中间节点都需要包含2k个指针(每一级步宽都是K),最差情况下每加入一个新前缀,需要插入W/K个中间节点,从而需要占用空间O(2k *W/K),所以空间复杂度为O(N*2k *W/K)。 更新时需要进行一次路由查找,然后更新节点的指针,最差情况下需要更新2k-1指针,所以更新复杂度为O(2k W/K)。,对于多比特检索树来说,当步宽为1时,就成为基本二叉检索树或路径压缩树,当步宽达到W时,时间复杂度为O(1),但空间复杂度变为O(2W)。 很显然,多比特检索树的主要问题就是引入了很多冗余路由前缀,占用了大量存储空间,所以对它的优化是研究的一个重点,例如有
11、些人就提出了步宽选择策略,也有人提出了一些压缩算法。 实际进行压缩时可以考虑互联网地址分布的特点,例如长度1624之间的前缀数最多。,叶子扩展的概念,路由前缀长度空间的二分查找,Trie树算法的实质是地址前缀长度空间的线性查找:先检查第1个(1k)个比特,再检查第2个(k+12k)个比特,一直到路由前缀的最大长度为止。 文献“Scalable high-speed prefix matching,Marcel Waldvogel,George Varghese,Jon Turner, Bernhard Plattner ,ACM Transactions on Computer Systems
12、, 2001”提出了地址前缀长度空间的二分查找法。 基本思想是把所有路由前缀按照其长度分为不同的前缀集合,每个前缀集合内采用哈希算法查找;查询时,从长度位W/2的集合开始,采用二分查找法。,图中节点对应的是前缀集合,而不是某个或某几个比特位,为了保证该算法的正确性,需要引入一个被成为Marker的表项。考虑下面的例子。有4个地址前缀:0*、1*、00*、110*。现查找110*。,路由前缀长度空间的二分查找在路由查询方面的时间复杂度为O(logW),对IPv4来说,最多需要5次查询,对IPv6来说,最多需要7次查询。 对于每个前缀,最多可能需要logW个Marker,因此,算法的空间复杂度为O
13、(N*logW)。 路由更新比较麻烦,其复杂度为O(N*logW),因为最坏情况下更新一个前缀可能影响N-1个前缀,而一个前缀又有可能对应logW 个Maker。 哈希算法也是该算法中的关键问题。,TCAM,TCAM(Ternary Content Address Memory)是一种新型的存储器,存放一系列路由表项,为到来的每一个分组并行查找所有的路由前缀。因此,它的路由查询只需要一次内存访问,若有多个匹配表项,经过优先级比较后,确定路由信息。 路由管理比较复杂,路由表的动态删除和更新会导致TCAM中存放大量的碎片。 成本昂贵,功耗比较大,存储容量小。 这实际上是一种硬件查找方法。,基于分段
14、的查找,这种方案实际上是多比特检索树的具体硬件实现方案。典型的是Gupta等人提出的DIR-24-8-BASIC查找算法。 DIR-24-8-BASIC算法是把IPv4地址空间分为长度分别为24和8的两部分(TBL24和TBLlong),最大内存访问次数为2,采用硬件流水线技术可以用1次内存访问。第一部分是22416M个表项;第二部分256个表项。 因为是基于多比特检索树,因此需要进行前缀扩展。 第一级中的节点携带的指针信息指示可能存在于第2级中的一棵子树。,缓存(Cache)策略,缓存策略是指把最近查找过的目的地址和路由下一跳信息放在缓存之中,当IP分组达到时,先从缓存中查找,找不到时再执行
15、最长前缀匹配策略。 显然,数据包的相关度越大,这种方法的有效性就越高。 缓存的命中率是这种策略的一个关键。由于缓存容量有限,且数据日益多样化,缓存的命中率大大降低。,哈希查找,哈希(Hash)算法在路由查询中应用的时候,通过查找建立的哈希索引,来找到对应的路由前缀。 理论上讲,哈希算法的时间复杂度和空间复杂度都很低,但实际上很难找到一个完美的或者近似完美的哈希函数。另外,路由更新也往往会导致哈希表的重建。 一般来说,把整个路由表做为一个哈希表是不切实际的,可以在局部范围内应用哈希算法。如在前缀长度空间的二分查找中,就可以在同一前缀长度的前缀集合内应用哈希算法。,其他路由查询算法,层压缩树 地址
16、区间的二分查找法 多路和多列查询算法等,第三部分路由查询算法的评测,基本算法在时间复杂度等方面的比较,其他需要考虑的方面,算法的可扩展性。即路由前缀长度增加后,不能使查询的复杂度大幅度上升。 路由前缀长度空间的二分查找的扩展性比较好,从IPv4到IPv6后,最差情况下的查询次数从5升到7。 各种基于检索树的查找算法可扩展性一般,多比特查找树可以通过增加K的方法来降低时间复杂度,但会带来空间复杂度的大幅度上升。不过也可以通过分段的方法来部分地解决这方面的问题。,对路由查询算法实际评测的方法,测试数据:包括路由前缀和目的地址序列两部分。 路由前缀的生成有三种方法 典型数据生成,即采用骨干路由器统计
17、的实际路由表,测试结果更有实际意义。 随机生成,测试结果可以反映算法的平均性能。 拓扑结构生成,模拟互联网拓扑结构生成测试数据。 目的地址序列的生成有两种方法 随机地址生成 加权随机地址生成,即按照互联网实际目的地址的分布情况进行加权。,被测算法指具体被评测的路由查询算法 参考算法是指用来参照对比的基本路由查询算法,如路径压缩Trie等。 测试执行则是从查询的时间复杂度、空间复杂度、更新复杂度等几个方面进行测试。 测试结果反映被测算法在各个评价标准方面的性能。,路由查询和路由更新的分析模型,一般来说,为了提高路由查询的速度,往往采用比较复杂的数据结构,这就造成路由更新的效率很低。 路由查询和路
18、由更新都要访问路由表,由于读写的冲突,它们对路由表的访问一般是互斥的。 通常考虑的是路由更新对路由查询的影响。 路由查询和路由更新之间的定量关系,还没有一个明确的结论。,一个简单的分析模型,路由查询请求的到达一般是泊松分布;路由更新的则未必是,具体的分布目前还没有定论,为了简单起见,可以假设也是泊松到达。 实际中路由查询请求的到达率要远大于路由更新请求到达率。 一般来说,路由更新请求不会被丢弃,但路由查询请求就不一定了,如果网络拥塞,或者分组排队时间过长,都有可能造成分组被丢弃,自然路由查询请求也就被丢弃了。 在实际路由器中,路由查询和路由更新一般没有优先级区别。 可以把路由表做为一个服务者,
19、它的服务时间是一般分布。 路由更新的服务时间一般要大于路由查询的服务时间。,第四部分流分类简介,流分类概述,根据一定的分类规则,检查IP数据包中的多个字段,对IP包进行分类,并应用不同的处理策略。也称为IP包分类或者IP分类。 需求: 防火墙 策略路由 服务质量 流量计费等。,检查的字段: 源地址和目的地址 源端口和目的端口 协议(IPv4)、下一个首部(IPv6) 业务类型(IPv6) 流标签(IPv6)等。 处理策略: 是否转发数据包; 向哪里转发数据包; 数据包应该得到什么样的服务; 相应流量数据包应该收取多少费用等。,流分类一般要检查IP数据包中的多个字段(域),而路由查询只检查目的I
20、P地址字段,如果把路由查询看作是一维检索的话,那么流分类就是多维检索。实际上也可以把路由查询看成是流分类的一个特例。,流分类的数学定义,每一条流分类规则R和数据包首部H中的d个域(维)有关,相应地可以把每一条规则划分为d个分量(可以假设每一分量有W个比特)。 我们称规则R和首部H匹配,当且仅当H的每一个域Hi和R相应的域Ri匹配。 H可能匹配规则库RS中的多条规则(即发生规则冲突),因此要为每一条规则赋予一个优先级。 流分类实质上就是在RS中搜索给定数据包首部H的最佳匹配规则的过程。通常,最佳匹配规则指优先级最高的规则。,给定一个流分类规则集合RS,集合含有N个规则,设到达的数据包首部为H,规则集合中可能存在多个规则Ri匹配H。对于每一条规则,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饮料行业品检奖惩制度
- 宿舍管理奖惩制度
- 公司车辆维修奖惩制度
- 班级里学生奖惩制度范本
- 幕墙公司设计部奖惩制度
- 学校行为习惯奖惩制度
- 车间员工与主管奖惩制度
- 物流公司奖惩制度范本
- 社区消防责任奖惩制度
- 超市保安安检奖惩制度
- 食品生产加工小作坊许可申请书
- 医疗设备维护与质量控制
- 2026年安徽邮电职业技术学院单招职业技能测试必刷测试卷附答案
- 企业员工福利及关爱基金管理细则
- DB31∕ 736-2020 纸面石膏板单位产品能源消耗限额
- GB/T 3884.1-2025铜精矿化学分析方法第1部分:铜含量的测定碘量法和电解法
- 2025年湖北三峡职业技术学院单招(计算机)考试参考题库附答案解析
- 临床药师竞聘演讲
- 2026年南通科技职业学院单招职业技能测试必刷测试卷带答案解析
- 无人机uom合格证考试题库及答案
- 特种设备安全员守则(2025版)
评论
0/150
提交评论