Skip to main content
. 2021 Sep 19;21(18):6289. doi: 10.3390/s21186289
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