|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
36 #include "ns3/simulator.h"
51 .SetGroupName (
"Internet")
53 .AddAttribute(
"FilterType",
"Use this to choose no filter or Tustin's approximation filter",
56 .AddAttribute(
"ProtocolType",
"Use this to let the code run as Westwood or WestwoodPlus",
60 .AddTraceSource(
"EstimatedBW",
"The estimated bandwidth",
62 "ns3::TracedValueCallback::Double")
81 m_currentBW (sock.m_currentBW),
82 m_lastSampleBW (sock.m_lastSampleBW),
83 m_lastBW (sock.m_lastBW),
84 m_pType (sock.m_pType),
85 m_fType (sock.m_fType),
86 m_IsCount (sock.m_IsCount)
170 uint32_t bytesInFlight)
174 tcb->m_minRtt <<
" ssthresh: " <<
175 m_currentBW *
static_cast<double> (tcb->m_minRtt.GetSeconds ()));
177 return std::max (2*tcb->m_segmentSize,
178 uint32_t (
m_currentBW *
static_cast<double> (tcb->m_minRtt.GetSeconds ())));
184 return CreateObject<TcpWestwood> (*
this);
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
bool m_IsCount
Start keeping track of m_ackedSegments for Westwood+ if TRUE.
Time m_lastAck
The last ACK time.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
static Time Now(void)
Return the current simulation virtual time.
EventId m_bwEstimateEvent
The BW estimation event for Westwood+.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual uint32_t GetSsThresh(Ptr< const TcpSocketState > tcb, uint32_t bytesInFlight)
Get the slow start threshold after a loss event.
Ptr< const AttributeChecker > MakeEnumChecker(int v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.
uint32_t m_segmentSize
Segment size.
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
An implementation of TCP Westwood and Westwood+.
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Hold variables of type enum.
virtual void PktsAcked(Ptr< TcpSocketState > tcb, uint32_t packetsAcked, const Time &rtt)
Timing information on received ACK.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
enum FilterType m_fType
0 for none, 1 for Tustin
virtual ~TcpWestwood(void)
virtual Ptr< TcpCongestionOps > Fork()
Copy the congestion control algorithm across sockets.
bool IsZero(void) const
Exactly equivalent to t == 0.
double m_lastSampleBW
Last bandwidth sample.
void EstimateBW(const Time &rtt, Ptr< TcpSocketState > tcb)
Estimate the network's bandwidth.
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
#define NS_UNUSED(x)
Mark a local variable as unused.
Simulation virtual time values and global simulation resolution.
enum ProtocolType m_pType
0 for Westwood, 1 for Westwood+
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
uint32_t m_ackedSegments
The number of segments ACKed between RTTs.
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
The NewReno implementation.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
static TypeId GetTypeId(void)
Get the type ID.
double m_lastBW
Last bandwidth sample after being filtered.
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
TracedValue< double > m_currentBW
Current value of the estimated BW.