Algorithm 2: BA-MPCUBIC: ECN_filter |
Initialization: |
β = 0.2 |
received_ACKs = 1 |
ECN_marked_ACKs = 1 |
ECN_filter = false |
Upon reception of ACK: |
if system_current_time < update_time_of_ ECN_filter then |
received_ACKs = received_ACKs + 1 |
if ECN_marked_ACK = true then |
ECN_marked_ACKs = ECN_marked_ACKs + 1 |
end if |
else |
ECNrate = ECN_marked_ACKs ÷ received_ACKs |
update_time_of_ ECN_filter = system_current_time + 1.0 sec |
ECN_filter_max_limit = ECNrate + ECNrate × β |
ECN_filter_min_limit = ECNrate − ECNrate × β |
received_ACKs = 1 |
ECN_marked_ACKs = 1 |
ECN_filter = false |
for all subflow i do |
if SFi == SFcurr then |
continue |
end if |
if ECNrate_SFi > ECN_filter_min_limit and ECNrate_SFi < ECN_filter_max_limit |
then |
ECN_filter = true |
end if |
end for |
end if |
return ECN_filter |