#include <rap.h>
Inheritance diagram for RapAgent:


Public Member Functions | |
| RapAgent () | |
| ~RapAgent () | |
| void | recv (Packet *, Handler *) |
| void | timeout (int type) |
| int | GetSeqno () |
| double | GetTimeout () |
| int | GetDebugFlag () |
| FILE * | GetLogfile () |
| void | IncrementLossCount () |
| void | start () |
| void | stop () |
| void | listen () |
| void | advanceby (int delta) |
| void | finish () |
| double | srtt () |
| double | ipg () |
| int | anyack () |
| int | is_stopped () |
| int | counting_pkt () |
| void | FixIpg (double fipg) |
| virtual void | recv (Packet *p, const char *s) |
| void | recvOnly (Packet *) |
| void | send (Packet *p, Handler *h) |
| virtual void | send (int sz, AppData *data) |
| virtual void | send (int nbytes) |
| virtual void | sendmsg (int sz, AppData *, const char *flags=0) |
| virtual void | sendmsg (int nbytes, const char *flags=0) |
| virtual void | sendto (int sz, AppData *, const char *flags, nsaddr_t dst) |
| virtual void | sendto (int nbytes, const char *flags, nsaddr_t dst) |
| virtual void | connect (nsaddr_t dst) |
| virtual void | close () |
| virtual void | attachApp (Application *app) |
| virtual int & | size () |
| nsaddr_t & | addr () |
| nsaddr_t & | port () |
| nsaddr_t & | daddr () |
| nsaddr_t & | dport () |
| void | set_pkttype (packet_t pkttype) |
| packet_t | get_pkttype () |
| NsObject * | target () |
| virtual void | drop (Packet *p) |
| int | isdebug () const |
| virtual void | debug (const char *fmt,...) |
Protected Member Functions | |
| virtual int | command (int argc, const char *const *argv) |
| void | IpgTimeout () |
| void | RttTimeout () |
| void | IncreaseIpg () |
| void | DecreaseIpg () |
| void | UpdateTimeValues (double sampleRtt) |
| int | LossDetection (RapLossType type, hdr_rap *ackHeader=NULL) |
| void | LossHandler () |
| void | SendPacket (int nbytes, AppData *data=0) |
| void | RecvAck (hdr_rap *ackHeader) |
| void | UpdateLastHole (int seqNum) |
| void | SendAck (int seqNum) |
| virtual void | delay_bind_init_all () |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| virtual void | recvBytes (int bytes) |
| virtual void | idle () |
| Packet * | allocpkt () const |
| Packet * | allocpkt (int) const |
| void | initpkt (Packet *) const |
| virtual void | trace (TracedVar *v) |
| void | deleteAgentTrace () |
| void | addAgentTrace (const char *name) |
| void | monitorAgentTrace () |
| OldValue * | lookupOldValue (TracedVar *v) |
| void | insertOldValue (TracedVar *v, const char *value) |
| void | dumpTracedVars () |
| virtual void | trace_event (char *eventtype) |
| virtual void | drop (Packet *p, const char *s) |
| virtual void | reset () |
| void | handle (Event *) |
Protected Attributes | |
| IpgTimer | ipgTimer_ |
| RttTimer | rttTimer_ |
| List | transmissionHistory_ |
| TracedInt | seqno_ |
| TracedInt | sessionLossCount_ |
| TracedInt | curseq_ |
| TracedDouble | ipg_ |
| double | beta_ |
| double | alpha_ |
| TracedDouble | srtt_ |
| double | variance_ |
| double | delta_ |
| double | mu_ |
| double | phi_ |
| double | overhead_ |
| int | useFineGrain_ |
| double | frtt_ |
| double | xrtt_ |
| double | kxrtt_ |
| double | kfrtt_ |
| TracedDouble | timeout_ |
| double | startTime_ |
| double | stopTime_ |
| int | debugEnable_ |
| FILE * | logfile_ |
| int | lastRecv_ |
| int | lastMiss_ |
| int | prevRecv_ |
| int | rap_base_hdr_size_ |
| int | dctr_ |
| int | dpthresh_ |
| int | flags_ |
| double | fixIpg_ |
| ns_addr_t | here_ |
| ns_addr_t | dst_ |
| int | size_ |
| packet_t | type_ |
| int | fid_ |
| int | prio_ |
| int | defttl_ |
| Tcl_Channel | channel_ |
| char * | traceName_ |
| OldValue * | oldValueList_ |
| Application * | app_ |
| EventTrace * | et_ |
| NsObject * | target_ |
| NsObject * | drop_ |
| int | debug_ |
Static Protected Attributes | |
| int | uidcnt_ |
|
|
Definition at line 88 of file rap.cc. References alpha_, beta_, debugEnable_, delta_, dpthresh_, frtt_, ipg_, kfrtt_, kxrtt_, mu_, overhead_, phi_, PT_RAP_DATA, rap_base_hdr_size_, seqno_, sessionLossCount_, Agent::size_, srtt_, timeout_, useFineGrain_, variance_, and xrtt_.
00088 : Agent(PT_RAP_DATA), ipgTimer_(this), rttTimer_(this), 00089 seqno_(0), sessionLossCount_(0), curseq_(0), ipg_(2.0), srtt_(2.0), 00090 timeout_(2.0), lastRecv_(0), lastMiss_(0), prevRecv_(0), dctr_(0), 00091 flags_(0), fixIpg_(0) 00092 { 00093 bind("packetSize_", &size_); // Default 512 00094 bind("seqno_", &seqno_); // Default 0 00095 bind("sessionLossCount_", &sessionLossCount_); // Default 0 00096 00097 bind("ipg_", &ipg_); // Default 2 seconds 00098 bind("beta_", &beta_); // Default 0.5 00099 bind("alpha_", &alpha_); // Default 1.0 00100 00101 bind("srtt_", &srtt_); // Default 2 seconds 00102 bind("variance_", &variance_);// Default 0 00103 bind("delta_", &delta_); // Default 0.5 00104 bind("mu_", &mu_); // Default 1.2 00105 bind("phi_", &phi_); // Default 4 00106 00107 bind("timeout_", &timeout_); // Default 2 seconds 00108 00109 bind("overhead_", &overhead_); // Default 0 00110 00111 bind("useFineGrain_", &useFineGrain_); // Default FALSE 00112 bind("kfrtt_", &kfrtt_); // Default 0.9 00113 bind("kxrtt_", &kxrtt_); // Default 0.01 00114 00115 bind("debugEnable_", &debugEnable_); // Default FALSE 00116 00117 bind("rap_base_hdr_size_", &rap_base_hdr_size_); 00118 00119 bind("dpthresh_", &dpthresh_); 00120 00121 frtt_ = xrtt_ = srtt_; 00122 } |
|
|
Definition at line 125 of file rap.cc. References stop().
00126 {
00127 // fprintf(stderr, "%g: rap agent %s(%d) stops.\n",
00128 // Scheduler::instance().clock(), name(), addr());
00129 // Tcl::instance().eval("[Simulator instance] flush-trace");
00130 stop();
00131 }
|
Here is the call graph for this function:

|
|
Definition at line 326 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::dst_, Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00327 {
00328 char wrk[256];
00329 int n;
00330 double curTime = (&Scheduler::instance() == NULL ? 0 :
00331 Scheduler::instance().clock());
00332
00333 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s",
00334 curTime, here_.addr_, dst_.addr_, name);
00335 n = strlen(wrk);
00336 wrk[n] = '\n';
00337 wrk[n+1] = 0;
00338 if (channel_)
00339 (void)Tcl_Write(channel_, wrk, n+1);
00340 // keep agent trace name
00341 if (traceName_ != NULL)
00342 delete[] traceName_;
00343 traceName_ = new char[strlen(name)+1];
00344 strcpy(traceName_, name);
00345 }
|
Here is the call graph for this function:

|
|
|
Definition at line 700 of file rap.cc. References curseq_, flags_, RF_COUNTPKT, and start(). Referenced by command().
00701 {
00702 flags_ |= RF_COUNTPKT;
00703 curseq_ = delta;
00704 start();
00705 }
|
Here is the call graph for this function:

|
|
Definition at line 517 of file agent.cc. References Packet::allocdata(), and Agent::allocpkt().
|
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
Definition at line 162 of file rap.h. References flags_, and RF_ANYACK. Referenced by QA::get_data(), and RecvAck().
|
|
|
Definition at line 372 of file agent.cc. References Agent::app_. Referenced by HttpMInvalCache::command(), Application::command(), TcpApp::TcpApp(), and TcpApp::~TcpApp().
00373 {
00374 app_ = app;
00375 }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 377 of file agent.cc. Referenced by Agent::command().
00378 {
00379 }
|
|
||||||||||||
|
Reimplemented from Agent. Definition at line 222 of file rap.cc. References advanceby(), Agent::command(), listen(), start(), and stop().
00223 {
00224 if (argc == 2) {
00225 if (strcmp(argv[1], "start") == 0) {
00226 start();
00227 // return TCL_OK, so the calling function knows that
00228 // the command has been processed
00229 return (TCL_OK);
00230 } else if (strcmp(argv[1], "stop") == 0) {
00231 stop();
00232 return (TCL_OK);
00233 } else if (strcmp(argv[1], "listen") == 0) {
00234 listen();
00235 return (TCL_OK);
00236 }
00237 } else if (argc == 3) {
00238 if (strcmp(argv[1], "advanceby") == 0) {
00239 advanceby(atoi(argv[2]));
00240 return (TCL_OK);
00241 }
00242 }
00243
00244
00245 // If the command hasn't been processed by RapAgent()::command,
00246 // call the command() function for the base class
00247 return (Agent::command(argc, argv));
00248 }
|
Here is the call graph for this function:

|
|
Definition at line 389 of file agent.cc. Referenced by Agent::command().
00390 {
00391 /*
00392 dst_ = dst;
00393 */
00394 }
|
|
|
Definition at line 164 of file rap.h. References flags_, and RF_COUNTPKT. Referenced by IpgTimeout(), and RecvAck().
00164 { return flags_ & RF_COUNTPKT; }
|
|
|
||||||||||||
|
Definition at line 102 of file object.cc. References NsObject::debug_.
00103 {
00104 if (!debug_)
00105 return;
00106 va_list ap;
00107 va_start(ap, fmt);
00108 vprintf(fmt, ap);
00109 }
|
|
|
Definition at line 177 of file rap.h. References alpha_, fixIpg_, ipg_, and srtt_. Referenced by RttTimeout().
|
|
||||||||||||||||
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 93 of file agent.cc. References ns_addr_t::addr_, Agent::defttl_, NsObject::delay_bind_dispatch(), Agent::dst_, Agent::fid_, Agent::flags_, Agent::here_, ns_addr_t::port_, and Agent::prio_. Referenced by TcpAgent::delay_bind_dispatch(), TcpSink::delay_bind_dispatch(), and LDPAgent::delay_bind_dispatch().
00094 {
00095 if (delay_bind(varName, localName, "agent_addr_", (int*)&(here_.addr_), tracer)) return TCL_OK;
00096 if (delay_bind(varName, localName, "agent_port_", (int*)&(here_.port_), tracer)) return TCL_OK;
00097 if (delay_bind(varName, localName, "dst_addr_", (int*)&(dst_.addr_), tracer)) return TCL_OK;
00098 if (delay_bind(varName, localName, "dst_port_", (int*)&(dst_.port_), tracer)) return TCL_OK;
00099 if (delay_bind(varName, localName, "fid_", (int*)&fid_, tracer)) return TCL_OK;
00100 if (delay_bind(varName, localName, "prio_", (int*)&prio_, tracer)) return TCL_OK;
00101 if (delay_bind(varName, localName, "flags_", (int*)&flags_, tracer)) return TCL_OK;
00102 if (delay_bind(varName, localName, "ttl_", &defttl_, tracer)) return TCL_OK;
00103 if (delay_bind(varName, localName, "class_", (int*)&fid_, tracer)) return TCL_OK;
00104 return Connector::delay_bind_dispatch(varName, localName, tracer);
00105 }
|
Here is the call graph for this function:

|
|
Reimplemented from NsObject. Reimplemented in BayFullTcpAgent, LDPAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, TcpSink, TcpAgent, and VegasTcpAgent. Definition at line 78 of file agent.cc. References NsObject::delay_bind_init_all(). Referenced by TcpAgent::delay_bind_init_all(), TcpSink::delay_bind_init_all(), and LDPAgent::delay_bind_init_all().
00079 {
00080 delay_bind_init_one("agent_addr_");
00081 delay_bind_init_one("agent_port_");
00082 delay_bind_init_one("dst_addr_");
00083 delay_bind_init_one("dst_port_");
00084 delay_bind_init_one("fid_");
00085 delay_bind_init_one("prio_");
00086 delay_bind_init_one("flags_");
00087 delay_bind_init_one("ttl_");
00088 delay_bind_init_one("class_");
00089 Connector::delay_bind_init_all();
00090 }
|
Here is the call graph for this function:

|
|
Definition at line 222 of file agent.cc. References ns_addr_t::addr_, Agent::dst_, Agent::flushAVar(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00223 {
00224 char wrk[256];
00225
00226 // XXX we don't know InstVar outside of Tcl! Is there any
00227 // tracedvars hidden in InstVar? If so, shall we have a tclclInt.h?
00228 TracedVar* var = tracedvar_;
00229 for ( ; var != 0; var = var->next_)
00230 flushAVar(var);
00231
00232 // we need to flush all var values to trace file,
00233 // so nam can do backtracing
00234 sprintf(wrk, "a -t "TIME_FORMAT" -s %d -d %d -n %s -x",
00235 Scheduler::instance().clock(), here_.addr_,
00236 dst_.addr_, traceName_);
00237 if (traceName_ != NULL)
00238 delete[] traceName_;
00239 traceName_ = NULL;
00240 }
|
Here is the call graph for this function:

|
|
Definition at line 99 of file agent.h. References Agent::dst_, nsaddr_t, and ns_addr_t::port_. Referenced by DSDV_Agent::lost_link(), TcpAsymSink::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), rtProtoDV::sendpkt(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().
|
|
||||||||||||
|
Definition at line 114 of file connector.cc. References Connector::drop_, Packet::free(), and NsObject::recv().
00115 {
00116 if (drop_ != 0)
00117 drop_->recv(p, s);
00118 else
00119 Packet::free(p);
00120 }
|
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
|
|
|
Definition at line 707 of file rap.cc. References stop(). Referenced by RecvAck().
00708 {
00709 stop();
00710 Tcl::instance().evalf("%s done", this->name());
00711 }
|
Here is the call graph for this function:

|
|
Definition at line 165 of file rap.h. References fixIpg_. Referenced by QA::get_data().
00165 { fixIpg_ = fipg; }
|
|
|
Definition at line 101 of file agent.h. References packet_t, and Agent::type_. Referenced by CBR_Traffic::init().
00101 { return type_; }
|
|
|
Definition at line 147 of file rap.h. References debugEnable_. Referenced by AckLostPacket(), DestroyTransHistoryEntry(), and TimerLostPacket().
00147 { return debugEnable_; }
|
|
|
Definition at line 148 of file rap.h. References logfile_. Referenced by AckLostPacket(), DestroyTransHistoryEntry(), and TimerLostPacket().
00148 { return logfile_; }
|
|
|
Definition at line 145 of file rap.h. References seqno_. Referenced by AckLostPacket(), and TimerLostPacket().
00145 { return seqno_; }
|
|
|
Definition at line 146 of file rap.h. References timeout_. Referenced by TimerLostPacket().
00146 { return timeout_; }
|
|
|
Implements Handler. Reimplemented in LinkDelay, LL, AckRecons, and Snoop. Definition at line 91 of file object.cc. References NsObject::recv().
|
Here is the call graph for this function:

|
|
Definition at line 363 of file agent.cc. References Agent::app_, and Application::resume(). Referenced by FullTcpAgent::foutput(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), BayFullTcpAgent::output(), UdpAgent::sendmsg(), SA_Agent::sendmsg(), and RTPAgent::sendmsg().
|
Here is the call graph for this function:

|
|
Definition at line 173 of file rap.h. References beta_, fixIpg_, and ipg_. Referenced by LossHandler().
|
|
|
Definition at line 150 of file rap.h. References sessionLossCount_. Referenced by AckLostPacket(), and TimerLostPacket().
00150 { sessionLossCount_++; }
|
|
|
Definition at line 446 of file agent.cc. References hdr_nv::access(), hdr_flags::access(), hdr_ip::access(), hdr_cmn::access(), ns_addr_t::addr_, Scheduler::clock(), hdr_flags::cong_action_, hdr_ip::daddr(), Agent::defttl_, hdr_cmn::direction(), hdr_ip::dport(), Agent::dst_, hdr_flags::ecn_, hdr_flags::ecn_capable_, hdr_flags::ecn_to_echo_, hdr_flags::eln_, hdr_cmn::error(), Agent::fid_, hdr_ip::flowid(), hdr_flags::fs_, NixNode::GetNixVector(), NixNode::GetNodeObject(), hdr_nv::h_used, Agent::here_, hdr_cmn::iface(), Scheduler::instance(), hdr_flags::no_ts_, hdr_cmn::NONE, hdr_nv::nv(), hdr_ip::offset(), hdr_nv::offset(), ns_addr_t::port_, hdr_flags::pri_, hdr_ip::prio(), Agent::prio_, hdr_cmn::ptype(), NixVec::Reset(), hdr_ip::saddr(), hdr_cmn::size(), Agent::size_, hdr_ip::sport(), hdr_cmn::timestamp(), hdr_ip::ttl(), Agent::type_, hdr_cmn::uid(), and Agent::uidcnt_. Referenced by Agent::allocpkt(), and PingResponder::recv().
00447 {
00448 hdr_cmn* ch = hdr_cmn::access(p);
00449 ch->uid() = uidcnt_++;
00450 ch->ptype() = type_;
00451 ch->size() = size_;
00452 ch->timestamp() = Scheduler::instance().clock();
00453 ch->iface() = UNKN_IFACE.value(); // from packet.h (agent is local)
00454 ch->direction() = hdr_cmn::NONE;
00455
00456 ch->error() = 0; /* pkt not corrupt to start with */
00457
00458 hdr_ip* iph = hdr_ip::access(p);
00459 iph->saddr() = here_.addr_;
00460 iph->sport() = here_.port_;
00461 iph->daddr() = dst_.addr_;
00462 iph->dport() = dst_.port_;
00463
00464 //DEBUG
00465 //if (dst_ != -1)
00466 // printf("pl break\n");
00467
00468 iph->flowid() = fid_;
00469 iph->prio() = prio_;
00470 iph->ttl() = defttl_;
00471
00472 hdr_flags* hf = hdr_flags::access(p);
00473 hf->ecn_capable_ = 0;
00474 hf->ecn_ = 0;
00475 hf->eln_ = 0;
00476 hf->ecn_to_echo_ = 0;
00477 hf->fs_ = 0;
00478 hf->no_ts_ = 0;
00479 hf->pri_ = 0;
00480 hf->cong_action_ = 0;
00481 #ifdef HAVE_STL
00482
00483 hdr_nv* nv = hdr_nv::access(p);
00484 if (0)
00485 printf("Off hdr_nv %d, ip_hdr %d myaddr %ld\n",
00486 hdr_nv::offset(), hdr_ip::offset(), here_.addr_);
00487 NixNode* pNixNode = NixNode::GetNodeObject(here_.addr_);
00488 if (0)
00489 printf("Node Object %p\n", pNixNode);
00490 if (pNixNode) {
00491 // If we get non-null, indicates nixvector routing in use
00492 // Delete any left over nv in the packet
00493 // Get a nixvector to the target (may create new)
00494 NixVec* pNv = pNixNode->GetNixVector(dst_.addr_);
00495 pNv->Reset();
00496 nv->nv() = pNv; // And set the nixvec in the packet
00497 nv->h_used = 0; // And reset used portion to 0
00498 }
00499 #endif //HAVE_STL
00500 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 250 of file agent.cc. References min, OldValue::next_, Agent::oldValueList_, TRACEVAR_MAXVALUELENGTH, OldValue::val_, and OldValue::var_. Referenced by Agent::trace().
00251 {
00252 OldValue *p = new OldValue;
00253 assert(p != NULL);
00254 strncpy(p->val_, value, min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00255 p->var_ = v;
00256 p->next_ = NULL;
00257 if (oldValueList_ == NULL)
00258 oldValueList_ = p;
00259 else {
00260 p->next_ = oldValueList_;
00261 oldValueList_ = p;
00262 }
00263 }
|
|
|
Definition at line 160 of file rap.h. References ipg_. Referenced by QA::get_data(), and QA::rate().
00160 { return ipg_; }
|
|
|
Definition at line 393 of file rap.cc. References Agent::app_, counting_pkt(), curseq_, dctr_, Debug(), debugEnable_, fixIpg_, frtt_, Process::get_data(), Scheduler::instance(), ipg_, ipgTimer_, is_stopped(), logfile_, LossDetection(), LossHandler(), overhead_, RAP_TIMER_BASED, TimerHandler::resched(), SendPacket(), seqno_, Agent::size_, Random::uniform(), useFineGrain_, and xrtt_. Referenced by start(), and timeout().
00394 {
00395 double waitPeriod; // Time before next transmission
00396
00397 Debug(debugEnable_, logfile_,
00398 "%.3f: IPG Timeout.\n", Scheduler::instance().clock());
00399
00400 if (LossDetection(RAP_TIMER_BASED))
00401 LossHandler();
00402 else if (!counting_pkt()) {
00403 if (app_) {
00404 int nbytes;
00405 AppData* data = app_->get_data(nbytes);
00406 // Missing data in application. What should we do??
00407 // For now, simply schedule the next SendPacket().
00408 // If the application has nothing to send, it'll stop
00409 // the rap agent later on.
00410 if (data != NULL) {
00411 SendPacket(nbytes, data);
00412 dctr_++;
00413 }
00414 } else {
00415 // If RAP doesn't have application, just go ahead and
00416 // send packet
00417 SendPacket(size_);
00418 dctr_++;
00419 }
00420 } else if (seqno_ < curseq_) {
00421 SendPacket(size_);
00422 dctr_++;
00423 }
00424
00425 // XXX If we only bound IPG in DecreaseIpg(), the thresholding will
00426 // happen immediately because DecreaseIpg() isn't called immediately.
00427 // So we do it here.
00428 if (fixIpg_ != 0)
00429 ipg_ = fixIpg_;
00430
00431 if (useFineGrain_)
00432 waitPeriod = frtt_ / xrtt_ * ipg_;
00433 else
00434 waitPeriod = ipg_;
00435 // By this point, we may have been stopped by applications above
00436 // Thus, do not reschedule a timer if we are stopped.
00437 if (!is_stopped())
00438 ipgTimer_.resched(waitPeriod + Random::uniform(overhead_));
00439 }
|
Here is the call graph for this function:

|
|
Definition at line 163 of file rap.h. References flags_, and RF_STOP. Referenced by IpgTimeout().
|
|
|
Definition at line 61 of file object.h. References NsObject::debug_.
00061 { return debug_; }
|
|
|
Reimplemented from Agent. Definition at line 189 of file rap.cc. References DebugEnable(), debugEnable_, Address::instance(), logfile_, and Address::NodeShift_. Referenced by command().
00190 {
00191 if (debugEnable_)
00192 logfile_ = DebugEnable(this->addr() >>
00193 Address::instance().NodeShift_[1]);
00194 }
|
Here is the call graph for this function:

|
|
Definition at line 242 of file agent.cc. References OldValue::next_, Agent::oldValueList_, and OldValue::var_. Referenced by Agent::trace().
00243 {
00244 OldValue *p = oldValueList_;
00245 while ((p != NULL) && (p->var_ != v))
00246 p = p->next_;
00247 return p;
00248 }
|
|
||||||||||||
|
Definition at line 556 of file rap.cc. References ackHdr, AckLostPacket(), currentTime, Debug(), debugEnable_, TransHistoryEntry::departureTime, DestroyTransHistoryEntry(), EqualStatus(), FALSE, logfile_, List::Mapcar(), numLosses, List::Purge(), RAP_ACK_BASED, RAP_PURGED, RAP_TIMER_BASED, rapAgent, List::Size(), TimerLostPacket(), transmissionHistory_, and TRUE. Referenced by IpgTimeout(), and RecvAck().
00557 {
00558 TransHistoryEntry key(0, RAP_PURGED);
00559
00560 currentTime = key.departureTime;
00561 ackHdr = ackHeader;
00562 rapAgent = this;
00563 numLosses = 0;
00564
00565 switch(type) {
00566 case RAP_TIMER_BASED:
00567 transmissionHistory_.Mapcar(TimerLostPacket);
00568 break;
00569
00570 case RAP_ACK_BASED:
00571 transmissionHistory_.Mapcar(AckLostPacket);
00572 break;
00573
00574 default:
00575 assert(FALSE);
00576 }
00577
00578 Debug(debugEnable_, logfile_,
00579 "- %d losses detected\n", numLosses);
00580
00581 Debug(debugEnable_, logfile_,
00582 "- history size %d\n", transmissionHistory_.Size());
00583
00584 transmissionHistory_.Purge((void *) &key,
00585 EqualStatus, // Purge PURGED packets
00586 DestroyTransHistoryEntry);
00587
00588 Debug(debugEnable_, logfile_,
00589 "- history size %d\n", transmissionHistory_.Size());
00590
00591 if (numLosses)
00592 return TRUE;
00593 else
00594 return FALSE;
00595 }
|
Here is the call graph for this function:

|
|
Definition at line 610 of file rap.cc. References Debug(), debugEnable_, IncreaseIpg(), Scheduler::instance(), ipg_, logfile_, List::Mapcar(), MarkInactive(), overhead_, TimerHandler::resched(), rttTimer_, srtt_, and transmissionHistory_. Referenced by IpgTimeout(), and RecvAck().
00611 {
00612 IncreaseIpg(); // Multiplicative decrease in rate
00613
00614 double debugIpg = ipg_ + overhead_ / 2;
00615 Debug(debugEnable_, logfile_,
00616 "- ipg increased at %.3f to %f\n",
00617 Scheduler::instance().clock(), debugIpg);
00618
00619 transmissionHistory_.Mapcar(MarkInactive);
00620 Debug(debugEnable_, logfile_,
00621 "- window full packets marked inactive\n");
00622
00623 rttTimer_.resched(srtt_);
00624 }
|
Here is the call graph for this function:

|
|
Definition at line 310 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Scheduler::clock(), Agent::here_, Scheduler::instance(), TIME_FORMAT, and Agent::traceName_. Referenced by Agent::command().
00311 {
00312 char wrk[256];
00313 int n;
00314 double curTime = (&Scheduler::instance() == NULL ? 0 :
00315 Scheduler::instance().clock());
00316
00317 sprintf(wrk, "v -t "TIME_FORMAT" -e monitor_agent %d %s",
00318 curTime, here_.addr_, traceName_);
00319 n = strlen(wrk);
00320 wrk[n] = '\n';
00321 wrk[n+1] = 0;
00322 if (channel_)
00323 (void)Tcl_Write(channel_, wrk, n+1);
00324 }
|
Here is the call graph for this function:

|
|
Definition at line 97 of file agent.h. References Agent::here_, nsaddr_t, and ns_addr_t::port_. Referenced by LmsAgent::pkt2agent(), TcpAsymSink::recv(), MIPBSAgent::recv(), LmsAgent::recv(), HttpInvalAgent::recv(), CtrMcastEncap::recv(), IntTcpAgent::rxmit_last(), IntTcpAgent::send_one(), LmsReceiver::send_refresh(), IcmpAgent::sendredirect(), TcpAgent::trace_event(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().
|
|
||||||||||||
|
Reimplemented in CMUTrace. Definition at line 96 of file object.cc. References Packet::free().
00097 {
00098 Packet::free(p);
00099 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented from Agent. Definition at line 297 of file rap.cc. References hdr_rap::access(), Agent::app_, Packet::datalen(), Debug(), debugEnable_, hdr_rap::flags(), Packet::free(), Scheduler::instance(), logfile_, Process::process_data(), RecvAck(), RH_ACK, RH_DATA, SendAck(), hdr_rap::seqno(), UpdateLastHole(), and Packet::userdata().
00298 {
00299 Debug(debugEnable_, logfile_,
00300 "%.3f: RAP packet received.\n", Scheduler::instance().clock());
00301
00302 hdr_rap* hdr = hdr_rap::access(pkt); // Access RAP header
00303
00304 switch (hdr->flags()) {
00305 case RH_DATA:
00306 UpdateLastHole(hdr->seqno());
00307 SendAck(hdr->seqno());
00308 if ((pkt->datalen() > 0) && app_)
00309 // We do have user data, process it
00310 app_->process_data(pkt->datalen(), pkt->userdata());
00311 break;
00312 case RH_ACK:
00313 RecvAck(hdr);
00314 break;
00315 default:
00316 fprintf(stderr,
00317 "RAP agent %s received a packet with unknown flags %x",
00318 name(), hdr->flags());
00319 break;
00320 }
00321 Packet::free(pkt); // Discard the packet
00322 }
|
Here is the call graph for this function:

|
|
Definition at line 331 of file rap.cc. References anyack(), counting_pkt(), curseq_, Debug(), debugEnable_, TransHistoryEntry::departureTime, EqualSeqno(), finish(), flags_, ipg_, logfile_, LossDetection(), LossHandler(), RAP_ACK_BASED, RAP_INACTIVE, RAP_SENT, RF_ANYACK, hdr_rap::seqno_, List::SetRemove(), srtt_, TransHistoryEntry::status, transmissionHistory_, and UpdateTimeValues(). Referenced by recv().
00332 {
00333 double sampleRtt;
00334 TransHistoryEntry *old, key(ackHeader->seqno_);
00335
00336 assert(ackHeader->seqno_ > 0);
00337
00338 Debug(debugEnable_, logfile_,
00339 "- ack %d\n", ackHeader->seqno_);
00340
00341 old = (TransHistoryEntry *)
00342 transmissionHistory_.SetRemove((void *) &key, EqualSeqno);
00343
00344 if (old != NULL) {
00345 Debug(debugEnable_, logfile_,
00346 "- found in transmission history\n");
00347 assert((old->status == RAP_SENT) || (old->status == RAP_INACTIVE));
00348
00349 // Get sample rtt
00350 sampleRtt = key.departureTime - old->departureTime;
00351
00352 UpdateTimeValues(sampleRtt);
00353
00354 delete old;
00355 }
00356
00357 if (!anyack()) {
00358 flags_ |= RF_ANYACK;
00359 ipg_ = srtt_;
00360 }
00361
00362 if (LossDetection(RAP_ACK_BASED, ackHeader))
00363 LossHandler();
00364
00365 // XXX We only stop by sequence number when we are in
00366 // "counting sequence number" mode. -- haoboy
00367 if (counting_pkt() && (ackHeader->seqno_ >= curseq_))
00368 finish();
00369 }
|
Here is the call graph for this function:

|
|
Definition at line 354 of file agent.cc. References Agent::app_, and Application::recv(). Referenced by DelAckSink::recv(), TcpSink::recv(), QSTcpSink::recv(), FullTcpAgent::recv(), and TcpAsymSink::recv().
|
Here is the call graph for this function:

|
|
Reimplemented from NsObject. Definition at line 78 of file agent.h.
00078 {};
|
|
|
Reimplemented in BayFullTcpAgent, HashClassifier, IvsSource, dsREDQueue, DiffusionRate, SinkAgent, DiffusionAgent, FloodingAgent, OmniMcastAgent, LinkDelay, CBQueue, DropTail, ErrorModel, PIQueue, Queue< T >, RedPDQueue, REDQueue, REMQueue, RIOQueue, Snoop, FackTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, Sack1TcpAgent, TcpSink, DelAckSink, TcpAgent, VegasTcpAgent, toraAgent, and Queue< T >. Definition at line 70 of file object.cc. Referenced by NsObject::command().
00071 {
00072 }
|
|
|
Definition at line 447 of file rap.cc. References dctr_, Debug(), debugEnable_, DecreaseIpg(), dpthresh_, Scheduler::instance(), ipg_, logfile_, overhead_, TimerHandler::resched(), rttTimer_, and srtt_. Referenced by start(), and timeout().
00448 {
00449 Debug(debugEnable_, logfile_,
00450 "%.3f: RTT Timeout.\n", Scheduler::instance().clock());
00451
00452 // During the past srtt_, we are supposed to send out srtt_/ipg_
00453 // packets. If we sent less than that, we may not increase rate
00454 if (100*dctr_*(ipg_/srtt_) >= dpthresh_)
00455 DecreaseIpg(); // Additive increase in rate
00456 else
00457 Debug(debugEnable_, logfile_,
00458 "- %f Cannot increase rate due to insufficient data.\n",
00459 Scheduler::instance().clock());
00460 dctr_ = 0;
00461
00462 double debugIpg = ipg_ + overhead_ / 2;
00463 Debug(debugEnable_, logfile_,
00464 "- ipg decreased at %.3f to %f\n",
00465 Scheduler::instance().clock(), debugIpg);
00466
00467 rttTimer_.resched(srtt_);
00468 }
|
Here is the call graph for this function:

|
|
Reimplemented in SRMAgent. Definition at line 89 of file agent.h. References Agent::sendmsg().
00089 { sendmsg(nbytes); }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in HttpInvalAgent. Definition at line 84 of file agent.h. References Agent::sendmsg().
00084 { sendmsg(sz, data, 0); }
|
Here is the call graph for this function:

|
||||||||||||
Here is the call graph for this function:

|
|
Definition at line 633 of file rap.cc. References hdr_cmn::access(), hdr_rap::access(), Agent::allocpkt(), Debug(), debugEnable_, hdr_rap::flags(), hdr_rap::lastMiss, lastMiss_, hdr_rap::lastRecv, lastRecv_, logfile_, hdr_rap::prevRecv, prevRecv_, PT_RAP_ACK, rap_base_hdr_size_, RH_ACK, Agent::send(), hdr_rap::seqno(), hdr_cmn::size(), and Agent::type_. Referenced by recv().
00634 {
00635 type_ = PT_RAP_ACK;
00636 Packet* pkt = allocpkt(); // Create a new packet
00637 hdr_rap* hdr = hdr_rap::access(pkt); // Access header
00638
00639 hdr->seqno() = seqNum;
00640 hdr->flags() = RH_ACK;
00641
00642 hdr->lastRecv = lastRecv_;
00643 hdr->lastMiss = lastMiss_;
00644 hdr->prevRecv = prevRecv_;
00645
00646 hdr_cmn *ch = hdr_cmn::access(pkt);
00647 ch->size() = rap_base_hdr_size_;
00648
00649 send(pkt, 0);
00650 Debug(debugEnable_, logfile_,
00651 "- ack sent %u [%u %u %u]\n",
00652 seqNum, lastRecv_, lastMiss_, prevRecv_);
00653 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in SA_Agent, RTPAgent, UdpAgent, LmsSender, SRMAgent, FullTcpAgent, TcpAgent, TfrcAgent, and SimpleTcpAgent. Definition at line 415 of file agent.cc.
00416 {
00417 }
|
|
||||||||||||||||
|
Reimplemented in UdpAgent. Definition at line 400 of file agent.cc. References abort(). Referenced by Agent::command(), Application::send(), Agent::send(), TrafficTrace::timeout(), TelnetApp::timeout(), EXPOO_Traffic::timeout(), and CBR_PP_Traffic::timeout().
00401 {
00402 fprintf(stderr,
00403 "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00404 abort();
00405 }
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 256 of file rap.cc. References hdr_cmn::access(), hdr_rap::access(), Agent::allocpkt(), Debug(), debugEnable_, EqualSeqno(), hdr_rap::flags(), hdr_rap::lastMiss, hdr_rap::lastRecv, logfile_, hdr_rap::prevRecv, PT_RAP_DATA, RH_DATA, Agent::send(), hdr_rap::seqno(), seqno_, Packet::setdata(), List::SetInsert(), hdr_cmn::size(), hdr_rap::size(), AppData::size(), Agent::size_, transmissionHistory_, and Agent::type_. Referenced by IpgTimeout().
00257 {
00258 TransHistoryEntry *pktInfo;
00259 Packet *pkt;
00260
00261 type_ = PT_RAP_DATA;
00262 if (data)
00263 pkt = allocpkt(data->size());
00264 else
00265 pkt = allocpkt();
00266
00267 // Fill in RAP headers
00268 hdr_rap* hdr = hdr_rap::access(pkt);
00269 hdr->seqno() = ++seqno_; // Start counting from 1;
00270 hdr->lastRecv = hdr->lastMiss = hdr->prevRecv = 0; // Ignore @ sender
00271 hdr->flags() = RH_DATA;
00272 if (data) {
00273 hdr->size() = data->size();
00274 pkt->setdata(data);
00275 } else {
00276 hdr->size() = size_;
00277 }
00278 // XXX Simply set packet size to the given ADU's nominal size.
00279 // Make sure that the size is reasonable!!
00280 hdr_cmn *ch = hdr_cmn::access(pkt);
00281 ch->size() = nbytes;
00282
00283 send(pkt, 0);
00284 pktInfo = new TransHistoryEntry(seqno_);
00285 transmissionHistory_.SetInsert((void *) pktInfo, EqualSeqno);
00286 int debugSeqno = seqno_;
00287 Debug(debugEnable_, logfile_,
00288 "- packet %d sent\n", debugSeqno);
00289 }
|
Here is the call graph for this function:

|
||||||||||||||||
|
|
|
||||||||||||||||||||
|
Definition at line 407 of file agent.cc. References abort(). Referenced by Agent::command().
00409 {
00410 fprintf(stderr,
00411 "Agent::sendmsg(int, AppData*, const char*) not implemented\n");
00412 abort();
00413 }
|
Here is the call graph for this function:

|
|
Definition at line 100 of file agent.h. References Agent::type_. Referenced by Agent::command(), HttpUInvalClass::create(), RA_Traffic::init(), POO_Traffic::init(), EXPOO_Traffic::init(), CBR_Traffic::init(), and CBR_PP_Traffic::init().
00100 { type_ = pkttype; }
|
|
|
Reimplemented in FullTcpAgent. Definition at line 95 of file agent.h. References Agent::size_. Referenced by rtProtoDV::command(), RLM_Sender::command(), imepAgent::getResponseListSize(), LandmarkAgent::makeUpdate(), Agent::recv(), SSMSRMAgent::send_glb_sess(), SSMSRMAgent::send_loc_sess(), SSMSRMAgent::send_rep_sess(), SRMAgent::send_sess(), and TelnetApp::timeout().
00095 { return size_; }
|
|
|
Definition at line 159 of file rap.h. References srtt_. Referenced by QA::get_data(), and QA::UpdateInterval().
00159 { return srtt_; }
|
|
|
Definition at line 171 of file rap.cc. References Scheduler::clock(), Debug(), DebugEnable(), debugEnable_, flags_, Scheduler::instance(), Address::instance(), IpgTimeout(), logfile_, Address::NodeShift_, RF_STOP, RttTimeout(), and startTime_. Referenced by advanceby(), and command().
00172 {
00173 if (debugEnable_)
00174 logfile_ = DebugEnable(this->addr() >>
00175 Address::instance().NodeShift_[1]);
00176 else
00177 // Should initialize it regardless of whether it'll be used.
00178 logfile_ = NULL;
00179 Debug(debugEnable_, logfile_, "%.3f: RAP start.\n",
00180 Scheduler::instance().clock());
00181
00182 flags_ = flags_ & ~RF_STOP;
00183 startTime_ = Scheduler::instance().clock();
00184 RttTimeout(); // Decreases initial IPG
00185 IpgTimeout();
00186 }
|
Here is the call graph for this function:

|
|
Definition at line 196 of file rap.cc. References TimerHandler::cancel(), Scheduler::clock(), Debug(), debugEnable_, flags_, Scheduler::instance(), ipgTimer_, logfile_, RF_STOP, rttTimer_, seqno_, startTime_, TimerHandler::status(), stopTime_, and TIMER_PENDING. Referenced by command(), finish(), QA::output(), QA::stop(), MediaApp::stop(), and ~RapAgent().
00197 {
00198 Debug(debugEnable_, logfile_,
00199 "%.3f: RAP stop.\n", Scheduler::instance().clock());
00200
00201 // Cancel the timer only when there is one
00202 if (ipgTimer_.status() == TIMER_PENDING)
00203 ipgTimer_.cancel();
00204 if (rttTimer_.status() == TIMER_PENDING)
00205 rttTimer_.cancel();
00206
00207 stopTime_ = Scheduler::instance().clock();
00208 int debugSeqno = seqno_;
00209 Debug(debugEnable_, logfile_,
00210 "- numPackets %d, totalTime %f\n",
00211 debugSeqno, stopTime_ - startTime_);
00212 flags_ |= RF_STOP;
00213 }
|
Here is the call graph for this function:

|
|
Definition at line 48 of file connector.h. References Connector::target_. Referenced by JoBS::assignRateDropsADC(), FQ::deque(), QSAgent::recv(), and MIPMHAgent::reg().
00048 { return target_; }
|
|
|
Reimplemented from Agent. Definition at line 378 of file rap.cc. References FALSE, IpgTimeout(), RAP_IPG_TIMEOUT, RAP_RTT_TIMEOUT, and RttTimeout(). Referenced by RttTimer::expire(), and IpgTimer::expire().
00379 {
00380 if (type == RAP_IPG_TIMEOUT)
00381 IpgTimeout();
00382 else if (type == RAP_RTT_TIMEOUT)
00383 RttTimeout();
00384 else
00385 assert(FALSE);
00386 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpAgent. Definition at line 266 of file agent.cc. References ns_addr_t::addr_, Agent::channel_, Agent::dst_, Agent::here_, Agent::insertOldValue(), Scheduler::instance(), Agent::lookupOldValue(), min, TIME_FORMAT, Agent::traceName_, TRACEVAR_MAXVALUELENGTH, and OldValue::val_. Referenced by TcpAgent::trace().
00267 {
00268 if (channel_ == 0)
00269 return;
00270 char wrk[256], value[128];
00271 int n;
00272
00273 // XXX we need to keep track of old values. What's the best way?
00274 v->value(value, 128);
00275
00276 // XXX hack: how do I know ns has not started yet?
00277 // if there's nothing in value, return
00278 static int started = 0;
00279 if (!started) {
00280 Tcl::instance().evalc("[Simulator instance] is-started");
00281 if (Tcl::instance().result()[0] == '0')
00282 // Simulator not started, do nothing
00283 return;
00284 // remember for next time (so we don't always have to call to tcl)
00285 started = 1;
00286 };
00287
00288 OldValue *ov = lookupOldValue(v);
00289 if (ov != NULL) {
00290 sprintf(wrk,
00291 "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -o %s -T v",
00292 Scheduler::instance().clock(), here_.addr_,
00293 dst_.addr_, v->name(), traceName_, value, ov->val_);
00294 strncpy(ov->val_,
00295 value,
00296 min(strlen(value)+1, TRACEVAR_MAXVALUELENGTH));
00297 } else {
00298 // if there is value, insert it into old value list
00299 sprintf(wrk, "f -t "TIME_FORMAT" -s %d -d %d -n %s -a %s -v %s -T v",
00300 Scheduler::instance().clock(), here_.addr_,
00301 dst_.addr_, v->name(), traceName_, value);
00302 insertOldValue(v, value);
00303 }
00304 n = strlen(wrk);
00305 wrk[n] = '\n';
00306 wrk[n+1] = 0;
00307 (void)Tcl_Write(channel_, wrk, n+1);
00308 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpAgent. Definition at line 146 of file agent.h.
00146 {}
|
|
|
Definition at line 662 of file rap.cc. References lastMiss_, lastRecv_, and prevRecv_. Referenced by recv().
00663 {
00664 assert(seqNum > 0);
00665
00666 if (seqNum > (lastRecv_ + 1)) {
00667 prevRecv_ = lastRecv_;
00668 lastRecv_ = seqNum;
00669 lastMiss_ = seqNum - 1;
00670 return;
00671 }
00672
00673 if (seqNum == (lastRecv_ + 1)) {
00674 lastRecv_ = seqNum;
00675 return;
00676 }
00677
00678 if ((lastMiss_ < seqNum) && (seqNum <= lastRecv_)) // Duplicate
00679 return;
00680
00681 if (seqNum == lastMiss_) {
00682 if ((prevRecv_ + 1) == seqNum) // Hole filled
00683 prevRecv_ = lastMiss_ = 0;
00684 else
00685 lastMiss_--;
00686
00687 return;
00688 }
00689
00690 if ((prevRecv_ < seqNum) && (seqNum < lastMiss_)) {
00691 prevRecv_ = seqNum;
00692 return;
00693 }
00694
00695 assert(seqNum <= prevRecv_); // Pretty late...
00696 }
|
|
|
Definition at line 142 of file rap.cc. References Debug(), debugEnable_, delta_, FALSE, frtt_, kfrtt_, kxrtt_, logfile_, mu_, phi_, srtt_, timeout_, TRUE, useFineGrain_, variance_, and xrtt_. Referenced by RecvAck().
00143 {
00144 double diff;
00145 static int initial = TRUE;
00146
00147 if (initial) {
00148 frtt_ = xrtt_ = srtt_ = sampleRtt; // First sample, no history
00149 variance_ = 0;
00150 initial = FALSE;
00151 }
00152
00153 diff = sampleRtt - srtt_;
00154 srtt_ += delta_ * diff;
00155
00156 diff = (diff < 0) ? diff * -1 : diff; // Take mod
00157 variance_ += delta_ * (diff - variance_);
00158
00159 timeout_ = mu_ * srtt_ + phi_ * variance_;
00160
00161 if (useFineGrain_) {
00162 frtt_ = (1 - kfrtt_) * frtt_ + kfrtt_ * sampleRtt;
00163 xrtt_ = (1 - kxrtt_) * xrtt_ + kxrtt_ * sampleRtt;
00164 }
00165
00166 double debugSrtt = srtt_; // $%#& stoopid compiler
00167 Debug(debugEnable_, logfile_,
00168 "- srtt updated to %f\n", debugSrtt);
00169 }
|
Here is the call graph for this function:

|
|
Definition at line 208 of file rap.h. Referenced by DecreaseIpg(), and RapAgent(). |
|
|
Reimplemented in BayFullTcpAgent. Definition at line 134 of file agent.h. Referenced by Agent::attachApp(), Agent::idle(), IpgTimeout(), UdpAgent::recv(), SimpleTcpAgent::recv(), recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes(). |
|
|
Definition at line 207 of file rap.h. Referenced by IncreaseIpg(), and RapAgent(). |
|
|
Definition at line 130 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::flushAVar(), Agent::monitorAgentTrace(), TcpAsymSink::recv(), Agent::trace(), TcpAgent::traceAll(), TcpAsymAgent::traceAll(), TcpAgent::traceVar(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar(). |
|
|
Definition at line 204 of file rap.h. Referenced by advanceby(), IpgTimeout(), and RecvAck(). |
|
|
Definition at line 243 of file rap.h. Referenced by IpgTimeout(), and RttTimeout(). |
|
|
Reimplemented in FECModel, FloodAgent, and LandmarkAgent. Definition at line 66 of file object.h. Referenced by REDQueue::command(), RedPDQueue::command(), PushbackQueue::command(), NsObject::debug(), NsObject::delay_bind_dispatch(), RedPDQueue::enque(), PushbackQueue::enque(), NsObject::isdebug(), NsObject::NsObject(), TfrcAgent::recv(), PushbackQueue::reportDrop(), and REDQueue::reset(). |
|
|
Definition at line 228 of file rap.h. Referenced by GetDebugFlag(), IpgTimeout(), listen(), LossDetection(), LossHandler(), RapAgent(), recv(), RecvAck(), RttTimeout(), SendAck(), SendPacket(), start(), stop(), and UpdateTimeValues(). |
|
|
Definition at line 121 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 212 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 245 of file rap.h. Referenced by RapAgent(), and RttTimeout(). |
|
|
Definition at line 57 of file connector.h. Referenced by Connector::command(), Connector::drop(), and ErrorModel::recv(). |
|
|
Reimplemented in AckRecons. Definition at line 115 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::daddr(), Agent::delay_bind_dispatch(), Agent::deleteAgentTrace(), Agent::dport(), DSRProto::DSRProto(), Agent::flushAVar(), Agent::initpkt(), SRMAgent::recv(), SSMSRMAgent::recv(), NatAgent::recv(), SRMAgent::sendmsg(), PushbackAgent::sendMsg(), and Agent::trace(). |
|
|
Definition at line 145 of file agent.h. Referenced by TcpAgent::command(), and TcpAgent::trace_event(). |
|
|
Definition at line 118 of file agent.h. Referenced by Agent::delay_bind_dispatch(), AbsTcpAgent::flowid(), Agent::initpkt(), FullTcpAgent::recv(), CtrMcastEncap::recv(), AbsTcpAgent::send_batch(), Sack1TcpAgent::timeout(), and TcpAgent::trace_event(). |
|
|
Definition at line 249 of file rap.h. Referenced by DecreaseIpg(), FixIpg(), IncreaseIpg(), and IpgTimeout(). |
|
|
Reimplemented from Agent. Definition at line 248 of file rap.h. Referenced by advanceby(), anyack(), counting_pkt(), is_stopped(), RecvAck(), start(), and stop(). |
|
|
Definition at line 219 of file rap.h. Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues(). |
|
|
|
Definition at line 206 of file rap.h. Referenced by DecreaseIpg(), IncreaseIpg(), ipg(), IpgTimeout(), LossHandler(), RapAgent(), RecvAck(), and RttTimeout(). |
|
|
Definition at line 197 of file rap.h. Referenced by IpgTimeout(), and stop(). |
|
|
Definition at line 222 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 221 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 233 of file rap.h. Referenced by SendAck(), and UpdateLastHole(). |
|
|
Definition at line 232 of file rap.h. Referenced by SendAck(), and UpdateLastHole(). |
|
|
Definition at line 229 of file rap.h. Referenced by GetLogfile(), IpgTimeout(), listen(), LossDetection(), LossHandler(), recv(), RecvAck(), RttTimeout(), SendAck(), SendPacket(), start(), stop(), and UpdateTimeValues(). |
|
|
Definition at line 213 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 132 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 216 of file rap.h. Referenced by IpgTimeout(), LossHandler(), RapAgent(), and RttTimeout(). |
|
|
Definition at line 214 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 234 of file rap.h. Referenced by SendAck(), and UpdateLastHole(). |
|
|
Definition at line 119 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 238 of file rap.h. Referenced by RapAgent(), and SendAck(). |
|
|
Definition at line 198 of file rap.h. Referenced by LossHandler(), RttTimeout(), and stop(). |
|
|
Definition at line 202 of file rap.h. Referenced by GetSeqno(), IpgTimeout(), RapAgent(), SendPacket(), and stop(). |
|
|
Definition at line 203 of file rap.h. Referenced by IncrementLossCount(), and RapAgent(). |
|
|
|
Definition at line 210 of file rap.h. Referenced by DecreaseIpg(), LossHandler(), RapAgent(), RecvAck(), RttTimeout(), srtt(), and UpdateTimeValues(). |
|
|
|
|
|
Definition at line 226 of file rap.h. Referenced by stop(). |
|
|
|
Definition at line 224 of file rap.h. Referenced by GetTimeout(), RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 131 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::deleteAgentTrace(), Agent::flushAVar(), Agent::monitorAgentTrace(), and Agent::trace(). |
|
|
Definition at line 200 of file rap.h. Referenced by LossDetection(), LossHandler(), RecvAck(), and SendPacket(). |
|
|
Definition at line 117 of file agent.h. Referenced by Agent::get_pkttype(), Agent::initpkt(), FullTcpAgent::listen(), BayFullTcpAgent::listen(), SendAck(), SRMAgent::sendmsg(), SendPacket(), and Agent::set_pkttype(). |
|
|
Definition at line 68 of file agent.cc. Referenced by imepAgent::handlerControlTimer(), imepAgent::handlerReXmitTimer(), Agent::initpkt(), imepAgent::sendAck(), imepAgent::sendBeacon(), toraAgent::sendCLR(), imepAgent::sendHello(), toraAgent::sendQRY(), DSRAgent::sendUnknownFlow(), toraAgent::sendUPD(), and DSRAgent::xmitFailed(). |
|
|
Definition at line 218 of file rap.h. Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 211 of file rap.h. Referenced by RapAgent(), and UpdateTimeValues(). |
|
|
Definition at line 220 of file rap.h. Referenced by IpgTimeout(), RapAgent(), and UpdateTimeValues(). |
1.3.3