Skip to content

Commit ec2c249

Browse files
authored
REFACTORING: packet reordering (#436)
closes #435
1 parent e50215b commit ec2c249

4 files changed

Lines changed: 12 additions & 22 deletions

File tree

source/metrics/metrics_collector.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ void MetricsCollector::draw_RTT_plot(std::filesystem::path path) const {
9292
void MetricsCollector::draw_packet_reordering_plot(
9393
std::filesystem::path path) const {
9494
m_packet_reordering_storage.draw_on_plot(
95-
path, PlotMetadata{"Time, ns", "Reordering, %", "Packet reordering"},
95+
path,
96+
PlotMetadata{"Time, ns", "Reordering (inversions count)",
97+
"Packet reordering"},
9698
flow_id_to_curve_name);
9799
}
98100

source/metrics/packet_reordering/i_packet_reordering.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace sim {
55

6-
using PacketReordering = long double;
6+
using PacketReordering = uint64_t;
77

88
// Metrics that shows degree of packet reordering
99
class IPacketReordering {

source/metrics/packet_reordering/simple_packet_reordering.cpp

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,24 @@
22

33
namespace sim {
44

5-
SimplePacketReordering::SimplePacketReordering(long double a_smoothing_factor)
6-
: m_metric_statistics(a_smoothing_factor) {}
7-
8-
SimplePacketReordering::SimplePacketReordering(long double a_smoothing_factor,
9-
std::size_t a_max_packets)
10-
: m_max_packets(a_max_packets), m_metric_statistics(a_smoothing_factor) {}
5+
SimplePacketReordering::SimplePacketReordering(std::size_t a_max_packets)
6+
: m_max_packets(a_max_packets), m_inversions_count(0) {}
117

128
void SimplePacketReordering::add_record(PacketNum packet_num) {
13-
if (!m_packet_num_set.insert(packet_num).second) {
14-
// packet with same id already in set; new one ignored
15-
return;
16-
}
9+
m_packet_num_set.insert(packet_num);
1710
std::size_t count_lower = m_packet_num_set.order_of_key(packet_num);
1811
std::size_t total_count = m_packet_num_set.size();
1912
std::size_t count_upper = total_count - count_lower - 1;
2013

21-
long double curr_metric =
22-
count_upper / static_cast<long double>(total_count);
23-
m_metric_statistics.add_record(curr_metric);
14+
m_inversions_count += count_upper;
2415

2516
if (m_packet_num_set.size() > m_max_packets) {
2617
m_packet_num_set.erase(m_packet_num_set.begin());
2718
}
2819
}
2920

3021
PacketReordering SimplePacketReordering::value() const {
31-
return m_metric_statistics.get_mean();
22+
return m_inversions_count;
3223
}
3324

3425
}; // namespace sim

source/metrics/packet_reordering/simple_packet_reordering.hpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
namespace sim {
77
class SimplePacketReordering : public IPacketReordering {
88
public:
9-
SimplePacketReordering() = default;
10-
explicit SimplePacketReordering(long double a_smoothing_factor);
11-
SimplePacketReordering(long double a_smoothing_factor,
12-
std::size_t a_max_packets);
9+
explicit SimplePacketReordering(std::size_t a_max_packets = 1'000'000);
1310
~SimplePacketReordering() = default;
1411

1512
void add_record(PacketNum packet_num) final;
@@ -18,8 +15,8 @@ class SimplePacketReordering : public IPacketReordering {
1815
private:
1916
// maximal count of packets in m_packet_num_set
2017
// When m_packet_num_set.size() growth up it, the smallest element deletes
21-
std::size_t m_max_packets = 1'000'000;
18+
std::size_t m_max_packets;
19+
uint64_t m_inversions_count;
2220
utils::ordered_set<PacketNum> m_packet_num_set;
23-
utils::Statistics<long double> m_metric_statistics;
2421
};
2522
} // namespace sim

0 commit comments

Comments
 (0)