CN101510870A - 基于脚本和模块驱动的代码级网络协议仿真验证组织方法 - Google Patents
基于脚本和模块驱动的代码级网络协议仿真验证组织方法 Download PDFInfo
- Publication number
- CN101510870A CN101510870A CNA2008100939508A CN200810093950A CN101510870A CN 101510870 A CN101510870 A CN 101510870A CN A2008100939508 A CNA2008100939508 A CN A2008100939508A CN 200810093950 A CN200810093950 A CN 200810093950A CN 101510870 A CN101510870 A CN 101510870A
- Authority
- CN
- China
- Prior art keywords
- simulating
- verifying
- emulation
- script
- authentication server
- 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.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
基于脚本和模块驱动的代码级网络协议仿真验证组织方法属于网络协议仿真验证研究领域,其特征在于依次含有以下步骤:在验证客户端注册被测协议功能或核心算法的代码并对其进行编译调试,随后根据用户命令向验证服务器端发送仿真验证请求,验证服务器根据请求查询仿真项目表并将相应的脚本返回给验证客户端,在收到脚本后验证客户端与验证服务器端各自按照仿真脚本逐步进行仿真交互,最终完成对被测代码的功能验证。本发明实现了对新开发协议功能和核心算法代码功能的快速有效验证。
Description
技术领域
本申请涉及一种基于脚本和模块驱动的代码级网络协议仿真验证组织方法,其属于网络协议仿真验证的方法的技术领域。
背景技术
从1969年美国国防部的最初只包括4个站点的ARPANET投入运行开始,到上个世纪末Internet已经有上千万台主机,计算机网络的发展在短短的30年的时间里就经历了从无到有,从简单到复杂,从在一个房间里到遍布全球的过程。网络给人们带来了丰富的信息和全新的服务,同时也带来了新的学习、工作和生活方式。随着接入Internet的主机数量的不断增长和网络所能提供的服务范围的不断扩展延伸,支撑网络运行与提供网络服务的网络协议也在不断的开发和完善中,例如现在的Internet正在由IPv4协议向IPv6协议过渡。
在进行网络协议开发时,由于网络协议的各个工作模块需要在整个协议开发工作完成后才能进行相应的功能测试,所以网络协议的开发过程往往需要一个较长的开发测试周期。这就意味着开发功能模块出错后修改时间点延迟和整个协议开发周期的延长,同时也提高了网络协议的开发风险。因为当开发一个新的网络协议功能时,直到协议真正运行在网络上之前都是无法确定新功能代码的逻辑正确性以及是否能与协议的其它模块兼容。同时因为网络协议的验证需要硬件环境的支持,所以对硬件平台的投入往往也十分巨大。为了加速对新开发协议功能模块的验证速度和协议的开发周期,同时减少对硬件平台的投入和需求,我们发明了基于脚本和模块驱动的代码级网络协议仿真验证组织方法。
代码级网络协议仿真验证的主要功能就是为新开发网络协议功能模块或核心算法搭建一个仿真交互网络平台,使新开发网络协议功能模块能够在该平台上运行并验证其正确性。首先在这个网络平台中需要为被测试代码提供运行环境。因为被测的对象只是一个协议功能代码块,无法单独运行,所以必须为其准备一个可以让被测代码对象运行的统一环境。本仿真验证系统提供了一个验证客户端来完成此功能。其次是协议分析器。对于验证客户端而言,其可以监控被测代码对象产生的会话,并可对检测到的会话所产生的数据帧进行捕捉和协议分层解析(16进制和ASCII码),并以时序方式展示被监测会话交互过程中产生的数据帧。最后是被测代码验证系统。因为要对被测代码进行功能验证,而协议的功能验证的本质是数据报文的收发及响应,所以本发明含有一个验证服务器端用来与被测代码进行数据报文交互并且产生验证结果。为了描述和规定仿真验证过程本发明设计了相应的仿真验证脚本语言来保证验证客户端与验证服务器端的交互过程。综合以上三个要素就构成了基于脚本模块驱动的代码级网络协议仿真组织方法设计中需要重点考虑的因素。
综上所述如何兼顾网络实验环境硬件平台投入和网络协议仿真设计中的各种因素成为了网络协议仿真验证中需要研究的关键问题。
本发明与美国安捷伦科技有限公司提出的发明名称为协议仿真器的200510055792.3号发明专利申请、吉林中软吉大信息技术有限公司提出的发明名称为IPv6网络协议仿真教学实验装置的200710055544.8号发明专利申请以及清华大学提出的发明名称为互联网大规模路由开放最短路径优先协议仿真方法及系统的02146040.X号发明专利申请具有本质性的区别,上述专利都是针对现有协议的仿真,实现对网络协议功能的模拟,而本发明是对网络协议代码的仿真验证,是对被测代码实现的协议功能进行验证,判断其是否符合协议标准。
发明内容
本发明特征在于提供了一种基于脚本和模块驱动的代码级网络协议仿真验证组织方法,该方法是通过按照仿真验证脚本描述的仿真验证内容在验证客户端和验证服务器端交互实现的,依次含有以下步骤:
步骤(1.):验证服务器端的初始化步骤;用于向所达验证服务器传送根据被测代码段所实现的模块功能编写的仿真验证脚本文件,初始化仿真项目表,其中包括仿真名称、仿真主ID号、仿真子ID号、仿真操作和仿真内容描述字段,其中:仿真名称存放该仿真项目的名称;仿真主ID号,存放标记该仿真的唯一标识,为10位十进制数;仿真子ID号,存放标记该仿真的仿真子项目的编号,为两位十进制数;仿真操作字段,存储具体要执行的仿真操作;仿真描述字段,存放针对该仿真行为的描述;
依据所述仿真项目对协议状态机表初始化操作的步骤,其中包括协议名称、协议ID和状态机字段:协议名称,存放该仿真协议的名称;协议ID,唯一标识该仿真协议;状态机字段,存储该仿真协议的状态机;
验证服务器端的用户连接表的初始化步骤,其中包括用户连接ID、仿真状态机以及连接仿真内容字段,其中:用户连接ID,唯一标记一个用户连接;仿真状态机表述此连接在验证过程中的状态机所处状态;连接仿真内容,存放仿真验证脚本位图矩阵,该位图的位区间的对应值是与仿真验证脚本中的若干个标签及对应行为相对应的;
步骤(2.):所述验证服务器在设定端口展开监听,等待验证客户端的验证服务请求;若验证服务器端收到了所述验证服务请求,则具体包括以下步骤:
步骤(2.1.):回应验证客户端的确认连接报文的步骤,为该连接请求分配一个用户连接ID,并将该用户连接ID填入用户连接表,并根据此用户连接ID唯一标识该验证客户端的会话;
步骤(2.2.):验证服务器一旦收到仿真验证请求报文,便根据所述仿真验证请求中的仿真项目查询仿真项目表,若查询成功则得到要执行的仿真操作,其中包括验证客户端部分与验证服务器端部分;否则向验证客户端返回仿真验证请求错误报文,把已分配的用户连接表项收回,返回到步骤(2.);
步骤(2.3.)编码步骤,验证服务器端把验证客户端要执行的仿真验证脚本中的每一个仿真验证操作步骤编码成仿真脚本位图,组成仿真脚本位图矩阵后发送给验证客户端,并将自己需要执行的部分按照同样的方式编码后填入用户连接表中用户连接ID表项对应的连接仿真字段中;
步骤(3.):仿真验证脚本位图矩阵的执行步骤,验证服务器端开始执行用户连接表中该会话连接的仿真验证脚本位图矩阵,若该矩阵不为空,则运行第一行仿真验证脚本位图,所述验证服务器端依次执行以下操作步骤,完成仿真验证:
步骤(3.1.):若正在执行的仿真验证操作步骤是等待输入数据报文,则在设定的监听端口等待,同时按照脚本规定的时间初始化一个定时器,并且据此设置协议状态机表和用户连接表中的仿真状态机字段;
若接收到验证客户端发送的报文,则根据所述协议状态机表和用户连接表中的仿真状态机字段,以及所述仿真验证脚本中定义的规则判定被测代码功能是否正确;若正确,则依据接收到的报文查询所述协议状态机表,使用查询到的结果更新本连接的仿真状态机字段内容并返回到步骤(3.);否则向验证客户端返回验证错误报文,清除用户连接表中该会话的连接仿真字段中该仿真子ID号下其余的仿真验证脚本位图,返回到步骤(3.);
若未收到验证客户端发送的报文,则向验证客户端发送等待超时报文,并把分配的用户连接ID表项收回,返回步骤(3.);
步骤(3.2.):若正在执行的仿真验证操作步骤是向验证客户端发送数据报文,则按照要求组装一个相应的数据报文发送到验证客户端,并根据协议状态机表和用户连接表中的仿真状态机字段更新本字段内容,返回到步骤(3.);
步骤(4.):验证服务器端把用户连接表中该会话连接的所有仿真验证脚本位图执行完毕后,结束与验证客户端的会话,把分配的用户连接表项收回,返回步骤(2.);
步骤(5.):验证客户端启动后,用户根据被测代码所完成的协议模块功能,将其注册到验证客户端所实现的协议栈中相应协议所开放的功能模块接口中,完成被测模块注册;
步骤(6.):用户把被测代码嵌入到步骤(5.)中注册的协议功能模块接口中,验证客户端将对嵌入的代码进行编译调试,直到没有语法错误为止;
步骤(7.):一旦验证客户端接收到用户进行协议仿真验证的指令,则与验证服务器端按照以下步骤建立会话:
步骤(7.1.):验证客户端初始化一个用来存储验证客户端需执行的仿真验证脚本位图矩阵的本地仿真项目表,,该本地仿真项目表包括:验证服务器端ID,用来存放标记此仿真验证操作的验证服务器端的唯一标识;验证服务器端IP,存放此验证服务器端的IP地址;仿真操作,存储具体由该验证客户端需要执行的仿真验证脚本位图矩阵;
步骤(7.2.):验证客户端向验证服务器端发出建立连接的请求;
步骤(7.3.):验证客户端收到验证服务器端发回的连接建立确认报文后,向验证服务器端请求本次执行的仿真验证脚本位图矩阵;
步骤(7.4.):验证客户端接在得到本次需执行的仿真验证脚本位图矩阵后将其存储到本地仿真项目表中;
步骤(8):验证客户端将从第一行的仿真验证脚本位图开始并按照以下步骤执行本地仿真项目表中存放的仿真验证脚本位图矩阵:
步骤(8.1.):若正在执行的仿真验证操作步骤是验证被测代码完成的协议功能模块的数据报文接收功能,则验证客户端在建立连接的端口等待接收报文,在接收到报文后,调用由被测代码编译后实现的功能模块来处理收到的报文,返回步骤(8.);
步骤(8.2.):若正在执行的仿真验证操作步骤是验证被测代码完成的协议功能模块的数据报文发送功能,则按照仿真验证脚本的描述调用被测功能模块的发送功能发送数据报文到验证服务器端,返回步骤(8.);
步骤(9.):验证客户端本地协议解析器捕捉到会话发送和接收到的数据报文,进行协议的解析和展示;
步骤(10.):本地仿真项目表中存储的仿真验证脚本位图执行完毕,验证客户端结束与验证服务器端的会话,返回步骤(5)。
所述仿真验证脚本中的标签名和标签功能与仿真验证位图中的值区间及对应值的相对位置关系为:
标签名<testItem>标识仿真验证项目说明,对应于位区间0-15和对应值0-65535,
标签名<testCase>标识仿真验证子项描述,对应于位区间16-23和对应值0-255,
标签名<server>标识验证服务器端仿真验证脚本,对应于位区间24和对应值0,
标签名<client>标识验证客户端仿真验证脚本,对应于位区间24和对应值1,
标签名<para>标识仿真验证脚本行为参数,对应于位区间25-30和对应值0-63,
标签名<OUTPUT>标识输出行为,对应于位区间31和对应值0,
标签名<INPUT>标识输入行为,对应于位区间31和对应值1。
附图说明
图1.基于脚本和模块驱动的代码级网络协议仿真验证组织方法结构拓扑示意图;
图2.基于脚本和模块驱动的代码级网络协议仿真验证组织方法的脚本标签示意图;
图3.验证客户端流程示意图;
图4.验证服务器端流程示意图。
具体实施方式
本发明的具体实施方式是通过按照仿真验证脚本描述的仿真验证内容验证客户端和验证服务器端来交互实现,依次含有以下步骤:
步骤(1.):启动验证服务器,首先验证服务器端进行初始化,将根据被测代码段所实现的模块功能编写的仿真验证脚本文件读入内存依次执行以下步骤完成初始化:
步骤(1.1.):依据仿真验证脚本文件初始化仿真项目表,其中包括仿真名称、仿真主ID号、仿真子ID号、仿真操作和仿真内容描述字段,其中仿真名称字段用来存放该仿真项目的名称如“IP转发”,仿真主ID号字段用来存放用于标记该仿真的唯一标识为十六位二进制数,仿真子ID号字段用来存放标记该仿真的仿真子项目的编号为八位二进制数,如“IP转发”中子仿真号为11的仿真项目其完整名称为“IP转发11”,仿真操作字段用来存储具体要执行的仿真操作,仿真描述字段用来存放针对该仿真行为的描述,如果初始化出错则返回到步骤(1.);
步骤(1.2.):依据验证服务器所能进行的仿真项目初始化协议状态机表,其中包括协议名称、协议ID和状态机字段,其中协议名称是用来存放仿真协议的名称,协议ID字段用来唯一标识该仿真协议,状态机字段存储了该协议的状态机,如果初始化出错则返回到步骤(1.);
步骤(1.3.):初始化验证服务器端的用户连接表,其中包括:用户连接ID、仿真状态机以及连接仿真内容字段,其中用户连接ID字段用来唯一标记一个用户连接,仿真状态机用来表明此连接在验证过程中的状态机所处状态,连接仿真内容字段用来存储仿真验证脚本位图矩阵,如果初始化出错则返回到步骤(1.);
步骤(2.):验证服务器端完成初始化工作,在特定端口展开监听,等待验证客户端的验证服务请求,如果验证服务器端收到了验证客户端的验证请求,则依次执行以下步骤:
步骤(2.1.):验证服务器端回应验证客户端一个确认连接报文,同时给该连接请求分配一个用户连接ID并将其填入用户连接表,验证服务器端将根据此用户连接ID唯一标识该验证客户端会话;
步骤(2.2.):验证服务器端等待仿真验证请求报文,同时初始化一个时间间隔为3s的定时器,并依次执行以下步骤:
步骤(2.2.1.):如果3秒内没有收到请求报文,则向验证客户端返回连接超时报文,同时将分配的用户连接表项收回并返回到步骤(2.);
步骤(2.2.2.):验证服务器端收到报文后根据仿真验证请求查询仿真项目表,如果查询成功则得到要执行的仿真操作,包括验证客户端部分与验证服务器端部分;如果查询失败,则向验证客户端返回仿真验证请求错误报文,将分配的用户连接表项收回,返回到步骤(2.);
步骤(2.3.)验证服务器端将验证客户端执行的仿真验证脚本部分的每一仿真验证操作步编码成仿真验证脚本位图,组成仿真验证脚本位图矩阵后发送给验证客户端,并将自己需要执行的部分按照同样的方式编码后填入用户连接表中相应表项的连接仿真字段中;
步骤(3.):验证服务器端开始执行用户连接表中该会话连接的仿真验证脚本位图矩阵,如果矩阵不为空,运行第一行仿真验证脚本位图,验证服务器端完成仿真验证需依次执行以下步骤:
步骤(3.1.):如果正在执行仿真验证操作步是等待输入数据报文,则验证服务器端在监听端口等待,同时按照仿真验证规定的时间初始化一个定时器,并且依据协议状态机表设置用户连接表中的相应字段;
步骤(3.1.1.):如果在仿真验证规定的时间内没有接收到报文,则向验证客户端发送等待超时报文,并将分配的用户连接表项收回,返回到步骤(2.);
步骤(3.1.2.):如果接收到验证客户端发送的报文,则查询协议状态机表和用户连接表中的仿真状态机字段并结合仿真验证设定进行判定,如果符合所有判定规则,则更新本连接的仿真状态机字段内容并返回到步骤(3.);否则验证服务器端向验证客户端返回验证错误报文,清除用户连接表中该会话的连接仿真字段中该仿真子ID号下其余的仿真验证脚本位图并返回到步骤(3.);
步骤(3.2.):如果正在执行的仿真验证操作步骤是向验证客户端发送数据报文,则按照要求组装一个相应报文发送到验证客户端,并根据协议状态机表和用户连接表中的仿真状态机字段更新本字段内容,返回到步骤(3.);
步骤(4.):用户连接表中该会话连接所有的仿真验证脚本位图执行完毕后,结束与验证客户端的连接,将分配的用户连接表项收回并返回到步骤(2.);
步骤(5):验证客户端启动后,用户根据被测代码所完成的协议模块功能,将其注册到验证客户端所实现的协议栈中相应协议所开放的功能模块接口中,完成被测模块注册;
步骤(6.):将被测代码嵌入在步骤(5.)中注册的协议功能模块接口中,验证客户端将对嵌入的代码进行编译调试,如果没有语法错误则执行步骤(7.),否则修改嵌入代码后重新执行步骤(6.);
步骤(7.):如果验证客户端接收到了用户进行协议仿真验证的指令,与验证服务器端建立会话依次执行以下步骤:
步骤(7.1.):验证客户端初始化一个本地仿真项目表,用来存储自己要执行的仿真验证脚本位图矩阵,其中包括验证服务器ID、验证服务器IP和仿真操作字段,其中验证服务器ID字段用来存放标识,能唯一标记此仿真验证操作需交互的验证服务器,验证服务器IP字段用来存放此验证服务器的IP地址,仿真操作字段用来存储具体要执行的仿真验证脚本位图矩阵;
步骤(7.2.):验证客户端向验证服务器端发起建立连接请求,同时初始化一个时间长度为5s的定时器,随之等待验证服务器端的应答,如果5秒内没有收到确认报文并且发送次数小于3,则重新发送请求报文,否则提示用户请求建立连接出错并返回到步骤(6.);
步骤(7.3.):验证客户端收到验证服务器端发回的连接建立确认报文后,根据用户选择的协议仿真内容,向验证服务器端请求本次执行的仿真验证脚本位图矩阵,并重置步骤(7.2.)中的定时器,如果5s内没有收到确认报文,则提示下载仿真验证脚本出错并返回到步骤(7.);
步骤(7.3.):验证客户端接收收到验证服务器端的响应,得到本次仿真验证的仿真验证脚本位图矩阵并将其存储到本地仿真项目表中;
步骤(8):验证客户端开始执行本地仿真项目表中存储的仿真验证脚本位图矩阵,如果矩阵不为空,则执行第一行的仿真验证脚本位图,验证客户端要完成仿真验证需依次执行以下步骤:
步骤(8.1.):如果正在执行的仿真验证操作步骤是验证被测代码完成的协议功能模块的数据报文接收功能,则验证客户端在建立连接的端口等待接收报文,同时按照仿真验证规定的时间初始化一个定时器;
步骤(8.1.1):如果在仿真验证规定的时间内没有接收到报文,则清空本地仿真项目表并提示等待超时,返回到步骤(7.);
步骤(8.1.2):如果接收到验证服务器端发送的报文,则调用由被测代码编译后实现的功能模块处理收到的数据报文并返回到步骤(8.);
步骤(8.2.):如果正在执行的仿真验证操作步骤是验证被测代码完成的协议功能模块的数据报文发送功能,则按照仿真验证脚本描述调用被测功能模块的发送功能发送数据报文到验证服务器端并返回到步骤(8.);
步骤(9.);验证客户端本地协议解析器捕捉到会话发送和接收到的数据报文,并对之进行协议解析和展示;
步骤(10.):本地仿真项目表中存储的仿真验证脚本位图执行完毕,结束与验证服务器端的会话,得到验证结果,如果还需测试其它网络协议代码则返回步骤(5.)。
传统方式下,网络协议新功能模块的代码级验证需要较高的设备投入和较长的验证周期。本发明的主要贡献是使用自定义脚本实现网络协议新功能模块代码级的仿真验证,只需要较少的设备投入就能快速完成较大规模网络协议功能模块的代码级仿真验证。
基于脚本和模块驱动的代码级网络协议仿真验证组织方法的结构拓扑示意图见图1。
基于脚本和模块驱动的代码级网络协议仿真验证组织方法的仿真验证脚本位图与仿真验证脚本文件对应示意图见图2.:基于脚本和模块驱动的代码级网络协议仿真验证组织方法的仿真验证脚本由若干个标签及对应行为组成。其中<testItem>和<testCase>为非动作标签,用来解释本实验的具体目的及内容,在仿真验证脚本位图中分别用第0-15和16-23位来唯一标识。<server>和<client>为动作标签,分别用来描述验证服务器端和验证客户端的行为,在仿真验证脚本位图中用第24位来标识。当值为1时代表验证客户端,为0时代表验证服务器端。<para>为行为参数标签,用来给行为提供具体的参数,在仿真验证脚本位图中用第25-30位来标识。<INPUT>和<OUTPUT>为输入输出控制标签,用来指示该行为是输入行为还是输出行为,在仿真验证脚本位图中用第31位来标识。当值为1时代表输入行为,为0时代表验证输出行为。
基于脚本和模块驱动的代码级网络协议仿真验证组织方法的验证客户端流程图见图3:该图比较详细的阐述了该机制在验证客户端的具体行为与操作。其中验证客户端在与验证服务器端建立连接后收到验证服务器端发来的仿真验证脚本位图矩阵。随后开始执行仿真验证脚本位图矩阵,并根据仿真验证脚本位图矩阵的定义确定验证客户端的行为方式与验证服务器端交互从而完成用户定制的代码仿真验证内容。在与验证服务器端交互的过程中得到本次仿真验证的结果。其具体的工作原理见上述具体实施方式中的步骤(5.)至步骤(10.)。
基于脚本和模块驱动的代码级网络协议仿真验证组织方法的验证服务器端流程图见图4.:该图比较详细的阐述了该机制在验证服务器端的具体行为与操作。其中验证服务器端在完成仿真项目表、协议状态机表和用户连接表初始化之后,在特定端口展开监听,等待验证客户端的仿真验证请求。当收到验证客户端的建立连接和仿真验证请求后,根据验证请求验证服务器端查询仿真项目表并将查询到的仿真脚本内容编码后将验证服务器端仿真验证脚本位图矩阵填充到用户连接表,将验证客户端仿真验证脚本位图矩阵内容发送给验证客户端。验证服务器端根据用户连接表中的仿真验证脚本位图矩阵确定自己的行为方式并与验证客户端展开交互完成验证。在仿真验证的过程中,验证服务器端依据协议状态机表、用户连接表中的仿真状态机字段和脚本中定义的规则判定被测代码功能是否正确并将结果反馈给验证客户端。其具体的工作原理见上述具体实施方式中的步骤(1.)至步骤(4.)。
本发明采用自定义脚本的机制实现了以模块驱动的代码级网络协议仿真验证的自动化执行,为大规模的网络协议模块功能的代码级仿真验证提供了一个方便快捷的方法。该方法通过在验证客户端实现一个协议栈并开放协议栈各层协议的功能模块接口的注册功能,当开发新的协议功能模块与核心算法时,可将其实现的协议功能模块注册到开放的相应协议功能接口,使开发的模块或核心算法代码嵌入到验证客户端的协议栈当中。并且该方法在验证服务器端管理仿真验证脚本,使用网络连接将仿真验证脚本位图矩阵传递给验证客户端,从而控制验证客户端的验证行为。因此使用该方法验证协议功能模块与核心算法的正确性,可以在减少协议开发过程中硬件投入的同时,为开发人员提供了一个方便快捷的方法验证被测协议代码的正确性,减少了测试代码的编写压力和测试代码出错的可能性,从而大大减少了开发新协议的风险与周期。
Claims (2)
1.一种用于脚本和模块驱动的代码级网络协议仿真验证组织方法,其特征在于该方法是通过按照仿真验证脚本描述的仿真验证内容在验证客户端和验证服务器端交互实现的,依次含有以下步骤:
步骤1:验证服务器端的初始化步骤;用于向所达验证服务器传送根据被测代码段所实现的模块功能编写的仿真验证脚本文件,初始化仿真项目表,其中包括仿真名称、仿真主ID号、仿真子ID号、仿真操作和仿真内容描述字段,其中:仿真名称存放该仿真项目的名称;仿真主ID号,存放标记该仿真的唯一标识,为10位十进制数;仿真子ID号,存放标记该仿真的仿真子项目的编号,为两位十进制数;仿真操作字段,存储具体要执行的仿真操作;仿真描述字段,存放针对该仿真行为的描述;
依据所述仿真项目对协议状态机表初始化操作的步骤,其中包括协议名称、协议ID和状态机字段:协议名称,存放该仿真协议的名称;协议ID,唯一标识该仿真协议;状态机字段,存储该仿真协议的状态机;
验证服务器端的用户连接表的初始化步骤,其中包括用户连接ID、仿真状态机以及连接仿真内容字段,其中:用户连接ID,唯一标记一个用户连接;仿真状态机表述此连接在验证过程中的状态机所处状态;连接仿真内容,存放仿真验证脚本位图矩阵,该位图的位区间的对应值是与仿真验证脚本中的若干个标签及对应行为相对应的;
步骤2 所述验证服务器在设定端口展开监听,等待验证客户端的验证服务请求;若验证服务器端收到了所述验证服务请求,则具体包括以下步骤:
步骤2.1 回应验证客户端的确认连接报文的步骤,为该连接请求分配一个用户连接ID,并将该用户连接ID填入用户连接表,并根据此用户连接ID唯一标识该验证客户端的会话;
步骤2.2 验证服务器一旦收到仿真验证请求报文,便根据所述仿真验证请求中的仿真项目查询仿真项目表,若查询成功则得到要执行的仿真操作,其中包括验证客户端部分与验证服务器端部分;否则向验证客户端返回仿真验证请求错误报文,把已分配的用户连接表项收回,返回到步骤2;
步骤2.3 编码步骤,验证服务器端把验证客户端要执行的仿真验证脚本中的每一个仿真验证操作步骤编码成仿真脚本位图,组成仿真脚本位图矩阵后发送给验证客户端,并将自己需要执行的部分按照同样的方式编码后填入用户连接表中用户连接ID表项对应的连接仿真字段中;
步骤3 仿真验证脚本位图矩阵的执行步骤,验证服务器端开始执行用户连接表中该会话连接的仿真验证脚本位图矩阵,若该矩阵不为空,则运行第一行仿真验证脚本位图,所述验证服务器端依次执行以下操作步骤,完成仿真验证:
步骤3.1 若正在执行的仿真验证操作步骤是等待输入数据报文,则在设定的监听端口等待,同时按照脚本规定的时间初始化一个定时器,并且据此设置协议状态机表和用户连接表中的仿真状态机字段;
若接收到验证客户端发送的报文,则根据所述协议状态机表和用户连接表中的仿真状态机字段,以及所述仿真验证脚本中定义的规则判定被测代码功能是否正确;若正确,则依据接收到的报文查询所述协议状态机表,使用查询到的结果更新本连接的仿真状态机字段内容并返回到步骤3;否则向验证客户端返回验证错误报文,清除用户连接表中该会话的连接仿真字段中该仿真子ID号下其余的仿真验证脚本位图,返回到步骤3;
若未收到验证客户端发送的报文,则向验证客户端发送等待超时报文,并把分配的用户连接ID表项收回,返回步骤3;
步骤3.2 若正在执行的仿真验证操作步骤是向验证客户端发送数据报文,则按照要求组装一个相应的数据报文发送到验证客户端,并根据协议状态机表和用户连接表中的仿真状态机字段更新本字段内容,返回到步骤3;
步骤4 验证服务器端把用户连接表中该会话连接的所有仿真验证脚本位图执行完毕后,结束与验证客户端的会话,把分配的用户连接表项收回,返回步骤2;
步骤5:验证客户端启动后,用户根据被测代码所完成的协议模块功能,将其注册到验证客户端所实现的协议栈中相应协议所开放的功能模块接口中,完成被测模块注册;
步骤6 用户把被测代码嵌入到步骤5中注册的协议功能模块接口中,验证客户端将对嵌入的代码进行编译调试,直到没有语法错误为止;
步骤7 一旦验证客户端接收到用户进行协议仿真验证的指令,则与验证服务器端按照以下步骤建立会话:
步骤7.1 验证客户端初始化一个用来存储验证客户端需执行的仿真验证脚本位图矩阵的本地仿真项目表,,该本地仿真项目表包括:验证服务器端ID,用来存放标记此仿真验证操作的验证服务器端的唯一标识;验证服务器端IP,存放此验证服务器端的IP地址;仿真操作,存储具体由该验证客户端需要执行的仿真验证脚本位图矩阵;
步骤7.2 验证客户端向验证服务器端发出建立连接的请求;
步骤7.3 验证客户端收到验证服务器端发回的连接建立确认报文后,向验证服务器端请求本次执行的仿真验证脚本位图矩阵;
步骤7.4 验证客户端接在得到本次需执行的仿真验证脚本位图矩阵后将其存储到本地仿真项目表中;
步骤8 验证客户端将从第一行的仿真验证脚本位图开始并按照以下步骤执行本地仿真项目表中存放的仿真验证脚本位图矩阵:
步骤8.1 若正在执行的仿真验证操作步是验证被测代码完成的协议功能模块的数据报文接收功能,则验证客户端在建立连接的端口等待接收报文,在接收到报文后,调用由被测代码编译后实现的功能模块来处理收到的报文,返回步骤8;
步骤8.2 若正在执行的仿真验证操作步是验证被测代码完成的协议功能模块的数据报文发送功能,则按照仿真验证脚本的描述调用被测功能模块的发送功能发送数据报文到验证服务器端,返回步骤8;
步骤9 验证客户端本地协议解析器捕捉到会话发送和接收到的数据报文,进行协议的解析和展示;
步骤10 本地仿真项目表中存储的仿真验证脚本位图执行完毕,验证客户端结束与验证服务器端的会话,返回步骤5。
2.如权利要求1所述的用于脚本和模块驱动的代码级网络协议仿真验证组织方法,其特征在于,所述仿真验证脚本中的标签名和标签功能与仿真验证位图中的值区间及对应值的相对位置关系为:
标签名<testItem>标识仿真验证项目说明,对应于位区间0-15和对应值0-65535,
标签名<testCase>标识仿真验证子项描述,对应于位区间16-23和对应值0-255,
标签名<server>标识验证服务器端仿真验证脚本,对应于位区间24和对应值0,
标签名<client>标识验证客户端仿真验证脚本,对应于位区间24和对应值1,
标签名<para>标识仿真验证脚本行为参数,对应于位区间25-30和对应值0-63,
标签名<OUTPUT>标识输出行为,对应于位区间31和对应值0,
标签名<INPUT>标识输入行为,对应于位区间31和对应值1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100939508A CN101510870B (zh) | 2008-04-23 | 2008-04-23 | 基于脚本和模块驱动的代码级网络协议仿真验证组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100939508A CN101510870B (zh) | 2008-04-23 | 2008-04-23 | 基于脚本和模块驱动的代码级网络协议仿真验证组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101510870A true CN101510870A (zh) | 2009-08-19 |
CN101510870B CN101510870B (zh) | 2012-03-21 |
Family
ID=41003134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100939508A Expired - Fee Related CN101510870B (zh) | 2008-04-23 | 2008-04-23 | 基于脚本和模块驱动的代码级网络协议仿真验证组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101510870B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195970A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 基于客户端会话的调试 |
CN102075409B (zh) * | 2009-11-24 | 2013-03-20 | 华为技术有限公司 | 请求消息处理方法、系统及负载均衡器设备 |
CN103578207A (zh) * | 2012-07-20 | 2014-02-12 | 中国移动通信集团公司 | 一种数据处理方法、装置、系统及相关设备 |
CN105117506A (zh) * | 2014-09-25 | 2015-12-02 | 航天恒星科技有限公司 | 一种自动生成网络仿真脚本的装置及方法 |
CN106021631A (zh) * | 2015-03-24 | 2016-10-12 | 上海图元软件技术有限公司 | 交互式数字集成电路仿真验证方法、服务器、客户端及系统 |
CN111414688A (zh) * | 2020-03-18 | 2020-07-14 | 上海机器人产业技术研究院有限公司 | 一种基于unity引擎的移动机器人仿真系统及方法 |
CN112328394A (zh) * | 2020-11-03 | 2021-02-05 | 北京信而泰科技股份有限公司 | 协议仿真中消息序列处理方法、装置及可读介质 |
CN113761489A (zh) * | 2020-06-02 | 2021-12-07 | 共道网络科技有限公司 | 验证方法、装置及设备、存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1153417C (zh) * | 2002-10-25 | 2004-06-09 | 清华大学 | 基于穿通-末端网络模型的路由协议测试方法及系统 |
US20060077895A1 (en) * | 2004-06-04 | 2006-04-13 | Cary Wright | Protocol emulator |
CN100487757C (zh) * | 2007-04-20 | 2009-05-13 | 吉林中软吉大信息技术有限公司 | IPv6网络协议仿真教学实验装置 |
-
2008
- 2008-04-23 CN CN2008100939508A patent/CN101510870B/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9357028B2 (en) | 2009-11-24 | 2016-05-31 | Huawei Technologies Co., Ltd. | Method and system for processing request message, and load balancer device |
CN102075409B (zh) * | 2009-11-24 | 2013-03-20 | 华为技术有限公司 | 请求消息处理方法、系统及负载均衡器设备 |
CN102195970B (zh) * | 2010-03-10 | 2015-11-25 | 微软技术许可有限责任公司 | 基于客户端会话的调试 |
CN102195970A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 基于客户端会话的调试 |
CN103578207B (zh) * | 2012-07-20 | 2015-12-02 | 中国移动通信集团公司 | 一种数据处理方法、装置、系统及相关设备 |
CN103578207A (zh) * | 2012-07-20 | 2014-02-12 | 中国移动通信集团公司 | 一种数据处理方法、装置、系统及相关设备 |
CN105117506A (zh) * | 2014-09-25 | 2015-12-02 | 航天恒星科技有限公司 | 一种自动生成网络仿真脚本的装置及方法 |
CN106021631A (zh) * | 2015-03-24 | 2016-10-12 | 上海图元软件技术有限公司 | 交互式数字集成电路仿真验证方法、服务器、客户端及系统 |
CN111414688A (zh) * | 2020-03-18 | 2020-07-14 | 上海机器人产业技术研究院有限公司 | 一种基于unity引擎的移动机器人仿真系统及方法 |
CN113761489A (zh) * | 2020-06-02 | 2021-12-07 | 共道网络科技有限公司 | 验证方法、装置及设备、存储介质 |
CN113761489B (zh) * | 2020-06-02 | 2024-01-26 | 共道网络科技有限公司 | 验证方法、装置及设备、存储介质 |
CN112328394A (zh) * | 2020-11-03 | 2021-02-05 | 北京信而泰科技股份有限公司 | 协议仿真中消息序列处理方法、装置及可读介质 |
CN112328394B (zh) * | 2020-11-03 | 2024-03-01 | 北京信而泰科技股份有限公司 | 协议仿真中消息序列处理方法、装置及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101510870B (zh) | 2012-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101510870B (zh) | 基于脚本和模块驱动的代码级网络协议仿真验证组织方法 | |
CN109800056A (zh) | 一种基于容器的区块链部署方法 | |
CN104580519B (zh) | 一种快速部署openstack云计算平台的方法 | |
CN113014449B (zh) | 一种用电信息采集系统的本地通信协议压力测试方法及系统 | |
CN104753586B (zh) | 无源光网络网元信息的采集方法和系统 | |
CN107465572A (zh) | 智能终端测试方法、装置及系统 | |
CN102014016A (zh) | 一种网络协议缺陷测试系统及方法 | |
CN102622262B (zh) | 基于modelica建模语言的分布式实时交互仿真系统 | |
CN103580942B (zh) | 一种模拟串口测试方法和装置 | |
CN110413595A (zh) | 一种应用于分布式数据库的数据迁移方法和相关装置 | |
CN106209503B (zh) | Rpc接口测试方法及系统 | |
CN101917719A (zh) | 一种学生手机分时段策略校园集中管理系统和方法 | |
CN109445837A (zh) | 一种应用程序的发布方法及设备 | |
CN110391949A (zh) | 一种配置变更的方法及相关装置 | |
CN106506280A (zh) | 智能家居设备的通信协议测试方法及系统 | |
CN110138876A (zh) | 任务部署方法、装置、设备及平台 | |
CN108459961A (zh) | 一种测试用例测试失败后重测试的方法、客户端及服务器 | |
CN104991817A (zh) | 一种信息系统可配置集成方法及系统 | |
CN109495492A (zh) | 用于智能水务行业的通信系统 | |
CN102157037B (zh) | 软件和模块的自动化测试方法及其系统 | |
CN110149241A (zh) | 一种基于ims设备的自动化测试方法及存储介质 | |
CN109325068A (zh) | 一种数据交换方法和装置 | |
CN109040255A (zh) | 物联网设备接入方法、装置、设备及存储介质 | |
CN109445384A (zh) | 一种多设备控制系统 | |
CN106875184A (zh) | 异常场景模拟方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120321 Termination date: 20140423 |