• 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中就是这么做的。

  • 相关阅读:
    南邮OJA题
    Executors工厂类创建线程池的底层实现
    Linux kernel 中的per_cpu宏
    [置顶] 高并发服务器的设计内存池的设计
    数据列表DataList模板之实例
    软件开发无敌心得篇
    嵌入式学习笔记之UART通信协议
    正则表达式 进阶(二)
    11687 Digits
    DELPHI接口转化为COM接口
  • 原文地址:https://www.cnblogs.com/loopever/p/2599519.html
Copyright © 2020-2023  润新知