OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FlowStatsManager Class Reference

#include <flow_stats_manager.h>

Collaboration diagram for FlowStatsManager:

Public Types

typedef boost::shared_ptr
< FlowStatsCollectorObject
FlowAgingTablePtr
 
typedef boost::shared_ptr
< SessionStatsCollectorObject
SessionStatsCollectorPtr
 
typedef std::map< const
FlowAgingTableKey,
FlowAgingTablePtr
FlowAgingTableMap
 
typedef std::pair< const
FlowAgingTableKey,
FlowAgingTablePtr
FlowAgingTableEntry
 

Public Member Functions

 FlowStatsManager (Agent *agent)
 
 ~FlowStatsManager ()
 
Agentagent ()
 
FlowStatsCollectorObjectdefault_flow_stats_collector_obj ()
 
SessionStatsCollectorObjectsession_stats_collector_obj ()
 
void Add (const FlowAgingTableKey &key, uint64_t flow_stats_interval, uint64_t flow_cache_timeout)
 
void Delete (const FlowAgingTableKey &key)
 
void Free (const FlowAgingTableKey &key)
 
void AddEvent (FlowEntryPtr &flow)
 
void DeleteEvent (const FlowEntryPtr &flow, const RevFlowDepParams &params)
 
void UpdateStatsEvent (const FlowEntryPtr &flow, uint32_t bytes, uint32_t packets, uint32_t oflow_bytes, const boost::uuids::uuid &u)
 
void Init (uint64_t flow_stats_interval, uint64_t flow_cache_timeout)
 
void InitDone ()
 
void Shutdown ()
 
FlowAgingTableMap::iterator begin ()
 
FlowAgingTableMap::iterator end ()
 
FlowStatsCollectorGetFlowStatsCollector (const FlowEntry *p) const
 
const FlowStatsCollectorObjectFind (uint32_t proto, uint32_t port) const
 
bool RequestHandler (boost::shared_ptr< FlowStatsCollectorReq > req)
 
void AddReqHandler (boost::shared_ptr< FlowStatsCollectorReq > req)
 
void DeleteReqHandler (boost::shared_ptr< FlowStatsCollectorReq > req)
 
void FreeReqHandler (boost::shared_ptr< FlowStatsCollectorReq > req)
 
FlowStatsCollectorObjectproto (int protocol)
 
uint32_t session_export_rate () const
 
uint32_t session_export_count () const
 
void set_session_export_count (uint32_t count)
 
uint32_t session_export_count_reset ()
 
uint32_t session_export_without_sampling_reset ()
 
uint32_t session_export_drops () const
 
uint64_t session_sample_exports () const
 
uint64_t session_msg_exports () const
 
uint64_t session_exports () const
 
uint64_t session_export_disable_drops () const
 
uint32_t session_export_sampling_drops () const
 
uint64_t session_global_slo_logging_drops () const
 
uint64_t session_slo_logging_drops () const
 
void set_sessions_sampled_atleast_once ()
 
uint64_t threshold () const
 
bool delete_short_flow () const
 
void set_delete_short_flow (bool val)
 
void FreeIndex (uint32_t idx)
 
uint32_t AllocateIndex ()
 
void UpdateSessionSampleExportStats (uint32_t count)
 
void UpdateSessionMsgExportStats (uint32_t count)
 
void UpdateSessionExportStats (uint32_t count, bool first_export, bool sampled)
 
void SetProfileData (ProfileData *data)
 
void RegisterDBClients ()
 

Static Public Member Functions

static void FlowStatsReqHandler (Agent *agent, uint32_t proto, uint32_t port, uint64_t protocol)
 

Static Public Attributes

static const uint8_t kCatchAllProto = 0x0
 
static const uint64_t FlowThresoldUpdateTime = 1000 * 2
 
static const uint32_t kDefaultFlowSamplingThreshold = 500
 
static const uint32_t kMinFlowSamplingThreshold = 20
 

Private Member Functions

bool UpdateSessionThreshold (void)
 
void UpdateThreshold (uint64_t new_value, bool check_oflow)
 
FlowStatsCollectorObjectGetFlowStatsCollectorObject (const FlowEntry *flow) const
 

Private Attributes

Agentagent_
 
WorkQueue< boost::shared_ptr
< FlowStatsCollectorReq > > 
request_queue_
 
FlowAgingTableMap flow_aging_table_map_
 
FlowAgingTablePtr default_flow_stats_collector_obj_
 
SessionStatsCollectorPtr session_stats_collector_obj_
 
uint64_t prev_flow_export_rate_compute_time_
 
uint64_t threshold_
 
uint32_t prev_cfg_flow_export_rate_
 
uint32_t session_export_rate_
 
tbb::atomic< uint32_t > session_export_count_
 
tbb::atomic< uint64_t > session_sample_exports_
 
tbb::atomic< uint64_t > session_msg_exports_
 
tbb::atomic< uint64_t > session_exports_
 
tbb::atomic< uint64_t > session_export_disable_drops_
 
tbb::atomic< uint64_t > session_export_sampling_drops_
 
tbb::atomic< uint32_t > session_export_without_sampling_
 
tbb::atomic< uint64_t > session_export_drops_
 
tbb::atomic< bool > sessions_sampled_atleast_once_
 
tbb::atomic< uint64_t > session_global_slo_logging_drops_
 
tbb::atomic< uint64_t > session_slo_logging_drops_
 
Timertimer_
 
bool delete_short_flow_
 
FlowStatsCollectorObjectprotocol_list_ [256]
 
IndexVector< FlowStatsCollector * > instance_table_
 

Friends

class AgentUtXmlFlowThreshold
 
class AgentUtXmlFlowThresholdValidate
 
struct FlowStatsCollectorReq
 
class FlowStatsCollector
 
class SessionStatsCollector
 

Detailed Description

Definition at line 70 of file flow_stats_manager.h.

Member Typedef Documentation

Definition at line 77 of file flow_stats_manager.h.

Constructor & Destructor Documentation

FlowStatsManager::FlowStatsManager ( Agent agent)

Definition at line 79 of file flow_stats_manager.cc.

Here is the call graph for this function:

FlowStatsManager::~FlowStatsManager ( )

Definition at line 116 of file flow_stats_manager.cc.

Member Function Documentation

void FlowStatsManager::Add ( const FlowAgingTableKey key,
uint64_t  flow_stats_interval,
uint64_t  flow_cache_timeout 
)

Definition at line 202 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::AddEvent ( FlowEntryPtr flow)

Definition at line 290 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::AddReqHandler ( boost::shared_ptr< FlowStatsCollectorReq req)

Definition at line 146 of file flow_stats_manager.cc.

Here is the call graph for this function:

Agent* FlowStatsManager::agent ( )
inline

Definition at line 88 of file flow_stats_manager.h.

uint32_t FlowStatsManager::AllocateIndex ( )

Definition at line 355 of file flow_stats_manager.cc.

Here is the call graph for this function:

FlowAgingTableMap::iterator FlowStatsManager::begin ( )
inline

Definition at line 114 of file flow_stats_manager.h.

FlowStatsCollectorObject* FlowStatsManager::default_flow_stats_collector_obj ( )
inline

Definition at line 89 of file flow_stats_manager.h.

void FlowStatsManager::Delete ( const FlowAgingTableKey key)

Definition at line 212 of file flow_stats_manager.cc.

Here is the call graph for this function:

bool FlowStatsManager::delete_short_flow ( ) const
inline

Definition at line 176 of file flow_stats_manager.h.

void FlowStatsManager::DeleteEvent ( const FlowEntryPtr flow,
const RevFlowDepParams params 
)

Definition at line 312 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::DeleteReqHandler ( boost::shared_ptr< FlowStatsCollectorReq req)

Definition at line 169 of file flow_stats_manager.cc.

FlowAgingTableMap::iterator FlowStatsManager::end ( )
inline

Definition at line 118 of file flow_stats_manager.h.

const FlowStatsCollectorObject * FlowStatsManager::Find ( uint32_t  proto,
uint32_t  port 
) const

Definition at line 232 of file flow_stats_manager.cc.

void FlowStatsManager::FlowStatsReqHandler ( Agent agent,
uint32_t  proto,
uint32_t  port,
uint64_t  protocol 
)
static

Definition at line 363 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::Free ( const FlowAgingTableKey key)

Definition at line 223 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::FreeIndex ( uint32_t  idx)

Definition at line 359 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::FreeReqHandler ( boost::shared_ptr< FlowStatsCollectorReq req)

Definition at line 185 of file flow_stats_manager.cc.

FlowStatsCollector * FlowStatsManager::GetFlowStatsCollector ( const FlowEntry p) const

Definition at line 277 of file flow_stats_manager.cc.

Here is the call graph for this function:

FlowStatsCollectorObject * FlowStatsManager::GetFlowStatsCollectorObject ( const FlowEntry flow) const
private

Definition at line 245 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::Init ( uint64_t  flow_stats_interval,
uint64_t  flow_cache_timeout 
)

Definition at line 381 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::InitDone ( )

Definition at line 399 of file flow_stats_manager.cc.

Here is the call graph for this function:

FlowStatsCollectorObject* FlowStatsManager::proto ( int  protocol)
inline

Definition at line 130 of file flow_stats_manager.h.

void FlowStatsManager::RegisterDBClients ( )

Definition at line 375 of file flow_stats_manager.cc.

bool FlowStatsManager::RequestHandler ( boost::shared_ptr< FlowStatsCollectorReq req)

Definition at line 120 of file flow_stats_manager.cc.

Here is the call graph for this function:

uint32_t FlowStatsManager::session_export_count ( ) const
inline

Definition at line 137 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_count_reset ( )
inline

Definition at line 145 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_export_disable_drops ( ) const
inline

Definition at line 159 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_drops ( ) const
inline

Definition at line 153 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_rate ( ) const
inline

Definition at line 133 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_sampling_drops ( ) const
inline

Definition at line 162 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_without_sampling_reset ( )
inline

Definition at line 149 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_exports ( ) const
inline

Definition at line 157 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_global_slo_logging_drops ( ) const
inline

Definition at line 165 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_msg_exports ( ) const
inline

Definition at line 156 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_sample_exports ( ) const
inline

Definition at line 155 of file flow_stats_manager.h.

uint64_t FlowStatsManager::session_slo_logging_drops ( ) const
inline

Definition at line 168 of file flow_stats_manager.h.

SessionStatsCollectorObject* FlowStatsManager::session_stats_collector_obj ( )
inline

Definition at line 92 of file flow_stats_manager.h.

void FlowStatsManager::set_delete_short_flow ( bool  val)
inline

Definition at line 180 of file flow_stats_manager.h.

void FlowStatsManager::set_session_export_count ( uint32_t  count)
inline

Definition at line 141 of file flow_stats_manager.h.

void FlowStatsManager::set_sessions_sampled_atleast_once ( )
inline

Definition at line 171 of file flow_stats_manager.h.

void FlowStatsManager::SetProfileData ( ProfileData data)

Definition at line 476 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::Shutdown ( void  )

Definition at line 405 of file flow_stats_manager.cc.

Here is the call graph for this function:

uint64_t FlowStatsManager::threshold ( ) const
inline

Definition at line 175 of file flow_stats_manager.h.

void FlowStatsManager::UpdateSessionExportStats ( uint32_t  count,
bool  first_export,
bool  sampled 
)

Definition at line 501 of file flow_stats_manager.cc.

void FlowStatsManager::UpdateSessionMsgExportStats ( uint32_t  count)

Definition at line 497 of file flow_stats_manager.cc.

void FlowStatsManager::UpdateSessionSampleExportStats ( uint32_t  count)

Definition at line 493 of file flow_stats_manager.cc.

bool FlowStatsManager::UpdateSessionThreshold ( void  )
private

Definition at line 110 of file session_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsManager::UpdateStatsEvent ( const FlowEntryPtr flow,
uint32_t  bytes,
uint32_t  packets,
uint32_t  oflow_bytes,
const boost::uuids::uuid u 
)

Definition at line 331 of file flow_stats_manager.cc.

Here is the call graph for this function:

void FlowStatsManager::UpdateThreshold ( uint64_t  new_value,
bool  check_oflow 
)
private

Definition at line 38 of file flow_stats_manager.cc.

Friends And Related Function Documentation

friend class AgentUtXmlFlowThreshold
friend

Definition at line 195 of file flow_stats_manager.h.

friend class AgentUtXmlFlowThresholdValidate
friend

Definition at line 196 of file flow_stats_manager.h.

friend class FlowStatsCollector
friend

Definition at line 199 of file flow_stats_manager.h.

friend struct FlowStatsCollectorReq
friend

Definition at line 198 of file flow_stats_manager.h.

friend class SessionStatsCollector
friend

Definition at line 200 of file flow_stats_manager.h.

Member Data Documentation

Agent* FlowStatsManager::agent_
private

Definition at line 205 of file flow_stats_manager.h.

FlowAgingTablePtr FlowStatsManager::default_flow_stats_collector_obj_
private

Definition at line 208 of file flow_stats_manager.h.

bool FlowStatsManager::delete_short_flow_
private

Definition at line 226 of file flow_stats_manager.h.

FlowAgingTableMap FlowStatsManager::flow_aging_table_map_
private

Definition at line 207 of file flow_stats_manager.h.

const uint64_t FlowStatsManager::FlowThresoldUpdateTime = 1000 * 2
static

Definition at line 73 of file flow_stats_manager.h.

IndexVector<FlowStatsCollector *> FlowStatsManager::instance_table_
private

Definition at line 229 of file flow_stats_manager.h.

const uint8_t FlowStatsManager::kCatchAllProto = 0x0
static

Definition at line 72 of file flow_stats_manager.h.

const uint32_t FlowStatsManager::kDefaultFlowSamplingThreshold = 500
static

Definition at line 74 of file flow_stats_manager.h.

const uint32_t FlowStatsManager::kMinFlowSamplingThreshold = 20
static

Definition at line 75 of file flow_stats_manager.h.

uint32_t FlowStatsManager::prev_cfg_flow_export_rate_
private

Definition at line 212 of file flow_stats_manager.h.

uint64_t FlowStatsManager::prev_flow_export_rate_compute_time_
private

Definition at line 210 of file flow_stats_manager.h.

FlowStatsCollectorObject* FlowStatsManager::protocol_list_[256]
private

Definition at line 228 of file flow_stats_manager.h.

WorkQueue<boost::shared_ptr<FlowStatsCollectorReq> > FlowStatsManager::request_queue_
private

Definition at line 206 of file flow_stats_manager.h.

tbb::atomic<uint32_t> FlowStatsManager::session_export_count_
private

Definition at line 214 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_export_disable_drops_
private

Definition at line 218 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_export_drops_
private

Definition at line 221 of file flow_stats_manager.h.

uint32_t FlowStatsManager::session_export_rate_
private

Definition at line 213 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_export_sampling_drops_
private

Definition at line 219 of file flow_stats_manager.h.

tbb::atomic<uint32_t> FlowStatsManager::session_export_without_sampling_
private

Definition at line 220 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_exports_
private

Definition at line 217 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_global_slo_logging_drops_
private

Definition at line 223 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_msg_exports_
private

Definition at line 216 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_sample_exports_
private

Definition at line 215 of file flow_stats_manager.h.

tbb::atomic<uint64_t> FlowStatsManager::session_slo_logging_drops_
private

Definition at line 224 of file flow_stats_manager.h.

SessionStatsCollectorPtr FlowStatsManager::session_stats_collector_obj_
private

Definition at line 209 of file flow_stats_manager.h.

tbb::atomic<bool> FlowStatsManager::sessions_sampled_atleast_once_
private

Definition at line 222 of file flow_stats_manager.h.

uint64_t FlowStatsManager::threshold_
private

Definition at line 211 of file flow_stats_manager.h.

Timer* FlowStatsManager::timer_
private

Definition at line 225 of file flow_stats_manager.h.


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