Classifies packets by looking at their IP and TCP/UDP headers. More...
#include "ipv4-flow-classifier.h"
Classes | |
struct | FiveTuple |
Structure to classify a packet. More... | |
class | SortByCount |
Comparator used to sort the vector of DSCP values. More... | |
Public Member Functions | |
Ipv4FlowClassifier () | |
bool | Classify (const Ipv4Header &ipHeader, Ptr< const Packet > ipPayload, uint32_t *out_flowId, uint32_t *out_packetId) |
try to classify the packet into flow-id and packet-id More... | |
FiveTuple | FindFlow (FlowId flowId) const |
Searches for the FiveTuple corresponding to the given flowId. More... | |
std::vector< std::pair< Ipv4Header::DscpType, uint32_t > > | GetDscpCounts (FlowId flowId) const |
get the DSCP values of the packets belonging to the flow with the given FlowId, sorted in decreasing order of number of packets seen with that DSCP value More... | |
virtual void | SerializeToXmlStream (std::ostream &os, uint16_t indent) const |
Serializes the results to an std::ostream in XML format. More... | |
Public Member Functions inherited from ns3::FlowClassifier | |
FlowClassifier () | |
FlowClassifier (FlowClassifier const &)=delete | |
virtual | ~FlowClassifier () |
FlowClassifier & | operator= (FlowClassifier const &)=delete |
Public Member Functions inherited from ns3::SimpleRefCount< FlowClassifier > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= ([[maybe_unused]] const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
Private Attributes | |
std::map< FlowId, std::map< Ipv4Header::DscpType, uint32_t > > | m_flowDscpMap |
Map FlowIds to (DSCP value, packet count) pairs. More... | |
std::map< FiveTuple, FlowId > | m_flowMap |
Map to Flows Identifiers to FlowIds. More... | |
std::map< FlowId, FlowPacketId > | m_flowPktIdMap |
Map to FlowIds to FlowPacketId. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::FlowClassifier | |
FlowId | GetNewFlowId () |
Returns a new, unique Flow Identifier. More... | |
void | Indent (std::ostream &os, uint16_t level) const |
Add a number of spaces for indentation purposes. More... | |
Classifies packets by looking at their IP and TCP/UDP headers.
From these packet headers, a tuple (source-ip, destination-ip, protocol, source-port, destination-port) is created, and a unique flow identifier is assigned for each different tuple combination
Definition at line 38 of file ipv4-flow-classifier.h.
ns3::Ipv4FlowClassifier::Ipv4FlowClassifier | ( | ) |
Definition at line 99 of file ipv4-flow-classifier.cc.
bool ns3::Ipv4FlowClassifier::Classify | ( | const Ipv4Header & | ipHeader, |
Ptr< const Packet > | ipPayload, | ||
uint32_t * | out_flowId, | ||
uint32_t * | out_packetId | ||
) |
try to classify the packet into flow-id and packet-id
ipHeader | packet's IP header |
ipPayload | packet's IP payload |
out_flowId | packet's FlowId |
out_packetId | packet's identifier |
Definition at line 104 of file ipv4-flow-classifier.cc.
References ns3::Packet::CopyData(), data, ns3::Ipv4FlowClassifier::FiveTuple::destinationAddress, ns3::Ipv4FlowClassifier::FiveTuple::destinationPort, ns3::Ipv4Header::GetDestination(), ns3::Ipv4Header::GetDscp(), ns3::Ipv4Header::GetFragmentOffset(), ns3::FlowClassifier::GetNewFlowId(), ns3::Ipv4Header::GetProtocol(), ns3::Packet::GetSize(), ns3::Ipv4Header::GetSource(), m_flowDscpMap, m_flowMap, m_flowPktIdMap, ns3::Ipv4FlowClassifier::FiveTuple::protocol, ns3::Ipv4FlowClassifier::FiveTuple::sourceAddress, ns3::Ipv4FlowClassifier::FiveTuple::sourcePort, ns3::TCP_PROT_NUMBER, and ns3::UDP_PROT_NUMBER.
Ipv4FlowClassifier::FiveTuple ns3::Ipv4FlowClassifier::FindFlow | ( | FlowId | flowId | ) | const |
Searches for the FiveTuple corresponding to the given flowId.
flowId | the FlowId to search for |
Definition at line 186 of file ipv4-flow-classifier.cc.
References ns3::Ipv4Address::GetZero(), m_flowMap, and NS_FATAL_ERROR.
std::vector< std::pair< Ipv4Header::DscpType, uint32_t > > ns3::Ipv4FlowClassifier::GetDscpCounts | ( | FlowId | flowId | ) | const |
get the DSCP values of the packets belonging to the flow with the given FlowId, sorted in decreasing order of number of packets seen with that DSCP value
flowId | the identifier of the flow of interest |
Definition at line 209 of file ipv4-flow-classifier.cc.
References m_flowDscpMap, and NS_FATAL_ERROR.
|
virtual |
Serializes the results to an std::ostream in XML format.
os | the output stream |
indent | number of spaces to use as base indentation level |
Implements ns3::FlowClassifier.
Definition at line 225 of file ipv4-flow-classifier.cc.
References check-style::indent(), ns3::FlowClassifier::Indent(), m_flowDscpMap, and m_flowMap.
|
private |
Map FlowIds to (DSCP value, packet count) pairs.
Definition at line 100 of file ipv4-flow-classifier.h.
Referenced by Classify(), GetDscpCounts(), and SerializeToXmlStream().
Map to Flows Identifiers to FlowIds.
Definition at line 96 of file ipv4-flow-classifier.h.
Referenced by Classify(), FindFlow(), and SerializeToXmlStream().
|
private |
Map to FlowIds to FlowPacketId.
Definition at line 98 of file ipv4-flow-classifier.h.
Referenced by Classify().