首页> 中国专利> 一种实现实物设备无缝接入网络模拟器的系统及方法

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

摘要

本发明涉及一种实现实物设备无缝接入网络模拟器的系统及方法,所述系统包括实物设备(如主机和路由器)、实物设备接入系统和网络模拟器,其中实物设备接入系统包括ARP应答模块、接入测试模块、捕包器模块和转发器模块;ARP应答模块用于保证所有从实物设备发出的数据包首先到达系统监听的网卡;接入测试模块用于实时检测实物设备的接入信息;捕包器模块用于用于捕获所有接入的实物设备发出的真实网络数据包,并根据真实网络数据包的类型向其他模块转发;转发器模块用于实现虚拟网络数据包与真实网络数据包的的转换和转发。本发明涉及的实物设备接入网络模拟器的方法与上述系统相对应。本发明实现实物设备的无缝接入及真实路由器的接入。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-01-06

    授权

    授权

  • 2013-08-14

    实质审查的生效 IPC(主分类):H04L12/26 申请日:20130110

    实质审查的生效

  • 2013-05-01

    公开

    公开

说明书

技术领域

本发明涉及网络模拟仿真领域,特别是涉及网络仿真平台的一种实现实 物设备无缝接入网络模拟器的系统及方法。

背景技术

网络模拟是目前研究大规模网络的重要方法,由于它具有真实性较高、 模拟规模大、开发和运行成本较低、可用以研究当前和未来网络行为等优点 而备受广大网络研究人员的青睐。但是网络模拟也存在缺点:1)一些在运行 网络模拟模型之前必须要设定的影响性能的参数很难确定,有时候很难给出 合理的值甚至正确的建模。例如CPU处理一条指令所花的时间,其通常受到 CPU cache的影响,和是否多核的影响。2)网络模拟没有真实网络流量的参 与,真实性不够高,很难使用现有的网络测量工具或部署实际的网络测量系 统。例如很难在一个模拟节点上运行Wireshark程序,也很难做到将一个入 侵检测系统无修改的部署到模拟网络中。3)当有关现实操作和部署的问题 成为主要关注的对象的时候,研究人员更喜欢网络仿真和物理的测试床,而 将网络模拟视为不可行的方法。一个重要的原因是需要额外的工作来开发网 络模拟模型来模拟现实应用程序的行为,这将延长开发测试的时间,由于协 议开发过程的复杂性,这将花费很大的精力而且容易出错。

网络仿真在模拟网络中引入真实网络流量,它结合了网络模拟与硬件测 试床的优势,提高了实验环境的真实性。在网络仿真环境中我们可以利用现 有的工具分析网络流量和信息传输。实物设备接入之后的仿真平台可以在真 实主机上运行没有修改的应用程序,可以用真实路由器搭建网络从而能够获 得真实的性能测试。特别是在接入真实路由器后,可以在路由器部署未经修 改的检测程序检测路由器的镜像流量,这对研究系统的有效性具有重要意 义。

模拟网络中引入真实网络流量后,真实流量在网络环境中的作用不尽相 同,可以分为两类,分别定义为“真实网络接入”和“实物设备接入”。“真 实网络接入”是将模拟网络与真实网络相连,使真实环境中的应用程序可以 与模拟网络交互,而“实物设备接入”则更近一步,不但实现模拟网络和真 实网络数据的交互,而且使模拟网络中每个定义为可仿真的节点都可以用实 物设备来代替,包括主机和路由器。

目前主流模拟和仿真工具(NS-2、NS-3、OMNet++、EMULab、PRIME)实现 真实网络流量引入的方法主要有以下三类:

1.利用对混杂模式网卡的捕包和原始套接字

这种方式主要是通过使用捕包工具(libpcap)从设为混杂模式的网卡上 读取真实网络的流量,通过原始套接字将模拟环境中的数据发送到真实网络 中。NS-2对仿真的支持,NS-3通过Emu Net Device类接入硬件测试床和 Michael等人在OMNet++基础上实现的网络接口模块都是使用这种方式。 Netbed集成了NS的仿真功能所以也使用这种方式。然而从目前发表的研究 成果来看,利用这种方式只做到了真实网络接入,没有实现实物设备接入。

2.利用TAP设备和Bridge工具

这种方式是利用IPC实现模拟器与宿主主机TAP设备的通信,再通过将 实际网络桥接到宿主主机TAP设备实现真实网络与模拟器的连接。NS-3通过 TapBridge实现的真实节点接入模拟器即使用此方法。虽然NS-3利用这种方 法实现了实物设备的接入,但使用它的这一功能需要复杂的配置。这种方式 的缺点是需要在网络模拟器和接入的设备上进行复杂的配置,无法做到无缝 接入,另外这种方式无法接入真是路由器。

3.利用OpenVPN

这种方式以PRIME基于OpenVPN的仿真框架为代表,通过VPN实现模拟 器与真实设备进行通信,它实现了现实设备的接入。这种方式需要在客户机 上运行OpenVPN的客户端,在客户机上建立一个虚拟网卡,也就是说需要对 客户机做一些修改,并运行额外的程序,这种方式的另一个缺点是,路由器 上面很难运行应用程序,所以很难实现真实路由器的接入。

发明内容

本发明所要解决的技术问题是提供一种实现实物设备无缝接入网络模 拟器的系统及方法,用于解决现有技术中实物设备接入存在的无法无缝接入 和/或无法接入真实路由器等问题。

本发明解决上述技术问题的技术方案如下:一种实现实物设备无缝接入 网络模拟器的系统,包括实物设备、实物设备接入系统和网络模拟器;

所述实物设备,其连接到与实物设备接入系统连通的交换机上,用于向 所述实物设备接入系统发送真实网络数据包;其还通过所述实物设备接入系 统与所述网络模拟器模拟出的虚拟网络通信,用于代替虚拟网络中的对应节 点运行;

所述实物设备接入系统,其用于接收和处理接入的实物设备发送的真实 网络数据包,并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数 据包,并用于实现虚拟网络数据包与真实网络数据包的转换与转发;

所述网络模拟器,其运行在并行的若干服务器上,且通过TCP连接与所 述实物设备接入系统通信,用于模拟出大规模的虚拟网络。这里,服务器是 并行运行的。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述实物设备接入系统包括ARP(Address Resolution  Protocol,地址解析协议)应答模块、接入测试模块、捕包器模块和转发器 模块,且所述ARP应答模块、所述接入测试模块、所述捕包器模块和所述转 发器模块均通过交换机与所述实物设备通信。

所述ARP应答模块,其向所述实物设备发送ARP应答包,用于保证所有 从实物设备发出的真实网络数据包首先到达系统监听的网卡,避免实物设备 之间相互直接通信;

所述接入测试模块,其向所述实物设备发送ARP请求包,用于实时检测 实物设备的接入信息,并将接入信息发送给所述转发器模块和所述捕包器模 块;

所述捕包器模块,其用于捕获所有接入的实物设备发出的真实网络数据 包,并根据真实网络数据包的类型向所述ARP应答模块、所述接入测试模块 或所述转发器模块转发真实网络数据包;

所述转发器模块,其用于接收所述模拟网络器导入和导出的虚拟网络数 据包,并实现虚拟网络数据包与真实网络数据包的的转换和转发。

进一步,所述实物设备包括主机和/或路由器。

根据上述系统,本发明的技术方案还提出了一种实现实物设备无缝接入 网络模拟器的方法,包括:

步骤1,将实物设备接入到与实物设备接入系统连通的交换机上,并设 置其在模拟环境中的网络相关配置;在并行服务器上运行网络模拟器,模拟 出大规模的虚拟网络;

步骤2,实物设备接入系统接收和处理实物设备发出的真实网络数据包, 并通过TCP连接收发所述网络模拟器导出和导入的虚拟网络数据包;

步骤3,实物设备接入系统进行虚拟网络数据包与真实网络数据包之间 的转换与转发;

步骤4,根据步骤1至步骤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,根据步骤1至步骤3,实物设备通过所述实物设备接入系统与 所述网络模拟器模拟出的虚拟网络通信,代替虚拟网络中的对应节点运行。

如图3所示,所述步骤2中实物设备接入系统接收和处理实物设备发送 的真实网络数据包具体包括:

步骤21,在实物设备接入系统中设置ARP应答模块、接入测试模块、捕 包器模块和转发器模块。

步骤22,捕包器模块接收实物设备发送的真实网络数据包,并将除ARP 请求包和ARP应答包之外的真实网络数据包转发给所述转发器模块。这里, 所述捕包器模块向所述ARP应答模块发送ARP请求包,向所述接入测试模块 发送ARP应答包,且所述ARP应答模块保存该实物设备的IP地址和MAC地 址,所述接入检测模块记录该实物设备的接入状态,并检测其断开时间。

步骤23,转发器模块将接收的真实网络数据包转发给所述网络模拟器模 拟出的虚拟网络中该实物设备对应的模拟节点上,再由该模拟节点发到目的 模拟节点。这里,若目的模拟节点为已接入的实物设备,则该真实网络数据 包会在模拟环境中的物理层和链路层转发到实物设备对应的模拟节点,该模 拟节点再在网络层将真实网络数据包从所述网络模拟器中转出至所述转发 器模块,转发器模块再通过原始套接字将真实网络数据包发送到实物设备。

步骤24,重复步骤22和步骤23,处理所有实物设备发送的真实网络数 据包。

需注意的是,所述转发器转发真实网络数据包之前,要根据所述网络模 拟器的种类做相应的转化,用于保证该真实网络数据包能被相应的网络模拟 器识别。

此外,对于由ARP应答模块、接入测试模块、捕包器模块和转发器模块 四部分组成的实物设备接入系统,本实施例给出了系统及各模块的实施流 程。

图4是系统启动运行时的流程图,系统总体的实施步骤如下:

1)为ARP应答模块、接入检测模块和转发器模块分配缓冲区,它们分 别是arpBuffer、accessDetectBuffer和forwardingBuffer;

2)为每个缓冲区分配互斥锁和“空”、“满”信号量:arpBuffer、 accessDetectBuffer和forwardingBuffer的互斥锁分别为arpMutex、 accessDetectMutex和forwardingMutex,“空”信号量分别为arpEmpty、 accessDetectEmpty和forwardingEmpty,“满”信号量分别是arpFull、 accessDetectFull和forwardingFull。互斥锁都初始化为1,“空”信号量 初始化为缓冲区的大小,“满”信号量初始化为0;

3)从配置文件中读取要接入设备的IP和MAC地址对,初始化捕包器模 块;

4)开启ARP欺骗线程、接入检测线程、捕包器线程和转发线程。

图5是ARP应答模块的处理流程图,ARP应答模块的具体实施步骤如下:

1)根据接入设备的配置文件和模拟网络拓扑配置文件初始化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是接入检测模块的处理流程图,接入检测模块的具体实施步骤如下:

1)根据接入设备的配置文件初始化接入检测模块,将所有可接入设备 的标志用一个环形链表来存储,环形链表中的是否接入的标志位置为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给出了捕包器模块对各类数据包的处理流程,捕包器模块的具体实 施步骤如下:

捕包器模块是真实数据包进入模拟环境的入口,系统利用libpcap网络 数据捕获库在设置为混杂模式的网卡上进行捕包。在捕包开始之前,系统首 先读取接入的真实设备配置文件,建立Hash表,用于构建捕包器的过滤器, 以及在捕包过程中根据包的链路层信息判断是否是由接入的实物设备所发 出。通过构建捕包器的过滤器,使捕包器只捕捉IP包和ARP包,它们的源 MAC地址属于接入的真实设备的MAC地址、目的MAC地址为捕包器所监听的 网卡地址。在捕包的过程中,对于数据包而言,捕包器模块对它进行了处理, 而系统所在主机的协议栈也会对部分包进行处理,比如转发到系统所在主机 的网关地址或给出目的地址不存在的应答。这显然不是系统想要的行为。为 了避免这种情况,本系统使用iptables进行包过滤。设置过滤规则,对于 系统需要的包协议栈不再处理。

捕包器对于捕到的包进行了解析,共有以下几种情况:

1)ARP应答包

这是接入检测模块发出的、测试连通性的ARP请求包,收到这样的数据 包之后直接转发给接入测试模块。

2)ARP请求包

ARP请求包是接入的真实设备发出的,用于请求目的IP地址的MAC地址。 这类包捕包器转发给ARP应答模块,后者伪造ARP应答并发送出去。

3)其他数据包

这类包是从接入的真实设备发出的,需要传进网络模拟器的数据包。捕 包器将这类数据包传给转发器模块,后者将数据包传入网络模拟器。

这里补充一点,捕包器再向ARP应答模块、接入检测模块和转发器缓冲 区中写入数据包之前都先等待各个缓冲区的“空”信号量,再在获得各个缓 冲区的互斥锁之后写入数据。写入数据完毕后释放各自缓冲区的互斥锁和 “满”信号量。

图8是转发器模块的处理流程图,转发器模块的具体实施步骤如下:

1)与网络模拟器建立通信通道,一般来说,转发器与模拟器有两种通 信方式:一是通过管道通信,此时本系统与网络模拟器位于同一服务器;一 是通过网络建立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)继续处理,如果是,则结 束转发器模块对应的线程。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发 明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号