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 }

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/btlcmr/p/5287576.html
Copyright © 2011-2022 走看看