|
DRCL J-Sim API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectdrcl.DrclObj
drcl.comp.Component
drcl.net.Module
drcl.inet.Protocol
drcl.inet.transport.TCPSink
This component implements the single-session receiving-side TCP.
By default, when this component receives a TCP packet, it processes the timestamp option and sends back an acknowledgement. In addition, one can enable the SACK flag to make this component append the SACK blocks in the acknowledgement packets. The realization of SACK is based on [RFC2018].
This component also implements delayed ACK. The delay timer is 100ms(0.1 second) as specified in [TCPILL2]. When the delayed ACK flag is enabled, an acknowledgment is sent when (1) the delay timer expires or (2) a new data packet arrives.
Since only one session is handled in this component, open and close of a connection are not implemented, nor is 3-way handshaking.
Additional usage infomation:
setTTL(int).
setReceivingBuffers(int).
setDelayACKTimeout(double).
TCP,
TCPPacket,
Serialized Form| Nested Class Summary |
| Nested classes inherited from class drcl.comp.Component |
Component.Locks |
| Field Summary | |
static int |
DEBUG_OOO
|
static int |
DEBUG_RCV
|
static int |
DEBUG_SACK
|
static int |
DEBUG_SAMPLE
|
static int |
DEBUG_SEND
|
static boolean |
NS_COMPATIBLE
Sets to true to make TCP ns compatible |
| Fields inherited from class drcl.net.Module |
downPort, PortGroup_DOWN, PortGroup_UP, upPort |
| Fields inherited from interface drcl.inet.transport.TCPConstants |
ACK_EVENT, ACK_PORT_ID, CLOSE_WAIT, CLOSED, CLOSING, CWND_EVENT, CWND_PORT_ID, DEFAULT_PID, DELAY_ACK, ESTABLISHED, ESTABLISHED_FIN, ESTABLISHED_OVER, FIN_WAIT_1, FIN_WAIT_2, LAST_ACK, LISTEN, LISTEN1, LISTEN2, NEW_RENO, PRE_CLOSED, PRE_LAST_ACK, PRE_SYN_SENT, RECEIVE, RENO, RTT_EVT, RTTVAR_EVENT, RTTVAR_PORT_ID, RXT_EVT, SEND, SEQNO_EVENT, SEQNO_PORT_ID, SEQNO_RCV_EVENT, SEQNO_RCV_PORT_ID, SEQNO_SENT_EVENT, SEQNO_SENT_PORT_ID, SRTT_EVENT, SRTT_PORT_ID, SST_EVENT, SST_PORT_ID, STATES, SYN_RCVD, SYN_SENT, TAHOE, TIME_WAIT, TIMEOUT_TYPES, VEGAS |
| Constructor Summary | |
TCPSink()
|
|
TCPSink(java.lang.String id_)
|
|
| Method Summary | |
void |
duplicate(java.lang.Object source_)
Duplicates the content of source_, including ID, name, child components and connections among them, to this component. |
int |
getAvailableReceivingBuffers()
|
java.lang.String[] |
getDebugLevelNames()
Returns the names of defined debug levels; subclasses should override this method if debug levels are defined. |
double |
getDelayACKTimeout()
|
long |
getLocalAddr()
Returns the local address. |
int |
getLocalPort()
Returns the local port. |
int |
getMSS()
|
java.lang.String |
getName()
Returns the (informational) name of the component. |
long |
getPeer()
Returns the peer address. |
int |
getReceivingBuffers()
|
int |
getRemotePort()
Returns the peer port. |
int |
getTTL()
|
java.lang.String |
info()
Returns information regarding this component. |
boolean |
isDelayACKEnabled()
|
boolean |
isSackEnabled()
|
void |
reset()
Resets the component for being used anew. |
void |
setDelayACKEnabled(boolean delayack_)
|
void |
setDelayACKTimeout(double v_)
|
void |
setMSS(int mss)
|
void |
setReceivingBuffers(int awnd_)
|
void |
setSackEnabled(boolean sack_)
|
void |
setTTL(int ttl)
|
| Methods inherited from class drcl.net.Module |
cancelTimeout, setTimeout, setTimeoutAt |
| Methods inherited from class drcl.DrclObj |
clone |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
public static boolean NS_COMPATIBLE
public static final int DEBUG_RCV
public static final int DEBUG_SEND
public static final int DEBUG_SACK
public static final int DEBUG_OOO
public static final int DEBUG_SAMPLE
| Constructor Detail |
public TCPSink()
public TCPSink(java.lang.String id_)
| Method Detail |
public java.lang.String getName()
Component
getName in class Componentpublic java.lang.String[] getDebugLevelNames()
Component
getDebugLevelNames in class Componentpublic void reset()
Component
reset in class Componentpublic void duplicate(java.lang.Object source_)
Component
duplicate in interface ObjectDuplicableduplicate in class Protocolpublic void setTTL(int ttl)
public int getTTL()
public void setMSS(int mss)
public int getMSS()
public void setReceivingBuffers(int awnd_)
public int getReceivingBuffers()
public int getAvailableReceivingBuffers()
public void setSackEnabled(boolean sack_)
public boolean isSackEnabled()
public void setDelayACKEnabled(boolean delayack_)
public boolean isDelayACKEnabled()
public void setDelayACKTimeout(double v_)
public double getDelayACKTimeout()
public int getLocalPort()
drcl.inet.transport.Connection
getLocalPort in interface drcl.inet.transport.Connectionpublic int getRemotePort()
drcl.inet.transport.Connection
getRemotePort in interface drcl.inet.transport.Connectionpublic long getLocalAddr()
drcl.inet.transport.Connection
getLocalAddr in interface drcl.inet.transport.Connectionpublic long getPeer()
drcl.inet.transport.Connection
getPeer in interface drcl.inet.transport.Connectionpublic java.lang.String info()
Component
info in class Component
|
DRCL J-Sim API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||