一种实现实物设备无缝接入网络模拟器的系统及方法

文档序号:7550129阅读:172来源:国知局

专利名称::一种实现实物设备无缝接入网络模拟器的系统及方法
技术领域
:本发明涉及网络模拟仿真领域,特别是涉及网络仿真平台的一种实现实物设备无缝接入网络模拟器的系统及方法。
背景技术
:网络模拟是目前研究大规模网络的重要方法,由于它具有真实性较高、模拟规模大、开发和运行成本较低、可用以研究当前和未来网络行为等优点而备受广大网络研究人员的青睐。但是网络模拟也存在缺点:1)一些在运行网络模拟模型之前必须要设定的影响性能的参数很难确定,有时候很难给出合理的值甚至正确的建模。例如CPU处理一条指令所花的时间,其通常受到CPUcache的影响,和是否多核的影响。2)网络模拟没有真实网络流量的参与,真实性不够高,很难使用现有的网络测量工具或部署实际的网络测量系统。例如很难在一个模拟节点上运行Wireshark程序,也很难做到将一个入侵检测系统无修改的部署到模拟网络中。3)当有关现实操作和部署的问题成为主要关注的对象的时候,研究人员更喜欢网络仿真和物理的测试床,而将网络模拟视为不可行的方法。一个重要的原因是需要额外的工作来开发网络模拟模型来模拟现实应用程序的行为,这将延长开发测试的时间,由于协议开发过程的复杂性,这将花费很大的精力而且容易出错。网络仿真在模拟网络中引入真实网络流量,它结合了网络模拟与硬件测试床的优势,提高了实验环境的真实性。在网络仿真环境中我们可以利用现有的工具分析网络流量和信息传输。实物设备接入之后的仿真平台可以在真实主机上运行没有修改的应用程序,可以用真实路由器搭建网络从而能够获得真实的性能测试。特别是在接入真实路由器后,可以在路由器部署未经修改的检测程序检测路由器的镜像流量,这对研究系统的有效性具有重要意义。模拟网络中引入真实网络流量后,真实流量在网络环境中的作用不尽相同,可以分为两类,分别定义为“真实网络接入”和“实物设备接入”。“真实网络接入”是将模拟网络与真实网络相连,使真实环境中的应用程序可以与模拟网络交互,而“实物设备接入”则更近一步,不但实现模拟网络和真实网络数据的交互,而且使模拟网络中每个定义为可仿真的节点都可以用实物设备来代替,包括主机和路由器。目前主流模拟和仿真工具(NS-2、NS-3、OMNet++、EMULab、PRME)实现真实网络流量引入的方法主要有以下三类:1.利用对混杂模式网卡的捕包和原始套接字这种方式主要是通过使用捕包工具(Iibpcap)从设为混杂模式的网卡上读取真实网络的流量,通过原始套接字将模拟环境中的数据发送到真实网络中。NS-2对仿真的支持,NS-3通过EmuNetDevice类接入硬件测试床和Michael等人在OMNet++基础上实现的网络接口模块都是使用这种方式。Netbed集成了NS的仿真功能所以也使用这种方式。然而从目前发表的研究成果来看,利用这种方式只做到了真实网络接入,没有实现实物设备接入。2.利用TAP设备和Bridge工具这种方式是利用IPC实现模拟器与宿主主机TAP设备的通信,再通过将实际网络桥接到宿主主机TAP设备实现真实网络与模拟器的连接。NS-3通过TapBridge实现的真实节点接入模拟器即使用此方法。虽然NS-3利用这种方法实现了实物设备的接入,但使用它的这一功能需要复杂的配置。这种方式的缺点是需要在网络模拟器和接入的设备上进行复杂的配置,无法做到无缝接入,另外这种方式无法接入真是路由器。3.利用OpenVPN这种方式以PRME基于OpenVPN的仿真框架为代表,通过VPN实现模拟器与真实设备进行通信,它实现了现实设备的接入。这种方式需要在客户机上运行OpenVPN的客户端,在客户机上建立一个虚拟网卡,也就是说需要对客户机做一些修改,并运行额外的程序,这种方式的另一个缺点是,路由器上面很难运行应用程序,所以很难实现真实路由器的接入。
发明内容本发明所要解决的技术问题是提供一种实现实物设备无缝接入网络模拟器的系统及方法,用于解决现有技术中实物设备接入存在的无法无缝接入和/或无法接入真实路由器等问题。本发明解决上述技术问题的技术方案如下:一种实现实物设备无缝接入网络模拟器的系统,包括实物设备、实物设备接入系统和网络模拟器;所述实物设备,其连接到与实物设备接入系统连通的交换机上,用于向所述实物设备接入系统发送真实网络数据包;其还通过所述实物设备接入系统与所述网络模拟器模拟出的虚拟网络通信,用于代替虚拟网络中的对应节点运行;所述实物设备接入系统,其用于接收和处理接入的实物设备发送的真实网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包,并用于实现虚拟网络数据包与真实网络数据包的转换与转发;所述网络模拟器,其运行在并行的若干服务器上,且通过TCP连接与所述实物设备接入系统通信,用于模拟出大规模的虚拟网络。这里,服务器是并行运行的。在上述技术方案的基础上,本发明还可以做如下改进。进一步,所述实物设备接入系统包括ARP(AddressResolutionProtocol,地址解析协议)应答模块、接入测试模块、捕包器模块和转发器模块,且所述ARP应答模块、所述接入测试模块、所述捕包器模块和所述转发器模块均通过交换机与所述实物设备通信。所述ARP应答模块,其向所述实物设备发送ARP应答包,用于保证所有从实物设备发出的真实网络数据包首先到达系统监听的网卡,避免实物设备之间相互直接通信;所述接入测试模块,其向所述实物设备发送ARP请求包,用于实时检测实物设备的接入信息,并将接入信息发送给所述转发器模块和所述捕包器模块;所述捕包器模块,其用于捕获所有接入的实物设备发出的真实网络数据包,并根据真实网络数据包的类型向所述ARP应答模块、所述接入测试模块或所述转发器模块转发真实网络数据包;所述转发器模块,其用于接收所述模拟网络器导入和导出的虚拟网络数据包,并实现虚拟网络数据包与真实网络数据包的的转换和转发。进一步,所述实物设备包括主机和/或路由器。根据上述系统,本发明的技术方案还提出了一种实现实物设备无缝接入网络模拟器的方法,包括:步骤1,将实物设备接入到与实物设备接入系统连通的交换机上,并设置其在模拟环境中的网络相关配置;在并行服务器上运行网络模拟器,模拟出大规模的虚拟网络;步骤2,实物设备接入系统接收和处理实物设备发出的真实网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包;步骤3,实物设备接入系统进行虚拟网络数据包与真实网络数据包之间的转换与转发;步骤4,根据步骤I至步骤3,实物设备通过所述实物设备接入系统与所述网络模拟器模拟出的虚拟网络通信,代替虚拟网络中的对应节点运行。在上述技术方案的基础上,本发明所述的方法还可以做如下改进。进一步,所述步骤2中实物设备接入系统接收和处理实物设备发送的真实网络数据包具体包括:步骤21,在实物设备接入系统中设置ARP应答模块、接入测试模块、捕包器模块和转发器模块;步骤22,捕包器模块接收实物设备发送的真实网络数据包,并将除ARP请求包和ARP应答包之外的真实网络数据包转发给所述转发器模块;步骤23,转发器模块将接收的真实网络数据包转发给所述网络模拟器模拟出的虚拟网络中该实物设备对应的模拟节点上,再由该模拟节点发到目的模拟节点;步骤24,重复步骤22和步骤23,处理所有实物设备发送的真实网络数据包。进一步,所述步骤22中还包括:所述捕包器模块向所述ARP应答模块发送ARP请求包,向所述接入测试模块发送ARP应答包,且所述ARP应答模块保存该实物设备的IP地址和MAC地址,所述接入检测模块记录该实物设备的接入状态,并检测其断开时间。进一步,所述步骤23还包括:若目的模拟节点为已接入的实物设备,则真实网络数据包会在模拟环境中的物理层和链路层转发到实物设备对应的模拟节点,该模拟节点再在网络层将真实网络数据包从所述网络模拟器中转出至所述转发器模块,转发器模块再通过原始套接字将该真实网络数据包发送到实物设备。进一步,所述转发器转发真实网络数据包之前,需根据所述网络模拟器的种类做相应的转化,用于保证该真实网络数据包能被相应的网络模拟器识别。进一步,所述实物设备包括主机和/或路由器。本发明的有益效果是:本发明公开了一种实物设备接入网络模拟器的方法及系统,该系统不仅可以向模拟网络中引入真实流量,实现模拟网络与真实网络的连通,而且可以做到模拟网络中每个定义为可仿真的节点都可以用实物设备来代替,节点类型包括主机和路由器,接入的设备不需要进行额外的配置。另外,与已公开的方法相比,该方法具有如下优点:1)能够做到无缝接入,不需要在主机上进行与接入网络无关的设置,更不需要在主机上安装其他软件;2)能够实现真实路由器的接入。图1为本发明所述一种实物设备接入网络模拟器的结构示意图;图2为本发明所述一种实物设备接入网络模拟器的方法的流程示意图;图3为本发明实施例中步骤2的流程流程示意图;图4为本发明实施例中系统启动运行流程图;图5为本发明实施例中ARP应答模块的处理流程图;图6为本发明实施例中接入检测模块的处理流程图;图7为本发明实施例中捕包器模块对各类数据包的处理流程;图8为本发明实施例中转发器模块的处理流程图。具体实施例方式以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。如图1所示,本实施例构建了一种实现实物设备无缝接入网络模拟器的系统,包括实物设备(如主机和路由器)、实物设备接入系统和网络模拟器,且所述实物设备接入到与实物设备接入系统连通的交换机上,所述网络模拟器,其运行在若干并行服务器上,且通过TCP连接与所述实物设备接入系统通信,用于模拟出大规模的虚拟网络。另外,在所述模拟网络器与所述实物设备接入系统之间设置有防火墙。如图1所示,本实施例的实物设备接入系统包括ARP应答模块、接入测试模块、捕包器模块和转发器模块;所述ARP应答模块,其用于保证所有从实物设备发出的真实网络数据包首先到达系统监听的网卡,避免实物设备之间相互直接通信,并向所述实物设备发送ARP应答包;所述接入测试模块,其向所述实物设备发送ARP请求包,用于实时检测实物设备的接入信息,并将接入信息发送给所述转发器模块和所述捕包器模块;所述捕包器模块,其用于捕获所有接入的实物设备发出的真实网络数据包,并根据真实网络数据包的类型向所述ARP应答模块、所述接入测试模块或所述转发器模块转发真实网络数据包;所述转发器模块,其用于接收所述模拟网络器导入和导出的虚拟网络数据包,并实现虚拟网络数据包与真实网络数据包的的转换和转发。如图2所示,根据上述系统,本实施例相应地提出了一种实物设备接入网络模拟器的方法,包括:步骤1,将实物设备接入到与实物设备接入系统连通的交换机上,并设置其在模拟环境中的网络相关配置;在并行服务器上运行网络模拟器,模拟出大规模的虚拟网络;步骤2,实物设备接入系统接收和处理实物设备发出的真实网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包;步骤3,实物设备接入系统进行虚拟网络数据包与真实网络数据包之间的转换与转发;步骤4,根据步骤I至步骤3,实物设备通过所述实物设备接入系统与所述网络模拟器模拟出的虚拟网络通信,代替虚拟网络中的对应节点运行。如图3所示,所述步骤2中实物设备接入系统接收和处理实物设备发送的真实网络数据包具体包括:步骤21,在实物设备接入系统中设置ARP应答模块、接入测试模块、捕包器模块和转发器模块。步骤22,捕包器模块接收实物设备发送的真实网络数据包,并将除ARP请求包和ARP应答包之外的真实网络数据包转发给所述转发器模块。这里,所述捕包器模块向所述ARP应答模块发送ARP请求包,向所述接入测试模块发送ARP应答包,且所述ARP应答模块保存该实物设备的IP地址和MAC地址,所述接入检测模块记录该实物设备的接入状态,并检测其断开时间。步骤23,转发器模块将接收的真实网络数据包转发给所述网络模拟器模拟出的虚拟网络中该实物设备对应的模拟节点上,再由该模拟节点发到目的模拟节点。这里,若目的模拟节点为已接入的实物设备,则该真实网络数据包会在模拟环境中的物理层和链路层转发到实物设备对应的模拟节点,该模拟节点再在网络层将真实网络数据包从所述网络模拟器中转出至所述转发器模块,转发器模块再通过原始套接字将真实网络数据包发送到实物设备。步骤24,重复步骤22和步骤23,处理所有实物设备发送的真实网络数据包。需注意的是,所述转发器转发真实网络数据包之前,要根据所述网络模拟器的种类做相应的转化,用于保证该真实网络数据包能被相应的网络模拟器识别。此外,对于由ARP应答模块、接入测试模块、捕包器模块和转发器模块四部分组成的实物设备接入系统,本实施例给出了系统及各模块的实施流程。图4是系统启动运行时的流程图,系统总体的实施步骤如下:I)为ARP应答模块、接入检测模块和转发器模块分配缓冲区,它们分别是arpBuffer、accessDetectBuffer和forwardingBuffer;2)为每个缓冲区分配互斥锁和“空”、“满”信号量:arpBuffer、accessDetectBuffer和forwardingBuffer的互斥锁分别为arpMutex、accessDetectMutex和forwardingMutex,“空”信号量分别为arpEmpty、accessDetectEmpty和forwardingEmpty,“满”信号量分别是arpFull、accessDetectFull和forwardingFull。互斥锁都初始化为1,“空”信号量初始化为缓冲区的大小,“满”信号量初始化为O;3)从配置文件中读取要接入设备的IP和MAC地址对,初始化捕包器模块;4)开启ARP欺骗线程、接入检测线程、捕包器线程和转发线程。图5是ARP应答模块的处理流程图,ARP应答模块的具体实施步骤如下:I)根据接入设备的配置文件和模拟网络拓扑配置文件初始化ARP应答模块;2)对存在于配置文件中的设备发送一轮ARP欺骗包;3)等待缓冲区arpBuffer的“满”信号量,即P(arpFull);4)获得arpBuffer的互斥锁arpMutex,即P(arpMutex);5)从缓冲区arpBuffer中读取一个arp请求包;6)释放arpBuffer的互斥锁arpMutex,即V(arpMutex);7)释放缓冲区arpBuffer的“空”信号量,即V(arpEmpty);8)判断arp请求包所请求的IP地址是否是模拟网络拓扑中的定义的IP,如果是则发送伪造的应答包,应答包中填入的MAC地址为系统运行网卡的MAC地址,否则丢弃;9)判断是否结束该线程,如果不是则转到3)继续处理,如果是则结束ARP应答模块对应的线程。图6是接入检测模块的处理流程图,接入检测模块的具体实施步骤如下:I)根据接入设备的配置文件初始化接入检测模块,将所有可接入设备的标志用一个环形链表来存储,环形链表中的是否接入的标志位置为false;2)建立定时器,每过时间t,从环形链表中选择接入标志为true的一个实物设备,并向它发送ARP请求包;3)等待缓冲区accessDetectBuffer的“满”信号量,即P(accessDetectFull);4)获得accessDetectBuffer的互斥锁arpMutex,即P(accessDetectMutex);5)从缓冲区accessDetectBuffer中读取一个arp应答包;6)释放accessDetectBuffer的互斥锁arpMutex,即V(accessDetectMutex);7)释放缓冲区accessDetectBuffer的“空”信号量,即V(accessDetectEmpty);8)判断arp应答包的发出设备所对应的接入标志是否为true,如果是则更新其时间戳,否则将所对应的接入标志是否为true;9)判断是否结束该线程,如果不是则转到3)继续处理,如果是,则结束接入检测模块对应的线程。图7给出了捕包器模块对各类数据包的处理流程,捕包器模块的具体实施步骤如下:捕包器模块是真实数据包进入模拟环境的入口,系统利用Iibpcap网络数据捕获库在设置为混杂模式的网卡上进行捕包。在捕包开始之前,系统首先读取接入的真实设备配置文件,建立Hash表,用于构建捕包器的过滤器,以及在捕包过程中根据包的链路层信息判断是否是由接入的实物设备所发出。通过构建捕包器的过滤器,使捕包器只捕捉IP包和ARP包,它们的源MAC地址属于接入的真实设备的MAC地址、目的MAC地址为捕包器所监听的网卡地址。在捕包的过程中,对于数据包而言,捕包器模块对它进行了处理,而系统所在主机的协议栈也会对部分包进行处理,比如转发到系统所在主机的网关地址或给出目的地址不存在的应答。这显然不是系统想要的行为。为了避免这种情况,本系统使用iptables进行包过滤。设置过滤规则,对于系统需要的包协议栈不再处理。捕包器对于捕到的包进行了解析,共有以下几种情况:1)ARP应答包这是接入检测模块发出的、测试连通性的ARP请求包,收到这样的数据包之后直接转发给接入测试模块。2)ARP请求包ARP请求包是接入的真实设备发出的,用于请求目的IP地址的MAC地址。这类包捕包器转发给ARP应答模块,后者伪造ARP应答并发送出去。3)其他数据包这类包是从接入的真实设备发出的,需要传进网络模拟器的数据包。捕包器将这类数据包传给转发器模块,后者将数据包传入网络模拟器。这里补充一点,捕包器再向ARP应答模块、接入检测模块和转发器缓冲区中写入数据包之前都先等待各个缓冲区的“空”信号量,再在获得各个缓冲区的互斥锁之后写入数据。写入数据完毕后释放各自缓冲区的互斥锁和“满”信号量。图8是转发器模块的处理流程图,转发器模块的具体实施步骤如下:I)与网络模拟器建立通信通道,一般来说,转发器与模拟器有两种通信方式:一是通过管道通信,此时本系统与网络模拟器位于同一服务器;一是通过网络建立TCP连接通信,这情况适用于分布式环境运行网络模拟器;2)建立子线程处理与模拟器的通信,该子线程收到从模拟转发出,发往接入实物设备的数据包后,立即通过原始套接字发给相应的接入设备;3)等待缓冲区forwardingBuffer的“满”信号量,即P(forwardingFull);4)获得forwardingBuffer的互斥锁forwardingMutex,即P(forwardingMutex);5)从缓冲区forwardingBuffer中读取一个由接入的实物设备发出,发往网络模拟器的数据包packet;6)释放forwardingBuffer的互斥锁arpMutex,即V(forwardingMutex);7)释放缓冲区forwardingBuffer的“空”信号量,即V(forwardingEmpty);8)将读取的数据包packet通过与网络模拟器建立通信通道发出;9)判断是否结束该线程,如果不是则转到3)继续处理,如果是,则结束转发器模块对应的线程。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种实现实物设备无缝接入网络模拟器的系统,其特征在于,包括实物设备、实物设备接入系统和网络模拟器;所述实物设备,其连接到与实物设备接入系统连通的交换机上,用于向所述实物设备接入系统发送真实网络数据包;其还通过所述实物设备接入系统与所述网络模拟器模拟出的虚拟网络通信,用于代替虚拟网络中的对应节点运行;所述实物设备接入系统,其用于接收和处理接入的实物设备发送的真实网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包,用于实现虚拟网络数据包与真实网络数据包的转换与转发;所述网络模拟器,其运行在并行的若干服务器上,且通过TCP连接与所述实物设备接入系统通信,用于模拟出大规模的虚拟网络。2.根据权利要求1所述的系统,其特征在于,所述实物设备接入系统包括ARP应答模块、接入测试模块、捕包器模块和转发器模块,且所述ARP应答模块、所述接入测试模块、所述捕包器模块和所述转发器模块均通过交换机与所述实物设备通信;所述ARP应答模块,其向所述实物设备发送伪造的ARP应答包,用于保证所有从实物设备发出的真实网络数据包首先到达系统监听的网卡,避免实物设备之间相互直接通信;所述接入测试模块,其向所述实物设备发送ARP请求包,用于实时检测实物设备的接入信息,并将接入信息发送给所述转发器模块和所述捕包器模块;所述捕包器模块,其用于捕获所有接入的实物设备发出的真实网络数据包,并根据真实网络数据包的类型向所述ARP应答模块、所述接入测试模块或所述转发器模块转发真实网络数据包;所述转发器模块,其用于接收所述模拟网络器导入和导出的虚拟网络数据包,并实现虚拟网络数据包与真实网络数据包的的转换和转发。3.根据权利要求1所述的系统,其特征在于,所述实物设备包括主机和/或路由器。4.一种实现实物设备无缝接入网络模拟器的方法,其特征在于,包括:步骤I,将实物设备接入到与实物设备接入系统连通的交换机上,并设置其在模拟环境中的网络相关配置;在并行服务器上运行网络模拟器,模拟出大规模的虚拟网络;步骤2,实物设备接入系统接收和处理实物设备发出的真实网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包;步骤3,实物设备接入系统进行虚拟网络数据包与真实网络数据包之间的转换与转发;步骤4,根据步骤I至步骤3,实物设备通过所述实物设备接入系统与所述网络模拟器模拟出的虚拟网络通信,代替虚拟网络中的对应节点运行。5.根据权利要求4所述的方法,其特征在于,所述步骤2中实物设备接入系统接收和处理实物设备发送的真实网络数据包具体包括:步骤21,在实物设备接入系统中设置ARP应答模块、接入测试模块、捕包器模块和转发器模块;步骤22,捕包器模块接收实物设备发送的真实网络数据包,并将除ARP请求包和ARP应答包之外的真实网络数据包转发给所述转发器模块;步骤23,转发器模块将接收的真实网络数据包转发给所述网络模拟器模拟出的虚拟网络中该实物设备对应的模拟节点上,再由该模拟节点发到目的模拟节点;步骤24,重复步骤22和步骤23,处理所有实物设备发送的真实网络数据包。6.根据权利要求5所述的方法,其特征在于,所述步骤22中还包括:所述捕包器模块向所述ARP应答模块发送ARP请求包,向所述接入测试模块发送ARP应答包,且所述ARP应答模块保存该实物设备的IP地址和MAC地址,所述接入检测模块记录该实物设备的接入状态,并检测其断开时间。7.根据权利要求5所述的方法,其特征在于,对于步骤23,其还包括:若目的模拟节点为已接入的实物设备,则该真实网络数据包会在模拟环境中的物理层和链路层转发到实物设备对应的模拟节点,该模拟节点再在网络层将真实网络数据包从所述网络模拟器中转出至所述转发器模块,转发器模块再通过原始套接字将该真实网络数据包发送到实物设备。8.根据权利要求6或7所述的方法,其特征在于,所述转发器转发真实网络数据包之前,需根据所述网络模拟器的种类做相应的转化,用于保证该真实网络数据包能被相应的网络模拟器识别。9.根据权利要求4所述的方法,其特征在于,所述实物设备包括主机和/或路由器。全文摘要本发明涉及一种实现实物设备无缝接入网络模拟器的系统及方法,所述系统包括实物设备(如主机和路由器)、实物设备接入系统和网络模拟器,其中实物设备接入系统包括ARP应答模块、接入测试模块、捕包器模块和转发器模块;ARP应答模块用于保证所有从实物设备发出的数据包首先到达系统监听的网卡;接入测试模块用于实时检测实物设备的接入信息;捕包器模块用于用于捕获所有接入的实物设备发出的真实网络数据包,并根据真实网络数据包的类型向其他模块转发;转发器模块用于实现虚拟网络数据包与真实网络数据包的的转换和转发。本发明涉及的实物设备接入网络模拟器的方法与上述系统相对应。本发明实现实物设备的无缝接入及真实路由器的接入。文档编号H04L12/26GK103078769SQ20131000984公开日2013年5月1日申请日期2013年1月10日优先权日2013年1月10日发明者费海强,郝志宇,云晓春,张永铮,李伦,丁振全,孟丹申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1