本文是通过ns2对卫星系统进行模拟仿真
文章目录
前言
本文结合在课上学到的有关卫星网络,如:Iridium、Teledesic 的知识,使用实验1搭建的ns平台对其进行仿真模拟,并对产生的数据进行分析。
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验原理介绍
- 实验中设置了 5 条数据流进行对比,起点为北京,终点分别为上海、香港、悉尼、纽约和里约热内卢。为便于分析和表现实验效果,实验采用 CBR 作为数据源,并利用UDP 进行数据传输。
- 分析 trace 文件来对时延的变化和通信距离的关系,实际数据传输路径中卫星节点个数不同,也会造成端到端的时延不同。
二、实验过程
1、Iridium仿真
1.实验详细步骤
- 1.进入到实验10文件夹的Iridium文件中
- 2.输入命令
ns sat-Iridium.tcl
,会得到trace文件,如下图框选出的:
- 3.编写一个awk脚本,详细内容见下,并命名为
delay.awk
,放入Iridium
文件中(使awk脚本与trace文件在同一目录下即可)。
//delay.awk
BEGIN {
highest_packet_id=0;
}
{
action=$1;
time=$2;
from=$3;
to=$4;
type=$5;
size=$6;
flow_id=$8;
src=$9;
dst=$10;
seq_no=$11;
packet_id=$12;
if (packet_id > highest_packet_id)
highest_packet_id =packet_id;
if (start_time[packet_id]==0)
start_time[packet_id] =time;
if (flow_id ==0&&action !="d")
{
if(action=="r"&&to=="67") {
end_time[packet_id]=time;
} else{
end_time[packet_id]=-1;
}
}
}
END {
for (packet_id=0;packet_id <= highest_packet_id;packet_id++) {
start=start_time[packet_id];
end=end_time[packet_id];
delay=end-start;
if (start < end) printf( "%f %f\n",start,delay)
}
}
- 4.输入
awk -f delay.awk sat-Iridium.tr > delay.txt
进行分析,下面为命令的详细解释:
awk -f
delay.awk //步骤3编写的awk脚本
sat-Iridium.tr //步骤2得到的trace文件
> //表示重定向输出
delay.txt //输出文件为delay.txt
- 5.使用gunplot包,将步骤4得到的
delay.txt
中的结果进行直观展示,输入gnuplot
,得到如图结果:(若显示未安装,则按照提示安装即可)
在上图gnuplot>
后输入命令plot “delay.txt” using 1:2 w lp
即可得到下图结果:
2.实验结果分析
-
1)我们先来看
sat-Iridium.tr
文件:
一共16列,分别表示:
第 1 列:事件(r: Receive 接收;d: Drop 丢弃;e: Error 错误;+: Enqueue 入队;-: Dequeue 出队);
第 2 列:产生事件的时间;第 3 列:产生事件的源节点;
第 4 列:产生事件的目标节点;第 5 列:数据包类型;
第 6 列:数据包大小;第 7 列:标志位;第 8 列:流 ID;第 9 列:源节点:端口;
第 10 列:目标节点:端口;第 11 列:序列号;第 12 列:报文唯一标识;
第 13 列:源纬度;第 14 列:源经度;第 15 列:目标纬度;第 16 列:目标经度
-
2)再来看看awk脚本文件如何分析的:
①先是分别分析了5个场景:分别为北京到上海、香港、悉尼、纽约和里约热内卢
②又对各场景分别分析了其延迟、抖动、丢包率和吞吐量。
(注意,实验使用的awk脚本主要是对延迟进行了分析)
-
3)最后看看
delay.txt
文件:
一行有2列,分别表示:通信距离和延迟大小
3. 实验结论
综上所述,并结合最后的折线图,得到:在Iridium卫星通信系统中,时延大致保持在0.01——0.04之间,某些特定区间达到0.13。因此我认为:端与端之间的通信距离,在一定范围内,对卫星通信的时延的影响是一致的,,而在某些固定距离上会对其产生较大影响。
2、Teledesic仿真
1.实验详细步骤
- 1.进入到实验10文件夹的Teledesic文件中
- 2.输入命令
ns sat-teledesic.tcl
,会得到trace文件,如下图框选出的:
- 3.编写一个awk脚本,详细内容见下,并命名为
delay.awk
,放入Iridium
文件中(使awk脚本与trace文件在同一目录下即可)。
//delay.awk
BEGIN {
highest_packet_id=0;
}
{
action=$1;
time=$2;
from=$3;
to=$4;
type=$5;
size=$6;
flow_id=$8;
src=$9;
dst=$10;
seq_no=$11;
packet_id=$12;
if (packet_id > highest_packet_id)
highest_packet_id =packet_id;
if (start_time[packet_id]==0)
start_time[packet_id] =time;
if (flow_id ==0&&action !="d")
{
if(action=="r"&&to=="67") {
end_time[packet_id]=time;
} else{
end_time[packet_id]=-1;
}
}
}
END {
for (packet_id=0;packet_id <= highest_packet_id;packet_id++) {
start=start_time[packet_id];
end=end_time[packet_id];
delay=end-start;
if (start < end) printf( "%f %f\n",start,delay)
}
}
- 4.输入
awk -f delay.awk sat-Iridium.tr > delay.txt
进行分析,下面为命令的详细解释:
awk -f
delay.awk //步骤3编写的awk脚本
sat-Iridium.tr //步骤2得到的trace文件
> //表示重定向输出
delay.txt //输出文件为delay.txt
得到如图结果:
- 5.使用gunplot包,将步骤4得到的
delay.txt
中的结果进行直观展示,输入gnuplot
,得到如图结果:
在上图gnuplot>
后输入命令plot “delay.txt” using 1:2 w lp
即可得到下图结果:
2.实验结果分析
-
1)我们先来看
sat-teledesic.tr
文件:
一共16列,分别表示:
第 1 列:事件(r: Receive 接收;d: Drop 丢弃;e: Error 错误;+: Enqueue 入队;-: Dequeue 出队);
第 2 列:产生事件的时间;第 3 列:产生事件的源节点;
第 4 列:产生事件的目标节点;第 5 列:数据包类型;
第 6 列:数据包大小;第 7 列:标志位;第 8 列:流 ID;第 9 列:源节点:端口;
第 10 列:目标节点:端口;第 11 列:序列号;第 12 列:报文唯一标识;
第 13 列:源纬度;第 14 列:源经度;第 15 列:目标纬度;第 16 列:目标经度
-
2)再来看看awk脚本文件如何分析的:
①先是分别分析了5个场景:分别为北京到上海、香港、悉尼、纽约和里约热内卢
②又对各场景分别分析了其延迟、抖动、丢包率和吞吐量。
(注意,实验使用的awk脚本主要是对延迟进行了分析)
-
3)最后看看
delay.txt
文件:
一行有2列,分别表示:通信距离和延迟大小
3. 实验结论
通过上述分析,并结合最后的折线图,得到:在Teledesic卫星通信系统中,时延大致保持在0.0125——0.0325之间,某些特定区间达到0.04。通过比对发现,两个卫星系统中,Teledesic的时延小,但不够稳定。
总结
通过对Iridium卫星系统通信与Teledesic卫星系统通信的仿真模拟,并对比最后的仿真结果,不难发现,在端与端一致的情况下,在时延方面,Teledesic卫星系统明显小于Iridium卫星系统,但在稳定性上,Iridium卫星系统优于Teledesic卫星系统。
在实验过程中,难免遇到各种各样的问题,这个时候,我们一定要冷静下来,不要放弃,再多分析一下,不要一遇到问题就全部删除、全部格式化,重头再来,这样会浪费大量时间。(ง ••)ง (ง ••)ง