发明内容
针对相关技术中的问题,本发明提出一种用于多CPE测试的地址转换方法及系统,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
根据本发明的一个方面,提供了一种用于多CPE测试的地址转换方法,该方法包括以下步骤:
S1、从配置模块中接收配置消息,并对该配置消息进行分类保存;
S2、获取操作系统中尚未占用的多个端口,平均分为对接客户端端口和对接客户终端设备端口来接收报文,并通过端口占用表进行记录;
S3、生成空白的客户端IP及端口的分配表格;
S4、当从对接客户端的端口上接收到客户端发来的IP报文时,对收到的IP报文进行处理,并将处理后的媒体介入控制层报文发出;
S5、当从对接客户终端设备的端口接收到IP报文时,对收到的IP报文进行处理,并将处理后的IP报文发出。
进一步的,所述S1中的配置消息包括第一子配置消息和第二子配置消息;
其中,所述第一子配置消息包括服务器的IP及服务器的端口信息;
所述第二子配置消息包括多个客户终端设备的媒体介入控制层地址信息。
进一步的,所述S2中的对接客户端端口用于与多个客户端进行通信,所述对接客户终端设备端口用于与多个客户终端设备进行通信。
进一步的,所述S2中的接收报文采用套接字类型中的原始套接字来实现。
进一步的,所述S2中当待测试的为传输控制协议业务时,应设定系统防火墙来屏蔽操作系统在对接客户端端口上自动回复的英特尔快速存储技术报文。
进一步的,所述S4中对收到的IP报文进行处理,并将处理后的媒体介入控制层报文发出具体包括以下步骤:
S41、查询端口占用表中的对接客户端端口,得到端口编号及对应的对接客户终端设备端口,并将客户端的IP及端口写入客户端IP及端口分配表格对应的编号行中;
S42、对收到的IP报文进行以下处理:
将源IP修改为预设的本机IP;
将源端口号修改为对应编号的对接客户终端设备端口;
将目标IP修改为服务器IP;
将目标端口号修改为服务器端口号;
添加媒体介入控制层头信息;
S43、将处理后的媒体介入控制层报文发出。
进一步的,所述S42中添加媒体介入控制层头信息包括以下步骤:
将媒体介入控制层地址填写本机,目标媒体介入控制层地址修改为客户终端设备信息配置表对应编号的客户终端设备的媒体介入控制层地址。
进一步的,所述S5中对收到的IP报文进行处理,并将处理后的IP报文发出具体包括以下步骤:
S51、根据端口占用表中对接客户终端设备端口查询得到端口编号及对应的对接客户端端口,并通过该编号查询客户端IP及端口分配表格得到客户端IP及端口;
S52、对收到的IP报文进行以下处理:
将源IP修改为预设的本机IP;
将源端口号修改为对应编号的对接客户端端口;
将目标IP修改为客户端IP及端口分配表格中对应编号的客户端IP;
将目标端口修改为客户端IP及端口分配表格中对应编号的客户端端口;
S53、将处理后的IP报文发出。
根据本发明的另一个方面,提供了一种用于多CPE测试的地址转换系统,该系统包括端口地址转换模块和配置模块;
其中,所述端口地址转换模块通过多个端口与多个客户端对接,并根据与客户端对接的本地端口的不同,将路由下一点设为不同的客户终端设备;
所述配置模块用于将多个客户终端设备的媒体介入控制层地址配置给端口地址转换模块;
所述端口地址转换模块实现如下步骤:
S1、从配置模块中接收配置消息,并对该配置消息进行分类保存;
S2、获取操作系统中尚未占用的多个端口,平均分为对接客户端端口和对接客户终端设备端口来接收报文,并通过端口占用表进行记录;
S3、生成空白的客户端IP及端口的分配表格;
S4、当从对接客户端的端口上接收到客户端发来的IP报文时,对收到的IP报文进行处理,并将处理后的媒体介入控制层报文发出;
S5、当从对接客户终端设备的端口接收到IP报文时,对收到的IP报文进行处理,并将处理后的IP报文发出。
进一步的,所述端口地址转换模块和客户端与所有的客户终端设备需配置为同一网段,且所述端口地址转换模块可以部署在客户端的个人计算机上与客户端通过环回IP通信,也可以部署在不同的设备上通过IP协议通信。
本发明的有益效果为:通过端口地址转换模块在客户端与服务器之间建立起双向通信,使得端口地址转换模块可以根据客户端报文的目的端口的不同来给该报文及相关回应报文分配不同的路由,从而可以达到通过端口号来设定路由的功能,进而有效地实现了在单网卡单IP环境下同时测试多终端数据业务的目的。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种用于多CPE测试的地址转换方法及系统。
现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明的一个实施例,提供了一种用于多CPE测试的地址转换方法,该方法包括以下步骤:
S1、从配置模块中接收配置消息,并对该配置消息进行分类保存;
其中,所述S1中的配置消息包括第一子配置消息和第二子配置消息;
具体的,所述第一子配置消息包括服务器的IP及服务器的端口信息;
所述第二子配置消息包括多个(N个)客户终端设备的媒体介入控制层(MAC)地址信息;如下表一所示;
表一:CPE信息配置表
编号 |
CPE MAC地址 |
0 |
CPE编号0的MAC地址 |
1 |
CPE编号1的MAC地址 |
... |
... |
N-1 |
CPE编号N-1的MAC地址 |
S2、获取操作系统中尚未占用的多个(2N个)端口,平均分为N个对接客户端端口和N个对接客户终端设备端口来接收报文,并通过端口占用表进行记录,如下表二所示;
表二:端口占用表
编号 |
组一端口:对接客户端端口 |
组二端口:对接CPE端口 |
0 |
xxx |
xxx |
1 |
xxx |
xxx |
... |
... |
... |
N-1 |
xxx |
xxx |
其中,所述S2中的对接客户端端口用于与多个(N个)客户端进行通信,所述对接客户终端设备端口用于与多个(N个)客户终端设备进行通信。
使用socket(套接字)类型中的SOCK_RAW(原始套接字)来从这2*N个端口中收报文。另外,如果要测试的是TCP(传输控制协议)业务,应设定系统防火墙来屏蔽操作系统在组一端口上自动回复的RST(英特尔快速存储技术)报文(linux下采用iptables命令)。
S3、生成一张空白的客户端IP及端口的分配表格,为下一步骤做准备,如下表三所示;
表三:客户端IP+端口的分配表格
编号 |
客户端IP |
客户端端口 |
0 |
|
|
1 |
|
|
... |
|
|
N-1 |
|
|
其中,所述表一、表二和表三中的编号可以互通。
S4、当从对接客户端的端口上接收到客户端发来的IP报文时,对收到的IP报文进行处理,并将处理后的媒体介入控制层报文发出;
其中,所述S4具体包括以下步骤:
S41、查询端口占用表中的“对接客户端端口”一列,得到端口编号及对应的对接客户终端设备端口,并将客户端的IP及端口(即源IP和源端口)写入客户端IP及端口分配表格对应的编号行中;
S42、对收到的IP报文进行以下处理:
将源IP(服务器IP)修改为预设的本机(“本机”指的是本模块所部署的PC)IP;
将源端口(服务器端口)号修改为对应编号的对接客户终端设备端口;
将目标IP修改为服务器IP;
将目标端口号修改为服务器端口号;
添加媒体介入控制层头信息;
具体的,所述S42中添加媒体介入控制层头信息包括以下步骤:
将媒体介入控制层地址填写本机,目标媒体介入控制层地址修改为客户终端设备信息配置表对应编号的客户终端设备的媒体介入控制层地址。
此报文会根据目标MAC地址发到对应的CPE上,CPE会将报文继续路由到服务器。而从服务器返回的报文也会路由回到对应CPE,CPE会将返回的报文发到本模块对应的组二端口。
S43、将处理后的媒体介入控制层报文发出。
S5、当从对接客户终端设备的端口接收到IP报文时,对收到的IP报文进行处理,并将处理后的IP报文发出。
其中,所述S5具体包括以下步骤:
S51、根据端口占用表中“对接客户终端设备端口”一列,查询得到端口编号及对应的对接客户端端口,并通过该编号查询客户端IP及端口分配表格得到客户端IP及端口;
S52、对收到的IP报文进行以下处理:
将源IP修改为预设的本机IP;
将源端口号修改为对应编号的对接客户端端口;
将目标IP修改为客户端IP及端口分配表格中对应编号的客户端IP;
将目标端口修改为客户端IP及端口分配表格中对应编号的客户端端口;
S53、将处理后的IP报文发出。
此报文将到达对应客户端,客户端会认为这是本模块回应的报文。此时客户端与服务器的双向通信通过端口地址转换模块建立起来了。
为了方便理解本发明的上述技术方案,下面以双终端,且端口地址转换模块与客户端部署在不同物理PC来举例:
假设端口地址转换模块所在物理PC的IP为192.168.2.1,MAC地址为00:0e:c6:11:11:11;
假设服务器为TCP服务器,IP为172.129.1.1,端口号为32000;
假设编号0终端MAC地址为a8:93:52:0a:0b:01,编号1终端MAC地址为a8:93:52:0c:0d:02;
1、配置模块将服务器IP、端口,还有各终端的MAC地址配置给端口-地址转换模块:
端口-地址转换模块储存两部分信息:
第一部分:服务器IP与端口为172.129.1.1与32000
第二部分:2个CPE的MAC地址,以表一的形式保存;
表一:CPE信息配置表
编号 |
CPE MAC地址 |
0 |
a8:93:52:0a:0b:01 |
1 |
a8:93:52:0c:0d:02 |
2、寻找2*2个未被占用端口,假设为50000、50001还有60000、60001;生成以下表格:
表二:端口占用情况
编号 |
组一端口:对接客户端端口 |
组二端口:对接CPE端口 |
0 |
50000 |
60000 |
1 |
50001 |
60001 |
此时应建4个进程,通过socket接口的SOCK_RAW类型来分别收这4个端口的报文;
为防止操作系统收到发往这4个端口的TCP报文时自动回应TCP RST(TCP复位),应设置防火墙过滤这4个端口的TCP RST报文:
linux下用iptables命令来设置:
iptables-t filter-I OUTPUT-p tcp--sport 50000--tcp-flags RST RST-jDROP
iptables-t filter-I OUTPUT-p tcp--sport 50001--tcp-flags RST RST-jDROP
iptables-t filter-I OUTPUT-p tcp--sport 60000--tcp-flags RST RST-jDROP
iptables-t filter-I OUTPUT-p tcp--sport 60001--tcp-flags RST RST-jDROP
3、生成一张客户端IP+端口的空白分配表格;
表三:客户端IP+端口的分配表格
4、假设客户端从192.168.1.100,端口20001向端口-地址转换模块192.168.2.1、端口50001发“TCP握手请求”:
1)端口-地址转换模块在50001中收到此报文,从表二中查询到50001属于编号1的组一端口。得到对应组二端口60001,并将客户端IP、端口写入表三,此时表三为:
编号 |
客户端IP |
客户端端口 |
0 |
|
|
1 |
192.168.1.100 |
20001 |
2)、收到的IP报文如下:
按规则改造报文的源/目的IP、端口,并额外封装MAC头,得到的MAC报文为:
3)、发出此MAC报文。
注:此报文发出后会根据目的MAC地址a8:93:52:0c:0d:02路由到编号1终端,编号1终端去掉MAC地址,将其余部分(IP报文)经空口发往服务器;TCP服务器收到“TCP握手请求”后会返回“TCP握手加响应”报文,该响应报文按原路经过编号1终端返回端口-地址转换模块的端口60001,报文到达端口60001时内容如下:
5、当端口-地址转换模块从60001端口收到IP报文时:
1)、从表二中查询到60001属于编号1的组二端口。得到对应组一端口50001,并查询表三(步骤4更新后的表三)编号1得到客户端的IP、端口为192.168.1.100、20001;
2)、按规则改造报文的源/目的IP、端口,改造后报文变为:
3)、发出改造后的IP报文。
注:此IP报文发出后会到达客户端,客户端认为是端口-地址转换模块给它回应的报文。客户端与服务器通过端口-地址转换模块建立起双向通信,而端口-地址转换模块根据客户端报文的目的端口(50000或50001)的不同,给该报文及相关回应报文走不同的路由(编号0终端或编号1终端),达到了通过端口号来设定路由的功能,从而实现了在单网卡单IP环境下测试多CPE的目的。
假设另一TCP客户端(IP 192.168.1.100,端口30001)连接端口-地址转换模块的端口50000,则其发出的报文会经过编号0终端。详细过程不再赘述。
根据本发明的另一个实施例,如图2所示,提供了一种用于多CPE测试的地址转换系统,该系统包括端口地址转换模块和配置模块;
其中,所述端口地址转换模块通过N个端口与N个客户端对接,从客户端过来的报文都会最终发给唯一的服务器(唯一的IP、唯一的端口),但会根据与客户端对接的本地端口的不同,将路由下一点设为不同的CPE;而从CPE返回的报文,会根据本规则返回给对应的客户端;
所述配置模块用于将多个客户终端设备的媒体介入控制层地址配置给端口地址转换模块。
如图2所示,所述端口地址转换模块和客户端与所有的客户终端设备需配置为同一网段,且所述端口地址转换模块可以部署在客户端的PC(个人计算机)上,与客户端通过环回IP(127.0.0.1)通信,也可以部署在不同的设备上,通过IP协议通信。
综上所述,借助于本发明的上述技术方案,通过端口地址转换模块在客户端与服务器之间建立起双向通信,使得端口地址转换模块可以根据客户端报文的目的端口的不同来给该报文及相关回应报文分配不同的路由,从而可以达到通过端口号来设定路由的功能,进而有效地实现了在单网卡单IP环境下同时测试多终端数据业务的目的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。