https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298108
Bug ID: 298108
Summary: dummynet: support link rates above UINT32_MAX bit/s
Product: Base System
Version: 16.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
Overview
========
Dummynet cannot directly configure link bandwidths above UINT32_MAX
bits/s (4,294,967,295 bit/s).
This prevents dummynet from shaping currently available multi-gigabit
links at their full rates. My immediate use case is applying an FQ_CODEL
limiter to an 8 Gbit/s residential Internet connection.
Steps to Reproduce
==================
On an unmodified FreeBSD main userland:
# dnctl pipe 1 config bw 8Gbit/s
dnctl: bandwidth too large
Actual result
=============
The command rejects bandwidth values above UINT32_MAX.
Expected result
===============
Dummynet should be able to configure and report link rates above
UINT32_MAX, including an 8 Gbit/s rate, while retaining compatibility
with existing userland and kernel interfaces where practical.
Technical details
=================
In the current source:
* sbin/ipfw/dummynet.c:read_bandwidth() returns the parsed bandwidth
through a uint32_t and rejects values greater than UINT_MAX.
* sys/netinet/ip_dummynet.h defines struct dn_link.bandwidth as
uint32_t.
* The kernel scheduler state embeds struct dn_link, so the 32-bit
representation is also carried into the kernel implementation.
PR 194453 fixed the earlier signed 2 Gbit/s limit by changing the field
to uint32_t, but this retained the current 4.29 Gbit/s ceiling:
bug #194453
Design discussion
=================
I started an RFC on freebsd-ipfw covering compatibility and ABI options,
including a possible DN_LINK64 object, normalization into private 64-bit
kernel state, API-version negotiation, and legacy GET behaviour:
https://lists.freebsd.org/archives/freebsd-ipfw/2026-September/000623.html
The precise ABI approach is intentionally left open pending feedback
from the IPFW/dummynet maintainers.
Work in progress
================
I have drafted an experimental implementation and ATF tests for
UINT32_MAX, UINT32_MAX+1, 10 Gbit/s, and 100 Gbit/s, including
FQ_CODEL. The implementation has not yet completed FreeBSD-CURRENT
build and ATF validation, so I am not attaching it as a proposed patch
yet.
The implementation and tests will be submitted for formal review after
the ABI direction has been discussed and they have been validated on
FreeBSD-CURRENT.
--
You are receiving this mail because:
You are the assignee for the bug.