《路由表信息存储方法以及路由设备.pdf》由会员分享,可在线阅读,更多相关《路由表信息存储方法以及路由设备.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102447604 A (43)申请公布日 2012.05.09 C N 1 0 2 4 4 7 6 0 4 A *CN102447604A* (21)申请号 201010298072.0 (22)申请日 2010.09.30 H04L 12/56(2006.01) (71)申请人迈普通信技术股份有限公司 地址 610041 四川省成都市高新区九兴大道 16号迈普大厦 (72)发明人叶学东 梁晖 (74)专利代理机构成都虹桥专利事务所 51124 代理人邹裕蓉 (54) 发明名称 路由表信息存储方法以及路由设备 (57) 摘要 本发明所要解决的技术问题是,在现有的内 。
2、存条件下,成倍增加路由器可存储的路由条目数 的路由表信息存储方法,以及实现该方法的路由 设备。将内存划分为工作区、压缩块存储区;将路 由表信息划分为若干逻辑块,记录路由表中各路 由表节点,其地址为对应的逻辑地址,逻辑地址包 括逻辑块ID和块内偏移地址;将工作区划分为 若干工作区块;根据分配策略,将部分逻辑块保 存在工作区的工作区块中,并记录工作区块ID和 逻辑块ID的映射关系表,将另一部分逻辑块进行 压缩,形成压缩块,保存在压缩块存储区;当前访 问的路由表节点所在的逻辑块需保存在工作区块 中。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 。
3、页 说明书 4 页 附图 4 页 CN 102447627 A 1/2页 2 1.路由表信息存储方法,其特征在于,包括步骤: 将内存划分为工作区、压缩块存储区; 将路由表信息划分为若干逻辑块,记录路由表中各路由表节点,其地址为对应的逻辑 地址,所述逻辑地址包括逻辑块ID和块内偏移地址; 将工作区划分为若干工作区块;根据分配策略,将部分逻辑块保存在工作区的工作区 块中,并记录工作区块ID和逻辑块ID的映射关系表,将另一部分逻辑块进行压缩,形成压 缩块,保存在压缩块存储区;当前访问的路由表节点所在的逻辑块需保存在工作区块中。 2.如权利要求1所述路由表信息存储方法,其特征在于,将路由表信息划分为相。
4、同大 小的逻辑块,将工作区划分为与所述逻辑块大小相同的工作区块。 3.如权利要求1所述路由表信息存储方法,其特征在于,还包括:对工作区块的访问进 行统计,并根据统计结果得到该工作区对应的逻辑块的访问情况; 所述分配策略为,工作区中保存当前需要使用的逻辑块与使用记录较近的逻辑块;或 者,工作区中保存当前需要使用的逻辑块与使用频率较高的逻辑块;或者,工作区中保存当 前需要使用的逻辑块与使用记录较近、使用频率较高的逻辑块。 4.如权利要求1所述路由表信息存储方法,其特征在于,增加、访问或修改路由表节点 在工作区中进行; 当工作区中无空余的工作区块时,需先根据分配策略选出一个工作区块,并将该工作 区块。
5、中的逻辑块压缩后保存至压缩块存储区,使得该工作区块空余,再在该空余工作区块 中进行路由表节点的增加、访问或修改操作后,修改映射关系表。 5.如权利要求1所述路由表信息存储方法,其特征在于,当删除整块逻辑块时,直接删 除该压缩块存储区中的该逻辑块对应的压缩块,当删除工作区中的整块逻辑块时,还需在 映射关系表中删除该逻辑块对应的表项。 6.路由设备,其特征在于,包括内存划分模块、逻辑块划分模块、工作区划分模块、存储 分配模块; 所述内存划分模块用于,将内存划分为工作区、压缩块存储区; 所述逻辑块划分模块用于,将路由表信息划分为若干逻辑块,记录路由表中各路由表 节点,其地址为对应的逻辑地址,所述逻辑。
6、地址包括逻辑块ID和块内偏移地址; 所述工作区划分模块用于,将工作区划分为若干工作区块; 所述存储分配模块用于,根据分配策略,将部分逻辑块保存在工作区的工作区块中,并 记录工作区块ID和逻辑块ID的映射关系表,将另一部分逻辑块进行压缩,形成压缩块,保 存在压缩块存储区;当前访问的路由表节点所在的逻辑块需保存在工作区块中。 7.如权利要求6所述路由设备,其特征在于,所述逻辑块划分模块还用于,将路由表信 息划分为相同大小的逻辑块; 所述工作区划分模块用于,将工作区划分为与所述逻辑块大小相同的工作区块。 8.如权利要求6所述路由设备,其特征在于,所述存储分配模块还用于,对工作区块的 访问进行统计,并。
7、根据统计结果得到该工作区对应的逻辑块的访问情况;所述分配策略为, 工作区中保存当前需要使用的逻辑块与使用记录较近的逻辑块;或者,工作区中保存当前 需要使用的逻辑块与使用频率较高的逻辑块;或者,工作区中保存当前需要使用的逻辑块 与使用记录较近、使用频率较高的逻辑块。 权 利 要 求 书CN 102447604 A CN 102447627 A 2/2页 3 9.如权利要求6所述路由设备,其特征在于,所述存储分配模块还用于,当在工作区中 进行增加、访问或修改路由表节点时,如工作区中无空余的工作区块,则需先根据分配策略 选出一个工作区块,并将该工作区块中的逻辑块压缩后保存至压缩块存储区,使得该工作 。
8、区块空余,待在该空余工作区块中进行路由表节点的增加、访问或修改操作后,修改映射关 系表。 10.如权利要求6所述路由设备,其特征在于,所述存储分配模块还用于,当删除整块 逻辑块时,直接删除该压缩块存储区中的该逻辑块对应的压缩块,当删除工作区中的整块 逻辑块时,还需在映射关系表中删除该逻辑块对应的表项。 权 利 要 求 书CN 102447604 A CN 102447627 A 1/4页 4 路由表信息存储方法以及路由设备 技术领域 0001 本发明涉及存储技术。 背景技术 0002 对于嵌入式设备路由器中的路由表的存储需要占用很大的内存空间。比如:根据 对路由器的验证测试表明,OSPF(开放。
9、式最短路径优先协议)IPv4模式平均每一条路由消 耗内存1KB,OSPF IPv6模式平均每一条路由消耗内存1.1KB,IP核心平均每一条路由消耗 300B,1M条路由规模下,OSPF+IP核心,仅路由存储就需要消耗1.3-1.4GB内存。这样内存 往往容易成为路由器的瓶颈。; 0003 如果能够在现有的内存条件下,成倍增加路由器可存储的路由条目数,则可大大 提升路由器的对路由信息的处理能力。 发明内容 0004 本发明所要解决的技术问题是,在现有的内存条件下,成倍增加路由器可存储的 路由条目数的路由表信息存储方法,以及实现该方法的路由设备。 0005 本发明为解决上述技术问题所采用的技术方案。
10、是,提供一种路由表信息存储方 法,包括步骤: 0006 将内存划分为工作区、压缩块存储区; 0007 将路由表信息划分为若干逻辑块,记录路由表中各路由表节点(一个路由表节点 对应一条路由条目),其地址为对应的逻辑地址(包括逻辑块ID和块内偏移地址); 0008 将工作区划分为若干工作区块;根据分配策略,将部分逻辑块保存在工作区的工 作区块中,并记录工作区块ID和逻辑块ID的映射关系表,将另一部分逻辑块进行压缩,形 成压缩块,保存在压缩块存储区;当前访问的路由表节点所在的逻辑块需保存在工作区块 中。 0009 路由器中会保留多张路由表,这些路由表之间包含的路由信息大同小异,信息本 身有很大的冗余。
11、度。比如同一条ospf路由会在ospf链路状态数据库、ospf路由表、重分发 路由表、ip核心路由表、转发表、以及一些影子表的中同时存在。而且,在实际应用中,路由 表大多是在一个或者几个子网之中,同时路由信息也在有限的几个下一跳和接口之中,路 由信息很有规律。本发明利用路由表信息冗余度很大的特性,将内存划分为工作区、压缩块 存储区;工作区仅存放一部分当前需要访问的逻辑块;其它逻辑块均进行压缩后存储至压 缩块存储区,极大地节省了内存资源,在存储具有相同路由条目数的路由表信息的情况下, 采用本发明方法所占的内存空间只有现有路由表信息存储方法的几分之一到十几分之一。 0010 进一步的,为了方便映射。
12、,将路由表信息划分为相同大小的逻辑块,将工作区划分 为与所述逻辑块大小相同的工作区块。这样工作区块与逻辑块大小一致,使得在工作区块 中对路由表节点的寻址更简单。 0011 分配策略除了应在工作区中保存当前需要使用的逻辑块之外,在工作区中对其它 说 明 书CN 102447604 A CN 102447627 A 2/4页 5 逻辑块的保存可以是随机的,但这样可能造成工作区中逻辑块频繁地切换,因为,如工作区 中有空余的工作区块,但当前需要访问的路由表节点所在逻辑块不在工作区内,则需将当 前需要访问的路由表节点所在压缩块解压后切换至空余工作区块,并更新映射关系表;如 工作区中无空余的工作区块且当前。
13、需要访问的路由表节点所在逻辑块不在工作区内,还需 先根据分配策略选出一个工作区块,将该工作区块中的逻辑块压缩后保存至压缩块存储 区,再将当前需要访问的路由表节点所在压缩块解压后切换至该工作区块,同时修改映射 关系表。进一步的,为了尽量减小工作区块与压缩块的交换,对工作区块的访问进行统计, 并根据统计结果得到该工作区对应的逻辑块的访问情况,并执行分配策略;所述分配策略 为,工作区中保存当前需要使用与使用记录较近的逻辑块。或者,工作区中保存当前需要使 用与使用频率较高的逻辑块。或者,工作区中保存当前需要使用与使用记录较近、使用频率 较高的逻辑块。选择使用频率较低和/或使用记录较远的逻辑块进入压缩块。
14、存储区,因此 不常用的路由表节点所在的逻辑块由于活动频率低,基本保存在压缩块存储区中,活动频 率高的路由表节点所在的逻辑块保存在工作区中,这就保证了对路由表节点的访问效率被 过于频繁地工作区中逻辑块切换。 0012 提供一种实现上述方法的路由设备,包括内存划分模块、逻辑块划分模块、工作区 划分模块、存储分配模块; 0013 内存划分模块用于,将内存划分为工作区、压缩块存储区; 0014 逻辑块划分模块用于,将路由表信息划分为若干逻辑块,记录路由表中各路由表 节点对应的逻辑块ID以及块内偏移地址; 0015 工作区划分模块用于,将工作区划分为若干工作区块; 0016 存储分配模块用于,根据分配策。
15、略,将部分逻辑块保存在工作区的工作区块中,并 记录工作区块ID和逻辑块ID的映射关系表,将另一部分逻辑块进行压缩,形成压缩块,保 存在压缩块存储区;当前访问的路由表节点所在的逻辑块需保存在工作区块中。 0017 进一步的,逻辑块划分模块还用于,将路由表信息划分为相同大小的逻辑块;工作 区划分模块用于,将工作区划分为与所述逻辑块大小相同的工作区块。 0018 进一步的,存储分配模块还用于,对工作区块的访问进行统计,并根据统计结果得 到该工作区对应的逻辑块的访问情况;所述分配策略为,工作区中保存当前需要使用的逻 辑块与使用记录较近的逻辑块;或者,工作区中保存当前需要使用的逻辑块与使用频率较 高的逻。
16、辑块;或者,工作区中保存当前需要使用的逻辑块与使用记录较近、使用频率较高的 逻辑块。 0019 本发明的有益效果是,在内存空间不变的情况下,极大地提高了路由表存储量,解 决了目前庞大路由表信息带来的内存瓶颈问题。 附图说明 0020 图1为路由设备示意图。 0021 图2为工作区存储分配示意图; 0022 图3为工作区块与逻辑块示意图; 0023 图4为压缩块存储分配示意图; 0024 图5为添加路由表节点时的流程; 说 明 书CN 102447604 A CN 102447627 A 3/4页 6 0025 图6为访问路由表节点时的流程。 具体实施方式 0026 路由设备对路由表信息的存储空。
17、间采用逻辑空间进行分配,并将逻辑空间以块为 单位进行压缩后保存在特定的内存空间中。如图1所示,路由设备包括内存划分模块、逻辑 块划分模块、工作区划分模块、存储分配模块。 0027 内存划分模块首先根据实际的业务规划在内存中划出两块连续的空间分别作为 工作区和压缩块存储区,工作区和压缩块存储区的大小可根据配置调整。如图2所示,工 作区划分模块在工作区的内存池中将存储空间划分成大小固定的工作区块,并且指定每个 工作区块的块ID为随块地址递增的顺序号,即分别为(工作区起始地址/块大小)、 (工作区结束地址/块大小)-1);逻辑块划分模块将路由表信息划分为若干逻辑块,并记 录路由表中各路由表节点对应的。
18、逻辑空间(逻辑块ID以及块内偏移地址),提供对路由表 逻辑空间进行分配和释放的接口。如图3所示,逻辑块大小和工作区块大小一致。逻辑块 ID为(逻辑地址起始地址/块大小).(可寻址最大逻辑地址/块大小)-1)。存储分配 模块将当前没有使用的逻辑块进行压缩后,以压缩块的形式保存在压缩块存储区的内存池 中。由于逻辑块的大小是固定的,压缩块的大小是随逻辑块中的内容的变化而变化,但每个 压缩块解压后的大小与工作区块的大小相等,为了压缩后的块的管理,建立一个压缩块存 储区的内存池,并且实现专门的接口在该内存池中分配和释放内存,可以分配的内存大小 可以为16,32,64,128,256,512,1024,2。
19、048等。变长压缩块存储如图4所示:使用两个的 全局变量,即内存池首地址bFreeBuf和内存桶bQhead。在分配压缩块内存时额外分配 struct bType(对分配块的进行管理的管理结构体)的管理结构;当要释放压缩块内存时, 并不将内存释放到压缩块存储区的内存池中,而是将分配的structbType(即图4中的bp) 挂载到bQhead对应的链表中。这样当下一次需要分配该size(如图4中所示的256字 节)的内存时,就可以直接从该链表上取来使用。 0028 对分配新的路由表节点内容时,如果工作区中的当前块中有空余空间可以分配 时,则根据该块的逻辑块ID和块内地址的偏移量,在该块中为路由。
20、表节点分配空间。如果 工作区的当前块中没有足够的剩余空间,则先查看工作区是否存在有没有使用的块,如果 存在没有使用的块,则为该块分配一个没有被使用的逻辑地址空间,并在映射关系表中添 加工作区块ID和逻辑块ID的映射表项;如果不存在没有使用的块时,则需要使用交换算法 将一块换出后再为该块分配一个没有被使用的逻辑地址空间并在映射关系表中添加映射 表项后根据该块的逻辑块ID和块内地址的偏移量,在该块中路由表节点分配空间。具体流 程如图5所示。 0029 对路由表节点访问:首先取出当前工作区块对应的逻辑块ID并一个寄存器中,如 当前需访问的逻辑块ID与寄存器保存的逻辑块ID一致时则使用偏移量直接访问;。
21、如果不 一致时,则使用当前需要访问的逻辑块ID查映射关系表,如果在映射关系表中找到,则将 当前需要访问的逻辑块ID保存到该寄存器,并该逻辑块ID对应的工作区块中访问;如果在 映射关系表中没有找到,则需要从压缩块存储区将需要访问的逻辑块ID对应的压缩块解 压后换入工作区中,并在映射关系表中添加该逻辑块ID和工作区块ID的映射表项。 0030 工作区块和压缩块的交换过程具体为:如果工作区中还有空余的工作区块时,只 说 明 书CN 102447604 A CN 102447627 A 4/4页 7 直接将需要换入的压缩块解压到工作区中;如果工作区没有空余的工作区块时,可以使用 LRU(最近最久未使用。
22、)等算法,将最久没有被使用过的工作区块对应的逻辑块换出。对于 要被换出的逻辑块,如果该逻辑块中的内容没有被改变过,则可以直接将该逻辑块丢弃;如 果该逻辑块中的内容被改变过,则需要将压缩块存储区中对应该逻辑块ID的压缩块删除, 同时将工作区中的逻辑块压缩后保存到压缩块存储区中。对于换入(逻辑块以压缩块的形 式解压后保存至工作区为换入),需要在映射关系表中添加其逻辑块ID和工作区块ID的映 射表项;对于换出(逻辑块从工作区块压缩后保存至压缩块存储区为换出),则需要将映射 关系表中对应的逻辑块ID和工作区块ID的映射表项删除。 0031 修改逻辑块中内容时,直接在工作区中对该逻辑块进行修改,在需要换。
23、出时还应 修改在压缩块存储区对应的压缩块。如果存在工作区块和压缩块的交换时,需要修改映射 关系表。 0032 如果需要删除工作区中的整块的内容,则直接将压缩块存储区中逻辑块对应的压 缩块进行删除,同时在映射关系表中删除相关的表项。 说 明 书CN 102447604 A CN 102447627 A 1/4页 8 图1 图2 图3 说 明 书 附 图CN 102447604 A CN 102447627 A 2/4页 9 图4 说 明 书 附 图CN 102447604 A CN 102447627 A 3/4页 10 图5 说 明 书 附 图CN 102447604 A CN 102447627 A 4/4页 11 图6 说 明 书 附 图CN 102447604 A 。