zoukankan      html  css  js  c++  java
  • 基于NS2的差分服务网络测试(含awk分析代码)

    今天根据柯老师的书,实验了一个非常简单的差分服务网络的例子.

    这就是网络结构,很简单,结点0和1产生CBR流量2和3是边缘服务器,4是核心结点,5是目的结点.

    流程是这样的:首先数据流进入边缘路由器,这时被根据它的速率被分类,这里选用TSW3CM方法,分为绿色,黄色,红色三类来标记数据包,对应不同的丢弃概率.概率计算具体跟设置的CIR和PIR有关,队里管理方式则是选择相匹配的WRED,这样在发生拥塞时就能根据不同的概率选择性丢包数据包了.要说下队列管理方面是建立了1个物理队列,和3个虚拟队列,对应之前3种不同丢弃概率的数据流,实际是只有一个物理队列来存储的.

    之后又试着用awk和gnuplot来对tr文件进行简单的分析,例如吞吐率,延迟,丢包率等.结果会一一贴出,但是感觉有点奇怪,丢包率是0,一个包都没丢...吞吐率稳定的一笔,在4000kbps,延迟也很低,可能是网络太简单了,看不出QOS的效果,也没法进行什么改进,准备开始设计一个稍微大型点的网络,至少50个结点把...

    trace文件分析代码和结果:

    丢包率:

     1 BEGIN{
     2   s1=0;
     3   s2=0;
     4   d1=0;
     5   d2=0;
     6 }
     7 {
     8   action = $1;
     9   time = $2;
    10   from = $3;
    11   to = $4;
    12   type = $5;
    13   pktsize = $6;
    14   flow_id = $8;
    15   src = $9;
    16   dst = $10;
    17   seq_no = $11;
    18   packet_id = $12;
    19   
    20   if(from==0 && action=="+"){
    21   s1++;
    22   }else if (from==1 && action=="+"){
    23   s2++;
    24   }
    25   
    26   if(flow_id==1&&action=="d"){
    27    d1++;
    28   }else if(flow_id==2&&action=="d"){
    29   d2++;
    30   }
    31   }
    32   END{
    33   printf("结点1发送:%d  结点2发送:%d  数据流1丢失:%d   数据流2丢失:%d
    ",s1,s2,d1,d2);
    34   }
    丢包率awk代码

    延迟部分分析代码和结果截图:

     1 BEGIN{
     2    highest_packet_id = 0;
     3 }
     4 {
     5   action = $1;
     6   time = $2;
     7   from = $3;
     8   to = $4;
     9   type = $5;
    10   pktsize = $6;
    11   flow_id = $8;
    12   src = $9;
    13   dst = $10;
    14   seq_no = $11;
    15   packet_id = $12;
    16   
    17   if (packet_id>highest_packet_id)
    18    highest_packet_id = packet_id;  
    19    
    20   if (start_time[packet_id]==0){
    21     pkt_seqno[packet_id]=seq_no;
    22     start_time[packet_id]=time;
    23   }
    24   
    25   if(flow_id==1&&action!="d"){
    26        if(action=="r"){
    27         end_time[packet_id]=time;
    28        }
    29   } else{
    30   end_time[packet_id]=-1;
    31   }
    32   }
    33   END{
    34   for(packet_id=0;packet_id<=highest_packet_id;packet_id++){
    35     start=start_time[packet_id];
    36     end=end_time[packet_id];
    37     packet_duration=end-start;
    38     if(start<end)
    39     printf("%f %f
    ",start,packet_duration);
    40   }
    41   }
    延迟awk代码

    吞吐率部分代码和截图:

     1 BEGIN{
     2  init=0;
     3  i=0;
     4 }
     5 {
     6   action=$1;
     7   time=$2;
     8   from = $3;
     9   to = $4;
    10   type = $5;
    11   pktsize = $6;
    12   flow_id = $8;
    13   src = $9;
    14   dst = $10;
    15   seq_no = $11;
    16   packet_id = $12;
    17   
    18   if(action=="r"&&from==3&&to==5&&flow_id==1){
    19       pkt_byte_sum[i+1]=pkt_byte_sum[i]+pktsize;
    20       
    21       if(init==0){
    22       start_time=time;
    23       init=1;
    24       }
    25       end_time[i]=time;
    26       i=i+1;
    27   }
    28 }
    29 END{
    30  printf("%.2f %.2f
    ",end_time[0],0);
    31  for(j=1;j<i;j++){
    32  th=pkt_byte_sum[j]/(end_time[j]-start_time)*8/1000;
    33  printf("%.2f %.2f
    ",end_time[j],th);
    34  }
    35  printf("%.2f %.2f
    ",end_time[i-1],0);
    36 }

  • 相关阅读:
    MySQL锁
    mysql服务性能优化—my.cnf配置说明详解
    springmvc请求参数获取的几种方法
    Linux mysql 添加远程连接
    Linux 操作 mysql
    Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html
    linux 下 安装nginx
    dubbo 实战总结
    分布式事务的几种方式
    精巧好用的DelayQueue 转
  • 原文地址:https://www.cnblogs.com/btlcmr/p/5287576.html
Copyright © 2011-2022 走看看