一种基于LISP的映射规模压力测试方法与流程

文档序号:12491942阅读:212来源:国知局
一种基于LISP的映射规模压力测试方法与流程

本发明涉及计算机网络领域压力测试方法,尤其涉及一种基于LISP(Locator/ID Separation Protocol,位置/身份分离协议)的映射规模压力测试方法。



背景技术:

LISP是最初由思科公司提出的位置与身份分离的方案,它通过位置和身份信息的解耦合,避免了IP(Internet Protocol)语义重载,可良好地支持节点移动性、可扩展性、多宿主等未来网络特性。LISP协议采用“映射-封装”机制,对报文进行映射查询、封装并发送。目前,该协议的RFC(Request For Comments,一系列以编号排定的文件)已成为IETF(Internet Engineering Task Force,互联网工程任务组)标准文档。在标准实现中,LISP由入口/出口隧道路由器xTR(Ingress Tunnel Router,ITR;Egress Tunnel Router,ETR,两者合称为xTR)和映射服务接口组成,前者负责对数据包进行封装、解封装;后者使LISP可以支持不同的映射系统,仅需要实现接口所规定的映射解析器(Mapping Resolver,MR)、映射服务器(Mapping Server,MS)功能。

LISP中的映射规模是指在映射系统正常运行并提供映射服务接口所规定的功能的前提下,映射数据库中映射表项数目最大值。xTR向MS发送终端映射注册消息,再由MS向映射数据库追加映射表项。每个终端ID(Endpoint ID,EID)对应一条映射表项,映射表项的主要内容为终端的身份标识EID和终端当前的网络接入位置标识RLOC(Router Locator)。

在对基于LISP所开发的应用系统进行大规模部署之前,需要对该应用系统进行多个性能指标的压力测试,映射规模就是其中最为重要的指标之一,以此检验其映射系统能够承受的最大负载量,从而验证所开发的应用系统是否具有大规模部署可行性。

目前常规的压力测试所用的工具主要分为硬件工具(例如发包测试仪)和软件工具(例如Libnet、Pkegen、DPDK等),但是使用这些工具进行测试的方法存在以下弊端与不足:

(1)硬件工具价格较高,因此测试成本也相对较高;

(2)生成测试数据报文所需的参数较多,过程复杂繁琐;生成的测试数据报文内容可能无法被映射服务接口正常识别处理,从而降低测试的准确率。

(3)不适合直接用于对基于LISP开发的系统进行压力测试。

为了提高对基于LISP所开发的应用系统的映射规模进行量化性能评估的效率和准确率,本发明基于LISP提出了一种映射规模压力测试方法,并开发一套可以用于压力测试的工具包软件。



技术实现要素:

本发明要解决的技术问题是提供一种对基于LISP开发的系统的映射规模进行压力测试的方法,解决使用现有压力测试方法在进行映射规模压力测试时存在的测试成本高、测试过程复杂、测试准确率较低等不足。

本发明的技术方案包括以下步骤:

第一步、将基于LISP的映射规模压力测试工具包软件(以下简称压力测试软件)部署在一台服务器上,压力测试软件向被测映射系统发送测试注册报文,并接收被测映射系统发送的注册确认报文。压力测试软件向被测映射系统发送测试注册报文,并接收来自被测系统的注册确认报文,以此对测试被测映射系统进行映射规模压力测试。测试注册报文与标准LISP控制平面报文格式相同,注册确认报文的格式与标准LISP中的注册确认报文的格式相同(见IETF RFC6833第37页-第39页)。压力测试软件由命令解析模块、控制模块、测试报文生成模块、测试报文收发模块、统计模块组成。命令解析模块从键盘接收测试参数(测试项目、EID生成模式、注册规模或注册速度、公钥、映射系统RLOC地址)并将测试参数发送给控制模块;控制模块与命令解析模块、测试报文生成模块、测试报文收发模块、统计模块相连,接收来自命令解析模块的测试参数,根据其中参数控制测试报文生成模块生成测试注册报文,控制测试报文收发模块向被测映射系统发送测试注册报文并接收来自被测映射系统的映射确认报文,并接收来自统计模块的统计信息;测试报文生成模块负责根据参数(EID生成模式、公钥、映射系统RLOC地址)生成符合测试要求的测试注册报文,将测试注册报文发送给测试报文收发模块;测试报文收发模块负责将从测试报文生成模块接收到的测试注册报文发送给被测映射系统并接收其返回的注册确认报文,对接收到的注册确认报文进行计数,并将接收到的注册确认报文数目发送给统计模块;统计模块负责进行相关量化指标的统计,包括实际映射规模、映射注册速度、注册成功率,将计算得到的实际映射规模、映射注册速度、注册成功率发送给控制模块。

第二步、命令解析模块从键盘获取测试参数,将参数传递给控制模块,由控制模块控制测试报文生成模块生成符合测试需求的测试注册报文,方法为:

2.1命令解析模块一共从键盘接收五个测试参数,分别是:测试项目、EID生成模式、表项规模或注入速度、公钥、映射系统RLOC地址。“测试项目”指需要对被测映射系统进行的测试内容,有两个选项供选择,一个是被测试系统映射规模,另一个是测试映射系统能够承受的映射注册速度;“EID生成模式”指测试EID的生成方式,共有三种供选择,分别是完全随机生成EID模式、随机生成32位EID模式、基于种子生成EID模式。测试EID包括EID前缀、子网掩码长度、EID地址族三部分。完全随机生成EID模式,先随机生成一个32位IPv4地址,再随机产生一个n位的随机整数作为子网掩码长度,n为整数,取值为0~32,EID前缀为随机产生的IPv4地址的前n位,剩余的(32-n)位置为0的32位IP地址,EID地址族为IPv4。随机生成32位EID模式,EID前缀为随机生成的32位IPv4地址,子网掩码长度为32,EID地址族为IPv4;基于种子生成EID模式,是指采用基于种子(例如系统时间)的随机方式产生一个32位IPv4地址,再随机产生一个n位的随机整数作为子网掩码长度,EID前缀为保留随机产生的IPv4地址的前n位,剩余的(32-n)位置为0的32位IP地址,EID地址族为IPv4。“表项规模或注入速度”,如果“测试项目”参数设置为测试映射系统映射规模,那么该参数用于指定所需要测试的表项规模;如果测试项目”参数设置为测试映射系统能够承受的映射注册速度,那么该参数用于指定测试映射表项注入速度;“公钥”指事先在被测映射系统注册的用于认证xTR所辖的接入网身份的公钥;“映射系统RLOC地址”指被测映射系统的RLOC地址。

2.2命令解析模块将从键盘接收的所有测试参数传递到控制模块。

2.3控制模块接收到来自命令解析模块的测试参数,将EID生成模式、公钥、映射系统RLOC地址这三个参数传递给测试报文生成模块。

2.4测试报文生成模块根据从控制模块接收到的EID生成模式、公钥、映射系统RLOC地址,构造测试注册报文,测试注册报文与标准LISP控制平面报文格式一样(标准LISP控制平面报文的详细格式定义见IETF RFC6830第25页-第27页),由LISP报文头部、UDP报文头部、LISP消息三部分组成,方法是:

2.4.1测试报文生成模块生成LISP映射注册消息。LISP映射注册消息中包括消息类型字段、需要映射确认位(want-map-notify bit,以下简称M位)、nonce字段、Key ID字段、认证数据字段,以及映射记录(包括测试EID及其相关属性(包括记录TTL、RLOC个数、认证位、动作位)、与测试EID对应的测试RLOC及其相关属性(优先级、权重、RLOC地址族))。LISP映射注册消息详细格式见IETF RFC6830第37页-第39页。测试报文生成模块对标准LISP映射注册消息中的M位、Key ID字段、nonce字段、认证数据字段进行赋值,并添加映射记录,生成LISP测试映射注册消息,方法为:

2.4.1.1测试报文生成模块将M位的值置1。表示要求被测映射系统在接收到测试注册报文,并把测试注册报文携带的映射记录写入映射数据库后,向压力测试软件返回注册确认报文。

2.4.1.2测试报文生成模块根据参数“EID生成模式”中指定的EID生成模式(2.1中所述三种生成模式之一),生成相应的测试EID。

2.4.1.3测试报文生成模块在LISP映射注册消息中添加映射记录中的测试EID及其相关属性,方法为:将LISP映射注册消息的EID-Prefix字段赋值为测试EID的EID前缀,将LISP映射注册消息的EID mask-len字段赋值为测试EID的子网掩码,将LISP映射注册消息的EID地址族字段置1,表示EID地址族为IPv4。此外,设置该测试EID所对应的映射记录的相关属性,包括记录TTL、RLOC个数、认证位、动作位,将TTL设为60,RLOC个数、认证位、动作位均置1。

2.4.1.4测试报文生成模块向经过2.4.2.3步处理后的LISP映射注册消息中添加与测试EID对应的测试RLOC及其相关属性,包括具体的RLOC值、优先级、权重、RLOC地址族。在这里使用压力测试软件所在的服务器的IP地址作为测试RLOC,优先级、权重、RLOC地址族均置1。

2.4.1.5测试报文生成模块设置经过2.4.1.4步处理后的LISP映射注册消息的“nonce字段”,其值为随机生成的32位无符号整数。

2.4.1.6测试报文生成模块设置经过2.4.1.5步处理后的LISP映射注册消息的“Key ID”字段,其值为测试消息模块所接收到的“公钥”参数值,用于映射系统对发送注册消息的xTR进行身份认证。

2.4.1.7测试报文生成模块使用安全散列算法(HMAC-SHA-256-128,详见IETFRFC4868第3页-第16页)对经过2.4.1.6步处理后的LISP映射注册消息进行运算,并将计算得出的字符串作为认证数据字段的值。

2.4.1.8测试报文生成模块将2.4.1.7步处理后的LISP映射注册消息作为LISP消息,放到测试注册报文中。

2.4.2测试报文生成模块设置测试注册报文中LISP报文头部,方法为:

2.4.2.1设置源RLOC字段和目的RLOC字段,其方法为:源RLOC字段的值为压力测试软件所在的服务器的IP地址,目的RLOC字段的值为“映射系统RLOC地址”参数值,即被测试映射系统的RLOC地址。

2.4.2.2LISP报文头部的其他字段初始化为全0。

2.4.3测试报文生成模块设置测试注册报文中UDP头部,其方法为:

2.4.3.1设置目的端口为4342,表示该报文是LISP的控制平面报文。

2.4.3.2UDP报文头部的其他字段初始化为全0。

第三步、控制模块向测试报文收发模块发送“测试项目”、“注册规模或注册速度”两个测试参数,测试报文收发模块把从测试报文生成模块接收的测试注册报文发送给被测映射系统。方法是:

3.1测试报文收发模块与被测映射系统之间建立起socket套接字,socket套接字的目的地址为映射系统RLOC,目的端口为4342,源地址为压力测试软件所在的服务器的IP地址(即压力测试软件的RLOC)、源端口随机确定。

3.2控制模块根据命令解析模块所传递的参数,控制测试报文收发模块的报文发送动作,方法为:若命令解析模块传递的“测试项目”参数值为“测试系统映射规模”,则执行步骤3.2.1,否则执行步骤3.2.6。

3.2.1测试报文收发模块将发送计数器和接收计数器均置初值为0,发送计数器用于控制所发送的测试注册报文的规模,接收计数器用于记录所接收的注册确认报文的数目。测试报文收发模块在发送第一个测试注册报文时记录系统时间,这个系统时间记为“开始发送时间”。

3.2.2测试报文收发模块通过socket套接字向被测映射系统发送由测试报文生成模块生成的映射注册报文,这表示测试报文收发模块以最快的速度进行映射注册报文的发送,每发送一个测试注册报文,发送计数器增1。

3.2.3如果命令解析模块接收到来自键盘的停止测试的命令,则控制模块中断测试报文收发模块的报文发送,转第七步;如果命令解析模块未接收到来自键盘的停止测试的命令,转3.2.4。

3.2.4测试报文收发模块接收被测映射系统返回的映射确认报文,确认此前测试报文收发模块发送的某个测试注册报文中的映射记录已经在被测系统中注册成功。测试报文收发模块每收到一个注册确认报文,接收计数器增1。

3.2.5若发送计数器的值等于从控制模块中接收的“表项规模”,测试报文收发模块记录系统时间,这个系统时间记为“结束发送时间”,转第四步;若发送计数器的值小于从控制模块中接收的“表项规模”,转3.2.2。

3.2.6控制模块根据“注入速度”计算测试报文收发模块发送两个测试注册报文之间应该间隔的休眠时间,从而控制试报文收发模块以指定的注入速度发送测试注册报文。

3.2.7测试报文收发模块将发送计数器和接收计数器均置初值为0,发送计数器用于控制所发送的测试注册报文的规模,接收计数器用于记录所接收的注册确认报文的数目;测试报文收发模块在发送第一个测试注册报文时记录系统时间,这个系统时间记为“开始发送时间”。

3.2.8测试报文收发模块向被测映射系统发送测试注册报文,发送计数器增1,按照休眠时间进行休眠。

3.2.9如果命令解析模块接收到来自键盘的停止测试的命令,则控制模块中断测试报文收发模块的报文发送,记录此时系统时间,记为“结束发送时间”,转第四步;如果命令解析模块未接收到来自键盘的停止测试的命令,转3.2.10。

3.2.10测试报文收发模块接收被测映射系统返回的映射确认报文,每收到一个注册确认报文,接收计数器递增1。

3.2.11若休眠时间到达,转3.2.8;若休眠时间未到达,转3.2.11继续休眠。

第四步、测试报文收发模块将发送计数器和接收计数器的值,即所发送的测试注册报文数目和所接收到的映射确认报文数目传递给统计模块。

第五步、统计模块接收到来自测试报文收发模块的测试注册报文数目和映射确认报文数目,计算实际映射规模、实际映射注册速度、注册成功率,传递给控制模块,方法为:实际映射规模即为测试报文收发模块中所接收到的映射确认报文数目;“结束发送时间”与“开始发送时间”之差即为实际测试时间,实际映射规模除以实际测试时间即可得出实际映射注册速度;实际映射规模除以测试注册报文数目即可得出注册成功率。

第六步、控制模块接收来自统计模块的实际映射规模、实际映射注册速度、注册成功率,显示统计结果。

第七步、结束。

采用本发明可以达到以下技术效果:

1、本发明第一步构建的压力测试软件部署在单台服务器上,无需额外购置专用的硬件设备,可以有效节省测试成本。

2、本发明第二步提供了灵活多样的参数设定,可以对多个测试项目进行组合,满足多种压力测试需求。根据指定的测试参数直接产生标准LISP通信流程中测试注册报文,保证所构造的测试注册报文格式与测试需求一致。如果测试注册报文无法被被测映射系统识别处理而被直接丢弃,那么测得的成功注册的测试注册报文数目将减少,导致所测得的映射规模也将低于被测映射系统的真实映射规模,降低测试的准确率。而本发明中提出的压力测试软件生成的测试注册报文能够被被测试的映射系统直接处理,可直接用于对基于LISP开发的系统进行压力测试,无需进行多余的报文转换,测试过程相对简单,提高了压力测试的准确率和效率。同时,兼顾测试过程中的信息安全。

3、本发明第三步根据“测试项目”、“注册规模或注册速度”两个测试参数分别对被测映射系统发送特定规模的测试注册报文或者采用特定注册速度向被测映射系统发送测试注册报文,既可以测出被测映射系统所能承受的实际映射规模,又可以测得被测映射系统所能承受的最大注册速度,为验证被测系统的大规模可部署性提供更为全面的参考指标。

附图说明

图1是本发明的总体流程图;

图2是本发明第一步压力测试软件部署逻辑结构图。

具体实施方式

图1是本发明的总体流程图。本发明包括以下步骤:

第一步、将基于LISP的映射规模压力测试工具包软件(以下简称压力测试软件)部署在一台服务器上。

第二步、命令解析模块从键盘获取测试参数,将参数传递给控制模块,由控制模块控制测试报文生成模块生成符合测试需求的测试注册报文。

第三步、控制模块向测试报文收发模块发送“测试项目”、“注册规模或注册速度”两个测试参数,测试报文收发模块把从测试报文生成模块接收的测试注册报文发送给被测映射系统。

第四步、测试报文收发模块将发送计数器和接收计数器的值,即所发送的测试注册报文数目和所接收到的映射确认报文数目传递给统计模块。

第五步、统计模块接收到来自测试报文收发模块的测试注册报文数目和映射确认报文数目,计算实际映射规模、实际映射注册速度、注册成功率,传递给控制模块。

第六步、控制模块接收来自统计模块的实际映射规模、实际映射注册速度、注册成功率,显示统计结果。

第七步、结束。

图2是本发明第一步压力测试软件部署逻辑结构图,如图2所示:压力测试软件部署在一台服务器上,压力测试软件向被测映射系统发送测试注册报文,并接收被测映射系统发送的注册确认报文。压力测试软件由命令解析模块、控制模块、测试报文生成模块、测试报文收发模块、统计模块组成。命令解析模块从键盘接收测试参数(测试项目、EID生成模式、注册规模或注册速度、公钥、映射系统RLOC地址)并将测试参数发送给控制模块;控制模块与命令解析模块、测试报文生成模块、测试报文收发模块、统计模块相连,接收来自命令解析模块的测试参数,根据其中参数控制测试报文生成模块生成测试注册报文,控制测试报文收发模块向被测映射系统发送测试注册报文并接收来自被测映射系统的映射确认报文,并接收来自统计模块的统计信息;测试报文生成模块负责根据参数(EID生成模式、公钥、映射系统RLOC地址)生成符合测试要求的测试注册报文,将测试注册报文发送给测试报文收发模块;测试报文收发模块负责将从测试报文生成模块接收到的测试注册报文发送给被测映射系统并接收其返回的注册确认报文,对接收到的注册确认报文进行计数,并将接收到的注册确认报文数目发送给统计模块;统计模块负责进行相关量化指标的统计,包括实际映射规模、映射注册速度、注册成功率,将计算得到的实际映射规模、映射注册速度、注册成功率发送给控制模块。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1