A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
tcp-westwood.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013 ResiliNets, ITTC, University of Kansas
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Authors: Siddharth Gangadhar <siddharth@ittc.ku.edu>, Truc Anh N. Nguyen <annguyen@ittc.ku.edu>,
19
* and Greeshma Umapathi
20
*
21
* James P.G. Sterbenz <jpgs@ittc.ku.edu>, director
22
* ResiliNets Research Group http://wiki.ittc.ku.edu/resilinets
23
* Information and Telecommunication Technology Center (ITTC)
24
* and Department of Electrical Engineering and Computer Science
25
* The University of Kansas Lawrence, KS USA.
26
*
27
* Work supported in part by NSF FIND (Future Internet Design) Program
28
* under grant CNS-0626918 (Postmodern Internet Architecture),
29
* NSF grant CNS-1050226 (Multilayer Network Resilience Analysis and Experimentation on GENI),
30
* US Department of Defense (DoD), and ITTC at The University of Kansas.
31
*/
32
33
#ifndef TCP_WESTWOOD_H
34
#define TCP_WESTWOOD_H
35
36
#include "
tcp-congestion-ops.h
"
37
#include "ns3/sequence-number.h"
38
#include "ns3/traced-value.h"
39
40
namespace
ns3 {
41
42
class
Packet;
43
class
TcpHeader;
44
class
Time
;
45
class
EventId;
46
68
class
TcpWestwood
:
public
TcpNewReno
69
{
70
public
:
75
static
TypeId
GetTypeId
(
void
);
76
77
TcpWestwood
(
void
);
82
TcpWestwood
(
const
TcpWestwood
& sock);
83
virtual
~TcpWestwood
(
void
);
84
88
enum
ProtocolType
89
{
90
WESTWOOD
,
91
WESTWOODPLUS
92
};
93
97
enum
FilterType
98
{
99
NONE
,
100
TUSTIN
101
};
102
103
virtual
uint32_t
GetSsThresh
(
Ptr<const TcpSocketState>
tcb,
104
uint32_t bytesInFlight);
105
106
virtual
void
PktsAcked
(
Ptr<TcpSocketState>
tcb, uint32_t packetsAcked,
107
const
Time
& rtt);
108
109
virtual
Ptr<TcpCongestionOps>
Fork
();
110
111
private
:
117
void
UpdateAckedSegments
(
int
acked);
118
125
void
EstimateBW
(
const
Time
& rtt,
Ptr<TcpSocketState>
tcb);
126
127
protected
:
128
TracedValue<double>
m_currentBW
;
129
double
m_lastSampleBW
;
130
double
m_lastBW
;
131
Time
m_minRtt
;
132
enum
ProtocolType
m_pType
;
133
enum
FilterType
m_fType
;
134
135
int
m_ackedSegments
;
136
bool
m_IsCount
;
137
EventId
m_bwEstimateEvent
;
138
139
};
140
141
}
// namespace ns3
142
143
#endif
/* TCP_WESTWOOD_H */
ns3::TcpWestwood::m_bwEstimateEvent
EventId m_bwEstimateEvent
The BW estimation event for Westwood+.
Definition:
tcp-westwood.h:137
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition:
nstime.h:102
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition:
ptr.h:73
ns3::TcpWestwood::m_lastBW
double m_lastBW
Last bandwidth sample after being filtered.
Definition:
tcp-westwood.h:130
tcp-congestion-ops.h
ns3::TcpWestwood::NONE
Definition:
tcp-westwood.h:99
ns3::TcpWestwood::TUSTIN
Definition:
tcp-westwood.h:100
ns3::TcpWestwood::WESTWOODPLUS
Definition:
tcp-westwood.h:91
ns3::TcpNewReno
The NewReno implementation.
Definition:
tcp-congestion-ops.h:156
ns3::TracedValue< double >
ns3::TcpWestwood::PktsAcked
virtual void PktsAcked(Ptr< TcpSocketState > tcb, uint32_t packetsAcked, const Time &rtt)
Timing information on received ACK.
Definition:
tcp-westwood.cc:98
ns3::TcpWestwood::m_fType
enum FilterType m_fType
0 for none, 1 for Tustin
Definition:
tcp-westwood.h:133
ns3::TcpWestwood::UpdateAckedSegments
void UpdateAckedSegments(int acked)
Update the total number of acknowledged packets during the current RTT.
ns3::TcpWestwood::ProtocolType
ProtocolType
Protocol variant (Westwood or Westwood+)
Definition:
tcp-westwood.h:88
ns3::TcpWestwood::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition:
tcp-westwood.cc:47
ns3::TcpWestwood::GetSsThresh
virtual uint32_t GetSsThresh(Ptr< const TcpSocketState > tcb, uint32_t bytesInFlight)
Get the slow start threshold after a loss event.
Definition:
tcp-westwood.cc:178
ns3::TcpWestwood::FilterType
FilterType
Filter type (None or Tustin)
Definition:
tcp-westwood.h:97
ns3::TcpWestwood::TcpWestwood
TcpWestwood(void)
Definition:
tcp-westwood.cc:67
ns3::TcpWestwood::~TcpWestwood
virtual ~TcpWestwood(void)
Definition:
tcp-westwood.cc:93
ns3::TcpWestwood::m_ackedSegments
int m_ackedSegments
The number of segments ACKed between RTTs.
Definition:
tcp-westwood.h:135
ns3::EventId
An identifier for simulation events.
Definition:
event-id.h:53
ns3::TcpWestwood::Fork
virtual Ptr< TcpCongestionOps > Fork()
Copy the congestion control algorithm across socket.
Definition:
tcp-westwood.cc:191
ns3::TcpWestwood::m_lastSampleBW
double m_lastSampleBW
Last bandwidth sample.
Definition:
tcp-westwood.h:129
ns3::TcpWestwood::EstimateBW
void EstimateBW(const Time &rtt, Ptr< TcpSocketState > tcb)
Estimate the network's bandwidth.
Definition:
tcp-westwood.cc:143
ns3::TcpWestwood::m_currentBW
TracedValue< double > m_currentBW
Current value of the estimated BW.
Definition:
tcp-westwood.h:128
ns3::TcpWestwood::m_IsCount
bool m_IsCount
Start keeping track of m_ackedSegments for Westwood+ if TRUE.
Definition:
tcp-westwood.h:136
ns3::TcpWestwood::m_minRtt
Time m_minRtt
Minimum RTT.
Definition:
tcp-westwood.h:131
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:58
ns3::TcpWestwood::WESTWOOD
Definition:
tcp-westwood.h:90
ns3::TracedValueCallback::Time
void(* Time)(Time oldValue, Time newValue)
TracedValue callback signature for Time.
Definition:
nstime.h:719
ns3::TcpWestwood
An implementation of a stream socket using TCP.
Definition:
tcp-westwood.h:68
ns3::TcpWestwood::m_pType
enum ProtocolType m_pType
0 for Westwood, 1 for Westwood+
Definition:
tcp-westwood.h:132
src
internet
model
tcp-westwood.h
Generated on Wed Jul 6 2016 17:11:29 for ns-3 by
1.8.6