zoukankan      html  css  js  c++  java
  • OPNET学习笔记之sink模块

    sink模块的进程模型是sink,是OPNET中最简单的进程,功能是"Accepts packets from the source and destroys them",也是新建一个processor时的默认进程模型。

    sink模型的state variable有10个,其中5个是local statistic,5个是global statistic,

    temp vairable 包括:

    Packet*  pkptr;
    double  pk_size;
    double  ete_delay;

    没有函数模块。

    状态机很简单:

      INIT状态的入口函数是在初始化各统计量handle,使用op_stat_reg()函数注册,然后可以通过这些handle写入数据,如:

    bits_rcvd_stathandle   = op_stat_reg ("Traffic Sink.Traffic Received (bits)",   OPC_STAT_INDEX_NONE, OPC_STAT_LOCAL);

    其中"Traffic Sink"大概与group有关。

      DISCARD状态的出口函数功能是从输入包流中获得包,记录下统计量,然后销毁包。

    /* Obtain the incoming packet. */
    pkptr = op_pk_get (op_intrpt_strm ());  //从输入流得到包指针pkptr

    /* Caclulate metrics to be updated.  */
    pk_size = (double) op_pk_total_size_get (pkptr);  //得到包总大小
    ete_delay = op_sim_time () - op_pk_creation_time_get (pkptr);  /*得到这个包的端到端延迟,注意这三个变量都是temp variable,每次在状态跳转后的值都不会保留*/

    /* Update local statistics.    */
    op_stat_write (bits_rcvd_stathandle,   pk_size);  //收到bits
    op_stat_write (pkts_rcvd_stathandle,   1.0);    //收到packets
    op_stat_write (ete_delay_stathandle,   ete_delay);  //端到端延迟

    op_stat_write (bitssec_rcvd_stathandle,  pk_size);  //写bits然后马上清零???
    op_stat_write (bitssec_rcvd_stathandle,  0.0);
    op_stat_write (pktssec_rcvd_stathandle,  1.0);  //写packets然后马上清零???
    op_stat_write (pktssec_rcvd_stathandle,  0.0);

    /* Update global statistics. */
    op_stat_write (bits_rcvd_gstathandle,   pk_size);  //收到bits
    op_stat_write (pkts_rcvd_gstathandle,   1.0);    //收到packets
    op_stat_write (ete_delay_gstathandle,   ete_delay);  //端到端延迟

    op_stat_write (bitssec_rcvd_gstathandle,  pk_size);
    op_stat_write (bitssec_rcvd_gstathandle,  0.0);
    op_stat_write (pktssec_rcvd_gstathandle,  1.0);
    op_stat_write (pktssec_rcvd_gstathandle,  0.0);

    /* Destroy the received packet. */
    op_pk_destroy (pkptr);    //销毁包

    问题:bitssec_rcvd_stathandle这些统计量为什么需要写完马上清零?是怎样统计的?

    大概所有统计速度的(xxx/s)都需要写完马上清零,在simple_source中就是这么做的。

  • 相关阅读:
    PAT (Advanced Level) Practise:1008. Elevator
    练习题-二维数组中的查找
    PAT (Basic Level) Practise:1028. 人口普查
    PAT (Basic Level) Practise:1014. 福尔摩斯的约会
    PAT (Basic Level) Practise:1019. 数字黑洞
    c++ 二进制文件读写
    c/c++ linux/windows 读取目录下的所有文件名
    C 语言实现 Linux touch 命令
    c++读写csv
    linux nohup【转】
  • 原文地址:https://www.cnblogs.com/loopever/p/2599519.html
Copyright © 2011-2022 走看看