9 :
VnUveEntryBase(agent, vn), port_bitmap_(), inter_vn_stats_(), mutex_(),
10 in_bytes_(0), out_bytes_(0), prev_stats_update_time_(0),
11 prev_in_bytes_(0), prev_out_bytes_(0) {
15 :
VnUveEntryBase(agent, NULL), port_bitmap_(), inter_vn_stats_(), mutex_(),
16 in_bytes_(0), out_bytes_(0), prev_stats_update_time_(0),
17 prev_in_bytes_(0), prev_out_bytes_(0) {
25 tbb::mutex::scoped_lock lock(
mutex_);
34 uint64_t pkts,
bool outgoing) {
35 tbb::mutex::scoped_lock lock(
mutex_);
47 VnStats *stats = stats_ptr.get();
65 tbb::mutex::scoped_lock lock(
mutex_);
67 VnStatsSet::iterator del_it;
77 tbb::mutex::scoped_lock lock(
mutex_);
79 vector<uint32_t> tcp_sport;
81 uve.set_tcp_sport_bitmap(tcp_sport);
85 vector<uint32_t> tcp_dport;
87 uve.set_tcp_dport_bitmap(tcp_dport);
91 vector<uint32_t> udp_sport;
93 uve.set_udp_sport_bitmap(udp_sport);
97 vector<uint32_t> udp_dport;
99 uve.set_udp_dport_bitmap(udp_dport);
106 if (!
uve_info_.__isset.associated_fip_count) {
109 if (size !=
uve_info_.get_associated_fip_count()) {
116 if (!
uve_info_.__isset.in_bandwidth_usage) {
119 if (in_band !=
uve_info_.get_in_bandwidth_usage()) {
126 if (!
uve_info_.__isset.out_bandwidth_usage) {
129 if (out_band !=
uve_info_.get_out_bandwidth_usage()) {
139 if (vlist !=
uve_info_.get_vrf_stats_list()) {
150 if (new_list !=
uve_info_.get_in_stats()) {
161 if (new_list !=
uve_info_.get_out_stats()) {
168 UveVirtualNetworkAgent &s_vn) {
173 uint32_t in_count, out_count;
175 s_vn.set_ingress_flow_count(in_count);
176 uve_info_.set_ingress_flow_count(in_count);
178 s_vn.set_egress_flow_count(out_count);
179 uve_info_.set_egress_flow_count(out_count);
185 s_vn.set_associated_fip_count(count);
186 uve_info_.set_associated_fip_count(count);
195 vector<UveInterVnStats> in_list;
196 vector<UveInterVnStats> out_list;
199 vector<InterVnStats> vn_stats_list;
202 tbb::mutex::scoped_lock lock(
mutex_);
208 stats = stats_ptr.get();
209 UveInterVnStats uve_stats;
210 uve_stats.set_other_vn(stats->
dst_vn_);
212 uve_stats.set_tpkts(stats->
in_pkts_);
214 in_list.push_back(uve_stats);
218 out_list.push_back(uve_stats);
220 InterVnStats diff_stats;
221 diff_stats.set_other_vn(stats->
dst_vn_);
228 vn_stats_list.push_back(diff_stats);
237 if (!in_list.empty()) {
239 s_vn.set_in_stats(in_list);
244 if (!out_list.empty()) {
246 s_vn.set_out_stats(out_list);
251 if (!vn_stats_list.empty()) {
252 s_vn.set_vn_stats(vn_stats_list);
259 UveVrfStats &vrf_stats)
const {
268 as.set_from_vm_interface(vs);
276 as.set_from_physical_interface(ps);
278 vrf_stats.set_arp_packet_counts(as);
282 UveVrfStats &vrf_stats)
const {
288 nhs.set_local_vm_l3_forwards(s->
encaps);
289 nhs.set_local_vm_l2_forwards(s->
l2_encaps);
293 UveTunnelNhStats tns;
298 nhs.set_tunnel_nh_stats(tns);
300 UveMulticastNhStats mns;
305 nhs.set_comp_nh_stats(mns);
306 vrf_stats.set_nh_packet_counts(nhs);
311 UveVrfStats vrf_stats;
312 vector<UveVrfStats> vlist;
317 vrf_stats.set_name(s->
name);
318 vrf_stats.set_diag_packet_count(s->
diags);
319 vrf_stats.set_unknown_unicast_floods(s->
uuc_floods);
325 vrf_stats.set_offload_packet_counts(os);
329 vlist.push_back(vrf_stats);
331 s_vn.set_vrf_stats_list(vlist);
340 UveVirtualNetworkAgent &s_vn) {
346 vector<UveVrfStats> vlist;
348 s_vn.set_vrf_stats_list(vlist);
358 UveVirtualNetworkAgent &uve) {
377 uint64_t diff_in_bytes = 0;
378 uint64_t diff_out_bytes = 0;
380 uint64_t diff_seconds = 0;
382 bool send_bandwidth =
false;
383 uint64_t in_band, out_band;
386 in_band = out_band = 0;
387 send_bandwidth =
true;
391 if (diff_seconds > 0) {
394 in_band = (diff_in_bytes * 8)/diff_seconds;
395 out_band = (diff_out_bytes * 8)/diff_seconds;
399 send_bandwidth =
true;
403 uve.set_in_bandwidth_usage(in_band);
404 uve_info_.set_in_bandwidth_usage(in_band);
409 uve.set_out_bandwidth_usage(out_band);
410 uve_info_.set_out_bandwidth_usage(out_band);
451 VnAceStatsSet::const_iterator it =
ace_stats_.find(key);
461 UveVirtualNetworkAgent &uve) {
465 std::vector<NetworkPolicyRuleStats> list;
467 VnAceStatsSet::iterator it =
ace_stats_.begin();
470 uint64_t diff_count = it->count - it->prev_count;
473 it->prev_count = it->count;
474 NetworkPolicyRuleStats item;
475 item.set_rule(it->ace_uuid);
476 item.set_count(diff_count);
477 list.push_back(item);
486 uve.set_policy_rule_stats(list);
StatsManager * stats_manager() const
bool UveVnVrfStatsChanged(const std::vector< UveVrfStats > &vlist) const
VrfStats * GetVrfStats(int vrf_id)
bool FrameVnAceStatsMsg(const VnEntry *vn, UveVirtualNetworkAgent &uve)
uint64_t arp_virtual_proxy
uint64_t arp_physical_stitch
InterfaceSet interface_tree_
bool UpdateVrfStats(const VnEntry *vn, UveVirtualNetworkAgent &s_vn)
uint64_t arp_virtual_flood
uint64_t encap_composites
AgentUveBase * uve() const
uint64_t l2_mcast_composites
void AddPort(uint8_t proto, uint16_t sport, uint16_t dport)
uint64_t arp_virtual_stitch
uint64_t fabric_composites
uint64_t udp_mpls_tunnels
void UpdateVnAceStats(const std::string &ace_uuid)
UveVirtualNetworkAgent uve_info_
bool FillVrfStats(int vrf_id, UveVirtualNetworkAgent &s_vn)
void UpdatePortBitmap(uint8_t proto, uint16_t sport, uint16_t dport)
void UpdateInterVnStats(const string &dst_vn, uint64_t bytes, uint64_t pkts, bool outgoing)
uint64_t bandwidth_intvl() const
uint64_t arp_physical_flood
bool PopulateInterVnStats(UveVirtualNetworkAgent &s_vn)
bool UveInterVnOutStatsChanged(const std::vector< UveInterVnStats > &new_list) const
bool UpdateVnFlowCount(const VnEntry *vn, UveVirtualNetworkAgent &s_vn)
VnUveEntry(Agent *agent, const VnEntry *vn)
const uint32_t vrf_id() const
const std::string & agent_name() const
FlowProto * get_flow_proto() const
void BuildNhStats(const StatsManager::VrfStats *s, UveVrfStats &vrf_stats) const
L4PortBitmap port_bitmap_
VnStatsSet inter_vn_stats_
VrfEntry * GetVrf() const
uint64_t prev_stats_update_time_
size_t GetFloatingIpCount() const
static uint64_t UTCTimestampUsec()
bool UpdateVnFipCount(int count, UveVirtualNetworkAgent &s_vn)
boost::shared_ptr< VnStats > VnStatsPtr
bool UveVnOutBandChanged(uint64_t out_band) const
bool Sync(std::vector< uint32_t > &bmap)
bool SetVnPortBitmap(UveVirtualNetworkAgent &uve)
bool UveInterVnInStatsChanged(const std::vector< UveInterVnStats > &new_list) const
const string & GetName() const
uint64_t gre_mpls_tunnels
bool UveVnInBandChanged(uint64_t out_band) const
bool UveVnFipCountChanged(int32_t size) const
void VnFlowCounters(const VnEntry *vn, uint32_t *in_count, uint32_t *out_count)
bool FrameVnStatsMsg(const VnEntry *vn, UveVirtualNetworkAgent &uve)
void BuildArpStats(const StatsManager::VrfStats *s, UveVrfStats &vrf_stats) const