实时半实物网络模拟仿真方法研究
我们开发的IP网络模拟是通过QualNet外部接口(External Interface)API实现的。这个API使得QualNet和其它的仿真器、图形用户接口(Graphic User Interface, GUI)和物理设备容易接口。它将接口简化为两个函数:获取(Get)数据和发送(Send)数据。
“Get Data”函数利用libpcap库从实际运行的IP网络中接收数据。Libpcap是一个开放源代码的网络管理工具,允许QualNet从实际网络中直接读取IP分组。当QualNet确定要仿真某个读取到的IP分组(例如该分组是两个QualNet已经作了标记的真实设备之间通信的数据),QualNet将使用外部API将此IP分组添加到仿真内部。IP分组将在仿真场景中的节点之间传输,最终要么到达目的端,要么由于网络问题被丢弃。
如果某个IP分组到达其目的地,那么外部接口API将调用“Send Data”函数。此函数将该IP分组重新导入实际运行的IP网络。此过程调用另一个称为“libnet”的开源工具。IP分组重新被送回到实际运行网络中的实际接收者——目的端IP设备。
图1 IP网络模拟器原理图
图1当中,源端IP电话(真实设备)向目的端IP电话(另一个真实设备)发起呼叫。呼叫的语音数据是以逐个IP分组的形式在网络中传输的。在传输的过程中,这些IP数据分组被QualNet导入模拟IP网络内部,从洛杉矶经过Internet传输到纽约,然后再重新导出模拟IP网络,递交给目的端IP电话。对于源端和目的端IP电话而言,模拟网络也提供了实际网络一样的传输延时和分组丢失,语音分组就好像经过了实际的Internet传输一样。从目的端的体验效果来看,是无法区分出分组是经过实际网络还是模拟网络传输的。
实时IP网络模拟具有许多好处。它使模拟网络代替了实际网络,节省了人力和财力,加速了实际设备的研发。
3. 建立半实物网络仿真
我们基于QualNet建立了半实物网络仿真环境。
3.1 实验床的配置
我们的实验床包含3台运行Windows XP系统的电脑:一个作为仿真服务器,其它两个作为物理网络收发设备。
图2 配置QualNet半实物仿真实验床
实验床按照图2中标示的IP地址进行配置。这三台计算机连接到了同一个有线(或无线)交换机上。
这样,这三台计算机就处于同一个网段内并且能够相互访问,我们需要对192.168.0.1和192.168.0.4这两台计算机进行如下的静态路由配置,使得二者之间的通信都必须经过仿真服务器转发:
route -p add 100.100.10.0 mask 255.255.255.0 192.168.0.100
3.2 仿真场景的配置
我们在仿真服务器上运行的仿真网络场景示例如图3所示。
图3 半实物仿真场景示例
这个示例场景一共有四个节点,IP地址分别是100.100.10.1、100.100.10.2、100.100.10.3和100.100.10.4,组成了一个移动自组织网络(Mobile Ad Hoc Networks,MANET)。它们都具有802.11射频,运行AODV(Ad Hoc On Demand Vector)路由协议。最左边的1号节点向最右边的4号节点发送恒定比特率(Constant Bit Rate,CBR)流量,数据经由中间的2号或3号节点转发。
3.3 半实物仿真的配置
上述仿真场景中的节点IP地址都属于100.100.10.0子网,需要和实际物理网络收发设备进行影射。
影射的结果就是将100.100.10.1和100.100.10.4这两个节点分别和192.168.0.1和192.168.0.4这两个计算机建立匹配关系。由192.168.0.1计算机发送的数据发送到192.168.0.100后,仿真器会将数据导入100.100.10.1节点,接着由100.100.10.1节点把数据通过仿真器中模拟的场景进行传输,最终到达100.100.10.4节点,再由100.100.10.4节点把数据导出到192.168.0.4计算机。
对于192.168.0.1和192.168.0.4上运行的端到端应用程序而言,仿真器是透明的。192.168.0.4收到的数据就好象是经过这四个仿真节点组成的Ad Hoc网络传输的一样。
4. 仿真实例
我