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

#include <flow_stats_collector.h>

Inheritance diagram for FlowStatsCollector:
Collaboration diagram for FlowStatsCollector:

Classes

class  AgeingTask
 

Public Types

typedef std::map< const
FlowEntry *, FlowExportInfo
FlowEntryTree
 
typedef WorkQueue
< boost::shared_ptr
< FlowExportReq > > 
Queue
 
- Public Types inherited from StatsCollector
enum  StatsInstance { FlowStatsCollector, AgentStatsCollector }
 

Public Member Functions

 FlowStatsCollector (boost::asio::io_context &io, int intvl, uint32_t flow_cache_timeout, AgentUveBase *uve, uint32_t instance_id, FlowAgingTableKey *key, FlowStatsManager *aging_module, FlowStatsCollectorObject *obj)
 
virtual ~FlowStatsCollector ()
 
uint64_t flow_age_time_intvl ()
 
void set_flow_age_time_intvl (uint64_t interval)
 
uint32_t flow_age_time_intvl_in_secs () const
 
uint64_t flow_tcp_syn_age_time () const
 
void set_flow_tcp_syn_age_time (uint64_t interval)
 
boost::uuids::uuid rand_gen ()
 
bool Run ()
 
bool RunAgeingTask ()
 
uint32_t ProcessFlow (FlowExportInfoList::iterator &it, KSyncFlowMemory *ksync_obj, FlowExportInfo *info, uint64_t curr_time)
 
bool AgeFlow (KSyncFlowMemory *ksync_obj, const vr_flow_entry *k_flow, const vr_flow_stats &k_stats, const KFlowData &kinfo, FlowExportInfo *info, uint64_t curr_time)
 
bool EvictFlow (KSyncFlowMemory *ksync_obj, const vr_flow_entry *k_flow, uint16_t k_flow_flags, uint32_t flow_handle, uint16_t gen_id, FlowExportInfo *info, uint64_t curr_time)
 
uint32_t RunAgeing (uint32_t max_count)
 
void UpdateFlowAgeTime (uint64_t usecs)
 
void UpdateFlowAgeTimeInSecs (uint32_t secs)
 
void UpdateFloatingIpStats (const FlowExportInfo *flow, uint64_t bytes, uint64_t pkts)
 
void UpdateStatsEvent (const FlowEntryPtr &flow, uint32_t bytes, uint32_t packets, uint32_t oflow_bytes, const boost::uuids::uuid &u)
 
void Shutdown ()
 
void AddEvent (const FlowEntryPtr &flow)
 
void DeleteEvent (const FlowEntryPtr &flow, const RevFlowDepParams &params)
 
bool FindFlowExportInfo (const FlowEntry *fe, FlowEntryTree::iterator &it)
 
FlowExportInfoFindFlowExportInfo (const FlowEntry *fe)
 
const FlowExportInfoFindFlowExportInfo (const FlowEntry *fe) const
 
size_t Size () const
 
size_t AgeTreeSize () const
 
void NewFlow (FlowEntry *flow)
 
void set_deleted (bool val)
 
bool deleted () const
 
const FlowAgingTableKeyflow_aging_key () const
 
int task_id () const
 
uint32_t instance_id () const
 
const Queuequeue () const
 
- Public Member Functions inherited from StatsCollector
 StatsCollector (int task_id, int32_t instance, boost::asio::io_service &io, int exp, std::string timer_name)
 
virtual ~StatsCollector ()
 
void InitDone ()
 
void Shutdown ()
 
void TestStartStopTimer (bool stop)
 
int expiry_time () const
 
void set_expiry_time (int time)
 
void RescheduleTimer (int time)
 

Static Public Member Functions

static uint64_t GetFlowStats (const uint16_t &oflow_data, const uint32_t &data)
 

Static Public Attributes

static const uint64_t FlowAgeTime = 1000000 * 180
 
static const uint64_t FlowTcpSynAgeTime = 1000000 * 180
 
static const uint32_t kFlowScanTime = 25
 
static const uint32_t kFlowStatsTimerInterval = 100
 
static const uint32_t kMinFlowsPerTimer = 3000
 
static const uint32_t kFlowsPerTask = 256
 
static const uint64_t kFlowDeleteRetryTime = (5 * 1000 * 1000)
 
static const uint32_t kDefaultFlowSamplingThreshold = 500
 
static const uint8_t kMaxFlowMsgsPerSend = 16
 

Private Member Functions

uint32_t TimersPerScan ()
 
void UpdateEntriesToVisit ()
 
void EvictedFlowStatsUpdate (const FlowEntryPtr &flow, uint32_t bytes, uint32_t packets, uint32_t oflow_bytes, const boost::uuids::uuid &u)
 
void UpdateFlowStats (FlowExportInfo *info, uint64_t teardown_time)
 
void UpdateFlowStatsInternalLocked (FlowExportInfo *info, uint32_t bytes, uint16_t oflow_bytes, uint32_t pkts, uint16_t oflow_pkts, uint64_t time, bool teardown_time)
 
void UpdateFlowStatsInternal (FlowExportInfo *info, uint32_t bytes, uint16_t oflow_bytes, uint32_t pkts, uint16_t oflow_pkts, uint64_t time, bool teardown_time)
 
void FlowDeleteEnqueue (FlowExportInfo *info, uint64_t t)
 
void FlowEvictEnqueue (FlowExportInfo *info, uint64_t t, uint32_t flow_handle, uint16_t gen_id)
 
void UpdateThreshold (uint32_t new_value)
 
void UpdateInterVnStats (FlowExportInfo *info, uint64_t bytes, uint64_t pkts)
 
void UpdateVmiTagBasedStats (FlowExportInfo *info, uint64_t bytes, uint64_t pkts)
 
bool ShouldBeAged (FlowExportInfo *info, const vr_flow_entry *k_flow, const vr_flow_stats &k_stats, uint64_t curr_time)
 
uint64_t GetUpdatedFlowPackets (const FlowExportInfo *stats, uint64_t k_flow_pkts)
 
uint64_t GetUpdatedFlowBytes (const FlowExportInfo *stats, uint64_t k_flow_bytes)
 
InterfaceUveTable::FloatingIpReverseFlowFipEntry (const FlowExportInfo *flow)
 
uint32_t ReverseFlowFip (const FlowExportInfo *info)
 
VmInterfaceKey ReverseFlowFipVmi (const FlowExportInfo *info)
 
bool RequestHandler (boost::shared_ptr< FlowExportReq > req)
 
bool RequestHandlerEntry ()
 
void RequestHandlerExit (bool done)
 
void AddFlow (FlowExportInfo info)
 
void DeleteFlow (FlowEntryTree::iterator &it)
 
void UpdateFlowIterationKey (const FlowEntry *del_flow, FlowEntryTree::iterator &tree_it)
 
void HandleFlowStatsUpdate (const FlowKey &key, uint32_t bytes, uint32_t packets, uint32_t oflow_bytes)
 
 DISALLOW_COPY_AND_ASSIGN (FlowStatsCollector)
 

Static Private Member Functions

static uint64_t GetCurrentTime ()
 

Private Attributes

AgentUveBaseagent_uve_
 
int task_id_
 
boost::uuids::random_generator rand_gen_
 
const FlowEntryflow_iteration_key_
 
uint64_t flow_age_time_intvl_
 
uint32_t entries_to_visit_
 
uint64_t flow_tcp_syn_age_time_
 
FlowEntryTree flow_tree_
 
FlowExportInfoList flow_export_info_list_
 
bool retry_delete_
 
Queue request_queue_
 
tbb::atomic< bool > deleted_
 
FlowAgingTableKey flow_aging_key_
 
uint32_t instance_id_
 
FlowStatsManagerflow_stats_manager_
 
FlowStatsCollectorObjectparent_
 
AgeingTaskageing_task_
 
uint32_t timers_per_scan_
 
uint64_t current_time_
 
uint64_t ageing_task_starts_
 
uint32_t flows_visited_
 
uint32_t flows_aged_
 
uint32_t flows_evicted_
 

Friends

class AgentUtXmlFlowThreshold
 
class AgentUtXmlFlowThresholdValidate
 
class FlowStatsRecordsReq
 
class FetchFlowStatsRecord
 
class FlowStatsManager
 
class FlowStatsCollectorObject
 

Additional Inherited Members

- Public Attributes inherited from StatsCollector
int run_counter_
 

Detailed Description

Definition at line 60 of file flow_stats_collector.h.

Member Typedef Documentation

Definition at line 83 of file flow_stats_collector.h.

typedef WorkQueue<boost::shared_ptr<FlowExportReq> > FlowStatsCollector::Queue

Definition at line 84 of file flow_stats_collector.h.

Constructor & Destructor Documentation

FlowStatsCollector::FlowStatsCollector ( boost::asio::io_context &  io,
int  intvl,
uint32_t  flow_cache_timeout,
AgentUveBase uve,
uint32_t  instance_id,
FlowAgingTableKey key,
FlowStatsManager aging_module,
FlowStatsCollectorObject obj 
)

Definition at line 40 of file flow_stats_collector.cc.

Here is the call graph for this function:

FlowStatsCollector::~FlowStatsCollector ( )
virtual

Definition at line 86 of file flow_stats_collector.cc.

Here is the call graph for this function:

Member Function Documentation

void FlowStatsCollector::AddEvent ( const FlowEntryPtr flow)

Definition at line 816 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::AddFlow ( FlowExportInfo  info)
private

Definition at line 970 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::AgeFlow ( KSyncFlowMemory ksync_obj,
const vr_flow_entry *  k_flow,
const vr_flow_stats &  k_stats,
const KFlowData kinfo,
FlowExportInfo info,
uint64_t  curr_time 
)

Definition at line 554 of file flow_stats_collector.cc.

Here is the call graph for this function:

size_t FlowStatsCollector::AgeTreeSize ( ) const
inline

Definition at line 153 of file flow_stats_collector.h.

bool FlowStatsCollector::deleted ( ) const
inline

Definition at line 158 of file flow_stats_collector.h.

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

Definition at line 823 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::DeleteFlow ( FlowEntryTree::iterator &  it)
private

Definition at line 1039 of file flow_stats_collector.cc.

Here is the call graph for this function:

FlowStatsCollector::DISALLOW_COPY_AND_ASSIGN ( FlowStatsCollector  )
private
void FlowStatsCollector::EvictedFlowStatsUpdate ( const FlowEntryPtr flow,
uint32_t  bytes,
uint32_t  packets,
uint32_t  oflow_bytes,
const boost::uuids::uuid u 
)
private

Definition at line 1059 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::EvictFlow ( KSyncFlowMemory ksync_obj,
const vr_flow_entry *  k_flow,
uint16_t  k_flow_flags,
uint32_t  flow_handle,
uint16_t  gen_id,
FlowExportInfo info,
uint64_t  curr_time 
)

Definition at line 528 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::FindFlowExportInfo ( const FlowEntry fe,
FlowEntryTree::iterator &  it 
)

Definition at line 925 of file flow_stats_collector.cc.

FlowExportInfo * FlowStatsCollector::FindFlowExportInfo ( const FlowEntry fe)

Definition at line 906 of file flow_stats_collector.cc.

const FlowExportInfo * FlowStatsCollector::FindFlowExportInfo ( const FlowEntry fe) const

Definition at line 916 of file flow_stats_collector.cc.

uint64_t FlowStatsCollector::flow_age_time_intvl ( )
inline

Definition at line 105 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::flow_age_time_intvl_in_secs ( ) const
inline

Definition at line 110 of file flow_stats_collector.h.

const FlowAgingTableKey& FlowStatsCollector::flow_aging_key ( ) const
inline

Definition at line 161 of file flow_stats_collector.h.

uint64_t FlowStatsCollector::flow_tcp_syn_age_time ( ) const
inline

Definition at line 113 of file flow_stats_collector.h.

void FlowStatsCollector::FlowDeleteEnqueue ( FlowExportInfo info,
uint64_t  t 
)
private

Definition at line 454 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::FlowEvictEnqueue ( FlowExportInfo info,
uint64_t  t,
uint32_t  flow_handle,
uint16_t  gen_id 
)
private

Definition at line 468 of file flow_stats_collector.cc.

Here is the call graph for this function:

uint64_t FlowStatsCollector::GetCurrentTime ( )
staticprivate

Definition at line 94 of file flow_stats_collector.cc.

Here is the call graph for this function:

uint64_t FlowStatsCollector::GetFlowStats ( const uint16_t &  oflow_data,
const uint32_t &  data 
)
static

Definition at line 184 of file flow_stats_collector.cc.

uint64_t FlowStatsCollector::GetUpdatedFlowBytes ( const FlowExportInfo stats,
uint64_t  k_flow_bytes 
)
private

Definition at line 191 of file flow_stats_collector.cc.

Here is the call graph for this function:

uint64_t FlowStatsCollector::GetUpdatedFlowPackets ( const FlowExportInfo stats,
uint64_t  k_flow_pkts 
)
private

Definition at line 201 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::HandleFlowStatsUpdate ( const FlowKey key,
uint32_t  bytes,
uint32_t  packets,
uint32_t  oflow_bytes 
)
private
uint32_t FlowStatsCollector::instance_id ( ) const
inline

Definition at line 165 of file flow_stats_collector.h.

void FlowStatsCollector::NewFlow ( FlowEntry flow)

Definition at line 934 of file flow_stats_collector.cc.

Here is the call graph for this function:

uint32_t FlowStatsCollector::ProcessFlow ( FlowExportInfoList::iterator &  it,
KSyncFlowMemory ksync_obj,
FlowExportInfo info,
uint64_t  curr_time 
)

Definition at line 628 of file flow_stats_collector.cc.

Here is the call graph for this function:

const Queue* FlowStatsCollector::queue ( ) const
inline

Definition at line 166 of file flow_stats_collector.h.

boost::uuids::uuid FlowStatsCollector::rand_gen ( )

Definition at line 90 of file flow_stats_collector.cc.

bool FlowStatsCollector::RequestHandler ( boost::shared_ptr< FlowExportReq req)
private

Definition at line 852 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::RequestHandlerEntry ( )
private

Definition at line 844 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::RequestHandlerExit ( bool  done)
private

Definition at line 849 of file flow_stats_collector.cc.

uint32_t FlowStatsCollector::ReverseFlowFip ( const FlowExportInfo info)
private

Definition at line 264 of file flow_stats_collector.cc.

Here is the call graph for this function:

InterfaceUveTable::FloatingIp * FlowStatsCollector::ReverseFlowFipEntry ( const FlowExportInfo flow)
private

Definition at line 249 of file flow_stats_collector.cc.

Here is the call graph for this function:

VmInterfaceKey FlowStatsCollector::ReverseFlowFipVmi ( const FlowExportInfo info)
private

Definition at line 273 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::Run ( void  )
virtual

Implements StatsCollector.

Definition at line 762 of file flow_stats_collector.cc.

Here is the call graph for this function:

uint32_t FlowStatsCollector::RunAgeing ( uint32_t  max_count)

Definition at line 720 of file flow_stats_collector.cc.

Here is the call graph for this function:

bool FlowStatsCollector::RunAgeingTask ( )

Definition at line 794 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::set_deleted ( bool  val)
inline

Definition at line 155 of file flow_stats_collector.h.

void FlowStatsCollector::set_flow_age_time_intvl ( uint64_t  interval)
inline

Definition at line 106 of file flow_stats_collector.h.

void FlowStatsCollector::set_flow_tcp_syn_age_time ( uint64_t  interval)
inline

Definition at line 116 of file flow_stats_collector.h.

bool FlowStatsCollector::ShouldBeAged ( FlowExportInfo info,
const vr_flow_entry *  k_flow,
const vr_flow_stats &  k_stats,
uint64_t  curr_time 
)
private

Definition at line 153 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::Shutdown ( void  )

Definition at line 98 of file flow_stats_collector.cc.

Here is the call graph for this function:

size_t FlowStatsCollector::Size ( ) const
inline

Definition at line 152 of file flow_stats_collector.h.

int FlowStatsCollector::task_id ( ) const
inline

Definition at line 164 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::TimersPerScan ( )
private

Definition at line 106 of file flow_stats_collector.cc.

void FlowStatsCollector::UpdateEntriesToVisit ( )
private

Definition at line 132 of file flow_stats_collector.cc.

void FlowStatsCollector::UpdateFloatingIpStats ( const FlowExportInfo flow,
uint64_t  bytes,
uint64_t  pkts 
)

Definition at line 211 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::UpdateFlowAgeTime ( uint64_t  usecs)
inline

Definition at line 132 of file flow_stats_collector.h.

void FlowStatsCollector::UpdateFlowAgeTimeInSecs ( uint32_t  secs)
inline

Definition at line 135 of file flow_stats_collector.h.

Here is the call graph for this function:

void FlowStatsCollector::UpdateFlowIterationKey ( const FlowEntry del_flow,
FlowEntryTree::iterator &  tree_it 
)
private

Definition at line 1011 of file flow_stats_collector.cc.

void FlowStatsCollector::UpdateFlowStats ( FlowExportInfo info,
uint64_t  teardown_time 
)
private

Definition at line 428 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::UpdateFlowStatsInternal ( FlowExportInfo info,
uint32_t  bytes,
uint16_t  oflow_bytes,
uint32_t  pkts,
uint16_t  oflow_pkts,
uint64_t  time,
bool  teardown_time 
)
private

Definition at line 492 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::UpdateFlowStatsInternalLocked ( FlowExportInfo info,
uint32_t  bytes,
uint16_t  oflow_bytes,
uint32_t  pkts,
uint16_t  oflow_pkts,
uint64_t  time,
bool  teardown_time 
)
private

Definition at line 478 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::UpdateInterVnStats ( FlowExportInfo info,
uint64_t  bytes,
uint64_t  pkts 
)
private

Definition at line 397 of file flow_stats_collector.cc.

Here is the call graph for this function:

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

Definition at line 832 of file flow_stats_collector.cc.

Here is the call graph for this function:

void FlowStatsCollector::UpdateThreshold ( uint32_t  new_value)
private
void FlowStatsCollector::UpdateVmiTagBasedStats ( FlowExportInfo info,
uint64_t  bytes,
uint64_t  pkts 
)
private

Definition at line 283 of file flow_stats_collector.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class AgentUtXmlFlowThreshold
friend

Definition at line 167 of file flow_stats_collector.h.

friend class AgentUtXmlFlowThresholdValidate
friend

Definition at line 168 of file flow_stats_collector.h.

friend class FetchFlowStatsRecord
friend

Definition at line 170 of file flow_stats_collector.h.

friend class FlowStatsCollectorObject
friend

Definition at line 172 of file flow_stats_collector.h.

friend class FlowStatsManager
friend

Definition at line 171 of file flow_stats_collector.h.

friend class FlowStatsRecordsReq
friend

Definition at line 169 of file flow_stats_collector.h.

Member Data Documentation

AgeingTask* FlowStatsCollector::ageing_task_
private

Definition at line 252 of file flow_stats_collector.h.

uint64_t FlowStatsCollector::ageing_task_starts_
private

Definition at line 260 of file flow_stats_collector.h.

AgentUveBase* FlowStatsCollector::agent_uve_
private

Definition at line 225 of file flow_stats_collector.h.

uint64_t FlowStatsCollector::current_time_
private

Definition at line 259 of file flow_stats_collector.h.

tbb::atomic<bool> FlowStatsCollector::deleted_
private

Definition at line 247 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::entries_to_visit_
private

Definition at line 231 of file flow_stats_collector.h.

uint64_t FlowStatsCollector::flow_age_time_intvl_
private

Definition at line 229 of file flow_stats_collector.h.

FlowAgingTableKey FlowStatsCollector::flow_aging_key_
private

Definition at line 248 of file flow_stats_collector.h.

FlowExportInfoList FlowStatsCollector::flow_export_info_list_
private

Definition at line 235 of file flow_stats_collector.h.

const FlowEntry* FlowStatsCollector::flow_iteration_key_
private

Definition at line 228 of file flow_stats_collector.h.

FlowStatsManager* FlowStatsCollector::flow_stats_manager_
private

Definition at line 250 of file flow_stats_collector.h.

uint64_t FlowStatsCollector::flow_tcp_syn_age_time_
private

Definition at line 232 of file flow_stats_collector.h.

FlowEntryTree FlowStatsCollector::flow_tree_
private

Definition at line 234 of file flow_stats_collector.h.

const uint64_t FlowStatsCollector::FlowAgeTime = 1000000 * 180
static

Definition at line 63 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::flows_aged_
private

Definition at line 264 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::flows_evicted_
private

Definition at line 265 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::flows_visited_
private

Definition at line 263 of file flow_stats_collector.h.

const uint64_t FlowStatsCollector::FlowTcpSynAgeTime = 1000000 * 180
static

Definition at line 65 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::instance_id_
private

Definition at line 249 of file flow_stats_collector.h.

const uint32_t FlowStatsCollector::kDefaultFlowSamplingThreshold = 500
static

Definition at line 80 of file flow_stats_collector.h.

const uint64_t FlowStatsCollector::kFlowDeleteRetryTime = (5 * 1000 * 1000)
static

Definition at line 78 of file flow_stats_collector.h.

const uint32_t FlowStatsCollector::kFlowScanTime = 25
static

Definition at line 69 of file flow_stats_collector.h.

const uint32_t FlowStatsCollector::kFlowsPerTask = 256
static

Definition at line 75 of file flow_stats_collector.h.

const uint32_t FlowStatsCollector::kFlowStatsTimerInterval = 100
static

Definition at line 71 of file flow_stats_collector.h.

const uint8_t FlowStatsCollector::kMaxFlowMsgsPerSend = 16
static

Definition at line 81 of file flow_stats_collector.h.

const uint32_t FlowStatsCollector::kMinFlowsPerTimer = 3000
static

Definition at line 73 of file flow_stats_collector.h.

FlowStatsCollectorObject* FlowStatsCollector::parent_
private

Definition at line 251 of file flow_stats_collector.h.

boost::uuids::random_generator FlowStatsCollector::rand_gen_
private

Definition at line 227 of file flow_stats_collector.h.

Queue FlowStatsCollector::request_queue_
private

Definition at line 246 of file flow_stats_collector.h.

bool FlowStatsCollector::retry_delete_
private

Definition at line 245 of file flow_stats_collector.h.

int FlowStatsCollector::task_id_
private

Definition at line 226 of file flow_stats_collector.h.

uint32_t FlowStatsCollector::timers_per_scan_
private

Definition at line 255 of file flow_stats_collector.h.


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