Basic ----- A budget is associated with the link. Each impulse decrements the budget. When it reaches zero the link is downed and blocked until a new budget is allocated. The budget is saved between diald runs to preserve it across restarts/reboots. Advanced -------- The is a set of budgets. Each connection is classified and assigned to a budget (there may be many connections assigned to each budget). Only connections which have a non-zero budget are considered for holding or raising the link. Each impulse reduces each budget by a fraction: cb * (1 / c) where c is the total number of connections with non-zero budgets and cb is the number of connections associated with this budget (perhaps this should be weighted by traffic level as well?) i.e. the connections which are holding the link (have a non-zero budget) share the cost of holding the link. Note: if we only have one budget and all connections are assigned to it this collases back to basic budgeting. Blue Sky -------- We could use traffic control flows to deprioritize out of budget connections so they only get to send packets if nothing else is happening.