opnet的sink模塊學習

Sink模塊的狀態機很簡單,只有INIT和DISCARD兩個,非強制狀態只有DISCARD用於包的銷燬。Sink模塊的作用就是銷燬從輸入流接收到的包,並且返回關於包的一系列統計量。

Init的入口代碼爲

/* Initilaize the statistic handles to keep         */

/* track of traffic sinked by this process.         */

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

bitssec_rcvd_stathandle        =op_stat_reg ("Traffic Sink.Traffic Received (bits/sec)",                  OPC_STAT_INDEX_NONE,OPC_STAT_LOCAL);

pkts_rcvd_stathandle              =op_stat_reg ("Traffic Sink.Traffic Received (packets)",                  OPC_STAT_INDEX_NONE,OPC_STAT_LOCAL);

pktssec_rcvd_stathandle       =op_stat_reg ("Traffic Sink.Traffic Received (packets/sec)", OPC_STAT_INDEX_NONE, OPC_STAT_LOCAL);

ete_delay_stathandle               =op_stat_reg ("Traffic Sink.End-to-End Delay (seconds)",              OPC_STAT_INDEX_NONE,OPC_STAT_LOCAL);

 

bits_rcvd_gstathandle            =op_stat_reg ("Traffic Sink.Traffic Received (bits)",                          OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);

bitssec_rcvd_gstathandle      =op_stat_reg ("Traffic Sink.Traffic Received (bits/sec)",                  OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);

pkts_rcvd_gstathandle           =op_stat_reg ("Traffic Sink.Traffic Received (packets)",                  OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);

pktssec_rcvd_gstathandle     =op_stat_reg ("Traffic Sink.Traffic Received (packets/sec)", OPC_STAT_INDEX_NONE, OPC_STAT_GLOBAL);

ete_delay_gstathandle            =op_stat_reg ("Traffic Sink.End-to-End Delay (seconds)",              OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);

 

 

op_stat_reg函數的作用是返回進程模型中節點或模塊統計量,即初始化統計量句柄,第一個參數爲統計量所在組的名稱

所以上述代碼分別返回的是局部統計量和全局統計量,包括:收到的bit數,bit速率,包數,包速率,端對端延時

 

 

DISCARD僅有出口代碼:

/* Obtain the incoming packet.       */

pkptr = op_pk_get (op_intrpt_strm ());

從輸入流中獲取包的指針

/* 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);

計算包的總體大小和包傳輸延時

/* Update local statistics. */

 

op_stat_write函數功能爲寫入統計量,第一個參數爲統計量的統計量句柄,第二個參數爲統計量將寫入的值。

op_stat_write (bits_rcvd_stathandle,            pk_size);收到的bit

op_stat_write (pkts_rcvd_stathandle,           1.0); 收到的包

op_stat_write (ete_delay_stathandle,                    ete_delay);端對端延時

 

op_stat_write (bitssec_rcvd_stathandle,      pk_size); bit速率

op_stat_write (bitssec_rcvd_stathandle,      0.0);

op_stat_write (pktssec_rcvd_stathandle,     1.0);  包速率

op_stat_write (pktssec_rcvd_stathandle,     0.0);

 

/* Update global statistics.     */全局統計量

op_stat_write (bits_rcvd_gstathandle,                   pk_size);

op_stat_write (pkts_rcvd_gstathandle,                  1.0);

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); 銷燬包

 

 

 


發佈了24 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章