专利名称:一种获取路由信息的方法及装置的制作方法
技术领域:
本发明涉及第六版互联网协议(IPv6 Jnternet Protocol Version 6)技术,特别 是指一种IPv6中获取路由信息的方法及装置。
背景技术:
IPv6 是互联网工程任务组(IETF, Internet Engineering Task Force)设计的、 用于替代现行版本互联网协议(IP,Internet I^otocol),即第四版互联网协议(IPv4, Internet Protocol Version 4),的下一代 IP0
路由表主要用于记录网络信息从信源到信宿的路径,图1为传统的IPv6路由表结 构示意图,从图1中可以看出,在传统的IPv6路由存储系统中,IPv6路由表中携带有用于 指导转发的下一跳信息,即每条路由条目中均包含下一跳信息,下一跳信息包括信息最 大传输单元(MTU,Maximum Transmission Unit)、出接口信息、二层信息等,在存储时需要 占用内存资源。
与IPv4的路由设备相比,IPv6的路由设备中存储有大量的路由表信息,并且, IPv4路由的目的IP地址是32比特(bit),而IPv6路由的目的IP地址是U8bit,因此,IPv6 的路由设备中路由表信息对内存的占用远远大于IPv4的路由设备中路由表信息对内存的 占用。
然而,在IPv6的路由条目中,存在大量的路由和下一跳信息为多对一的关系的情 况,即多条路由的下一条信息相同,下一跳信息存在很大的重复情况,如此,造成了内存资 源的浪费。发明内容
有鉴于此,本发明的主要目的在于提供一种获取路由信息的方法及装置,能有效 减少内存的占用,进而能降低资源消耗。
为达到上述目的,本发明的技术方案是这样实现的
本发明提供了一种获取路由信息的方法,该方法包括
建立并实时更新包含路由信息和对应的下一跳指针的路由表、以及包含下一跳信 息和对应的引用计数值的下一跳表;
需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳信息。
上述方案中,所述更新包含路由信息和对应的下一跳指针的路由表、以及包含下 一跳信息和对应的引用计数值的下一跳表,为
得到新路由条目后,将路由条目中的路由信息插入路由表对应的表项,将提取到 的路由条目中的下一跳信息插入所述下一跳表中,之后将指向所述下一跳信息的下一跳指 针插入对应的路由表项中。
上述方案中,所述将提取到的路由条目中的下一跳信息插入下一跳表中,为
查看所述下一跳表中是否存在所述下一跳信息,确定存在时,将所述下一跳信息对应的引用计数值加1,确定不存在时,增加所述下一跳信息,并将对应的引用计数值初始 化为0,之后将引用计数值加1。
上述方案中,所述查看所述下一跳表中是否存在所述下一跳信息,为
根据所述下一跳信息中的下一跳IP地址,查看所述下一跳表中是否存在所述下一跳信息。
上述方案中,所述更新包含路由信息和对应的下一跳指针的路由表、以及包含下 一跳信息和对应的引用计数值的下一跳表,为
需要删除路由条目时,判断路由表中是否存在需要删除的路由条目对应的路由表 项,确定存在后,进一步判断所述对应的路由表项是否有关联的下一跳表项,确定有后,将 对应的下一跳表项中的引用计数值减1 ;
之后判断所述对应的下一跳表项中的引用计数值是否为0,确定为0后,删除所述 对应的下一跳表项,之后从路由表中删除所述对应的路由表项。
上述方案中,该方法进一步包括
确定所述对应的路由表项没有关联的下一跳表项后,从路由表中删除所述对应的 路由表项。
上述方案中,所述判断路由表中是否存在需要删除的路由条目对应的路由表项, 为
根据需要删除的路由条目中的目的IP地址,查找路由表中是否存在对应的路由 表项。
上述方案中,所述判断所述对应的路由表项是否有关联的下一跳表项,为
判断所述对应的路由表项中的下一跳指针是否为零,确定下一跳指针为零时,认 为所述路由表项没有关联的下一跳表项,确定下一跳指针不为零时,认为所述路由表项有 关联的下一跳表项。
上述方案中,所述根据所述路由表及所述下一跳表,获取下一跳信息,为
根据数据包中的目的IP地址,从所述路由表中查找对应的路由表项;根据所述对 应的路由表项中的下一跳指针,从所述下一跳表中读取下一跳信息。
上述方案中,该方法进一步包括
在获取下一跳信息后,根据下一跳信息转发数据包。
本发明还提供了一种获取路由信息的装置,该装置包括建立单元及获取单元; 其中,
建立单元,用于建立并实时更新包含路由信息和对应的下一跳指针的路由表、以 及包含下一跳信息和对应的引用计数值的下一跳表;
获取单元,用于需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳 fn息ο
上述方案中,该装置进一步包括存储单元,用于存储所述路由表及所述下一跳表。
上述方案中,该装置进一步包括转发单元,用于在收到获取单元发送的下一跳信 息后,根据下一跳信息转发数据包;
所述获取单元,还用于在获取到下一跳信息后,将获取到的下一跳信息发送给转发单元。
本发明提供的获取路由信息的方法及装置,建立并实时更新包含路由信息和对应 的下一跳指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表;需要发送 数据包时,根据所述路由表及所述下一跳表,获取下一跳信息,如此,能有效减少内存的占 用,进而能降低资源的消耗。
另外,根据下一跳信息中的下一跳IP地址,查看下一跳表中是否存在对应的下一 跳信息,如此,能快速查找出下一跳表中是否存在对应的下一跳信息,从而能快速将路由条 目中的下一跳信息插入到下一跳表中,进而能提高路由设备的处理效率。
图1为传统的IPv6路由表结构示意图2为本发明获取路由信息的方法流程示意图3为利用本发明得到的IPv6路由表结构示意图4为实施例一实现增加新路由条目的方法流程示意图5为实施例二实现删除路由条目的方法流程示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明获取路由信息的方法,如图2所示,包括以下步骤
步骤200 建立并实时更新包含路由信息和对应的下一跳指针的路由表、以及包 含下一跳信息和对应的引用计数值的下一跳表;
具体地,在建立路由表和下一跳表时,按照Radix树结构,以路由条目中的目的IP 地址为标识(Key)值,将所述路由条目中的路由信息插入路由表对应的表项,同时以路由 条目中的下一跳IP地址为Key值,将提取到的路由条目中的下一跳信息插入下一跳表中; 之后将指向该下一跳信息的下一跳指针插入对应的路由表项中;这里,得到路由条目的途 径与现有技术中得到路由条目的途径完全相同,比如可以根据网管对路由的配置信息,得 到路由条目,还可以依据路由协议,通过学习得到路由条目,还可以收到网络系统广播的路 由条目等等;
所述下一跳表的结构与所述路由表的结构相同,S卩均为Radix树状结构,与所述 路由表不同的是所述下一跳表是以下一跳信息中的下一跳IP地址为Key值构造而成,所 述路由表是以路由信息中的目的IP地址为Key值构造而成;本发明构造路由表和下一跳表 的具体处理过程与现有的路由表的具体处理过程完全相同,这里不再赘述;
所述路由信息就是指对数据包的目的地网段进行描述的信息,包括目的IP、目 的掩码、路由优先级等等;所述下一跳信息就是指对数据包如何到达目的地,如何进行转 发进行描述的信息,包括网络信息到下一跳的具体接口信息;
所述路由条目包括路由信息,进一步还可以包括下一跳信息;
如果路由条目中不包括下一跳信息时,则只将路由条目中的路由信息插入路由 表中;例如网管配置了静态路由,但是,指定的物理出接口没有插网线或协议存在问题 (down)时,此时,不能简单删除路由,而是以无效路由的方式存储,此时该路由条目中不包含下一跳信息;
所述将提取到的路由条目中的下一跳信息插入下一跳表,具体为
查看所述下一跳表中是否存在所述下一跳信息,如果存在,则将所述下一跳信息 对应的引用计数值加1,如果不存在,则增加所述下一跳信息,并将对应的引用计数值初始 化为0,之后将引用计数值加1 ;
其中,所述查看所述下一跳表中是否存在所述下一跳信息,具体为
根据所述下一跳信息中的下一跳IP地址,查看所述下一跳表中是否存在所述下一跳信息。
所述下一跳指针为下一跳表项的起始存储地址,路由设备据此可以获得下一跳信 息;
采用本发明的方法得到的路由表项的内容包含路由信息及对应的下一跳指针,下 一跳表项的内容包含下一跳信息及对应的引用计数值;
利用本发明建立路由表及下一跳表的方法,则可以得到如图3所示的存储结构示 意图,从图3中可以看出,与图1中示出的传统的存储结构相比,现有的6条路由信息只需 要存储3条下一跳信息即可,从而大大降低了内存的占用;
在IPv6的路由设备中,路由设备根据网络的运行状况,会出现增加新的路由条目 和删除路由条目两种情况;因此更新过程包括增加和删除路由条目的过程;
实施例一
本实施例针对增加新的路由条目的情况,描述路由设备更新路由表及下一跳表的 处理流程,实现过程如图4所示,包括以下步骤
步骤401 得到新路由条目后,在路由表中插入新节点,并将所述新路由条目的路 由信息写入新节点,之后执行步骤402 ;
这里,所述路由设备得到路由条目的途径与现有技术中路由设备得到路由条目的 途径完全相同,比如路由设备可以根据网管对路由的配置信息,得到路由条目,路由设备 还可以依据路由协议,通过学习得到路由条目,路由设备还可以收到网络系统广播的路由 条目等等;
每个节点对应路由表的一个表项。
步骤402 从所述新路由条目中提取下一跳信息,之后执行步骤403 ;
这里,所述新路由条目包含路由信息及下一跳信息。
步骤403 判断下一跳表中是否存在所述下一跳信息,如果是,则执行步骤405,否 则,执行步骤404;
这里,所述判断下一跳表中是否存在所述下一跳信息,具体为
根据所述下一跳信息中的下一跳IP地址,查看所述下一跳表中是否存在所述下一跳信息。
步骤404 在下一跳表中插入新节点,并将所述下一跳信息写入新节点,并将对应 的引用计数值初始化为0,之后执行步骤405。
步骤405 将对应的引用计数值加1,之后执行步骤406。
步骤406 将指向该下一跳信息的下一跳指针插入所述路由表中对应的节点中, 结束当前处理流程。
实施例二
本实施例针对删除路由条目的情况,描述路由设备更新路由表及下一跳表的处理 流程,实现过程如图5所示,包括以下步骤
步骤501 需要删除路由条目时,判断路由表中是否存在需要删除的路由条目对 应的路由表项,如果是,则执行步骤502,否则,执行步骤507 ;
这里,需要删除某个路由条目的时机为与现有技术中路由设备删除路由条目的 时机完全相同,比如网管需要删除某个路由条目,将对该路由条目的配置信息删除,路由 设备可以根据删除的配置信息,得到需要删除的路由条目,路由设备还可以依据路由协议, 通过学习得到需要删除的路由条目,路由设备还可以根据收到的网络系统的广播,得到需 要删除的路由条目等等;
所述判断路由表中是否存在需要删除的路由条目对应的路由表项,具体为
根据需要删除的路由条目中的目的IP地址,查找路由表中是否存在对应的路由 表项。
步骤502 判断所述路由表项是否有关联的下一跳表项,如果是,则执行步骤503, 否则,执行步骤506;
这里,所述判断所述路由表项是否有关联的下一跳表项,具体为
判断所述路由表项中的下一跳指针是否为零,如果是零,则认为所述路由表项没 有关联的下一跳表项,如果不是零,则认为所述路由表项有关联的下一跳表项;
其中,下一跳指针为下一跳表项的起始存储地址,而在实际应用时,零地址不用于 存储下一跳表项,因此,可以通过判断路由表项中的下一跳指针是否为零,来确定路由表项 是否有关联的下一跳表项。
步骤503 将对应的下一跳表项中的引用计数值减1,之后执行步骤504。
步骤504 判断对应的下一跳表项中的引用计数值是否为0,如果是,则执行步骤 505,否则,执行步骤506 ;
这里,如果对应的下一跳表项中的引用计数值为0,则说明当前没有路由表项与该 下一跳表项关联,需要删除该下一跳表项。
步骤505 删除该下一跳表项,之后执行步骤506。
步骤506 从路由表中删除对应的路由表项,之后执行步骤507。
步骤507 结束当前处理流程。
在实际应用时,可以通过测试仪向IPv6的路由设备发送包含许多下一跳信息相 同的10000条路由条目,来验证本发明存储方法的优越性,具体地,采用本发明的方法存储 路由表,同时采用传统的方法存储路由表,之后分别查看路由表占用内存的数量,通过对比 可以发现,采用本发明的方法存储路由表,确实能减少内存的占用。
步骤201 需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳信 息;
具体地,根据数据包中的目的IP地址,从所述路由表中查找对应的路由表项;根 据所述对应的路由表项中的下一跳指针,从所述下一跳表中读取下一跳信息;
如果未从所述路由表中查找到对应的路由表项,此时,路由设备可以通过广播的 方式得到需要的路由条目,根据得到路由条目转发数据包,之后将路由条目中的路由信息插入所述路由表中,将下一跳信息插入所述下一跳表中;
在获取下一跳信息后,路由设备根据下一跳信息将数据包转发出去。
为实现上述方法,本发明还提供了一种获取路由信息的装置,该装置包括建立单 元及获取单元;其中,
建立单元,用于建立并实时更新包含路由信息和对应的下一跳指针的路由表、以 及包含下一跳信息和对应的引用计数值的下一跳表;
获取单元,用于需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳 fn息ο
其中,该装置还可以进一步包括存储单元,用于存储所述路由表及所述下一跳表。
所述获取单元具体用于根据数据包中的目的IP地址,从所述路由表中查找对应 的路由表项;根据所述对应的路由表项中的下一跳指针,从所述下一跳表中读取下一跳信 肩、ο
该装置还可以进一步包括转发单元,用于在收到获取单元发送的下一跳信息后, 根据下一跳信息转发数据包;
所述获取单元,还用于在获取到下一跳信息后,将获取到的下一跳信息发送给转 发单元。
这里,本发明的所述装置中的建立单元的具体处理过程已在上文中详述,不再赘 述。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
1.一种获取路由信息的方法,其特征在于,建立并实时更新包含路由信息和对应的 下一跳指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表;该方法还包 括需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳信息。
2.根据权利要求1所述的方法,其特征在于,所述更新包含路由信息和对应的下一跳 指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表,为得到新路由条目后,将路由条目中的路由信息插入路由表对应的表项,将提取到的路 由条目中的下一跳信息插入所述下一跳表中,之后将指向所述下一跳信息的下一跳指针插 入对应的路由表项中。
3.根据权利要求2所述的方法,其特征在于,所述将提取到的路由条目中的下一跳信 息插入下一跳表中,为查看所述下一跳表中是否存在所述下一跳信息,确定存在时,将所述下一跳信息对应 的引用计数值加1,确定不存在时,增加所述下一跳信息,并将对应的引用计数值初始化为 0,之后将引用计数值加1。
4.根据权利要求3所述的方法,其特征在于,所述查看所述下一跳表中是否存在所述 下一跳信息,为根据所述下一跳信息中的下一跳互联网协议(IP)地址,查看所述下一跳表中是否存 在所述下一跳信息。
5.根据权利要求1所述的方法,其特征在于,所述更新包含路由信息和对应的下一跳 指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表,为需要删除路由条目时,判断路由表中是否存在需要删除的路由条目对应的路由表项, 确定存在后,进一步判断所述对应的路由表项是否有关联的下一跳表项,确定有后,将对应 的下一跳表项中的引用计数值减1 ;之后判断所述对应的下一跳表项中的引用计数值是否为0,确定为0后,删除所述对应 的下一跳表项,之后从路由表中删除所述对应的路由表项。
6.根据权利要求5所述的方法,其特征在于,该方法进一步包括确定所述对应的路由表项没有关联的下一跳表项后,从路由表中删除所述对应的路由 表项。
7.根据权利要求5所述的方法,其特征在于,所述判断路由表中是否存在需要删除的 路由条目对应的路由表项,为根据需要删除的路由条目中的目的IP地址,查找路由表中是否存在对应的路由表项。
8.根据权利要求5所述的方法,其特征在于,所述判断所述对应的路由表项是否有关 联的下一跳表项,为判断所述对应的路由表项中的下一跳指针是否为零,确定下一跳指针为零时,认为所 述路由表项没有关联的下一跳表项,确定下一跳指针不为零时,认为所述路由表项有关联 的下一跳表项。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述根据所述路由表及所述下 一跳表,获取下一跳信息,为根据数据包中的目的IP地址,从所述路由表中查找对应的路由表项;根据所述对应的路由表项中的下一跳指针,从所述下一跳表中读取下一跳信息。
10.根据权利要求1至8任一项所述的方法,其特征在于,该方法进一步包括 在获取下一跳信息后,根据下一跳信息转发数据包。
11.一种获取路由信息的装置,其特征在于,该装置包括建立单元及获取单元;其中, 建立单元,用于建立并实时更新包含路由信息和对应的下一跳指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表;获取单元,用于需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳信肩、O
12.根据权利要求11所述的装置,其特征在于,该装置进一步包括存储单元,用于存 储所述路由表及所述下一跳表。
13.根据权利要求11或12所述的装置,其特征在于,该装置进一步包括转发单元,用 于在收到获取单元发送的下一跳信息后,根据下一跳信息转发数据包;所述获取单元,还用于在获取到下一跳信息后,将获取到的下一跳信息发送给转发单兀。
全文摘要
本发明公开了一种获取路由信息的存方法,该方法包括建立并实时更新包含路由信息和对应的下一跳指针的路由表、以及包含下一跳信息和对应的引用计数值的下一跳表;需要发送数据包时,根据所述路由表及所述下一跳表,获取下一跳信息。本发明同时公开了一种获取路由信息的存装置,采用本发明的方法及装置,能有效减少内存的占用,进而能降低资源的消耗。
文档编号H04L12/56GK102035738SQ20101058781
公开日2011年4月27日 申请日期2010年12月14日 优先权日2010年12月14日
发明者张明之 申请人:中兴通讯股份有限公司