Browse Source

fix a bug in interval packet rate of individual IPs

aidmar.wainakh 6 years ago
parent
commit
ef6d1a6026
2 changed files with 6 additions and 5 deletions
  1. 6 3
      code_boost/src/cxx/statistics.cpp
  2. 0 2
      code_boost/src/cxx/utilities.h

+ 6 - 3
code_boost/src/cxx/statistics.cpp

@@ -150,9 +150,12 @@ std::vector<float> statistics::calculateIPsCumEntropy(){
  */
 void statistics::calculateIPIntervalPacketRate(std::chrono::duration<int, std::micro> interval, std::chrono::microseconds intervalStartTimestamp){        
         for (auto i = ip_statistics.begin(); i != ip_statistics.end(); i++) {
-                int indexStartSent = getClosestIndex(i->second.pkts_sent_timestamp, intervalStartTimestamp);
-                int IPsSrcPktsCount = i->second.pkts_sent_timestamp.size() - indexStartSent;
-                float interval_pkt_rate = (float) IPsSrcPktsCount * 1000000 / interval.count(); // used 10^6 because interval in microseconds
+            int IPsSrcPktsCount = 0;
+            for (auto j = i->second.pkts_sent_timestamp.begin(); j != i->second.pkts_sent_timestamp.end(); j++) {
+                if(*j >= intervalStartTimestamp)
+                    IPsSrcPktsCount++;
+            }
+            float interval_pkt_rate = (float) IPsSrcPktsCount * 1000000 / interval.count(); // used 10^6 because interval in microseconds
                 i->second.interval_pkt_rate.push_back(interval_pkt_rate);
                 if(interval_pkt_rate > i->second.max_interval_pkt_rate || i->second.max_interval_pkt_rate == 0)
                     i->second.max_interval_pkt_rate = interval_pkt_rate;

+ 0 - 2
code_boost/src/cxx/utilities.h

@@ -29,8 +29,6 @@ void convertIPv4toArray(std::string IP, unsigned short IP_bytes[]);
 
 void split_str(const std::string& s, char delim,std::vector<std::string>& v);
 
-int getClosestIndex(std::vector<std::chrono::microseconds> v, std::chrono::microseconds refElem);
-
 u16 tcp_sum_calc(u16 len_tcp, u16 src_addr[],u16 dest_addr[], bool padding, u16 buff[]);
 
 bool check_tcpChecksum(std::string ipAddressSender, std::string ipAddressReceiver, TCP tcpPkt);