### The Huff-n'-Puff Filter

Last update: 27-Sep-2010 17:57 UTC

In scenarios where a considerable amount of data are downloaded or uploaded using DSL or telephone modem lines, timekeeping quality can be seriously degraded. This occurs because the differential delays on the two directions of transmission can be quite large. In many cases the apparent time errors are so large as to exceed the step threshold and a step correction can occur during and after the data transfer.

The huff-n'-puff filter is designed to correct the apparent time offset in these cases. It depends on knowledge of the propagation delay when no other traffic is present, such as during other than work hours. The filter remembers the minimum delay over the most recent interval measured usually in hours. Under conditions of large delay, the filter corrects the apparent offset using the sign of the offset and the difference between the apparent delay and minimum delay. The name of the filter reflects the negative (huff) and positive (puff) correction, which depends on the sign of the offset. The filter is activated by the `tinker huffpuff` command, as described in the Miscellaneous Options page.

Figure 1. Huff-n'-Puff Wedge Scattergram

Figure 1 shows how the huff-n'-puff filter works. Recall from the Clock Filter Algorithm page that the wedge scattergram plots sample points of offset versus delay and that the limb lines are at slope ±0.5. Note in the figure that the samples are clustered close to the upper limb line. Given the apparent minimum delay close to 0.1 s and a point (x, y) on the upper limb line, the delay is x - 0.1 s, so the offset y is corrected by subtracting (x - 0.1) / 2. If the point was on the lower limb line, the correction would be added instead.