1、常用工具以及结果分析 文本处理工具 gawk 丢包 /吞吐量 /延迟 命令格式gawk f delay.awk output.tr 画图 ,gnuplot, xgraph命令格式如下,示例演示% gnuplot delay.plot分析 trace文件Trace文件片断: r 1.497941 2 3 cbr 210 - 2 1.0 3.1 764 828 r 1.49852 1 2 cbr 210 - 2 1.0 3.1 826 916 + 1.49852 2 3 cbr 210 - 2 1.0 3.1 826 916 d 1.49852 2 3 cbr 210 - 2 1.0 3.1 82
2、6 916 r 1.498929 2 3 cbr 210 - 2 1.0 3.1 765 829 + 1.49944 1 2 cbr 210 - 2 1.0 3.1 833 927 - 1.49944 1 2 cbr 210 - 2 1.0 3.1 833 927 r 1.499918 2 3 cbr 210 - 2 1.0 3.1 766 830 r 1.5002 1 2 cbr 210 - 2 1.0 3.1 827 917 + 1.5002 2 3 cbr 210 - 2 1.0 3.1 827 917 d 1.5002 2 3 cbr 210 - 2 1.0 3.1 827 917 -
3、 1.500529 2 3 cbr 210 - 2 1.0 3.1 773 841 + 1.50112 1 2 cbr 210 - 2 1.0 3.1 834 928 - 1.50112 1 2 cbr 210 - 2 1.0 3.1 834 928 - 1.501518 2 3 cbr 210 - 2 1.0 3.1 774 842TRACE文件Trace文件分析:r 1.497941 2 3 cbr 210 - 2 1.0 3.1 764 828事件类型:r: 到达节点d: 丢弃+:入队-:出队发生时间起始节点达到节点包类型包大小 包所属应用的 fid 发送源 接收方 分组序号分组 IDa
4、wk工具 文本处理工具,可直接在 命令行 中进行处理; 程序语言编程,可将多条命令写成 脚本文件 ; 语法与 C语言类似; 自身语法特点: 变量不需定义; 从指定文件中自动循环读取每一行数据,直到文件结束; 自动将每一行数据分割成多个域(字段),自动更新内建参数的值($n), 特别的, “ $i”(i=0) 表示当前读取行中第 i+1个域, $0表示整行数据 ; 比如:自动读取 trace文件每一行数据,并将各个字段值分配给变量( 12个字段)action=$1;time=$2;from=$3;to=$4;type = $5;pktsize=$6;flow_id=$8;node_1_addre
5、ss=$9;node_2_address=$10;seq_no=$11;packet_id=$12;r 1.497941 2 3 cbr 210 - 2 1.0 3.1 764 828Gawk程序的框架脚本文件结构:BEGIN处理前准备语句在此 处理中语句在此 END处理后语句在此 BEGIN 和 END模块可省计算机学院 -数据库中心SeaSonGawk程序的框架 BEGIN 模块:初始化,通常用来给变量赋初值;如BEGIN pktDrops = 0; numPkt=0; #分号可省略用来在处理开始前给两个变量赋初始值 . END 模块:扫尾工作,通常在文本文件读取完以后所作的工作,如END
6、 if(number=1000) print number; # printf(“number=%d”,number)Gawk程序的框架 BEGIN AgtNum = 0; if ($1 = “s“ END printf(“ Num of AGT pkts: %d n“, AgtNum); 最后保存文 agtnum.awk文件计算机学院 -数据库中心SeaSonr 1.497941 2 3 cbr 210 - 2 1.0 3.1 764 828awk工具 例: Loss统计 CBR从节点 n1发出的包总数和丢包总数,计算丢包率; 发包总数: if(from=1 丢包总数:if(flow_id=2 丢包率: pktDrops / numpkt;BEGIN pktDrops=0;numPkt=0;action=$1;time=$2;from=$3;to=$4;type = $5;pktsize=$6;flow_id=$8;node_1_address=$9;node_2_address=$10;seq_no=$11;packet_id=$12; #发包总数: if(from=1 #丢包总数:if(flow_id=2 ENDprintf(“loss rate=%.2fn”, pktDrops/ numPkt);