链路加倍与带宽加倍的排队性能分析
一、NS的安装
1.首先在电脑上安装Ubuntu1
2.04,然后对它作一些设置:如系统连接到网络,设置linux软件包的更新源,语言和输入法的设置等。
2.然后进行安装NS的准备工作,因为在Ubuntu上运行NS,有些软件是必须要用到的,必须先行安装(在终端输入命令安装)。
(1)编译器gcc make:sudo apt-get install build-essential
(2)tk tcl的库文件:sudo apt-get install tcl8.4
sudo apt-get install tcl8.4-dev
sudo apt-get install tk8.4
sudo apt-get install tk8.4-dev
(3)与nam相关的库文件:sudo apt-get install libxmu-dev
3.NS的安装步骤:
(1)下载NS安装包ns2-allinone-2.35.tar.gz,并放在安装路径的目录文件夹下/home/soft/fanyuanwei。
(2)进入该目录:输入命令cd /home/soft/fanyuanwei
(3)命令sudo tar-vxzf ns2-allinone-2.35.tar.gz 解压NS2到当前目录。(4)cd /home/soft/fanyuanwei/ ns2-allinone-2.35 进入到解压后的文件夹,然后安装:./install
(5)安装完成后还要设置环境变量。在主文件夹下,直接用Ctrl+H显示隐藏文件,然后找到 .bashrc 文件,打开并在最后加上以下3条命令:export
PATH=$PATH:/home/fanyuanwei/soft/ns-allinone-2.35/bin:/home/fany uanwei/soft/ns-allinone-2.35/tcl8.5.10/unix:/home/fanyuanwei/soft/ns-allinone-2.35/tk8.5.10/unix
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/fanyuanwei/ soft/ns-allinone-2.35/otcl-1.14:/home/fanyuanwei/soft/ns-allinone-2.35 /lib
export
TCL_LIBRARY=$/home/fanyuanwei/soft/ns-allinone-2.35/tcl8.5.10/libr ary
之后保存退出。
(6)测试:在终端输入ns。屏幕上出现%,说明安装成功了。
二、构造模型并仿真网络吞吐量与时间的关系
(1)我们确定基本模型是A主机经过节点B向节点C发送TCP包,AB和BC段都是1M的带宽。带宽加倍就是将AB和BC变成2M的,而链路加倍就是增加一个节点D,从而增加AD和DC段,A通过B和D节点向C发送数据,并且AB和BC,AD和DC的带宽都是1M的。
(2)编写带宽加倍的脚本bandw.tcl如下
set ns [new Simulator] ;#产生一个模拟的对象
#定义数据流颜色
$ns color 1 Red ;#1为红色
#开启Trace跟踪文件,记录分组传送的过程
set tracefile [open bandwidth.tr w]
$ns trace-all $tracefile
#开启NAM显示文件
set namfile [open bandwidth.nam w]
$ns namtrace-all $namfile
#定义结束过程,关闭Trace文件和NAM显示文件,模拟结束时会进行调用
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
#以背景执行的方式去执行NAM
exec nam bandwidth.nam &
exit 0
}
#定义节点n0~n2
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
#定义节点间的双向链路(包括带宽、延时和队列的类型)
$ns duplex-link $n0 $n1 4Mb 10ms DropTail
$ns duplex-link $n1 $n2 4Mb 10ms DropTail
#建立一个TCP连接
set tcp [new Agent/TCP] ;#建立一个TCP发送代理$tcp set class_ 2
$ns attach-agent $n0 $tcp ;#绑定TCP发送代理到节点n0 set sink [new Agent/TCPSink] ;#建立一个TCP接收代理$ns attach-agent $n2 $sink ;#绑定TCP接收代理到节点n2 $ns connect $tcp $sink ;#连接TCP发送代理和接收代理$tcp set fid_ 1
#在TCP连接上建立FTP流
set ftp [new Application/FTP] ;#建立一个FTP应用
$ftp attach-agent $tcp ;#将FTP流应用绑定到TCP发送代理$ftp set type_ FTP
#设置代理的启动和停止时间
$ns at 0.5 "$ftp start" ;#设定ftp流在0.5s开始
$ns at 4.5 "$ftp stop" ;#设定ftp流在4.5s结束
#在模拟结束时调用结束过程
$ns at 5.0 "finish"
#执行模拟
$ns run
编写链路加倍的脚本linkw.tcl如下
set ns [new Simulator] ;#产生一个仿真的对象
#定义数据流颜色
$ns color 1 Red ;#1为红色
#开启Trace跟踪文件,记录分组传送的过程
set tracefile [open link.tr w]
$ns trace-all $tracefile
#开启NAM显示文件
set namfile [open link.nam w]
$ns namtrace-all $namfile
#定义结束过程,关闭Trace文件和NAM显示文件,仿真结束时会进行调用
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
#以背景执行的方式去执行NAM
exec nam link.nam &
exit 0
}
$ns rtproto DV ;#告知simulator使用动态路由
Node set multiPath_ 1 ;#simulator中所有新的节点均使用多径#定义节点n0~n3
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#定义节点间的双向链路(包括带宽、延时和队列的类型)
$ns duplex-link $n0 $n1 2Mb 10ms DropTail
$ns duplex-link $n0 $n3 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n3 $n2 2Mb 10ms DropTail
#建立一个TCP连接
set tcp [new Agent/TCP] ;#建立一个TCP发送代理
$tcp set class_ 2
$ns attach-agent $n0 $tcp ;#绑定TCP发送代理到节点n0 set sink [new Agent/TCPSink] ;#建立一个TCP接收代理
$ns attach-agent $n2 $sink ;#绑定TCP接收代理到节点n2 $ns connect $tcp $sink ;#连接TCP发送代理和接收代理$tcp set fid_ 1
#在TCP连接上建立FTP流
set ftp [new Application/FTP] ;#建立一个FTP应用
$ftp attach-agent $tcp ;#将FTP流应用绑定到TCP发送代理
$ftp set type_ FTP
#设置代理的启动和停止时间
$ns at 0.5 "$ftp start" ;#设定ftp流在0.5s开始
$ns at 4.5 "$ftp stop" ;#设定ftp流在4.5s结束
#在模拟结束时调用结束过程
$ns at 5.0 "finish"
#执行模拟
$ns run
在终端键入两条命令:ns bandwith.tcl 和ns linkwidth.tcl,之后会生成nam文件和trace文件。其中nam文件的图形如下:
带宽加倍的nam动画
链路加倍的nam动画
(3)编写gawk程序,分析trace文件
trace文件记录了仿真过程中事件的类型,事件发生的时间,分组的大小类型等等。通过编写gawk程序来分析trace文件,从而分析网络的性能。执行以上两条命令之后会生成bandwith.tr和linkwidth.tr ,这里我们编写了throught.awk来分析它们,程序如下:
BEGIN {
init=0;
i=0;
}
{
action = $1;
time = $2;
node_1 = $3;
node_2 = $4;
src = $5;
pktsize = $6;
flow_id = $8;
node_1_address = $9;
node_2_address = $10;
seq_no = $11;
packet_id = $12;
if(action=="r" && ((node_1==1 && node_2==2)||(node_1==3 && node_2==2)) && flow_id==1) {
pkt_byte_sum[i+1]=pkt_byte_sum[i]+ pktsize;
if(init==0) {
start_time = time;
init = 1;
}
end_time[i] = time;
i = i+1;
}
}
END {
#为了画图好看,把第一笔记录的throughput设为零,以表示传输开始printf("%.2f\t%.2f\n", end_time[0], 0);
for(j=1 ; j
{
th = pkt_byte_sum[j] / (end_time[j] - start_time)*8/1000;
printf("%.2f\t%.2f\n", end_time[j], th);
}
#为了画图好看,把第后一笔记录的throughput再设为零,以表示传输结束
printf("%.2f\t%.2f\n", end_time[i-1], 0);
}
(3)利用gnuplot绘图
通过命令gawk -f throughput.awk bandwidth.tr > band_th 将带宽加倍的分析结果存储到文件band_th 中。
通过命令gawk -f throughput.awk link.tr > flink_th将链路加倍的分析结果存储到文件flink_th中。
我们因此得到了吞吐量与时间的关系的相关数据。在终端中输入gnuplot,启动gnuplot绘图环境。为了保证绘制的图片以~.jpg格式的图片文件形式输出,先键入两条命令:
set term jpeg
#设置输出图片的格式
set output 'band_th.jpg'
然后用以下命令将两条曲线画在一个坐标图中。
plot “band_th” w l , plot “link_th” w l
绘图如下:
网络的吞吐量与时间关系图
由Trace文件的分析结果,我们可以看出,带宽加倍链路的网络吞吐量比链路加倍链路的网络吞吐量大。
三、仿真网络吞吐量与数据包大小的关系
以上是在TCP下仿真的,我们还使用同样的网络模型在UDP下分析了网络的吞吐量与UDP包大小的关系。
(1)编写带宽加倍的Tcl脚本程序bandw.tcl如下
#全局变量opt(rate)和过程getopt
set opt(size) 0 ;#变量opt(rate)保存数据速率值
proc getopt {argc argv} { ;#过程getopt获取从命令行传递过来的数据值
global opt
set opt(size) [lindex $argv 0]
}
#建立一个模拟对象
set ns [new Simulator]
#定义不同数据流的颜色
$ns color 1 Blue
$ns color 2 Red
#开启Trace跟踪文件,记录分组传递的过程
set tracefd [open bandw.tr w]
$ns trace-all $tracefd
#开启NAM显示文件
set nf [open bandw.nam w]
$ns namtrace-all $nf
#定义结束过程,关闭Trace文件和NAM文件,模拟结束是进行调用proc finish {} {
global ns tracefd nf
$ns flush-trace
close $tracefd
close $nf
exit 0
}
#定义节点n0-n2
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
#定义节点间的双向链路(包括带宽,延时和队列的类型)
$ns duplex-link $n0 $n1 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
#调用过程getopt获取数据发送的速率
getopt $argc $argv
puts "opt(size)=$opt(size)"
#建立一个UDP连接
set udp [new Agent/UDP]
$ns attach-agent $n0 $udp
set null [new Agent/Null]
$ns attach-agent $n2 $null
$ns connect $udp $null
$udp set fid_ 2
#在UDP连接代理上建立CBR流
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ $opt(size)B ;#$opt(size) 设定包的大小$cbr set rate_ 1900Kb
#设置代理的启动和停止时间
$ns at 0.5 "$cbr start"
$ns at 4.5 "$cbr stop"
#模拟结束是调用结束过程
$ns at 5.0 "finish"
puts "Start Simulation..."
#执行模拟
$ns run
链路加倍的Tcl脚本程序linkw.tcl如下
#全局变量opt(rate)和过程getopt
set opt(size) 0 ;#变量opt(rate)保存数据速率值
proc getopt {argc argv} { ;#过程getopt获取从命令行传递过来的数据值global opt
set opt(size) [lindex $argv 0]
}
#建立一个模拟对象
set ns [new Simulator]
#定义不同数据流的颜色
$ns color 2 Red
#开启Trace跟踪文件,记录分组传递的过程
set tracefd [open linkw.tr w]
$ns trace-all $tracefd
#开启NAM显示文件
set nf [open linkw.nam w]
$ns namtrace-all $nf
#定义结束过程,关闭Trace文件和NAM文件,模拟结束是进行调用proc finish {} {
global ns tracefd nf
$ns flush-trace
close $tracefd
close $nf
exit 0
}
$ns rtproto DV ;#告知simulator使用动态路由
Node set multiPath_ 1 ;#simulator中所有新的节点均使用多径#定义节点n0-n2
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#定义节点间的双向链路(包括带宽、延时和队列的类型)
$ns duplex-link $n0 $n1 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n0 $n3 1Mb 10ms DropTail
$ns duplex-link $n3 $n2 1Mb 10ms DropTail
#调用过程getopt获取数据发送的速率
getopt $argc $argv
puts "opt(size)=$opt(size)"
#建立一个UDP连接
set udp [new Agent/UDP]
$ns attach-agent $n0 $udp
set null [new Agent/Null]
$ns attach-agent $n2 $null
$ns connect $udp $null
$udp set fid_ 2
#在UDP连接代理上建立CBR流
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
#$cbr set type_ CBR
$cbr set packet_size_ $opt(size) ;#设定包的大小
$cbr set rate_ 1900Kb ;#将速率设置为1900 #$cbr set random_ false
#设置代理的启动和停止时间
$ns at 0.5 "$cbr start"
$ns at 4.5 "$cbr stop"
#模拟结束是调用结束过程
$ns at 5.0 "finish"
puts "Start Simulation..."
#执行模拟
$ns run
(2)编写gawk程序,分析trace文件
运行以上两个Tcl脚本会生成两个trace文件bandw.tr和linkw.tr 用throught.awk来分析以上脚本生成的trace文件,程序如下:BEGIN {
init=0;
i=0;
}
{
event = $1;
time = $2;
from_node = $3;
to_node = $4;
pkt_type = $5;
pkt_size = $6;
flag = $7;
uid = $12;
if(event=="r" && to_node==2 && pkt_type=="cbr") {
pkt_byte_sum[i+1]=pkt_byte_sum[i]+(pkt_size-20);
if(init==0){
start_time=time;
init=1;
}
end_time[i]=time;
i++;
}
}
END {
th=8*pkt_byte_sum[i-1]/(end_time[i-1]-start_time)/1000;
printf("%d %.2f\n",rate, th);
}
(3)编写shell脚本程序来控制包的大小变化
通过shell脚本程序get_performb和get_performl,我们可以改变UDP包的大小,从而观察出在不同的包大小下的网络的吞吐量,这样就避免了手动重复改变包大小这一参数,程序如下:
shell脚本程序get_performb
#!/bin/sh
i=500
while [ "$i" -le 2500 ];
do
ns bandw.tcl $i
gawk -f throught.awk size=$i bandw.tr >>throught_b ;#存放数据i=$(($i+50))
done
exit 0
shell脚本程序get_performl
#!/bin/sh
i=500
while [ "$i" -le 2500 ]; do
ns linkw.tcl $i
gawk -f throught.awk size=$i linkw.tr >>throught_l ;#存放数据i=$(($i+50))
done
exit 0
从程序可以看出包大小的起始值是500B,步长为50B,终止点是2500B。在终端执行./get_performb可以分析bandw.tr,分析的数据存放在throught_b中;同理执行./get_performl可以分析bandw.tr,分析的数据存放在throught_l中。然后我们就可以利用throught_b和throught_l中的数据进行绘图了。
(4)绘图
绘图程序用gnuplot工具绘图,在终端键入gnuplot,启动gnuplot 绘图环境,为了将图片以jpg格式输出,我们有如下程序:
gnuplot> set term jpeg
#设置图片输出的格式
gnuplot> set output "throught.jpg"
gnuplot> set xlabe 'packetsize'
#设置图片的x和y轴的含义
gnuplot> set ylabe 'throughput'
gnuplot> plot "throught_b" w l,"throught_l" w l
#绘图
绘图如下:
网络的吞吐量与UDP包大小的关系图
从图中可以看出UDP包大小在1000B以下或在1850B以上时,两网络的吞吐两基本相同,但UDP包的大小超过1000B时,链路加倍网络的吞吐量急剧下降。并且在1000B到1850B之间带宽加倍的吞吐量一直高于链路加倍的吞吐量。
综上分析了网络的吞吐量随时间的变化以及随包大小的变化,我们可以看出带宽加倍的吞吐量优于链路加倍的吞吐量。
南邮广播电视工程数字视频非线性编辑制作课 程设计实验报告精编 W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】
通信与信息工程学院 2016 / 2017 学年第一学期 课程设计实验报告 模块名称数字视频非线性编辑制作 专业广播电视工程 学生班级 B130114 学生学号 学生姓名陈超 指导教师姚锡林 日期: 2016 年 11 月 21 日 摘要 本次课程设计利用软件premiere进行数字视频非线性编辑制作。本文首先就本次实验主题归纳总结电视节目制作一般流程方法,接着对此次课程设计主要软件工具进行系统介绍,主要涉及实验相关借本操作的详细阐述;接下来两大章节部分先从取材、构思角度详细分析此次课程设计所做的主题内容与规划,并以此为指导再从具体操作上分步骤、多角度实现视频序列的制作;最后对本次课程设计的体味与收获进行思考。 此次作品《再次出发》电影鉴赏是将导演约翰卡尼的一部经典音乐影视作品利用premiere软件,在制作的过程中添加了转场特效,关键帧,字幕,音频等功能,并运用多种素材,重新删减编辑,形成一部情节连贯,内容完整、主题明确的电影鉴赏短片。短片的片长时间为9分40秒,大小为720*576,AVI格式,PAL制式(48Khz)。
关键词:数字视频非线性编辑制作;premiere;视频制作;
目录 第一章电视节目制作的一般流程与方法 (1) 1.1 电视节目制作一般流程 (1) 1.1.1 前期制作流程 (1) 1.1.2 后期制作工作流程 (2) 1.2 电视节目制作的一般方法 (2) 1.2.1 ENG方式 (2) 1.2.2 EFP方式 (2) 1.2.3 ESP方式 (3) 第二章 Premiere的功能介绍及操作方法 (4) 2.1 Premiere概述 (4) 2.1.1 概述 (4) 2.1.2 基本操作界面 (4) 2.2 Premiere的基本操作 (5) 2.2.1 新建项目 (5) 2.2.2 新建序列 (6)
《操作系统教程》南邮正式版 习题解答 第三章进程管理与调度习题 1、什么是多道程序设计?多道程序设计利用了系统与外围设备的并行工作能力,从而提高工作效率,具体表现在哪些方面? 答: 让多个计算问题同时装入一个计算机系统的主存储器并行执行,这种设计技术称“ 多道程序设计”,这种计算机系统称“多道程序设计系统” 或简称“多道系统”。在多道程序设计的系统中,主存储器中同时存放了多个作业的程序。为避免相互干扰,必须提供必要的手段使得在主存储器中的各道程序只能访问自己的区域。 提高工作效率,具体表现在: ?提高了处理器的利用率; ?充分利用外围设备资源:计算机系统配置多种外围设备,采用多道程序设计并行工作时,可以将使用不同设备的程序搭配在一起同时装入主存储器,使得系统中各外围设备经常处于忙碌状态,系统资源被充分利用; ?发挥了处理器与外围设备以及外围设备之间的并行工作能力; 从总体上说,采用多道程序设计技术后,可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率。 2、请描述进程的定义和属性。 答: 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配、调度和保护的独立单位。 进程的属性有:结构性?共享性?动态性?独立性?制约性?并发性 3、请描述进程与程序的区别及关系。 答:
程序是静止的,进程是动态的。进程包括程序和程序处理的对象(数据集),进程能得到程序处理的结果。进程和程序并非一一对应的,一个程序运行在不同的数据集上就构成了不同的进程。通常把进程分为“系统进程”和“用户进程”两大类,把完成操作系统功能的进程称为系统进程,而完成用户功能的进程则称为用户进程。 4、进程有哪三种基本状态?三种进程状态如何变化? 答: 通常,根据进程执行过程中不同时刻的状态,可归纳为三种基本状态: ·等待态:等待某个事件的完成; ·就绪态:等待系统分配处理器以便运行; ·运行态:占有处理器正在运行。 进程在执行中状态会不断地改变,每个进程在任何时刻总是处于上述三种基本状态的某一种基本状态,进程状态之间转换关系: 运行态→等待态往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。等待态→就绪态则是等待的条件已满足,只需分配到处理器后就能运行。 运行态→就绪态不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。 就绪态→运行态系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态。 5、进程控制块是什么,有何作用?通常进程控制块包含哪些信息? 答: 进程控制块(Process Control Block,简称PCB),是操作系统为进程分配的用于标志进程,记录各进程执行情况的。进程控制块是进程存在的标志,它记录了进程从创建到消亡动态变化的状况,进程队列实际也是进程控制块的链接。操作系统利用进程控制块对进程进行控制和管理。 ·标志信息含唯一的进程名 ·说明信息有进程状态、等待原因、进程程序存放位置和进程数据存放位置 ·现场信息包括通用、控制和程序状态字寄存器的内容 ·管理信息存放程序优先数和队列指针 进程控制块的作用有:
实验报告一 实验名称:SQL语言的应用 指导教师:茅苏 实验类型:验证 实验学时:4*2 实验时间:2012年9月28日 一、实验目的和要求 练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器; 掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。 二、实验环境(实验设备) 硬件:个人计算机; 软件:MS SQL SERVER环境。 三、实验原理及内容 1.用SQL SERVER的企业管理器创建数据库 数据库名称:10001927db 操作步骤:1、单击左侧的SQL Server组 右键 新建SQL Server注册 下一步 在左侧的“可用的服务器”栏选中或输入CC-PC,点击中间 的添加,将CC-PC添加到右侧的“添加的服务器”栏 下一步 选中“登录时使用Windows身份认证”,然后点击下一步 选中“在 现有SQL Server组中添加SQL Server”,然后点击下一步 完 成 关闭。 2、单击左侧的SQL Server组下面可用的已注册子组里面的数据库→ 右键→新建数据库→输入数据库名称10001927db 2.用查询分析器在上一步创建的数据库中完成以下功能 (1)进入查询分析器并选择操作的数据库 操作步骤:1、开始→程序→MS SQL Server→查询分析器 确认SQL Server(s)为CC-PC 选择Windows身份认证 点击确定 2、在工具栏的下拉链表种选择名为10001927db的数据库。 (2)建立基本表:学生、课程和选课,写出DDL语句。 要求:需为每张表建立主键,其他完整性约束可自己添加。
1.(1) [1 2 3 4;0 2 -1 1;1 -1 2 5;]+(1/2).*([2 1 4 10;0 -1 2 0;0 2 3 -2]) 2. A=[3 0 1;-1 2 1;3 4 2],B=[1 0 2;-1 1 1;2 1 1] X=(B+2*A)/2 3. A=[-4 -2 0 2 4;-3 -1 1 3 5] abs(A)>3 % 4. A=[-2 3 2 4;1 -2 3 2;3 2 3 4;0 4 -2 5] det(A),eig(A),rank(A),inv(A) 求计算机高手用matlab解决。 >> A=[-2,3,2,4;1,-2,3,2;3,2,3,4;0,4,-2,5] 求|A| >> abs(A) ans = ( 2 3 2 4 1 2 3 2 3 2 3 4 0 4 2 5 求r(A) >> rank(A) ans =
4 求A-1 《 >> A-1 ans = -3 2 1 3 0 -3 2 1 2 1 2 3 -1 3 -3 4 求特征值、特征向量 >> [V,D]=eig(A) %返回矩阵A的特征值矩阵D 与特征向量矩阵V , V = - + + - - + - + - + - + D = { + 0 0 0 0 - 0 0 0 0 + 0 0 0 0 - 将A的第2行与第3列联成一行赋给b >> b=[A(2,:),A(:,3)'] b = 《 1 - 2 3 2 2 3 3 -2