网络环境仿真平台的建立与网络性能模拟毕业论文.doc
学士学位论文论文题目 网络环境仿真平台的建立与网络性能模拟英 文 Network Emulation Platform For The Simulation Of Network Performance目录摘要1第一章 绪论21.1 网络环境仿真平台产生背景21.2 网络环境仿真平台的定义21.3 网络环境仿真平台的需求21.4 网络环境仿真平台的设计目标21.5 网络性能的研究方法211.6 仿真和模拟的意义211.7 论文主要工作21.8 论文的组织结构4第二章 网络仿真与网络模拟212.1 网络仿真概述212.1.1 常见的仿真软件212.2 网络模拟概述212.2.1 常见额的模拟软件212.3 网络仿真模拟的现状212.3.1 现有方法的不足212.3.2 仿真与模拟的结合212.3.3 NIST net工具的选取21第三章 NIST net的安装与调试3.1 NIST net安装43.2 配置网络接口卡83.3 配置TDMoP 113.4 LINUX路由设置153.4 开始NIST net 16第四章 NIST net的使用以及网络性能模拟案例184.1 如何使用仿真包184.2 Cnistnet 184.3 Hitbox 194.4 Xnistnet 204.5 案例21第五章 结论与展望23致谢23摘要随着互联网规模的迅猛发展以及网络应用种类的不断增多,研究网络行为和性能成为了一项艰巨而又重要的任务。网络仿真模拟作为研究网络行为性能的一种工具,发挥了重大作用。网络模拟是再现复杂网络环境的有效途径,模拟方法主要分为两类:一类是仿真法(Simulation),通过软件方法搭建一个完全虚拟的网络环境,优点是成本低、方便快捷,缺点是无法再现真实的网络,失真较高,且主流的仿真软件操作和使用较复杂;另一类是模拟法(Emulation),在实验网络中运行真实的业务数据流,并提供给研究者可控制、可重复的网络状态控制接口,该方法结合了实测和仿真方法的优点,灵活高效且模拟效果好。 本文旨在研究网络仿真平台的搭建和网络模拟的效果。通过安装在LINUX平台上的NIST net网络模拟软件,建立一个需要研究的网络模型,在计算机上运行这个模型,并分析结果。通过在IP层运作,NIST的网络可以模拟的关键终端到终端的性能各广域网的情况(如拥塞丢失),或通过各种潜在的子网技术(如xDSL和电缆调制解调器的非对称带宽的情况下实施的特点)。通过模拟我们发现运用仿真平台可以根据用户的需求设计不同的模型,并用很少的时间和金钱解决和预防网络隐患,是一项重要的网络技术。AbstractWith the rapid development of Internet-scale applications and network types of the growing research network behavior and performance has become a difficult and important task.Network simulation of network behavior as a tool for performance, played a major role.Network simulation is a reproduction of a complex network environment an effective way, simulation is divided into two categories: one is the simulation method (Simulation), set up by software a complete virtual network environment, the advantage of low cost, convenient and disadvantage is notreproduce the real network, the higher distortion, and the mainstream of the simulation software operation and use of more complex; the other is simulation (Emulation), the experimental network, running a real business data flow, and made available to researchers can control,Repeat the network state control interface, the method combines the advantages of the measured and simulation methods, flexible efficient and effective simulation.But the current simulation software, provides only general parameters of the interface modify the network performance, but not with a specific network scenarios associated.Next-generation network simulator (emulator) can resolve these issues within a certain range.It not only provides a controlled, reproducible network environment, it is more important in a true physical network, running a real business flow, while on the run to be analyzed in its agreements and services, notthen need to re-encode for the simulation environment for network research provides a good environment.NIST is one such tool, it runs on Linux.NIST's network allows a single Linux PC set to the router to emulate various network conditions.NIST network emulator is a network of IP network performance in general-purpose tool for dynamic simulation.The tool is designed to allow control with network performance sensitive / adaptive applications and a simple laboratory environmental control protocol repeatability.Through the IP layer operation, NIST network can simulate the key end-to-end performance of the wide area network (such as congestion loss), or through a variety of potential subnet technologies (such as xDSL and cable modem, asymmetric bandwidth situationsimplementation characteristics).NIST within the network as a kernel module, extended to the Linux operating system and X Window System-based user interface applications.关键词:仿真平台 NIST net 网络模拟第一章 绪论1.1 网络环境仿真平台产生背景网络仿真是进行网络技术研究的一种基本手段。在新技术的研究过程中,由于各种原因,实际网络系统的实现往往是代价较高或是不现实的。在这种情况下,仿真就成了最佳可供选择的测试、评估和验证手段之一。网络仿真有着周期小、成本低等特点,而且可以是研究者更容易利用他人的研究成果,可以是研究者更专注于自己所研究的部分而不必为系统的其他部分耗费更多的精力。进行网络技术的研究大概有以下3种手段:(1)分析方法,就是对所研究的对象和所依存的网络系统进行初步分析,根据一定的限定条件和合理假设,对研究对象和系统进行描述,抽象出研究对象的数学分析模型,利用数学分析模型对问题进行求解。(2)实验方法,就是设计出研究所需要的合理硬件和软件配置环境,建立测试床和实验室,在现实的网络上实现对网络协议、网络行为和网络性能的研究。(3)模拟方法,应用网络模拟软件(自己开发或选用一个通用的网络模拟软件),建立所研究的网络系统的模拟模型,在计算机上运行这个模型,并分析运行的输出结果。然而,前两种方法都存在很大的局限性。分析方法的有效性和精确性受假设限制很大。当一个系统很复杂时,就无法用一些限制性假设来对系统进行详细描述。实验方法的局限在于成本很高,重新配置或共享资源很难,运用起来不灵活,实验床的规模很难做到很大,不能实现网络中的多种通信流量和拓扑的融合。而模拟方法在很大程度上可以弥补前两种方法的不足。模拟方法可以根据需要设计所需的网络模型,用相对很少的时间和费用了解网终在不同条件下的各种特性,获取网络研究的丰富有效的数据。网络模拟无疑提供了一个方便、高效的验证和分析方法,因此网络模拟技术在现代通信网络设计和研究中的作用正变得越来越大。1.2 网络环境仿真平台的定义 网络仿真也被称为网络模拟,因为对各种网络仿真过程来说,其中也有“模拟”的含义,即,网络仿真既可以取代真实的应用环境得出可靠的运行结果和数据,也可以模仿一个系统过程中的某些行为和特征。顾名思义,网络模拟,就是用计算机程序对通信网络进行模型化,通过程序的运行模仿通信网络的运行过程。1.3 网络环境仿真平台的需求近年来,数据通信网络无论就其物理的规模还是应用范围来讲,都获得了巨大的发展。Internet上不断地有新的需求出现,人们开发新的协议和算法来满足这些变化的需求。这种需求的例子包括服务质量支持、组播传输、安全性、移动组网和策略管理。对这些领域的协议和算法的开发和评价要求人们回答很多设计上的问题。尽管实验室中的小规模评价、大范目的实验测试床和自制的模拟都是很有价值的,但是每一种都有很大的局限性。这些方法经常无法体现真实网络中所发现的大量混杂的业务流和拓扑结构,而它们会带来相当的花费,并且受控多件下的重复实验会很困难。 多协议网络模拟器可以为低成本的实验提供一个良好的环境,可用于完全不同的研究负域的一个通用模拟环境,可以为网络学术界提供相当大的便利。可用于开发新协议的丰富的构件平台,在一个受控环境下研究大规模协议交互的可能性,以及能够更方便地比较不同方法的结果。1.4 网络性能的研究方法 基于包的模拟:传统网络模拟一般在数据包级进行,可以对每个包在网络中经过所有队列的到达、排队、处理以及离开等进行各种模拟。当前主流网络模拟器NS2,OPNET 等所采用的方法几乎都是基于包事件的离散事件驱动模拟。离事件驱动的基本思想是通过一个调度器(Scheduler)的调度,对一个事件队列中的事件依次调度。每次取出时间最小的一个事件,在对这个事件的计算处理过程中可能会产生下一个新的事件,将新的事件插入到事件队列中,当其在队列之前的所有事件都执行完后,就会执行这个新事件。在离散事件模拟中,模拟所采用的时间不同于现实世界的“挂钟”时间,而是一个逻辑时间,而且并不连续,只要当某一事件所在的时间点之前的所有事件都已被调度,就可以将当前时间移植该时间点执行该事件。在基于包的离散事件驱动模拟中,每个事件都是关于单个数据包的信息或者状态变化,比如说一个包的进队列、出队列、丢包、计算延迟等,每一项都是作为一个独立的事件来处理的,并很可能由该事件引发新的事件。基于流的模拟:流模拟一般将具有相同性质的一组数据包集合抽象成一个流,用几个参数刻画这个流,将流的参数的变化作为事件,这样不再关注某个包的细节,而是关注整体,大大减少了需要模拟的事件数量,提高模拟效率。提高网络模拟能力的方法可以分成以下三种类型:计算能力、模拟技术以及模拟模型。在计算能力方面,可以用更快速及能力更强的计算机来加快模拟速度;在模拟技术方面,可以应用新的高效算法来加快模拟速度,比如日历队列调度算法和扩展树算法已经用于提高处理事件列表的效率;在模拟模型方面,可以引入更高层的抽象来简化模拟模型、提高模拟效率。流模拟就是从模拟模型方面入手,采用基于流的技术对实际的网络业务建模,从而得到更高的模拟能力。另一方面,最近的研究结果表明,网络流量正在变得日益复杂,难以用简单的模型来刻画。比如说,在一定时间尺度上的网络流量一般具有自相似性。自相似性指的是不同时间尺度上,网络堆叠流量的统计特性相同或者相似。引起自相似的主要原因包括:(1)通过TCP协议传输的文件,尤其是WEB文件(包括用户请求的文件、实际传输的文件、文件的传输时间、服务器端存储的文件等)具有重尾分布。若文件大小符合重尾分布,则对应的文件传输均导致链路层的自相似性。(2)TCP重传机制产生自相似性。(3)TCP拥塞控制的的混沌特性(非线性、确定性、混乱中的有序(Order in disorder)、对初始状态的敏感性(蝴蝶效应)、不可预见性)。由此可见,网络行为性能的复杂化,是由于 TCP 传输机制及其自身性质造成的,同时也是大量数据叠加的结果。采用传统的数据包的模型来研究这些现象,不能从整体上去把握事物的规律和特点,而且效率比较低。比如说,为了模拟自相似流量的产生,可以采用大量 On/Off 源的叠加来实现,这是一种产生自相似流量的等效方法,但是效率却十分低下。 因此,我们可以考虑,当用户不关心单个包的细节特征,而更关心网络整体表现时,可以采用流模拟方式来完成网络的模拟。 包和流的混合模拟:包模拟和流模拟都有自己的优势,又同时有自己的不足之处。模拟准确,但代价是计算量大,尤其是对大规模网络缺乏能力。流模拟在模拟大规模网络时效率要高很多,但是其关心和得到的往往是整体特征,缺乏每个包的细节。于是,我们考虑是否可以将包模拟和流模拟混合,结合二者的优点,既提高模拟效率,又能获得一定的精度。有很多理由让我们希望能够提出一个模拟方法,能将流模拟和包级别模拟两种方法的优点合并在一起。首先,通过有效的模拟大规模网络和为选中的流提供详细信息,使得研究通过高速广域网通信的端到端协议的性能称为可能。关于已经存在的和未来的 Internet 通信协议的研究都会从这种方法中受益。第二,它允许小的末端网络的性能研究,如同广域网交换数据的无线网络,无线网络最好用包级别来模拟,而 WAN 则用流模型模拟更有效。最后,引入非 TCP 流量到流模型中提供了研究广域网流量的一种替代方法,可能产生更好的真实 Internet 流量模型。这些对于创造更有效的模拟方法和研究更大范围的网络问题都十分有用。1.5 仿真和模拟的意义在目前网络性能的研究方法中,计算机模拟仿真技术是重要的手段之一,具有成本低、灵活可靠、可重构、易模拟大规模网络的特点,在网络建设、网络协议和网络业务开发中起着不可替代的作用。在中文文献中常用“仿真”来表示 Simulation,而用“模拟”来表示 Emulation,本文也沿用这样的惯例。仿真强调的是模仿一个系统过程的某些行为特征,而模拟强调模仿者可以取代被模仿者或嵌入到被模仿的系统中,接受同样的数据,执行同样的程序,获得同样的结果。仿真方法专注于在完全由计算机软件仿真的环境中进行实验,模拟方法则采取了直接控制网络层参数的方法在实验网上进行性能测试。本文将仿真方法的网络仿真思想引入到模拟方法中,实现了网络损伤模拟与网络仿真的关联,提高了网络损伤模拟的针对性。1.5 网络环境仿真平台的设计目标仿真平台在设计思路上试图满足网络研究界在网络模拟方面的多种需求。已被众多网络研究者广泛使用。(1)抽象:模拟器要能提供不同粒度的抽象,允许通过单一的模拟器既能模拟出详细的细节,又能进行在一定程度上忽略细节的高级别的模拟。很多情况下,网络协议要在不同层次上进行研究,并且有许多数据流的汇聚和许多协议的交互。(2)仿真:大多数模拟实验是限制在一个单一的模拟世界里的,仅仅包括模拟器中有的一个强有力的工具。NIST net提供了将真实网络中的分组引入到模拟器中的手段。 (3)场景生成:在一组适当的网络条件下测试协议,对于得到可用的和有用的结果来说是很关键的。自动的创建复杂的业务模式、拓扑结构和动态事件(例如链路失效)可以帮助生成这些适当的场景。NIST net中附带了相关的场景自动生成工具。同时,用户也可以通过自己编写脚本来设置场景。(4)可视化:允许研究者更容易地理解网络模拟中的复杂行为的工具是非常有用的。假定行为很复杂,网络涉及的规模很大,仅仅提供概括性能数据的表格不足以描述网络的行为。可视化为网络行为增加了动态的展示,允许研究者更直观的理解协议,并能够辅助协议调试,为模拟结果提供了可视化展示的手段。(5)可扩充性:模拟器必须容易扩展以增加新的功能,开发大量的场景,以及研究新协议。NIST net中的模块可以很方便地扩展和组合。 除这些设计原则之外,几个工程性的问题对网络仿真平台的可用性也有相当大的影响。首要一点是模拟器中是否有大量的协议模块可用。这允许不同的方法可以很容易的作比较,也缩减了模拟开发时间,使研究者专注于自己的模拟中和要研究的设计问题相关的那些方面。其次,模拟器包含的协议模块必须是经过验证的达到其协议成熟度要求的协议实现。这样,研究者可以开发新的协议变种并和原有的实现进行比较。TCP就是这样的一个例子。在NIST net中包含了TCP的好几个变种。最后,假定NIST net中协议模块以及它们之间交互的数量相当大,需要一种机制来避免对一个模块的修改会导致另一个模块的功能被破坏。为此,NS包括许多自动测试套件来避免无意的改动被带入模拟器中。NIST net是一款Linux下的网络模拟软件,它能让Linux服务器像路由器一样模拟各种网络条件,如拥塞丢失,包重排序,或者带宽非对称等情况。NIST net有一个基于X的用户接口,它也是Linux的核心模块扩展。作为一种工具,在NIST net上可以进行可控的,可重复的实验,这些实验可以是网络特性敏感/自适应的应用,也可以通过简单的实验室环境设定控制协议。NIST net工作在IP层时能模拟被不同广域网环境影响后的端到端的临界性能特性。NIST net也支持用户对系统附加的自定义分组管理。图1所示是NIST net的典型配置。图1. 典型的NISTnet示例1.6 论文主要工作本文首先介绍网络仿真平台的建立,其步骤由设置LINUX网络配置开始,利用NIST net软件进行数据模拟分析。其工作将包括:LINUX的安装、NIST net平台的搭建,NIST net的安装、配置、调试及案例。1.7 论文的组织结构第一章 绪论:简要介绍网络仿真的基本概念、定义,特点、需求以及设计目标。第二章 网络仿真与模拟软件的介绍。第二章 NIST net的安装与调试。第三章 NIST net的使用以及网络性能模拟案例。第五章 结论与展望:对本文的工作进行总结并对未来的研究作出展望。第二章 网络仿真与网络模拟2.1 网络仿真概述在目前网络性能的研究方法中,计算机模拟仿真技术是重要的手段之一,具有成本低、灵活可靠、可重构、易模拟大规模网络的特点,在网络建设、网络协议和网络业务开发中起着不可替代的作用。在中文文献中常用“仿真”来表示 Simulation,而用“模拟”来表示 Emulation,本文也沿用这样的惯例。仿真强调的是模仿一个系统过程的某些行为特征,而模拟强调模仿者可以取代被模仿者或嵌入到被模仿的系统中,接受同样的数据,执行同样的程序,获得同样的结果。仿真方法专注于在完全由计算机软件仿真的环境中进行实验,模拟方法则采取了直接控制网络层参数的方法在实验网上进行性能测试。本文将仿真方法的网络仿真思想引入到模拟方法中,实现了网络损伤模拟与网络仿真的关联,提高了网络损伤模拟的针对性。2.1.1常见网络仿真软件网络性能评价实验手段基本上分为实际测量和软件模拟两种。实际测量就是搭建一个实验网络,在该环境中运行待测对象。这样做的难点在于,搭建所需拓扑结构代价较大,费用昂贵,而且当关注特定环境下的网络协议或服务的性能特征时,想要重复完全相同的网络条件是不易做到的。其优点是,真实地反映了网络协议或网络业务的性能状态。软件模拟,是指通过计算机软件模拟真实网络的运行来进行实验的方法,包括网络仿真(Simulation)和网络模拟(Emulation)两种。软件仿真是指在软件模拟的环境中完全用代码来描述网络模型的运行的模拟方法。网络仿真方法由于采用了计算机进行模拟,使得很多模拟人员能够研究大规模网络和学习新协议新算法的设计与实现,并且能够在网络实际使用前对其进行检验和改进。缺点是无法完全重现真实的网络环境,失真度较高,且必须通过软件编程来实现各种网络模型,增加了额外的工作量。目前有相当多的网络仿真软件存在,最著名的是 NS-2 模拟器和 OPNET。NS-2(Network Simulator,Version 2)是一款开源的网络模拟软件,最初是由加州大学伯克分校(UC Berkey)开发的,任何人可以获得、使用和修改其源代码,该软件已经成为网络研究领域应用最广泛的网络仿真软件之一。OPNET 最早是在 1986 年由麻省理工大学的两个博士创建的。在设备制造领域,思科、飞利浦、上海贝尔、华为和中兴等均采用 OPNET 作为仿真软件。OPNET 的产品 Modeler功能强大,针对不同的领域表现出不同的用途:(1) 对于企业网络,Modeler 调用已经建好的标准模型组网;(2) 对于运营商网络,Modeler 焦点是整个业务层流量的模拟,使运营商能够有效地检查出业务配置中的错误;(3) 针对科研开发的需求,Modeler 提供了一个开放的环境,用户可以方便地建立新的协议和配备。2.1.2 常见的仿真软件? NS-2 模拟器NS-2 是一种面向对象的网络模拟器,本质上是一个离散事件模拟器。其本身有一个虚拟时钟,负责记录当前时间、调度网络事件队列中的事件,并提供函数产生新事件。一个事件的处理可能又会产生后续的事件,例如对一个接收到的分组的处理触发了更多的分组的发送。模拟器所做的就是不停地处理一个个事件,直到所有的事件被处理完或某一特定的事件发生为止3。NS 有丰富的构件库,对网络系统中一些通用的实体已经进行了建模,例如链路、队列、分组、节点等,并用对象来实现了这些设备的特性和功能。NS 的构件是用两种面向对象语言编写的:C+和 Otcl。NS 的构件通常作为一个 C+类来实现,同时有一个 Otcl 类与之对应,这种方式被称为分裂对象模型。用户通过编写 Otcl 脚本来对这些对象进行配置、组合和描述模拟过程,最后调用 NS完成模拟。使用 C+实现可以达到高效的目的,而使用 Otcl 进行模拟配置,可以在不必重新编译的情况下随意修改模拟参数和模拟过程。使用 NS-2 进行网络模拟的基本操作流程:(1) 首先进行问题定义,决定是否需要修改 NS 源代码,如果需要则修改源码,并重新编译调试,直至通过;(2) 开始编写 Otcl 脚本。首先配置模拟网络拓扑结构,确定链路的基本特性,接着,建立协议代理,包括端设备的协议绑定和通信业务量模型的建立;然后,配置业务量模型参数,从而确定网络上的业务量分布;最后,设置 Trace 对象;(3) 用 NS 解释执行刚才编写的 Otcl 脚本;(4) 对 trace 文件进行分析,得出有用的数据。如果对结果不满意,则调整拓扑结构和业务量模型,重新进行上述过程。OPNETOPNET 是 Optimized Performance Network Engineering Tool 的简称,可模拟现有的绝大多数网络和协议,如:ATM,Ethernet,TCP/UDP/IP,Http 等。OPNET模拟软件是商业软件,由 OPNET Technology 公司开发和维护,主要面向网络设计专业人士,帮助客户进行网络结构、设备及应用的设计、分析和管理。OPNET 的特性包括以下几个方面:(1)提供了三层建模机制,底层为进程域模型,以状态机来描述协议;其次为节点域模型,由相应的协议模型构成;最上层是网络设备模型,用来映射现实网络。三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性。(2) 提供了一个比较齐全的模型库,包括路由器、交换机、服务器、客户机、ATM 设备、DSL 设备、ISDN 设备等。(3) 采用混合建模机制,把基于包的分析方法和基于统计的数学建模方法结合起来,既得到非常细节的模拟结果,也大提高了模拟效率。(4) 具有丰富的统计量收集和分析功能,可以直接收集常用的各个网络层次的性能统计参数,方便地利用现有的拓扑和流量数据建立仿真模型。运行 OPNET 进行仿真的主要流包括:(1) 明确仿真目的,理解要仿真的系统和构成系统的模块之间的相互关系;(2) 选择要建模的方面。网络模型包含的内容很广泛,在建立模型时,并不需要包含系统所有方面的模型,应突出重点、简化次要问题;(3) 定义输入和输出。在网络仿真中,输入和输出通常指网络业务或数据量,正确确定业务量或数据量的概率分布等是达到网络模型可行度分析的关键;(4) 确定网络模型。仿真软件是建立网络模型的基础。建模者必须能够熟练地使用网络建模工具,并根据分析结果确定系统中的参数、变量及相互关系,最终构建仿真系统的模型;(5) 开始运行仿真,在初步建立的模型下输入业务数据;(6) 可信度与模型的完善。通过反复检测仿真结果是否可用、是否足够详细,不断地发现问题找出影响系统性能的原因并进行修改,获得满意的仿真结果。2.2 网络模拟在真实的网络环境中,由于网络拓扑的复杂性和各种网络条件的难于重现,使得研究和分析网络协议和网络业务非常困难。虽然软件仿真器能够方便的提供可控、可重现的网络环境来测试网络协议或服务,对于那些在真实网络中难于创建的复杂网络拓扑结构,但它并不产生任何真实的网络业务流,仅仅是一个逻辑网络,总是跑在一个单独的被描述的网络节点上,因此无法准确模拟出真实网络世界的精确性。另一方面,使用软件仿真器上进行网络仿真,需要重新编写协议的代码,即使其性能良好也难以说明真正运行的网络协议可以达到同样的效果。网络模拟法能提供给模拟人员一个更加接近真实网络的模拟环境。它是在真实的物理网络中运行真正的数据业务流,并提供给研究者以控制接口,研究者通过向网络模拟软件发送规则来动态调控实验网的状态条件,从而达到模拟各种网络环境的效果。网络模拟法能够像实测法一样如实地反映网络协议运行在物理网络上的表现和特征,但却免去了构建大型实验环境的麻烦;又能够像网络仿真方法一样,提供可控制的、可重现的网络运行环境,但却免去了为仿真而重新编写代码的麻烦。网络模拟法的限制之处是被模拟的网络速度无法超过其实际使用的物理网络的速度。 2.2.1 常见的模拟软件Dummynet 应用程序是一种内部的 FreeBSD 系统工具,它在内核处理 IP 包时可以提供以下的网络模拟特性:带宽限制、多路包路由、延时、丢失、有限包队列、加权平均队列7。其工作方式是在 FreeBSD 设备的输入和输出网络工具之间建立通信管道,而每种通信管道都可以分别配制成单独的 Dummynet 特性。每种管道都彼此独立活动,根据自身的规则集对包进行处理。Dummynet 通过截获协议栈中协议层之间的通讯来实现网络仿真设置,适用于任何协议。要分析的协议所在层和下一层之间的通讯被 Dummynet 截获,它通过控制被截获的通讯流的带宽、队长、延迟和丢包率来实现要模拟的网络环境。不仅对网络参数有较强的可控性,而且由于真实的业务仅在被截获的通信流中加入很小的头节点,所以仿真实验的速度很接近所用设备的最大速度。Dummynet 的时间精度和粒度依赖于系统时钟。因为 Dummynet 是周期运行的,而它的周期时间间隔又依赖于系统时钟,所以这对仿真的精度会有一些影响和限制。时间粒度一般情况下是毫秒级。当仿真快速的网络时,会导致因处理不及时而引起的不必要的错误。而且它需要用额外的工具来观察其 trace 结果文件,比如 tcpdump 等。NIST Net 是在美国国家标准和技术研究所(NIST)由网际互连技术小组开发的。该软件作为一个内核模块安装在 Linux 系统中,能够将宿主主机作为一个可加入网络损伤的路由器,从而模拟各种大范围的网络条件7。NIST Net 是一种基于 IP 层的动态性能的通用工具,它设计成在一般的实验室条件下,用网络性能试验程序和控制协议就能实现,而且能被控制和再重复。NIST Net 提供了 6种不同类型的网络模拟,包括:带宽限制、包延时、包重定向、包丢失、包复制和包转移。这些模拟类型可以组合在一起模拟单个测试箱中的完整网络环境。当运行的时候,可以利用各个范围的网络参数情形来模拟端到端的性能。本文设计的原型系统中采用了 NIST Net 作为网络损伤的实施者,因此在后续的章节中,将对其原理和使用方法进行详细阐述。2.3 网络仿真模拟技术的现状 2.3.1现有方法的不足. 网络仿真软件的典型代表是OPNET 与 NS2。它们的关系有点像 Windows和 Linux 的关系。OPNET 是商业软件,所以界面非常好,功能上很强大,界面错落有致,统一严格,操作也很方便,对节点的修改主要就是对其属性的修改,这既是优点也是其缺点。如果使用者需要特殊的节点或很适合自己的节点则使用NS2 更方便。NS2是自由软件,功能也很强大,但界面不如 OPNET,且由于不是同一公司开发的,所以格式上不统一,有很多零散的东西,不容易上手。NS 和 OPNET 作为 Simulator 都是单机版的,即:其所有的网络环境都是在一台主机上进行模拟的,包括网络设备、网络事件、数据流等。而无法与别的主机进行互联,因此无法准确模拟出真实网络世界的精确性,在模拟的失真度上存在着无法弥补的缺陷。而且在使用和操作上,NS 和 OPNET 在使用和操作上还远远没有达到一般网络规划设计人员经过短时间的培训就能够熟练使用的目标。这在一定程度上,影响了网络模拟的普及和应用。因此,提出更方便快捷的网络建模方法,使得一般模拟人员也能够很容易地实现网络模拟是很必要的。Emulator 提供了控制网络条件的接口,实现了可控的物理网络环境,在失真度上与 Simulation 相比具有先天优势。但现有的 Emulator 软件大多都是传统的网络性能测试工具的衍生产品,专注于在网络底层进行数据的产生、发送、分析和处理,而在网络拓扑、网络业务和网络架构方面却少有作为,例如,模拟人员虽然可以使用 NIST Net 来模拟穿越真实网络后数据包所受到的损伤,但它却只提供了直接设置损伤参数的控制接口,而这在有的网络实验中并不能满足实验要求。比如说,开发了一种新的软件(称为甲),需要测试一下甲在若干种网络仿真下运行的性能结果。如果采用网络仿真软件的话,就需要在仿真环境下开发一种甲的模拟程序,这样不仅增大了工作量,同时实验结果的真实性也不够高。如果采用模拟方法,则由于没有相应的网络仿真映射方法,导致了在进行损伤处理的时候不知道应该如何设置损伤的系数,从而陷入了很困惑的境地。2.3.2 仿真与模拟的结合本文提出了将网络仿真方法中的网络仿真应用到网络模拟方法的思想,其中网络仿真到网络模型的映射通过应用数据机制来实现。操作与网络模拟软件的结合,可以提高网络模拟的针对性,达到了软件模拟的网络仿真作用于真实的网络环境的效果,正好解决了前文所述的难题。模拟人员通过系统预留的接口输入需要的网络仿真,模拟系统便调用相应的数据动态地生成要求的网络仿真;然后,输入模拟数据,对模拟网络仿真进行测试;最后,将得到的性能参数以动态脚本的形式传递给模拟软件,实现物理损伤。数据机制其实就是控制逻辑的分离,具有操作简洁、灵活高效的特点。实际参数应用到网络仿真的生成,着眼于对于整个网络架构的把握。网络模拟人员只需要选择高层的网络仿真,然后通过调用数据库便可自动完成网络的建模。操作数据的制定者必须是网络模拟专家,而使用者可以是一般的网络设计人员和业务开发人员。操作生成数据可以用来辅助仿真软件生成网络模拟环境,免去模拟人员对 NS 或 OPNET 在细节上的繁琐操作;此外,也可以给网络设计和规划人员在进行网络部署时提供参考,指导真实的网络系统设计。2.3.3 NIST Net工具的选取NIST的网络是一个网络仿真包,在Linux上运行。NIST的网络允许一个单一的Linux电脑设置为路由器到模仿各种网络条件。下面是一个简短的Blurb的有关NIST网:NIST的网络网络仿真器是一种在IP网络的性能仿真动态通用工具。该工具旨在让控制,具有网络性能敏感/自适应应用程序和一个简单的实验室环境控制协议的重复性实验。通过在IP层运作,NIST的网络可以模拟的关键终端到终端的性能各广域网的情况(如拥塞丢失),或通过各种潜在的子网技术(如xDSL和电缆调制解调器的非对称带宽的情况下实施的特点)。NIST的网络是作为一个内核模块,扩展到Linux操作系统和X Window系统为基础的用户界面应用程序。在使用时,该工具允许一种廉价的基于PC的路由器来模拟许多复杂情况下的表现。NIST Net 损伤器是一个开源的网络模拟工具,研究者可以使用它模拟丢失、延时、带宽限制等网络问题,产生可控、可重现的网络环境。其功能强大、操作简洁,是 Emulator 中最典型的代表,非常符合实验要求4。NIST Net 应用程序主要由以下 4 个不同部分组成:(1) 用于截获网络数据包的 Linux 内核模块;(2)用于编辑网络模拟规则的命令行工具;(3) 用于编辑网络模拟规则的图形X-Windows 工具;(4) 用于监测和统计规则信息的应用程序。NIST Net 是一个内核可装载模块,使用时需要事先将模块添加到 Linux 系统中。它通过调节底层设备驱动来实现所模拟的目标网络的性能,具体过程如下:首先,当数据包进入