aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/protocols
diff options
context:
space:
mode:
authorAngelo Mantellini <manangel@cisco.com>2019-01-30 12:11:34 +0100
committerAngelo Mantellini <manangel@cisco.com>2019-01-30 15:23:44 +0100
commite5145b878f9de35676085409878a66899d2ee4f2 (patch)
tree177f77810901921ee03d1d3b850600c5f2cd1ef9 /libtransport/src/hicn/transport/protocols
parent30061551cd39c9f30280bfa0cf3cc909f4fac015 (diff)
[HICN-18] first commit of libtransport for windows
Change-Id: I3a43b22194aa13ae5de1746e3d4bd9a275070261 Signed-off-by: Angelo Mantellini <manangel@cisco.com>
Diffstat (limited to 'libtransport/src/hicn/transport/protocols')
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/CMakeLists.txt0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/cbr.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/cbr.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/consumer.conf0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/download_observer.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/protocol.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/protocol.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/raaqm.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/raaqm.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/raaqm_data_path.cc13
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/raaqm_data_path.h7
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/rate_estimation.cc97
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/rate_estimation.h11
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/rtc.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/rtc_data_path.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/test/CMakeLists.txt0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/vegas.h0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc0
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h0
20 files changed, 67 insertions, 61 deletions
diff --git a/libtransport/src/hicn/transport/protocols/CMakeLists.txt b/libtransport/src/hicn/transport/protocols/CMakeLists.txt
index 1c3b76c24..1c3b76c24 100755..100644
--- a/libtransport/src/hicn/transport/protocols/CMakeLists.txt
+++ b/libtransport/src/hicn/transport/protocols/CMakeLists.txt
diff --git a/libtransport/src/hicn/transport/protocols/cbr.cc b/libtransport/src/hicn/transport/protocols/cbr.cc
index 3da4819c3..3da4819c3 100755..100644
--- a/libtransport/src/hicn/transport/protocols/cbr.cc
+++ b/libtransport/src/hicn/transport/protocols/cbr.cc
diff --git a/libtransport/src/hicn/transport/protocols/cbr.h b/libtransport/src/hicn/transport/protocols/cbr.h
index 0a572292a..0a572292a 100755..100644
--- a/libtransport/src/hicn/transport/protocols/cbr.h
+++ b/libtransport/src/hicn/transport/protocols/cbr.h
diff --git a/libtransport/src/hicn/transport/protocols/consumer.conf b/libtransport/src/hicn/transport/protocols/consumer.conf
index 1a366f32f..1a366f32f 100755..100644
--- a/libtransport/src/hicn/transport/protocols/consumer.conf
+++ b/libtransport/src/hicn/transport/protocols/consumer.conf
diff --git a/libtransport/src/hicn/transport/protocols/download_observer.h b/libtransport/src/hicn/transport/protocols/download_observer.h
index 6d24fe6fd..6d24fe6fd 100755..100644
--- a/libtransport/src/hicn/transport/protocols/download_observer.h
+++ b/libtransport/src/hicn/transport/protocols/download_observer.h
diff --git a/libtransport/src/hicn/transport/protocols/protocol.cc b/libtransport/src/hicn/transport/protocols/protocol.cc
index ea4fd6dbf..ea4fd6dbf 100755..100644
--- a/libtransport/src/hicn/transport/protocols/protocol.cc
+++ b/libtransport/src/hicn/transport/protocols/protocol.cc
diff --git a/libtransport/src/hicn/transport/protocols/protocol.h b/libtransport/src/hicn/transport/protocols/protocol.h
index 56c57e025..56c57e025 100755..100644
--- a/libtransport/src/hicn/transport/protocols/protocol.h
+++ b/libtransport/src/hicn/transport/protocols/protocol.h
diff --git a/libtransport/src/hicn/transport/protocols/raaqm.cc b/libtransport/src/hicn/transport/protocols/raaqm.cc
index cd22ecfdc..cd22ecfdc 100755..100644
--- a/libtransport/src/hicn/transport/protocols/raaqm.cc
+++ b/libtransport/src/hicn/transport/protocols/raaqm.cc
diff --git a/libtransport/src/hicn/transport/protocols/raaqm.h b/libtransport/src/hicn/transport/protocols/raaqm.h
index 6ca410251..6ca410251 100755..100644
--- a/libtransport/src/hicn/transport/protocols/raaqm.h
+++ b/libtransport/src/hicn/transport/protocols/raaqm.h
diff --git a/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc b/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc
index f876cf4f8..2e7aa531a 100755..100644
--- a/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc
+++ b/libtransport/src/hicn/transport/protocols/raaqm_data_path.cc
@@ -42,10 +42,9 @@ RaaqmDataPath::RaaqmDataPath(double drop_factor,
raw_data_bytes_received_(0),
last_raw_data_bytes_received_(0),
rtt_samples_(samples_),
+ last_received_pkt_(std::chrono::steady_clock::now()),
average_rtt_(0),
- alpha_(ALPHA) {
- gettimeofday(&m_last_received_pkt_, 0);
-}
+ alpha_(ALPHA) {}
RaaqmDataPath &RaaqmDataPath::insertNewRtt(uint64_t new_rtt) {
rtt_ = new_rtt;
@@ -59,7 +58,7 @@ RaaqmDataPath &RaaqmDataPath::insertNewRtt(uint64_t new_rtt) {
prop_delay_ = rtt_min_;
}
- gettimeofday(&m_last_received_pkt_, 0);
+ last_received_pkt_ = std::chrono::steady_clock::now();
return *this;
}
@@ -144,9 +143,9 @@ bool RaaqmDataPath::newPropagationDelayAvailable() {
unsigned int RaaqmDataPath::getPropagationDelay() { return prop_delay_; }
bool RaaqmDataPath::isStale() {
- struct timeval now;
- gettimeofday(&now, 0);
- double time = getMicroSeconds(now) - getMicroSeconds(m_last_received_pkt_);
+ TimePoint now = std::chrono::steady_clock::now();
+ auto time = std::chrono::duration_cast<Microseconds>(now - last_received_pkt_)
+ .count();
if (time > 2000000) {
return true;
}
diff --git a/libtransport/src/hicn/transport/protocols/raaqm_data_path.h b/libtransport/src/hicn/transport/protocols/raaqm_data_path.h
index 6f63940c9..a0b9ec9ca 100755..100644
--- a/libtransport/src/hicn/transport/protocols/raaqm_data_path.h
+++ b/libtransport/src/hicn/transport/protocols/raaqm_data_path.h
@@ -17,7 +17,7 @@
#include <hicn/transport/utils/min_filter.h>
-#include <sys/time.h>
+#include <chrono>
#include <climits>
#include <iostream>
@@ -30,6 +30,9 @@ namespace transport {
namespace protocol {
class RaaqmDataPath {
+ using TimePoint = std::chrono::steady_clock::time_point;
+ using Microseconds = std::chrono::microseconds;
+
public:
RaaqmDataPath(double drop_factor, double minimum_drop_probability,
unsigned new_timer, unsigned int samples,
@@ -219,7 +222,7 @@ class RaaqmDataPath {
/**
* Time of the last call to the path reporter method
*/
- struct timeval m_last_received_pkt_;
+ TimePoint last_received_pkt_;
double average_rtt_;
double alpha_;
diff --git a/libtransport/src/hicn/transport/protocols/rate_estimation.cc b/libtransport/src/hicn/transport/protocols/rate_estimation.cc
index e313bf9f6..b603ec200 100755..100644
--- a/libtransport/src/hicn/transport/protocols/rate_estimation.cc
+++ b/libtransport/src/hicn/transport/protocols/rate_estimation.cc
@@ -16,6 +16,8 @@
#include <hicn/transport/protocols/rate_estimation.h>
#include <hicn/transport/utils/log.h>
+#include <thread>
+
namespace transport {
namespace protocol {
@@ -31,7 +33,8 @@ void *Timer(void *data) {
pthread_mutex_unlock(&(estimator->mutex_));
while (estimator->is_running_) {
- usleep(KV * dat_rtt);
+ std::this_thread::sleep_for(
+ std::chrono::microseconds((uint64_t)(KV * dat_rtt)));
pthread_mutex_lock(&(estimator->mutex_));
@@ -88,8 +91,8 @@ InterRttEstimator::InterRttEstimator(double alpha_arg) {
this->win_current_ = 1.0;
pthread_mutex_init(&(this->mutex_), NULL);
- gettimeofday(&(this->start_time_), 0);
- gettimeofday(&(this->begin_batch_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
InterRttEstimator::~InterRttEstimator() {
@@ -124,10 +127,10 @@ void InterRttEstimator::onRttUpdate(double rtt) {
}
void InterRttEstimator::onWindowIncrease(double win_current) {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
pthread_mutex_lock(&(this->mutex_));
this->avg_win_ += this->win_current_ * delay;
@@ -135,14 +138,14 @@ void InterRttEstimator::onWindowIncrease(double win_current) {
this->win_change_ += delay;
pthread_mutex_unlock(&(this->mutex_));
- gettimeofday(&(this->begin_batch_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
void InterRttEstimator::onWindowDecrease(double win_current) {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
pthread_mutex_lock(&(this->mutex_));
this->avg_win_ += this->win_current_ * delay;
@@ -150,26 +153,25 @@ void InterRttEstimator::onWindowDecrease(double win_current) {
this->win_change_ += delay;
pthread_mutex_unlock(&(this->mutex_));
- gettimeofday(&(this->begin_batch_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
ALaTcpEstimator::ALaTcpEstimator() {
this->estimation_ = 0.0;
this->observer_ = NULL;
- gettimeofday(&(this->start_time_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
this->totalSize_ = 0.0;
}
void ALaTcpEstimator::onStart() {
this->totalSize_ = 0.0;
- gettimeofday(&(this->start_time_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
}
void ALaTcpEstimator::onDownloadFinished() {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->start_time_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->start_time_).count();
this->estimation_ = this->totalSize_ * 8 * 1000000 / delay;
if (observer_) {
observer_->notifyStats(this->estimation_);
@@ -189,23 +191,22 @@ SimpleEstimator::SimpleEstimator(double alphaArg, int batching_param) {
this->number_of_packets_ = 0;
this->base_alpha_ = alphaArg;
this->alpha_ = alphaArg;
- gettimeofday(&(this->start_time_), 0);
- gettimeofday(&(this->begin_batch_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
void SimpleEstimator::onStart() {
this->estimated_ = false;
this->number_of_packets_ = 0;
this->total_size_ = 0.0;
- gettimeofday(&(this->begin_batch_), 0);
- gettimeofday(&(this->start_time_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
void SimpleEstimator::onDownloadFinished() {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->start_time_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->start_time_).count();
if (observer_) {
observer_->notifyDownloadTime(delay);
}
@@ -227,8 +228,8 @@ void SimpleEstimator::onDownloadFinished() {
} else {
if (this->number_of_packets_ >=
(int)(75.0 * (double)this->batching_param_ / 100.0)) {
- delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ delay = std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
// Assuming all packets carry max_packet_size_ bytes of data
// (8*max_packet_size_ bits); 1000000 factor to convert us to seconds
if (this->estimation_) {
@@ -247,8 +248,8 @@ void SimpleEstimator::onDownloadFinished() {
}
this->number_of_packets_ = 0;
this->total_size_ = 0.0;
- gettimeofday(&(this->begin_batch_), 0);
- gettimeofday(&(this->start_time_), 0);
+ this->start_time_ = std::chrono::steady_clock::now();
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
void SimpleEstimator::onDataReceived(int packet_size) {
@@ -259,10 +260,10 @@ void SimpleEstimator::onRttUpdate(double rtt) {
this->number_of_packets_++;
if (number_of_packets_ == this->batching_param_) {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
// Assuming all packets carry max_packet_size_ bytes of data
// (8*max_packet_size_ bits); 1000000 factor to convert us to seconds
if (this->estimation_) {
@@ -278,7 +279,7 @@ void SimpleEstimator::onRttUpdate(double rtt) {
this->alpha_ = this->base_alpha_;
this->number_of_packets_ = 0;
this->total_size_ = 0.0;
- gettimeofday(&(this->begin_batch_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
}
@@ -295,8 +296,8 @@ BatchingPacketsEstimator::BatchingPacketsEstimator(double alpha_arg,
this->max_packet_size_ = 0;
this->estimation_ = 0.0;
this->win_current_ = 1.0;
- gettimeofday(&(this->begin_batch_), 0);
- gettimeofday(&(this->start_time_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
+ this->start_time_ = std::chrono::steady_clock::now();
}
void BatchingPacketsEstimator::onRttUpdate(double rtt) {
@@ -327,25 +328,25 @@ void BatchingPacketsEstimator::onRttUpdate(double rtt) {
}
void BatchingPacketsEstimator::onWindowIncrease(double win_current) {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
this->avg_win_ += this->win_current_ * delay;
this->win_current_ = win_current;
this->win_change_ += delay;
- gettimeofday(&(this->begin_batch_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
void BatchingPacketsEstimator::onWindowDecrease(double win_current) {
- timeval end;
- gettimeofday(&end, 0);
- double delay = RaaqmDataPath::getMicroSeconds(end) -
- RaaqmDataPath::getMicroSeconds(this->begin_batch_);
+ TimePoint end = std::chrono::steady_clock::now();
+ auto delay =
+ std::chrono::duration_cast<Microseconds>(end - this->begin_batch_)
+ .count();
this->avg_win_ += this->win_current_ * delay;
this->win_current_ = win_current;
this->win_change_ += delay;
- gettimeofday(&(this->begin_batch_), 0);
+ this->begin_batch_ = std::chrono::steady_clock::now();
}
} // end namespace protocol
diff --git a/libtransport/src/hicn/transport/protocols/rate_estimation.h b/libtransport/src/hicn/transport/protocols/rate_estimation.h
index b889efe12..91964ec1d 100755..100644
--- a/libtransport/src/hicn/transport/protocols/rate_estimation.h
+++ b/libtransport/src/hicn/transport/protocols/rate_estimation.h
@@ -15,11 +15,11 @@
#pragma once
-#include <unistd.h>
-
#include <hicn/transport/protocols/download_observer.h>
#include <hicn/transport/protocols/raaqm_data_path.h>
+#include <chrono>
+
#define BATCH 50
#define KV 20
#define ALPHA 0.8
@@ -31,6 +31,9 @@ namespace protocol {
class IcnRateEstimator {
public:
+ using TimePoint = std::chrono::steady_clock::time_point;
+ using Microseconds = std::chrono::microseconds;
+
IcnRateEstimator(){};
virtual ~IcnRateEstimator(){};
@@ -51,8 +54,8 @@ class IcnRateEstimator {
this->observer_ = observer;
};
IcnObserver *observer_;
- struct timeval start_time_;
- struct timeval begin_batch_;
+ TimePoint start_time_;
+ TimePoint begin_batch_;
double base_alpha_;
double alpha_;
double estimation_;
diff --git a/libtransport/src/hicn/transport/protocols/rtc.h b/libtransport/src/hicn/transport/protocols/rtc.h
index 249af6b99..249af6b99 100755..100644
--- a/libtransport/src/hicn/transport/protocols/rtc.h
+++ b/libtransport/src/hicn/transport/protocols/rtc.h
diff --git a/libtransport/src/hicn/transport/protocols/rtc_data_path.cc b/libtransport/src/hicn/transport/protocols/rtc_data_path.cc
index 6c9605fb2..6c9605fb2 100755..100644
--- a/libtransport/src/hicn/transport/protocols/rtc_data_path.cc
+++ b/libtransport/src/hicn/transport/protocols/rtc_data_path.cc
diff --git a/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt b/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt
index 6f9fdb9aa..6f9fdb9aa 100755..100644
--- a/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt
+++ b/libtransport/src/hicn/transport/protocols/test/CMakeLists.txt
diff --git a/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc b/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc
index 204f2cbe2..204f2cbe2 100755..100644
--- a/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc
+++ b/libtransport/src/hicn/transport/protocols/test/test_transport_producer.cc
diff --git a/libtransport/src/hicn/transport/protocols/vegas.h b/libtransport/src/hicn/transport/protocols/vegas.h
index 7791ffc94..7791ffc94 100755..100644
--- a/libtransport/src/hicn/transport/protocols/vegas.h
+++ b/libtransport/src/hicn/transport/protocols/vegas.h
diff --git a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc
index f5f797bbe..f5f797bbe 100755..100644
--- a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc
+++ b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.cc
diff --git a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h
index e84afc49c..e84afc49c 100755..100644
--- a/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h
+++ b/libtransport/src/hicn/transport/protocols/vegas_rto_estimator.h