#include <tfrc.h>
Inheritance diagram for TfrcAgent:


Public Member Functions | |
| TfrcAgent () | |
| void | recv (Packet *, Handler *) |
| void | sendpkt () |
| void | nextpkt () |
| int | command (int argc, const char *const *argv) |
| void | start () |
| void | stop () |
| void | update_rtt (double tao, double now) |
| void | increase_rate (double p) |
| void | decrease_rate () |
| void | slowstart () |
| void | reduce_rate_on_no_feedback () |
| void | advanceby (int delta) |
| void | sendmsg (int nbytes, const char *flags=0) |
| 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 | timeout (int tno) |
| virtual void | sendmsg (int sz, AppData *, 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 | listen () |
| 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 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 | |
| TfrcSendTimer | send_timer_ |
| TfrcNoFeedbackTimer | NoFeedbacktimer_ |
| int | SndrType_ |
| int | maxseq_ |
| int | seqno_ |
| int | psize_ |
| double | rate_ |
| double | oldrate_ |
| double | delta_ |
| int | rate_change_ |
| double | rcvrate |
| double | maxrate_ |
| double | ss_maxrate_ |
| int | printStatus_ |
| int | datalimited_ |
| int | oldCode_ |
| double | last_pkt_time_ |
| double | rtt_ |
| double | rttcur_ |
| double | rttvar_ |
| double | tzero_ |
| double | sqrtrtt_ |
| int | ca_ |
| int | t_srtt_ |
| int | t_rtt_ |
| int | t_rttvar_ |
| int | rttvar_exp_ |
| double | t_rtxcur_ |
| double | tcp_tick_ |
| int | T_SRTT_BITS |
| int | T_RTTVAR_BITS |
| int | srtt_init_ |
| int | rttvar_init_ |
| double | rtxcur_init_ |
| int | InitRate_ |
| double | df_ |
| double | last_change_ |
| double | ssmult_ |
| int | bval_ |
| double | overhead_ |
| TracedInt | ndatapack_ |
| int | UrgentFlag |
| int | active_ |
| int | round_id |
| int | first_pkt_rcvd |
| int | ecn_ |
| int | conservative_ |
| double | scmult_ |
| int | heavyrounds_ |
| int | maxHeavyRounds_ |
| ns_addr_t | here_ |
| ns_addr_t | dst_ |
| int | size_ |
| packet_t | type_ |
| int | fid_ |
| int | prio_ |
| int | flags_ |
| int | defttl_ |
| Tcl_Channel | channel_ |
| char * | traceName_ |
| OldValue * | oldValueList_ |
| Application * | app_ |
| EventTrace * | et_ |
| NsObject * | target_ |
| NsObject * | drop_ |
| int | debug_ |
Static Protected Attributes | |
| int | uidcnt_ |
Friends | |
| class | TfrcSendTimer |
| class | TfrcNoFeedbackTimer |
|
|
Definition at line 72 of file tfrc.cc. References bval_, ca_, conservative_, datalimited_, df_, ecn_, InitRate_, last_pkt_time_, maxHeavyRounds_, maxseq_, ndatapack_, oldCode_, overhead_, printStatus_, PT_TFRC, rate_, rttvar_exp_, rttvar_init_, rtxcur_init_, scmult_, seqno_, Agent::size_, SndrType_, srtt_init_, ssmult_, T_RTTVAR_BITS, T_SRTT_BITS, and tcp_tick_.
00072 : Agent(PT_TFRC), send_timer_(this), 00073 NoFeedbacktimer_(this), rate_(0), oldrate_(0), maxrate_(0) 00074 { 00075 bind("packetSize_", &size_); 00076 bind("rate_", &rate_); 00077 bind("df_", &df_); 00078 bind("tcp_tick_", &tcp_tick_); 00079 bind("ndatapack_", &ndatapack_); 00080 bind("srtt_init_", &srtt_init_); 00081 bind("rttvar_init_", &rttvar_init_); 00082 bind("rtxcur_init_", &rtxcur_init_); 00083 bind("rttvar_exp_", &rttvar_exp_); 00084 bind("T_SRTT_BITS", &T_SRTT_BITS); 00085 bind("T_RTTVAR_BITS", &T_RTTVAR_BITS); 00086 bind("InitRate_", &InitRate_); 00087 bind("overhead_", &overhead_); 00088 bind("ssmult_", &ssmult_); 00089 bind("bval_", &bval_); 00090 bind("ca_", &ca_); 00091 bind_bool("printStatus_", &printStatus_); 00092 bind_bool("conservative_", &conservative_); 00093 bind_bool("ecn_", &ecn_); 00094 bind("maxHeavyRounds_", &maxHeavyRounds_); 00095 bind("SndrType_", &SndrType_); 00096 bind("scmult_", &scmult_); 00097 bind_bool("oldCode_", &oldCode_); 00098 seqno_ = -1; 00099 maxseq_ = 0; 00100 datalimited_ = 0; 00101 last_pkt_time_ = 0.0; 00102 } |
|
|
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 125 of file tfrc.cc. References datalimited_, maxseq_, oldCode_, sendpkt(), seqno_, and start(). Referenced by command(), and sendmsg().
00126 {
00127 maxseq_ += delta;
00128
00129 if (seqno_ == -1) {
00130 // if no packets hve been sent so far, call start.
00131 start();
00132 } else if (datalimited_ && maxseq_ > seqno_) {
00133 // We were data-limited - send a packet now!
00134 // The old code always waited for a timer to expire!!
00135 datalimited_ = 0;
00136 if (!oldCode_) {
00137 sendpkt();
00138 }
00139 }
00140 }
|
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 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 142 of file tfrc.cc. References advanceby(), Agent::command(), maxseq_, SndrType_, start(), and stop().
00143 {
00144 if (argc==2) {
00145 // are we an infinite sender?
00146 if ( (strcmp(argv[1],"start")==0) && (SndrType_ == 0)) {
00147 start();
00148 return TCL_OK;
00149 }
00150 if (strcmp(argv[1],"stop")==0) {
00151 stop();
00152 return TCL_OK;
00153 }
00154 }
00155 if ((argc == 3) && (SndrType_ == 1)) {
00156 // or do we need an FTP type app?
00157 if (strcmp(argv[1], "advance") == 0) {
00158 int newseq = atoi(argv[2]);
00159 // THIS ISN"T USED.
00160 // newseq: new sequence
00161 // seqno_: next sequence to be sent
00162 // maxseq_: max seq_ produced by app so far.
00163 if (newseq > maxseq_)
00164 advanceby(newseq - maxseq_);
00165 return (TCL_OK);
00166 }
00167 if (strcmp(argv[1], "advanceby") == 0) {
00168 advanceby(atoi(argv[2]));
00169 return (TCL_OK);
00170 }
00171 }
00172 return (Agent::command(argc, argv));
00173 }
|
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 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 433 of file tfrc.cc. References Scheduler::clock(), heavyrounds_, Scheduler::instance(), last_change_, maxHeavyRounds_, maxrate_, rate_, rate_change_, RATE_DECREASE, rcvrate, rtt_, and Agent::size_. Referenced by recv().
00434 {
00435 double now = Scheduler::instance().clock();
00436 rate_ = rcvrate;
00437 double maximumrate = (maxrate_>size_/rtt_)?maxrate_:size_/rtt_ ;
00438
00439 // Allow sending rate to be greater than maximumrate
00440 // (which is by default twice the receiving rate)
00441 // for at most maxHeavyRounds_ rounds.
00442 if (rate_ > maximumrate)
00443 heavyrounds_++;
00444 else
00445 heavyrounds_ = 0;
00446 if (heavyrounds_ > maxHeavyRounds_) {
00447 rate_ = (rate_ > maximumrate)?maximumrate:rate_ ;
00448 }
00449
00450 rate_change_ = RATE_DECREASE;
00451 last_change_ = now;
00452 }
|
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 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 101 of file agent.h. References packet_t, and Agent::type_. Referenced by CBR_Traffic::init().
00101 { return type_; }
|
|
|
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 416 of file tfrc.cc. References Scheduler::clock(), CONG_AVOID, heavyrounds_, Scheduler::instance(), last_change_, maxrate_, rate_, rate_change_, rcvrate, rtt_, and Agent::size_. Referenced by recv().
00417 {
00418 double now = Scheduler::instance().clock();
00419
00420 double mult = (now-last_change_)/rtt_ ;
00421 if (mult > 2) mult = 2 ;
00422
00423 rate_ = rate_ + (size_/rtt_)*mult ;
00424 double maximumrate = (maxrate_>size_/rtt_)?maxrate_:size_/rtt_ ;
00425 maximumrate = (maximumrate>rcvrate)?rcvrate:maximumrate;
00426 rate_ = (rate_ > maximumrate)?maximumrate:rate_ ;
00427
00428 rate_change_ = CONG_AVOID;
00429 last_change_ = now;
00430 heavyrounds_ = 0;
00431 }
|
Here is the call graph for this function:

|
|
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 61 of file object.h. References NsObject::debug_.
00061 { return debug_; }
|
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 381 of file agent.cc. Referenced by Agent::command().
00382 {
00383 }
|
|
|
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 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 215 of file tfrc.cc. References ca_, datalimited_, delta_, maxseq_, oldrate_, overhead_, rate_, rate_change_, TimerHandler::resched(), rttcur_, send_timer_, sendpkt(), seqno_, Agent::size_, SLOW_START, SMALLFLOAT, SndrType_, sqrtrtt_, and Random::uniform(). Referenced by TfrcSendTimer::expire(), recv(), and reduce_rate_on_no_feedback().
00216 {
00217 double next = -1;
00218 double xrate = -1;
00219
00220 if (SndrType_ == 0) {
00221 sendpkt();
00222 }
00223 else {
00224 if (maxseq_ > seqno_) {
00225 sendpkt();
00226 } else
00227 datalimited_ = 1;
00228 }
00229
00230 // during slow start and congestion avoidance, we increase rate
00231 // slowly - by amount delta per packet
00232 if ((rate_change_ == SLOW_START) && (oldrate_+SMALLFLOAT< rate_)) {
00233 oldrate_ = oldrate_ + delta_;
00234 xrate = oldrate_;
00235 }
00236 else {
00237 if (ca_)
00238 xrate = rate_ * sqrtrtt_/sqrt(rttcur_);
00239 else
00240 xrate = rate_;
00241 }
00242 if (xrate > SMALLFLOAT) {
00243 next = size_/xrate;
00244 //
00245 // randomize between next*(1 +/- woverhead_)
00246 //
00247 next = next*(2*overhead_*Random::uniform()-overhead_+1);
00248 if (next > SMALLFLOAT)
00249 send_timer_.resched(next);
00250 }
00251 }
|
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 289 of file tfrc.cc. References hdr_tfrc_ack::access(), bval_, Scheduler::clock(), conservative_, NsObject::debug_, decrease_rate(), first_pkt_rcvd, hdr_tfrc_ack::flost, Packet::free(), increase_rate(), Scheduler::instance(), hdr_tfrc_ack::losses, maxrate_, nextpkt(), NoFeedbacktimer_, oldrate_, OUT_OF_SLOW_START, p_to_b(), printStatus_, rate_, rate_change_, hdr_tfrc_ack::rate_since_last_report, rcvrate, TimerHandler::resched(), round_id, rtt_, scmult_, Agent::size_, SLOW_START, slowstart(), ss_maxrate_, hdr_tfrc_ack::timestamp_echo, ts, tzero_, update_rtt(), and UrgentFlag.
00290 {
00291 double now = Scheduler::instance().clock();
00292 hdr_tfrc_ack *nck = hdr_tfrc_ack::access(pkt);
00293 double ts = nck->timestamp_echo;
00294 double rate_since_last_report = nck->rate_since_last_report;
00295 // double NumFeedback_ = nck->NumFeedback_;
00296 double flost = nck->flost;
00297 int losses = nck->losses;
00298
00299 round_id ++ ;
00300 UrgentFlag = 0;
00301
00302 if (rate_since_last_report > 0) {
00303 /* compute the max rate for slow-start as two times rcv rate */
00304 ss_maxrate_ = 2*rate_since_last_report*size_;
00305 if (conservative_) {
00306 if (losses >= 1) {
00307 /* there was a loss in the most recent RTT */
00308 if (debug_) printf("time: %5.2f losses: %d rate %5.2f\n",
00309 now, losses, rate_since_last_report);
00310 maxrate_ = rate_since_last_report*size_;
00311 } else {
00312 /* there was no loss in the most recent RTT */
00313 maxrate_ = scmult_*rate_since_last_report*size_;
00314 }
00315 if (debug_) printf("time: %5.2f losses: %d rate %5.2f maxrate: %5.2f\n", now, losses, rate_since_last_report, maxrate_);
00316 } else
00317 maxrate_ = 2*rate_since_last_report*size_;
00318 } else {
00319 ss_maxrate_ = 0;
00320 maxrate_ = 0;
00321 }
00322
00323
00324 /* update the round trip time */
00325 update_rtt (ts, now);
00326
00327 /* .. and estimate of fair rate */
00328 rcvrate = p_to_b(flost, rtt_, tzero_, size_, bval_);
00329
00330 /* if we get no more feedback for some time, cut rate in half */
00331 double t = 2*rtt_ ;
00332 if (t < 2*size_/rate_)
00333 t = 2*size_/rate_ ;
00334 NoFeedbacktimer_.resched(t);
00335
00336 /* if we are in slow start and we just saw a loss */
00337 /* then come out of slow start */
00338
00339 if (first_pkt_rcvd == 0) {
00340 first_pkt_rcvd = 1 ;
00341 slowstart ();
00342 nextpkt();
00343 }
00344 else {
00345 if (rate_change_ == SLOW_START) {
00346 if (flost > 0) {
00347 rate_change_ = OUT_OF_SLOW_START;
00348 oldrate_ = rate_ = rcvrate;
00349 }
00350 else {
00351 slowstart ();
00352 nextpkt();
00353 }
00354 }
00355 else {
00356 if (rcvrate>rate_)
00357 increase_rate(flost);
00358 else
00359 decrease_rate ();
00360 }
00361 }
00362 if (printStatus_) {
00363 printf("time: %5.2f rate: %5.2f\n", now, rate_);
00364 double packetrate = rate_ * rtt_ / size_;
00365 printf("time: %5.2f packetrate: %5.2f\n", now, packetrate);
00366 }
00367 Packet::free(pkt);
00368 }
|
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 {};
|
|
|
Definition at line 478 of file tfrc.cc. References datalimited_, nextpkt(), NoFeedbacktimer_, oldCode_, rate_, rate_change_, RATE_DECREASE, TimerHandler::resched(), round_id, rtt_, Agent::size_, and UrgentFlag. Referenced by TfrcNoFeedbackTimer::expire().
00479 {
00480 rate_change_ = RATE_DECREASE;
00481 if (oldCode_ || !datalimited_ || rate_ > 4.0 * size_/rtt_ ) {
00482 // if we are not datalimited,
00483 // or the current rate is greater than four pkts per RTT
00484 rate_*=0.5;
00485 }
00486 UrgentFlag = 1;
00487 round_id ++ ;
00488 double t = 2*rtt_ ;
00489 if (t < 2*size_/rate_)
00490 t = 2*size_/rate_ ;
00491 NoFeedbacktimer_.resched(t);
00492 nextpkt();
00493 }
|
Here is the call graph for this function:

|
|
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 }
|
|
|
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:

|
||||||||||||||||
|
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:

|
||||||||||||
|
Reimplemented from Agent. Definition at line 111 of file tfrc.cc. References advanceby(), MAXSEQ, maxseq_, and Agent::size_.
00112 {
00113 if (nbytes == -1 && maxseq_ < MAXSEQ)
00114 advanceby(MAXSEQ - maxseq_);
00115 else if (size_ > 0) {
00116 int npkts = int(nbytes/size_);
00117 npkts += (nbytes%size_ ? 1 : 0);
00118 //if (debug_) printf("nbytes: %d size: %d npkts: %d\n",
00119 // nbytes, size_, npkts);
00120 advanceby(npkts);
00121 }
00122 }
|
Here is the call graph for this function:

|
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 370 of file tfrc.cc. References Scheduler::clock(), delta_, Scheduler::instance(), last_change_, oldrate_, rate_, rtt_, Agent::size_, SMALLFLOAT, ss_maxrate_, and ssmult_. Referenced by recv().
00371 {
00372 double now = Scheduler::instance().clock();
00373
00374 if (rate_+SMALLFLOAT< size_/rtt_ ) {
00375 /* if this is the first report, change rate to 1 per rtt */
00376 /* compute delta so rate increases slowly to new value */
00377 oldrate_ = rate_;
00378 rate_ = size_/rtt_;
00379 delta_ = (rate_ - oldrate_)/(rate_*rtt_/size_);
00380 last_change_ = now;
00381 } else {
00382 /* else multiply the rate by ssmult_, and compute delta, */
00383 /* so that the rate increases slowly to new value */
00384 if (ss_maxrate_ > 0) {
00385 if (ssmult_*rate_ < ss_maxrate_ && now - last_change_ > rtt_) {
00386 rate_ = ssmult_*rate_;
00387 delta_ = (rate_ - oldrate_)/(rate_*rtt_/size_);
00388 last_change_=now;
00389 } else {
00390 if ( (oldrate_ > ss_maxrate_) || (rate_ > ss_maxrate_)) {
00391 if (oldrate_ > ss_maxrate_) {
00392 delta_ = 0;
00393 rate_ = oldrate_ = 0.5*ss_maxrate_;
00394 last_change_ = now;
00395 } else {
00396 rate_ = ss_maxrate_;
00397 delta_ = (rate_ - oldrate_)/(rate_*rtt_/size_);
00398 last_change_ = now;
00399 }
00400 } else {
00401 if (now - last_change_ > rtt_) {
00402 rate_ = ss_maxrate_;
00403 delta_ = (rate_ - oldrate_)/(rate_*rtt_/size_);
00404 last_change_=now;
00405 }
00406 }
00407 }
00408 } else {
00409 rate_ = ssmult_*rate_;
00410 delta_ = (rate_ - oldrate_)/(rate_*rtt_/size_);
00411 last_change_=now;
00412 }
00413 }
00414 }
|
Here is the call graph for this function:

|
|
Definition at line 175 of file tfrc.cc. References active_, delta_, first_pkt_rcvd, heavyrounds_, InitRate_, last_change_, maxrate_, ndatapack_, NoFeedbacktimer_, oldrate_, rate_, rate_change_, rcvrate, TimerHandler::resched(), round_id, rtt_, rttcur_, rttvar_init_, rtxcur_init_, send_timer_, sendpkt(), seqno_, Agent::size_, SLOW_START, sqrtrtt_, srtt_init_, ss_maxrate_, t_rttvar_, T_RTTVAR_BITS, t_rtxcur_, t_srtt_, T_SRTT_BITS, tcp_tick_, tzero_, and UrgentFlag. Referenced by advanceby(), and command().
00176 {
00177 seqno_=0;
00178 rate_ = InitRate_;
00179 delta_ = 0;
00180 oldrate_ = rate_;
00181 rate_change_ = SLOW_START;
00182 UrgentFlag = 1;
00183 rtt_=0;
00184 sqrtrtt_=1;
00185 rttcur_=1;
00186 tzero_ = 0;
00187 last_change_=0;
00188 maxrate_ = 0;
00189 ss_maxrate_ = 0;
00190 ndatapack_=0;
00191 active_ = 1;
00192 round_id = 0;
00193 heavyrounds_ = 0;
00194 t_srtt_ = int(srtt_init_/tcp_tick_) << T_SRTT_BITS;
00195 t_rttvar_ = int(rttvar_init_/tcp_tick_) << T_RTTVAR_BITS;
00196 t_rtxcur_ = rtxcur_init_;
00197 rcvrate = 0 ;
00198
00199 first_pkt_rcvd = 0 ;
00200 // send the first packet
00201 sendpkt();
00202 // ... at initial rate
00203 send_timer_.resched(size_/rate_);
00204 // ... and start timer so we can cut rate
00205 // in half if we do not get feedback
00206 NoFeedbacktimer_.resched(2*size_/rate_);
00207 }
|
Here is the call graph for this function:

|
|
Definition at line 209 of file tfrc.cc. References active_, TimerHandler::force_cancel(), and send_timer_. Referenced by command().
00210 {
00211 active_ = 0;
00212 send_timer_.force_cancel();
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 in SA_Agent, RTPAgent, FtpClientAgent, BayFullTcpAgent, SinkAgent, RLM_Sender, MIPBSAgent, MIPMHAgent, RapAgent, RTCPAgent, TcpAsymSink, FackTcpAgent, FullTcpAgent, QSNewRenoTcpAgent, RBPVegasTcpAgent, RBPRenoTcpAgent, SackRHTcpAgent, Sack1TcpAgent, TcpSessionAgent, DelAckSink, TcpAgent, RenoTcpAgent, VegasTcpAgent, and SimpleTcpAgent. Definition at line 347 of file agent.cc. Referenced by SimpleTimer::expire().
00348 {
00349 }
|
|
|
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 253 of file tfrc.cc. References df_, rtt_, rttcur_, rttvar_exp_, sqrtrtt_, t_rtt_, t_rttvar_, T_RTTVAR_BITS, t_rtxcur_, t_srtt_, T_SRTT_BITS, tcp_tick_, and tzero_. Referenced by recv().
00254 {
00255 /* the TCP update */
00256 t_rtt_ = int((now-tao) /tcp_tick_ + 0.5);
00257 if (t_rtt_==0) t_rtt_=1;
00258 if (t_srtt_ != 0) {
00259 register short delta;
00260 delta = t_rtt_ - (t_srtt_ >> T_SRTT_BITS);
00261 if ((t_srtt_ += delta) <= 0)
00262 t_srtt_ = 1;
00263 if (delta < 0)
00264 delta = -delta;
00265 delta -= (t_rttvar_ >> T_RTTVAR_BITS);
00266 if ((t_rttvar_ += delta) <= 0)
00267 t_rttvar_ = 1;
00268 } else {
00269 t_srtt_ = t_rtt_ << T_SRTT_BITS;
00270 t_rttvar_ = t_rtt_ << (T_RTTVAR_BITS-1);
00271 }
00272 t_rtxcur_ = (((t_rttvar_ << (rttvar_exp_ + (T_SRTT_BITS - T_RTTVAR_BITS))) + t_srtt_) >> T_SRTT_BITS ) * tcp_tick_;
00273 tzero_=t_rtxcur_;
00274
00275 /* fine grained RTT estimate for use in the equation */
00276 if (rtt_ > 0) {
00277 rtt_ = df_*rtt_ + ((1-df_)*(now - tao));
00278 sqrtrtt_ = df_*sqrtrtt_ + ((1-df_)*sqrt(now - tao));
00279 } else {
00280 rtt_ = now - tao;
00281 sqrtrtt_ = sqrt(now - tao);
00282 }
00283 rttcur_ = now - tao;
00284 }
|
|
|
|
|
|
|
|
|
|
|
|
Reimplemented in BayFullTcpAgent. Definition at line 134 of file agent.h. Referenced by Agent::attachApp(), Agent::idle(), RapAgent::IpgTimeout(), UdpAgent::recv(), SimpleTcpAgent::recv(), RapAgent::recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes(). |
|
|
Definition at line 187 of file tfrc.h. Referenced by recv(), and TfrcAgent(). |
|
|
Definition at line 167 of file tfrc.h. Referenced by nextpkt(), and TfrcAgent(). |
|
|
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 197 of file tfrc.h. Referenced by recv(), and TfrcAgent(). |
|
|
Definition at line 154 of file tfrc.h. Referenced by advanceby(), nextpkt(), reduce_rate_on_no_feedback(), and TfrcAgent(). |
|
|
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(), recv(), PushbackQueue::reportDrop(), and REDQueue::reset(). |
|
|
Definition at line 121 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 146 of file tfrc.h. Referenced by nextpkt(), slowstart(), and start(). |
|
|
Definition at line 183 of file tfrc.h. Referenced by TfrcAgent(), and update_rtt(). |
|
|
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 194 of file tfrc.h. Referenced by sendpkt(), and TfrcAgent(). |
|
|
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(). |
|
|
|
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 120 of file agent.h. Referenced by Agent::delay_bind_dispatch(). |
|
|
Definition at line 200 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), and start(). |
|
|
|
Definition at line 182 of file tfrc.h. Referenced by start(), and TfrcAgent(). |
|
|
Definition at line 184 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), slowstart(), and start(). |
|
|
Definition at line 158 of file tfrc.h. Referenced by sendpkt(), and TfrcAgent(). |
|
|
Definition at line 202 of file tfrc.h. Referenced by decrease_rate(), and TfrcAgent(). |
|
|
Definition at line 150 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), recv(), and start(). |
|
|
Definition at line 141 of file tfrc.h. Referenced by advanceby(), command(), nextpkt(), sendmsg(), and TfrcAgent(). |
|
|
Definition at line 189 of file tfrc.h. Referenced by sendpkt(), start(), and TfrcAgent(). |
|
|
Definition at line 139 of file tfrc.h. Referenced by recv(), reduce_rate_on_no_feedback(), and start(). |
|
|
Definition at line 156 of file tfrc.h. Referenced by advanceby(), reduce_rate_on_no_feedback(), and TfrcAgent(). |
|
|
Definition at line 145 of file tfrc.h. Referenced by nextpkt(), recv(), slowstart(), and start(). |
|
|
Definition at line 132 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 188 of file tfrc.h. Referenced by nextpkt(), and TfrcAgent(). |
|
|
Definition at line 153 of file tfrc.h. Referenced by recv(), and TfrcAgent(). |
|
|
Definition at line 119 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
|
|
|
Definition at line 144 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), nextpkt(), recv(), reduce_rate_on_no_feedback(), sendpkt(), slowstart(), start(), and TfrcAgent(). |
|
|
Definition at line 147 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), nextpkt(), recv(), reduce_rate_on_no_feedback(), and start(). |
|
|
Definition at line 148 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), recv(), and start(). |
|
|
Definition at line 192 of file tfrc.h. Referenced by recv(), reduce_rate_on_no_feedback(), sendpkt(), and start(). |
|
|
Definition at line 161 of file tfrc.h. Referenced by decrease_rate(), increase_rate(), recv(), reduce_rate_on_no_feedback(), sendpkt(), slowstart(), start(), and update_rtt(). |
|
|
Definition at line 162 of file tfrc.h. Referenced by nextpkt(), start(), and update_rtt(). |
|
|
|
|
|
Definition at line 173 of file tfrc.h. Referenced by TfrcAgent(), and update_rtt(). |
|
|
Definition at line 179 of file tfrc.h. Referenced by start(), and TfrcAgent(). |
|
|
Definition at line 180 of file tfrc.h. Referenced by start(), and TfrcAgent(). |
|
|
Definition at line 199 of file tfrc.h. Referenced by recv(), and TfrcAgent(). |
|
|
|
|
|
Definition at line 142 of file tfrc.h. Referenced by advanceby(), nextpkt(), sendpkt(), start(), and TfrcAgent(). |
|
|
|
Definition at line 140 of file tfrc.h. Referenced by command(), nextpkt(), and TfrcAgent(). |
|
|
Definition at line 165 of file tfrc.h. Referenced by nextpkt(), start(), and update_rtt(). |
|
|
Definition at line 178 of file tfrc.h. Referenced by start(), and TfrcAgent(). |
|
|
Definition at line 152 of file tfrc.h. Referenced by recv(), slowstart(), and start(). |
|
|
Definition at line 185 of file tfrc.h. Referenced by slowstart(), and TfrcAgent(). |
|
|
Definition at line 171 of file tfrc.h. Referenced by update_rtt(). |
|
|
Definition at line 172 of file tfrc.h. Referenced by start(), and update_rtt(). |
|
|
Definition at line 177 of file tfrc.h. Referenced by start(), TfrcAgent(), and update_rtt(). |
|
|
Definition at line 174 of file tfrc.h. Referenced by start(), and update_rtt(). |
|
|
Definition at line 170 of file tfrc.h. Referenced by start(), and update_rtt(). |
|
|
Definition at line 176 of file tfrc.h. Referenced by start(), TfrcAgent(), and update_rtt(). |
|
|
|
Definition at line 175 of file tfrc.h. Referenced by start(), TfrcAgent(), and update_rtt(). |
|
|
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 117 of file agent.h. Referenced by Agent::get_pkttype(), Agent::initpkt(), FullTcpAgent::listen(), BayFullTcpAgent::listen(), RapAgent::SendAck(), SRMAgent::sendmsg(), RapAgent::SendPacket(), and Agent::set_pkttype(). |
|
|
Definition at line 164 of file tfrc.h. Referenced by recv(), sendpkt(), start(), and update_rtt(). |
|
|
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 190 of file tfrc.h. Referenced by recv(), reduce_rate_on_no_feedback(), sendpkt(), and start(). |
1.3.3