00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "ns3/object.h"
00022 #include "ns3/log.h"
00023 #include "ns3/uinteger.h"
00024 #include "ns3/double.h"
00025 #include "ns3/trace-source-accessor.h"
00026 #include "ns3/nstime.h"
00027 #include "tcp-socket.h"
00028
00029 NS_LOG_COMPONENT_DEFINE ("TcpSocket");
00030
00031 namespace ns3 {
00032
00033 NS_OBJECT_ENSURE_REGISTERED (TcpSocket);
00034
00035 TypeId
00036 TcpSocket::GetTypeId (void)
00037 {
00038 static TypeId tid = TypeId ("ns3::TcpSocket")
00039 .SetParent<Socket> ()
00040 .AddAttribute ("SndBufSize",
00041 "TcpSocket maximum transmit buffer size (bytes)",
00042 UintegerValue (0xffffffffl),
00043 MakeUintegerAccessor (&TcpSocket::GetSndBufSize,
00044 &TcpSocket::SetSndBufSize),
00045 MakeUintegerChecker<uint32_t> ())
00046 .AddAttribute ("RcvBufSize",
00047 "TcpSocket maximum receive buffer size (bytes)",
00048 UintegerValue (0xffffffffl),
00049 MakeUintegerAccessor (&TcpSocket::GetRcvBufSize,
00050 &TcpSocket::SetRcvBufSize),
00051 MakeUintegerChecker<uint32_t> ())
00052 .AddAttribute ("SegmentSize",
00053 "TCP maximum segment size in bytes (may be adjusted based on MTU discovery)",
00054 UintegerValue (536),
00055 MakeUintegerAccessor (&TcpSocket::GetSegSize,
00056 &TcpSocket::SetSegSize),
00057 MakeUintegerChecker<uint32_t> ())
00058 .AddAttribute ("SlowStartThreshold",
00059 "TCP slow start threshold (bytes)",
00060 UintegerValue (0xffff),
00061 MakeUintegerAccessor (&TcpSocket::GetSSThresh,
00062 &TcpSocket::SetSSThresh),
00063 MakeUintegerChecker<uint32_t> ())
00064 .AddAttribute ("InitialCwnd",
00065 "TCP initial congestion window size (segments)",
00066 UintegerValue (1),
00067 MakeUintegerAccessor (&TcpSocket::GetInitialCwnd,
00068 &TcpSocket::SetInitialCwnd),
00069 MakeUintegerChecker<uint32_t> ())
00070 .AddAttribute ("ConnTimeout",
00071 "TCP retransmission timeout when opening connection (seconds)",
00072 TimeValue (Seconds (3)),
00073 MakeTimeAccessor (&TcpSocket::GetConnTimeout,
00074 &TcpSocket::SetConnTimeout),
00075 MakeTimeChecker ())
00076 .AddAttribute ("ConnCount",
00077 "Number of connection attempts (SYN retransmissions) before returning failure",
00078 UintegerValue (6),
00079 MakeUintegerAccessor (&TcpSocket::GetConnCount,
00080 &TcpSocket::SetConnCount),
00081 MakeUintegerChecker<uint32_t> ())
00082 .AddAttribute ("DelAckTimeout",
00083 "Timeout value for TCP delayed acks, in seconds",
00084 TimeValue (Seconds (0.2)),
00085 MakeTimeAccessor (&TcpSocket::GetDelAckTimeout,
00086 &TcpSocket::SetDelAckTimeout),
00087 MakeTimeChecker ())
00088 .AddAttribute ("DelAckCount",
00089 "Number of packets to wait before sending a TCP ack",
00090 UintegerValue (2),
00091 MakeUintegerAccessor (&TcpSocket::GetDelAckMaxCount,
00092 &TcpSocket::SetDelAckMaxCount),
00093 MakeUintegerChecker<uint32_t> ())
00094 ;
00095 return tid;
00096 }
00097
00098 TcpSocket::TcpSocket ()
00099 {
00100 NS_LOG_FUNCTION_NOARGS ();
00101 }
00102
00103 TcpSocket::~TcpSocket ()
00104 {
00105 NS_LOG_FUNCTION_NOARGS ();
00106 }
00107
00108 };