Classifies packets by looking at their IP and TCP/UDP headers. More...
#include "ipv6-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 | |
| Ipv6FlowClassifier () | |
| bool | Classify (const Ipv6Header &ipHeader, Ptr< const Packet > ipPayload, uint32_t *out_flowId, uint32_t *out_packetId) | 
| try to classify the packet into flow-id and packet-id | |
| FiveTuple | FindFlow (FlowId flowId) const | 
| Searches for the FiveTuple corresponding to the given flowId. | |
| std::vector< std::pair< Ipv6Header::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 | |
| void | SerializeToXmlStream (std::ostream &os, uint16_t indent) const override | 
| Serializes the results to an std::ostream in XML format. | |
| Public Member Functions inherited from ns3::FlowClassifier | |
| FlowClassifier () | |
| FlowClassifier (const FlowClassifier &)=delete | |
| virtual | ~FlowClassifier () | 
| FlowClassifier & | operator= (const FlowClassifier &)=delete | 
| Public Member Functions inherited from ns3::SimpleRefCount< FlowClassifier > | |
| SimpleRefCount () | |
| Default constructor. | |
| uint32_t | GetReferenceCount () const | 
| Get the reference count of the object. | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) | 
| Assignment operator. | |
| void | Ref () const | 
| Increment the reference count. | |
| void | Unref () const | 
| Decrement the reference count. | |
| Private Attributes | |
| std::map< FlowId, std::map< Ipv6Header::DscpType, uint32_t > > | m_flowDscpMap | 
| Map FlowIds to (DSCP value, packet count) pairs. | |
| std::map< FiveTuple, FlowId > | m_flowMap | 
| Map to Flows Identifiers to FlowIds. | |
| std::map< FlowId, FlowPacketId > | m_flowPktIdMap | 
| Map to FlowIds to FlowPacketId. | |
| Additional Inherited Members | |
| Protected Member Functions inherited from ns3::FlowClassifier | |
| FlowId | GetNewFlowId () | 
| Returns a new, unique Flow Identifier. | |
| void | Indent (std::ostream &os, uint16_t level) const | 
| Add a number of spaces for indentation purposes. | |
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 29 of file ipv6-flow-classifier.h.
| ns3::Ipv6FlowClassifier::Ipv6FlowClassifier | ( | ) | 
Definition at line 84 of file ipv6-flow-classifier.cc.
| bool ns3::Ipv6FlowClassifier::Classify | ( | const Ipv6Header & | 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 89 of file ipv6-flow-classifier.cc.
References data, ns3::Ipv6FlowClassifier::FiveTuple::destinationAddress, ns3::Ipv6FlowClassifier::FiveTuple::destinationPort, ns3::Ipv6Header::GetDestination(), ns3::Ipv6Header::GetDscp(), ns3::FlowClassifier::GetNewFlowId(), ns3::Ipv6Header::GetNextHeader(), ns3::Ipv6Header::GetSource(), ns3::Ipv6Address::IsMulticast(), m_flowDscpMap, m_flowMap, m_flowPktIdMap, ns3::Ipv6FlowClassifier::FiveTuple::protocol, ns3::Ipv6FlowClassifier::FiveTuple::sourceAddress, ns3::Ipv6FlowClassifier::FiveTuple::sourcePort, ns3::TCP_PROT_NUMBER, and ns3::UDP_PROT_NUMBER.
| Ipv6FlowClassifier::FiveTuple ns3::Ipv6FlowClassifier::FindFlow | ( | FlowId | flowId | ) | const | 
Searches for the FiveTuple corresponding to the given flowId.
| flowId | the FlowId to search for | 
Definition at line 171 of file ipv6-flow-classifier.cc.
References ns3::Ipv6Address::GetZero(), m_flowMap, and NS_FATAL_ERROR.
| std::vector< std::pair< Ipv6Header::DscpType, uint32_t > > ns3::Ipv6FlowClassifier::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 193 of file ipv6-flow-classifier.cc.
References m_flowDscpMap, NS_FATAL_ERROR, and v.
| 
 | overridevirtual | 
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 209 of file ipv6-flow-classifier.cc.
References ns3::FlowClassifier::Indent(), m_flowDscpMap, and m_flowMap.
| 
 | private | 
Map FlowIds to (DSCP value, packet count) pairs.
Definition at line 91 of file ipv6-flow-classifier.h.
Referenced by Classify(), GetDscpCounts(), and SerializeToXmlStream().
Map to Flows Identifiers to FlowIds.
Definition at line 87 of file ipv6-flow-classifier.h.
Referenced by Classify(), FindFlow(), and SerializeToXmlStream().
| 
 | private | 
Map to FlowIds to FlowPacketId.
Definition at line 89 of file ipv6-flow-classifier.h.
Referenced by Classify().