FreeBSD Network Status Week 46 2024
The meta discussion is moving to the end of the report, meta meta discussion will hopefully be rare.
Goings on
Fall 2024 FreeBSD Summit
The Fall 2024 FreeBSD Summit was last week. There were some great presentations which are recorded on the FreeBSD YouTube Channel . I don't know if or when the sessions will be broken up, you can scroll through the recorded live streams to find talks of interest.
BSD Devroom at FOSDEM 2024
Welcome to the BSD Devroom Call For Participation. The BSD Devroom aims
to provide a dedicated space for presentations covering BSD operating
system family.
Key dates
Proposals can be submitted by October the 30th, 2024
Submission deadline : 1st December 2024 Brussels time
Announcement of selected talks : 15th of December 2024
Conference dates : 1 & 2 February 2025
BSD devroom date : Saturday February 1st, 2025 afternoon (second half)
There are only two weeks left for you to submit something.
FreeBSD 14.2 Code Slush in Effect
From Colin:
This is a reminder that we have one week remaining in the 14.2-RELEASE
code slush and will start BETA builds on November 1st. The schedule
for the release cycle is:
ports quarterly branch: October 1, 2024
reminder email: October 7, 2024
stable/14 slush: October 18, 2024
doc/ tree slush: October 25, 2024
releng/14.2 branch: November 1, 2024
BETA1 build starts: November 1, 2024
BETA2 build starts: November 8, 2024
doc/ tree tag: November 8, 2024
<<< WE ARE HERE >>>
BETA3 build starts: November 15, 2024
ports package builds: TBD (Between November 8 and 22)
RC1 build starts: November 22, 2024
RELEASE build starts: November 29, 2024
RELEASE announcement: December 3, 2024
14.1 EoL: March 31, 2025
14.2 EoL: September 30, 2025
14.* EoL: November 30, 2028
https://wiki.freebsd.org/Releng/14.2ISSUES
And an update today:
I'm pushing the BETA3 build back by 24 hours so I can re-run this week's
current+stable snapshots; the new container-building code broke stuff but
I *think* I've got it fixed now so I want to try again in case I can get
that into 14.2-BETA3.
This also allows a bit more time for people to look at a vfs issue. I
already have avg, mckusick, and pho looking at it, but if you know
anything about VFS it would be great to have more eyes; see the thread
"vn_alloc_cyclecount is always zero" and commit ab05a1cf321a.
Note: Colin is only sending these announcements to a private list. I asked him last week if I can share them and he said it wasn't a problem. I'll pester him to share these updates to a public list as well.
Struct ifnet is now hidden
Hi everyone,
Many thanks to everyone involved, either fixing ports, reviewing
changes, or assisting with the API, struct ifnet is now hidden from
drivers and userspace. This means drivers now use the IfAPI, currently
largely consisting of just getters and setters in place of direct
access, with tools/ifnet/convert_ifapi.sh being a good starting point
for adapting drivers.
In struct ifnet's place is if_t, an opaque pointer. "Blessed" parts of
the kernel, effectively anything sys/net*, modulo sys/netlink, can
directly access it, as those directories comprise the network stack, so
need direct access, as they manage the interfaces. Manpage updates
will be coming "soon", I'm hoping in the next few weeks, and will
likely need lots of review and editing.
Again, thanks for everyone's help. I hope the road forward with this
is not too bumpy.
- Justin
You can find this message on the freebsd-arch mailing list
Removal of
devel/kyua
Hi,
Kyua has been part of base since 13.0, today it means all supported versions.
The tests in /usr/tests usually have parity with Kyua in base, i.e. even if we
consider older unsupported systems then new features from the latest port
offer limited benefits. Anyway, these cases are not supported.
So, in order to avoid double work and user confusion, the devel/kyua port is
being considered for removal.
The motivation of this notification is to collect comments and suggestions in
case if the removal is not a good idea for some reasons.
Best regards,
igoro
igoro@ has been doing a lot of work on testing, particularly in pf. This
message went to to three mailing lists (
see it on
freebsd-hackers
)
Transport
rscheff@ is continuing his work on improving SACK behaviour. For the last while we have been discussing TSO behaviour and loss. Other changes are tidy ups to have we do calculations and other macros.
-
c9047eb7b30d tcp: allow TSO even while RX path is unordered
-
fb7c1ac5ac49 tcp: remove the looping on pcb count in tcp_destroy()
-
dded4e9e524c tcp: change SOCKBUF_* macros to SOCK_[RECV|SEND]BUF_* macros
-
22dcc8129385 tcp: Use segment size excluding tcp options for all cwnd calculations
-
8f5a2e216f4c tcp: fix cwnd recalculation during limited transmit
-
81f08f303805 siftr: remove pointless assertion
Network Stack
As mentioned above we have a nice series of commits tidying up the use of
ifnet
to make it private:
-
4d0c95384f9b net: Include private header in more needed places
-
edab5a280e0b LinuxKPI: 802.11: improve lladdr change to not use ifnet internals
-
f6efccaa35fe IfAPI: Remove temporary inclusion of if_private.h
-
57609cb2de14 LinuxKPI: Use IfAPI to get LLADDR
-
1eaecc214ea2 qlnx: Convert recent changes to IfAPI
-
b224af946a17 netlink: Don't directly access ifnet members
-
3f2eb1ac2326 dummymbuf: Explicitly include if_private.h
-
84d7ec4c657f bnxt: Use IfAPI accessors where able
Improvements to sendfile in the Linux compat code.
More tidying in the PCB code:
-
52ef944b0f6f inpcb: Constify address parameters to in6 pcb lookup routines
-
3bb15ffc4ab4 in6: Constify some sockaddr conversion functions
-
0b4539ee542f inpcb: gc unused argument of in_pcbconnect()
-
45a77bf23fa2 inpcb: Make some cosmetic improvements to in_pcbbind()
-
21d7ac8c79a3 inpcb: Remove some unused parameters in internal hash lookup functions
Netdev
It is not often you get a new media type, this comes with a nice explanation:
net: if_media for 1000Base-BX BiDi
1000Base-BX uses two wavelengths, commonly 1310nm, 1490nm, 1550nm, or
1590nm, in a Coarse Wavelength Division Multiplexing (CWDM) arrangement
so that a single fiber strand may carry both upstream and downstream.
It is sometimes referred to as BiDi for bi-directional usage of one
fiber.
Optics must be paired such that the RX and TX wavelengths cross over,
with one side often called U(pstream) and the other D(ownstream).
This technology is useful for increasing link density or working around
construction issues, and is also frequently used as a last mile delivery
technology for FTTx.
And a well known trick for the X520 for lab measurements (no, I don't know this trick).
MAN PAGES!
-
c607b3258f15 ntp: Switch to upstream man pages
-
f9f470f72c87 ifnet(9): Document the IFF_PALLMULTI flag
-
5b62dc782d48 p9fs.5: rename to p9fs.4
-
9e469437993b inet.4: drop "experimetal use" from net0 and net240 descriptions
-
13e82893d858 ena.4: optimize apropos and hardware
The only way you get a reputation for good documentation is by continuous consistent improvement.
Some nice changes in WiFi this week, iwlwifi device require firmware which has been in tree until now. It is going to move out of our source tree to somewhere else and be made available by a 'fw update' package of some sort.
-
52f8e99e7e5e iwlwifi: script to extract firmware details
-
2483a2d36803 release: add wifi-firmware-kmod@release to ship as package
-
8838f3c32ac0 rtwn: ensure TX work isn't scheduled during reset / abort
-
37e54466cf7a net80211: clean up / add more macros to check the frame types
-
8f1a2d507e25 iwm.4: move hardware list to .Sh HARDWARE and minor cleanup
-
93b30f1b6cae man4:: wifi manuals: revise .Sh HARDWARE + polish some
Firewalls
Fixes and tidying in pf and more probe points.
-
ac5e30a8073f pf: add probe points to pf_route(6)()
-
3b337076ba61 pf: remove stale no_df tests from fragemtation_*.sh
-
371bd29d4b22 pf: fix potential state key leak
-
452e6f549cdb pf: Merge pf_clear_srcnodes() and pf_kill_srcnodes()
-
65b20771713c pf tests: Simplify handling of pfctl -s
If you have used FreeBSD as a developer of a sysadmin you will have heard about
how amazing dtrace is. A major quality of life improvement for anyone having to
use dtrace for analysis on a live system are discrete probe points. They let
you get logical events and make it so you don't have to read kernel code to
guess at what is going on (ala
fdt
probes).
ipfilter is moving forward!
-
fabc5e81bd04 ipfilter: Remove dead code from "Virtualize ipfilter"
-
6e608d2990e9 ipfilter: ipfilter: Remove more dead code
-
650900cc2f60 ipfilter: Avoid holding a lock while stopping
-
a0618fbe19df Revert "ipfilter: Avoid stopping with a lock held"
-
fc32b5ddf3af ipfilter: Remove dead code
-
1fa6daaafd74 ipfilter: Avoid stopping with a lock held
-
9da30a23a5ec ipfilter: Include the IP address in error message
-
3a2cb65b6e6d ipfilter: Support printing of IPv6 addresses in error message
-
858a7a27f5c8 ipfilter: Close a bracket in the poolnode error message
-
8aae4220d766 ipfilter: Print the hash name when adding a hashnode fails
-
470c680cfbf5 ipfilter: Print the pool name when adding a poolnode fails
-
42935716286e ipfilter: Avoid overrunning the message buffer
Other stuff
This was an interesting one:
Use the correct idle routine on recent AMD EPYC servers
We have been incorrectly choosing the "hlt" idle method on modern AMD
EPYC servers for C1 idle. This is because AMD also uses the Functional
Fixed Hardware interface. Due to not parsing the table properly for
AMD, and due to a weird quirk where the mwait latency for C1 is
mis-interpreted as the latency for hlt, we wind up choosing hlt for
c1, which has a far higher wake up latency (similar to IO) of roughly
400us on my test system (AMD 7502P).
This patch fixes this by:
- Looking for AMD in addition to Intel in the FFH
(Note the vendor id of "2" for AMD is not publically documented, but
AMD has confirmed they are using "2" and has promised to document it.)
- Using mwait on AMD when specified in the table, and when CPUid says
its supported
- Fixing a weird issue where we copy the contents of cx_ptr for C1 and
when moving to C2, we do not reinitialize cx_ptr. This leads to
mwait being selected, and ignoring the specified i/o halt method
unless we clear mwait before looking at the table for C2.
I'm not sure what the actual impact of this change is, I would guess a reduction in power consumption on most servers (because most servers are at least 40% idle). It might also improve responsiveness, but probably not at a human observable level.
Please Send Feedback
No stream this week, there was a big gap in last nights sleep (hazards of having a young child) and I'm not sure I would make a lot of sense (if I ever do). I have moved the writing time to be around 9am Eastern Time and will aim to stream in this slot next week.
I would love to know if this summary was any help, if it was, or if you think I should cover other thing please let me know (thj@freebsd.org).
If you find a typo or have a correct let me know and I'll thank you at the end here.
You can see all prior posts here. ( rss )
My work on FreeBSD is supported by the FreeBSD Foundation , you can contribute to improving FreeBSD with code, documentation or financially by donating to the FreeBSD Foundation .