基于NS2的NGB混合网络传输仿真平台设计
高晨光 杨丽 王肖肖
(国家新闻出版广电总局二九三台)
摘 要 本文的主要目标是设计与实现基于Linux的混合网络传输仿真平台,模拟有线、无线复合信道协同覆盖场景。利用NS2仿真软件以及基于EvalVid的工具集,实现了有线与无线混合网络环境下的数据传输的仿真,并以仿真结果为依据验证仿真方法的可行性及其性能。关键词 NS2 混合网络 仿真 协同覆盖1 引言
下一代广播电视网是一个数据网,在这个网络上可以开展包括视频、语音、信息在内的多种服务,其目标是实现有线、无线及卫星等传输网络的互联互通和智能协同覆盖。但是目前的相关技术标准体系尚未明确,需要有广泛的探索及试验。鉴于此,本文在基于Linux 的NS2平台上搭建了一个适用于有线、无线混合网络的数据传输平台,并利用广播电视网中最常见的视频流数据来验证混合网络环境下协同覆盖可行性及传输性能。2 NGB网络仿真平台的设计思想
NGB网络仿真是利用仿真软件对传输网络进行模型化,通过运行程序来模仿传输网络的运作过程。网络仿真可以模拟真实的应用环境,并得出可靠的运行结果和数据,也可以模拟一个系统过程中的某些行为和特征,在成本较低的前提下获取丰富有效的测试数据。2.1 NS2仿真工具主流的网络仿真软件有NS2、Matlab、Opnet等,它们都能够提供成熟稳定的网络仿真平台。这些网络仿真软件都采用了离散事件模拟技术,并提供了丰富的网络仿真模型库和高级语言编程接口。NS2是一种基于Linux环境的针对网络技术的源代码公开的、免费的软件模拟平台,使用者可以根据自己的需求编写代码,扩充软件功能。NS2包含非常丰富的模块,支持有线网络和无线网络的协议仿真,非常适合模拟NGB混合网络环境中的数据传输过程。2.2 数据传输模拟双向改造后,广播电视网传输的数据分为控制数据及业务数据,其中业务数据占多数,而视频流仍是较为典型的部分。国内外对网络视频传输进行了大量的研究,但是并没有统一的体系结构用来对视频的质量从主观和客观上进行评价。为此Jirka Klaue在《EvalVid - A Framework for Video Transmission and Quality Evaluation》中给出了统一评价视频传输质量的框架和工具集——EvalVid。EvalVid具有模块化的结构,可以使用在所用的的视频编码策略下,网络之间的交互作用通过trace文件实现,很容易在各种实验的环境下使用。EvalVid和NS-2结合,给出了一个视频流质量评估的新工具集,本文即利用这两个工具,仿真在广播电视混合网络中视频流传输的过程,根据视频主客观损伤情况反映各种信道条件下数据传输的性能。3 仿真环境配置
3.1移动节点组建传统广播电视网的主体是有线网,通过它的数据传输比较稳定。在NGB混合网络的仿真中难点主要在于无线网的模拟。NS2中的无线网络模型本质上是以移动节点(MobileNode)作为核心,同时附加各种支持特性而构成,以实现对无线网、多跳ad-hoc网络等多种无线网络的模拟。所谓移动节点对象即是附加了无线功能和移动节点功能的MobileNode。NS2中的移动节点一般是由一系列连接到无线信道的网络组件构成,这些组件包括链路层(Link Layer,LL)、连接到LL上的ARP模块、接口优先级队列(Interface Queue,IFq)、MAC层以及网络接口(Network Interface),这些组件由OTcl一起创建和组装。移动节点通过NS2中一些特定的底层网络接口连接到无线信道上,其底层结构如图1所示:3.2 视频传输质量评估采用视频流作为仿真数据源的一个优点是,其发送与接收端均可以进行主观或客观的评价。最直观的感受即是视频画面损伤、流畅度等,客观层面则需要数据拆分,进行误码率等的参数评价。客观评估是仿真平台有效性的基本依据。EvalVid是一套评估通过真实或模拟网络传输的视频质量的工具集,它可以通过trace文件实现网络之间的交互作用,能够适应多种网络环境。通过3个连接模拟代理MyTrafficTrace,MyUDP和MyUDPSink,使得这些接口既能读取视频trace文件,又能产生评估视频传输质量的数据。MyTrafficTrace代理从编码输出文件中提取视频trace文件的帧类型和帧大小。同时该代理将视频帧分割成小的分段,并在适当的时间发送这些分段至低层UDP,发送时间由用户在模拟描述文件中设定。MyUDP是UDP代理的延伸。它记录每个传输分组的时间戳,分组id和分组大小。MyUDPSink是接收代理,接收MyUDP发送的视频帧分组。基于EvalVid工具集的视频传输质量评估框架如图2所示:图2基于EvalVid工具的视频传输评估框架
4 混合网络传输仿真
4.1 仿真参数设置实际广播电视网中,发送端节点一般都是视频服务器,它们提供基本的视频内容,必须保证数据的可靠性和稳定性,因此需要采用更为可靠的有线传输方式,可以通过Internet有线连接至基站即无线接入点;接收端节点我们采用移动终端,相对更能体现NGB混合网络的特点。在仿真过程中模拟实际传输网络应用情形,发送端节点与无线AP之间的链路抽象为一条2M频宽,1ms时延的有线链路;接收端节点与无线AP与之间的链路则为一条基于802.11n的2M带宽无线链路。在本次仿真中,根据实时流媒体传输的性质,在收发端附加的为两条UDP代理,分别为传输所需的视频流以及一条干扰流,网络的拓扑结构如图3所示。在上述网络中,发送节点的MyUDP代理即负载仿真所用的视频流,在传输过程中每一帧都被分为很多分组,每个分组的最大值是1000比特。在发送节点还有一个CBR流发生器,产生一条分组大小为1500比特,速率为200kbps的背景流,同样经过无线AP传至接收节点,作为干扰。图3仿真拓扑图
4.2 仿真流程本次仿真所用的测试视频序列采用分辨率为352×288 CIF的foreman标准序列,其帧速率为每秒30帧。编码器的配置文件设置OutFileMode输出选用RTP模式,测试编码帧数为50帧。本次仿真的基本流程如图4所示。图4 仿真流程
由于foreman标准序列为真实视频,若要在仿真网络中传输,必须对NS2 进行修改与扩展,添加视频传输仿真所必需的一些元素,比如头文件、代理等,才能使NS2能够识别相关的命令,从而顺利进行视频传输仿真。4.3 抽象视频流传输将编码配置文件encoder.cfg及标准序列foreman_cif.yuv放在同一仿真目录下,然后进入该目录,在命令窗口中输入 $./lencode.make。模型中的编码器开始将标准序列编码为视频压缩文件。经过一段时间编码完成后,在相同目录得到foreman_cif.264压缩文件。编码完成后,需要将.264压缩视频文件抽象解析为NS2能够识别的视频流格式才能够在仿真网络中进行传输。在同一目录下输入命令 $./parser.make config。这个解析器将编码后的压缩文件解析为实际传输需要的文件格式。解析完成后在同一目录得到foreman_cif.txt文件,其格式为<分组ID,时间戳,分组大小,分组类型>,如表1所示:表1 抽象视频流格式
分组ID | 时间戳 | 分组大小 | 分组类型 |
51 | 1.266667 | 979 | 2 |
52 | 1.333333 | 628 | 3 |
53 | 1.400000 | 489 | 3 |
54 | 1.466667 | 976 | 1 |
55 | 1.466667 | 1011 | 1 |
表2 发送端和接收端trace文件格式
时间戳 | 分组ID | udp分组序号 | ||
1.966667 | id | 23 | udp | 609 |
2.033333 | id | 24 | udp | 748 |
2.100000 | id | 25 | udp | 662 |
2.166667 | id | 26 | udp | 967 |
2.166667 | id | 27 | udp | 998 |
2.166667 | id | 28 | udp | 999 |
5 仿真数据采集及分析
标准视频序列经过编码产生视频压缩文件,并进过模型的分析器解析为仿真网络可以识别的文件格式后,输入命令 $ns.make video.tcl将抽象视频流注入仿真网络进行传输仿真。传输完成后,在同一目录生成out.nam,利用nam图形工具查看仿真所生成的场景,其中节点0为有线节点,节点1为基站无线AP,节点2为无线节点。节点1位于仿真场景的中央(200,200),节点0与节点1通过有线链路连接,节点2(100.06792,211.17614)通过无线链路连接至节点1,如图5所示:图5 仿真场景nam演示
修改Tcl脚本文件,分别设置video.tcl脚本中CBR背景干扰流的数据速率为200kbps和900kbps,在两种不同的网络环境中传输抽象视频流。传输完成后,输入命令$ ./errinsert.make foreman_cif_.264 distorted.264 sd_be rd_be来对比sd_be和rd_be两个trace文件,分析各自的丢包情况,得到结果为:图6 CBR速率为200kbps(左)及900kbps时丢包情况对比
经过对比传输前后两个trace文件,可以发现传输过程中两组的分组都发生丢包,当干扰越强,丢包越严重,导致最终的解码视频质量下降。但是,当干扰流带宽取值较为极端(几乎达到信道带宽一半)时,分组丢失情况并不非常严重,最终解码的视频序列依然较为清晰。峰值信噪比(PSNR)表示信号最大可能功率和影响它的精度的破坏性噪声功率的比值,定义为: 其中,MAXI是表示图像点颜色的最大数值,如果每个采样点用 8 位表示,那么就是 255。对于每点有RGB三个值的彩色图像来说峰值信噪比的定义类似,只是均方差是所有方差之和除以图像尺寸再除以3。图像压缩中典型的峰值信噪比值在30到 40dB 之间,这个数值越高越好。通过命令 $./psnr.make 352 288 420 foreman_cif.yuv foreman_cif_distorted.yuv可以利用模型中的PSNR计算器对比foreman_cif.yuv和foreman_cif_distorted.yuv视频序列,从而得出传输前后视频帧的峰值信噪比,格式为<帧ID,PSNR200kbps,PSNR900kbps>,如表3所示:表3 不同CBR速率时视频帧PSNR对比
帧ID | PSNR200kbps | PSNR900kbps |
17 | 35.68 | 27.53 |
18 | 35.48 | 27.22 |
……… | ||
38 | 37.23 | 37.23 |
39 | 37.01 | 37.00 |
40 | 37.53 | 37.52 |
图7 不同CBR速率时解码图像对比
以上结果表明,本次仿真符合实际NGB混合网络传输情景,能够抽象视频流从有线发送端到无线接收端的基本过程。对干扰流CBR的数据速率做出较大差异的调整后,仿真模型能够做出合理反馈,与理论分析的结果完全匹配。
评论 点击评论