一种测试路由转发表正确性的方法和系统的制作方法

文档序号:7819016阅读:362来源:国知局
一种测试路由转发表正确性的方法和系统的制作方法
【专利摘要】本发明本涉及IP路由测试技术。本发明公开了一种测试路由转发表正确性的方法,包括如下步骤:A、在待测试设备上增加或删除路由表项,当增加路由表项时向待测设备的接口发送匹配所述路由表项的数据流,删除路由表项时,不取消所述数据流的发送;B、检查数据流的转发结果是否与预期的测试结果相同,若相同则将数据流查找的路由结果信息记录到路由结果信息记录表,进入步骤C;否则说明路由表中的路由不正确,结束测试;C、比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由表项是否正确的测试结果;D、判断所有的路由表项是否测试完成,如是,则结束测试,否则返回步骤A。本发明同时公开了测试系统。本发明能够完备测试路由表。
【专利说明】一种测试路由转发表正确性的方法和系统

【技术领域】
[0001]本发明本涉及IP路由测试技术,特别涉及一种测试路由转发表正确性的方法和系统。

【背景技术】
[0002]随着网络技术的发展,在网络扩张的同时,在网络传输上为满足网络容量扩大和网络传输速率增长的需求,网络中各个节点的转发设备中的路由表的容量也扩大了,并且为了提高转发性能,在各种转发设备中会使用不同的路由算法和数据结构来构建路由表。如有的转发设备使用TCAM(ternary content addressable memory,三态内容寻址存储器),有的使用mtrie,有的使用hash,有的使用radix树,有的使用B树等路由算法和数据结构来构建路由表,并且即使同一设备中的IPV4和IPV6也可能使用不同的路由算法和数据结构。
[0003]不同的IP转发设备可以在内部有不同的路由算法,但都要求能正确转发,尤其是在网络路由动荡后,是否仍旧能正确转发是关乎转发设备稳定性的重要方面,因此路由表的正确性测试是转发设备测试的关键技术之一。而丰富多样的内部路由算法,大量的路由表项,以及在路由振荡的测试场景中,如何才能保证测试的完备性也是路由测试的难点。
[0004]一种常用的路由表正确性测试方法是:通过shell命令来查看路由表项的正确性。在此方法中,要求检查在增加或删除路由操作后的路由表项是否正确,并且需要查看变化后的路由表中的相关数据结构的节点的转发信息是否正确。此方法主要应用的是路由表的遍历,不同的路由算法和数据结构,查看的信息和节点数目都会不同,但由于在转发数据时,是应用路由的最长匹配查找,故此方法的缺点是遍历的正确,不一定等于转发的正确,单独只用此方法不能完备地测试路由表的正确性。
[0005]另一种常用的测试方法是:在接口上发送数据流,检查数据流是否与预期相同被正确转发。在此方法中,如果想完整测试一条路由表项,需要发送此条路由表项所能覆盖的以此网段为目的的主机数量相同条数的数据流。如路由表项为:10.0.0.0/8的路由rl,由于掩码是8,那么此路由所能匹配的主机数量是X = 2(32_8) = 224 = 16M个,如果想完整测试此条路由,需要在接口上发送16M条数据流。而目前即使在接入层的转发设备中,整个路由表的容量都能达到Y = 50K条路由表项,如果用此方法,测试完整的路由表,那某个时刻的数据流数是X*Y。这是相当大的一个数,而在高端转发设备中,路由表容量会更大,此时测试需要的数据流会更大。可能会达到辅助测试设备的极限,而测试所耗时间也会导致测试周期相当长。此方法的优点是使用是最长匹配方法来验证路由表,缺点也是明显的:一是需要发送非常多的数据流,对辅助测试设备的要求较高,其二是在路由动荡过程中,该测试方法看不到路由变化的细节,可能会因为动态变化而无法验证出路由动荡过程中的正确性。
[0006]以上两种方法分别涉及到的是遍历路由算法和查找路由算法,二者是分离的,故在路由动荡时,某个中间过程导致的路由表项的变化,可能会被忽略或掩盖从而留下故障隐患。另外,由于路由表可能使用不同的路由算法和数据结构来实现,而每个路由表项中的中间节点信息根据路由算法或数据结构的不同,存储的信息也不同,在一个测试中仅做遍历或仅做查找,都还不充分,需要将一个路由项的每个节点都遍历到并且进行精确匹配,这就要求针对一个路由表项生成多个数据流进行测试。当路由表较大时,数据流较多,利用现有方法要充分测试路由表的正确性常常要耗费巨大的人力物力和时间。


【发明内容】

[0007]有鉴于此,本发明的目的是提供一种路由表正确性的测试方法,缩短测试周期,减少测试人力和测试资源的占用。
[0008]本发明实现上述目的的技术方案是,一种测试路由转发表正确性的方法,其特征在于,包括如下步骤:
[0009]A、在待测试设备上增加或删除路由表项,当增加路由表项时向待测设备的接口发送匹配所述路由表项的数据流,删除路由表项时,不取消所述数据流的发送;
[0010]B、检查数据流的转发结果是否与预期的测试结果相同,若相同则将数据流查找的路由结果信息记录到路由结果信息记录表,进入步骤C ;否则说明路由表中的路由不正确,结束测试;
[0011]C、比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由表项是否正确的测试结果;
[0012]D、判断所有的路由表项是否测试完成,如是,则结束测试,否则返回步骤A。
[0013]进一步的,所述步骤A中,增加或删除路由表项时,至少向待测设备的接口发送匹配所述路由表项的单条数据流。
[0014]具体的,所述路由结果信息至少包括:目的IP地址、路由前缀、掩码、下一跳地址、网关地址、出接口和路由表项的内部指针。
[0015]具体的,所述步骤B具体为:
[0016]B1、检查数据流的转发结果与预期的测试结果是否相同,若相同则进入步骤B2,否则说明路由表错误,结束测试;
[0017]B2、在路由结果信息记录表中查找是否已记录与预期的测试结果相同的路由结果信息,如是则完成该步骤,否则进入步骤B3 ;
[0018]B3、在路由结果记录表中添加与预期的测试结果相同的路由表项的路由结果信肩、O
[0019]具体的,所述步骤C具体为:
[0020]Cl、遍历记录的路由结果信息在路由表中的各个存储节点,并比较各个存储节点的路由信息与记录的路由结果是否相同,如是,则说明路由正确,结束检测;否则进入步骤C2 ;
[0021]C2、查找增加或删除路由的父路由和子路由,查找路由结果不相同的节点的父路由和子路由,比较此二者的父路由和子路由,如果都相同,则说明此节点的路由不正确,结束检测;否则进入步骤C3 ;
[0022]C3、以路由结果不同的节点构造目的IP地址,查找路由记录结果表,找不到表项,说明路由错误,结束检测;找到表项,比较结果记录表中的路由结果与现在节点的路由结果,如果不同,路由错误,否则路由正确。
[0023]本发明的另一个目的是,提供一种测试路由转发表正确性的系统,包括测试仪和待测设备,其特征在于,
[0024]所述测试仪,用于向待测设备的接口发送与增加的路由表项匹配的数据流;且当待测设备删除所述增加的路由表项时,不取消所述数据流的发送;
[0025]所述待测设备包括路由算法单元和路由测试单元,所述路由算法单元,包括路由算法和路由表,用于提供路由表的操作接口 ;
[0026]所述路由测试单元,包括路由检测模块、路由结果管理模块和接口模块;
[0027]所述接口模块,用于完成不同路由表或路由算法的隔离和适配,为路由检测单元提供接口 ;
[0028]所述路由检测模块,用于完成路由检测的处理逻辑,调用路由结果管理模块提供的操作接口进行逻辑判断和处理;检查数据流的转发结果是否与预期的测试结果相同,若相同则通知路由结果管理模块将数据流查找的路由结果信息记录到路由结果信息记录表,比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由转发表项是否正确的测试结果;否则判断路由表中的路由不正确,结束测试;
[0029]所述路由结果管理模块,用于将数据流查找的路由结果信息记录到路由结果信息记录表,管理路由结果信息记录表。
[0030]进一步的,所述测试仪进一步用于,增加或删除路由表项时,至少向待测设备的接口发送匹配所述路由表项的单条数据流。
[0031]具体的,所述路由结果信息至少包括:目的IP地址、路由前缀、掩码、下一跳地址、网关地址、出接口和路由表项的内部指针。
[0032]具体的,所述路由检测模块具体用于,
[0033]检查数据流的转发结果与预期的测试结果是否相同,如果不同,则说明路由表错误,结束测试;
[0034]如果相同,在路由结果记录表中查找是否已记录与预期的测试结果相同的路由结果;如果没有,则添加一条结果信息表项。
[0035]进一步的,所述路由检测模块还用于,
[0036]遍历记录的路由表项对应的各个存储节点,并将节点的路由结果与记录的路由结果比较,相同,说明路由正确,结束检测;否则查找增加或删除路由的父路由和子路由,查找路由结果不相同的节点的父路由和子路由,比较此二者的父路由和子路由,如果都相同,则说明此节点的路由不正确,结束检测;否则以路由结果不同的节点构造目的IP地址,查找路由记录结果表,找不到表项,说明路由错误,结束检测;找到表项,比较结果记录表中的路由结果与现在节点的路由结果,如果不同,路由错误,否则路由正确。
[0037]本发明的有益效果是,在测试过程中将路由遍历和路由匹配查找结合起来,能够覆盖测试到每条路由表项的所有节点,做到了完备测试路由表。并且本发明的技术方案与具体的路由算法和数据结构关系不密切,方便应用于自动化测试中测试各种转发设备。除了静态路由表测试外,在大量路由动荡情形下,本发明仍旧能验证变化过程中的路由转发表项的正确性,使用本发明可以节约人力、时间和测试资源。

【专利附图】

【附图说明】
[0038]图1是测试路由转发表正确性的方法流程图;
[0039]图2是检查并记录路由结果的流程图;
[0040]图3是路由检测的流程图;
[0041]图4是测试系统的组成结构示意图。

【具体实施方式】
[0042]下面结合附图及实施例,详细描述本发明的技术方案。
[0043]本发明的技术方案,适用于测试各种路由表,如IPV4的路由表,IPV6的路由表等,本发明的测试方法不需要关心具体路由表是使用什么结构组织路由前缀的,如mtrie树,radix树,hash, b树等。以下为方便理解和描述,以IPV4路由表,mtrie结构为例进行说明。如图1所示具体流程包括:
[0044]101,测试准备。首先确认物理连接正常,然后启动测试脚本,配置测试仪和待测设备(以下使用简称DUT);测试仪可以是具备收发包和统计功能的计算机,也可以是专用网络测试仪器。对DUT的配置,主要包括配置接口,IP地址,路由协议等等。
[0045]102,路由表建立。利用测试脚本在DUT上增加一条或多条路由表项,并在网络测试仪器上向待测设备的接口发送匹配该路由的数据流,每条路由至少发送一条数据流。也可以删除一条或多条路由表项,但保持原先的数据流不变。即保证增加或删除的路由表项,至少发送一条数据流。在测试脚本中对这些数据流有相应的转发结果预期的设置。
[0046]在此步骤中,可以添加和删除一条或多条路由。此步骤验证了路由表的添加和删除操作是否正常,并且在转发数据流的过程中验证了路由的最长匹配查找算法,可以排除大部分路由表的正确性问题。经过多次重复102步骤后,就可以根据需要建立起完整的路由表。
[0047]此步骤中可以进行路由动荡的测试,即快速的增加或删除多条路由。
[0048]103,初步检查并记录路由结果。在步骤102的每一条变化路由(新增或删除的路由)时,检查数据流转发结果与结果预期是否符合,并记录和更新路由结果记录表。如图2所示,如果与预期不符合,则说明路由错误,记录测试结果并结束测试。如果符合预期结果,先查找路由结果记录表中是否有此路由结果记录,如果没有则记录此数据流路由查找的结果到路由结果记录表中。路由结果信息至少包括如下内容:目的IP地址、路由前缀、掩码、下一跳地址、网关地址、出接口地址以及路由表项的内部指针。路由结果记录表主要是需要精确匹配,可以使用方便的数据结构来组织此表的结构。此表的组织结构与待测试的路由表的结构无关。简单的可以使用hash表来组织此表。
[0049]在此步骤中,当增加一条路由时,数据流的转发结果可以是按此路由的结果正常转发或按子路由结果转发(有更长掩码的路由),或者按照负载均衡的路由结果转发。
[0050]当删除路由时,数据流转发结果可以是不能转发丢弃报文,也可以是正常转发,还可以是找到了父路由(前缀相同,子网掩码更短的路由)进行了转发。
[0051]104,路由检测。遍历记录的路由表项的所有节点,检测其转发结果信息是否正确,具体如图3所示。在数据流的查找结果正确后,在301步骤中,调用路由表的遍历接口,遍历此路由的所有存储这条路由表项的节点。不同的路由表结构,存储节点不一样,此遍历接口由各路由算法提供自己的遍历接口。以mtrie树的路由表(查找步长为8,每块中有256个节点)为例,如果路由前缀是r3:10.40.0.0/18,如果没有子路由,则此路由的节点数为4个,如果有子路由r4:10.40.0.0/30,则r3的路由节点数为255个,通过mtrie的条件遍历接口,可以找到第3级的块,如果路由记录结果是流10.40.0.1的转发结果,则还需要遍历节点 10.40.0.0 ?10.40.0.255,10.40.1.x(x 是 0-255),10.40.2.x, 10.40.3.x 的路由结果进行比较。首先假设没有子路由r4,则在添加r3时,比较各个节点的结果,发现各个节点的路由结果与记录表中的相同。假设在加r3前,有子路由r4,并且假设r3没有父路由,则在节点比较到10.40.0.0时,发现路由结果与记录结果不同,进入步骤302,此时,查找r3的父路由为空,但r4的父路由是r3。进入303,此时,以10.40.0.1为目的地址,查找路由结果记录表,找到了 r4的路由结果记录表项,将此路由节点的路由结果与记录表中的路由结果比较,相同,则说明路由正确,不同,则说明路由错误。在步骤302中,如果r3、r4的父路由、子路由都相同,但节点中的路由结果不同的话,说明表中节点路由错误,结束测试,记录测试结果。
[0052]105,测试判断,判断路由测试完成了没有,如果还需要增加或删除路由表项,就进入102步骤,否则结束测试。
[0053]本发明测试路由转发表正确性的系统结构如图4所示,包括:待测设备410,测试仪器420。
[0054]测试仪器420可以是各种有收发报文功能的设备如PC或测试仪,如果需要自动化测试,则可由测试脚本进行控制。用于向待测设备的接口发送与增加的路由表项匹配的数据流;且当待测设备删除所述增加的路由表项时,不取消所述数据流的发送;所述待测设备包括路由检测模块和路由结果管理模块。
[0055]所述待测设备410包括路由算法单元411和路由测试单元412,所述路由算法单元411,由各种路由算法和路由表组成,是待测试的实体。如IPV4的radix路由表,或mtrie路由表,或b+树路由表等。对于一种DUT,一般会包含一到两种路由表。此单元提供不同路由表的添加,删除,遍历,查找等接口,如果路由表结构不同,则路由表的操作接口也不同。包括至少一种路由算法和路由表,用于提供路由表的操作接口。
[0056]所述路由测试单元412包括接口模块4121、路由检测模块4122和路由结果管理模块 4123 ;
[0057]所述接口模块4121,用于完成不同路由表或路由算法的隔离和适配,为路由检测单元提供统一的通用接口。
[0058]所述路由检测模块4122,用于完成路由检测的处理逻辑,调用路由结果管理模块提供的操作接口进行逻辑判断和处理;检查数据流的转发结果是否与预期的测试结果相同,如是,则通知路由结果管理模块将数据流查找的路由结果信息记录到路由结果信息记录表,比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由转发表项是否正确的测试结果;否则判断路由表中的路由不正确,结束测试;
[0059]所述路由结果管理模块4123,用于将数据流查找的路由结果信息记录到路由结果信息记录表,管理路由结果信息记录表。该路由结果信息记录表是独立的表,仅用于测试,是动态生成和变化的。
[0060]综上所述,本系统是个通用的路由测试系统,可以完备地测试各种路由表的正确性,还能方便地进行自动化部署。
【权利要求】
1.一种测试路由转发表正确性的方法,其特征在于,包括如下步骤: A、在待测试设备上增加或删除路由表项,当增加路由表项时向待测设备的接口发送匹配所述路由表项的数据流,删除路由表项时,不取消所述数据流的发送; B、检查数据流的转发结果是否与预期的测试结果相同,若相同则将数据流查找的路由结果信息记录到路由结果信息记录表,进入步骤C ;否则说明路由表中的路由不正确,结束测试; C、比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由表项是否正确的测试结果; D、判断所有的路由表项是否测试完成,如是,则结束测试,否则返回步骤A。
2.根据权利要求1所述的一种测试路由转发表正确性的方法,其特征在于,所述步骤A中,增加或删除路由表项时,至少向待测设备的接口发送匹配所述路由表项的单条数据流。
3.根据权利要求1所述的一种测试路由转发表正确性的方法,其特征在于,所述路由结果信息至少包括:目的IP地址、路由前缀、掩码、下一跳地址、网关地址、出接口和路由表项的内部指针。
4.根据权利要求1所述的一种测试路由转发表正确性的方法,其特征在于,所述步骤B具体为: B1、检查数据流的转发结果与预期的测试结果是否相同,若相同则进入步骤B2,否则说明路由表错误,结束测试; B2、在路由结果信息记录表中查找是否已记录与预期的测试结果相同的路由结果信息,如是则完成该步骤,否则进入步骤B3 ; B3、在路由结果记录表中添加与预期的测试结果相同的路由表项的路由结果信息。
5.根据权利要求1所述的一种测试路由转发表正确性的方法,其特征在于,所述步骤C具体为:Cl、遍历记录的路由结果信息在路由表中的各个存储节点,并比较各个存储节点的路由信息与记录的路由结果是否相同,如是,则说明路由正确,结束检测;否则进入步骤C2 ;C2、查找增加或删除路由的父路由和子路由,查找路由结果不相同的节点的父路由和子路由,比较此二者的父路由和子路由,如果都相同,则说明此节点的路由不正确,结束检测;否则进入步骤C3 ; C3、以路由结果不同的节点构造目的IP地址,查找路由记录结果表,找不到表项,说明路由错误,结束检测;找到表项,比较结果记录表中的路由结果与现在节点的路由结果,如果不同,路由错误,否则路由正确。
6.一种测试路由转发表正确性的系统,包括测试仪和待测设备,其特征在于, 所述测试仪,用于向待测设备的接口发送与增加的路由表项匹配的数据流;且当待测设备删除所述增加的路由表项时,不取消所述数据流的发送; 所述待测设备包括路由算法单元和路由测试单元,所述路由算法单元,包括路由算法和路由表,用于提供路由表的操作接口 ; 所述路由测试单元,包括路由检测模块、路由结果管理模块和接口模块; 所述接口模块,用于完成不同路由表或路由算法的隔离和适配,为路由检测单元提供接口 ; 所述路由检测模块,用于完成路由检测的处理逻辑,调用路由结果管理模块提供的操作接口进行逻辑判断和处理;检查数据流的转发结果是否与预期的测试结果相同,若相同则通知路由结果管理模块将数据流查找的路由结果信息记录到路由结果信息记录表,比较记录的路由表项在路由表中的所有存储节点的转发结果信息,获得所述路由转发表项是否正确的测试结果;否则判断路由表中的路由不正确,结束测试; 所述路由结果管理模块,用于将数据流查找的路由结果信息记录到路由结果信息记录表,管理路由结果信息记录表。
7.根据权利要求6所述的一种测试路由转发表正确性的系统,其特征在于,所述测试仪进一步用于,增加或删除路由表项时,至少向待测设备的接口发送匹配所述路由表项的单条数据流。
8.根据权利要求6所述的一种测试路由转发表正确性的系统,其特征在于,所述路由结果信息至少包括:目的IP地址、路由前缀、掩码、下一跳地址、网关地址、出接口和路由表项的内部指针。
9.根据权利要求6所述的一种测试路由转发表正确性的系统,其特征在于,所述路由检测模块具体用于, 检查数据流的转发结果与预期的测试结果是否相同,如果不同,则说明路由表错误,结束测试; 如果相同,在路由结果记录表中查找是否已记录与预期的测试结果相同的路由结果;如果没有,则添加一条结果信息表项。
10.根据权利要求6所述的一种测试路由转发表正确性的系统,其特征在于,所述路由检测模块还用于, 遍历记录的路由表项对应的各个存储节点,并将节点的路由结果与记录的路由结果比较,相同,说明路由正确,结束检测;否则查找增加或删除路由的父路由和子路由,查找路由结果不相同的节点的父路由和子路由,比较此二者的父路由和子路由,如果都相同,则说明此节点的路由不正确,结束检测;否则以路由结果不同的节点构造目的IP地址,查找路由记录结果表,找不到表项,说明路由错误,结束检测;找到表项,比较结果记录表中的路由结果与现在节点的路由结果,如果不同,路由错误,否则路由正确。
【文档编号】H04L12/26GK104301186SQ201410625947
【公开日】2015年1月21日 申请日期:2014年11月7日 优先权日:2014年11月7日
【发明者】刘宝琴 申请人:迈普通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1