Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

FlowMon Class Reference

#include <flowmon.h>

Inheritance diagram for FlowMon:

Inheritance graph
[legend]
Collaboration diagram for FlowMon:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 FlowMon ()
void in (Packet *)
void out (Packet *)
void drop (Packet *)
void edrop (Packet *)
void mon_edrop (Packet *)
int command (int argc, const char *const *argv)
void setClassifier (Classifier *classifier)
Flowfind (Packet *p)
int epdrops () const
int ebdrops () const
int mon_epdrops () const
int mon_ebdrops () const
int size () const
int pkts () const
int parrivals () const
int barrivals () const
int pdepartures () const
int bdepartures () const
int pdrops () const
int pmarks () const
int bdrops () const
void printRTTs ()
void printSeqnos ()
void printStats ()

Public Attributes

int estimate_rate_
double k_
double estRate_
double prevTime_
double startTime_

Protected Member Functions

void dumpflows ()
void dumpflow (Tcl_Channel, Flow *)
void fformat (Flow *)
char * flow_list ()
void estimateRate (Packet *p)
void keepRTTstats (Packet *p)
void keepSeqnoStats (Packet *p)

Protected Attributes

Classifierclassifier_
Tcl_Channel channel_
int enable_in_
int enable_out_
int enable_drop_
int enable_edrop_
int enable_mon_edrop_
char wrk_ [65536]
int ebdrops_
int epdrops_
int mon_ebdrops_
int mon_epdrops_
IntegratorbytesInt_
IntegratorpktsInt_
SamplesdelaySamp_
int size_
int pkts_
int parrivals_
int barrivals_
int pdepartures_
int bdepartures_
int pdrops_
int pmarks_
int bdrops_
int keepRTTstats_
int maxRTT_
int numRTTs_
int binsPerSec_
int * RTTbins_
int keepSeqnoStats_
int maxSeqno_
int numSeqnos_
int SeqnoBinSize_
int * SeqnoBins_
int srcId_
int dstId_
Tcl_Channel channel1_
int temp_size_

Constructor & Destructor Documentation

FlowMon::FlowMon  ) 
 

Definition at line 256 of file flowmon.cc.

References enable_drop_, enable_edrop_, enable_in_, and enable_out_.

00256                  : classifier_(NULL), channel_(NULL),
00257         enable_in_(1), enable_out_(1), enable_drop_(1), enable_edrop_(1), enable_mon_edrop_(1)
00258 {
00259         bind_bool("enable_in_", &enable_in_);
00260         bind_bool("enable_out_", &enable_out_);
00261         bind_bool("enable_drop_", &enable_drop_);
00262         bind_bool("enable_edrop_", &enable_edrop_);
00263 }


Member Function Documentation

int QueueMonitor::barrivals  )  const [inline, inherited]
 

Definition at line 101 of file queue-monitor.h.

References QueueMonitor::barrivals_.

Referenced by fformat(), Tagger::fformat(), and PushbackQueue::timeout().

00101 { return (barrivals_); }

int QueueMonitor::bdepartures  )  const [inline, inherited]
 

Definition at line 103 of file queue-monitor.h.

References QueueMonitor::bdepartures_.

Referenced by PushbackQueue::timeout().

00103 { return (bdepartures_); }

int QueueMonitor::bdrops  )  const [inline, inherited]
 

Definition at line 107 of file queue-monitor.h.

References QueueMonitor::bdrops_.

Referenced by fformat(), Tagger::fformat(), and PushbackQueue::timeout().

00107 { return (bdrops_); }

int FlowMon::command int  argc,
const char *const *  argv
[virtual]
 

Reimplemented from QueueMonitor.

Definition at line 420 of file flowmon.cc.

References channel_, classifier_, QueueMonitor::command(), dumpflows(), and flow_list().

00421 {
00422         Tcl& tcl = Tcl::instance();
00423         if (argc == 2) {
00424                 if (strcmp(argv[1], "classifier") == 0) {
00425                         if (classifier_)
00426                                 tcl.resultf("%s", classifier_->name());
00427                         else
00428                                 tcl.resultf("");
00429                         return (TCL_OK);
00430                 }
00431                 if (strcmp(argv[1], "dump") == 0) {
00432                         dumpflows();
00433                         return (TCL_OK);
00434                 }
00435                 if (strcmp(argv[1], "flows") == 0) {
00436                         //      printf("command says gimme flow list\n");
00437                         tcl.result(flow_list());
00438                         return (TCL_OK);
00439                 }
00440         } else if (argc == 3) {
00441                 if (strcmp(argv[1], "classifier") == 0) {
00442                         classifier_ = (Classifier*)
00443                                 TclObject::lookup(argv[2]);
00444                         if (classifier_ == NULL)
00445                                 return (TCL_ERROR);
00446                         return (TCL_OK);
00447                 }
00448                 if (strcmp(argv[1], "attach") == 0) {
00449                         int mode;
00450                         const char* id = argv[2];
00451                         channel_ = Tcl_GetChannel(tcl.interp(),
00452                                 (char*) id, &mode);
00453                         if (channel_ == NULL) {
00454                                 tcl.resultf("FlowMon (%s): can't attach %s for writing",
00455                                         name(), id);
00456                                 return (TCL_ERROR);
00457                         }
00458                         return (TCL_OK);
00459                 }
00460         }
00461         return (EDQueueMonitor::command(argc, argv));
00462 }

Here is the call graph for this function:

void FlowMon::drop Packet  )  [virtual]
 

Reimplemented from QueueMonitor.

Definition at line 293 of file flowmon.cc.

References classifier_, QueueMonitor::drop(), enable_drop_, Classifier::find(), and Flow::setfields().

00294 {
00295         Flow* desc;
00296         EDQueueMonitor::drop(p);
00297         if (!enable_drop_)
00298                 return;
00299         if ((desc = ((Flow*)classifier_->find(p))) != NULL) {
00300                 desc->setfields(p);
00301                 desc->drop(p);
00302         }
00303 }

Here is the call graph for this function:

void FlowMon::dumpflow Tcl_Channel  ,
Flow
[protected]
 

Definition at line 407 of file flowmon.cc.

References fformat(), and wrk_.

Referenced by dumpflows().

00408 {
00409         fformat(f);
00410         if (tc != 0) {
00411                 int n = strlen(wrk_);
00412                 wrk_[n++] = '\n';
00413                 wrk_[n] = '\0';
00414                 (void)Tcl_Write(tc, wrk_, n);
00415                 wrk_[n-1] = '\0';
00416         }
00417 }

Here is the call graph for this function:

void FlowMon::dumpflows  )  [protected]
 

Definition at line 333 of file flowmon.cc.

References channel_, classifier_, dumpflow(), Classifier::maxslot(), and Classifier::slot().

Referenced by command().

00334 {
00335         register int i, j = classifier_->maxslot();
00336         Flow* f;
00337 
00338         for (i = 0; i <= j; i++) {
00339                 if ((f = (Flow*)classifier_->slot(i)) != NULL)
00340                         dumpflow(channel_, f);
00341         }
00342 }

Here is the call graph for this function:

int EDQueueMonitor::ebdrops  )  const [inline, inherited]
 

Definition at line 265 of file queue-monitor.h.

References EDQueueMonitor::ebdrops_.

Referenced by fformat(), and Tagger::fformat().

00265 { return (ebdrops_); }

void FlowMon::edrop Packet  )  [virtual]
 

Reimplemented from EDQueueMonitor.

Definition at line 306 of file flowmon.cc.

References classifier_, EDQueueMonitor::edrop(), enable_edrop_, Classifier::find(), and Flow::setfields().

00307 {
00308         Flow* desc;
00309         EDQueueMonitor::edrop(p);
00310         if (!enable_edrop_)
00311                 return;
00312         if ((desc = ((Flow*)classifier_->find(p))) != NULL) {
00313                 desc->setfields(p);
00314                 desc->edrop(p);
00315         }
00316 }

Here is the call graph for this function:

int EDQueueMonitor::epdrops  )  const [inline, inherited]
 

Definition at line 264 of file queue-monitor.h.

References EDQueueMonitor::epdrops_.

Referenced by fformat(), and Tagger::fformat().

00264 { return (epdrops_); }

void QueueMonitor::estimateRate Packet p  )  [protected, inherited]
 

Definition at line 301 of file queue-monitor.cc.

References hdr_cmn::access(), Scheduler::clock(), QueueMonitor::estRate_, Scheduler::instance(), QueueMonitor::k_, QueueMonitor::prevTime_, hdr_cmn::size(), and QueueMonitor::temp_size_.

Referenced by QueueMonitor::in().

00301                                            {
00302         
00303         hdr_cmn* hdr  = hdr_cmn::access(pkt);
00304         int pktSize   = hdr->size() << 3; /* length of the packet in bits */
00305 
00306         double now = Scheduler::instance().clock();
00307         double timeGap = ( now - prevTime_);
00308 
00309         if (timeGap == 0) {
00310                 temp_size_ += pktSize;
00311                 return;
00312         }
00313         else {
00314                 pktSize+= temp_size_;
00315                 temp_size_ = 0;
00316         }
00317         
00318         prevTime_ = now;
00319         
00320         estRate_ = (1 - exp(-timeGap/k_))*((double)pktSize)/timeGap + exp(-timeGap/k_)*estRate_;
00321 }

Here is the call graph for this function:

void FlowMon::fformat Flow  )  [protected]
 

Definition at line 376 of file flowmon.cc.

References QueueMonitor::barrivals(), QueueMonitor::bdrops(), Scheduler::clock(), Flow::dst(), EDQueueMonitor::ebdrops(), EDQueueMonitor::epdrops(), Flow::flowid(), Scheduler::instance(), QueueMonitor::parrivals(), QueueMonitor::pdrops(), Flow::ptype(), Flow::src(), STRTOI64_FMTSTR, and wrk_.

Referenced by dumpflow().

00377 {
00378         double now = Scheduler::instance().clock();
00379 #if defined(HAVE_INT64)
00380         sprintf(wrk_, "%8.3f %d %d %d %d %d %d " STRTOI64_FMTSTR " " STRTOI64_FMTSTR " %d %d " STRTOI64_FMTSTR " " STRTOI64_FMTSTR " %d %d %d %d %d %d",
00381 #else /* no 64-bit int */
00382         sprintf(wrk_, "%8.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
00383 #endif
00384                 now,            // 1: time
00385                 f->flowid(),    // 2: flowid
00386                 0,              // 3: category
00387                 f->ptype(),     // 4: type (from common header)
00388                 f->flowid(),    // 5: flowid (formerly class)
00389                 f->src(),       // 6: sender
00390                 f->dst(),       // 7: receiver
00391                 f->parrivals(), // 8: arrivals this flow (pkts)
00392                 f->barrivals(), // 9: arrivals this flow (bytes)
00393                 f->epdrops(),   // 10: early drops this flow (pkts)
00394                 f->ebdrops(),   // 11: early drops this flow (bytes)
00395                 parrivals(),    // 12: all arrivals (pkts)
00396                 barrivals(),    // 13: all arrivals (bytes)
00397                 epdrops(),      // 14: total early drops (pkts)
00398                 ebdrops(),      // 15: total early drops (bytes)
00399                 pdrops(),       // 16: total drops (pkts)
00400                 bdrops(),       // 17: total drops (bytes)
00401                 f->pdrops(),    // 18: drops this flow (pkts) [includes edrops]
00402                 f->bdrops()     // 19: drops this flow (bytes) [includes edrops]
00403         );
00404 };

Here is the call graph for this function:

Flow* FlowMon::find Packet p  )  [inline]
 

Definition at line 208 of file flowmon.h.

References classifier_, and Classifier::find().

Referenced by RedPDQueue::enque().

00208                                {
00209                 return (Flow *)classifier_->find(p);
00210         }

Here is the call graph for this function:

char * FlowMon::flow_list  )  [protected]
 

Definition at line 345 of file flowmon.cc.

References classifier_, Classifier::maxslot(), Classifier::slot(), and wrk_.

Referenced by command().

00346 {
00347         register const char* z;
00348         register int i, j = classifier_->maxslot();
00349         Flow* f;
00350         register char* p = wrk_;
00351         register char* q;
00352         q = p + sizeof(wrk_) - 2;
00353         *p = '\0';
00354 
00355         for (i = 0; i <= j; i++) {
00356                 if ((f = (Flow*)classifier_->slot(i)) != NULL) {
00357                         
00358                         z = f->name();
00359                         while (*z && p < q) {
00360                                 *p++ = *z++;
00361                         }
00362                         *p++ = ' ';
00363                 }
00364                 if (p >= q) {
00365                         fprintf(stderr, "FlowMon:: flow list exceeded working buffer\n");
00366                         fprintf(stderr, "\t  recompile ns with larger FlowMon::wrk_[] array\n");
00367                         exit (1);
00368                 }
00369         }
00370         if (p != wrk_)
00371                 *--p = '\0';
00372         return (wrk_);
00373 }

Here is the call graph for this function:

void FlowMon::in Packet  )  [virtual]
 

Reimplemented from QueueMonitor.

Definition at line 266 of file flowmon.cc.

References classifier_, enable_in_, Classifier::find(), QueueMonitor::in(), and Flow::setfields().

00267 {
00268         Flow* desc;
00269 
00270         EDQueueMonitor::in(p);
00271         if (!enable_in_)
00272                 return;
00273         if ((desc = ((Flow *)classifier_->find(p))) != NULL) {
00274                 desc->setfields(p);
00275                 desc->in(p);
00276         }
00277 }

Here is the call graph for this function:

void QueueMonitor::keepRTTstats Packet p  )  [protected, inherited]
 

Definition at line 324 of file queue-monitor.cc.

References hdr_tcp::access(), hdr_cmn::access(), QueueMonitor::binsPerSec_, hdr_tcp::last_rtt(), QueueMonitor::maxRTT_, QueueMonitor::numRTTs_, packet_t, PT_FTP, PT_HTTP, PT_TCP, PT_TELNET, hdr_cmn::ptype(), and QueueMonitor::RTTbins_.

Referenced by QueueMonitor::out().

00324                                            {
00325         int i, j, topBin, rttInMs, MsPerBin;
00326         hdr_cmn* hdr  = hdr_cmn::access(pkt);
00327         packet_t t = hdr->ptype();
00328         if (t == PT_TCP || t == PT_HTTP || t == PT_FTP || t == PT_TELNET) {
00329                 hdr_tcp *tcph = hdr_tcp::access(pkt);
00330                 rttInMs = tcph->last_rtt(); 
00331                 if (rttInMs < 0) rttInMs = 0;
00332                 topBin = maxRTT_ * binsPerSec_;
00333                 if (numRTTs_ == 0) {
00334                         RTTbins_ = (int *)malloc(sizeof(int)*topBin);
00335                         for (i = 0; i < topBin; i++) {
00336                                 RTTbins_[i] = 0;
00337                         }
00338                 }
00339                 MsPerBin = int(1000/binsPerSec_);
00340                 j = (int)(rttInMs/MsPerBin);
00341                 if (j < 0) j = 0;
00342                 if (j >= topBin) j = topBin - 1;
00343                 ++ RTTbins_[j];
00344                 ++ numRTTs_;
00345         }
00346 }

Here is the call graph for this function:

void QueueMonitor::keepSeqnoStats Packet p  )  [protected, inherited]
 

Definition at line 349 of file queue-monitor.cc.

References hdr_tcp::access(), hdr_cmn::access(), QueueMonitor::maxSeqno_, QueueMonitor::numSeqnos_, packet_t, PT_FTP, PT_HTTP, PT_TCP, PT_TELNET, hdr_cmn::ptype(), hdr_tcp::seqno(), QueueMonitor::SeqnoBins_, and QueueMonitor::SeqnoBinSize_.

Referenced by QueueMonitor::out().

00349                                              {
00350         int i, j, topBin, seqno; 
00351         hdr_cmn* hdr  = hdr_cmn::access(pkt);
00352         packet_t t = hdr->ptype();
00353         if (t == PT_TCP || t == PT_HTTP || t == PT_FTP || t == PT_TELNET) {
00354                 hdr_tcp *tcph = hdr_tcp::access(pkt);
00355                 seqno = tcph->seqno(); 
00356                 if (seqno < 0) seqno = 0;
00357                 topBin = int(maxSeqno_ / SeqnoBinSize_);
00358                 if (numSeqnos_ == 0) {
00359                         SeqnoBins_ = (int *)malloc(sizeof(int)*topBin);
00360                         for (i = 0; i < topBin; i++) {
00361                                 SeqnoBins_[i] = 0;
00362                         }
00363                 }
00364                 j = (int)(seqno/SeqnoBinSize_);
00365                 if (j < 0) j = 0;
00366                 if (j >= topBin) j = topBin - 1;
00367                 ++ SeqnoBins_[j];
00368                 ++ numSeqnos_;
00369         }
00370 }

Here is the call graph for this function:

int EDQueueMonitor::mon_ebdrops  )  const [inline, inherited]
 

Definition at line 267 of file queue-monitor.h.

References EDQueueMonitor::mon_ebdrops_.

Referenced by PushbackQueue::timeout().

00267 { return (mon_ebdrops_); }

void FlowMon::mon_edrop Packet  ) 
 

Reimplemented from EDQueueMonitor.

Definition at line 320 of file flowmon.cc.

References classifier_, enable_mon_edrop_, Classifier::find(), EDQueueMonitor::mon_edrop(), and Flow::setfields().

Referenced by RedPDQueue::enque().

00321 {
00322         Flow* desc;
00323         EDQueueMonitor::mon_edrop(p);
00324         if (!enable_mon_edrop_)
00325                 return;
00326         if ((desc = ((Flow*)classifier_->find(p))) != NULL) {
00327                 desc->setfields(p);
00328                 desc->mon_edrop(p);
00329         }
00330 }

Here is the call graph for this function:

int EDQueueMonitor::mon_epdrops  )  const [inline, inherited]
 

Definition at line 266 of file queue-monitor.h.

References EDQueueMonitor::mon_epdrops_.

00266 { return (mon_epdrops_); }

void FlowMon::out Packet  )  [virtual]
 

Reimplemented from QueueMonitor.

Definition at line 280 of file flowmon.cc.

References classifier_, enable_out_, Classifier::find(), QueueMonitor::out(), and Flow::setfields().

00281 {
00282         Flow* desc;
00283         EDQueueMonitor::out(p);
00284         if (!enable_out_)
00285                 return;
00286         if ((desc = ((Flow*)classifier_->find(p))) != NULL) {
00287                 desc->setfields(p);
00288                 desc->out(p);
00289         }
00290 }

Here is the call graph for this function:

int QueueMonitor::parrivals  )  const [inline, inherited]
 

Definition at line 100 of file queue-monitor.h.

References QueueMonitor::parrivals_.

Referenced by fformat(), and Tagger::fformat().

00100 { return (parrivals_); }

int QueueMonitor::pdepartures  )  const [inline, inherited]
 

Definition at line 102 of file queue-monitor.h.

References QueueMonitor::pdepartures_.

00102 { return (pdepartures_); }

int QueueMonitor::pdrops  )  const [inline, inherited]
 

Definition at line 105 of file queue-monitor.h.

References QueueMonitor::pdrops_.

Referenced by fformat(), and Tagger::fformat().

00105 { return (pdrops_); }

int QueueMonitor::pkts  )  const [inline, inherited]
 

Definition at line 93 of file queue-monitor.h.

References QueueMonitor::pkts_.

Referenced by CBQClass::demand(), and CBQueue::toplevel_departure().

00093 { return (pkts_); }

int QueueMonitor::pmarks  )  const [inline, inherited]
 

Definition at line 106 of file queue-monitor.h.

References QueueMonitor::pmarks_.

Referenced by Tagger::fformat().

00106 { return (pmarks_); }

void QueueMonitor::printRTTs  )  [inherited]
 

Definition at line 150 of file queue-monitor.cc.

References QueueMonitor::binsPerSec_, QueueMonitor::channel1_, Scheduler::clock(), Scheduler::instance(), QueueMonitor::maxRTT_, QueueMonitor::numRTTs_, and QueueMonitor::RTTbins_.

Referenced by QueueMonitor::command().

00150                         {
00151         int i, n, topBin, MsPerBin;
00152         char wrk[500];
00153 
00154         topBin = maxRTT_ * binsPerSec_;
00155         MsPerBin = int(1000/binsPerSec_);
00156         double now = Scheduler::instance().clock();
00157         sprintf(wrk, "Distribution of RTTs, %d ms bins, time %4.2f\n", MsPerBin, now);
00158         n = strlen(wrk); wrk[n] = 0;
00159         (void)Tcl_Write(channel1_, wrk, n);
00160         for (i = 0; i < topBin; i++) {
00161                 if (RTTbins_[i] > 0) {
00162                         sprintf(wrk, "%d to %d ms: frac %5.3f num %d time %4.2f\n", 
00163                           i*MsPerBin, (i+1)*MsPerBin, 
00164                           (double)RTTbins_[i]/numRTTs_,
00165                           RTTbins_[i], now); 
00166                         n = strlen(wrk); wrk[n] = 0; 
00167                         (void)Tcl_Write(channel1_, wrk, n);
00168                 }
00169         }
00170         i = topBin - 1;
00171         if (RTTbins_[i] > 0) {
00172                 sprintf(wrk, "The last bin might also contain RTTs >= %d ms.\n",
00173                 (i+1)*MsPerBin);
00174                 n = strlen(wrk); wrk[n] = 0;
00175                 (void)Tcl_Write(channel1_, wrk, n);
00176         }
00177 }

Here is the call graph for this function:

void QueueMonitor::printSeqnos  )  [inherited]
 

Definition at line 180 of file queue-monitor.cc.

References QueueMonitor::channel1_, Scheduler::clock(), Scheduler::instance(), QueueMonitor::maxSeqno_, QueueMonitor::numSeqnos_, QueueMonitor::SeqnoBins_, and QueueMonitor::SeqnoBinSize_.

Referenced by QueueMonitor::command().

00180                           {
00181         int i, n, topBin; 
00182         char wrk[500];
00183 
00184         topBin = int(maxSeqno_ / SeqnoBinSize_);
00185         double now = Scheduler::instance().clock();
00186         sprintf(wrk, "Distribution of Seqnos, %d seqnos per bin, time %4.2f\n", 
00187            SeqnoBinSize_, now);
00188         n = strlen(wrk); wrk[n] = 0;
00189         (void)Tcl_Write(channel1_, wrk, n);
00190         for (i = 0; i < topBin; i++) {
00191                 if (SeqnoBins_[i] > 0) {
00192                         sprintf(wrk, "%d to %d seqnos: frac %5.3f num %d time %4.2f\n", 
00193                           i*SeqnoBinSize_, (i+1)*SeqnoBinSize_ - 1, 
00194                           (double)SeqnoBins_[i]/numSeqnos_,
00195                           SeqnoBins_[i], now); 
00196                         n = strlen(wrk); wrk[n] = 0;
00197                         (void)Tcl_Write(channel1_, wrk, n);
00198                 }
00199         }
00200         i = topBin - 1;
00201         if (SeqnoBins_[i] > 0) {
00202                 sprintf(wrk, "The last bin might also contain Seqnos >= %d. \n",
00203                 (i+1)*SeqnoBinSize_);
00204                 n = strlen(wrk); wrk[n] = 0;
00205                 (void)Tcl_Write(channel1_, wrk, n);
00206         }
00207 }

Here is the call graph for this function:

void QueueMonitor::printStats  )  [inherited]
 

Definition at line 210 of file queue-monitor.cc.

References QueueMonitor::channel_, Scheduler::clock(), QueueMonitor::dstId_, Scheduler::instance(), QueueMonitor::pkts_, QueueMonitor::size_, QueueMonitor::srcId_, and TIME_FORMAT.

Referenced by QueueMonitor::drop(), QueueMonitor::in(), and QueueMonitor::out().

00210                          {
00211         char wrk[500];
00212         int n;
00213         double now = Scheduler::instance().clock();
00214         sprintf(wrk, "q -t "TIME_FORMAT" -s %d -d %d -l %d -p %d", now, srcId_, dstId_, size_, pkts_);
00215         n = strlen(wrk);
00216         wrk[n] = '\n';
00217         wrk[n+1] = 0;
00218         (void)Tcl_Write(channel_, wrk, n+1);
00219         wrk[n] = 0;
00220 }       

Here is the call graph for this function:

void FlowMon::setClassifier Classifier classifier  )  [inline]
 

Definition at line 204 of file flowmon.h.

References classifier_.

00204                                                     {
00205           classifier_ = classifier;
00206         }

int QueueMonitor::size  )  const [inline, inherited]
 

Definition at line 92 of file queue-monitor.h.

References QueueMonitor::size_.

00092 { return (size_); }


Member Data Documentation

int QueueMonitor::barrivals_ [protected, inherited]
 

Definition at line 130 of file queue-monitor.h.

Referenced by QueueMonitor::barrivals(), QueueMonitor::in(), and QueueMonitor::QueueMonitor().

int QueueMonitor::bdepartures_ [protected, inherited]
 

Definition at line 132 of file queue-monitor.h.

Referenced by QueueMonitor::bdepartures(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

int QueueMonitor::bdrops_ [protected, inherited]
 

Definition at line 136 of file queue-monitor.h.

Referenced by QueueMonitor::bdrops(), QueueMonitor::drop(), and QueueMonitor::QueueMonitor().

int QueueMonitor::binsPerSec_ [protected, inherited]
 

Definition at line 141 of file queue-monitor.h.

Referenced by QueueMonitor::keepRTTstats(), QueueMonitor::printRTTs(), and QueueMonitor::QueueMonitor().

Integrator* QueueMonitor::bytesInt_ [protected, inherited]
 

Definition at line 117 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::drop(), QueueMonitor::in(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

Tcl_Channel QueueMonitor::channel1_ [protected, inherited]
 

Definition at line 153 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::printRTTs(), QueueMonitor::printSeqnos(), and QueueMonitor::QueueMonitor().

Tcl_Channel FlowMon::channel_ [protected]
 

Reimplemented from QueueMonitor.

Definition at line 219 of file flowmon.h.

Referenced by command(), and dumpflows().

Classifier* FlowMon::classifier_ [protected]
 

Definition at line 218 of file flowmon.h.

Referenced by command(), drop(), dumpflows(), edrop(), find(), flow_list(), in(), mon_edrop(), out(), and setClassifier().

Samples* QueueMonitor::delaySamp_ [protected, inherited]
 

Definition at line 119 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::in(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

int QueueMonitor::dstId_ [protected, inherited]
 

Definition at line 151 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::printStats(), and QueueMonitor::QueueMonitor().

int EDQueueMonitor::ebdrops_ [protected, inherited]
 

Definition at line 269 of file queue-monitor.h.

Referenced by EDQueueMonitor::ebdrops(), EDQueueMonitor::EDQueueMonitor(), and EDQueueMonitor::edrop().

int FlowMon::enable_drop_ [protected]
 

Definition at line 223 of file flowmon.h.

Referenced by drop(), and FlowMon().

int FlowMon::enable_edrop_ [protected]
 

Definition at line 224 of file flowmon.h.

Referenced by edrop(), and FlowMon().

int FlowMon::enable_in_ [protected]
 

Definition at line 221 of file flowmon.h.

Referenced by FlowMon(), and in().

int FlowMon::enable_mon_edrop_ [protected]
 

Definition at line 225 of file flowmon.h.

Referenced by mon_edrop().

int FlowMon::enable_out_ [protected]
 

Definition at line 222 of file flowmon.h.

Referenced by FlowMon(), and out().

int EDQueueMonitor::epdrops_ [protected, inherited]
 

Definition at line 270 of file queue-monitor.h.

Referenced by EDQueueMonitor::EDQueueMonitor(), EDQueueMonitor::edrop(), and EDQueueMonitor::epdrops().

int QueueMonitor::estimate_rate_ [inherited]
 

Definition at line 160 of file queue-monitor.h.

Referenced by RedPDQueue::command(), QueueMonitor::in(), and QueueMonitor::QueueMonitor().

double QueueMonitor::estRate_ [inherited]
 

Definition at line 162 of file queue-monitor.h.

Referenced by RedPDQueue::command(), RedPDQueue::enque(), QueueMonitor::estimateRate(), and QueueMonitor::QueueMonitor().

double QueueMonitor::k_ [inherited]
 

Definition at line 161 of file queue-monitor.h.

Referenced by QueueMonitor::estimateRate(), and QueueMonitor::QueueMonitor().

int QueueMonitor::keepRTTstats_ [protected, inherited]
 

Definition at line 138 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

int QueueMonitor::keepSeqnoStats_ [protected, inherited]
 

Definition at line 144 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

int QueueMonitor::maxRTT_ [protected, inherited]
 

Definition at line 139 of file queue-monitor.h.

Referenced by QueueMonitor::keepRTTstats(), QueueMonitor::printRTTs(), and QueueMonitor::QueueMonitor().

int QueueMonitor::maxSeqno_ [protected, inherited]
 

Definition at line 145 of file queue-monitor.h.

Referenced by QueueMonitor::keepSeqnoStats(), QueueMonitor::printSeqnos(), and QueueMonitor::QueueMonitor().

int EDQueueMonitor::mon_ebdrops_ [protected, inherited]
 

Definition at line 271 of file queue-monitor.h.

Referenced by EDQueueMonitor::EDQueueMonitor(), EDQueueMonitor::mon_ebdrops(), and EDQueueMonitor::mon_edrop().

int EDQueueMonitor::mon_epdrops_ [protected, inherited]
 

Definition at line 272 of file queue-monitor.h.

Referenced by EDQueueMonitor::EDQueueMonitor(), EDQueueMonitor::mon_edrop(), and EDQueueMonitor::mon_epdrops().

int QueueMonitor::numRTTs_ [protected, inherited]
 

Definition at line 140 of file queue-monitor.h.

Referenced by QueueMonitor::keepRTTstats(), QueueMonitor::printRTTs(), and QueueMonitor::QueueMonitor().

int QueueMonitor::numSeqnos_ [protected, inherited]
 

Definition at line 146 of file queue-monitor.h.

Referenced by QueueMonitor::keepSeqnoStats(), QueueMonitor::printSeqnos(), and QueueMonitor::QueueMonitor().

int QueueMonitor::parrivals_ [protected, inherited]
 

Definition at line 129 of file queue-monitor.h.

Referenced by QueueMonitor::in(), QueueMonitor::parrivals(), and QueueMonitor::QueueMonitor().

int QueueMonitor::pdepartures_ [protected, inherited]
 

Definition at line 131 of file queue-monitor.h.

Referenced by QueueMonitor::out(), QueueMonitor::pdepartures(), and QueueMonitor::QueueMonitor().

int QueueMonitor::pdrops_ [protected, inherited]
 

Definition at line 134 of file queue-monitor.h.

Referenced by QueueMonitor::drop(), QueueMonitor::pdrops(), and QueueMonitor::QueueMonitor().

int QueueMonitor::pkts_ [protected, inherited]
 

Reimplemented in QueueMonitorCompat.

Definition at line 121 of file queue-monitor.h.

Referenced by QueueMonitor::drop(), QueueMonitor::in(), QueueMonitor::out(), QueueMonitor::pkts(), QueueMonitor::printStats(), and QueueMonitor::QueueMonitor().

Integrator* QueueMonitor::pktsInt_ [protected, inherited]
 

Definition at line 118 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::drop(), QueueMonitor::in(), QueueMonitor::out(), and QueueMonitor::QueueMonitor().

int QueueMonitor::pmarks_ [protected, inherited]
 

Definition at line 135 of file queue-monitor.h.

Referenced by QueueMonitor::out(), QueueMonitor::pmarks(), and QueueMonitor::QueueMonitor().

double QueueMonitor::prevTime_ [inherited]
 

Definition at line 163 of file queue-monitor.h.

Referenced by QueueMonitor::estimateRate(), QueueMonitor::in(), and QueueMonitor::QueueMonitor().

int* QueueMonitor::RTTbins_ [protected, inherited]
 

Definition at line 142 of file queue-monitor.h.

Referenced by QueueMonitor::keepRTTstats(), and QueueMonitor::printRTTs().

int* QueueMonitor::SeqnoBins_ [protected, inherited]
 

Definition at line 148 of file queue-monitor.h.

Referenced by QueueMonitor::keepSeqnoStats(), and QueueMonitor::printSeqnos().

int QueueMonitor::SeqnoBinSize_ [protected, inherited]
 

Definition at line 147 of file queue-monitor.h.

Referenced by QueueMonitor::keepSeqnoStats(), QueueMonitor::printSeqnos(), and QueueMonitor::QueueMonitor().

int QueueMonitor::size_ [protected, inherited]
 

Definition at line 120 of file queue-monitor.h.

Referenced by QueueMonitor::drop(), QueueMonitor::in(), QueueMonitor::out(), QueueMonitor::printStats(), QueueMonitor::QueueMonitor(), and QueueMonitor::size().

int QueueMonitor::srcId_ [protected, inherited]
 

Definition at line 150 of file queue-monitor.h.

Referenced by QueueMonitor::command(), QueueMonitor::printStats(), and QueueMonitor::QueueMonitor().

double QueueMonitor::startTime_ [inherited]
 

Definition at line 164 of file queue-monitor.h.

Referenced by QueueMonitor::QueueMonitor().

int QueueMonitor::temp_size_ [protected, inherited]
 

Definition at line 167 of file queue-monitor.h.

Referenced by QueueMonitor::estimateRate(), and QueueMonitor::QueueMonitor().

char FlowMon::wrk_[65536] [protected]
 

Definition at line 228 of file flowmon.h.

Referenced by dumpflow(), fformat(), and flow_list().


The documentation for this class was generated from the following files:
Generated on Tue Apr 20 12:47:40 2004 for NS2.26SourcesOriginal by doxygen 1.3.3