Next: Filter-specific memory array
Up: Buffer management
Previous: Slow reader preference.
FRP is a departure from the `traditional' way of dealing with buffer
overflow. In FRP mode, FFPF keeps writing packets, regardless of the
status of the readers, and it is the reader's responsibility to
keep up. An application that fails to keep up may have older but
still unread data overwritten by new packets. In this case,
is of
no concern to FFPF and used only by the application. The idea is that
applications check after they processed a set of packets,
whether or not these packets were overwritten in the meantime (and
hence whether the application should consider them lost after
all). For this purpose, FFPF keeps a memory mapped wrap counter
that is incremented each time
`wraps' to zero. Using the counter,
applications can check themselves whether the current value of
is
greater than their value of
and thus whether the packets they just
accessed were valid.
Suppose an application is about to access a set of 100 packets when
the values of
,
and wrap counter are 50, 400, and 10,
respectively. When the application has finished processing, it again
checks these values and now finds that
is 450, while the wrap
counter is 11. In other words, the writing process has wrapped and
overwritten all packets that were just processed. The application will
count these packets as dropped. Note that as a result the drop rate in
a group may vary from application to application. It should be
mentioned that FRP is not necessarily more efficient in terms of the
total processing that is required for buffer management. Rather, it
distributes this computation to the applications themselves, removing
the dependencies between readers that exist in a centralised solution.
Next: Filter-specific memory array
Up: Buffer management
Previous: Slow reader preference.
Herbert Bos
2004-10-06