A Discrete-Event Network Simulator
API
Public Member Functions | Protected Attributes | List of all members
ns3::EpcTftClassifier Class Reference

classifies IP packets according to Traffic Flow Templates (TFTs) More...

#include "epc-tft-classifier.h"

+ Inheritance diagram for ns3::EpcTftClassifier:

Public Member Functions

 EpcTftClassifier ()
 
void Add (Ptr< EpcTft > tft, uint32_t id)
 add a TFT to the Classifier More...
 
uint32_t Classify (Ptr< Packet > p, EpcTft::Direction direction)
 classify an IP packet More...
 
void Delete (uint32_t id)
 delete an existing TFT from the classifier More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< EpcTftClassifier >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Protected Attributes

std::map< std::tuple< uint32_t, uint32_t, uint8_t, uint16_t >, std::pair< uint32_t, uint32_t > > m_classifiedIpv4Fragments
 Map with already classified IPv4 Fragments An entry is added when the port info is available, i.e. More...
 
std::map< uint32_t, Ptr< EpcTft > > m_tftMap
 TFT map. More...
 

Detailed Description

classifies IP packets according to Traffic Flow Templates (TFTs)

Note
this implementation works with IPv4 and IPv6. When there is fragmentation of IP packets, UDP/TCP ports maybe missing.

The following actions are performed to use the port info present in the first segment with the next fragments:

When we cannot cache the port info, the TFT of the default bearer is used. This may happen if there is reordering or losses of IP packets.

Definition at line 54 of file epc-tft-classifier.h.

Constructor & Destructor Documentation

◆ EpcTftClassifier()

ns3::EpcTftClassifier::EpcTftClassifier ( )

Definition at line 43 of file epc-tft-classifier.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ Add()

void ns3::EpcTftClassifier::Add ( Ptr< EpcTft tft,
uint32_t  id 
)

add a TFT to the Classifier

Parameters
tftthe TFT to be added
idthe ID of the bearer which will be classified by specified TFT classifier

Definition at line 49 of file epc-tft-classifier.cc.

References m_tftMap, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::EpcUeNas::DoActivateEpsBearer(), and EpcTftClassifierTestSuite::EpcTftClassifierTestSuite().

◆ Classify()

uint32_t ns3::EpcTftClassifier::Classify ( Ptr< Packet p,
EpcTft::Direction  direction 
)

◆ Delete()

void ns3::EpcTftClassifier::Delete ( uint32_t  id)

delete an existing TFT from the classifier

Parameters
idthe identifier of the TFT to be deleted

Definition at line 59 of file epc-tft-classifier.cc.

References m_tftMap, and NS_LOG_FUNCTION.

Member Data Documentation

◆ m_classifiedIpv4Fragments

std::map< std::tuple<uint32_t, uint32_t, uint8_t, uint16_t>, std::pair<uint32_t, uint32_t> > ns3::EpcTftClassifier::m_classifiedIpv4Fragments
protected

Map with already classified IPv4 Fragments An entry is added when the port info is available, i.e.

first fragment, UDP/TCP protocols and enough payload data An entry is used if port info is not available, i.e. not first fragment or not enough payload data for TCP/UDP An entry is removed when the last fragment is classified Note: If last fragment is lost, entry is not removed

Definition at line 93 of file epc-tft-classifier.h.

Referenced by Classify().

◆ m_tftMap

std::map<uint32_t, Ptr<EpcTft> > ns3::EpcTftClassifier::m_tftMap
protected

TFT map.

Definition at line 89 of file epc-tft-classifier.h.

Referenced by Add(), Classify(), and Delete().


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