CN108683595A - 一种优化的路由存储方法 - Google Patents
一种优化的路由存储方法 Download PDFInfo
- Publication number
- CN108683595A CN108683595A CN201810369065.1A CN201810369065A CN108683595A CN 108683595 A CN108683595 A CN 108683595A CN 201810369065 A CN201810369065 A CN 201810369065A CN 108683595 A CN108683595 A CN 108683595A
- Authority
- CN
- China
- Prior art keywords
- routing
- hop
- node
- storage method
- route storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种优化的路由存储方法,其将路由中用到的不同下一跳集中存储,且同一个下一跳可被多条路由所共享。本发明提供的方案将下一跳由按路由条目分散存储改为集中共享式存储,使得相同的下一跳只需保存一份,且可以由所有用到它的路由共享,节约了大量内存,有效克服现有技术中所存在的问题。
Description
技术领域
本发明涉及数据通信技术,具体涉及IP路由技术。
背景技术
路由表通常以二叉树的形式存储在路由器内存中,在转发报文时需要根据报文的目的地址查询路由表,找到相应的路由节点并从中获得下一跳信息,然后根据下一跳信息决定从哪个接口转发出去。
由于查询二叉树形式的路由表相对较慢,为了加速转发,通常会把上次查询的结果缓存起来,即建立Cache,以便下次再遇到相同目的地址的报文时可以直接从Cache里查到下一跳信息。由于Cache以哈希表的形式组织,查询速度一般情况下比查路由表要快得多,所以转发报文时可以先查Cache,如果能查到结果,则直接转发,避免了查询路由表的操作以加快转发;如果查不到,则查询路由表并把查询结果加入到Cache里。
上述现有路由存储方案中,由于路由器的接口数量和所连接的对端的数量都是有限的,因此所有路由的不同下一跳的个数也是有限的。在路由数目较多时,很多路由都会有相同的下一跳,如果每条路由的下一跳都独立保存,那么相同的下一跳会被保存很多份,浪费大量内存空间。
再者,Cache作为路由查询的结果,必然与路由存在关联,当路由发生变化时,需要删除与之相关的Cache表项,以确保转发的正确性。为了做到这一点,需要把路由条目和Cache表项之间的关联关系记录下来,通常的做法是在路由条目里保存一个链表或者二叉树来记录与之关联的Cache表项。在添加新的路由时,除了需要在路由表的二叉树中添加新的路由节点外,还需要遍历新路由节点的父节点关联的所有Cache表项,并从中删除能被新路由覆盖的表项,这种方式大大影响路由效率。
发明内容
为了清楚表述本方案,这里首先解释一下本方案中涉及到的两个技术名称:
下一跳-一条路由的出接口和对端IP地址;
Cache-路由缓存,把查路由表的结果缓存起来,以便下次转发相同目的地址的报文时能直接从缓存中得到结果,而无需再次查路由表,以加快转发速度。
针对现有路由存储方案需要大量内存空间的问题,亟需一种占据内存空间小的路由存储新方案。
为此,本发明所要解决的问题是提供一种优化的路由存储方法,以克服现有技术所存在的问题。
为了解决上述问题,本发明提供的优化的路由存储方法,将路由中用到的不同下一跳集中存储,且同一个下一跳可被多条路由所共享。
进一步的,所述路由中用数组或者哈希表的形式组织管理集中存储的不同下一跳。
进一步的,在路由节点里只保存指向下一跳的指针。
进一步的,所述方法在每个下一跳里记录一个引用计数值,当该引用计数变为0时,删除该下一跳。
进一步的,所述方法中将ache管理结构直接加入到路由表的二叉树中。
进一步的,在有新的路由节点加入时,则直接从这个新节点的子树中删除全部没被其他路由覆盖的表示Cache的节点。
本发明提供的方案将下一跳由按路由条目分散存储改为集中共享式存储,使得相同的下一跳只需保存一份,且可以由所有用到它的路由共享,节约了大量内存,有效克服现有技术中所存在的问题。
再者,本方案进一步的将Cache管理结构跟路由表整合以加速Cache刷新,大大提高路由的更新效率。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明实例中优化的路由存储示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
本方案使用集中存储下一跳的方式,使得相同的下一跳只需保存一份,且可以由所有用到它的路由共享,由此来节约大量内存。
具体,本方案将所有路由用到的不同下一跳集中保存起来,这里可以用数组或者哈希表的形式组织管理,使得相同的下一跳只需保存一份。
在用数组来集中管理不同下一跳时,可将所有不同的下一跳,保存于一个数组中。在添加新的下一跳时,首先在该数组中进行查找,查询是否已经存在相同的下一跳,如果存在,则把这个已经存在的下一跳作为结果返回;如果不存在,则在数组中***新的下一跳结构,然后返回这个新的下一跳。
同时,路由节点里只需要保存指向上述数组中的下一跳结构的指针,而无需重复保存下一跳的内容;不同路由节点里的下一跳指针可以指向同一个下一跳结构,由此使得同一个下一跳结构就可以被多条路由所共享,即拥有相同下一跳的所有路由共享同一份下一跳结构,可以大大节约内存。
本方案中在每个下一跳里记录一个引用计数值,表示有多少条路由正在引用它(即有多少个路由节点里有指针指向它),当该引用计数变为0时(即没有路由正在使用它时),删除该下一跳,从下一跳表中移除。
由此,本方案创新的将下一跳由按路由条目分散存储改为集中共享式存储,有效的节约内存。
在此基础上,本方案进一步的将Cache管理结构与路由表进行整合,由此实现提高路由更新效率。
本方案将Cache管理结构作为一个虚拟的以目的地址为前缀以全1为掩码的路由节点,将其以添加路由一样直接加入到路由表的二叉树中,而无需刻意跟某条真实路由相关联。
据此,如果有新的路由节点加入进来,则直接从这个新节点的子树中删除全部没被其他路由覆盖的表示Cache的节点即可,无需回溯到父节点再遍历链表或树,操作自然且效率更高。
针对上述方案,以下通过一实例来进行说明。
参见图1,其所示为本实例中实现路由针对下一跳集中存储与共享的示意图。
由图可知,本实例中将所有路由用到的不同下一跳集中保存起来,使得下一跳数组全局唯一,每个下一跳可以被多条路由所共享。
附图所示方案中,有两个路由节点的下一跳指针指向了同一个下一跳结构,则表明这两条路由的下一跳相同。
再者,本实例将Cache管理节点像普通路由节点一样加入路由表里,其里面保存的不是指向下一跳的指针,而是指向Cache内容的指针(如附图中,实心节点表示路由节点,空心节点表示Cache管理节点)。Cache管理节点与Cache表项一一对应,表示相应的Cache表项依赖于与该Cache管理节点最接近的路由节点。这样,当路由发生变化时,直接把发生变化的路由节点的子树里的所有Cache管理节点及其对应的Cache表项删除即可。
例如,有两条Cache表项,目的地址分别为1.1.1.10和1.1.0.5,都依赖于同一条路由1.1.0.0/16,如果此时增加一条新的路由1.1.1.0/24,那么1.1.1.10这个Cache管理节点将会位于以新的路由节点1.1.1.0/24为根的子树中(即被新路由覆盖),那么这条Cache需要被删除(此后如果还有到1.1.1.10的流量,这条Cache会被重新创建,但将依赖于新路由1.1.1.0/24);而1.1.0.5不在以新增路由节点为根的子树中,没有被覆盖到,所以不用删除,仍然依赖于原来的路由1.1.0.0/16。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (6)
1.优化的路由存储方法,其特征在于,将路由中用到的不同下一跳集中存储,且同一个下一跳可被多条路由所共享。
2.根据权利要求1所述的路由存储方法,其特征在于,采用数组或者哈希表的形式组织管理集中存储的不同下一跳。
3.根据权利要求1所述的路由存储方法,其特征在于,在路由节点里只保存指向下一跳的指针。
4.根据权利要求1所述的路由存储方法,其特征在于,所述方法在每个下一跳里记录一个引用计数值,当该引用计数变为0时,删除该下一跳。
5.根据权利要求1所述的路由存储方法,其特征在于,所述方法中将ache管理结构直接加入到路由表的二叉树中。
6.根据权利要求5所述的路由存储方法,其特征在于,在有新的路由节点加入时,则直接从这个新节点的子树中删除全部没被其他路由覆盖的表示Cache的节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810369065.1A CN108683595A (zh) | 2018-04-23 | 2018-04-23 | 一种优化的路由存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810369065.1A CN108683595A (zh) | 2018-04-23 | 2018-04-23 | 一种优化的路由存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108683595A true CN108683595A (zh) | 2018-10-19 |
Family
ID=63801141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810369065.1A Pending CN108683595A (zh) | 2018-04-23 | 2018-04-23 | 一种优化的路由存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108683595A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897562A (zh) * | 2005-07-12 | 2007-01-17 | 华为技术有限公司 | 路由转发及路由转发的下一跳表存储方法 |
CN1897560A (zh) * | 2005-07-12 | 2007-01-17 | 中兴通讯股份有限公司 | 一种提高路由表容量的方法 |
CN102035738A (zh) * | 2010-12-14 | 2011-04-27 | 中兴通讯股份有限公司 | 一种获取路由信息的方法及装置 |
US20150078384A1 (en) * | 2013-09-15 | 2015-03-19 | Nicira, Inc. | Tracking Prefixes of Values Associated with Different Rules to Generate Flows |
CN107204926A (zh) * | 2017-05-16 | 2017-09-26 | 上海博达数据通信有限公司 | 预处理cache的路由快速查找方法 |
-
2018
- 2018-04-23 CN CN201810369065.1A patent/CN108683595A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897562A (zh) * | 2005-07-12 | 2007-01-17 | 华为技术有限公司 | 路由转发及路由转发的下一跳表存储方法 |
CN1897560A (zh) * | 2005-07-12 | 2007-01-17 | 中兴通讯股份有限公司 | 一种提高路由表容量的方法 |
CN102035738A (zh) * | 2010-12-14 | 2011-04-27 | 中兴通讯股份有限公司 | 一种获取路由信息的方法及装置 |
US20150078384A1 (en) * | 2013-09-15 | 2015-03-19 | Nicira, Inc. | Tracking Prefixes of Values Associated with Different Rules to Generate Flows |
CN107204926A (zh) * | 2017-05-16 | 2017-09-26 | 上海博达数据通信有限公司 | 预处理cache的路由快速查找方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6490592B1 (en) | Method of and apparatus for generating a tree data structure supporting longest match lookup | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN100496019C (zh) | IPv6路由表快速查找和更新的方法 | |
US7774538B2 (en) | Method for ternary contents address memory table management | |
CN103546380B (zh) | 一种基于策略路由的报文转发方法和装置 | |
CN103560959B (zh) | 一种选择静态路由的方法及装置 | |
CN100566281C (zh) | 虚拟私用网路由查找的方法和装置 | |
CN103780491B (zh) | 一种实现IPv6快速路由查找的方法 | |
CN113810287B (zh) | 一种基于ndn和sdn的数据检索与推送方法 | |
CN101695054A (zh) | 路由维护方法和装置以及路由查询方法和装置 | |
CN102405623A (zh) | 路由表项的存储方法和装置 | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
CN108600099A (zh) | 一种报文转发方法、装置及Leaf设备 | |
CN101171802B (zh) | 网络节点,网络,产生在网络中传送信息的对应关系产生方法 | |
CN100397816C (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN101562574A (zh) | 一种路由表的更新方法及装置 | |
CN103238300B (zh) | 管理网络单元的路由选择信息库中的过时路由移除的方法及装置 | |
WO2010054599A1 (zh) | 存储数据的方法、装置及*** | |
CN107181683B (zh) | 结合命名数据网络和路名的车载网络数据分发路由维护方法 | |
CN108683595A (zh) | 一种优化的路由存储方法 | |
CN100393072C (zh) | 一种表项的存储方法、装置及查询方法 | |
CN106656816B (zh) | 分布式ipv6路由查找方法和*** | |
CN102724061B (zh) | 一种网络接口管理方法 | |
CN102045262B (zh) | 媒体接入控制地址表更新方法、装置及网络设备 | |
KR100413528B1 (ko) | Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181019 |
|
RJ01 | Rejection of invention patent application after publication |