一种模拟网络设备的方法 【技术领域】
本发明涉及计算机网络领域,尤其涉及一种模拟网络设备的方法。
技术背景
现代网络是由多厂商的各种设备组成的混合网络,每个网管只管理一个或一种设备已经不满足网络管理者的要求,众多设备的综合管理是网管的发展趋势。这种发展趋势对我们的网管单元测试提出了更多性能上的要求,网管的可管理地设备的最大数量就是性能指标之一。因为成本的原因,我们不可能在实验室搭建和外部网络一模一样的测试环境,因此多设备的模拟就是测试中需要解决的一个问题。
目前常用的模拟单元或模拟设备都是完整的模拟被管对象的外部接口,为此提供了复杂的控制手段来模拟设备的正常运转、异常运转等各种状态。这些方法的最大特点是模拟单元或模拟设备是独立运行的,不需要和任何真实的被模拟设备相连。
现有的问题:
要实现完全真实的模拟非常复杂,现在网络设备的集中实现的功能越来越多,支持的协议也越来越多,这些功能和协议也是模拟单元或设备必须支持的,这必然使得模拟单元和设备的实现也越来越复杂,成本越来越高。并且这样的模拟单元或模拟设备的使用也很复杂,它需要有大量的业务配置数据来构造设备发送到外部的报文的内容,而对于一个真实的设备来讲,这些业务配置数据都存在一定的关联性,在这种情况下,要正确完成所有数据的配置是非常困难的。在很多时候甚至是不可行的。
【发明内容】
本发明提供一种模拟网络设备的方法,能解决现有技术中因采用自建模拟单元和设备来模拟而造成的实现越来越复杂且成本越来越高的问题。
为解决上述问题,本发明采用如下技术方案:
一种模拟网络设备的方法,包括以下步骤:
a、网络设备通过网络发送报文;
b、模拟单元抓获网络上的报文;
c、模拟单元判断所抓获报文的网络地址,并对该报文进行处理;
d、模拟单元将处理后的报文发送到该网络上;
e、接收报文的设备通过该网络接收处理后的报文。
该模拟网络设备的方法所述的步骤c进一步包括:
c1、当所抓获报文的源网络地址代表网管,目的网络地址代表虚设备时,模拟单元将源网络地址改为虚设备的网络地址,目的网络地址改为实设备的网络地址;
c2、当所抓获报文的源网络地址代表实设备,目的网络地址代表虚设备时,模拟单元将源网络地址改为虚设备的网络地址,目的网络地址改为网管的网络地址;
c3、当所抓获报文的目的网络地址代表网管或实设备时,模拟单元不对该报文进行修改。
该种模拟网络设备的方法中,模拟单元抓获网络上的报文,若模拟单元抓获的网络报文的目的网络地址不代表虚设备时,模拟单元丢弃此报文或透传。
一种模拟网络设备的方法,包括以下步骤:
a、模拟单元建立一张映射表,其内容是<IP地址,TCP端口号>到本机端口号的映射;
b、网络设备通过网络发送报文;
c、模拟单元抓获该网络上的报文;
d、模拟单元判断所抓获报文的网络地址,并在映射表中查找该报文网络地址所对应的信息,并对该报文进行相应的处理;
e、模拟单元将处理后的报文发送到该网络上;
f、接收报文的设备通过该网络接收处理后的报文。
该种模拟网络设备的方法所述的步骤d进一步包括:
d1、当源网络地址代表网管,目的网络地址代表虚设备时,模拟单元在映射表中查找报文中的<目的IP地址,源TCP端口>对应的本机端口号;
根据查找结果对该报文进行相应的处理;
d2、当源网络地址代表实设备,目的网络地址代表本机地址时,模拟单元在映射表中查找报文中目的端口号所对应的<IP地址,TCP端口号>;
将报文中的源IP地址和目的TCP端口号改为查询到的IP地址和TCP端口号,目的IP地址改为网管的IP地址;
d3、当目的网络地址代表网管或实设备时,模拟单元不对该报文进行修改。
该种模拟网络设备的方法所述的步骤d1进一步包括:
若查找结果存在对应的本机端口号,则报文的源IP地址改为本机地址,源TCP端口号改为查询出的本机端口号,目的IP地址改为实设备的IP地址;
查找结果若不存在对应的本机端口号,则创建一个映射关系,保证本机端口号不重复,并将报文的源IP地址改为本机地址,源TCP端口号改为创建出的本机端口号,目的IP地址改为实设备的IP地址。
该种模拟网络设备的方法中,模拟单元抓获网络上的报文,若模拟单元抓获的网络报文的目的网络地址不代表虚设备时,模拟单元不对该报文进行修改,直接发送到该网络上。
一种模拟网络设备的方法,当虚设备都是同一个IP地址,但用不同的TCP端口来区分,包括以下步骤:
在模拟单元上配置多个端口来代表多个虚设备;
模拟单元在每个端口上创建Server Socket,并对每个Server Socket建立一个Client Socket连接到实设备;
数据进入Server Socket,通过相对应的Client Socket转发给实设备;
数据进入Client Socket,通过相对应的Server Socket转发给网管。
本发明的有益效果在于,该方法是通用的,只要在一种网络上实现了报文的抓获分析处理和发送,就可以应用于所有运行在这种网络上的所有设备,另外,其功能和被模拟的设备的业务功能以及支持的协议没有任何关系,实现逻辑简单,这将极大地降低模拟单元的开发成本。
其中模拟单元的功能常用模拟软件实现。并且它本身要实现的功能和被模拟的设备要实现的功能、支持的协议都没有任何关联,可以独立开发,一次开发,永久使用,成本低廉;而且利用该方法模拟出的设备的实现逻辑和真实设备完全一样,不需要任何业务数据的配置,使用极其简单。另外可以保证任何设备在制造出来即可马上进行网管的大容量的测试。
模拟设备业务逻辑的处理实际上都是在一个真实的设备中完成的,对于使用人员来说,完全不需要做任何复杂的业务数据的配置,只需要配置网管和真实的网络地址以及模拟设备的虚拟子网号,使用简单,而且保证模拟过程真实可靠。另外,从上面分析的处理流程可以看出,在这个测试过程,实际上对设备的处理性能也进行了的测试,从网管到虚设备的所有报文最终到被实设备处理,当虚设备的数量大于实设备时,一个实设备必将处理网管到多个虚设备的请求报文,这样对其处理性能也进行了测试。同时,根据前面的处理流程的说明,每个虚设备在实设备看来是一个网管,当一个实设备被用来模拟虚设备时,实际上也对实设备进行了多网管的专项测试,包括并发性能处理、多网管等专项测试,提高了测试效益。
【附图说明】
图1是本发明的模拟单元进行测试的示意图;
图2是本发明的模拟单元的一处理流程图;
图3是本发明一较佳实施例的示意图;
图4是本发明的模拟单元另一处理流程图;
图5是本发明的模拟单元再一处理流程图。
【具体实施方式】
下面结合说明书附图来说明本发明的具体实施方式。
其中模拟单元的功能常用模拟软件来实现。
本发明是将N(N>0)个网络设备模拟为M(M>N)个网络设备,在下文描述中将真实存在的N个网络设备称为实设备,将模拟出来的M个网络设备称为虚设备。
如图2所示,是本发明一种模拟网络设备的方法的模拟单元的一处理流程图,从图中可见,本发明利用一模拟单元实现所有种类网络设备的模拟。首先我们必须保证网管发送到虚设备以及实设备发送到虚设备的所有报文都可以被我们发明的模拟单元抓获。这要求模拟单元、网管、实设备需要运行在同一个广播发送报文的局域网上,或者在网管和实设备上设置到虚设备的路由需经过运行模拟单元的计算机。
一般情况下,可以将一个现实中不存在的子网做为虚设备所在的网络,对这个网络我们称之为虚拟网络,对网管来讲,虚拟网络中的任一台主机都是我们的模拟设备;对真实的设备来讲,虚拟网络中的任一台主机都是一个网管。模拟单元的功能就是将网管到虚拟子网的报文转变为模拟子网到设备的报文,同时也将设备到虚拟子网的报文转变为虚拟子网到网管的报文,它是通过报文的目的网络地址和源网络地址来区分这两种报文的。
下面描述模拟单元的处理流程:
1、模拟单元抓获网络上所有的报文,判断抓获的报文的网络地址。
2、如果报文的源网络地址代表网管,目的网络地址代表虚设备,则:
直接修改抓获的报文内容,将源网络地址修改为虚设备的网络地址,将目的网络地址修改为实设备的网络地址,将修改后的报文再发送到网络上去;回到1、进行处理。
3、如果报文的源网络地址代表实设备,目的网络地址代表虚设备,则:
直接修改抓获的报文内容,将源网络地址修改为虚设备的网络地址,目的网络地址修改为网管的网络地址,将修改后的报文再发送到网络上;回到1、进行处理。
4、如果报文的目的网络地址不代表虚设备,即代表实设备或网管,则模拟单元不对其进行修改,直接将原报文放回到网络上进行透传或者直接丢弃;回到1、进行处理。
下面看一个具体的实施例,参阅图3所示:
假设网管要查询虚设备的版本信息,则整个处理过程如下:
1、网管发送查询信息给虚设备;
2、模拟单元抓获到网管发送到虚设备的查询报文,并将该报文的源网络地址改为虚设备的网络地址,目的网络地址改为实设备的网络地址,把修改后的报文重新发送到网络上;
3、实设备将会收到模拟单元修改后的报文,因为此报文的源网络地址是虚设备,它会以为这个虚设备是一个网管,就会向虚设备响应这个查询请求;
4、模拟单元抓获到实设备发送到虚设备的查询响应报文后,将该报文的源网络地址改为虚设备的网络地址,目的网络地址改为网管的网络地址,把修改后的报文重新发送到网络上;
5、网管将收到模拟单元修改后的报文,因为此报文的源网络地址已经被模拟单元修改为虚设备的网络地址,网管会认为这是虚设备的响应报文,这样就完成了一次交互过程。
从上面分析的处理流程可以看出,从网管到虚设备的所有报文最终到被实设备处理,当虚设备的数量大于实设备时,一个实设备必将处理网管到多个虚设备的请求报文,这样对其处理性能也进行了测试。同时,根据前面的处理流程的说明,每个虚设备在实设备看来是一个网管,当一个实设备被用来模拟虚设备时,实际上也对实设备进行了多网管的专项测试。
本发明所说的模拟单元可以完全利用硬件来实现。
如图4所示,是本发明的模拟单元的另一处理流程图。上述模拟单元是通过报文的目的和源网络地址来区分报文的,在不同的网络上可以从更高的层次来区分网管和虚拟设备以及虚拟设备和真实设备之间的报文,比如在TCP/IP网络上,可以通过IP地址加TCP端口号来分别区分报文,所有从网管到虚拟设备的报文被这样处理:
1、模拟单元建立一张映射表,其内容是<IP地址,TCP端口>到本机端口号的映射,初始为空。
2、模拟单元抓获网络上所有的报文,并判断所抓获报文的网络地址。
3、如果报文的源网络地址代表网管,目的网络地址代表虚设备,则根据报文中的<目的IP地址,源TCP端口>到映射表中查找对应的本机端口号,如果没有找到,则创建一个映射关系,保证本机端口号不重复。否则,继续进行2、的处理。
4、将报文的源IP地址修改为本机地址,源TCP端口号修改为第3步查询出来的本机端口号,将目的IP地址修改为实设备的IP地址,将修改后的报文再发送到网络上去;继续2、的处理。
5、如果报文的源网络地址代表实设备,目的网络地址代表本机,则进行根据报文中的目的端口号到映射表中查询对应的<IP地址,TCP端口>,将报文中的源IP地址和目的TCP端口号修改为查询到的IP地址和TCP端口号,将目的IP地址修改为网管的IP地址,将修改后的报文再发送到网络上;回到第2步进行处理。否则,继续2、的处理。
这样在设备看来,可以只有一个网管,不同的报文是从这一个网管的不同的端口发送出来的。这在明显对网管数量有限制的设备时是必须的。
假设网管要查询虚设备的版本信息,则整个处理过程如下:
1、网管通过TCP端口PORT1发送查询信息给虚设备;
2、模拟单元抓获到网管发送到虚设备的查询报文,用<报文的目的IP地址,源端口号PORT1>做为键值到映射表中查询本机端口号,如果不存在则创建一个映射,假设查询到的本机端口号为PORT2;
3、将报文的源IP地址和源TCP端口号改为本机IP地址和PORT2,将目的IP地址改为实设备的IP地址,将修改后的报文发送到网络上;
4、实设备收到修改后的报文,因为此报文的源IP地址是本机地址,会认为本机是一个网管,就会向本机响应这个查询请求;
5、模拟单元抓获到实设备的响应报文后,根据目的TCP端口号到映射表中查询到<IP地址,TCP端口号>,将报文的源IP地址修改为查询到的IP地址,目的TCP端口号修改为查询到的TCP端口号,目的IP地址修改为网管的IP地址,将修改后的保文发送到网络上;
6、网管将收到修改后的响应报文,会认为是虚拟设备的响应报文,从而完成一次交互过程,这种模拟方式,对实设备而言只有一个网管,就是运行模拟单元所在的机器。
如图5所示,是本发明的模拟单元的再一处理流程图。如果网管支持在更高层次上区分设备,比如在适用TCP/IP的网络上,按照IP地址加TCP端口来标识不同的设备,那么模拟单元的实现可以更简单,不需要修改TCP/IP层的数据,只需转发应用层的数据即可。这种情况下的处理流程:
1、假设所有的虚设备都是同一个IP地址,但用不同的TCP端口来区分;在模拟单元上配置多个端口来代表多个虚设备;
2、模拟单元在每个端口上创建Server Socket;对每个Server Socket建立一个Client Socket连接到实设备;
3、从Server Socket上接收到的数据通过对应的Client Socket转发到实设备;
4、从Client Socket上接收到的数据通过对应的Server Socket转发到网管。
假设网管要查询虚设备的版本信息,则整个处理过程如下:
1、首先在模拟单元上配置实设备的IP地址和代表虚设备的TCP端口号PORT1,配置后,模拟单元会创建一个Server Socket侦听此端口上的数据,并
2、网管首先连接到模拟单元所在机器的端口PORT1,当这个连接建立后,模拟单元同时创建一个Client Socket连接到实设备;
3、网管通过建立的连接发送查询请求到模拟单元所在机器的端口PORT1;
4、模拟单元通过Server Socket接受到查询请求,将它通过已创建的ClientSocket发送到实设备;
5、实设备受到查询请求后,会响应此查询请求;
6、模拟单元通过Client Socket接受到响应保文后,通过Server Socket转发到网管,
7、网管收到响应后完成一次交互过程。
本发明是通用的方法,只要在一种网络上实现了报文的抓获分析处理和发送,就可以应用于所有运行在这种网络上的所有设备,另外,其功能和被模拟的设备的业务功能以及支持的协议没有任何关系,实现逻辑简单,这将极大地降低模拟单元的开发成本。
模拟设备业务逻辑的处理实际上都是在一个真实的设备中完成的,对于使用人员来说,完全不需要做任何复杂的业务数据的配置,只需要配置网管和真实的网络地址以及模拟设备的虚拟子网号,使用简单,而且保证模拟过程真实可靠。另外,从上面分析的处理流程可以看出,在这个测试过程,实际上对设备的处理性能也进行了的测试,从网管到虚设备的所有报文最终到被实设备处理,当虚设备的数量大于实设备时,一个实设备必将处理网管到多个虚设备的请求报文,这样对其处理性能也进行了测试。同时,根据前面的处理流程的说明,每个虚设备在实设备看来是一个网管,当一个实设备被用来模拟虚设备时,实际上也对实设备进行了多网管的专项测试,包括并发性能处理、多网管等专项测试,提高了测试效益。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。