NS2 trace

简介: 参考文献 http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Formats    http://hi.baidu.
参考文献

http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Formats   

http://hi.baidu.com/wienerlee/blog/item/f5e49210a8edadfbc2ce7912.html

NS2 Notebook: How to Display RTS/CTS Packet Type in NS2 Trace File

ns-2无线模拟Trace中的AGT, RTR, MAC含义

译注:本文描述的无线Trace格式已经有些陈旧,现在一般都是用新的无线Trace文件格式。

本文档介绍了NS2网络仿真器的多种Trace格式。这里的版本是基于NS2 2.1b9a的。

多种不同的Trace文件都含有一个字符或者缩写开始用来表明此行Trace的类型,后接着固定或者可变的Trace格式。下面的表格列出了固定和可变的Trace文件格式的不同:

  • 对于固定的Trace格式,表格中列出了所有Event表头下触发Trace的事件和Abbreviation 表头下触发Trace的事件。具体的格式列在了后面的两列中,每种元素的类型和值列在了“类型”和“值”的下面。有些事件有着多种Trace格式。
  • 对于可变的Trace格式,表格中列出了所有Event表头下触发Trace的事件和Abbreviation 表头下触发Trace的事件。最后的三列中列出了所有可能的标志、类型和其值,并位于相应的表头下面。

常规的Trace格式

这里的信息来自于"ThensManual" "Trace and Monitoring Support: TraceFileFormat"一章中。这个格式用于普通的有线操作中。trace行将开始于四个可能字符中的一个。

表中列出的更多的无线记录信息没有在Abbreviation 栏中,因为信息直接加在了普通无线trace格式中。

Event事件

Abbreviation简写

Type类型

Value值

Normal Event

常规事件

r: Receive接收

d: Drop丢弃

e: Error错误

+: Enqueue入队

-: Dequeue出队

%g %d %d %s %d %s %d %d.%d %d.%d %d %d

double

Time 时间

int

Source Node 源节点

int

Destination Node 目的节点

string

Packet Name 报文名

int

Packet Size 报文大小

string

Flags 标志位

int

Flow ID 流标记ID

int

Source Address源地址

int

Source Port 源端口

int

Destination Address 目的地址

int

Destination Port 目的端口

int

Sequence Number 序列号

int

Unique Packet ID 唯一报文标志ID

标志位具体如下表(如果标志没有设置的话将使用“-”)。每行从左到右都占一位。可从ns/trace/trace.cc中看到。

Value值

Meaning含义

C

ECN-echo

P

pri_ (一般认为没用)

-

A

Congestion Action

E

Congestion Experienced (CE)

F

Fast Start 快速启动

N

ECN-capable

SCTP-only

根据报文的不同类型,trace文件可能记录更多的信息:

Event事件

Type类型

Value值

TCP Trace

%d 0x%x %d %d

int

Ack Number

hexadecimal

Flags 标志位

int

Header Length 头长

int

Socket Address LengthSocket地址长度

卫星Satellite Trace

%.2f %.2f %.2f %.2f

double

Source Latitude 源纬度

double

Source Longitude 源经度

double

Destination Latitude 目的纬度

double

Destination Longitude 目的经度

无线Trace格式

本节中将包含多种无线的trace格式:

  • 旧的无线Trace格式
  • 新的无线Trace格式
  • AODV Trace格式
  • DSDV Trace格式
  • DSR Trace格式
  • TORA Trace格式
  • 移动节点移动和能量的Trace格式

旧的无线trace格式

这里的信息来自于"ThensManual" "Mobile Networking in ns: Trace Support"的章节和"trace/cmu-trace.cc"文件。无线的trace文件开始于四个字符中的一个,随后是一种或者两种不同的格式,根据是否记录移动节点的X和Y坐标而不同。

NS2中trace的原理

NS2中trace的原理其实很简单,就是有包经过的时候发到trace模块中一份,或者干脆从trace穿过,然后trace读取包的信息,用sprintf打印包的详细信息。打印的细节可以在format函数中看到,具体地在trace.{h,cc};cmu-trace.{h,cc}以及ns-trace.tcl和ns-cmutrace.tcl文件中可以看到。如mobile- node节点中的组成如图。

AgentTraces are marked with AGT,    //AGT  表示 agent,也就是业务层

RouterTrace with RTR and                //RTR  表示 route,也就是路由层

MacTrace with MAC.                          //MAC  表示 mac,  也就是接入层


  1     2                 3     4   5:6    7     8       9  [10/11/12/13]  14:16   [ 17  -18  19 20]

   s 3.000000000 _0_RTR  ---   0 AODV   48 [0  0  0  0]   -------  [0:255 -1:255 30  0]

   s 10.00000000 _0_AGT  ---   2 tcp    40 [0  0  0   0]  -------   [0:0   1:0  32  0]

   r 10.00000000 _0_RTR  ---   2 tcp   40  [0  0  0  0]  -------  [0:0     1:0 32  0]

   s 12.50000000 _0_RTR  ---   0 AODV   48 [0  0  0  0]  -------   [0:255 -1:25530  0]

 

1-20 是对这个无线Trace的标注,每条记录共有20栏,下面对各栏表示的意义进行说明:

(1)事件类型:

    s:分组的发送事件;

    r:分组的接收事件;

    d:分组的丢弃事件;

    f:分组的转发事件;

(2)事件产生的时间。

(3)处理该事件的节点ID。

(4)Trace种类:

    RTR:路由器Trace;

    AGT:代理Trace;

    MAC:MAC层Trace;

(5:6)分隔符。

(7)分组ID。

(8)分组类型。

(9)分组大小(字节)。

[10:13]有关MAC层的详细信息

(10)发送节点在无线信道上发送该分组所期望的时间值,用16进制表示。

(11)接收节点的MAC地址。

(12)发送节点的MAC地址。

(13)MAC层封装的分组类型。 0x800:IP分组,0x806:ARP分组

(14:16)分隔符。

(17)分组发送的源IP地址。节点号.端口号

(18)分组发送的目的IP地址。节点号.端口号

(19)分组的TTL值。

(20)源节点到目的节点的跳数。

 

首先在脚本中加入 trace file的操作

运行脚本,得到一个 NAM trace file 作为NAM的输入,及一个 trace file called "out.tr"

the trace format

为了分析CBR traffic jitter at receiver node (n3) ,计算收到每个cbr包的时间间隔

提取r 开头的包含“2 3 cbr” 的行 ,取第2列(time)及第11列(seq num)

#jitter.sh

cat wiredout.tr| grep " 2 3 cbr " | grep ^r  >rec.txt
awk '{print $2,  $11}' rec.txt>rec1.txt
awk -f jitter.awk rec1.txt>jitter.txt

其中的jitter.awk为如下所示:

BEGIN {
#程序初始化
  old_time=0;
  old_seq_no=0;
  i=0;
}
{
  time = $1;
  seq_no = $2;
#求出目前封包的序号和上次成功接收的序号差值
       dif=seq_no-old_seq_no;
#处理第一个接收封包
        if(dif==0)  
          dif=1;
#求出jitter
        jitter[i]=(time-old_time)/dif;
        seq[i]=seq_no;
              i=i+1;
        old_seq_no=seq_no;
        old_time=time;  
}
END {
  for (j=1; j <i ;j++)
    printf("%d \t %f \n",seq[j],jitter[j]);
}

把结果存入jitter.txt,用origin画图结果如下

 

 jitter.sh中的一些符号解释

1、正则表达式参见http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

^匹配你要用来查找的字符串的开头,$匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^/d{5,12}$。

2、Piping Using | Notation 

The |specifies that all stdout is to be typed as stdin into the next command

3、awk

http://www.gnu.org/software/gawk/manual/gawk.html

目录
相关文章
|
7天前
|
JavaScript 安全 IDE
TypeScript 类型体操:别让 `any` 毁了你的安全网!
TypeScript 类型体操:别让 `any` 毁了你的安全网!
|
14天前
|
存储 SQL 分布式计算
Apache Iceberg数据湖基础
Apache Iceberg 是新一代数据湖表格式,旨在解决传统数据湖(如 Hive)在事务性、并发控制和元数据管理上的不足。它支持 Spark、Flink、Trino 等多种计算引擎,提供 ACID 事务、模式演化、分区演化等核心特性,具备良好的云存储兼容性和高性能查询能力,适用于大规模结构化数据分析场景。
|
10天前
|
存储 自动驾驶 安全
USB‑C 式的工具联接:MCP 的模块化及通用标准探讨
本文探讨了 USB-C 接口与 MCP 模块化连接平台的结合及其标准化前景。USB-C 凭借高速传输、双向充电和正反插设计,已成为主流接口;而 MCP 通过模块化架构,提供灵活、可扩展的连接方案。两者融合不仅提升了设备互联的兼容性与效率,也为智能家居、移动办公、电动汽车等场景带来创新应用。未来,随着技术发展与标准统一,这一组合有望推动设备连接迈向更智能、通用的新时代。
60 27
USB‑C 式的工具联接:MCP 的模块化及通用标准探讨
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署通义千问 QwQ-32B 模型,阿里云 PAI 最佳实践
3月6日阿里云发布并开源了全新推理模型通义千问 QwQ-32B,在一系列权威基准测试中,千问QwQ-32B模型表现异常出色,几乎完全超越了OpenAI-o1-mini,性能比肩Deepseek-R1,且部署成本大幅降低。并集成了与智能体 Agent 相关的能力,够在使用工具的同时进行批判性思考,并根据环境反馈调整推理过程。阿里云人工智能平台 PAI-Model Gallery 现已经支持一键部署 QwQ-32B,本实践带您部署体验专属 QwQ-32B模型服务。
|
消息中间件 存储 监控
|
Kubernetes Cloud Native Linux
Helm Chart 多环境、多集群交付实践,透视资源拓扑和差异
在本文中,我们将介绍如何通过 KubeVela解决多集群环境下 Helm Chart 的部署问题。如果你手里没有多集群也不要紧,我们将介绍一种仅依赖于 Docker 或者 Linux 系统的轻量级部署方式,可以让你轻松的体验多集群功能。当然,KubeVela 也完全具备单集群的 Helm Chart 交付能力。
3870 51
Helm Chart 多环境、多集群交付实践,透视资源拓扑和差异
|
Linux 数据安全/隐私保护
centos8 免登陆 免密码 多用户命令行 启动 ,以及 界面免密
centos8 免登陆 免密码 多用户命令行 启动 ,以及 界面免密
401 0
|
前端开发 JavaScript
Vue中引入swiper插件报错:To install it, you can run: npm install --save swiper/css/swiper.css
Vue中引入swiper插件报错:To install it, you can run: npm install --save swiper/css/swiper.css
|
监控 物联网 机器人
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
|
存储 大数据 Apache
Apache Cassandra SSTable 存储格式详解
在 Cassandra 中,当达到一定条件触发 flush 的时候,表对应的 Memtable 中的数据会被写入到这张表对应的数据目录(通过 data_file_directories 参数配置)中,并生成一个新的 SSTable(Sorted Strings Table,这个概念是从 Google 的 BigTable 借用的)。
3267 0