基于路由协议的网络运行仿真方法
技术领域
本发明涉及计算机网络安全,特别涉及一种基于路由协议的网络运行仿真方法。
背景技术
随着网络带宽的日益增长,网络攻击活动也以指数形式增长,如果要保证网络安全,就需要进行网络探测。由于现代网络拓扑的复杂性,以往构建真实网络运行时,往往需要大量的网络设备,投资巨大。每次搭建真实网络运行前,准备工作复杂、配置时间长,实验完成之后系统恢复耗时较长。尤其是在真实系统上进行实验可能会引起系统破坏或发生故障,造成很大的风险和损失。在这种背景下,网络仿真运行平台应运而生,在平台上构建一个或多个网络拓扑环境,为外界提供网络服务、允许路由探测和安全扫描,并且在远程主机看来,这是一个真实的网络环境,大大缩减管理员对网络探测的配置时间和系统恢复时间。然而现有的系统平台设计时没有考虑到平台与远程主机的数据交互与数据捕捉问题,同时无法将物理主机隐藏在虚拟网络运行中,进行有效保护。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种基于路由协议的网络运行仿真方法,包括:
当网络仿真运行平台通过网络接口捕捉到数据帧后,对协议头进行分析,根据帧的类型字段进行判断,如果所述数据帧是地址分析报文则由平台直接进行响应,丢弃本机发送的地址分析报文,如果是IP报文,则交由虚拟网络设备进行处理,处理完成的报文由平台进行封装和发送。
优选地,所述由虚拟网络设备进行处理,进一步包括:
在报文进入虚拟网络的入口设置输入路由器,定义平台与输入路由器间的缓存池,平台将处理完的报文送入缓存池,报文在缓存池中以动态链表的方式存储,如果缓存池已满则丢弃新包;所述虚拟网络设备处理报文的流程具体包括:输入路由器从缓存池中读取报文,首先对报文进行预处理,检查包的长度和校验码,然后从报文中分析目的地址和数据,最后根据路由表将数据发送给目标主机;主机处理完成后,在将报文发送到网关路由之前,还需要进行封装,加载预定的特征,使其符合配置的操作系统特征,最后报文经输入路由器存入缓存池。
所述对协议头进行分析,进一步包括:
对于分析操作,当网络仿真运行平台收到数据帧时,将包含的每层数据进行处理,通过多次解帧解包的操作,检查报文头部中的各个标志字符,确定接收数据的上层协议,最后将帧中的应用层数据交付给应用程序;
所述封装操作进一步包括,当应用层数据需要通过平台发送时,将数据通过协议栈进行封装,每次封装都要在收到数据的基础上增加帧头信息,最后形成可以在以太网上传输的数据帧。
优选地,所述网络仿真运行平台在运行后,首先对自身进行初始化;将平台调整到就绪状态,等待用户的操作;虚拟网络设备提供的服务通过编写脚本来实现,通过脚本解释器的初始化工作完成对脚本解释器配置文件的读取,获得各类脚本解释器所在的目录,供执行脚本时调用;分析特征库文件,通过加载特征库仿真多种操作系统和识别远程访问主机的操作系统;加载预设的网络设备特征模板,所述特征模板也可在构建网络运行过程中添加,供配置设备属性时使用;打开日志文件,向文件中写入数据,该日志文件用于网络行为的监控和分析;初始化平台与外部网络的接口,用于报文的捕捉和转送;为缓存池分配一定的内存空间暂存收发的报文,用来虚拟网络延迟;初始化数据量统计队列,统计单位时间内流经平台和虚拟网络设备的报文流量,包括接收流量和发送流量;在初始化完成后,用户选择载入已经建立的网络或新建一个网络,完成对设备属性的配置,设置相应的参数,指定该设备所对应的接口并进行初始化,按预先设计的网络拓扑连接各设备,对网络的逻辑正确性进行检验,包括IP地址格式是否正确,是否存在相同IP,网络连接是否正确,如果配置不正确,则将错误信息反馈给用户使其重新配置,仿真过程结束后,平台清理垃圾,关闭打开的接口和管道,释放平台所开辟的内存空间,同时保存网络拓扑图。
本发明相比现有技术,具有以下优点:
本发明提出了一种基于路由协议的网络运行仿真方法,不改变协议整体架构,自主构建网络和配置参数,为网络攻击和防御的分析提供了良好的环境。
附图说明
图1是根据本发明实施例的基于路由协议的网络运行仿真方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种基于路由协议的网络运行仿真方法。图1是根据本发明实施例的基于路由协议的网络运行仿真方法流程图。
本发明基于网络仿真运行平台,模拟各种操作系统及服务漏洞。在用一台物理主机实现真实网络运行仿真的基础上,将多台物理主机仿真的小规模网络连接成较大规模的网络,并为每一个网络设备配置设备特征。对于一般用户,平台作为一种网络构建工具,在平台提供的显示单元观测流经平台及网络设备的流量。对于开发人员,平台提供开发接口,开发满足需要的功能块。
整个平台依次分为四层:控制层、设备层、程序层和通信层。各层的功能分别介绍如下:
(1)控制层负责平台和功能块的初始化以及运行过程中对功能块的控制,并提供用户接口。包括三个子单元:设备控制单元、网络配置单元和用户接口单元。设备控制单元负责对具体的网络设备进行设置,包括设定操作系统、文件系统和开放的端口;网络配置单元负责网络拓扑的生成和输入路由器的配置;用户接口单元用于与仿真设备交互的接口。
(2)设备层用于模拟网络运行中的各种网络设备,包括主机、服务器、防火墙、路由器、集线器设备。其中主机和服务器有两种类型,一种是仿真的网络设备,一种是集成到真实网络中的物理设备。
(3)程序层负责网络设备上运行的程序和服务以及运行程序和服务所需的文件系统,它由服务程序、通信程序和文件接口组成。服务程序包括模拟脚本或控制台程序,用来虚拟网络设备上运行的各种网络服务。通信程序指具有网络通信功能的应用软件,通过配置,将这些应用软件作为网络设备上的应用程序运行,使得网络设备以主动的方式与其它主机进行通信。文件接口用来虚拟主机的文件系统,对线程提供文件操作服务并反映所模拟的操作系统的特征,包括文件的组织和文件的操作两部分。
(4)通信层负责网络设备的通信工作,包括协议特征库、TCP/IP协议栈、网络接口和显示接口。协议特征库包含各种操作系统的协议栈特征信息,用于给虚拟网络设备的操作系统加载协议栈特征,识别远程访问主机的操作系统。TCP/IP协议栈用于管理平台中的所有连接,保证设备通信的正确完成。平台处理的协议有链路层协议、ARP、IP、TCP、UDP协议,应用层协议则交给应用程序实现。该子单元实现了对TCP/IP协议族的封装,向用户提供了各个层次上的协议数据封装接口。这些接口可用于封装需要传输的报文,也可以利用这些接口提取出报文中感兴趣的字段进行分析。网络接口用于将平台接入到真实网络中,并在平台运行的过程中对网络数据进行捕捉。平台捕捉数据有两种模式,分别是用户模式和内核模式,用户模式下只能工作在TCP/IP协议的传输层,无法直接截取数据链路层帧和网络层报文,而内核模式可以获取链路层的帧,实现中间层驱动级捕捉,包括报文捕捉、报文注入、网络监控和存储到磁盘,网络接口为用户进行网络应用开发和研究提供了统一的函数接口,利用这些接口,用户可以对平台进行二次开发,加载功能块。显示接口为上层提供一些必要的显示函数。设备层调用显示接口,显示接口调用系统显示函数或自定义显示函数。
各层协议使用模块化设计,每种协议都有自己的协议头定义,并提供对协议头的分析和封装操作。对于分析操作,当平台收到数据帧时,将包含的每层数据进行相应的处理,通过多次解帧解包的操作,检查报文头部中的各个标志字符,确定接收数据的上层协议,最后将帧中的应用层数据交付给应用程序。对于封装操作,当应用层数据需要通过平台发送时,需要将数据通过协议栈进行封装,每次封装都要在收到数据的基础上增加帧头信息,最后形成可以在以太网上传输的数据帧。
平台通过网络接口捕捉到数据帧后,根据帧的类型字段判断是地址分析报文还是IP报文,如果是地址分析报文则由平台直接进行响应,丢弃本机发送的地址分析报文,否则交由虚拟网络设备进行处理,处理完成的报文由平台发送。
在报文进入虚拟网络的入口设置输入路由器,为了将报文交给输入路由器进行处理,定义了平台与输入路由器间的缓存池,平台将处理完的报文送入缓存池,报文在缓存池中以动态链表的方式存储,如果缓存池已满则丢弃新包。虚拟网络设备处理报文的流程具体包括:
输入路由器从缓存池中读取报文,首先对报文进行预处理,检查包的长度和校验码,然后从报文中分析目的地址和数据,最后根据路由表将数据发送给目标主机。主机处理完成后,在将报文发送到网关路由之前,还需要进行封装,加载预定的特征,使其符合配置的操作系统特征,最后报文经输入路由器存入缓存池。
在构建仿真的网络时可能用到的网络设备有主机、路由器、防火墙、集线器等。本发明的实施例只对仿真的路由器和主机进行说明。虚拟路由器是网络环境与虚拟主机进行通信的桥梁,因此虚拟路由器不仅具有数据转送功能,同时提供与平台进行数据交互的接口。将路由器分为四个单元,分别为网络接口单元、数据处理单元、路由规划单元和数据转送单元。各单元的功能及设计实现介绍如下:
网络接口单元的功能是接收和发送报文。从路由器接入网络的角度将路由器分为两类:输入路由器和普通路由器。输入路由器是逻辑上与真实主机所在网络直接相连的路由器,普通路由器直接或间接与输入路由器相连。输入路由器作为数据进入虚拟网络运行的入口,需要对来自平台的数据进行处理,并转送给目标主机;同时入口路由器也需要把虚拟主机向外发送的报文封装成数据帧交给平台。
数据处理单元负责数据检验、误差控制、IP包过滤、丢包与延迟计算。数据检验包括依次检验IP包头部的校验和、是否为错误报文以及是否为组播报文;误差控制包括处理出现错误的报文,向源主机发送报文报告出错原因,实现了两种报文,分别是查询报文和误差报告报文;IP包过滤实现对IP包的过滤,针对的是广播包;报文每经过一个路由器,都会产生相应的延迟,路由器在转送之前,应该计算出延迟,同时链路还有一定的丢包率,丢包与延迟计算可以完成此功能。
路由规划单元利用IP包实现路由规划算法,从而实现路由规划。还可以负责对路由表的维护以及更新。
转送单元根据目的IP地址查找虚拟路由表,决定向哪个虚拟路由器发送。
平台接入网络的方法有多种,本实施例采用以下方法将虚拟网络运行接入真实网络。假设B为平台所在的真实主机,通过路由器A接入Internet,V1-Vn为真实主机上仿真的n台主机。若访问者位于虚拟主机所在的局域网范围之内。当访问者试图与虚拟主机Vi通信时,其中1≤i≤n,发现虚拟主机Vi与其位于同一个网段,则它会首先查找自己的地址分析缓存。如果缓存中有虚拟主机Vi的MAC地址,则报文直接发送出去;如果没有虚拟主机Vi的MAC地址,则发送地址分析包来请求虚拟主机Vi的MAC地址,得到虚拟主机Vi的MAC地址后再发送数据。当虚拟主机Vi通过互联网接收到一个远程访问者发送的一个报文时,路由器A接收到报文的同时并开始尝试向外发送此包。路由器通过路由表进行检索,并确定将此Vi包发送到什么地方。如果路由指向Vi,则该路由器则会放弃当前报文;路由器A将收到的报文转送到另外的路由器;若路由器所在的局域网内存在Vi,Vi则会收到由路由器A传送的包。将VI的数据流传输至真实主机B的过程采用以下两种方式之一:真实主机B由发送虚拟主机Vi的路由入口来设定。通过这种方式,报文则会通过路由器转送到虚拟主机上继而直接发送给真实主机。在无特殊配备的路由器的情形中,路由器会使用地址分析协议的指令来查询虚拟主机的硬件地址。但是因为没有能做出响应的虚拟主机,分析协议的查询指令不会得到应答。此时用真实主机的硬件地址响应上述查询指令。允许路由器将Vi的报文传送至真实主机。在更为复杂特殊的网络环境下,或将一段空闲的网络地址空间通过路由封装连接到真实主机。
虚拟路由器从数据处理、路由规划和数据转送三个方面模拟了路由器的功能特性,从数据检验、误差控制、IP包过滤、丢包和延迟五个方面体现了路由器的控制机制和链路特性,能够满足路由器仿真的要求。
对于主机的仿真,从操作系统的网络构成入手,将虚拟主机分为以下四个单元,其组成为网络接口单元、通信单元、线程单元和文件处理单元。
虚拟主机用于处理两个来源的数据:虚拟路由器转送给虚拟主机数据,和远程主机接收的虚拟主机访问数据。处理这两种数据的方式为:主机通过网络接口单元,接收路由平台捕捉的通过路由器转送的报文。线程单元的服务线程,服务线程启动服务仿真脚本并建立通信,服务线程如需访问文件则由文件处理单元的文件系统代理程序执行访问操作;虚拟主机访问远程主机时,系统通过激活线程单元的活动线程,由活动线程启动网络通信软件,注入捕捉程序。然后,网络通信软件启动,捕捉其传送数据。传送数据经活动线程处理为虚拟主机的数据,再由通信单元加载虚拟主机特征,之后交给虚拟路由器处理,最后由平台来发送数据。虚拟主机各个单元的功能及设计实现逐一介绍如下:
网络接口单元:在计算机网络中主机通过IP地址来唯一标识。计算机之间的传送数据是通过虚拟路由器来发送和接收的,虚拟主机必须连接虚拟路由器才能接入网络。虚拟主机使用IP地址来标识,使用输入路由器的MAC地址进行网络通信。虚拟主机通过接收路由器转送的报文获取发送给自身的数据。
通信单元:实现对发送数据的封装和对接收数据分类及解封装。协议特征库借助于现有扫描软件的内置特征库实现。
线程单元:主机仿真中的服务线程是为其它主机访问虚拟主机提供服务的,通过外置的脚本或控制台程序来实现,并且只有在被访问时启动运行。服务线程与仿真脚本之间使用管道进行通信;主机仿真中的活动线程是指操作系统中具有网络通信功能的线程,它可以主动向远程主机发起连接并建立通信。活动线程用于模拟线程的活动情况和网络通信情况。
文件处理单元:文件系统用于对线程提供文件操作服务,它包括文件的组织和文件的操作。文件的组织采用磁盘数据组织格式将其存为一个文件,该文件分为四部分:第一部分是保留区,记录基本输入输出参数块;第二部分是文件分配表,用于记录文件系统空间的使用分配情况;第三部分是文件目录,用于存储文件的长度、地址、日期等信息;第四部分是数据区,用于文件存放。
本发明的网络仿真运行平台运行后,首先对自身进行初始化。初始化过程将平台调整到就绪状态,等待用户的操作。虚拟网络设备提供的服务都是通过编写脚本来实现的,通过脚本解释器的初始化工作完成对脚本解释器配置文件的读取,获得各类脚本解释器所在的目录,供执行脚本时调用。分析特征库文件,通过加载特征库仿真多种操作系统和识别远程访问主机的操作系统。加载预设的网络设备特征模板,特征模板也可在构建网络运行过程中添加,供配置设备属性时使用。打开日志文件,向文件中写入数据。日志文件用于网络行为的监控和分析。初始化平台与外部网络的接口,用于报文的捕捉和转送。为缓存池分配一定的内存空间暂存收发的报文,用来虚拟网络延迟。初始化数据量统计队列,统计单位时间内流经平台和虚拟网络设备的报文流量,包括接收流量和发送流量。
用户选择载入已经建立的网络,或新建一个网络,按照实验的需要添加网络设备,并按预先设计的网络拓扑连接各设备,形成完整的网络模拟。添加网络设备过程实际上是完成对设备属性的配置,设置相应的参数,指定该设备所对应的接口并将其初始化。用户完成对网络的配置后,对网络的逻辑正确性进行检验,包括IP地址格式是否正确,是否存在相同IP,网络连接是否正确。如果配置不正确,则平台将错误信息以对话框的形式反馈给用户,以便用户根据反馈信息对网络重新配置,直到网络配置正确为止。准备就绪后,平台即按照预定义的程序开始工作,直到实验结束。在此期间,用户可以实时观测网络的状态,也可以暂停网络运行来查看运行情况,之后再恢复网络的运行,还可以直接中止网络运行。
仿真过程结束后,平台清理垃圾,关闭打开的接口和管道,释放平台所开辟的内存空间,同时保存网络拓扑图。
综上所述,本发明提出了一种基于路由协议的网络运行仿真方法,不改变协议整体架构,自主构建网络和配置参数,为网络攻击和防御的分析提供了良好的环境。
显然,本领域的技术人员应该理解,上述的本发明的各单元或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。