An implementation of a stream socket using TCP. More...
#include <tcp-newreno.h>
Inheritance diagram for ns3::TcpNewReno:
Collaboration diagram for ns3::TcpNewReno:Public Member Functions | |
| TcpNewReno (void) | |
| Create an unbound tcp socket. More... | |
| TcpNewReno (const TcpNewReno &sock) | |
| Copy constructor. More... | |
| virtual | ~TcpNewReno (void) |
| virtual int | Connect (const Address &address) |
| Initiate a connection to a remote host. More... | |
| virtual int | Listen (void) |
| Listen for incoming connections. More... | |
Public Member Functions inherited from ns3::TcpSocketBase | |
| TcpSocketBase (void) | |
| Create an unbound TCP socket. More... | |
| TcpSocketBase (const TcpSocketBase &sock) | |
| Clone a TCP socket, for use upon receiving a connection request in LISTEN state. More... | |
| virtual | ~TcpSocketBase (void) |
| virtual int | Bind (void) |
| Allocate a local IPv4 endpoint for this socket. More... | |
| virtual int | Bind (const Address &address) |
| Allocate a local endpoint for this socket. More... | |
| virtual int | Bind6 (void) |
| Allocate a local IPv6 endpoint for this socket. More... | |
| virtual void | BindToNetDevice (Ptr< NetDevice > netdevice) |
| Bind a socket to specific device. More... | |
| virtual int | Close (void) |
| Close a socket. More... | |
| Time | GetClockGranularity (void) const |
| Get the Clock Granularity (used in RTO calcs). More... | |
| virtual enum SocketErrno | GetErrno (void) const |
| Get last error number. More... | |
| Time | GetMinRto (void) const |
| Get the Minimum RTO. More... | |
| virtual Ptr< Node > | GetNode (void) const |
| Return the node this socket is associated with. More... | |
| virtual uint32_t | GetRxAvailable (void) const |
| Return number of bytes which can be returned from one or multiple calls to Recv. More... | |
| Ptr< TcpRxBuffer > | GetRxBuffer (void) const |
| Get a pointer to the Rx buffer. More... | |
| virtual enum SocketType | GetSocketType (void) const |
| virtual int | GetSockName (Address &address) const |
| Get socket address. More... | |
| virtual uint32_t | GetTxAvailable (void) const |
| Returns the number of bytes which can be sent in a single call to Send. More... | |
| Ptr< TcpTxBuffer > | GetTxBuffer (void) const |
| Get a pointer to the Tx buffer. More... | |
| virtual Ptr< Packet > | Recv (uint32_t maxSize, uint32_t flags) |
| Read data from the socket. More... | |
| virtual Ptr< Packet > | RecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress) |
| Read a single packet from the socket and retrieve the sender address. More... | |
| virtual int | Send (Ptr< Packet > p, uint32_t flags) |
| Send data (or dummy data) to the remote host. More... | |
| virtual int | SendTo (Ptr< Packet > p, uint32_t flags, const Address &toAddress) |
| Send data to a specified peer. More... | |
| void | SetClockGranularity (Time clockGranularity) |
| Sets the Clock Granularity (used in RTO calcs). More... | |
| void | SetMinRto (Time minRto) |
| Sets the Minimum RTO. More... | |
| virtual void | SetNode (Ptr< Node > node) |
| Set the associated node. More... | |
| virtual void | SetRtt (Ptr< RttEstimator > rtt) |
| Set the associated RTT estimator. More... | |
| virtual void | SetTcp (Ptr< TcpL4Protocol > tcp) |
| Set the associated TCP L4 protocol. More... | |
| virtual int | ShutdownRecv (void) |
| virtual int | ShutdownSend (void) |
Public Member Functions inherited from ns3::TcpSocket | |
| TcpSocket (void) | |
| virtual | ~TcpSocket (void) |
Public Member Functions inherited from ns3::Socket | |
| Socket (void) | |
| virtual | ~Socket (void) |
| Ptr< NetDevice > | GetBoundNetDevice () |
| Returns socket's bound netdevice, if any. More... | |
| uint8_t | GetIpTos (void) const |
| Query the value of IP Type of Service of this socket. More... | |
| virtual uint8_t | GetIpTtl (void) const |
| Query the value of IP Time to Live field of this socket. More... | |
| virtual uint8_t | GetIpv6HopLimit (void) const |
| Query the value of IP Hop Limit field of this socket. More... | |
| uint8_t | GetIpv6Tclass (void) const |
| Query the value of IPv6 Traffic Class field of this socket. More... | |
| bool | IsIpRecvTos (void) const |
| Ask if the socket is currently passing information about IP Type of Service up the stack. More... | |
| bool | IsIpRecvTtl (void) const |
| Ask if the socket is currently passing information about IP_TTL up the stack. More... | |
| bool | IsIpv6RecvHopLimit (void) const |
| Ask if the socket is currently passing information about IPv6 Hop Limit up the stack. More... | |
| bool | IsIpv6RecvTclass (void) const |
| Ask if the socket is currently passing information about IPv6 Traffic Class up the stack. More... | |
| bool | IsRecvPktInfo () const |
| Get status indicating whether enable/disable packet information to socket. More... | |
| Ptr< Packet > | Recv (void) |
| Read a single packet from the socket. More... | |
| int | Recv (uint8_t *buf, uint32_t size, uint32_t flags) |
| Recv data (or dummy data) from the remote host. More... | |
| Ptr< Packet > | RecvFrom (Address &fromAddress) |
| Read a single packet from the socket and retrieve the sender address. More... | |
| int | RecvFrom (uint8_t *buf, uint32_t size, uint32_t flags, Address &fromAddress) |
| Read a single packet from the socket and retrieve the sender address. More... | |
| int | Send (Ptr< Packet > p) |
| Send data (or dummy data) to the remote host. More... | |
| int | Send (const uint8_t *buf, uint32_t size, uint32_t flags) |
| Send data (or dummy data) to the remote host. More... | |
| int | SendTo (const uint8_t *buf, uint32_t size, uint32_t flags, const Address &address) |
| Send data to a specified peer. More... | |
| void | SetAcceptCallback (Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated) |
| Accept connection requests from remote hosts. More... | |
| void | SetCloseCallbacks (Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose) |
| Detect socket recv() events such as graceful shutdown or error. More... | |
| void | SetConnectCallback (Callback< void, Ptr< Socket > > connectionSucceeded, Callback< void, Ptr< Socket > > connectionFailed) |
| Specify callbacks to allow the caller to determine if the connection succeeds of fails. More... | |
| void | SetDataSentCallback (Callback< void, Ptr< Socket >, uint32_t > dataSent) |
| Notify application when a packet has been sent from transport protocol (non-standard socket call) More... | |
| void | SetIpRecvTos (bool ipv4RecvTos) |
| Tells a socket to pass information about IP Type of Service up the stack. More... | |
| void | SetIpRecvTtl (bool ipv4RecvTtl) |
| Tells a socket to pass information about IP_TTL up the stack. More... | |
| void | SetIpTos (uint8_t ipTos) |
| Manually set IP Type of Service field. More... | |
| virtual void | SetIpTtl (uint8_t ipTtl) |
| Manually set IP Time to Live field. More... | |
| virtual void | SetIpv6HopLimit (uint8_t ipHopLimit) |
| Manually set IPv6 Hop Limit. More... | |
| void | SetIpv6RecvHopLimit (bool ipv6RecvHopLimit) |
| Tells a socket to pass information about IPv6 Hop Limit up the stack. More... | |
| void | SetIpv6RecvTclass (bool ipv6RecvTclass) |
| Tells a socket to pass information about IPv6 Traffic Class up the stack. More... | |
| void | SetIpv6Tclass (int ipTclass) |
| Manually set IPv6 Traffic Class field. More... | |
| void | SetRecvCallback (Callback< void, Ptr< Socket > >) |
| Notify application when new data is available to be read. More... | |
| void | SetRecvPktInfo (bool flag) |
| Enable/Disable receive packet information to socket. More... | |
| void | SetSendCallback (Callback< void, Ptr< Socket >, uint32_t > sendCb) |
| Notify application when space in transmit buffer is added. More... | |
Public Member Functions inherited from ns3::Object | |
| Object () | |
| Constructor. More... | |
| virtual | ~Object () |
| Destructor. More... | |
| void | AggregateObject (Ptr< Object > other) |
| Aggregate two Objects together. More... | |
| void | Dispose (void) |
| Dispose of this Object. More... | |
| AggregateIterator | GetAggregateIterator (void) const |
| Get an iterator to the Objects aggregated to this one. More... | |
| virtual TypeId | GetInstanceTypeId (void) const |
| Implement the GetInstanceTypeId method defined in ObjectBase. More... | |
| template<typename T > | |
| Ptr< T > | GetObject (void) const |
| Get a pointer to the requested aggregated Object. More... | |
| template<typename T > | |
| Ptr< T > | GetObject (TypeId tid) const |
| Get a pointer to the requested aggregated Object. More... | |
| void | Initialize (void) |
| Invoke DoInitialize on all Objects aggregated to this one. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
| SimpleRefCount () | |
| Constructor. More... | |
| SimpleRefCount (const SimpleRefCount &o) | |
| Copy constructor. More... | |
| uint32_t | GetReferenceCount (void) const |
| Get the reference count of the object. More... | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) |
| Assignment. More... | |
| void | Ref (void) const |
| Increment the reference count. More... | |
| void | Unref (void) const |
| Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
| virtual | ~ObjectBase () |
| Virtual destructor. More... | |
| void | GetAttribute (std::string name, AttributeValue &value) const |
| Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
| bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
| Get the value of an attribute without raising erros. More... | |
| void | SetAttribute (std::string name, const AttributeValue &value) |
| Set a single attribute, raising fatal errors if unsuccessful. More... | |
| bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
| Set a single attribute without raising errors. More... | |
| bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
| Connect a TraceSource to a Callback with a context. More... | |
| bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
| Connect a TraceSource to a Callback without a context. More... | |
| bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
| Disconnect from a TraceSource a Callback previously connected with a context. More... | |
| bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
| Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
| static TypeId | GetTypeId (void) |
| Get the type ID. More... | |
Static Public Member Functions inherited from ns3::TcpSocketBase | |
| static TypeId | GetTypeId (void) |
| Get the type ID. More... | |
Static Public Member Functions inherited from ns3::TcpSocket | |
| static TypeId | GetTypeId (void) |
| Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Socket | |
| static Ptr< Socket > | CreateSocket (Ptr< Node > node, TypeId tid) |
| This method wraps the creation of sockets that is performed on a given node by a SocketFactory specified by TypeId. More... | |
| static TypeId | GetTypeId (void) |
| Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
| static TypeId | GetTypeId (void) |
| Register this type. More... | |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
| static void | Cleanup (void) |
| Noop. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
| static TypeId | GetTypeId (void) |
| Get the type ID. More... | |
Protected Member Functions | |
| virtual void | DupAck (const TcpHeader &t, uint32_t count) |
| Received dupack (duplicate ACK) More... | |
| virtual Ptr< TcpSocketBase > | Fork (void) |
| Call CopyObject<> to clone me. More... | |
| virtual uint32_t | GetInitialCwnd (void) const |
| Get the initial Congestion Window. More... | |
| virtual uint32_t | GetInitialSSThresh (void) const |
| Get the initial Slow Start Threshold. More... | |
| virtual void | NewAck (SequenceNumber32 const &seq) |
| Update buffers w.r.t. More... | |
| virtual void | Retransmit (void) |
| Halving cwnd and call DoRetransmit() More... | |
| virtual void | ScaleSsThresh (uint8_t scaleFactor) |
| Scale the initial SsThresh value to the correct one. More... | |
| virtual void | SetInitialCwnd (uint32_t cwnd) |
| Set the initial Congestion Window. More... | |
| virtual void | SetInitialSSThresh (uint32_t threshold) |
| Set the initial Slow Start Threshold. More... | |
| virtual void | SetSegSize (uint32_t size) |
| Set the segment size. More... | |
| virtual uint32_t | Window (void) |
| Return the max possible number of unacked bytes. More... | |
Protected Member Functions inherited from ns3::TcpSocketBase | |
| virtual void | AddOptions (TcpHeader &tcpHeader) |
| Add options to TcpHeader. More... | |
| void | AddOptionTimestamp (TcpHeader &header) |
| Add the timestamp option to the header. More... | |
| void | AddOptionWScale (TcpHeader &header) |
| Add the window scale option to the header. More... | |
| virtual uint16_t | AdvertisedWindowSize (void) |
| The amount of Rx window announced to the peer. More... | |
| virtual uint32_t | AvailableWindow (void) |
| Return unfilled portion of window. More... | |
| virtual uint32_t | BytesInFlight (void) |
| Return total bytes in flight. More... | |
| uint8_t | CalculateWScale () const |
| Calculate window scale value based on receive buffer space. More... | |
| void | CancelAllTimers (void) |
| Cancel all timer when endpoint is deleted. More... | |
| void | CloseAndNotify (void) |
| Peacefully close the socket by notifying the upper layer and deallocate end point. More... | |
| void | CompleteFork (Ptr< Packet > p, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress) |
| Complete a connection by forking the socket. More... | |
| void | ConnectionSucceeded (void) |
| Schedule-friendly wrapper for Socket::NotifyConnectionSucceeded() More... | |
| void | DeallocateEndPoint (void) |
| Deallocate m_endPoint and m_endPoint6. More... | |
| virtual void | DelAckTimeout (void) |
| Action upon delay ACK timeout, i.e. More... | |
| void | Destroy (void) |
| Kill this socket by zeroing its attributes (IPv4) More... | |
| void | Destroy6 (void) |
| Kill this socket by zeroing its attributes (IPv6) More... | |
| int | DoClose (void) |
| Close a socket by sending RST, FIN, or FIN+ACK, depend on the current state. More... | |
| int | DoConnect (void) |
| Perform the real connection tasks: Send SYN if allowed, RST if invalid. More... | |
| virtual void | DoForwardUp (Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface) |
| Called by TcpSocketBase::ForwardUp(). More... | |
| virtual void | DoForwardUp (Ptr< Packet > packet, Ipv6Header header, uint16_t port) |
| Called by TcpSocketBase::ForwardUp6(). More... | |
| void | DoPeerClose (void) |
| FIN is in sequence, notify app and respond with a FIN. More... | |
| virtual void | DoRetransmit (void) |
| Retransmit the oldest packet. More... | |
| virtual void | EstimateRtt (const TcpHeader &tcpHeader) |
| Take into account the packet for RTT estimation. More... | |
| void | ForwardIcmp (Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo) |
| Called by the L3 protocol when it received an ICMP packet to pass on to TCP. More... | |
| void | ForwardIcmp6 (Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo) |
| Called by the L3 protocol when it received an ICMPv6 packet to pass on to TCP. More... | |
| void | ForwardUp (Ptr< Packet > packet, Ipv4Header header, uint16_t port, Ptr< Ipv4Interface > incomingInterface) |
| Called by the L3 protocol when it received a packet to pass on to TCP. More... | |
| void | ForwardUp6 (Ptr< Packet > packet, Ipv6Header header, uint16_t port, Ptr< Ipv6Interface > incomingInterface) |
| Called by the L3 protocol when it received a packet to pass on to TCP. More... | |
| virtual bool | GetAllowBroadcast (void) const |
| Query whether broadcast datagram transmissions are allowed. More... | |
| virtual uint32_t | GetConnCount (void) const |
| Get the number of connection retries before giving up. More... | |
| virtual Time | GetConnTimeout (void) const |
| Get the connection timeout. More... | |
| virtual uint32_t | GetDelAckMaxCount (void) const |
| Get the number of packet to fire an ACK before delay timeout. More... | |
| virtual Time | GetDelAckTimeout (void) const |
| Get the time to delay an ACK. More... | |
| virtual Time | GetPersistTimeout (void) const |
| Get the timout for persistent connection. More... | |
| virtual uint32_t | GetRcvBufSize (void) const |
| Get the receive buffer size. More... | |
| virtual uint32_t | GetSegSize (void) const |
| Get the segment size. More... | |
| virtual uint32_t | GetSndBufSize (void) const |
| Get the send buffer size. More... | |
| virtual bool | GetTcpNoDelay (void) const |
| Check if Nagle's algorithm is enabled or not. More... | |
| virtual void | LastAckTimeout (void) |
| Timeout at LAST_ACK, close the connection. More... | |
| bool | OutOfRange (SequenceNumber32 head, SequenceNumber32 tail) const |
| Check if a sequence number range is within the rx window. More... | |
| void | PeerClose (Ptr< Packet > p, const TcpHeader &tcpHeader) |
| Received a FIN from peer, notify rx buffer. More... | |
| virtual void | PersistTimeout (void) |
| Send 1 byte probe to get an updated window size. More... | |
| void | ProcessClosing (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received a packet upon CLOSING. More... | |
| void | ProcessEstablished (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received a packet upon ESTABLISHED state. More... | |
| void | ProcessLastAck (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received a packet upon LAST_ACK. More... | |
| void | ProcessListen (Ptr< Packet > packet, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress) |
| Received a packet upon LISTEN state. More... | |
| void | ProcessOptionTimestamp (const Ptr< const TcpOption > option) |
| Process the timestamp option from other side. More... | |
| void | ProcessOptionWScale (const Ptr< const TcpOption > option) |
| Read and parse the Window scale option. More... | |
| void | ProcessSynRcvd (Ptr< Packet > packet, const TcpHeader &tcpHeader, const Address &fromAddress, const Address &toAddress) |
| Received a packet upon SYN_RCVD. More... | |
| void | ProcessSynSent (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received a packet upon SYN_SENT. More... | |
| void | ProcessWait (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received a packet upon CLOSE_WAIT, FIN_WAIT_1, FIN_WAIT_2. More... | |
| virtual void | ReadOptions (const TcpHeader &tcpHeader) |
| Read TCP options from incoming packets. More... | |
| virtual void | ReceivedAck (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Received an ACK packet. More... | |
| virtual void | ReceivedData (Ptr< Packet > packet, const TcpHeader &tcpHeader) |
| Recv of a data, put into buffer, call L7 to get it if necessary. More... | |
| virtual void | ReTxTimeout (void) |
| Call Retransmit() upon RTO event. More... | |
| uint32_t | SendDataPacket (SequenceNumber32 seq, uint32_t maxSize, bool withAck) |
| Extract at most maxSize bytes from the TxBuffer at sequence seq, add the TCP header, and send to TcpL4Protocol. More... | |
| void | SendEmptyPacket (uint8_t flags) |
| Send a empty packet that carries a flag, e.g. More... | |
| bool | SendPendingData (bool withAck=false) |
| Send as much pending data as possible according to the Tx window. More... | |
| void | SendRST (void) |
| Send reset and tear down this socket. More... | |
| virtual bool | SetAllowBroadcast (bool allowBroadcast) |
| Configure whether broadcast datagram transmissions are allowed. More... | |
| virtual void | SetConnCount (uint32_t count) |
| Set the number of connection retries before giving up. More... | |
| virtual void | SetConnTimeout (Time timeout) |
| Set the connection timeout. More... | |
| virtual void | SetDelAckMaxCount (uint32_t count) |
| Set the number of packet to fire an ACK before delay timeout. More... | |
| virtual void | SetDelAckTimeout (Time timeout) |
| Set the time to delay an ACK. More... | |
| virtual void | SetPersistTimeout (Time timeout) |
| Set the timout for persistent connection. More... | |
| virtual void | SetRcvBufSize (uint32_t size) |
| Set the receive buffer size. More... | |
| virtual void | SetSndBufSize (uint32_t size) |
| Set the send buffer size. More... | |
| virtual void | SetTcpNoDelay (bool noDelay) |
| Enable/Disable Nagle's algorithm. More... | |
| int | SetupCallback (void) |
| Common part of the two Bind(), i.e. More... | |
| int | SetupEndpoint (void) |
| Configure the endpoint to a local address. More... | |
| int | SetupEndpoint6 (void) |
| Configure the endpoint v6 to a local address. More... | |
| void | TimeWait (void) |
| Move from CLOSING or FIN_WAIT_2 to TIME_WAIT state. More... | |
| virtual uint32_t | UnAckDataCount (void) |
| Return count of number of unacked bytes. More... | |
| void | UpdateWindowSize (const TcpHeader &header) |
| Update the receiver window (RWND) based on the value of the window field in the header. More... | |
Protected Member Functions inherited from ns3::Socket | |
| virtual void | DoDispose (void) |
| Destructor implementation. More... | |
| bool | IsManualIpTos (void) const |
| Checks if the socket has a specific IPv4 ToS set. More... | |
| bool | IsManualIpTtl (void) const |
| Checks if the socket has a specific IPv4 TTL set. More... | |
| bool | IsManualIpv6HopLimit (void) const |
| Checks if the socket has a specific IPv6 Hop Limit set. More... | |
| bool | IsManualIpv6Tclass (void) const |
| Checks if the socket has a specific IPv6 Tclass set. More... | |
| void | NotifyConnectionFailed (void) |
| Notify through the callback (if set) that the connection has not been established due to an error. More... | |
| bool | NotifyConnectionRequest (const Address &from) |
| Notify through the callback (if set) that an incoming connection is being requested by a remote host. More... | |
| void | NotifyConnectionSucceeded (void) |
| Notify through the callback (if set) that the connection has been established. More... | |
| void | NotifyDataRecv (void) |
| Notify through the callback (if set) that some data have been received. More... | |
| void | NotifyDataSent (uint32_t size) |
| Notify through the callback (if set) that some data have been sent. More... | |
| void | NotifyErrorClose (void) |
| Notify through the callback (if set) that the connection has been closed due to an error. More... | |
| void | NotifyNewConnectionCreated (Ptr< Socket > socket, const Address &from) |
| Notify through the callback (if set) that a new connection has been created. More... | |
| void | NotifyNormalClose (void) |
| Notify through the callback (if set) that the connection has been closed. More... | |
| void | NotifySend (uint32_t spaceAvailable) |
| Notify through the callback (if set) that some data have been sent. More... | |
Protected Member Functions inherited from ns3::Object | |
| Object (const Object &o) | |
| Copy an Object. More... | |
| virtual void | DoInitialize (void) |
| Initialize() implementation. More... | |
| virtual void | NotifyNewAggregate (void) |
| Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
| void | ConstructSelf (const AttributeConstructionList &attributes) |
| Complete construction of ObjectBase; invoked by derived classes. More... | |
| virtual void | NotifyConstructionCompleted (void) |
| Notifier called once the ObjectBase is fully constructed. More... | |
Protected Attributes | |
| TracedValue< uint32_t > | m_cWnd |
| Congestion window. More... | |
| bool | m_inFastRec |
| currently in fast recovery More... | |
| uint32_t | m_initialCWnd |
| Initial cWnd value. More... | |
| uint32_t | m_initialSsThresh |
| Initial Slow Start Threshold value. More... | |
| bool | m_limitedTx |
| perform limited transmit More... | |
| SequenceNumber32 | m_recover |
| Previous highest Tx seqnum for fast recovery. More... | |
| uint32_t | m_retxThresh |
| Fast Retransmit threshold. More... | |
| TracedValue< uint32_t > | m_ssThresh |
| Slow Start Threshold. More... | |
Protected Attributes inherited from ns3::TcpSocketBase | |
| Time | m_clockGranularity |
| Clock Granularity used in RTO calcs. More... | |
| bool | m_closeNotified |
| Told app to close socket. More... | |
| bool | m_closeOnEmpty |
| Close socket upon tx buffer emptied. More... | |
| uint32_t | m_cnCount |
| Count of remaining connection retries. More... | |
| uint32_t | m_cnRetries |
| Number of connection retries before giving up. More... | |
| Time | m_cnTimeout |
| Timeout for connection retry. More... | |
| bool | m_connected |
| Connection established. More... | |
| uint32_t | m_delAckCount |
| Delayed ACK counter. More... | |
| EventId | m_delAckEvent |
| Delayed ACK timeout event. More... | |
| uint32_t | m_delAckMaxCount |
| Number of packet to fire an ACK before delay timeout. More... | |
| Time | m_delAckTimeout |
| Time to delay an ACK. More... | |
| uint32_t | m_dupAckCount |
| Dupack counter. More... | |
| Ipv4EndPoint * | m_endPoint |
| the IPv4 endpoint More... | |
| Ipv6EndPoint * | m_endPoint6 |
| the IPv6 endpoint More... | |
| enum SocketErrno | m_errno |
| Socket error code. More... | |
| TracedValue< SequenceNumber32 > | m_highRxAckMark |
| Highest ack received. More... | |
| TracedValue< SequenceNumber32 > | m_highRxMark |
| Highest seqno received. More... | |
| TracedValue< SequenceNumber32 > | m_highTxMark |
| Highest seqno ever sent, regardless of ReTx. More... | |
| RttHistory_t | m_history |
| List of sent packet. More... | |
| Callback< void, Ipv4Address, uint8_t, uint8_t, uint8_t, uint32_t > | m_icmpCallback |
| ICMP callback. More... | |
| Callback< void, Ipv6Address, uint8_t, uint8_t, uint8_t, uint32_t > | m_icmpCallback6 |
| ICMPv6 callback. More... | |
| EventId | m_lastAckEvent |
| Last ACK timeout event. More... | |
| TracedValue< Time > | m_lastRtt |
| Last RTT sample collected. More... | |
| uint16_t | m_maxWinSize |
| Maximum window size to advertise. More... | |
| Time | m_minRto |
| minimum value of the Retransmit timeout More... | |
| double | m_msl |
| Max segment lifetime. More... | |
| TracedValue< SequenceNumber32 > | m_nextTxSequence |
| Next seqnum to be sent (SND.NXT), ReTx pushes it back. More... | |
| Ptr< Node > | m_node |
| the associated node More... | |
| bool | m_noDelay |
| Set to true to disable Nagle's algorithm. More... | |
| EventId | m_persistEvent |
| Persist event: Send 1 byte to probe for a non-zero Rx window. More... | |
| Time | m_persistTimeout |
| Time between sending 1-byte probes. More... | |
| uint8_t | m_rcvScaleFactor |
| Received Window Scale (i.e., the one of the peer) More... | |
| EventId | m_retxEvent |
| Retransmission event. More... | |
| TracedValue< Time > | m_rto |
| Retransmit timeout. More... | |
| Ptr< RttEstimator > | m_rtt |
| Round trip time estimator. More... | |
| TracedValue< uint32_t > | m_rWnd |
| Receiver window (RCV.WND in RFC793) More... | |
| Ptr< TcpRxBuffer > | m_rxBuffer |
| Rx buffer (reordering buffer) More... | |
| uint32_t | m_segmentSize |
| Segment size. More... | |
| EventId | m_sendPendingDataEvent |
| micro-delay event to send pending data More... | |
| bool | m_shutdownRecv |
| Receive no longer allowed. More... | |
| bool | m_shutdownSend |
| Send no longer allowed. More... | |
| uint8_t | m_sndScaleFactor |
| Sent Window Scale (i.e., the one of the node) More... | |
| TracedValue< TcpStates_t > | m_state |
| TCP state. More... | |
| Ptr< TcpL4Protocol > | m_tcp |
| the associated TCP L4 protocol More... | |
| bool | m_timestampEnabled |
| Timestamp option enabled. More... | |
| uint32_t | m_timestampToEcho |
| Timestamp to echo. More... | |
| EventId | m_timewaitEvent |
| TIME_WAIT expiration event: Move this socket to CLOSED state. More... | |
| Ptr< TcpTxBuffer > | m_txBuffer |
| Tx buffer. More... | |
| bool | m_winScalingEnabled |
| Window Scale option enabled. More... | |
Protected Attributes inherited from ns3::Socket | |
| Ptr< NetDevice > | m_boundnetdevice |
| the device this socket is bound to (might be null). More... | |
| bool | m_recvPktInfo |
| if the socket should add packet info tags to the packet forwarded to L4. More... | |
Private Member Functions | |
| void | InitializeCwnd (void) |
| Set the congestion window when connection starts. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::Socket | |
| enum | SocketErrno { ERROR_NOTERROR, ERROR_ISCONN, ERROR_NOTCONN, ERROR_MSGSIZE, ERROR_AGAIN, ERROR_SHUTDOWN, ERROR_OPNOTSUPP, ERROR_AFNOSUPPORT, ERROR_INVAL, ERROR_BADF, ERROR_NOROUTETOHOST, ERROR_NODEV, ERROR_ADDRNOTAVAIL, ERROR_ADDRINUSE, SOCKET_ERRNO_LAST } |
| Enumeration of the possible errors returned by a socket. More... | |
| enum | SocketType { NS3_SOCK_STREAM, NS3_SOCK_SEQPACKET, NS3_SOCK_DGRAM, NS3_SOCK_RAW } |
| Enumeration of the possible socket types. More... | |
Static Public Attributes inherited from ns3::TcpSocket | |
| static const char *const | TcpStateName [LAST_STATE] = { "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "CLOSE_WAIT", "LAST_ACK", "FIN_WAIT_1", "FIN_WAIT_2", "CLOSING", "TIME_WAIT" } |
| Literal names of TCP states for use in log messages. More... | |
Related Functions inherited from ns3::ObjectBase | |
| static TypeId | GetObjectIid (void) |
| Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
An implementation of a stream socket using TCP.
This class contains the NewReno implementation of TCP, as of RFC 2582.
ns3::TcpNewReno is accessible through the following paths with Config::Set and Config::Connect:
Size of this type is 800 bytes (on a 64-bit architecture).
Definition at line 36 of file tcp-newreno.h.
| ns3::TcpNewReno::TcpNewReno | ( | void | ) |
Create an unbound tcp socket.
Definition at line 64 of file tcp-newreno.cc.
References NS_LOG_FUNCTION.
| ns3::TcpNewReno::TcpNewReno | ( | const TcpNewReno & | sock | ) |
Copy constructor.
| sock | the object to copy |
Definition at line 72 of file tcp-newreno.cc.
References NS_LOG_FUNCTION, and NS_LOG_LOGIC.
|
virtual |
Definition at line 86 of file tcp-newreno.cc.
|
virtual |
Initiate a connection to a remote host.
| address | Address of remote. |
Reimplemented from ns3::TcpSocketBase.
Definition at line 101 of file tcp-newreno.cc.
References ns3::TcpSocketBase::Connect(), InitializeCwnd(), and NS_LOG_FUNCTION.
Here is the call graph for this function:
|
protectedvirtual |
Received dupack (duplicate ACK)
| tcpHeader | the packet's TCP header |
| count | counter of duplicate ACKs |
Implements ns3::TcpSocketBase.
Definition at line 169 of file tcp-newreno.cc.
References ns3::TcpSocketBase::BytesInFlight(), ns3::TcpSocketBase::DoRetransmit(), ns3::EventId::IsRunning(), ns3::TcpSocketBase::m_connected, m_cWnd, ns3::TcpSocketBase::m_highTxMark, m_inFastRec, m_limitedTx, ns3::TcpSocketBase::m_nextTxSequence, m_recover, m_retxThresh, ns3::TcpSocketBase::m_segmentSize, ns3::TcpSocketBase::m_sendPendingDataEvent, m_ssThresh, ns3::TcpSocketBase::m_txBuffer, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::TcpSocketBase::SendDataPacket(), and ns3::TcpSocketBase::SendPendingData().
Here is the call graph for this function:
|
protectedvirtual |
Call CopyObject<> to clone me.
Implements ns3::TcpSocketBase.
Definition at line 117 of file tcp-newreno.cc.
|
protectedvirtual |
Get the initial Congestion Window.
Implements ns3::TcpSocketBase.
Definition at line 251 of file tcp-newreno.cc.
References m_initialCWnd.
|
protectedvirtual |
Get the initial Slow Start Threshold.
Implements ns3::TcpSocketBase.
Definition at line 238 of file tcp-newreno.cc.
References m_initialSsThresh.
|
static |
Get the type ID.
Definition at line 38 of file tcp-newreno.cc.
References m_cWnd, m_limitedTx, m_retxThresh, m_ssThresh, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeTraceSourceAccessor(), ns3::MakeUintegerAccessor(), and ns3::TypeId::SetParent().
Referenced by ns3::TcpL4Protocol::GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Set the congestion window when connection starts.
Definition at line 257 of file tcp-newreno.cc.
References m_cWnd, m_initialCWnd, m_initialSsThresh, ns3::TcpSocketBase::m_segmentSize, and m_ssThresh.
Referenced by Connect(), and Listen().
Here is the caller graph for this function:
|
virtual |
Listen for incoming connections.
Reimplemented from ns3::TcpSocketBase.
Definition at line 92 of file tcp-newreno.cc.
References InitializeCwnd(), ns3::TcpSocketBase::Listen(), and NS_LOG_FUNCTION.
Here is the call graph for this function:
|
protectedvirtual |
Update buffers w.r.t.
ACK
| seq | the sequence number |
Reimplemented from ns3::TcpSocketBase.
Definition at line 124 of file tcp-newreno.cc.
References ns3::TcpSocketBase::BytesInFlight(), ns3::TcpSocketBase::DoRetransmit(), ns3::TracedValue< T >::Get(), m_cWnd, m_inFastRec, m_recover, ns3::TcpSocketBase::m_segmentSize, m_ssThresh, ns3::TcpSocketBase::m_txBuffer, ns3::TcpSocketBase::NewAck(), NS_LOG_FUNCTION, NS_LOG_INFO, and NS_LOG_LOGIC.
Here is the call graph for this function:
|
protectedvirtual |
Halving cwnd and call DoRetransmit()
Reimplemented from ns3::TcpSocketBase.
Definition at line 201 of file tcp-newreno.cc.
References ns3::TcpSocketBase::BytesInFlight(), ns3::CLOSED, ns3::TcpSocketBase::DoRetransmit(), m_cWnd, ns3::TcpSocketBase::m_highTxMark, m_inFastRec, ns3::TcpSocketBase::m_nextTxSequence, ns3::TcpSocketBase::m_segmentSize, m_ssThresh, ns3::TcpSocketBase::m_state, ns3::TcpSocketBase::m_txBuffer, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, and ns3::TIME_WAIT.
Here is the call graph for this function:
|
protectedvirtual |
Scale the initial SsThresh value to the correct one.
Set the initial SsThresh to the largest possible advertised window according to the sender scale factor.
| scaleFactor | the sender scale factor |
Implements ns3::TcpSocketBase.
Definition at line 269 of file tcp-newreno.cc.
References m_ssThresh.
|
protectedvirtual |
Set the initial Congestion Window.
| cwnd | the initial congestion window (in bytes) |
Implements ns3::TcpSocketBase.
Definition at line 244 of file tcp-newreno.cc.
References ns3::CLOSED, m_initialCWnd, ns3::TcpSocketBase::m_state, and NS_ABORT_MSG_UNLESS.
|
protectedvirtual |
Set the initial Slow Start Threshold.
| threshold | the Slow Start Threshold (in bytes) |
Implements ns3::TcpSocketBase.
Definition at line 231 of file tcp-newreno.cc.
References ns3::CLOSED, m_initialSsThresh, ns3::TcpSocketBase::m_state, and NS_ABORT_MSG_UNLESS.
|
protectedvirtual |
Set the segment size.
| size | the segment size (in bytes) |
Reimplemented from ns3::TcpSocketBase.
Definition at line 224 of file tcp-newreno.cc.
References ns3::CLOSED, ns3::TcpSocketBase::m_segmentSize, ns3::TcpSocketBase::m_state, and NS_ABORT_MSG_UNLESS.
|
protectedvirtual |
Return the max possible number of unacked bytes.
Implements ns3::TcpSocketBase.
Definition at line 110 of file tcp-newreno.cc.
References ns3::TracedValue< T >::Get(), m_cWnd, ns3::TcpSocketBase::m_rWnd, and NS_LOG_FUNCTION.
Here is the call graph for this function:
|
protected |
Congestion window.
Definition at line 81 of file tcp-newreno.h.
Referenced by DupAck(), GetTypeId(), InitializeCwnd(), NewAck(), Retransmit(), and Window().
|
protected |
currently in fast recovery
Definition at line 87 of file tcp-newreno.h.
Referenced by DupAck(), NewAck(), and Retransmit().
|
protected |
Initial cWnd value.
Definition at line 83 of file tcp-newreno.h.
Referenced by GetInitialCwnd(), InitializeCwnd(), and SetInitialCwnd().
|
protected |
Initial Slow Start Threshold value.
Definition at line 84 of file tcp-newreno.h.
Referenced by GetInitialSSThresh(), InitializeCwnd(), and SetInitialSSThresh().
|
protected |
perform limited transmit
Definition at line 88 of file tcp-newreno.h.
Referenced by DupAck(), and GetTypeId().
|
protected |
Previous highest Tx seqnum for fast recovery.
Definition at line 85 of file tcp-newreno.h.
|
protected |
Fast Retransmit threshold.
Definition at line 86 of file tcp-newreno.h.
Referenced by DupAck(), and GetTypeId().
|
protected |
Slow Start Threshold.
Definition at line 82 of file tcp-newreno.h.
Referenced by DupAck(), GetTypeId(), InitializeCwnd(), NewAck(), Retransmit(), and ScaleSsThresh().