Add support for WiFi

GA
1d ago
+19179-3975

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

  • LklWifiDevice and LklWifiHelper give kernel nodes a mac80211 radio on an ns-3 WifiPhy with 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-mesh runs Linux and ns-3 dot11s mesh points on one channel with pcap outputs; dce-lkl-wifi-litmus exercises ns-3 wifi behaviors against Linux; dce-lkl-boot and dce-lkl-p2p cover kernel boot and TCP/UDP between kernels.
  • Real applications run inside the simulation: dce-wifi-video streams real ffmpeg video over 802.11n, and dce-x11-hello, dce-browser and dce-browser-nr run 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::LinuxSocketFdFactory now means LKL; --with-lkl replaces --enable-kernel-stack.
  • FreeBSD stack, libos kernel, and their examples, helpers, and documentation are removed.
  • utils/build_lkl.sh builds LKL (pinned Linux 6.12 commit plus patches); utils/build_kernel_deps.sh builds the kernel programs, iw, and the extra example programs.