Determine which bursts of packets are errored corresponding to an underlying distribution, burst rate, and burst size. More...
#include <error-model.h>
Public Member Functions | |
BurstErrorModel () | |
virtual | ~BurstErrorModel () |
int64_t | AssignStreams (int64_t stream) |
double | GetBurstRate (void) const |
void | SetBurstRate (double rate) |
void | SetRandomBurstSize (Ptr< RandomVariableStream >) |
void | SetRandomVariable (Ptr< RandomVariableStream >) |
![]() | |
ErrorModel () | |
virtual | ~ErrorModel () |
void | Disable (void) |
void | Enable (void) |
bool | IsCorrupt (Ptr< Packet > pkt) |
bool | IsEnabled (void) const |
void | Reset (void) |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static void | Cleanup (void) |
![]() | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
virtual bool | DoCorrupt (Ptr< Packet > p) |
virtual void | DoReset (void) |
Private Attributes | |
double | m_burstRate |
Ptr< RandomVariableStream > | m_burstSize |
Ptr< RandomVariableStream > | m_burstStart |
uint32_t | m_counter |
uint32_t | m_currentBurstSz |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
virtual void | DoDispose (void) |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Determine which bursts of packets are errored corresponding to an underlying distribution, burst rate, and burst size.
This object is used to flag packets as being lost/errored or not. The two parameters that govern the behavior are the burst rate (or equivalently, the mean duration/spacing between between error events), and the burst size (or equivalently, the number of packets being flagged as errored at each error event).
Users can optionally provide RandomVariableStream objects; the default for the decision variable is to use a Uniform(0,1) distribution; the default for the burst size (number of packets) is to use a discrete Uniform[1,4] distribution.
For every packet, the model generates a random number based on the decision variable, and compares it with the burst error rate to determine if a burst error event should occur. If a new error event occurs, the model to will generate a new burst size to determine how many packets should be dropped in this particular burst error event in addition to the current packet.
When a second packet arrives, the model again determines if a new error event should occur based on a newly generated decision variable and the burst error rate. If a new error event is determined to occur, the model will restart with a new burst size. Otherwise, the model will resume the last error event and drop the packet provided that the total number of packets that has been dropped does not exceed the burst size.
IsCorrupt() will not modify the packet data buffer
ns3::BurstErrorModel is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 267 of file error-model.h.
ns3::BurstErrorModel::BurstErrorModel | ( | ) |
Definition at line 311 of file error-model.cc.
|
virtual |
Definition at line 316 of file error-model.cc.
References NS_LOG_FUNCTION.
int64_t ns3::BurstErrorModel::AssignStreams | ( | int64_t | stream | ) |
Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.
stream | first stream index to use |
Definition at line 350 of file error-model.cc.
References m_burstSize, m_burstStart, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
Referenced by BurstErrorModelSimple::DoRun().
Implements ns3::ErrorModel.
Definition at line 359 of file error-model.cc.
References ns3::RandomVariableStream::GetInteger(), ns3::RandomVariableStream::GetValue(), ns3::ErrorModel::IsEnabled(), m_burstRate, m_burstSize, m_burstStart, m_counter, m_currentBurstSz, NS_LOG_DEBUG, NS_LOG_FUNCTION, and NS_LOG_WARN.
|
privatevirtual |
Implements ns3::ErrorModel.
Definition at line 402 of file error-model.cc.
References m_counter, m_currentBurstSz, and NS_LOG_FUNCTION.
double ns3::BurstErrorModel::GetBurstRate | ( | void | ) | const |
Definition at line 322 of file error-model.cc.
References m_burstRate, and NS_LOG_FUNCTION.
|
static |
Definition at line 289 of file error-model.cc.
References m_burstRate, m_burstSize, m_burstStart, and ns3::TypeId::SetParent().
void ns3::BurstErrorModel::SetBurstRate | ( | double | rate | ) |
burstRate | the error rate to be used by the model |
Definition at line 329 of file error-model.cc.
References m_burstRate, and NS_LOG_FUNCTION.
void ns3::BurstErrorModel::SetRandomBurstSize | ( | Ptr< RandomVariableStream > | burstSz | ) |
burstSize | A random variable distribution to generate random burst size |
Definition at line 343 of file error-model.cc.
References m_burstSize, and NS_LOG_FUNCTION.
void ns3::BurstErrorModel::SetRandomVariable | ( | Ptr< RandomVariableStream > | ranVar | ) |
ranVariable | A random variable distribution to generate random variates |
Definition at line 336 of file error-model.cc.
References m_burstStart, and NS_LOG_FUNCTION.
Referenced by BurstErrorModelSimple::DoRun().
|
private |
Definition at line 308 of file error-model.h.
Referenced by DoCorrupt(), GetBurstRate(), GetTypeId(), and SetBurstRate().
|
private |
Definition at line 312 of file error-model.h.
Referenced by AssignStreams(), DoCorrupt(), GetTypeId(), and SetRandomBurstSize().
|
private |
Definition at line 310 of file error-model.h.
Referenced by AssignStreams(), DoCorrupt(), GetTypeId(), and SetRandomVariable().
|
private |
Definition at line 314 of file error-model.h.
Referenced by DoCorrupt(), and DoReset().
|
private |
Definition at line 317 of file error-model.h.
Referenced by DoCorrupt(), and DoReset().