A Discrete-Event Network Simulator
API
ns3::TcpOptionWinScale Class Reference

Defines the TCP option of kind 3 (window scale option) as in RFC 1323 More...

#include "tcp-option-winscale.h"

+ Inheritance diagram for ns3::TcpOptionWinScale:
+ Collaboration diagram for ns3::TcpOptionWinScale:

Public Member Functions

 TcpOptionWinScale ()
 
 ~TcpOptionWinScale () override
 
uint32_t Deserialize (Buffer::Iterator start) override
 Deserialize the Option from a buffer iterator. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
uint8_t GetKind () const override
 Get the ‘kind’ (as in RFC 793) of this option. More...
 
uint8_t GetScale () const
 Get the scale value (uint8_t) More...
 
uint32_t GetSerializedSize () const override
 Returns number of bytes required for Option serialization. More...
 
void Print (std::ostream &os) const override
 Print the Option contents. More...
 
void Serialize (Buffer::Iterator start) const override
 Serialize the Option to a buffer iterator. More...
 
void SetScale (uint8_t scale)
 Set the scale option. More...
 
- Public Member Functions inherited from ns3::TcpOption
 TcpOption ()
 
 ~TcpOption () override
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
 ~Object () override
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose ()
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one. More...
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized () const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () 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 errors. 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 ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::TcpOption
static Ptr< TcpOptionCreateOption (uint8_t kind)
 Creates an option. More...
 
static TypeId GetTypeId ()
 Get the type ID. More...
 
static bool IsKindKnown (uint8_t kind)
 Check if the option is implemented. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Protected Attributes

uint8_t m_scale
 Window scaling in number of bit shift. More...
 

Additional Inherited Members

- Public Types inherited from ns3::TcpOption
enum  Kind {
  END = 0 , NOP = 1 , MSS = 2 , WINSCALE = 3 ,
  SACKPERMITTED = 4 , SACK = 5 , TS = 8 , UNKNOWN = 255
}
 The option Kind, as defined in the respective RFCs. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoDispose ()
 Destructor implementation. More...
 
virtual void DoInitialize ()
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate ()
 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 ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

Defines the TCP option of kind 3 (window scale option) as in RFC 1323

For more efficient use of high bandwidth networks, a larger TCP window size may be used. The TCP window size field controls the flow of data and its value is limited to between 2 and 65,535 bytes.

Since the size field cannot be expanded, a scaling factor is used. The TCP window scale option, as defined in RFC 1323, is an option used to increase the maximum window size from 65,535 bytes to 1 gigabyte. Scaling up to larger window sizes is a part of what is necessary for TCP Tuning.

The window scale option is used only during the TCP 3-way handshake. The window scale value represents the number of bits to left-shift the 16-bit window size field. The window scale value can be set from 0 (no shift) to 14 for each direction independently. Both sides must send the option in their SYN segments to enable window scaling in either direction.

Definition at line 50 of file tcp-option-winscale.h.

Constructor & Destructor Documentation

◆ TcpOptionWinScale()

ns3::TcpOptionWinScale::TcpOptionWinScale ( )

Definition at line 32 of file tcp-option-winscale.cc.

◆ ~TcpOptionWinScale()

ns3::TcpOptionWinScale::~TcpOptionWinScale ( )
override

Definition at line 38 of file tcp-option-winscale.cc.

Member Function Documentation

◆ Deserialize()

uint32_t ns3::TcpOptionWinScale::Deserialize ( Buffer::Iterator  start)
overridevirtual

Deserialize the Option from a buffer iterator.

Parameters
startthe buffer iterator
Returns
the number of deserialized bytes

Implements ns3::TcpOption.

Definition at line 80 of file tcp-option-winscale.cc.

References GetKind(), GetSerializedSize(), m_scale, NS_LOG_WARN, ns3::Buffer::Iterator::ReadU8(), and two-ray-to-three-gpp-ch-calibration::start.

Referenced by TcpOptionWSTestCase::TestDeserialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetInstanceTypeId()

TypeId ns3::TcpOptionWinScale::GetInstanceTypeId ( ) const
overridevirtual

Get the most derived TypeId for this Object.

This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.

Returns
The TypeId associated to the most-derived type of this instance.

Reimplemented from ns3::Object.

Definition at line 53 of file tcp-option-winscale.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetKind()

uint8_t ns3::TcpOptionWinScale::GetKind ( ) const
overridevirtual

Get the ‘kind’ (as in RFC 793) of this option.

Returns
the Option Kind

Implements ns3::TcpOption.

Definition at line 101 of file tcp-option-winscale.cc.

References ns3::TcpOption::WINSCALE.

Referenced by Deserialize(), and Serialize().

+ Here is the caller graph for this function:

◆ GetScale()

uint8_t ns3::TcpOptionWinScale::GetScale ( ) const

Get the scale value (uint8_t)

Returns
The scale value

Definition at line 107 of file tcp-option-winscale.cc.

References m_scale, and NS_ASSERT.

Referenced by TcpOptionWSTestCase::TestDeserialize(), and TcpOptionWSTestCase::TestSerialize().

+ Here is the caller graph for this function:

◆ GetSerializedSize()

uint32_t ns3::TcpOptionWinScale::GetSerializedSize ( ) const
overridevirtual

Returns number of bytes required for Option serialization.

Returns
number of bytes required for Option serialization

Implements ns3::TcpOption.

Definition at line 65 of file tcp-option-winscale.cc.

Referenced by Deserialize(), and TcpOptionWSTestCase::TestSerialize().

+ Here is the caller graph for this function:

◆ GetTypeId()

TypeId ns3::TcpOptionWinScale::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 43 of file tcp-option-winscale.cc.

References ns3::TypeId::SetParent().

Referenced by ns3::TcpOption::CreateOption(), and GetInstanceTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Print()

void ns3::TcpOptionWinScale::Print ( std::ostream &  os) const
overridevirtual

Print the Option contents.

Parameters
osthe output stream

Implements ns3::TcpOption.

Definition at line 59 of file tcp-option-winscale.cc.

References m_scale.

◆ Serialize()

void ns3::TcpOptionWinScale::Serialize ( Buffer::Iterator  start) const
overridevirtual

Serialize the Option to a buffer iterator.

Parameters
startthe buffer iterator

Implements ns3::TcpOption.

Definition at line 71 of file tcp-option-winscale.cc.

References GetKind(), m_scale, two-ray-to-three-gpp-ch-calibration::start, and ns3::Buffer::Iterator::WriteU8().

Referenced by TcpOptionWSTestCase::TestSerialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetScale()

void ns3::TcpOptionWinScale::SetScale ( uint8_t  scale)

Set the scale option.

The scale option SHOULD be <= 14 (as RFC 1323).

Parameters
scaleScale factor

Definition at line 115 of file tcp-option-winscale.cc.

References m_scale, and NS_ASSERT.

Referenced by TcpOptionWSTestCase::TestSerialize().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_scale

uint8_t ns3::TcpOptionWinScale::m_scale
protected

Window scaling in number of bit shift.

Definition at line 86 of file tcp-option-winscale.h.

Referenced by Deserialize(), GetScale(), Print(), Serialize(), and SetScale().


The documentation for this class was generated from the following files: