class <Agent/TCP/FullTcp> FullTcpAgent : public TcpAgent


Inheritance:


Public Methods

void advance_bytes(int)
unique to full-tcp
void advanceby(int)
over-rides tcp base version
virtual void close()
virtual int command(int argc, const char*const* argv)
FullTcpAgent()
virtual void recv(Packet *pkt, Handler*)
virtual void sendmsg(int nbytes, const char *flags = 0)
virtual int& size()
FullTcp uses maxseg_ for size_
virtual void timeout(int tno)
tcp_timers() in real code
~FullTcpAgent()

Protected Fields

int close_on_empty_
close conn when buffer empty
int closed_
int data_on_syn_
send data on initial SYN?
int deflate_on_pack_
deflate on partial acks (reno:yes)
double delack_interval_
DelAckTimer delack_timer_
other timers in tcp.h
int dupack_reset_
zero dupacks on dataful dup acks?
int dupseg_fix_
fix bug with dup segs and dup acks?
int ect_
turn on ect bit now?
int fastrecov_
are we in fast recovery?
int flags_
controls next output() call
int halfclose_
allow simplex closes?
int infinite_send_
Always something to send
int irs_
initial recv'd (peer's iss)
int iss_
initial send seq number
int last_ack_sent_
the following are part of a tcpcb in "real" RFC1323 TCP ackno field from last segment we sent
double last_send_time_
time of last send
int last_state_
FSM state at last pkt recv
int maxseg_
the following are part of a tcpcb in "real" RFC793 TCP MSS
int nodelay_
disable sender-side Nagle?
int open_cwnd_on_pack_
open cwnd on a partial ack?
int pipe_
estimate of pipe occupancy (for Sack)
int pipectrl_
use pipe-style control
int rcv_nxt_
next sequence number expected
double recent_
ts on SYN written by peer
double recent_age_
my time when recent_ was set
int recent_ce_
last ce bit we saw
int reno_fastrecov_
do reno-style fast recovery?
ReassemblyQueue rq_
TCP reassembly queue
int segs_per_ack_
for window updates
int state_
enumerated type: FSM state
int tcprexmtthresh_
fast retransmit threshold
int ts_option_size_
header bytes in a ts option

Protected Methods

virtual void ack_action(Packet*)
action on acks
virtual int build_options(hdr_tcp*)
insert opts, return len
void cancel_timers()
cancel all timers
void connect()
do active open
virtual int delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer)
virtual void delay_bind_init_all()
void dooptions(Packet*)
process option(s)
virtual void dupack_action()
what to do on dup acks
void fast_retransmit(int)
do a fast-retransmit on specified seg
void finish()
int headersize()
a tcp header w/opts
int idle_restart()
should I restart after idle?
void listen()
do passive open
int need_send()
send ACK/win-update now?
void newack(Packet* pkt)
process an ACK
void newstate(int ns)
future hook for traces
inline double now()
int outflags()
state-specific tcp header flags
void output(int seqno, int reason = 0)
output 1 packet
int pack(Packet* pkt)
is this a partial ack?
virtual void pack_action(Packet*)
action on partial acks
int predict_ok(Packet*)
predicate for recv-side header prediction
int rcvseqinit(int, int)
how to set rcv_nxt_
virtual void reset()
reset to a known point
void reset_rtx_timer(int)
adjust the rtx timer
virtual void send_much(int force, int reason, int maxburst = 0)
void sendpacket(int seq, int ack, int flags, int dlen, int why)
void set_initial_window()
setting iw, specific to tcp-full, called by TcpAgent::reset()
virtual void timeout_action()
what to do on rtx timeout
void usrclosed()
user requested a close

Private Fields

friend ReassemblyQueue

Inherited from TcpAgent:

Public Methods

Agent/TCP instproc done {}
Agent/TCP instproc source type
virtual void timeout_nonrtx(int tno)
void trace(TracedVar* v)

Protected Fields

double awnd_
int Backoffs
double base_cwnd_
double boot_time_
int bug_fix_
BurstSndTimer burstsnd_timer_
int cong_action_
int control_increase_
int count_
TracedInt curseq_
TracedDouble cwnd_
double decrease_num_
int delay_growth_
DelSndTimer delsnd_timer_
TracedInt dupacks_
int ecn_
int ecn_backoff_
int ecn_burst_
int eln_
int eln_last_rxmit_
int eln_rxmit_thresh_
int EnblRTTCtr_
int F_counting
int F_full
double fcnt_
int first_decrease_
double firstsent_
TracedInt highest_ack_
double increase_num_
int last_ack_
int last_cwnd_action_
int maxburst_
int maxcwnd_
double maxrto_
TracedInt maxseq_
TracedInt nackpack_
int nam_tracevar_
TracedInt ndatabytes_
TracedInt ndatapack_
TracedInt nrexmit_
TracedInt nrexmitbytes_
TracedInt nrexmitpack_
int off_tcp_
int old_ecn_
double overhead_
FILE* plotfile_
int prev_highest_ack_
int QOption_
int recover_
int restart_bugfix_
int rtt_active_
int RTT_count
int RTT_goodcount
int RTT_prev
int rtt_seq_
double rtt_ts_
int rttvar_exp_
int rttvar_init_
RtxTimer rtx_timer_
double rtxcur_init_
TracedInt singledup_
int slow_start_restart_
int srtt_init_
TracedInt ssthresh_
int syn_
TracedInt t_backoff_
int T_full
int T_last
int T_prev
TracedInt t_rtt_
TracedInt t_rttvar_
int T_RTTVAR_BITS
double t_rtxcur_
TracedInt t_seqno_
TracedInt t_srtt_
int T_SRTT_BITS
int T_start
double tcp_tick_
int tcpip_base_hdr_size_
int trace_all_oneline_
int ts_option_
double ts_peer_
int W_timed
int W_used
double wnd_
double wnd_const_
double wnd_init_
int wnd_init_option_
int wnd_option_
double wnd_restart_
double wnd_th_

Protected Methods

virtual void cancel_rtx_timer()
void closecwnd(int how)
void ecn(int seqno)
double initial_window()
virtual void newtimer(Packet*)
void opencwnd()
virtual void output_helper(Packet*)
virtual void partialnewack_helper(Packet*)
void print_if_needed(double memb_time)
void process_qoption_after_ack(int seqno)
void process_qoption_after_send()
void quench(int how)
virtual void recv_helper(Packet*)
virtual void recv_newack_helper(Packet*)
void reset_qoption()
virtual void rtt_backoff()
void rtt_counting()
virtual void rtt_init()
virtual double rtt_timeout()
virtual void rtt_update(double tao)
virtual void send_helper(int)
virtual void send_idle_helper()
virtual void send_one()
virtual void set_rtx_timer()
void slowdown(int how)
void tcp_eln(Packet *pkt)
void traceAll()
virtual void traceVar(TracedVar* v)
virtual int window()

Protected

#define T_RTT_BITS

Inherited from Agent:

Public Fields

Agent instvar agent_port_
Agent instvar dst_addr_
Agent instvar dst_port_
Agent instvar namTrace_
Agent instvar tg_

Public Methods

inline nsaddr_t& addr()
Agent instproc attach-app {s_type}
Agent instproc attach-source {s_type}
Agent instproc attach-tbf { tbf }
Agent instproc attach-trace { file }
virtual void attachApp(Application* app)
inline nsaddr_t& daddr()
inline nsaddr_t& dport()
Agent instproc dst-port {}
Agent instproc init args
inline nsaddr_t& port()
Agent instproc port {}
virtual void send(int nbytes)
virtual void send(int sz, AppData *data)
void send(Packet* p, Handler* h)
virtual void sendto(int sz, AppData*, const char* flags = 0)
virtual void sendto(int nbytes, const char* flags, nsaddr_t dst)
Agent instproc set args
void set_pkttype(packet_t pkttype)
Agent instproc traffic-source agent

Protected Fields

Application* app_
Tcl_Channel channel_
int class_
int defttl_
ns_addr_t dst_
int fid_
ns_addr_t here_
int off_ip_
OldValue* oldValueList_
int prio_
int seqno_
int size_
char* traceName_
packet_t type_
static int uidcnt_

Protected Methods

void addAgentTrace(const char *name)
Packet* allocpkt()
Packet* allocpkt(int)
void deleteAgentTrace()
void dumpTracedVars()
virtual void idle()
void initpkt(Packet*)
void insertOldValue(TracedVar *v, const char *value)
OldValue* lookupOldValue(TracedVar *v)
void monitorAgentTrace()
virtual void recvBytes(int bytes)

Private Methods

void flushAVar(TracedVar *v)

Inherited from Connector:

Public Methods

virtual void drop(Packet* p)
inline NsObject* target()

Protected Fields

NsObject* drop_
NsObject* target_

Protected Methods

virtual void drop(Packet* p, const char *s)

Inherited from NsObject:

Public Methods

virtual void debug(const char *fmt, ...)
int isdebug()

Protected Fields

int debug_
int off_cmn_
int off_flags_

Protected Methods

void handle(Event*)

Inherited from Handler:


Documentation

friend ReassemblyQueue

FullTcpAgent()

~FullTcpAgent()

virtual void recv(Packet *pkt, Handler*)

virtual void timeout(int tno)
tcp_timers() in real code

virtual void close()

void advanceby(int)
over-rides tcp base version

void advance_bytes(int)
unique to full-tcp

virtual void sendmsg(int nbytes, const char *flags = 0)

virtual int& size()
FullTcp uses maxseg_ for size_

virtual int command(int argc, const char*const* argv)

virtual void delay_bind_init_all()

virtual int delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer)

int closed_

int ts_option_size_
header bytes in a ts option

int pipe_
estimate of pipe occupancy (for Sack)

int pipectrl_
use pipe-style control

int open_cwnd_on_pack_
open cwnd on a partial ack?

int segs_per_ack_
for window updates

int nodelay_
disable sender-side Nagle?

int fastrecov_
are we in fast recovery?

int deflate_on_pack_
deflate on partial acks (reno:yes)

int data_on_syn_
send data on initial SYN?

double last_send_time_
time of last send

int close_on_empty_
close conn when buffer empty

int reno_fastrecov_
do reno-style fast recovery?

int infinite_send_
Always something to send

int tcprexmtthresh_
fast retransmit threshold

int iss_
initial send seq number

int irs_
initial recv'd (peer's iss)

int dupseg_fix_
fix bug with dup segs and dup acks?

int dupack_reset_
zero dupacks on dataful dup acks?

int halfclose_
allow simplex closes?

double delack_interval_

int headersize()
a tcp header w/opts

int outflags()
state-specific tcp header flags

int rcvseqinit(int, int)
how to set rcv_nxt_

int predict_ok(Packet*)
predicate for recv-side header prediction

int idle_restart()
should I restart after idle?

void fast_retransmit(int)
do a fast-retransmit on specified seg

inline double now()

void newstate(int ns)
future hook for traces

void finish()

void reset_rtx_timer(int)
adjust the rtx timer

virtual void timeout_action()
what to do on rtx timeout

virtual void dupack_action()
what to do on dup acks

virtual void pack_action(Packet*)
action on partial acks

virtual void ack_action(Packet*)
action on acks

virtual void reset()
reset to a known point

virtual void send_much(int force, int reason, int maxburst = 0)

virtual int build_options(hdr_tcp*)
insert opts, return len

void sendpacket(int seq, int ack, int flags, int dlen, int why)

void connect()
do active open

void listen()
do passive open

void usrclosed()
user requested a close

int need_send()
send ACK/win-update now?

void output(int seqno, int reason = 0)
output 1 packet

void newack(Packet* pkt)
process an ACK

int pack(Packet* pkt)
is this a partial ack?

void dooptions(Packet*)
process option(s)

DelAckTimer delack_timer_
other timers in tcp.h

void cancel_timers()
cancel all timers

int maxseg_
the following are part of a tcpcb in "real" RFC793 TCP MSS

int flags_
controls next output() call

int state_
enumerated type: FSM state

int ect_
turn on ect bit now?

int recent_ce_
last ce bit we saw

int last_state_
FSM state at last pkt recv

int rcv_nxt_
next sequence number expected

ReassemblyQueue rq_
TCP reassembly queue

int last_ack_sent_
the following are part of a tcpcb in "real" RFC1323 TCP ackno field from last segment we sent

double recent_
ts on SYN written by peer

double recent_age_
my time when recent_ was set

void set_initial_window()
setting iw, specific to tcp-full, called by TcpAgent::reset()


Direct child classes:
TahoeFullTcpAgent
SackFullTcpAgent
NewRenoFullTcpAgent

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

Adapted for the NS documentation page

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de