#include <tcp-simple.h>
Inheritance diagram for SimpleTcpAgent:


Public Member Functions | |
| SimpleTcpAgent () | |
| virtual void | sendmsg (int nbytes, const char *flags) |
| virtual void | recv (Packet *pkt, Handler *) |
| virtual int | command (int argc, const char *const *argv) |
| virtual void | timeout (int) |
| virtual void | timeout_nonrtx (int) |
| virtual void | recv (Packet *p, const char *s) |
| virtual void | sendmsg (int sz, AppData *, const char *flags=0) |
| void | trace (TracedVar *v) |
| virtual void | advanceby (int delta) |
| void | recvOnly (Packet *) |
| void | send (Packet *p, Handler *h) |
| virtual void | send (int sz, AppData *data) |
| virtual void | send (int nbytes) |
| 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 int | window () |
| virtual double | windowd () |
| void | print_if_needed (double memb_time) |
| void | traceAll () |
| virtual void | traceVar (TracedVar *v) |
| virtual int | headersize () |
| virtual void | delay_bind_init_all () |
| virtual int | delay_bind_dispatch (const char *varName, const char *localName, TclObject *tracer) |
| virtual void | rtt_init () |
| virtual double | rtt_timeout () |
| virtual void | rtt_update (double tao) |
| virtual void | rtt_backoff () |
| virtual void | output (int seqno, int reason=0) |
| virtual void | send_much (int force, int reason, int maxburst=0) |
| virtual void | newtimer (Packet *) |
| virtual void | dupack_action () |
| virtual void | send_one () |
| double | linear (double x, double x_1, double y_1, double x_2, double y_2) |
| void | opencwnd () |
| void | slowdown (int how) |
| void | ecn (int seqno) |
| virtual void | set_initial_window () |
| double | initial_window () |
| void | reset () |
| void | newack (Packet *) |
| void | tcp_eln (Packet *pkt) |
| void | finish () |
| void | reset_qoption () |
| void | rtt_counting () |
| int | network_limited () |
| double | limited_slow_start (double cwnd, double max_ssthresh, double increment) |
| virtual int | numdupacks (double cwnd) |
| virtual void | processQuickStart (Packet *pkt) |
| virtual void | endQuickStart () |
| virtual void | output_helper (Packet *) |
| virtual void | send_helper (int) |
| virtual void | send_idle_helper () |
| virtual void | recv_helper (Packet *) |
| virtual void | recv_newack_helper (Packet *) |
| virtual void | partialnewack_helper (Packet *) |
| virtual void | cancel_timers () |
| virtual void | cancel_rtx_timer () |
| virtual void | set_rtx_timer () |
| void | reset_rtx_timer (int mild, int backoff=1) |
| double | increase_param () |
| double | decrease_param () |
| double | compute_p () |
| void | trace_event (char *eventtype) |
| void | closecwnd (int how) |
| void | quench (int how) |
| void | process_qoption_after_send () |
| void | process_qoption_after_ack (int seqno) |
| virtual void | recvBytes (int bytes) |
| virtual void | idle () |
| Packet * | allocpkt () const |
| Packet * | allocpkt (int) const |
| void | initpkt (Packet *) const |
| void | deleteAgentTrace () |
| void | addAgentTrace (const char *name) |
| void | monitorAgentTrace () |
| OldValue * | lookupOldValue (TracedVar *v) |
| void | insertOldValue (TracedVar *v, const char *value) |
| void | dumpTracedVars () |
| virtual void | drop (Packet *p, const char *s) |
| void | handle (Event *) |
Protected Attributes | |
| int | seqno_ |
| TracedInt | t_seqno_ |
| TracedInt | t_rtt_ |
| int | T_SRTT_BITS |
| TracedInt | t_srtt_ |
| int | srtt_init_ |
| int | T_RTTVAR_BITS |
| int | rttvar_exp_ |
| TracedInt | t_rttvar_ |
| int | rttvar_init_ |
| double | t_rtxcur_ |
| double | rtxcur_init_ |
| TracedInt | t_backoff_ |
| double | ts_peer_ |
| RtxTimer | rtx_timer_ |
| DelSndTimer | delsnd_timer_ |
| BurstSndTimer | burstsnd_timer_ |
| int | timerfix_ |
| int | rfc2988_ |
| double | boot_time_ |
| double | overhead_ |
| double | wnd_ |
| double | wnd_const_ |
| double | wnd_th_ |
| double | wnd_init_ |
| double | wnd_restart_ |
| double | tcp_tick_ |
| int | wnd_option_ |
| int | wnd_init_option_ |
| double | decrease_num_ |
| double | increase_num_ |
| double | k_parameter_ |
| double | l_parameter_ |
| int | precision_reduce_ |
| int | syn_ |
| int | delay_growth_ |
| int | tcpip_base_hdr_size_ |
| int | ts_option_size_ |
| int | bug_fix_ |
| int | less_careful_ |
| int | ts_option_ |
| int | maxburst_ |
| int | maxcwnd_ |
| int | numdupacks_ |
| int | numdupacksFrac_ |
| double | maxrto_ |
| double | minrto_ |
| int | old_ecn_ |
| FILE * | plotfile_ |
| TracedInt | dupacks_ |
| TracedInt | curseq_ |
| int | last_ack_ |
| TracedInt | highest_ack_ |
| int | recover_ |
| int | last_cwnd_action_ |
| TracedDouble | cwnd_ |
| double | base_cwnd_ |
| double | awnd_ |
| TracedInt | ssthresh_ |
| int | count_ |
| double | fcnt_ |
| int | rtt_active_ |
| int | rtt_seq_ |
| double | rtt_ts_ |
| TracedInt | maxseq_ |
| int | ecn_ |
| int | cong_action_ |
| int | ecn_burst_ |
| int | ecn_backoff_ |
| int | ect_ |
| int | eln_ |
| int | eln_rxmit_thresh_ |
| int | eln_last_rxmit_ |
| double | firstsent_ |
| double | lastreset_ |
| int | slow_start_restart_ |
| int | restart_bugfix_ |
| int | closed_ |
| TracedInt | ndatapack_ |
| TracedInt | ndatabytes_ |
| TracedInt | nackpack_ |
| TracedInt | nrexmit_ |
| TracedInt | nrexmitpack_ |
| TracedInt | nrexmitbytes_ |
| TracedInt | necnresponses_ |
| TracedInt | ncwndcuts_ |
| int | trace_all_oneline_ |
| int | nam_tracevar_ |
| int | first_decrease_ |
| TracedInt | singledup_ |
| int | noFastRetrans_ |
| int | oldCode_ |
| int | useHeaders_ |
| int | low_window_ |
| int | high_window_ |
| double | high_p_ |
| double | high_decrease_ |
| int | max_ssthresh_ |
| double | cwnd_last_ |
| double | increase_last_ |
| double | cwnd_frac_ |
| int | rate_request_ |
| int | qs_enabled_ |
| int | qs_requested_ |
| int | qs_approved_ |
| int | ttl_diff_ |
| int | QOption_ |
| int | EnblRTTCtr_ |
| int | T_full |
| int | T_last |
| int | T_prev |
| int | T_start |
| int | RTT_count |
| int | RTT_prev |
| int | RTT_goodcount |
| int | F_counting |
| int | W_used |
| int | W_timed |
| int | F_full |
| int | Backoffs |
| int | control_increase_ |
| int | prev_highest_ack_ |
| 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_ |
|
|
Definition at line 41 of file tcp-simple.cc.
|
|
|
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:

|
|
|
Reimplemented in FullTcpAgent. Definition at line 683 of file tcp.cc. References TcpAgent::closed_, TcpAgent::curseq_, TcpAgent::maxburst_, and TcpAgent::send_much(). Referenced by TcpAgent::command().
|
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 TcpFsAgent, RenoTcpFsAgent, NewRenoTcpFsAgent, and TcpSessionAgent. Definition at line 242 of file tcp.h. References TimerHandler::force_cancel(), and TcpAgent::rtx_timer_. Referenced by SackFullTcpAgent::dupack_action(), FullTcpAgent::dupack_action(), FullTcpAgent::newack(), TcpAgent::newtimer(), FullTcpAgent::recv(), and TcpAgent::recv_newack_helper().
00242 {
00243 rtx_timer_.force_cancel();
00244 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpFsAgent, RenoTcpFsAgent, NewRenoTcpFsAgent, FullTcpAgent, and TcpSessionAgent. Definition at line 237 of file tcp.h. References TcpAgent::burstsnd_timer_, TcpAgent::delsnd_timer_, TimerHandler::force_cancel(), and TcpAgent::rtx_timer_. Referenced by FullTcpAgent::cancel_timers().
00237 {
00238 rtx_timer_.force_cancel();
00239 burstsnd_timer_.force_cancel();
00240 delsnd_timer_.force_cancel();
00241 }
|
Here is the call graph for this function:

|
|
Reimplemented in FullTcpAgent. Definition at line 377 of file agent.cc. Referenced by Agent::command().
00378 {
00379 }
|
|
|
Reimplemented in IntTcpAgent. Definition at line 1649 of file tcp.cc. References abort(), TcpAgent::count_, TcpAgent::cwnd_, TcpAgent::decrease_num_, TcpAgent::fcnt_, TcpAgent::ssthresh_, TcpAgent::window(), TcpAgent::wnd_init_, and TcpAgent::wnd_restart_. Referenced by TcpAgent::quench().
01650 {
01651 static int first_time = 1;
01652 if (first_time == 1) {
01653 fprintf(stderr, "the TcpAgent::closecwnd() function is now deprecated, please use the function slowdown() instead\n");
01654 }
01655 switch (how) {
01656 case 0:
01657 /* timeouts */
01658 ssthresh_ = int( window() / 2 );
01659 if (ssthresh_ < 2)
01660 ssthresh_ = 2;
01661 cwnd_ = int(wnd_restart_);
01662 break;
01663
01664 case 1:
01665 /* Reno dup acks, or after a recent congestion indication. */
01666 // cwnd_ = window()/2;
01667 cwnd_ = decrease_num_ * window();
01668 ssthresh_ = int(cwnd_);
01669 if (ssthresh_ < 2)
01670 ssthresh_ = 2;
01671 break;
01672
01673 case 2:
01674 /* Tahoe dup acks
01675 * after a recent congestion indication */
01676 cwnd_ = wnd_init_;
01677 break;
01678
01679 case 3:
01680 /* Retransmit timeout, but no outstanding data. */
01681 cwnd_ = int(wnd_init_);
01682 break;
01683 case 4:
01684 /* Tahoe dup acks */
01685 ssthresh_ = int( window() / 2 );
01686 if (ssthresh_ < 2)
01687 ssthresh_ = 2;
01688 cwnd_ = 1;
01689 break;
01690
01691 default:
01692 abort();
01693 }
01694 fcnt_ = 0.;
01695 count_ = 0;
01696 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented from TcpAgent. Definition at line 77 of file tcp-simple.cc. References TcpAgent::command().
00078 {
00079 // Copy FullTcp's tcl interface
00080
00081 if (argc == 2) {
00082 if (strcmp(argv[1], "listen") == 0) {
00083 // Do nothing
00084 return (TCL_OK);
00085 }
00086 if (strcmp(argv[1], "close") == 0) {
00087 // Call done{} to match tcp-full's syntax
00088 Tcl::instance().evalf("%s done", name());
00089 return (TCL_OK);
00090 }
00091 }
00092 return (TcpAgent::command(argc, argv));
00093 }
|
Here is the call graph for this function:

|
|
Definition at line 897 of file tcp.cc. References TcpAgent::cwnd_, TcpAgent::high_p_, TcpAgent::high_window_, TcpAgent::linear(), and TcpAgent::low_window_. Referenced by TcpAgent::increase_param().
00898 {
00899 double p;
00900 double low_p = 1.5/(low_window_*low_window_);
00901 p = exp(linear(log(cwnd_), log(low_window_), log(low_p), log(high_window_), log(high_p_)));
00902 return p;
00903 }
|
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 908 of file tcp.cc. References TcpAgent::cwnd_, TcpAgent::high_decrease_, TcpAgent::high_window_, TcpAgent::linear(), and TcpAgent::low_window_. Referenced by TcpAgent::increase_param(), and TcpAgent::slowdown().
00909 {
00910 double decrease;
00911 decrease = linear(log(cwnd_), log(low_window_), 0.5, log(high_window_), high_decrease_);
00912 return decrease;
00913 }
|
Here is the call graph for this function:

|
||||||||||||||||
|
Reimplemented from Agent. Reimplemented in BayFullTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, and VegasTcpAgent. Definition at line 202 of file tcp.cc. References TcpAgent::awnd_, TcpAgent::bug_fix_, TcpAgent::control_increase_, TcpAgent::curseq_, TcpAgent::cwnd_, TcpAgent::cwnd_frac_, TcpAgent::decrease_num_, Agent::delay_bind_dispatch(), TcpAgent::delay_growth_, TcpAgent::dupacks_, TcpAgent::ecn_, TcpAgent::eln_, TcpAgent::eln_rxmit_thresh_, TcpAgent::EnblRTTCtr_, TcpAgent::high_decrease_, TcpAgent::high_p_, TcpAgent::high_window_, TcpAgent::highest_ack_, TcpAgent::increase_num_, TcpAgent::k_parameter_, TcpAgent::l_parameter_, TcpAgent::less_careful_, TcpAgent::low_window_, TcpAgent::max_ssthresh_, TcpAgent::maxburst_, TcpAgent::maxcwnd_, TcpAgent::maxrto_, TcpAgent::maxseq_, TcpAgent::minrto_, TcpAgent::nackpack_, TcpAgent::nam_tracevar_, TcpAgent::ncwndcuts_, TcpAgent::ndatabytes_, TcpAgent::ndatapack_, TcpAgent::necnresponses_, TcpAgent::noFastRetrans_, TcpAgent::nrexmit_, TcpAgent::nrexmitbytes_, TcpAgent::nrexmitpack_, TcpAgent::numdupacks_, TcpAgent::numdupacksFrac_, TcpAgent::old_ecn_, TcpAgent::oldCode_, TcpAgent::overhead_, TcpAgent::precision_reduce_, TcpAgent::QOption_, TcpAgent::qs_enabled_, TcpAgent::rate_request_, TcpAgent::restart_bugfix_, TcpAgent::rfc2988_, TcpAgent::rttvar_exp_, TcpAgent::rttvar_init_, TcpAgent::rtxcur_init_, TcpAgent::singledup_, Agent::size_, TcpAgent::slow_start_restart_, TcpAgent::srtt_init_, TcpAgent::ssthresh_, TcpAgent::syn_, TcpAgent::t_backoff_, TcpAgent::t_rtt_, TcpAgent::t_rttvar_, TcpAgent::T_RTTVAR_BITS, TcpAgent::t_seqno_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, TcpAgent::tcp_tick_, TcpAgent::tcpip_base_hdr_size_, TcpAgent::timerfix_, TcpAgent::trace_all_oneline_, TcpAgent::ts_option_, TcpAgent::ts_option_size_, TcpAgent::useHeaders_, TcpAgent::wnd_, TcpAgent::wnd_const_, TcpAgent::wnd_init_, TcpAgent::wnd_init_option_, TcpAgent::wnd_option_, and TcpAgent::wnd_th_. Referenced by VegasTcpAgent::delay_bind_dispatch(), RFC793eduTcpAgent::delay_bind_dispatch(), FullTcpAgent::delay_bind_dispatch(), and BayFullTcpAgent::delay_bind_dispatch().
00203 {
00204 if (delay_bind(varName, localName, "window_", &wnd_, tracer)) return TCL_OK;
00205 if (delay_bind(varName, localName, "windowInit_", &wnd_init_, tracer)) return TCL_OK;
00206 if (delay_bind(varName, localName, "windowInitOption_", &wnd_init_option_, tracer)) return TCL_OK;
00207 if (delay_bind_bool(varName, localName, "syn_", &syn_, tracer)) return TCL_OK;
00208 if (delay_bind(varName, localName, "windowOption_", &wnd_option_ , tracer)) return TCL_OK;
00209 if (delay_bind(varName, localName, "windowConstant_", &wnd_const_, tracer)) return TCL_OK;
00210 if (delay_bind(varName, localName, "windowThresh_", &wnd_th_ , tracer)) return TCL_OK;
00211 if (delay_bind_bool(varName, localName, "delay_growth_", &delay_growth_ , tracer)) return TCL_OK;
00212 if (delay_bind(varName, localName, "overhead_", &overhead_, tracer)) return TCL_OK;
00213 if (delay_bind(varName, localName, "tcpTick_", &tcp_tick_, tracer)) return TCL_OK;
00214 if (delay_bind_bool(varName, localName, "ecn_", &ecn_, tracer)) return TCL_OK;
00215 if (delay_bind_bool(varName, localName, "old_ecn_", &old_ecn_ , tracer)) return TCL_OK;
00216 if (delay_bind(varName, localName, "eln_", &eln_ , tracer)) return TCL_OK;
00217 if (delay_bind(varName, localName, "eln_rxmit_thresh_", &eln_rxmit_thresh_ , tracer)) return TCL_OK;
00218 if (delay_bind(varName, localName, "packetSize_", &size_ , tracer)) return TCL_OK;
00219 if (delay_bind(varName, localName, "tcpip_base_hdr_size_", &tcpip_base_hdr_size_, tracer)) return TCL_OK;
00220 if (delay_bind(varName, localName, "ts_option_size_", &ts_option_size_, tracer)) return TCL_OK;
00221 if (delay_bind_bool(varName, localName, "bugFix_", &bug_fix_ , tracer)) return TCL_OK;
00222 if (delay_bind_bool(varName, localName, "lessCareful_", &less_careful_ , tracer)) return TCL_OK;
00223 if (delay_bind_bool(varName, localName, "timestamps_", &ts_option_ , tracer)) return TCL_OK;
00224 if (delay_bind_bool(varName, localName, "slow_start_restart_", &slow_start_restart_ , tracer)) return TCL_OK;
00225 if (delay_bind_bool(varName, localName, "restart_bugfix_", &restart_bugfix_ , tracer)) return TCL_OK;
00226 if (delay_bind(varName, localName, "maxburst_", &maxburst_ , tracer)) return TCL_OK;
00227 if (delay_bind(varName, localName, "maxcwnd_", &maxcwnd_ , tracer)) return TCL_OK;
00228 if (delay_bind(varName, localName, "numdupacks_", &numdupacks_, tracer)) return TCL_OK;
00229 if (delay_bind(varName, localName, "numdupacksFrac_", &numdupacksFrac_, tracer)) return TCL_OK;
00230 if (delay_bind(varName, localName, "maxrto_", &maxrto_ , tracer)) return TCL_OK;
00231 if (delay_bind(varName, localName, "minrto_", &minrto_ , tracer)) return TCL_OK;
00232 if (delay_bind(varName, localName, "srtt_init_", &srtt_init_ , tracer)) return TCL_OK;
00233 if (delay_bind(varName, localName, "rttvar_init_", &rttvar_init_ , tracer)) return TCL_OK;
00234 if (delay_bind(varName, localName, "rtxcur_init_", &rtxcur_init_ , tracer)) return TCL_OK;
00235 if (delay_bind(varName, localName, "T_SRTT_BITS", &T_SRTT_BITS , tracer)) return TCL_OK;
00236 if (delay_bind(varName, localName, "T_RTTVAR_BITS", &T_RTTVAR_BITS , tracer)) return TCL_OK;
00237 if (delay_bind(varName, localName, "rttvar_exp_", &rttvar_exp_ , tracer)) return TCL_OK;
00238 if (delay_bind(varName, localName, "awnd_", &awnd_ , tracer)) return TCL_OK;
00239 if (delay_bind(varName, localName, "decrease_num_", &decrease_num_, tracer)) return TCL_OK;
00240 if (delay_bind(varName, localName, "increase_num_", &increase_num_, tracer)) return TCL_OK;
00241 if (delay_bind(varName, localName, "k_parameter_", &k_parameter_, tracer)) return TCL_OK;
00242 if (delay_bind(varName, localName, "l_parameter_", &l_parameter_, tracer)) return TCL_OK;
00243
00244
00245 if (delay_bind_bool(varName, localName, "trace_all_oneline_", &trace_all_oneline_ , tracer)) return TCL_OK;
00246 if (delay_bind_bool(varName, localName, "nam_tracevar_", &nam_tracevar_ , tracer)) return TCL_OK;
00247 if (delay_bind(varName, localName, "QOption_", &QOption_ , tracer)) return TCL_OK;
00248 if (delay_bind(varName, localName, "EnblRTTCtr_", &EnblRTTCtr_ , tracer)) return TCL_OK;
00249 if (delay_bind(varName, localName, "control_increase_", &control_increase_ , tracer)) return TCL_OK;
00250 if (delay_bind_bool(varName, localName, "noFastRetrans_", &noFastRetrans_, tracer)) return TCL_OK;
00251 if (delay_bind_bool(varName, localName, "precisionReduce_", &precision_reduce_, tracer)) return TCL_OK;
00252 if (delay_bind_bool(varName, localName, "oldCode_", &oldCode_, tracer)) return TCL_OK;
00253 if (delay_bind_bool(varName, localName, "useHeaders_", &useHeaders_, tracer)) return TCL_OK;
00254 if (delay_bind(varName, localName, "low_window_", &low_window_, tracer)) return TCL_OK;
00255 if (delay_bind(varName, localName, "high_window_", &high_window_, tracer)) return TCL_OK;
00256 if (delay_bind(varName, localName, "high_p_", &high_p_, tracer)) return TCL_OK;
00257 if (delay_bind(varName, localName, "high_decrease_", &high_decrease_, tracer)) return TCL_OK;
00258 if (delay_bind(varName, localName, "max_ssthresh_", &max_ssthresh_, tracer)) return TCL_OK;
00259 if (delay_bind(varName, localName, "cwnd_frac_", &cwnd_frac_, tracer)) return TCL_OK;
00260 if (delay_bind_bool(varName, localName, "timerfix_", &timerfix_, tracer)) return TCL_OK;
00261 if (delay_bind_bool(varName, localName, "rfc2988_", &rfc2988_, tracer)) return TCL_OK;
00262 if (delay_bind(varName, localName, "singledup_", &singledup_ , tracer)) return TCL_OK;
00263 if (delay_bind(varName, localName, "rate_request_", &rate_request_ , tracer)) return TCL_OK;
00264 if (delay_bind_bool(varName, localName, "qs_enabled_", &qs_enabled_, tracer)) return TCL_OK;
00265
00266
00267 #ifdef TCP_DELAY_BIND_ALL
00268 // not if (delay-bound delay-bound tracevars aren't yet supported
00269 if (delay_bind(varName, localName, "t_seqno_", &t_seqno_ , tracer)) return TCL_OK;
00270 if (delay_bind(varName, localName, "rtt_", &t_rtt_ , tracer)) return TCL_OK;
00271 if (delay_bind(varName, localName, "srtt_", &t_srtt_ , tracer)) return TCL_OK;
00272 if (delay_bind(varName, localName, "rttvar_", &t_rttvar_ , tracer)) return TCL_OK;
00273 if (delay_bind(varName, localName, "backoff_", &t_backoff_ , tracer)) return TCL_OK;
00274
00275 if (delay_bind(varName, localName, "dupacks_", &dupacks_ , tracer)) return TCL_OK;
00276 if (delay_bind(varName, localName, "seqno_", &curseq_ , tracer)) return TCL_OK;
00277 if (delay_bind(varName, localName, "ack_", &highest_ack_ , tracer)) return TCL_OK;
00278 if (delay_bind(varName, localName, "cwnd_", &cwnd_ , tracer)) return TCL_OK;
00279 if (delay_bind(varName, localName, "ssthresh_", &ssthresh_ , tracer)) return TCL_OK;
00280 if (delay_bind(varName, localName, "maxseq_", &maxseq_ , tracer)) return TCL_OK;
00281 if (delay_bind(varName, localName, "ndatapack_", &ndatapack_ , tracer)) return TCL_OK;
00282 if (delay_bind(varName, localName, "ndatabytes_", &ndatabytes_ , tracer)) return TCL_OK;
00283 if (delay_bind(varName, localName, "nackpack_", &nackpack_ , tracer)) return TCL_OK;
00284 if (delay_bind(varName, localName, "nrexmit_", &nrexmit_ , tracer)) return TCL_OK;
00285 if (delay_bind(varName, localName, "nrexmitpack_", &nrexmitpack_ , tracer)) return TCL_OK;
00286 if (delay_bind(varName, localName, "nrexmitbytes_", &nrexmitbytes_ , tracer)) return TCL_OK;
00287 if (delay_bind(varName, localName, "necnresponses_", &necnresponses_ , tracer)) return TCL_OK;
00288 if (delay_bind(varName, localName, "ncwndcuts_", &ncwndcuts_ , tracer)) return TCL_OK;
00289 #endif
00290
00291 return Agent::delay_bind_dispatch(varName, localName, tracer);
00292 }
|
Here is the call graph for this function:

|
|
Reimplemented from Agent. Reimplemented in BayFullTcpAgent, FullTcpAgent, SackFullTcpAgent, RFC793eduTcpAgent, and VegasTcpAgent. Definition at line 107 of file tcp.cc. References Agent::delay_bind_init_all(), and TcpAgent::reset(). Referenced by VegasTcpAgent::delay_bind_init_all(), RFC793eduTcpAgent::delay_bind_init_all(), FullTcpAgent::delay_bind_init_all(), and BayFullTcpAgent::delay_bind_init_all().
00108 {
00109
00110 // Defaults for bound variables should be set in ns-default.tcl.
00111 delay_bind_init_one("window_");
00112 delay_bind_init_one("windowInit_");
00113 delay_bind_init_one("windowInitOption_");
00114
00115 delay_bind_init_one("syn_");
00116 delay_bind_init_one("windowOption_");
00117 delay_bind_init_one("windowConstant_");
00118 delay_bind_init_one("windowThresh_");
00119 delay_bind_init_one("delay_growth_");
00120 delay_bind_init_one("overhead_");
00121 delay_bind_init_one("tcpTick_");
00122 delay_bind_init_one("ecn_");
00123 delay_bind_init_one("old_ecn_");
00124 delay_bind_init_one("eln_");
00125 delay_bind_init_one("eln_rxmit_thresh_");
00126 delay_bind_init_one("packetSize_");
00127 delay_bind_init_one("tcpip_base_hdr_size_");
00128 delay_bind_init_one("ts_option_size_");
00129 delay_bind_init_one("bugFix_");
00130 delay_bind_init_one("lessCareful_");
00131 delay_bind_init_one("slow_start_restart_");
00132 delay_bind_init_one("restart_bugfix_");
00133 delay_bind_init_one("timestamps_");
00134 delay_bind_init_one("maxburst_");
00135 delay_bind_init_one("maxcwnd_");
00136 delay_bind_init_one("numdupacks_");
00137 delay_bind_init_one("numdupacksFrac_");
00138 delay_bind_init_one("maxrto_");
00139 delay_bind_init_one("minrto_");
00140 delay_bind_init_one("srtt_init_");
00141 delay_bind_init_one("rttvar_init_");
00142 delay_bind_init_one("rtxcur_init_");
00143 delay_bind_init_one("T_SRTT_BITS");
00144 delay_bind_init_one("T_RTTVAR_BITS");
00145 delay_bind_init_one("rttvar_exp_");
00146 delay_bind_init_one("awnd_");
00147 delay_bind_init_one("decrease_num_");
00148 delay_bind_init_one("increase_num_");
00149 delay_bind_init_one("k_parameter_");
00150 delay_bind_init_one("l_parameter_");
00151 delay_bind_init_one("trace_all_oneline_");
00152 delay_bind_init_one("nam_tracevar_");
00153
00154 delay_bind_init_one("QOption_");
00155 delay_bind_init_one("EnblRTTCtr_");
00156 delay_bind_init_one("control_increase_");
00157 delay_bind_init_one("noFastRetrans_");
00158 delay_bind_init_one("precisionReduce_");
00159 delay_bind_init_one("oldCode_");
00160 delay_bind_init_one("useHeaders_");
00161 delay_bind_init_one("low_window_");
00162 delay_bind_init_one("high_window_");
00163 delay_bind_init_one("high_p_");
00164 delay_bind_init_one("high_decrease_");
00165 delay_bind_init_one("max_ssthresh_");
00166 delay_bind_init_one("cwnd_frac_");
00167 delay_bind_init_one("timerfix_");
00168 delay_bind_init_one("rfc2988_");
00169 delay_bind_init_one("singledup_");
00170 delay_bind_init_one("rate_request_");
00171 delay_bind_init_one("qs_enabled_");
00172
00173 #ifdef TCP_DELAY_BIND_ALL
00174 // out because delay-bound tracevars aren't yet supported
00175 delay_bind_init_one("t_seqno_");
00176 delay_bind_init_one("rtt_");
00177 delay_bind_init_one("srtt_");
00178 delay_bind_init_one("rttvar_");
00179 delay_bind_init_one("backoff_");
00180 delay_bind_init_one("dupacks_");
00181 delay_bind_init_one("seqno_");
00182 delay_bind_init_one("ack_");
00183 delay_bind_init_one("cwnd_");
00184 delay_bind_init_one("ssthresh_");
00185 delay_bind_init_one("maxseq_");
00186 delay_bind_init_one("ndatapack_");
00187 delay_bind_init_one("ndatabytes_");
00188 delay_bind_init_one("nackpack_");
00189 delay_bind_init_one("nrexmit_");
00190 delay_bind_init_one("nrexmitpack_");
00191 delay_bind_init_one("nrexmitbytes_");
00192 delay_bind_init_one("necnresponses_");
00193 delay_bind_init_one("ncwndcuts_");
00194 #endif /* TCP_DELAY_BIND_ALL */
00195
00196 Agent::delay_bind_init_all();
00197
00198 reset();
00199 }
|
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:

|
|
|
|
|
Reimplemented in FullTcpAgent, TahoeFullTcpAgent, SackFullTcpAgent, Sack1TcpAgent, RenoTcpAgent, and NewRenoTcpAgent. Definition at line 1364 of file tcp.cc. References TcpAgent::bug_fix_, CLOSE_CWND_ONE, CLOSE_SSTHRESH_HALF, CWND_ACTION_DUPACK, CWND_ACTION_ECN, TcpAgent::ecn_, TcpAgent::highest_ack_, TcpAgent::last_cwnd_action_, TcpAgent::maxseq_, TcpAgent::recover_, TcpAgent::reset_rtx_timer(), TcpAgent::slowdown(), and TcpAgent::trace_event(). Referenced by TcpAgent::recv(), and RFC793eduTcpAgent::recv().
01365 {
01366 int recovered = (highest_ack_ > recover_);
01367 if (recovered || (!bug_fix_ && !ecn_)) {
01368 goto tahoe_action;
01369 }
01370
01371 if (ecn_ && last_cwnd_action_ == CWND_ACTION_ECN) {
01372 last_cwnd_action_ = CWND_ACTION_DUPACK;
01373 slowdown(CLOSE_CWND_ONE);
01374 reset_rtx_timer(0,0);
01375 return;
01376 }
01377
01378 if (bug_fix_) {
01379 /*
01380 * The line below, for "bug_fix_" true, avoids
01381 * problems with multiple fast retransmits in one
01382 * window of data.
01383 */
01384 return;
01385 }
01386
01387 tahoe_action:
01388 // we are now going to fast-retransmit and willtrace that event
01389 trace_event("FAST_RETX");
01390
01391 recover_ = maxseq_;
01392 last_cwnd_action_ = CWND_ACTION_DUPACK;
01393 slowdown(CLOSE_SSTHRESH_HALF|CLOSE_CWND_ONE);
01394 reset_rtx_timer(0,0);
01395 return;
01396 }
|
Here is the call graph for this function:

|
|
Definition at line 1232 of file tcp.cc. References CLOSE_CWND_HALF, CLOSE_SSTHRESH_HALF, TcpAgent::cwnd_, CWND_ACTION_ECN, CWND_ACTION_TIMEOUT, TcpAgent::ecn_backoff_, TcpAgent::last_cwnd_action_, TcpAgent::maxseq_, TcpAgent::necnresponses_, TcpAgent::recover_, TcpAgent::rtt_backoff(), and TcpAgent::slowdown(). Referenced by TcpAgent::recv(), VegasTcpAgent::recv(), Sack1TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), FullTcpAgent::recv(), and FackTcpAgent::recv().
01233 {
01234 if (seqno > recover_ ||
01235 last_cwnd_action_ == CWND_ACTION_TIMEOUT) {
01236 recover_ = maxseq_;
01237 last_cwnd_action_ = CWND_ACTION_ECN;
01238 if (cwnd_ <= 1.0) {
01239 if (ecn_backoff_)
01240 rtt_backoff();
01241 else ecn_backoff_ = 1;
01242 } else ecn_backoff_ = 0;
01243 slowdown(CLOSE_CWND_HALF|CLOSE_SSTHRESH_HALF);
01244 ++necnresponses_ ;
01245 // added by sylvia to count number of ecn responses
01246 }
01247 }
|
Here is the call graph for this function:

|
|
Definition at line 1402 of file tcp.cc. References TcpAgent::cwnd_, TcpAgent::initial_window(), TcpAgent::last_ack_, TcpAgent::maxseq_, and TcpAgent::qs_approved_. Referenced by TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv().
01403 {
01404 qs_approved_ = 0;
01405 int new_cwnd = maxseq_ - last_ack_;
01406 if (new_cwnd > 1 && new_cwnd < cwnd_) {
01407 cwnd_ = new_cwnd;
01408 if (cwnd_ < initial_window())
01409 cwnd_ = initial_window();
01410 }
01411 }
|
Here is the call graph for this function:

|
|
Reimplemented in FullTcpAgent. Definition at line 1603 of file tcp.cc. Referenced by IntTcpAgent::newack(), FackTcpAgent::oldack(), Sack1TcpAgent::recv(), TcpAgent::recv_newack_helper(), VegasTcpAgent::recv_newack_helper(), RFC793eduTcpAgent::recv_newack_helper(), TcpFsAgent::recv_newack_helper(), FackTcpAgent::recv_newack_helper(), and TcpAsymAgent::recv_newack_helper().
01604 {
01605 Tcl::instance().evalf("%s done", this->name());
01606 }
|
|
|
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:

|
|
Reimplemented in BayFullTcpAgent, and FullTcpAgent. Definition at line 573 of file tcp.cc. References TcpAgent::tcpip_base_hdr_size_, TcpAgent::ts_option_, and TcpAgent::ts_option_size_. Referenced by TcpAgent::output(), and QSNewRenoTcpAgent::output().
00574 {
00575 int total = tcpip_base_hdr_size_;
00576 if (total < 1) {
00577 fprintf(stderr,
00578 "TcpAgent(%s): warning: tcpip hdr size is only %d bytes\n",
00579 name(), tcpip_base_hdr_size_);
00580 }
00581 if (ts_option_)
00582 total += ts_option_size_;
00583 return (total);
00584 }
|
|
|
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 918 of file tcp.cc. References TcpAgent::compute_p(), TcpAgent::cwnd_, TcpAgent::cwnd_frac_, TcpAgent::cwnd_last_, TcpAgent::decrease_param(), TcpAgent::increase_last_, and TcpAgent::low_window_. Referenced by TcpAgent::opencwnd().
00919 {
00920 double increase, decrease, p, answer;
00921 /* extending the slow-start for high-speed TCP */
00922
00923 /* for highspeed TCP -- from Sylvia Ratnasamy, */
00924 /* modifications by Sally Floyd and Evandro de Souza */
00925 // p ranges from 1.5/W^2 at congestion window low_window_, to
00926 // high_p_ at congestion window high_window_, on a log-log scale.
00927 // The decrease factor ranges from 0.5 to high_decrease
00928 // as the window ranges from low_window to high_window,
00929 // as the log of the window.
00930 // For an efficient implementation, this would just be looked up
00931 // in a table, with the increase and decrease being a function of the
00932 // congestion window.
00933
00934 if (cwnd_ <= low_window_) {
00935 answer = 1 / cwnd_;
00936 return answer;
00937 } else if (cwnd_ >= cwnd_last_ && cwnd_ < cwnd_frac_ * cwnd_last_ ) {
00938 answer = increase_last_ / cwnd_;
00939 return answer;
00940 } else {
00941 p = compute_p();
00942 decrease = decrease_param();
00943 increase = (cwnd_ * cwnd_ *2.0* decrease * p)/(2.0 - decrease);
00944 // double max_increase = 157.8;
00945 // if (increase > max_increase) {
00946 // increase = max_increase;
00947 // }
00948 answer = increase / cwnd_;
00949 cwnd_last_ = cwnd_;
00950 increase_last_ = increase;
00951 return answer;
00952 }
00953 }
|
Here is the call graph for this function:

|
|
Definition at line 1301 of file tcp.cc. References abort(), Agent::size_, TcpAgent::wnd_init_, and TcpAgent::wnd_init_option_. Referenced by TcpAgent::endQuickStart(), TcpAgent::processQuickStart(), TcpAgent::recv(), VegasTcpAgent::recv(), Sack1TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), QSNewRenoTcpAgent::recv(), NewRenoTcpAgent::recv(), FullTcpAgent::recv(), TcpAgent::set_initial_window(), and QSNewRenoTcpAgent::timeout().
01302 {
01303 //
01304 // init_option = 1: static iw of wnd_init_
01305 //
01306 if (wnd_init_option_ == 1) {
01307 return (wnd_init_);
01308 }
01309 else if (wnd_init_option_ == 2) {
01310 // do iw according to Internet draft
01311 if (size_ <= 1095) {
01312 return (4.0);
01313 } else if (size_ < 2190) {
01314 return (3.0);
01315 } else {
01316 return (2.0);
01317 }
01318 }
01319 // XXX what should we return here???
01320 fprintf(stderr, "Wrong number of wnd_init_option_ %d\n",
01321 wnd_init_option_);
01322 abort();
01323 return (2.0); // XXX make msvc happy.
01324 }
|
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_; }
|
|
||||||||||||||||
|
Definition at line 872 of file tcp.cc. Referenced by TcpAgent::opencwnd().
00873 {
00874 int round = int(cwnd / (double(max_ssthresh)/2.0));
00875 double increment1 = 1.0/(double(round));
00876 if (increment < increment1)
00877 increment = increment1;
00878 return increment;
00879 }
|
|
||||||||||||||||||||||||
|
Definition at line 860 of file tcp.cc. Referenced by TcpAgent::compute_p(), and TcpAgent::decrease_param().
00861 {
00862 // The y coordinate factor ranges from y_1 to y_2
00863 // as the x coordinate ranges from x_1 to x_2.
00864 double y = y_1 + ((y_2 - y_1) * ((x - x_1)/(x_2-x_1)));
00865 return y;
00866 }
|
|
|
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 1253 of file tcp.cc. References TcpAgent::prev_highest_ack_, TcpAgent::t_seqno_, and TcpAgent::window(). Referenced by TcpAgent::recv_newack_helper().
01253 {
01254 int win = window () ;
01255 if (t_seqno_ > (prev_highest_ack_ + win))
01256 return 1;
01257 else
01258 return 0;
01259 }
|
Here is the call graph for this function:

|
|
Reimplemented in BayFullTcpAgent, FullTcpAgent, IntTcpAgent, RFC793eduTcpAgent, SackRHTcpAgent, and TcpSessionAgent. Definition at line 1174 of file tcp.cc. References hdr_flags::access(), hdr_tcp::access(), TcpAgent::awnd_, Scheduler::clock(), TcpAgent::cwnd_, TcpAgent::dupacks_, TcpAgent::ecn_backoff_, hdr_flags::ecnecho(), TcpAgent::ect_, TcpAgent::highest_ack_, Scheduler::instance(), TcpAgent::last_ack_, TcpAgent::newtimer(), hdr_flags::no_ts_, TcpAgent::prev_highest_ack_, TcpAgent::rtt_active_, TcpAgent::rtt_seq_, TcpAgent::rtt_ts_, TcpAgent::rtt_update(), hdr_tcp::seqno(), TcpAgent::t_backoff_, TcpAgent::t_seqno_, TcpAgent::timerfix_, hdr_tcp::ts_echo(), TcpAgent::ts_option_, and TcpAgent::wnd_th_. Referenced by Sack1TcpAgent::recv(), TcpAgent::recv_newack_helper(), VegasTcpAgent::recv_newack_helper(), TcpFsAgent::recv_newack_helper(), FackTcpAgent::recv_newack_helper(), and TcpAsymAgent::recv_newack_helper().
01175 {
01176 double now = Scheduler::instance().clock();
01177 hdr_tcp *tcph = hdr_tcp::access(pkt);
01178 /*
01179 * Wouldn't it be better to set the timer *after*
01180 * updating the RTT, instead of *before*?
01181 */
01182 if (!timerfix_) newtimer(pkt);
01183 dupacks_ = 0;
01184 last_ack_ = tcph->seqno();
01185 prev_highest_ack_ = highest_ack_ ;
01186 highest_ack_ = last_ack_;
01187
01188 if (t_seqno_ < last_ack_ + 1)
01189 t_seqno_ = last_ack_ + 1;
01190 /*
01191 * Update RTT only if it's OK to do so from info in the flags header.
01192 * This is needed for protocols in which intermediate agents
01193 * in the network intersperse acks (e.g., ack-reconstructors) for
01194 * various reasons (without violating e2e semantics).
01195 */
01196 hdr_flags *fh = hdr_flags::access(pkt);
01197 if (!fh->no_ts_) {
01198 if (ts_option_)
01199 rtt_update(now - tcph->ts_echo());
01200
01201 if (rtt_active_ && tcph->seqno() >= rtt_seq_) {
01202 if (!ect_ || !ecn_backoff_ ||
01203 !hdr_flags::access(pkt)->ecnecho()) {
01204 /*
01205 * Don't end backoff if still in ECN-Echo with
01206 * a congestion window of 1 packet.
01207 */
01208 t_backoff_ = 1;
01209 ecn_backoff_ = 0;
01210 }
01211 rtt_active_ = 0;
01212 if (!ts_option_)
01213 rtt_update(now - rtt_ts_);
01214 }
01215 }
01216 if (timerfix_) newtimer(pkt);
01217 /* update average window */
01218 awnd_ *= 1.0 - wnd_th_;
01219 awnd_ += wnd_th_ * cwnd_;
01220 }
|
Here is the call graph for this function:

|
|
Definition at line 838 of file tcp.cc. References hdr_tcp::access(), TcpAgent::cancel_rtx_timer(), TcpAgent::cwnd_, TcpAgent::maxseq_, hdr_tcp::seqno(), TcpAgent::set_rtx_timer(), and TcpAgent::t_seqno_. Referenced by TcpAgent::newack(), SackRHTcpAgent::newack(), RFC793eduTcpAgent::newack(), FackTcpAgent::oldack(), NewRenoTcpAgent::partialnewack_helper(), and Sack1TcpAgent::recv().
00839 {
00840 hdr_tcp *tcph = hdr_tcp::access(pkt);
00841 /*
00842 * t_seqno_, the next packet to send, is reset (decreased)
00843 * to highest_ack_ + 1 after a timeout,
00844 * so we also have to check maxseq_, the highest seqno sent.
00845 * In addition, if the packet sent after the timeout has
00846 * the ECN bit set, then the returning ACK caused cwnd_ to
00847 * be decreased to less than one, and we can't send another
00848 * packet until the retransmit timer again expires.
00849 * So we have to check for "cwnd_ < 1" as well.
00850 */
00851 if (t_seqno_ > tcph->seqno() || tcph->seqno() < maxseq_ || cwnd_ < 1)
00852 set_rtx_timer();
00853 else
00854 cancel_rtx_timer();
00855 }
|
Here is the call graph for this function:

|
|
Definition at line 884 of file tcp.cc. References TcpAgent::numdupacks_, and TcpAgent::numdupacksFrac_. Referenced by Sack1TcpAgent::dupack_action(), and Sack1TcpAgent::recv().
00885 {
00886 int cwndfraction = (int) cwnd/numdupacksFrac_;
00887 if (numdupacks_ > cwndfraction) {
00888 return numdupacks_;
00889 } else {
00890 return cwndfraction;
00891 }
00892 }
|
|
|
Reimplemented in FackTcpAgent, IntTcpAgent, and RFC793eduTcpAgent. Definition at line 958 of file tcp.cc. References abort(), TcpAgent::awnd_, TcpAgent::count_, TcpAgent::cwnd_, CWND_ACTION_TIMEOUT, TcpAgent::fcnt_, TcpAgent::increase_num_, TcpAgent::increase_param(), TcpAgent::k_parameter_, TcpAgent::last_cwnd_action_, TcpAgent::limited_slow_start(), TcpAgent::max_ssthresh_, TcpAgent::maxcwnd_, pow(), TcpAgent::ssthresh_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, TcpAgent::tcp_tick_, TcpAgent::wnd_const_, and TcpAgent::wnd_option_. Referenced by FackTcpAgent::opencwnd(), TcpSessionAgent::recv(), SackRHTcpAgent::recv(), FullTcpAgent::recv(), BayFullTcpAgent::recv(), TcpAgent::recv_newack_helper(), VegasTcpAgent::recv_newack_helper(), TcpFsAgent::recv_newack_helper(), and TcpAsymAgent::recv_newack_helper().
00959 {
00960 double increment;
00961 if (cwnd_ < ssthresh_) {
00962 /* slow-start (exponential) */
00963 cwnd_ += 1;
00964 } else {
00965 /* linear */
00966 double f;
00967 switch (wnd_option_) {
00968 case 0:
00969 if (++count_ >= cwnd_) {
00970 count_ = 0;
00971 ++cwnd_;
00972 }
00973 break;
00974
00975 case 1:
00976 /* This is the standard algorithm. */
00977 increment = increase_num_ / cwnd_;
00978 if ((last_cwnd_action_ == 0 ||
00979 last_cwnd_action_ == CWND_ACTION_TIMEOUT)
00980 && max_ssthresh_ > 0) {
00981 increment = limited_slow_start(cwnd_,
00982 max_ssthresh_, increment);
00983 }
00984 cwnd_ += increment;
00985 break;
00986
00987 case 2:
00988 /* These are window increase algorithms
00989 * for experimental purposes only. */
00990 f = (t_srtt_ >> T_SRTT_BITS) * tcp_tick_;
00991 f *= f;
00992 f *= wnd_const_;
00993 f += fcnt_;
00994 if (f > cwnd_) {
00995 fcnt_ = 0;
00996 ++cwnd_;
00997 } else
00998 fcnt_ = f;
00999 break;
01000
01001 case 3:
01002 f = awnd_;
01003 f *= f;
01004 f *= wnd_const_;
01005 f += fcnt_;
01006 if (f > cwnd_) {
01007 fcnt_ = 0;
01008 ++cwnd_;
01009 } else
01010 fcnt_ = f;
01011 break;
01012
01013 case 4:
01014 f = awnd_;
01015 f *= wnd_const_;
01016 f += fcnt_;
01017 if (f > cwnd_) {
01018 fcnt_ = 0;
01019 ++cwnd_;
01020 } else
01021 fcnt_ = f;
01022 break;
01023 case 5:
01024 f = (t_srtt_ >> T_SRTT_BITS) * tcp_tick_;
01025 f *= wnd_const_;
01026 f += fcnt_;
01027 if (f > cwnd_) {
01028 fcnt_ = 0;
01029 ++cwnd_;
01030 } else
01031 fcnt_ = f;
01032 break;
01033 case 6:
01034 /* binomial controls */
01035 cwnd_ += increase_num_ / (cwnd_*pow(cwnd_,k_parameter_));
01036 break;
01037 case 8:
01038 /* high-speed TCP */
01039 increment = increase_param();
01040 if ((last_cwnd_action_ == 0 ||
01041 last_cwnd_action_ == CWND_ACTION_TIMEOUT)
01042 && max_ssthresh_ > 0) {
01043 increment = limited_slow_start(cwnd_,
01044 max_ssthresh_, increment);
01045 }
01046 cwnd_ += increment;
01047 break;
01048 default:
01049 #ifdef notdef
01050 /*XXX*/
01051 error("illegal window option %d", wnd_option_);
01052 #endif
01053 abort();
01054 }
01055 }
01056 // if maxcwnd_ is set (nonzero), make it the cwnd limit
01057 if (maxcwnd_ && (int(cwnd_) > maxcwnd_))
01058 cwnd_ = maxcwnd_;
01059
01060 return;
01061 }
|
Here is the call graph for this function:

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

|
|
Reimplemented in NewRenoTcpAsymFsAgent, TcpAsymAgent, TcpRenoAsymAgent, NewRenoTcpAsymAgent, TcpFsAgent, RenoTcpFsAgent, NewRenoTcpFsAgent, and IntTcpAgent. Definition at line 226 of file tcp.h. Referenced by TcpAgent::output(), RFC793eduTcpAgent::output(), and QSNewRenoTcpAgent::output().
00226 { return; }
|
|
|
Reimplemented in NewRenoTcpAsymFsAgent, TcpFsAgent, NewRenoTcpFsAgent, and NewRenoTcpAgent. Definition at line 231 of file tcp.h.
00231 {};
|
|
|
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().
|
|
|
|
|
|
Definition at line 1806 of file tcp.cc. References TcpAgent::dupacks_, TcpAgent::F_counting, TcpAgent::numdupacks_, TcpAgent::RTT_count, and TcpAgent::W_timed. Referenced by TcpAgent::recv().
01807 {
01808 if (F_counting == 1) {
01809 if (seqno >= W_timed) {
01810 RTT_count ++ ;
01811 F_counting = 0 ;
01812 }
01813 else {
01814 if (dupacks_ == numdupacks_)
01815 RTT_count ++ ;
01816 }
01817 }
01818 }
|
|
|
Definition at line 1702 of file tcp.cc. References Scheduler::clock(), CLOSE_CWND_HALF_WAY, TcpAgent::curseq_, CWND_HALF_WITH_MIN, TcpAgent::EnblRTTCtr_, TcpAgent::highest_ack_, Scheduler::instance(), TcpAgent::rtt_counting(), TcpAgent::slowdown(), TcpAgent::T_last, TcpAgent::T_prev, TcpAgent::t_rtxcur_, TcpAgent::t_seqno_, TcpAgent::tcp_tick_, THREE_QUARTER_SSTHRESH, TcpAgent::W_used, and TcpAgent::window(). Referenced by TcpAgent::send_much(), Sack1TcpAgent::send_much(), and TcpAgent::send_one().
01703 {
01704 int tcp_now = (int)(Scheduler::instance().clock()/tcp_tick_ + 0.5);
01705 int rto = (int)(t_rtxcur_/tcp_tick_) ;
01706 /*double ct = Scheduler::instance().clock();*/
01707
01708 if (!EnblRTTCtr_) {
01709 if (tcp_now - T_last >= rto) {
01710 // The sender has been idle.
01711 slowdown(THREE_QUARTER_SSTHRESH) ;
01712 for (int i = 0 ; i < (tcp_now - T_last)/rto; i ++) {
01713 slowdown(CWND_HALF_WITH_MIN);
01714 }
01715 T_prev = tcp_now ;
01716 W_used = 0 ;
01717 }
01718 T_last = tcp_now ;
01719 if (t_seqno_ == highest_ack_+ window()) {
01720 T_prev = tcp_now ;
01721 W_used = 0 ;
01722 }
01723 else if (t_seqno_ == curseq_-1) {
01724 // The sender has no more data to send.
01725 int tmp = t_seqno_ - highest_ack_ ;
01726 if (tmp > W_used)
01727 W_used = tmp ;
01728 if (tcp_now - T_prev >= rto) {
01729 // The sender has been application-limited.
01730 slowdown(THREE_QUARTER_SSTHRESH);
01731 slowdown(CLOSE_CWND_HALF_WAY);
01732 T_prev = tcp_now ;
01733 W_used = 0 ;
01734 }
01735 }
01736 } else {
01737 rtt_counting();
01738 }
01739 }
|
Here is the call graph for this function:

|
|
Definition at line 1413 of file tcp.cc. References hdr_qs::access(), hdr_tcp::access(), Scheduler::clock(), hdr_qs::flag(), TcpAgent::initial_window(), Scheduler::instance(), TcpAgent::qs_approved_, TcpAgent::qs_requested_, QS_RESPONSE, hdr_qs::rate(), hdr_tcp::ts_echo(), hdr_qs::ttl(), TcpAgent::ttl_diff_, TcpAgent::wnd_init_, and TcpAgent::wnd_init_option_. Referenced by TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv().
01414 {
01415 // QuickStart code from Srikanth Sundarrajan.
01416 hdr_tcp *tcph = hdr_tcp::access(pkt);
01417 hdr_qs *qsh = hdr_qs::access(pkt);
01418 double now = Scheduler::instance().clock();
01419 int app_rate;
01420
01421 // printf("flag: %d ttl: %d ttl_diff: %d rate: %d\n", qsh->flag(),
01422 // qsh->ttl(), ttl_diff_, qsh->rate());
01423 qs_requested_ = 0;
01424 qs_approved_ = 0;
01425 if (qsh->flag() == QS_RESPONSE && qsh->ttl() == ttl_diff_ &&
01426 qsh->rate() > 0) {
01427 app_rate = (int) (qsh->rate() * (now - tcph->ts_echo())) ;
01428 printf("Quick Start approved, rate %d, window %d\n",
01429 qsh->rate(), app_rate);
01430 if (app_rate > initial_window()) {
01431 wnd_init_option_ = 1;
01432 wnd_init_ = app_rate;
01433 qs_approved_ = 1;
01434 }
01435 } else { // Quick Start rejected
01436 printf("Quick Start rejected\n");
01437 }
01438
01439 }
|
Here is the call graph for this function:

|
|
Reimplemented in CorresHost. Definition at line 1637 of file tcp.cc. References TcpAgent::closecwnd(), CWND_ACTION_ECN, TcpAgent::highest_ack_, TcpAgent::last_cwnd_action_, TcpAgent::maxseq_, and TcpAgent::recover_.
01638 {
01639 if (highest_ack_ >= recover_) {
01640 recover_ = maxseq_;
01641 last_cwnd_action_ = CWND_ACTION_ECN;
01642 closecwnd(how);
01643 }
01644 }
|
Here is the call graph for this function:

|
||||||||||||
|
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 TcpAgent. Definition at line 67 of file tcp-simple.cc. References Agent::app_, Packet::free(), HDR_CMN, Application::recv(), hdr_cmn::size(), and TcpAgent::tcpip_base_hdr_size_.
00068 {
00069 hdr_cmn *th = HDR_CMN(pkt);
00070 int datalen = th->size() - tcpip_base_hdr_size_;
00071 if (app_)
00072 app_->recv(datalen);
00073 // No lastbyte_ callback, because no packet fragmentation.
00074 Packet::free(pkt);
00075 }
|
Here is the call graph for this function:

|
|
Reimplemented in NewRenoTcpAsymFsAgent, TcpAsymAgent, TcpRenoAsymAgent, NewRenoTcpAsymAgent, TcpFsAgent, RenoTcpFsAgent, and NewRenoTcpFsAgent. Definition at line 229 of file tcp.h. Referenced by TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), and FackTcpAgent::recv().
00229 { return; }
|
|
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 {};
|
|
Here is the call graph for this function:

|
|
Definition at line 395 of file tcp.cc. References TcpAgent::Backoffs, Scheduler::clock(), TcpAgent::F_counting, TcpAgent::F_full, Scheduler::instance(), TcpAgent::RTT_count, TcpAgent::RTT_goodcount, TcpAgent::RTT_prev, TcpAgent::T_start, TcpAgent::tcp_tick_, and TcpAgent::W_timed. Referenced by TcpAgent::reset().
00396 {
00397 int now = (int)(Scheduler::instance().clock()/tcp_tick_ + 0.5);
00398
00399 T_start = now ;
00400 RTT_count = 0 ;
00401 RTT_prev = 0 ;
00402 RTT_goodcount = 1 ;
00403 F_counting = 0 ;
00404 W_timed = -1 ;
00405 F_full = 0 ;
00406 Backoffs = 0 ;
00407 }
|
Here is the call graph for this function:

|
||||||||||||
|
Reimplemented in TcpSessionAgent. Definition at line 813 of file tcp.cc. References TcpAgent::highest_ack_, TcpAgent::rtt_active_, TcpAgent::rtt_backoff(), TcpAgent::set_rtx_timer(), and TcpAgent::t_seqno_. Referenced by TcpAgent::dupack_action(), Sack1TcpAgent::dupack_action(), RenoTcpAgent::dupack_action(), NewRenoTcpAgent::dupack_action(), VegasTcpAgent::recv(), FackTcpAgent::recv(), TcpAgent::timeout(), VegasTcpAgent::timeout(), SackRHTcpAgent::timeout(), FackTcpAgent::timeout(), and TcpFsAgent::timeout_nonrtx_helper().
00814 {
00815 if (backoff)
00816 rtt_backoff();
00817 set_rtx_timer();
00818 if (!mild)
00819 t_seqno_ = highest_ack_ + 1;
00820 rtt_active_ = 0;
00821 }
|
Here is the call graph for this function:

|
|
Reimplemented in RFC793eduTcpAgent. Definition at line 552 of file tcp.cc. References TcpAgent::t_backoff_, TcpAgent::t_rttvar_, TcpAgent::t_srtt_, and TcpAgent::T_SRTT_BITS. Referenced by TcpAgent::ecn(), BayFullTcpAgent::fast_retransmit(), TcpAgent::reset_rtx_timer(), TcpSessionAgent::reset_rtx_timer(), FullTcpAgent::reset_rtx_timer(), and BayFullTcpAgent::reset_rtx_timer().
00553 {
00554 if (t_backoff_ < 64)
00555 t_backoff_ <<= 1;
00556
00557 if (t_backoff_ > 8) {
00558 /*
00559 * If backed off this far, clobber the srtt
00560 * value, storing it in the mean deviation
00561 * instead.
00562 */
00563 t_rttvar_ += (t_srtt_ >> T_SRTT_BITS);
00564 t_srtt_ = 0;
00565 }
00566 }
|
|
|
Definition at line 1748 of file tcp.cc. References TcpAgent::Backoffs, Scheduler::clock(), CLOSE_CWND_HALF_WAY, TcpAgent::curseq_, CWND_HALF_WITH_MIN, TcpAgent::F_counting, TcpAgent::F_full, TcpAgent::highest_ack_, Scheduler::instance(), TcpAgent::RTT_count, TcpAgent::RTT_goodcount, TcpAgent::RTT_prev, TcpAgent::slowdown(), TcpAgent::T_last, TcpAgent::t_seqno_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, TcpAgent::T_start, TcpAgent::tcp_tick_, THREE_QUARTER_SSTHRESH, TcpAgent::W_timed, TcpAgent::W_used, and TcpAgent::window(). Referenced by TcpAgent::process_qoption_after_send().
01749 {
01750 int tcp_now = (int)(Scheduler::instance().clock()/tcp_tick_ + 0.5);
01751 int rtt = (int(t_srtt_) >> T_SRTT_BITS) ;
01752
01753 if (rtt < 1)
01754 rtt = 1 ;
01755 if (tcp_now - T_last >= 2*rtt) {
01756 // The sender has been idle.
01757 int RTTs ;
01758 RTTs = (tcp_now -T_last)*RTT_goodcount/(rtt*2) ;
01759 RTTs = RTTs - Backoffs ;
01760 Backoffs = 0 ;
01761 if (RTTs > 0) {
01762 slowdown(THREE_QUARTER_SSTHRESH) ;
01763 for (int i = 0 ; i < RTTs ; i ++) {
01764 slowdown(CWND_HALF_WITH_MIN);
01765 RTT_prev = RTT_count ;
01766 W_used = 0 ;
01767 }
01768 }
01769 }
01770 T_last = tcp_now ;
01771 if (tcp_now - T_start >= 2*rtt) {
01772 if ((RTT_count > RTT_goodcount) || (F_full == 1)) {
01773 RTT_goodcount = RTT_count ;
01774 if (RTT_goodcount < 1) RTT_goodcount = 1 ;
01775 }
01776 RTT_prev = RTT_prev - RTT_count ;
01777 RTT_count = 0 ;
01778 T_start = tcp_now ;
01779 F_full = 0;
01780 }
01781 if (t_seqno_ == highest_ack_ + window()) {
01782 W_used = 0 ;
01783 F_full = 1 ;
01784 RTT_prev = RTT_count ;
01785 }
01786 else if (t_seqno_ == curseq_-1) {
01787 // The sender has no more data to send.
01788 int tmp = t_seqno_ - highest_ack_ ;
01789 if (tmp > W_used)
01790 W_used = tmp ;
01791 if (RTT_count - RTT_prev >= 2) {
01792 // The sender has been application-limited.
01793 slowdown(THREE_QUARTER_SSTHRESH) ;
01794 slowdown(CLOSE_CWND_HALF_WAY);
01795 RTT_prev = RTT_count ;
01796 Backoffs ++ ;
01797 W_used = 0;
01798 }
01799 }
01800 if (F_counting == 0) {
01801 W_timed = t_seqno_ ;
01802 F_counting = 1 ;
01803 }
01804 }
|
Here is the call graph for this function:

|
|
Definition at line 468 of file tcp.cc. References TcpAgent::rttvar_init_, TcpAgent::rtxcur_init_, TcpAgent::srtt_init_, TcpAgent::t_backoff_, TcpAgent::t_rtt_, TcpAgent::t_rttvar_, TcpAgent::T_RTTVAR_BITS, TcpAgent::t_rtxcur_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, and TcpAgent::tcp_tick_. Referenced by BayFullTcpAgent::reinit(), TcpAgent::reset(), and FullTcpAgent::reset().
00469 {
00470 t_rtt_ = 0;
00471 t_srtt_ = int(srtt_init_ / tcp_tick_) << T_SRTT_BITS;
00472 t_rttvar_ = int(rttvar_init_ / tcp_tick_) << T_RTTVAR_BITS;
00473 t_rtxcur_ = rtxcur_init_;
00474 t_backoff_ = 1;
00475 }
|
|
|
Definition at line 477 of file tcp.cc. References TcpAgent::maxrto_, TcpAgent::minrto_, TcpAgent::rfc2988_, TcpAgent::t_backoff_, TcpAgent::t_rtxcur_, TcpAgent::tcp_tick_, and TcpAgent::timeout(). Referenced by TcpAgent::set_rtx_timer(), TcpSessionAgent::set_rtx_timer(), and TcpFsAgent::set_rtx_timer().
00478 {
00479 double timeout;
00480 if (rfc2988_) {
00481 // Correction from Tom Kelly to be RFC2988-compliant, by
00482 // clamping minrto_ before applying t_backoff_.
00483 if (t_rtxcur_ < minrto_)
00484 timeout = minrto_ * t_backoff_;
00485 else
00486 timeout = t_rtxcur_ * t_backoff_;
00487 } else {
00488 timeout = t_rtxcur_ * t_backoff_;
00489 if (timeout < minrto_)
00490 timeout = minrto_;
00491 }
00492
00493 if (timeout > maxrto_)
00494 timeout = maxrto_;
00495
00496 if (timeout < 2.0 * tcp_tick_) {
00497 if (timeout < 0) {
00498 fprintf(stderr, "TcpAgent: negative RTO! (%f)\n",
00499 timeout);
00500 exit(1);
00501 }
00502 timeout = 2.0 * tcp_tick_;
00503 }
00504 return (timeout);
00505 }
|
Here is the call graph for this function:

|
|
Reimplemented in RFC793eduTcpAgent. Definition at line 509 of file tcp.cc. References TcpAgent::boot_time_, Scheduler::clock(), Scheduler::instance(), TcpAgent::rttvar_exp_, TcpAgent::t_rtt_, TcpAgent::t_rttvar_, TcpAgent::T_RTTVAR_BITS, TcpAgent::t_rtxcur_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, TcpAgent::tcp_tick_, and TcpAgent::ts_option_. Referenced by TcpAgent::newack(), TcpSessionAgent::newack(), SackRHTcpAgent::newack(), FullTcpAgent::newack(), BayFullTcpAgent::newack(), FackTcpAgent::oldack(), and FullTcpAgent::recv().
00510 {
00511 double now = Scheduler::instance().clock();
00512 if (ts_option_)
00513 t_rtt_ = int(tao /tcp_tick_ + 0.5);
00514 else {
00515 double sendtime = now - tao;
00516 sendtime += boot_time_;
00517 double tickoff = fmod(sendtime, tcp_tick_);
00518 t_rtt_ = int((tao + tickoff) / tcp_tick_);
00519 }
00520 if (t_rtt_ < 1)
00521 t_rtt_ = 1;
00522
00523 //
00524 // srtt has 3 bits to the right of the binary point
00525 // rttvar has 2
00526 //
00527 if (t_srtt_ != 0) {
00528 register short delta;
00529 delta = t_rtt_ - (t_srtt_ >> T_SRTT_BITS); // d = (m - a0)
00530 if ((t_srtt_ += delta) <= 0) // a1 = 7/8 a0 + 1/8 m
00531 t_srtt_ = 1;
00532 if (delta < 0)
00533 delta = -delta;
00534 delta -= (t_rttvar_ >> T_RTTVAR_BITS);
00535 if ((t_rttvar_ += delta) <= 0) // var1 = 3/4 var0 + 1/4 |d|
00536 t_rttvar_ = 1;
00537 } else {
00538 t_srtt_ = t_rtt_ << T_SRTT_BITS; // srtt = rtt
00539 t_rttvar_ = t_rtt_ << (T_RTTVAR_BITS-1); // rttvar = rtt / 2
00540 }
00541 //
00542 // Current retransmit value is
00543 // (unscaled) smoothed round trip estimate
00544 // plus 2^rttvar_exp_ times (unscaled) rttvar.
00545 //
00546 t_rtxcur_ = (((t_rttvar_ << (rttvar_exp_ + (T_SRTT_BITS - T_RTTVAR_BITS))) +
00547 t_srtt_) >> T_SRTT_BITS ) * tcp_tick_;
00548
00549 return;
00550 }
|
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:

|
|
Reimplemented in NewRenoTcpAsymFsAgent, TcpAsymAgent, TcpRenoAsymAgent, NewRenoTcpAsymAgent, TcpFsAgent, RenoTcpFsAgent, and NewRenoTcpFsAgent. Definition at line 227 of file tcp.h. Referenced by TcpAgent::send_much(), and FackTcpAgent::send_much().
00227 { return; }
|
|
|
Reimplemented in NewRenoTcpAsymFsAgent, TcpFsAgent, RenoTcpFsAgent, and NewRenoTcpFsAgent. Definition at line 228 of file tcp.h. Referenced by TcpAgent::send_much(), and FackTcpAgent::send_much().
00228 { return; }
|
|
||||||||||||||||
Here is the call graph for this function:

|
|
Definition at line 1350 of file tcp.cc. References TcpAgent::curseq_, TcpAgent::cwnd_, TcpAgent::dupacks_, TcpAgent::highest_ack_, TcpAgent::output(), TcpAgent::process_qoption_after_send(), TcpAgent::QOption_, TcpAgent::t_seqno_, and TcpAgent::wnd_. Referenced by TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv().
01351 {
01352 if (t_seqno_ <= highest_ack_ + wnd_ && t_seqno_ < curseq_ &&
01353 t_seqno_ <= highest_ack_ + cwnd_ + dupacks_ ) {
01354 output(t_seqno_, 0);
01355 if (QOption_)
01356 process_qoption_after_send () ;
01357 t_seqno_ ++ ;
01358 // send_helper(); ??
01359 }
01360 return;
01361 }
|
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 TcpAgent. Definition at line 46 of file tcp-simple.cc. References Agent::allocpkt(), Scheduler::clock(), TcpAgent::curseq_, HDR_CMN, HDR_TCP, Scheduler::instance(), Agent::send(), hdr_tcp::seqno(), seqno_, hdr_cmn::size(), TcpAgent::tcpip_base_hdr_size_, hdr_tcp::ts(), hdr_tcp::ts_echo(), and TcpAgent::ts_peer_.
00047 {
00048 if (bytes == -1) {
00049 fprintf(stderr,
00050 "SimpleTcp doesn't support infinite send. Do not use FTP::start(), etc.\n");
00051 return;
00052 }
00053 // Simply sending out bytes out to target_
00054 curseq_ += bytes;
00055 seqno_ ++;
00056
00057 Packet *p = allocpkt();
00058 hdr_tcp *tcph = HDR_TCP(p);
00059 tcph->seqno() = seqno_;
00060 tcph->ts() = Scheduler::instance().clock();
00061 tcph->ts_echo() = ts_peer_;
00062 hdr_cmn *th = HDR_CMN(p);
00063 th->size() = bytes + tcpip_base_hdr_size_;
00064 send(p, 0);
00065 }
|
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:

|
|
Reimplemented in FullTcpAgent. Definition at line 386 of file tcp.cc. References TcpAgent::cwnd_, TcpAgent::delay_growth_, TcpAgent::initial_window(), and TcpAgent::syn_. Referenced by TcpAgent::reset(), and FullTcpAgent::set_initial_window().
00387 {
00388 if (syn_ && delay_growth_)
00389 cwnd_ = 1.0;
00390 else
00391 cwnd_ = initial_window();
00392 }
|
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 NewRenoTcpAsymFsAgent, TcpFsAgent, RenoTcpFsAgent, NewRenoTcpFsAgent, and TcpSessionAgent. Definition at line 827 of file tcp.cc. References TimerHandler::resched(), TcpAgent::rtt_timeout(), and TcpAgent::rtx_timer_. Referenced by TahoeFullTcpAgent::dupack_action(), FullTcpAgent::foutput(), FullTcpAgent::newack(), BayFullTcpAgent::newack(), TcpAgent::newtimer(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), BayFullTcpAgent::output(), FullTcpAgent::recv(), TcpAgent::reset_rtx_timer(), FullTcpAgent::reset_rtx_timer(), and BayFullTcpAgent::reset_rtx_timer().
00828 {
00829 rtx_timer_.resched(rtt_timeout());
00830 }
|
Here is the call graph for this function:

|
|
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 1064 of file tcp.cc. References CLOSE_CWND_HALF, CLOSE_CWND_HALF_WAY, CLOSE_CWND_INIT, CLOSE_CWND_ONE, CLOSE_CWND_RESTART, CLOSE_SSTHRESH_HALF, TcpAgent::cong_action_, TcpAgent::count_, TcpAgent::cwnd_, CWND_ACTION_TIMEOUT, CWND_HALF_WITH_MIN, TcpAgent::decrease_num_, TcpAgent::decrease_param(), TcpAgent::fcnt_, TcpAgent::first_decrease_, TcpAgent::l_parameter_, TcpAgent::last_cwnd_action_, TcpAgent::low_window_, TcpAgent::ncwndcuts_, pow(), TcpAgent::precision_reduce_, TcpAgent::ssthresh_, THREE_QUARTER_SSTHRESH, TcpAgent::trace_event(), TRUE, TcpAgent::W_used, TcpAgent::window(), TcpAgent::windowd(), TcpAgent::wnd_init_, TcpAgent::wnd_option_, and TcpAgent::wnd_restart_. Referenced by TcpAgent::dupack_action(), Sack1TcpAgent::dupack_action(), RenoTcpAgent::dupack_action(), NewRenoTcpAgent::dupack_action(), SackFullTcpAgent::dupack_action(), TahoeFullTcpAgent::dupack_action(), FullTcpAgent::dupack_action(), TcpAgent::ecn(), FullTcpAgent::foutput(), TcpAgent::process_qoption_after_send(), BayFullTcpAgent::recv(), FackTcpAgent::recv(), TcpAgent::rtt_counting(), TcpSessionAgent::send_much(), TcpAgent::timeout(), VegasTcpAgent::timeout(), TcpSessionAgent::timeout(), SackRHTcpAgent::timeout(), BayFullTcpAgent::timeout(), FackTcpAgent::timeout(), FullTcpAgent::timeout_action(), and TcpFsAgent::timeout_nonrtx().
01065 {
01066 double decrease; /* added for highspeed - sylvia */
01067 double win, halfwin, decreasewin;
01068 int slowstart = 0;
01069 ++ncwndcuts_;
01070 // we are in slowstart for sure if cwnd < ssthresh
01071 if (cwnd_ < ssthresh_)
01072 slowstart = 1;
01073 if (precision_reduce_) {
01074 halfwin = windowd() / 2;
01075 if (wnd_option_ == 6) {
01076 /* binomial controls */
01077 decreasewin = windowd() - (1.0-decrease_num_)*pow(windowd(),l_parameter_);
01078 } else if (wnd_option_ == 8 && (cwnd_ > low_window_)) {
01079 /* experimental highspeed TCP */
01080 decrease = decrease_param();
01081 //if (decrease < 0.1)
01082 // decrease = 0.1;
01083 decrease_num_ = decrease;
01084 decreasewin = windowd() - (decrease * windowd());
01085 } else {
01086 decreasewin = decrease_num_ * windowd();
01087 }
01088 win = windowd();
01089 } else {
01090 int temp;
01091 temp = (int)(window() / 2);
01092 halfwin = (double) temp;
01093 if (wnd_option_ == 6) {
01094 /* binomial controls */
01095 temp = (int)(window() - (1.0-decrease_num_)*pow(window(),l_parameter_));
01096 } else if ((wnd_option_ == 8) && (cwnd_ > low_window_)) {
01097 /* experimental highspeed TCP */
01098 decrease = decrease_param();
01099 //if (decrease < 0.1)
01100 // decrease = 0.1;
01101 decrease_num_ = decrease;
01102 temp = (int)(windowd() - (decrease * windowd()));
01103 } else {
01104 temp = (int)(decrease_num_ * window());
01105 }
01106 decreasewin = (double) temp;
01107 win = (double) window();
01108 }
01109 if (how & CLOSE_SSTHRESH_HALF)
01110 // For the first decrease, decrease by half
01111 // even for non-standard values of decrease_num_.
01112 if (first_decrease_ == 1 || slowstart ||
01113 last_cwnd_action_ == CWND_ACTION_TIMEOUT) {
01114 // Do we really want halfwin instead of decreasewin
01115 // after a timeout?
01116 ssthresh_ = (int) halfwin;
01117 } else {
01118 ssthresh_ = (int) decreasewin;
01119 }
01120 else if (how & THREE_QUARTER_SSTHRESH)
01121 if (ssthresh_ < 3*cwnd_/4)
01122 ssthresh_ = (int)(3*cwnd_/4);
01123 if (how & CLOSE_CWND_HALF)
01124 // For the first decrease, decrease by half
01125 // even for non-standard values of decrease_num_.
01126 if (first_decrease_ == 1 || slowstart || decrease_num_ == 0.5) {
01127 cwnd_ = halfwin;
01128 } else cwnd_ = decreasewin;
01129 else if (how & CWND_HALF_WITH_MIN) {
01130 // We have not thought about how non-standard TCPs, with
01131 // non-standard values of decrease_num_, should respond
01132 // after quiescent periods.
01133 cwnd_ = decreasewin;
01134 if (cwnd_ < 1)
01135 cwnd_ = 1;
01136 }
01137 else if (how & CLOSE_CWND_RESTART)
01138 cwnd_ = int(wnd_restart_);
01139 else if (how & CLOSE_CWND_INIT)
01140 cwnd_ = int(wnd_init_);
01141 else if (how & CLOSE_CWND_ONE)
01142 cwnd_ = 1;
01143 else if (how & CLOSE_CWND_HALF_WAY) {
01144 // cwnd_ = win - (win - W_used)/2 ;
01145 cwnd_ = W_used + decrease_num_ * (win - W_used);
01146 if (cwnd_ < 1)
01147 cwnd_ = 1;
01148 }
01149 if (ssthresh_ < 2)
01150 ssthresh_ = 2;
01151 if (how & (CLOSE_CWND_HALF|CLOSE_CWND_RESTART|CLOSE_CWND_INIT|CLOSE_CWND_ONE))
01152 cong_action_ = TRUE;
01153
01154 fcnt_ = count_ = 0;
01155 if (first_decrease_ == 1)
01156 first_decrease_ = 0;
01157 // for event tracing slow start
01158 if (cwnd_ == 1 || slowstart)
01159 // Not sure if this is best way to capture slow_start
01160 // This is probably tracing a superset of slowdowns of
01161 // which all may not be slow_start's --Padma, 07/'01.
01162 trace_event("SLOW_START");
01163
01164
01165
01166
01167 }
|
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_; }
|
|
|
Definition at line 1582 of file tcp.cc. References hdr_tcp::access(), TcpAgent::dupacks_, TcpAgent::eln_last_rxmit_, TcpAgent::eln_rxmit_thresh_, Packet::free(), TcpAgent::last_ack_, TcpAgent::maxburst_, TcpAgent::output(), TcpAgent::send_much(), hdr_tcp::seqno(), and TCP_REASON_DUPACK. Referenced by TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv().
01583 {
01584 //int eln_rxmit;
01585 hdr_tcp *tcph = hdr_tcp::access(pkt);
01586 int ack = tcph->seqno();
01587
01588 if (++dupacks_ == eln_rxmit_thresh_ && ack > eln_last_rxmit_) {
01589 /* Retransmit this packet */
01590 output(last_ack_ + 1, TCP_REASON_DUPACK);
01591 eln_last_rxmit_ = last_ack_+1;
01592 } else
01593 send_much(0, 0, maxburst_);
01594
01595 Packet::free(pkt);
01596 return;
01597 }
|
Here is the call graph for this function:

|
|
Reimplemented from TcpAgent. Definition at line 37 of file tcp-simple.h.
00037 {}
|
|
|
Reimplemented from TcpAgent. Definition at line 38 of file tcp-simple.h.
00038 {}
|
|
|
Reimplemented from Agent. Definition at line 367 of file tcp.cc. References TcpAgent::nam_tracevar_, Agent::trace(), TcpAgent::trace_all_oneline_, TcpAgent::traceAll(), and TcpAgent::traceVar().
00368 {
00369 if (nam_tracevar_) {
00370 Agent::trace(v);
00371 } else if (trace_all_oneline_)
00372 traceAll();
00373 else
00374 traceVar(v);
00375 }
|
Here is the call graph for this function:

|
|
Reimplemented from Agent. Definition at line 1820 of file tcp.cc. References Agent::addr(), BaseTrace::buffer(), Scheduler::clock(), TcpAgent::cwnd_, Agent::daddr(), Agent::dport(), Agent::et_, Agent::fid_, Scheduler::instance(), BaseTrace::nbuffer(), Agent::port(), BaseTrace::round(), TcpAgent::t_seqno_, TIME_FORMAT, and EventTrace::trace(). Referenced by TcpAgent::dupack_action(), Sack1TcpAgent::dupack_action(), RenoTcpAgent::dupack_action(), NewRenoTcpAgent::dupack_action(), SackFullTcpAgent::dupack_action(), TahoeFullTcpAgent::dupack_action(), FullTcpAgent::fast_retransmit(), NewRenoTcpAgent::recv(), TcpAgent::slowdown(), and TcpAgent::timeout().
01821 {
01822 if (et_ == NULL) return;
01823 int seqno = t_seqno_;
01824 char *wrk = et_->buffer();
01825 char *nwrk = et_->nbuffer();
01826 if (wrk != 0)
01827 sprintf(wrk,
01828 "E "TIME_FORMAT" %d %d TCP %s %d %d %d",
01829 et_->round(Scheduler::instance().clock()), // time
01830 addr(), // owner (src) node id
01831 daddr(), // dst node id
01832 eventtype, // event type
01833 fid_, // flow-id
01834 seqno, // current seqno
01835 int(cwnd_) //cong. window
01836 );
01837
01838 if (nwrk != 0)
01839 sprintf(nwrk,
01840 "E -t "TIME_FORMAT" -o TCP -e %s -s %d.%d -d %d.%d",
01841 et_->round(Scheduler::instance().clock()), // time
01842 eventtype, // event type
01843 addr(), // owner (src) node id
01844 port(), // owner (src) port id
01845 daddr(), // dst node id
01846 dport() // dst port id
01847 );
01848 et_->trace();
01849 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpAsymAgent. Definition at line 296 of file tcp.cc. References Agent::addr(), Agent::channel_, Scheduler::clock(), TcpAgent::cwnd_, Agent::daddr(), Agent::dport(), TcpAgent::dupacks_, TcpAgent::highest_ack_, Scheduler::instance(), TcpAgent::maxseq_, Agent::port(), TcpAgent::ssthresh_, TcpAgent::t_backoff_, TcpAgent::t_rtt_, TcpAgent::t_rttvar_, TcpAgent::t_seqno_, TcpAgent::t_srtt_, TcpAgent::T_SRTT_BITS, and TcpAgent::tcp_tick_. Referenced by TcpAgent::trace(), and TcpAsymAgent::traceAll().
00296 {
00297 double curtime;
00298 Scheduler& s = Scheduler::instance();
00299 char wrk[500];
00300 int n;
00301
00302 curtime = &s ? s.clock() : 0;
00303 sprintf(wrk,"time: %-8.5f saddr: %-2d sport: %-2d daddr: %-2d dport:"
00304 " %-2d maxseq: %-4d hiack: %-4d seqno: %-4d cwnd: %-6.3f"
00305 " ssthresh: %-3d dupacks: %-2d rtt: %-6.3f srtt: %-6.3f"
00306 " rttvar: %-6.3f bkoff: %-d", curtime, addr(), port(),
00307 daddr(), dport(), int(maxseq_), int(highest_ack_),
00308 int(t_seqno_), double(cwnd_), int(ssthresh_),
00309 int(dupacks_), int(t_rtt_)*tcp_tick_,
00310 (int(t_srtt_) >> T_SRTT_BITS)*tcp_tick_,
00311 int(t_rttvar_)*tcp_tick_/4.0, int(t_backoff_));
00312 n = strlen(wrk);
00313 wrk[n] = '\n';
00314 wrk[n+1] = 0;
00315 if (channel_)
00316 (void)Tcl_Write(channel_, wrk, n+1);
00317 wrk[n] = 0;
00318 return;
00319 }
|
Here is the call graph for this function:

|
|
Reimplemented in TcpAsymAgent, and TcpSessionAgent. Definition at line 323 of file tcp.cc. References Agent::addr(), Agent::channel_, Scheduler::clock(), Agent::daddr(), Agent::dport(), Scheduler::instance(), Agent::port(), TcpAgent::T_SRTT_BITS, and TcpAgent::tcp_tick_. Referenced by TcpAgent::trace(), TcpSessionAgent::traceVar(), and TcpAsymAgent::traceVar().
00324 {
00325 double curtime;
00326 Scheduler& s = Scheduler::instance();
00327 char wrk[500];
00328 int n;
00329
00330 curtime = &s ? s.clock() : 0;
00331 if (!strcmp(v->name(), "cwnd_") || !strcmp(v->name(), "maxrto_"))
00332 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %-6.3f",
00333 curtime, addr(), port(), daddr(), dport(),
00334 v->name(), double(*((TracedDouble*) v)));
00335 else if (!strcmp(v->name(), "minrto_"))
00336 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %-6.3f",
00337 curtime, addr(), port(), daddr(), dport(),
00338 v->name(), double(*((TracedDouble*) v)));
00339 else if (!strcmp(v->name(), "rtt_"))
00340 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %-6.3f",
00341 curtime, addr(), port(), daddr(), dport(),
00342 v->name(), int(*((TracedInt*) v))*tcp_tick_);
00343 else if (!strcmp(v->name(), "srtt_"))
00344 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %-6.3f",
00345 curtime, addr(), port(), daddr(), dport(),
00346 v->name(),
00347 (int(*((TracedInt*) v)) >> T_SRTT_BITS)*tcp_tick_);
00348 else if (!strcmp(v->name(), "rttvar_"))
00349 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %-6.3f",
00350 curtime, addr(), port(), daddr(), dport(),
00351 v->name(),
00352 int(*((TracedInt*) v))*tcp_tick_/4.0);
00353 else
00354 sprintf(wrk,"%-8.5f %-2d %-2d %-2d %-2d %s %d",
00355 curtime, addr(), port(), daddr(), dport(),
00356 v->name(), int(*((TracedInt*) v)));
00357 n = strlen(wrk);
00358 wrk[n] = '\n';
00359 wrk[n+1] = 0;
00360 if (channel_)
00361 (void)Tcl_Write(channel_, wrk, n+1);
00362 wrk[n] = 0;
00363 return;
00364 }
|
Here is the call graph for this function:

|
|
|
Reimplemented in RenoTcpAgent. Definition at line 756 of file tcp.cc. References TcpAgent::cwnd_, and TcpAgent::wnd_. Referenced by TcpAgent::slowdown().
|
|
|
Reimplemented in BayFullTcpAgent. Definition at line 134 of file agent.h. Referenced by Agent::attachApp(), Agent::idle(), RapAgent::IpgTimeout(), UdpAgent::recv(), recv(), RapAgent::recv(), HttpInvalAgent::recv(), Agent::recv(), and Agent::recvBytes(). |
|
|
Definition at line 299 of file tcp.h. Referenced by TcpAgent::command(), BayFullTcpAgent::command(), TcpAgent::delay_bind_dispatch(), TcpAgent::newack(), SackRHTcpAgent::newack(), RFC793eduTcpAgent::newack(), FackTcpAgent::oldack(), TcpAgent::opencwnd(), RFC793eduTcpAgent::opencwnd(), BayFullTcpAgent::reinit(), and TcpAgent::reset(). |
|
|
Definition at line 403 of file tcp.h. Referenced by TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
|
|
|
Definition at line 250 of file tcp.h. Referenced by FullTcpAgent::idle_restart(), TcpAgent::reset(), TcpAgent::rtt_update(), and RFC793eduTcpAgent::rtt_update(). |
|
|
|
Reimplemented in TcpSessionAgent. Definition at line 236 of file tcp.h. Referenced by TcpAgent::cancel_timers(), TcpFsAgent::cancel_timers(), TcpFsAgent::send_helper(), TcpAsymAgent::send_helper(), TcpAgent::send_much(), and FackTcpAgent::send_much(). |
|
|
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(). |
|
|
Reimplemented in FullTcpAgent. Definition at line 328 of file tcp.h. Referenced by TcpAgent::advanceby(), IntTcpAgent::newack(), FackTcpAgent::oldack(), Sack1TcpAgent::recv(), TcpAgent::recv_newack_helper(), VegasTcpAgent::recv_newack_helper(), RFC793eduTcpAgent::recv_newack_helper(), TcpFsAgent::recv_newack_helper(), FackTcpAgent::recv_newack_helper(), TcpAsymAgent::recv_newack_helper(), and TcpAgent::reset(). |
|
|
Definition at line 309 of file tcp.h. Referenced by FullTcpAgent::foutput(), TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), SackRHTcpAgent::recv(), FullTcpAgent::sendpacket(), and TcpAgent::slowdown(). |
|
|
Definition at line 405 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv_newack_helper(), and TcpAgent::reset(). |
|
|
Reimplemented in IntTcpAgent. Definition at line 301 of file tcp.h. Referenced by TcpAgent::closecwnd(), CorresHost::closecwnd(), TcpAgent::opencwnd(), RFC793eduTcpAgent::opencwnd(), CorresHost::opencwnd(), and TcpAgent::slowdown(). |
|
|
|
|
Definition at line 368 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::increase_param(). |
|
|
Definition at line 366 of file tcp.h. Referenced by TcpAgent::increase_param(), and TcpAgent::reset(). |
|
|
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 261 of file tcp.h. Referenced by TcpAgent::closecwnd(), TcpAgent::delay_bind_dispatch(), and TcpAgent::slowdown(). |
|
|
Definition at line 121 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 267 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv(), VegasTcpAgent::recv(), Sack1TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), FullTcpAgent::recv(), and TcpAgent::set_initial_window(). |
|
|
Definition at line 235 of file tcp.h. Referenced by TcpAgent::cancel_timers(), TcpSessionAgent::cancel_timers(), TcpFsAgent::cancel_timers(), TcpAgent::send_much(), Sack1TcpAgent::send_much(), SackRHTcpAgent::send_much(), IntTcpAgent::send_much(), FullTcpAgent::send_much(), BayFullTcpAgent::send_much(), and FackTcpAgent::send_much(). |
|
|
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 313 of file tcp.h. Referenced by TcpAgent::ecn(), TcpAgent::newack(), RFC793eduTcpAgent::newack(), FullTcpAgent::newack(), TcpAgent::recv_newack_helper(), and RFC793eduTcpAgent::recv_newack_helper(). |
|
|
Definition at line 311 of file tcp.h. Referenced by TcpAgent::recv_newack_helper(), and RFC793eduTcpAgent::recv_newack_helper(). |
|
|
Reimplemented in FullTcpAgent. Definition at line 315 of file tcp.h. Referenced by TcpAgent::newack(), RFC793eduTcpAgent::newack(), TcpAgent::recv_newack_helper(), and RFC793eduTcpAgent::recv_newack_helper(). |
|
|
Definition at line 316 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv(). |
|
|
Definition at line 318 of file tcp.h. Referenced by TcpAgent::tcp_eln(). |
|
|
Definition at line 317 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::tcp_eln(). |
|
|
Definition at line 391 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::process_qoption_after_send(), TcpAgent::recv(), and TcpAgent::reset(). |
|
|
Definition at line 145 of file agent.h. Referenced by TcpAgent::command(), and TcpAgent::trace_event(). |
|
|
Definition at line 399 of file tcp.h. Referenced by TcpAgent::process_qoption_after_ack(), TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 402 of file tcp.h. Referenced by TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 302 of file tcp.h. Referenced by TcpAgent::closecwnd(), CorresHost::closecwnd(), TcpAgent::opencwnd(), RFC793eduTcpAgent::opencwnd(), and TcpAgent::slowdown(). |
|
|
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 343 of file tcp.h. Referenced by TcpAgent::reset(), and TcpAgent::slowdown(). |
|
|
Definition at line 319 of file tcp.h. Referenced by NewRenoTcpAgent::recv(), TcpAgent::send_much(), and VegasTcpAgent::vegastime(). |
|
|
Reimplemented in BayFullTcpAgent, RapAgent, and FullTcpAgent. Definition at line 120 of file agent.h. Referenced by Agent::delay_bind_dispatch(). |
|
|
|
Definition at line 355 of file tcp.h. Referenced by TcpAgent::decrease_param(), and TcpAgent::delay_bind_dispatch(). |
|
|
Definition at line 354 of file tcp.h. Referenced by TcpAgent::compute_p(), and TcpAgent::delay_bind_dispatch(). |
|
|
Definition at line 353 of file tcp.h. Referenced by TcpAgent::compute_p(), TcpAgent::decrease_param(), and TcpAgent::delay_bind_dispatch(). |
|
|
|
Definition at line 367 of file tcp.h. Referenced by TcpAgent::increase_param(). |
|
|
Definition at line 262 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::opencwnd(). |
|
|
Definition at line 263 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::opencwnd(). |
|
|
Definition at line 264 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::slowdown(). |
|
|
|
|
Definition at line 320 of file tcp.h. Referenced by TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), and TcpAgent::reset(). |
|
|
Definition at line 271 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and NewRenoTcpAgent::dupack_action(). |
|
|
Definition at line 352 of file tcp.h. Referenced by TcpAgent::compute_p(), TcpAgent::decrease_param(), TcpAgent::delay_bind_dispatch(), TcpAgent::increase_param(), and TcpAgent::slowdown(). |
|
|
Definition at line 357 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::opencwnd(), and TcpAgent::reset(). |
|
|
|
Definition at line 275 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::opencwnd(), RFC793eduTcpAgent::opencwnd(), FackTcpAgent::opencwnd(), CorresHost::opencwnd(), VegasTcpAgent::recv(), and TcpSessionAgent::window(). |
|
|
Definition at line 279 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::rtt_timeout(). |
|
|
|
Definition at line 280 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::rtt_timeout(). |
|
|
Definition at line 331 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv(), VegasTcpAgent::recv(), Sack1TcpAgent::recv(), SackRHTcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), TcpAgent::reset(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 341 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::trace(). |
|
|
Definition at line 338 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::reset(), TcpAgent::slowdown(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 330 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), TcpAgent::reset(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 329 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), TcpAgent::reset(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 336 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::ecn(), TcpAgent::reset(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 346 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::recv(). |
|
|
Definition at line 332 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::reset(), TcpAgent::TcpAgent(), TcpAgent::timeout(), VegasTcpAgent::timeout(), TcpSessionAgent::timeout(), SackRHTcpAgent::timeout(), FullTcpAgent::timeout(), and BayFullTcpAgent::timeout(). |
|
|
Definition at line 335 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), TcpAgent::reset(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 334 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), TcpAgent::reset(), FullTcpAgent::sendpacket(), BayFullTcpAgent::sendpacket(), and TcpAgent::TcpAgent(). |
|
|
Definition at line 276 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::numdupacks(), TcpAgent::process_qoption_after_ack(), TcpAgent::recv(), VegasTcpAgent::recv(), SackRHTcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), FackTcpAgent::recv(), and CorresHost::rmv_old_segs(). |
|
|
Definition at line 277 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::numdupacks(). |
|
|
Definition at line 281 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv_newack_helper(), and RFC793eduTcpAgent::recv_newack_helper(). |
|
|
Definition at line 347 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and Sack1TcpAgent::dupack_action(). |
|
|
Definition at line 132 of file agent.h. Referenced by Agent::insertOldValue(), Agent::lookupOldValue(), and Agent::~Agent(). |
|
|
Definition at line 251 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::send_much(), Sack1TcpAgent::send_much(), SackRHTcpAgent::send_much(), IntTcpAgent::send_much(), FullTcpAgent::send_much(), BayFullTcpAgent::send_much(), and FackTcpAgent::send_much(). |
|
|
|
|
|
Definition at line 265 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::slowdown(). |
|
|
Definition at line 407 of file tcp.h. Referenced by TcpAgent::network_limited(), TcpAgent::newack(), and TcpAgent::reset(). |
|
|
Definition at line 119 of file agent.h. Referenced by Agent::delay_bind_dispatch(), and Agent::initpkt(). |
|
|
Definition at line 390 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv(), TcpAgent::recv_newack_helper(), TcpAgent::reset(), TcpAgent::send_much(), Sack1TcpAgent::send_much(), and TcpAgent::send_one(). |
|
|
Reimplemented in QSNewRenoTcpAgent. Definition at line 375 of file tcp.h. Referenced by TcpAgent::endQuickStart(), TcpAgent::processQuickStart(), TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), TcpAgent::send_much(), Sack1TcpAgent::send_much(), and TcpAgent::timeout(). |
|
|
Definition at line 373 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::output(). |
|
|
Definition at line 374 of file tcp.h. Referenced by TcpAgent::output(), TcpAgent::processQuickStart(), TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv(). |
|
|
Reimplemented in QSNewRenoTcpAgent. Definition at line 372 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::output(). |
|
|
|
Definition at line 324 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), FullTcpAgent::reset_rtx_timer(), TcpSessionAgent::send_much(), TcpAgent::timeout(), TcpSessionAgent::timeout(), and FackTcpAgent::timeout(). |
|
|
Definition at line 249 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::rtt_timeout(). |
|
|
|
Definition at line 396 of file tcp.h. Referenced by TcpAgent::process_qoption_after_ack(), TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 398 of file tcp.h. Referenced by TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 397 of file tcp.h. Referenced by TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
|
Definition at line 305 of file tcp.h. Referenced by FullTcpAgent::foutput(), TcpAgent::newack(), TcpSessionAgent::newack(), SackRHTcpAgent::newack(), RFC793eduTcpAgent::newack(), FullTcpAgent::newack(), TcpAgent::output(), VegasTcpAgent::output(), RFC793eduTcpAgent::output(), and QSNewRenoTcpAgent::output(). |
|
|
Definition at line 185 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::rtt_update(), and RFC793eduTcpAgent::rtt_update(). |
|
|
Definition at line 187 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::rtt_init(). |
|
|
|
Definition at line 189 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), RFC793eduTcpAgent::reset(), and TcpAgent::rtt_init(). |
|
|
Definition at line 41 of file tcp-simple.h. Referenced by sendmsg(). |
|
|
Definition at line 345 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::recv(), Sack1TcpAgent::recv(), RenoTcpAgent::recv(), and NewRenoTcpAgent::recv(). |
|
|
|
Definition at line 322 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), FullTcpAgent::foutput(), TcpSessionAgent::send_much(), TcpAgent::timeout(), VegasTcpAgent::timeout(), TcpSessionAgent::timeout(), SackRHTcpAgent::timeout(), FackTcpAgent::timeout(), and TcpFsAgent::timeout_nonrtx(). |
|
|
Definition at line 183 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::rtt_init(). |
|
|
|
Definition at line 266 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), TcpAgent::set_initial_window(), and FullTcpAgent::set_initial_window(). |
|
|
|
|
|
|
Definition at line 393 of file tcp.h. Referenced by TcpAgent::process_qoption_after_send(), TcpAgent::reset(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 394 of file tcp.h. Referenced by TcpAgent::process_qoption_after_send(), and TcpAgent::reset(). |
|
|
|
|
Definition at line 184 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::rtt_init(), TcpAgent::rtt_update(), and RFC793eduTcpAgent::rtt_update(). |
|
|
Definition at line 188 of file tcp.h. Referenced by FullTcpAgent::idle_restart(), TcpAgent::process_qoption_after_send(), TcpAgent::rtt_init(), TcpAgent::rtt_timeout(), TcpAgent::rtt_update(), RFC793eduTcpAgent::rtt_update(), and TcpSessionAgent::send_much(). |
|
|
|
|
|
Definition at line 395 of file tcp.h. Referenced by TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
|
|
Definition at line 268 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::headersize(), FullTcpAgent::headersize(), TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), recv(), sendmsg(), and FullTcpAgent::sendpacket(). |
|
|
Definition at line 247 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::newack(). |
|
|
Definition at line 340 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::trace(). |
|
|
Definition at line 131 of file agent.h. Referenced by Agent::addAgentTrace(), Agent::command(), Agent::deleteAgentTrace(), Agent::flushAVar(), Agent::monitorAgentTrace(), and Agent::trace(). |
|
|
|
Reimplemented in FullTcpAgent. Definition at line 269 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), and TcpAgent::headersize(). |
|
|
Definition at line 196 of file tcp.h. Referenced by TcpAgent::output(), RFC793eduTcpAgent::output(), QSNewRenoTcpAgent::output(), IntTcpAgent::output(), TcpAgent::recv(), RFC793eduTcpAgent::recv(), RenoTcpAgent::recv(), NewRenoTcpAgent::recv(), FackTcpAgent::recv(), and sendmsg(). |
|
|
Reimplemented in QSNewRenoTcpAgent. Definition at line 376 of file tcp.h. Referenced by TcpAgent::output(), and TcpAgent::processQuickStart(). |
|
|
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 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 348 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::output(), and QSNewRenoTcpAgent::output(). |
|
|
Definition at line 401 of file tcp.h. Referenced by TcpAgent::process_qoption_after_ack(), TcpAgent::reset_qoption(), and TcpAgent::rtt_counting(). |
|
|
Definition at line 400 of file tcp.h. Referenced by TcpAgent::process_qoption_after_send(), TcpAgent::reset(), TcpAgent::rtt_counting(), and TcpAgent::slowdown(). |
|
|
|
Definition at line 253 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::opencwnd(), and RFC793eduTcpAgent::opencwnd(). |
|
|
Definition at line 255 of file tcp.h. Referenced by TcpAgent::closecwnd(), BayFullTcpAgent::command(), TcpAgent::delay_bind_dispatch(), TcpAgent::initial_window(), TcpAgent::processQuickStart(), QSNewRenoTcpAgent::recv(), BayFullTcpAgent::reinit(), TcpAgent::reset(), and TcpAgent::slowdown(). |
|
|
Definition at line 259 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::initial_window(), TcpAgent::processQuickStart(), QSNewRenoTcpAgent::recv(), TcpAgent::timeout(), and SackRHTcpAgent::timeout(). |
|
|
Definition at line 258 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::opencwnd(), RFC793eduTcpAgent::opencwnd(), CorresHost::opencwnd(), and TcpAgent::slowdown(). |
|
|
Definition at line 256 of file tcp.h. Referenced by TcpAgent::closecwnd(), TcpAgent::reset(), and TcpAgent::slowdown(). |
|
|
Definition at line 254 of file tcp.h. Referenced by TcpAgent::delay_bind_dispatch(), TcpAgent::newack(), SackRHTcpAgent::newack(), RFC793eduTcpAgent::newack(), and FackTcpAgent::oldack(). |
1.3.3