欢迎来到天天文库
浏览记录
ID:15866833
大小:199.50 KB
页数:9页
时间:2018-08-06
《基于ns2的tcp拥塞控制仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于NS2的TCP建模与仿真摘要:TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。本文利用NS2网络仿真器对TCP/IP中的拥塞控制与拥塞窗口,快速重传与快速恢复算法进行了仿真,使对协议中的几种机制和算法有了形象的理解。关键字:TCP/IP协议,NS2仿真,拥塞控制,快速重传,快速恢复一、引言TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。例如,T
2、CP协议在RFC793中正式定义;RFC1122对如何检测错误和不一致性以及解决方法进行了说明;RFC1323给出了对TCP的一些扩展功能;RFC2518中重点阐述了TCP的拥塞控制机制描述了更新后避免过度拥塞的算法;RFC3168描述了对显示拥塞的报告等。据统计,当前在所有因特网的数据包中,大约有95%包的传送使用了TCP协议,因此针对TCP协议相关机制的研究很有实际意义。在TCP协议的研究中,仿真是一种有效又经济的研究方法,而且可以给人以更加形象的认识。目前的网络仿真工具主要包括两类:一是基于
3、大型网络开发的网络仿真工具,如OPNET、GloMoSim等;二是基于小型网络开发的网络仿真工具,如NS2、COMNETIII等。大多数网络仿真工具的价格昂贵,而本文采用的NS2是一种应用广泛、影响力较大和源代码公开的免费网络模拟软件。二、网络仿真器NS2NS是NetworkSimulator的英文缩写,又称网络仿真器。它是一款开放源代码的网络模拟软件,最初由加州大学伯克利分校(UCBerkeley)开发。NS-2支持Windows、Linux、Unix、Mac以及其他支持POSIX标准的操作系统
4、,它主要支持的操作系统是Linux系统,目前几乎支持所有主流的Linux发行版本,本文使用的是Windows+Cygwin平台。NS2是一个可扩展、易配置和可编程的事件驱动网络仿真引擎。底层的仿真引擎由C++编写,同时利用面向对象的OTCL语言作为仿真时命令和配置的接口语言。C++的特点:具有很快的运行速度,但每次改变均需要编译,较为复杂,适合处理繁琐但比较固定的工作。OTCL在运行速度上无法和C++比拟,但相对来说更加灵活,适合用来设计个人的仿真方案。C++和OTCL之间通过TCLCL工具包实现
5、互相调用。图1 NS2进行网络模拟的基本流程为了分析仿真结果,NS2提供了两种基本数据追踪能力:一是跟踪,生成“.nam”和“.tr”文件。能够将每个数据包在任何时刻的状态保存到指定文件中,记录包在队列或链路中丢弃、到达、离开等行为;二是监视,用户有选择地记录自己需要的数据,可利用Gawk、Gnuplot等工具统计发送包、接收包及丢弃包等结果进行分析。在本文的仿真中,我们没有进行源代码的修改,而是利用NS2中已有网络组建进行了仿真模拟,并利用图形界面给出了形式化的仿真结果。一、TCP协议中相关机制
6、TCP(TransmissionControlProtocol:传输控制协议)对应于ISO/OSI模型的第四层——传输层,传输层提供从源端到目的端的“端到端”连接。通过三次握手协议进行了会话连接后,TCP进入了会话维持阶段,在该阶段TCP的一个重要功能就是流量控制和拥塞控制,它用于处理网络中不同网段间不同速率的匹配,防止网络发生拥塞,并在数据包丢失时重发,以此提供稳定可靠的网络服务。3.1拥塞控制与拥塞窗口拥塞控制室TCP协议的精髓,与流量控制只关注收发两端流量不同,拥塞控制关注整个网络的流量,是
7、一种全局控制机制。TCP提供了一系列的检测,避免和拥塞控制的方法。最著名和常用的就是“慢启动”(slowstart)和动态拥塞窗口机制(DynamicCongestionWindow)。两者在实际应用中结合使用,系统为每个TCP连接维护两个变量:拥塞窗口(cwnd)和慢启动门限(ssthresh)。慢启动门限一般代表我们对网络容量的一个评估。在网络连接好后,初始发送的拥塞窗口为1,即第一次只能发送一个数据包,当得到该包的确认后,拥塞窗口大小翻倍,即cwnd=2,以此类推,窗口大小乘指数增长一直到慢
8、启动门限大小,即cwnd=ssthresh。这相对于一开始就使用门限大小的窗口发送数据来说是慢启动。慢启动结束后,系统进入了所谓的“冲突避免”(Congestionavoidance)阶段,该阶段拥塞窗口呈线性增长,每次窗口大小增加1。当冲突发生时,将采取冲突控制策略,同时动态调整拥塞窗口cwnd和慢启动门限值ssthresh,如:ssthresh=ssthresh/2;谈后拥塞窗口职位1,并重新启动慢启动过程。3.2快速重传与快速恢复在TCP连接中如果收到1~2个重复的确认包(表
此文档下载收益归作者所有