Add support for WiFi
GA
1d ago+19179+19179+01234567890123456789012345678901234567890123456789-3975-3975-0123456789012345678901234567890123456789
Allowed conformance testing of ns-3 mesh
Summary by cubic
Adds Linux WiFi support to DCE: kernel (LKL) nodes can now run mac80211 radios on ns-3 WiFi PHYs, so Linux 802.11s mesh points and ns-3 mesh points can share one channel and be compared frame by frame. Along the way, the deprecated libos (Linux 4.4) and FreeBSD kernel stacks are removed in favor of the Linux Kernel Library (LKL, Linux 6.12), and DCE grows real applications inside the simulation.
New Features
LklWifiDeviceandLklWifiHelpergive kernel nodes a mac80211 radio on an ns-3WifiPhywith legacy, HT, VHT and HE single user rates, A-MPDU aggregation and Block Acks; the radio passes control frames and ACK SNR to the kernel and no longer stalls simulated time on pending interrupts.dce-lkl-meshruns Linux and ns-3 dot11s mesh points on one channel with pcap outputs;dce-lkl-wifi-litmusexercises ns-3 wifi behaviors against Linux;dce-lkl-bootanddce-lkl-p2pcover kernel boot and TCP/UDP between kernels.- Real applications run inside the simulation:
dce-wifi-videostreams real ffmpeg video over 802.11n, anddce-x11-hello,dce-browseranddce-browser-nrrun X11/GTK4 clients and unmodified Chromium/Brave in windows on the host display. - New DCE support for those: AF_UNIX host socket passthrough, per-task thread-local storage, loading unmodified PIE executables, eventfd/epoll/futex, local socket SCM_RIGHTS, and crash handling that ends only the offending process.
Migration
ns3::LinuxSocketFdFactorynow means LKL;--with-lklreplaces--enable-kernel-stack.- FreeBSD stack, libos kernel, and their examples, helpers, and documentation are removed.
utils/build_lkl.shbuilds LKL (pinned Linux 6.12 commit plus patches);utils/build_kernel_deps.shbuilds the kernel programs,iw, and the extra example programs.