3.5.6.2 Block Timer Expiry

When the Block timer fires (signaling the end of the block), the responder MUST update the estimate of the number of active responders on the network based on the count of frames during the block and the measured length of the block (in milliseconds), which is called Ta (note that Ta is likely about the same as the period of the block timer (Tb), but on some platforms, it can be longer due to scheduling delays). The estimate MUST be calculated by using the RepeatBAND algorithm as follows.

 Value = RoundUp( r * Nold * I / Ta )
 Bound = RoundUp( Nold * Gamma / (Beta * Alpha) )
 Nnew = Max( Bound, Min( 100 * Nold , Value ) )
  

If the implementation is accomplished carefully, this value is never zero or negative and can be implemented entirely in integer arithmetic.

The responder then MUST check the Begun flag. If it is set, then the estimate N MUST be doubled. If doubling N would cause the value to exceed Nmax, then N MUST instead be set to Nmax. The Begun flag MUST then be cleared.

Finally, the responder MUST set r to zero and begin the next round.

See section 4.4 for several examples of the RepeatBAND algorithm in effect during different scenarios.