[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