• Toke Høiland-Jørgensen's avatar
    sch_cake: Add overhead compensation support to the rate shaper · a729b7f0
    Toke Høiland-Jørgensen authored
    This commit adds configurable overhead compensation support to the rate
    shaper. With this feature, userspace can configure the actual bottleneck
    link overhead and encapsulation mode used, which will be used by the shaper
    to calculate the precise duration of each packet on the wire.
    
    This feature is needed because CAKE is often deployed one or two hops
    upstream of the actual bottleneck (which can be, e.g., inside a DSL or
    cable modem). In this case, the link layer characteristics and overhead
    reported by the kernel does not match the actual bottleneck. Being able to
    set the actual values in use makes it possible to configure the shaper rate
    much closer to the actual bottleneck rate (our experience shows it is
    possible to get with 0.1% of the actual physical bottleneck rate), thus
    keeping latency low without sacrificing bandwidth.
    
    The overhead compensation has three tunables: A fixed per-packet overhead
    size (which, if set, will be accounted from the IP packet header), a
    minimum packet size (MPU) and a framing mode supporting either ATM or PTM
    framing. We include a set of common keywords in TC to help users configure
    the right parameters. If no overhead value is set, the value reported by
    the kernel is used.
    Signed-off-by: default avatarToke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a729b7f0
sch_cake.c 74.8 KB