目录
一、概念界定
二、模拟(simulation)与仿真(emulation)
2.1 模拟(simulation)
2.2 仿真(emulation)
2.3 区分
三、网络模拟与网络仿真
3.1 网络模拟
3.2 网络仿真
3.2.1 软件实现
3.2.2 硬件实现
一、概念界定
一般来说,大家在使用的时候不会刻意地区分模拟和仿真的概念,在很多的时候都是对这两个概念进行混用,在本文中,我们讨论的模拟对应的英文为simulation(其实在很多地方都会把simulation翻译成仿真,但是在这个话题下,我们希望翻译成模拟),仿真对应的英文为emulation。
二、模拟(simulation)与仿真(emulation)
2.1 模拟(simulation)
模拟指的是选取一个(物理的或抽象的)系统的某些行为特征,用另一台系统来表示它们的过程。模拟技术的高级阶段称为仿真模拟、系统模拟,即用一个数据处理系统来(全部/部分地)模仿另一个数据处理系统,以至于模仿的系统能像被模仿的系统一样接收同样的数据,执行同样的程序,获得同样的结果。
2.2 仿真(emulation)
仿真指的是一个系统的执行方式和另一个完全一样,但可能速度不同。一个典型的例子就是虚拟机,我们可以通过一台计算机仿真另一台计算机。
2.3 区分
三、网络模拟(simulation)与网络仿真(emulation)
3.1 网络模拟(simulation)
网络模拟(simulation)注重的是在概念上对网络层次特征进行抽象,建立尽可能近似的模型,通过软件模拟构造一个完全虚拟可控的抽象网络环境,在此环境中对网络拓扑,协议算法等软部件进行设计验证和测试。所以网络模拟的优势在于可控性和可再生性,但它仅是一种近似真实的结果。网络模拟器是由软件实现的。目前流行的网络模拟器有NS2/NS3,OPNET,OMNET++等。
对于网络模拟来说,一般采用的是基于离散事件的网络模拟器,模拟的效果依赖于CPU性能。以OPNET为例,OPNET (Optimized Network Engineering Tool)是 1986 年由麻省理工学院的研究团队开发、基于离散事件驱动的网络性能仿真软件,是目前世界上最先进的同类软件之一,拥有全面的用户手册、丰富的学习资料和简单易用的 GUI,方便用 户构建网络模型、修改网络拓扑参数、自定义仿真过程及分析仿真结果等。Qual Net 采用 TCP/IP 层次化、模块化建模,支持无线、有线和混合网络及设备的仿真分析。 商用模拟器相比于开源的模拟器,它们的仿真速度更快、效率更高、规模更大且更准确,因此很受欢迎。
3.2 网络仿真(emulation)
网络仿真(emulation)注重的是仿真真实的网络环境,层次上比模拟高了一层,是模拟的在真实环境中的外在表现,使得仿真网络好像一个黑盒网络,内部可控仿真真实网络环境中的各种情形,而对于外界真实的网络环境具有透明性,外界真实网络环境不会觉察到仿真网络的存在,真实网络中的设备协议都可以与仿真网络直接联结运行工作。所以网络仿真的优势在于与真实环境联结直接展现真实环境下运行结果,具有真实性和可靠性,但是它忽略了对仿真网络内部网络拓扑结构的模拟,无法仿真规模网络环境。网络仿真器有软件实现和硬件实现,其原理是相同的。目前已有的网络仿真器有Mininet,CrystalNet等。
3.2.1 软件实现
基于虚拟化的网络仿真(Emulation)是另一种流行的网络仿真方法,通过在主机上创建虚拟的网络节点构建仿真网络。以Mininet为例,Mininet是由斯坦福大学基于 Linux Container 架构开发的一个进程虚拟化网络仿真工具,可以创建一个包含主机,交换机,控制器和链路的虚拟网络,其交换机支持OpenFlow,具备高度灵活的自定义软件定义网络。仿真器中的每个节点都具备真实的网络协议仿真,因此可以视为真实的网络设备,保真度较高。但是要扩大规模就需要占用更多的资源,同时拉低仿真速度。
3.2.2 硬件实现
对于网络仿真来说,还可以通过硬件的方式实现,使用最多的就是网络测试床的方式。
基于真实设备的网络测试床最大的限制就是资源和成本,因为无论是一开始搭建测试床,还是后续随着网络的发展进行相应的升级,都需要大量资金的投入(针对需要大规模仿真的大型网络),这对正在研发过程中的项目来说并不是一个好的选择。如果使用有限的成本和资源,搭建一个支持小规模实验的测试床,其结果也不适用于大型网络。还有一些公共测试床,例如 PlanetLab、Emulab、CloudLab和 GENI等。