[Sumover-dev] [svn commit] r4853 - vic/branches/cc/cc
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Tue May 25 17:02:56 BST 2010
Author: soohyunc
Date: Tue May 25 17:02:55 2010
New Revision: 4853
Modified:
vic/branches/cc/cc/tfrc_sndr.cpp
vic/branches/cc/cc/tfrc_sndr.h
Log:
TFRC also has 3 DUPACK margin to allow packet re-ordering when determining loss
event rate, like TCP and TFWC.
Modified: vic/branches/cc/cc/tfrc_sndr.cpp
==============================================================================
--- vic/branches/cc/cc/tfrc_sndr.cpp (original)
+++ vic/branches/cc/cc/tfrc_sndr.cpp Tue May 25 17:02:55 2010
@@ -212,17 +212,21 @@
// generate seqno vector
gen_seqvec(ackv_, num_vec_);
+ // generate margin vector
+ marginvec(jacked_);
+ print_mvec();
+
// generate reference vector
// (it represents seqvec when no losses)
// @begin: aoa_+1 (lowest seqno)
// @end: jacked_
- gen_refvec(jacked_, aoa_+1);
+ gen_refvec(mvec_[DUPACKS-1]-1, aoa_+1);
// TFRC congestioin control
update_xrate();
// set ackofack (real number)
- aoa_ = jacked_;
+ aoa_ = ackofack();
// sampled RTT
tao_ = so_recv_ - tsvec_[jacked_%TSZ];
Modified: vic/branches/cc/cc/tfrc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfrc_sndr.h (original)
+++ vic/branches/cc/cc/tfrc_sndr.h Tue May 25 17:02:55 2010
@@ -130,6 +130,17 @@
bool find_seqno(u_int16_t *v, int n, int target);
bool find_seqno(u_int32_t *v, int n, u_int32_t target);
+ // generate margin vector
+ inline void marginvec(u_int16_t hseq) {
+ for (int i = 0; i < DUPACKS; i++)
+ // round up if it is less than zero
+ mvec_[i] = ((hseq - i) < 0) ? 0 : (hseq -i);
+ }
+ // ackofack
+ inline u_int16_t ackofack() {
+ return ((mvec_[DUPACKS - 1] - 1) <= 0) ?
+ 0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1);
+ }
// AckVec clone from Vic
inline void clone_ackv(u_int16_t *c, int n) {
for (int i = 0; i < n; i++)
@@ -176,6 +187,7 @@
double ts_off_; // timestamp offset for gettimeofday
+ int mvec_[DUPACKS]; // margin vec (simulating TCP 3 dupacks)
u_int32_t *seqvec_; // generated seqno vec
int num_seqvec_; // number of seqvec elements
u_int32_t *refvec_; // reference seqno vec
@@ -228,7 +240,11 @@
// record packet size in bytes
u_int16_t *record_;
-
+ // print mvec
+ inline void print_mvec() {
+ fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n",
+ mvec_[0], mvec_[1], mvec_[2]);
+ }
// print vec
inline void print_vec(const char* str, u_int32_t *vec, int c) {
fprintf(stderr, "\t%s: (", str);
More information about the Sumover-dev
mailing list