The dumbbell topology in [1] is used for to evaluate balia performance on ns3.
n0--L0--n2--L1--n3--L2--n4
n1--L3--n2--L1--n3--L4--n5
The control rule in balia [2] is:
Here,.
But the code implementaion in linux [3]for ai is:
/* (sum_rate)^2 * 10 * w_r
* ai = ------------------------------------
* (x_r + max_rate) * (4x_r + max_rate)
*/
That gets me confused, since ai is not in consitent with (1).
According to (1) and :
What I got is:
/* (sum_rate)^2 * 10 * w_r
* ai_correct= ------------------------------------
* x_r*(x_r + max_rate) * (4x_r + max_rate)
*/
I dont know the reason behind the formular (1) to control the increase process of cwnd.
But at least, the ai_correct is indeed has the same unit with w_r.
So, in implemementation, I use ai_correct to control the increase process of cwnd.
Test1
The bandiwidth of L1 is 5Mbps.
flow1 and flow4 are two subflows of a multipath session. flow2 and flow3 take Reno for rate control. flow1 and flow2 take route(n0->n4). flow3 and flow4 take route(n1->n5).
The sending rate of each flow:
Packets received rate, here mp denotes the total throughput of the multipath session:
Test2
The bandiwidth of L1 is 8Mbps.
The sending rate of each flow:
Packets received rate:
[1] Evaluation multipath weswood congestion control on ns3
[2] Multipath TCP: Analysis, Design, and Implementation
[3] balia implementation in mptcp