基于NS2的CSMA/CD协议的模拟及分析
2014-07-19刘桂江丁晓贵彭张节胡浪涛
刘桂江,丁晓贵,彭张节,胡浪涛
(安庆师范学院计算机与信息学院,安徽安庆 246133)
基于NS2的CSMA/CD协议的模拟及分析
刘桂江,丁晓贵,彭张节,胡浪涛
(安庆师范学院计算机与信息学院,安徽安庆 246133)
NS2是目前学术界广泛使用的一种网络仿真软件,也常被用于计算机网络课程的教学中。在介绍NS2模拟网络运行的一般流程和一些常用的分析工具的基础上,描述了以太网MAC子层协议CSMA/CD的工作原理,实验模拟运行及对跟踪文件的分析说明了以太网的数据传送方式及性能影响因素,可以很好地用于计算机网络课程中以太网协议内容的教学。
以太网;NS2;CSMA/CD;二进制指数后退算法
以太网(Ethernet)是局域网中最为普遍、最为流行的LAN(Local Area Network)标准,在局域网市场中取得了垄断地位,几乎成了局域网的代名词。在局域网的体系结构中,媒体访问控制子层MAC(Media Access Control)是最为核心的层次,对局域网性能的影响起着关键的作用。因此,以太网的MAC子层也就成为计算机网络课程教学的重点。以太网的MAC子层采用了载波监听多路访问/冲突检测CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的媒体访问机制,使用NS2(Network Simulator Version 2,网络模拟器第2版)可以很好地对CSMA/CD协议进行模拟,模拟的过程和结果有利于学生更加直观地理解协议的实现原理,能得到较好的教学效果。
1 NS2模拟器
1.1 NS2简介
NS2是一种面向对象的网络仿真器,本质上是一个离散事件模拟器[1]。NS2是由UC Berkeley开发,主要用于仿真各种IP网络。NS2是一种针对网络技术的源代码公开的、免费的软件仿真平台,使用它可以很容易进行网络技术的仿真,它所包含的模块非常丰富,几乎涉及网络技术的所有方面,所以NS2成了学术界广泛使用的一种网络仿真软件[2]。NS2的所有模块使用C++语言编写,具体的仿真由OTCL(Object Tool Command Language)作为前端。这样网络组件运行速度快,且参数由OTCL设置,修改方便。目前NS2能够支持局域网、广域网、无线网和卫星网的仿真。
1.2 使用NS2的流程
NS模拟分两个层次:一个属于简单模式,是基于OTCL编程的层次,利用NS已有的网络元素实现模拟,无需修改NS本身,只需编写OTCL脚本;另一个属于高级模式,是基于C++和OTCL编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素[1]。
在计算机网络协议的教学演示中,一般只需使用简单模式。下面给出在简单模式下进行一次网络模拟的主要步骤:
1)编写OTCL脚本,设置网络拓扑结构,需要设置链路的基本特性,如带宽、延迟和数据包丢弃策略等。
2)创建协议代理,包括端设备的协议绑定和通信业务量模型的建立。
3)配置业务量模型参数,确定网络的业务量分布。
4)设置模拟跟踪Trace文件。NS2将整个模拟过程保存到Trace文件中。
5)设置模拟开始与结束时间,完成OTCL脚本编写。
6)调用ns指令执行OTCL脚本。
7)对Trace文件进行分析,得出有用数据[3]。
1.3 模拟结果的分析及演示
使用NS2模拟网络协议运行后,会产生一个扩展名为tr的文本格式跟踪文件,这个跟踪文件按时间顺序记录了模拟过程发生的一系列事件,包括数据包的发送、接收、丢弃以及每个数据包的编号和地址等信息。NS2提供了一些工具,可以对网络模拟的过程进行动画演示,也可以很方便地对跟踪文件进行数据的提取及图示化。
1)动画演示工具NAM
NAM是基于Tcl/Tk的动画演示工具,可以把模拟的过程用可视化的方式呈现出来。通过动画演示,可以非常直观和形象地展示网络协议的工作过程,可以极大地帮助学生理解所学的理论知识。所有的动画都是基于NS2网络模拟生成的数据自动生成,既准确又避免了教师制作动画的繁琐过程,减轻了教师的负担。演示开始时,NAM会读取跟踪文件,创建网络拓扑,显示窗口界面,进行必要的布局设置,然后停止在时间标记为0的地方[4]。
2)分析工具AWK
AWK是一种用于处理文本的编程语言工具。AWK语言的语法与C语言很接近,与C语言不同的是,AWK能够以很短的程序对文本类型文件内的资料做统计、修改、比对和抽取等处理。利用AWK,可以对NS2产生的跟踪文件进行分析和处理。读取跟踪文件后,文件中的每一行当做一个记录,存入变量$0,把一行中用空格分开的字段值依次存入变量$1,$2,……中,只要在输入数据中有模式匹配,就执行一系列指令。该工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
3)图示化工具xgraph和Gnuplot
xgraph是一个通用平面图形的绘图工具,能够通过输入数据集或文件来绘制图形,并且对于输入数据集和文件的数目没有限制。还能够根据需求将图形以不同的格式输出,如PDF,PostS-crip,MIF等。数据集或文件的格式很简单,每行两列分别表示一个点的坐标值,第1列是x轴的数据,第2列是y轴的数据,然后把图画出来[5]。Gnuplot是由Colin Kelly和Thomas Williams于1986年开发的科学绘图工具,支持二维和三维图形。它的功能是把数据资料和数学函数转换为容易观察的平面或立体的图形,它可以让使用者很容易地读入外部的数据结果,在屏幕上显示图形,并且可以选择和修改图形的画法。
2 CSMA/CD协议
2.1 CSMA/CD的基本思想
以太网采用的媒体访问控制协议是载波侦听多路访问/冲突检测CSMA/CD协议。“载波侦听”的含义是指在使用传输介质发送信息之前,先要侦听(检测)介质上有无信号传送,即侦听传输介质是否空闲。“多路访问”的含义是指多个有独立标识符的节点共享一条传输介质。“冲突检测”是指节点边发送数据边检测总线上是否发生了碰撞。协议的基本思想就是如何分布式地协调多个节点对共享介质的访问控制。
2.2 CSMA/CD的工作流程
在CSMA/CD协议中,欲传输数据的节点监听媒体并遵循以下规则:
1)若媒体空闲就传输;否则,转到第2)步。
2)若媒体忙则继续监听,直到检测到信道空闲,然后立即传输。
3)如果在传输的过程中监听到冲突,它就发送一个短小的人为干扰信号(Jamming),这个信号使得冲突的时间足够长,让其他节点都能发现。
4)所有节点收到干扰信号后,认为冲突发生,都立即停止传输,并等待一个随机产生的时间间隙(回退时间,Backoff Time)后重发[6]。
2.3 回退时间的确定
各节点采用二进制指数后退算法(Binary Exponential Backoff,BEB)处理冲突,数据包等待发送的时间具有随机性。具体过程:第一次冲突产生后,每个站点随机等待0或1个时槽后重新发送。若有多个站点在冲突后又选择了同一个等待时槽数,则它们将再次冲突。在第二次冲突后,它们会从0,1,2,3中随机挑选一个数作为等待的时槽数。若又产生第三次冲突,则它们将从0~7(23-1)中随机挑选一个等待的时槽数。一般而言,n次冲突后,等待的时槽数从0~2n-1中随机选出。但在达到10次冲突后,等待的最大时槽数固定为1 023,以后不再增加了。在16次冲突后,站点放弃传输,并报告一个错误[6]。
3 实验仿真及分析
3.1 仿真环境
以太局域网由4个节点组成,拓扑如图1所示。网络带宽1 Mbps,传播延迟1 ms,网络协议为CSMA/CD。为模拟网络负载逐渐增加时对网络性能的影响,节点0和节点1之间的数据传输采用自定义流量模型[7];为避免应答数据流对性能分析的影响,节点2和节点3之间传输层采用UDP协议,并在UDP代理上配置一个CBR流量发生器[7]。
图1 以太网拓扑图
3.2 单对节点之间传输数据
设定节点0向节点1传输数据,自定义流量模型中产生数据分组的时间间隔设为8毫秒,第一个分组包长度为100字节,依次递增10字节,产生数据量的时间为10 s,节点队列长度设为1 000。模拟运行ns源程序,利用AWK工具分析跟踪文件,使用gnuplot分别画出吞吐量和传输效率随时间变化的关系,如图2和图3所示。
图2 吞吐量随时间变化图
图2中,以太网的吞吐量随着网络负载的增加而逐渐增大,在达到970 kbps后不再增加,表明网络吞吐量受网络带宽的制约。传输效率反映了信道的利用情况,传输效率越高,则信道的利用率越大。图3中,传输效率开始很快增大到最大值0.98,然后逐渐减小。表明网络信道利用率在负载较轻时,随着负载的增加而增大。当负载较重时,信道利用率反而随着负载的增加而减小。这主要是因为节点在传输数据之前需要监听媒体,若忙则等待,并继续监听,直到空闲才能传输。网络空闲时,节点能快速地把数据传输出去,信道利用率就提高了。网络繁忙时,等待的时间增加了,信道利用率也就降低了。
3.3 两对节点之间同时传输数据
节点0和节点1之间的数据传输模式同3.2,同时节点2向节点3传输数据,采用CBR流量发生器。设定传输速率为1 Mbps,分组长度为1 000字节。模拟运行ns源程序,显示结果如图4。
图3 传输效率随时间变化图
图4 两对节点同时传输模拟运行显示结果
图4中,1号、852号、860号、884号分组包被丢弃,显示原因是它们超过了BEB的限制,也就是二进制指数退避算法中冲突次数的限制。两对节点在同一总线上同时传输数据,分组包很容易发生冲突。发生冲突的分组包采用二进制指数退避算法随机选择退避时间继续重传,但1号、852号、860号、884号分组包冲突的次数已达到16次,所以被丢弃。
通过分析跟踪文件,可以发现丢弃的分组包还有很多,如图5所示。
图5 节点丢弃数据包情况
图5中,利用AWK工具分别对节点0和节点1之间、节点2和节点3之间传输数据时丢弃的分组包进行统计。节点0向节点1共发送了8 570个分组包,丢弃了6 681个;节点2向节点3发送了1 250个分组包,丢弃了2个。这表明数据传输中有些分组包的丢弃并不是由于冲突造成的。
进一步分析节点0和节点2两个发送节点的队列情况,如图6和图7所示。
图6 节点0的队列情况
在模拟程序中,已经设定节点队列大小为1 000,图6显示节点0在程序运行到3 s左右时就已经达到队列最大值1 000,后面产生的分组包就会被丢弃。图7显示节点2的队列空间始终没有达到最大值1 000,所以节点2上不会由于队列满而丢弃分组包,图5中显示节点2丢弃的2个分组包,应该都是由于冲突超过限制的次数而被丢弃。
图7 节点2的队列情况
4 结束语
NS2可以很好地对网络运行情况进行模拟,自动生成的跟踪文件可以使用AWK工具进行行为和性能的分析,并能用gnuplot等工具图形化展示结果,便于直观理解网络运行过程。本文对以太网数据传输进行了模拟,通过跟踪文件的分析,直观地说明了以太网的工作原理和性能影响因素,可以很好地应用于计算机网络课程中协议内容的教学。
[1]徐雷鸣,庞博,赵耀.NS2与网络模拟[M].北京:人民邮电出版社,2003:3-6.
[2]段绍敏,卢豫开,陈永生.基于NS2的TCP性能仿真研究[J].微计算机信息,2010(22):135-136.
[3]马玉军,胡可.NS2网络模拟工具在计算机网络课程教学中的应用[J].实验室科学,2011(5):100-103.
[4]王辉.NS2网络模拟器的原理和应用[M].西安:西北工业大学出版社,2008:54-56.
[5]曾晓红,胡忠旭,孙骏,等.NS2仿真结果分析方法的研究与实现[J].昆明学院学报,2011(6):56-60.
[6]刘桂江,孙家启,王琦进,等.计算机网络[M].合肥:安徽大学出版社,2008:99-102.
[7]黄化吉,冯穗力,秦丽娇,等.NS网络模拟和协议仿真[M].北京:人民邮电出版社,2010:186-187.
Simulation and Analysis of CSMA/CD Protocol Based on NS-2
LIU Gui-jiang,DING Xiao-gui,PENG Zhang-jie,HU Lang-tao
(School of Computer and Information,Anqing Teachers College,Anqing246133,China)
NS2 is a kind of network simulation softwarewidely used in academic circles at present.It is often used in computer network course teaching.This paper introduces NS2 simulation network operation process and some of the commonly used analysis tools.It describes the working principle of Ethernet MAC layer protocol CSMA/CD.It explains Ethernet data transmission method and the factors of influencing performance by the simulation and analysis of trace file.These factors can be used for Ethernet protocol teaching in the computer network course.
ethernet,NS2,CSMA/CD,binary exponential backoff
G424
A
1007-4260(2014)03-0121-04
时间:2014-9-15 16:07 网络出版地址:http://www.cnki.net/kcms/doi/10.13757/j.cnki.cn34-1150/n.2014.03.030.html
2014-04-06
安徽省教育厅重点科研项目(KJ2008A43ZC),安徽省重点教研项目(2012jyxm354)和安徽省精品资源共享课程(2013gxk067)资助。
刘桂江,男,安徽怀宁人,硕士,安庆师范学院计算机与信息学院副教授,主要从事物联网、下一代互联网、无线网络技术等方面的研究。