FreeBSD Foundation Funded Projects

The projects listed on this page are funded by donations given to The FreeBSD Foundation. There are many on-going projects being worked on by volunteers, companies, etc. for the FreeBSD Project. To find out more about these projects please visit the Project's website at:

http://www.freebsd.org/

To help fund future projects please consider making a donation to the foundation. You can do this by visiting:

http://www.freebsdfoundation.org/donate/

FreeBSD ARMv8 64-bit ARM port

Project Status: In Progress

Developers: Andrew Turner and Semihalf sp.j.

Officially known as AArch64, the 64-bit ARM architecture is also known as ARMv8 and arm64. The 64-bit ARM architecture is expected to find use in traditional server markets, in contrast to the embedded and mobile markets where 32-bit ARM is widely adopted.

The FreeBSD Foundation is collaborating with ARM, Cavium, Semihalf sp.j., and Andrew Turner to port FreeBSD to arm64. Cavium is contributing directly to the Foundation, supplying engineering expertise and hardware for the development community. Cavium's ThunderX platform provides a great match for FreeBSD's strength as a server operating system, and it supports up to 48 cores in a single package. ThunderX will be the initial reference target for this project, but ports to other arm64 platforms will follow.

This project's overall goal is to bring FreeBSD/arm64 to a Tier-1 status, including release media and pre-built package sets. More information about the arm64 port can be found on the FreeBSD wiki, and the in-progress source tree is available through the FreeBSD Foundation's GitHub account.

Multipath TCP for FreeBSD

Project Status: In Progress

TCP Extensions for Multipath Operation with Multiple Addresses (MPTCP) allows a mutli-homed host to utilize multiple network interfaces or paths on a single TCP session. The protocol is currently being standardized by the IETF in RFC 6824.

The Foundation is sponsoring a Master's research scholarship focused on Multipath TCP for FreeBSD. tarting from the existing implementation, the design of the stack is to be refined and additional features added with a goal of releasing a functional implementation by Mid 2015. Several incremental releases are also scheduled for 2014 and early 2015.

The aim of this project is to design and implement a FreeBSD MPTCP stack that enables further MPTCP research activities. Key to this is implementing an extensible design that helps simplify experimentation with congestion control, scheduling and path management schemes.

An experimental kernel patch has previously been released. Ongoing work is being developed against the HEAD branch.

Currently features being worked on include extending single-path modular CC code to operate with MPTCP connections, and the addition of a modular packet scheduling framework. Part of this process involves refactoring much of the existing MPTCP session management code and the creation of new multipath-specific protocol hooks, steps that decrease the coupling between the MPTCP code and the existing TCP code.

The Foundation is pleased to be able support university research using FreeBSD and to contribute to the enhancement of the Project through sponsorships like this one.

PCIe Hot-Plug

Project Status: In Progress

Developers: John-Mark Gurney

PCI Express (PCIe) Hot Plug is used on both laptops and severs to allow peripheral devices to be added or removed while the system is running. Laptops commonly include a hot-pluggable PCIe intefrace as either an ExpressCard slot or Thunderbolt interface. ExpressCard includes USB support, but ExpressCard PCIe devices like Gigabit Ethernet adapters and eSATA interfaces are only supported when they are present at boot, and removal may cause FreeBSD to crash.

The goal of this project is to allow these devices to be inserted and removed while FreeBSD is running. The work will integrate the basic infrastructure to support adding and removing devices, though it is expected that additional work wil be required to update individual drivers to support hot plug.

Updated AES modes for OpenCrypto

Project Status: Complete

Developers: John-Mark Gurney

This project adds modern AES modes to FreeBSD's OpenCrypto cryptographic framework, for use by IPsec and other consumers. This project is co-sponsored by the FreeBSD Foundation and Netgate, a leading vendor of BSD-based firewalls and networking gear.

The project adds new encryption modes while also importing infrastructure updates from OpenBSD giving FreeBSD users unprecedented support for high performance encrypted communications. New modes include AES-CTR and AES-GCM with hardware acceleration using Intel's AES-NI instructions.

This project's work was committed to FreeBSD in December 2014.

UEFI Boot Integration

Project Status: Complete

Developers: Ed Maste

The Unified Extensible Firmware Interface (UEFI) provides boot- and run-time services for x86 computers, and is a replacement for the legacy BIOS. This project will adapt the FreeBSD loader and kernel boot process for compatibility with UEFI firmware, found on contemporary servers, desktops, and laptops.

This project buildt on Benno Rice's sponsored project to improve the UEFI bootloader, which delivered a working proof-of-concept in 2013.

This project is was completed in 2014 and released with FreeBSD 10.1.

Newcons console driver integration

Project Status: In Progress

FreeBSD Developer: Aleksandr Rybalko, Ed Maste

The Newcons project will deliver an updated FreeBSD console driver with Unicode support and improved support for graphics modes. This will improve interoperability with X11 and Kernel Mode Setting (KMS) graphics drivers.

This project is currently being integrated, with an initial release in FreeBSD 10.1. Additional improvements to the new console infrastructure are ongoing.

Autofs-based Automounter

Project Status: Complete

FreeBSD Developer: Edward Tomasz Napierała

Limitations of the amd(8) automounter are a recurring problem reported by many FreeBSD users. The new automounter project intends to address these concerns.

The automounter is a cleanroom implementation of functionality available in most other Unix systems, using kernel support implemented via an autofs file system. The automounter supports a standard Sun map format and integrates with the Lightweight Directory Access Protocol (LDAP) service.

The FreeBSD Foundation worked with enterprise and university users to test the new automounter in existing LDAP-based environments, including some with thousands of map entries.

This project was completed in September 2014, and was released in FreeBSD 10.1.

Capsicum integration

Project Status: Complete

FreeBSD Developer: Paweł Jakub Dawidek

This project continued the integration of Capsicum and the Casper daemon into FreeBSD. A new structure for capability rights increased the number of possible capability rights to around 1000, allowing for future development while maintaining API/ABI compatibility. The project also merged Casper, libcapsicum, and libcasper to FreeBSD.

This project was completed in early 2014.

Native iSCSI kernel stack

Project Status: Complete

FreeBSD Developer: Edward Tomasz Napierala

This project delivered a native in-kernel iSCSI stack (both target and initiator) for the increasingly popular block storage protocol. There were a number of existing iSCSI implementations that support FreeBSD, but the project lacked a high performance and reliable in-kernel target. The iSCSI stack was first available in FreeBSD 10.0. Additional optimization and hardware offload support will follow in subsequent releases.

This project was completed in early 2014.

Superpages for ARMv7

Project Status: Completed

FreeBSD Developer: Zbigniew Bodek, Semihalf

The ARM architecture is expanding into higher-end server computing markets, and supporting sophisticated features of the platform is key to FreeBSD's success in these new areas. This project added superpage support for increased performance on large-memory workloads.

This work is specifically targeted at the ARMv7 architecture, while maintaining compatibility with ARMv6. The project is jointly funded by the FreeBSD Foundation and Semihalf.

This project was completed in September 2013.

Documentation project infrastructure enhancements

Project Status: Completed

FreeBSD Developer: Gabor Kovesdan

The FreeBSD Documentation Project relied on outdated and obsolete tools for producing the FreeBSD Handbook and other documentation. This project upgraded the documentation set to DocBook 5.0 and provided an improved rendering process.

This project was completed in July 2013.

Growfs for mounted filesystems

Project Status: Complete

FreeBSD Developer: Edward Tomasz Napierała

This project makes it possible to grow a UFS or ZFS file system while mounted read-write. This includes changes to both file systems, GEOM infrastructure, and drivers.

From a system administrator's point of view this makes it possible to enlarge a partition using gpart(8) and then resize the file system it contains using growfs(8), without having to unmount it first. This is particularly useful for enlarging the root file system, especially important for virtual machines.

This project was completed in November 2012.

Implementing auditdistd daemon

Project Status: Completed

FreeBSD Developer: Paweł Jakub Dawidek

The FreeBSD audit facility provides fine-grained, configurable logging of security-relevant events. One of the key purposes of logging security events is postmortem analysis in case of system compromise. Currently the kernel can push audit records directly into a file or make them available through /dev/auditpipe device. Because audit logs are stored locally by the kernel, an attacker has access to them once the system is compromised, which enables him to remove trails of his activity.

The auditdistd project goal is to securely and reliably distribute audit records over the TCP/IP network from a local auditdistd daemon to a remote auditdistd daemon. In case of source system compromise, attacker's activity can be analysed using data collected by the remote system, as only remote system's audit logs can be trusted then.

This project was completed in February 2012.

Analyzing the Performance of FreeBSD's IPv6 Stack

Project Status: Completed

FreeBSD Developer: Bjoern Zeeb

The FreeBSD Foundation is pleased to announce that it has awarded Bjoern Zeeb a grant to analyze the performance of FreeBSD's IPv6 stack. This project is jointly sponsored with iXsystems.

Last year, Bjoern improved FreeBSD IPv6 support, allowing the possibility to build a FreeBSD system without IPv4 support. This project will continue on this work and concentrate on the kernel, looking at the performance of FreeBSD's IPv6 stack. Various parties have seen lower performance when comparing IPv4 to IPv6 on FreeBSD. While the numbers seem to differ between releases the causes are mostly unknown.

The project will carry out a detailed performance analysis starting with benchmarking IPv6 to IPv4 to get up-to-date numbers to better understand where we are. It will then continue to identify the origins of differences in performance, and where possible, directly address them or identify areas of future work. Having initial benchmark numbers will allow changes to be evaluated by re-running the measurements and quantifying the improvements.

"As the world starts to roll out IPv6 and traffic patterns shift from IPv4 to IPv6, not only correctness and stability, but also feature parity and performance matter," said developer Bjoern Zeeb. "Getting the performance numbers aligning with IPv4 will ensure that our users will not need more resources when using IPv6."

DIFFUSE for FreeBSD

Project Status: In Progress

FreeBSD Developer: Swinburne University of Technology's Centre for Advanced Internet Architectures

DIFFUSE (Distributed Firewall and Flow-shaper Using Statistical Evidence) is an extension to the FreeBSD IPFW firewall subsystem developed by CAIA. It allows IPFW to classify traffic based on statistical properties of flows being observed in realtime, and instantiate network actions across a distributed set of "action nodes" for particular flows if required.

This project will tidy up and integrate the existingDIFFUSE prototype into FreeBSD, and incorporate a number of important new features. Integration of DIFFUSE into FreeBSD will increase FreeBSD's utility to designers and implementers of FreeBSD-based networking infrastructure.

Network architects frequently require the ability to classify different traffic types flowing across a network, typically using packet inspection capabilities of base system tools such as ipfw and pf. Traffic classification then enables the provision of customized service levels to different traffic types (such as priority packet queuing and forwarding, or allocation of specific bandwidth guarantees).

DIFFUSE uses machine learning techniques to enable robust and efficient classification of IP traffic flows based on their unique statistical properties in addition to traditional inspection of packet header or payload contents. DIFFUSE also allows traffic classification to occur in one place (e.g., in the core of a network) and trigger traffic shaping and differentiation elsewhere (e.g., at the edges of a network). DIFFUSE has applications in ISP, residential broadband and large corporate network scenarios to name a few.

The project has been delayed from its original late 2011 completion date and is expected to appear in FreeBSD by early 2014.

Implementing xlocale APIs

Project Status: Completed

FreeBSD Developer: David Chisnall

The C standard library (libc) is one of the most important parts of a UNIX system as most programs interact with the kernel through interfaces written in C. Porting code between platforms with similar libc implementations is trivial and if something is supported by libc, higher-level languages can use it without being reimplemented.

Over time, the C language has slowly evolved to modern multicore systems, but there are still some places that are problematic. One of these is localization as C began originally had no localization support. FreeBSD libc and Darwin libc (used by Mac OS X) are similar, making it much easier to port code from OS X to FreeBSD than from OS X to Linux. The libc used by OS X supports a set of extended locale functions (xlocale) that allow locale to be set on a per-thread basis.

Additionally, libc++, from the LLVM project, was originally developed on Darwin, so it uses xlocale for most of the C++ locale support. The lack of this support is the primary obstacle to porting it to FreeBSD.

Once xlocale is supported in FreeBSD libc, we can port libc++ to FreeBSD, giving us an MIT-licensed C++11 standard library implementation. This, in conjunction with Clang and libcxxrt, means that the entire C++ stack in FreeBSD will be free of any GNU code. This leaves the linker as the only significant obstacle to a GPL-free FreeBSD 10.

The project completed in September 2011.

Feed-Forward Clock Synchronization Algorithms

Project Status: Completed

FreeBSD Developer: University of Melbourne

The FreeBSD Foundation is pleased to announce that Julien Ridoux and Darryl Veitch at the University of Melbourne have been awarded a grant to implement support of feed-forward clock synchronization algorithms.

The Network Time Protocol (NTP) is widely used for synchronization over the network and the ntpd daemon is the current reference synchronization algorithm. The system clock in FreeBSD is currently designed with ntpd in mind, leading to strong feedback coupling between the kernel and the synchronization daemon.

The RADclock is an example of an alternative class of synchronization algorithms based on feed-forward principles. This project will provide the core support for feed-forward algorithms, so that alternatives to ntpd can be developed and tested. The central motivation for this is the strong potential of such approaches for highly robust and accurate synchronization.

Beyond this, virtualization is one of the next major challenges faced by time keeping systems. The current feedback synchronization model is complex and introduces its own dynamics, an approach that is not suited to the requirements of virtualization. Feed-forward based synchronization offers a cleaner and simpler approach, which is capable of providing accurate time keeping over live migration of virtual machines.

This project completed in September 2011.

Five New TCP Congestion Control Algorithms

Project Status: Completed

FreeBSD Developer: Swinburne University

The FreeBSD Foundation is pleased to announce that Swinburne University of Technology's Centre for Advanced Internet Architectures has been awarded a grant to implement Five new TCP Congestion Control Algorithms in FreeBSD.

Correctly functioning congestion control (CC) is crucial to the efficient operation of the Internet and IP networks in general. CC dynamically balances a flow's throughput against the inferred impact on the network, lowering throughput to protect the network as required.

The FreeBSD operating system's TCP stack currently utilizes the defacto standard NewReno loss-based CC algorithm, which has known problems coping with many aspects of modern data networks like lossy or large bandwidth/delay paths. There is significant and ongoing work both in the research community and industry to address CC related problems, with a particular focus on TCP because of its ubiquitous deployment and use.

Swinburne University of Technology's ongoing work with FreeBSD's TCP stack and congestion control implementation has progressively matured. This project aims to refine our prototypes and integrate them into FreeBSD.

The project completed in March 2011.

GEM, KMS, and DRI Support for Intel Drivers

Project Status: Completed

FreeBSD Developer: Konstantin Belousov

The FreeBSD Foundation is pleased to announce that Konstantin Belousov has been awarded a grant to implement support of GEM, KMS, and DRI for Intel Drivers. This project is being co-sponsored by iXsystems.

The project is to implement GEM, port KMS, and write new DRI drivers for Intel Graphics, including the latest Sandy Bridge generation of integrated graphic units. The work should allow the latest Intel open-source driver to run on FreeBSD, expanding the range of hardware where FreeBSD is suitable for the desktop.

"The Foundation's sponsored project will allow me to spend much more time on this interesting work, and hopefully resolve the big issue for continuing use of FreeBSD on the desktop," said Konstantin.

"Adding support for GEM/KMS will allow both FreeBSD and PC-BSD to run with enhanced native graphic support on forthcoming advanced architectures with integrated, 3d accelerated graphical capabilities," says Matt Olander, Chief Technology Officer at iXsystems, Inc. "FreeBSD has long been dominant in the server market and this is one more step towards making FreeBSD a complete platform for netbooks, laptops, desktops, and servers. We are very pleased to be a part of this project."

Konstantin is a software developer, living in Kiev, Ukraine. He was given a src commit bit in 2006, and since then has spent most of his free time on the OS, making bug fixes and implementing things he considers interesting. He currently is also serving the project as release engineer and core team member.

This project was completed in August 2011.

IPv6 Support in FreeBSD and PC-BSD

Project Status: Completed

FreeBSD Developer: Bjoern Zeeb

The FreeBSD Foundation is pleased to announce that it has awarded Bjoern Zeeb a grant to improve the maturity of IPv6 support in FreeBSD and PC-BSD. This project is jointly sponsored with iXsystems.

FreeBSD's KAME-based reference implementation of IPv6 first appeared in FreeBSD 4.0, and can be found in a broad range of FreeBSD-derived commercial products. To date, IPv6 has been an optionally configured feature present in the default FreeBSD kernel; however, IPv6 configuration has implied configuration of IPv4. With much "IPv6-ready" application software relying on dual-stack behavior, broken IPv6 applications go unnoticed. Adding support for an IPv6 kernel without IPv4 will make FreeBSD and PC-BSD an ideal test and development platform for both open source and proprietary IPv6-aware application software.

"Narrowing down the code base to not rely on legacy IP will help us to identify OS and application components requiring improvement to work well in an IPv6 environment. This project will help to ensure a bright IPv6 future, as FreeBSD is used throughout the Internet: root name servers, storage appliances, routers, firewalls, TVs, desktop and mobile systems, and many of the world's busiest web sites," said Mr. Zeeb. FreeBSD Foundation director and FreeBSD core team member Robert Watson described the project as critical to the future of FreeBSD, "Bjoern's work will not only improve the maturity of our IPv6 implementation, but also motivate improvement of applications used in million of deployed FreeBSD and FreeBSD-derived systems." The project will also improve the quality and performance of FreeBSD's IPv6 stack.

Bjoern Zeeb is a consultant based in Germany and has been an active FreeBSD committer since 2004. He is currently also a member of the FreeBSD Security and Release Engineering teams, and was recently awarded the Itojun Service Award for his work on IPv6 in FreeBSD.

This project was completed in June 2011.

BSNMP Improvements Project

Project Status: Completed

FreeBSD Developer: Shteryana Shopova

The FreeBSD Foundation is pleased to announce that Shteryana Shopova has been awarded a grant to make improvements to BSNMP.

This project includes several enhancements to the existing FreeBSD SNMP framework, including SNMPv3-compliant user authentication, packet encryption and view-based access control. In addition, the project also includes a new module that will allow full SNMP management and monitoring of the FreeBSD wireless networking stack. When the project is completed, FreeBSD should be the OS of choice when building open source-based embedded wireless appliances due to the advanced capabilities of its wireless network stack, and the light-weight, secure and complete management solution that bsnmpd(1) will provide out of the box. Existing FreeBSD installations that use bsnmpd(1) for monitoring will also benefit from the added security and finer-grained access-control to SNMP data.

"SNMP is the defacto standard for network monitoring," said Shteryana Shopova, FreeBSD developer. She also added, "SNMP is used everywhere - in network servers, switches, routers, firewalls, workstations, ip phones, printers, UPSs, all sorts of embedded appliances. I am happy to have the opportunity to work on several additions to bsnmpd(1) that have been requested by the FreeBSD community."

This project was completed in December 2010.

Resource Containers Project

Project Status: Completed

FreeBSD Developer: Edward Tomasz Napierala

Edward Tomasz Napierala has been awarded a grant to implement resource containers and a simple per-jail resource limits mechanism.

Unlike Solaris zones, the current implementation of FreeBSD Jails does not provide per-jail resource limits. As a result, users are often forced to replace jails with other virtualization mechanisms. The goal of this project is to create a single, unified framework for controlling resource utilisation, and to use that framework to implement per-jail resource limits. In the future, the same framework might be used to implement more sophisticated resource controls, such as Hierarchical Resource Limits, or to implement mechanisms similar to AIX WLM. It could also be used to provide precise resource usage accounting for administrative or billing purposes.

"It's great that the Foundation decided to fund this project", Edward noted. "It will make jail-based virtualization a much better choice in many scenarios, for example for Virtual Private Server providers."

This project was completed in early 2011.

DAHDI FreeBSD driver port

Project Status: Completed

FreeBSD Developer: Max Khon

Max Khon has been awarded a grant to finish the DAHDI FreeBSD driver port.

The purpose of DAHDI/FreeBSD project is to make it possible to use FreeBSD as a base system for software PBX solutions.

DAHDI (Digium/Asterisk Hardware Device Interface) is an open-source device driver framework and a set of HW drivers for E1/T1, ISDN digital and FXO/FXS analog cards (http://www.asterisk.org/dahdi/). Asterisk is one of the most popular open-source software PBX solutions (http://www.asterisk.org/).

The project includes porting DAHDI framework and HW drivers for E1/T1, FXO/FXS analog and ISDN digital cards to FreeBSD. This also includes TDMoE support, software and HW echo cancellation (Octasic, VPMADT032) and HW transcoding support (TC400B). The work is ongoing in the official DAHDI SVN repository with the close collaboration with DAHDI folks at Digium.

Currently, most of the DAHDI bits have been ported, including the DAHDI framework itself, HW drivers, TDMoE drivers, drivers for software and HW echo cancellation (Octasic, VPMADT032) and HW transcoding (TC400B). The project is hosted in the official DAHDI SVN repository.

misc/dahdi in the FreeBSD ports collection now contains the most recent bits of DAHDI/FreeBSD and also some stuff that is not available in DAHDI/FreeBSD SVN due to licensing and copyright restrictions. These include the OSLEC echo canceller and the experimental zaphfc driver.

This project was completed in September 2010.

DTrace Userland Project

Project Status: Completed

FreeBSD Developer: Rui Paulo

Rui Paulo has been awarded a grant to add DTrace userland support to FreeBSD.

DTrace is a general purpose and lightweight tracing framework that allows administrators, developers and users to investigate causes of system failure or performance bottlenecks. The FreeBSD operating system has had support for kernel-only DTrace since FreeBSD 8.0, but DTrace userland support was missing. Having userland support in DTrace allows inspection of userland software itself and its correlation with the kernel, thus allowing a much better picture of what exactly is going on behind the scenes.

This project will first concentrate on adding libproc support for symbol to address mapping, address to symbol mapping, breakpoint setup and the rtld interactions with DTrace. Next it will focus on DTrace process control, importing the pid provider and adapting it to FreeBSD and porting the userland statically defined probe provider (usdt). Finally it will bring in the plockstat provider.

"By having userland DTrace support, companies can make their products perform much better on FreeBSD due to the fact that they now have access to this amazing tool," said FreeBSD developer Rui Paulo. He also said, "When we mix the userland support with the kernel side DTrace support, we can also make FreeBSD a better operating system because we can investigate performance bottlenecks much easier."

The project was completed in September 2010.

FreeBSD Jail Based Virtualization Project

Project Status: Completed

FreeBSD Developer: Bjoern Zeeb

Bjoern A. Zeeb has been awarded a grant to improve FreeBSD's jail based virtualization infrastructure and to continue to work on the virtual network stack. His employer, CK Software GmbH is matching the Foundation's funding with hours.

FreeBSD has been well known for its jail based virtualization during the last decade. With the import of the virtual network stack, FreeBSD's operating system level virtualization has reached a new level.

This project includes cleanup of two years of import work and development and, more notably, brings the infrastructure for a network stack teardown. Cleanly shutting down a network stack in FreeBSD will be the major challenge in the virtualization area to get the new feature to production ready quality for the 9.x release lifecycle.

Further, the project includes generalization of the virtual network stack framework, factoring out common code. This will provide an infrastructure and will ease virtualization of further subsystems like SYSV/Posix IPC with minimal overhead. All further virtualized subsystems will immediately benefit from shared debugging facilities, an essential feature for early adopters of the new technology.

"Improved jail based virtualization support, that continues to be very lightweight and as easily manageable as classic jails, will be a killer feature for the next few years," said Bjoern A. Zeeb, FreeBSD developer. He also added, "It will allow people to partition their FreeBSD server, run simulations without racks of hardware, or provide thousands of virtual instances in hosting environments fairly easy and efficiently. While this follows the trend of green computing, it also adds to FreeBSD's virtualization portfolio with Xen or other more heavyweight hypervisor support, which can be mixed with jails as needed."

While work in this area will have to continue, the funding for this project ended in July 2010.

High Available Storage Project

Project Status: Completed

FreeBSD Developer: Pawel Jakub Dawidek

Pawel Jakub Dawidek has been awarded a grant to implement storage replication software that will enable users to use the FreeBSD operating system for highly available configurations where data has to be shared across the cluster nodes. The project is partly being funded by OMCnet Internet Service GmbH and TransIP BV.

The software will allow for synchronous block-level replication of any storage media (GEOM providers, using FreeBSD nomenclature) over the TCP/IP network and for fast failure recovery. HAST will provide storage using GEOM infrastructure, which means it will be file system and application independent and could be combined with any existing GEOM class. In case of a master node failure, the cluster will be able to switch to the slave node, check and mount UFS file system or import ZFS pool and continue to work without missing a single bit of data.

Flattened Device Tree Project

Project Status: Completed

FreeBSD Developer: Rafal Jaworowski

Rafal Jaworowski and Semihalf has been awarded a grant to provide FreeBSD with support for the flattened device tree (FDT) technology. This project allows for describing hardware resources of a computer system and their dependencies in a platform-neutral and portable way.

The main consumers of this functionality are embedded systems whose hardware resources assignment cannot be probed or self-discovered. The FDT idea is inherited from Open Firmware IEEE 1275 device-tree notion (part of the regular Open Firmware implementation), and among other deployments is used as a basis for Power.org's embedded platform reference specification (ePAPR).

You can find out more about the project at http://wiki.freebsd.org/FlattenedDeviceTree.

Wireless Mesh Support

Project Status: Completed

FreeBSD Developer: Rui Paulo

Rui Paulo will be implementing the forthcoming IEEE 802.11s wireless mesh standard for FreeBSD. Wireless mesh networks are expected to become widespread as routers and network appliances deploy them, allowing wireless networks to be built and extended dynamically. Support for the standard will allow FreeBSD consumers to take advantage of this new technology.

Improvements to the FreeBSD TCP Stack.

Project Status: Completed

FreeBSD Developer: Lawrence Stewart and Swinburne University of Technology's Centre for Advanced Internet Architectures (CAIA)

This three-part project will include implementing Appropriate Byte Counting (ABC) RFC3465 support, adapting and merging CAIA's Statistical Information for TCP Research (SIFTR) TCP analysis tool into FreeBSD, and making improvements to the TCP reassembly queue.

The project completed July 2009.

Make removing disk devices with mounted filesystems on them safe.

Project Status: Completed

FreeBSD Developer: Edward Tomasz Napierala

The project is to make FreeBSD tolerate the removal of active disk devices, such as when a USB flash device with a mounted filesystems is physically detached by a user. Currently the system may panic in this situation. The work involves adding proper reference counting to strategic portions of the kernel and modifying filesystems to properly handle "device lost" errors.

Network Stack Virtualization Project

Project Status: Completed

FreeBSD Developer: Bjoern Zeeb

The virtualized network stack will significantly enhance FreeBSD's jail functionality, allowing jails to have their own complete and locally administered network stacks, including firewalls, routing, and IPsec configurations. The Foundation will be sponsoring Bjoern Zeeb, a FreeBSD network developer, to enhance the existing prototype, now being merged into FreeBSD 8.x, as well as provide code review.

Improving the Hardware Performance Counter Support

Project Status: Completed August 6, 2007

FreeBSD Developer: Joseph Koshy

The FreeBSD Foundation, with a generous grant from Google, teamed up to sponsor Joseph Koshy in improving the hardware performance counter support in FreeBSD. The goal of the project was the addition of callgraph support in the hwpmc driver. With callgraph support, developers can more clearly visualize performance issues through the exact code paths, rather than a specific function which may only exhibit issues through one path, but not others. In addition to the improvements to this software, Google provided funding for 2 modern CPU machines for development and testing. These new machines were placed in the network performance cluster hosted by Sentex Corp in Ontario, Canada.

Following is a more detailed list of what was added:

  • The hwpmc driver now supports callchain capture, for both the kernel and for user processes.
  • The machine-dependent and machine-independent parts of the kernel for the i386 and amd64 architectures (the ones that hwpmc is available on) have been so enhanced to support extra functionality needed by hwpmc(4) for callgraph support.
  • The libpmc(3) library has been enhanced to process the new information collected by the kernel module.
  • The pmcstat(8) tool produces two kinds of reports using captured callchain data, (a) traditional gprof(1) callgraphs and (b) a callchain summary, for two different 'views' into the collected data.
  • Manual pages for the driver hwpmc(4), command-line tool pmcstat(8), and interface library pmc(3) now reflect the new features available.

How to access the code

The callchain capture work is in CVS now.

Network Stack Virtualization Project

Project Status: Completed

FreeBSD Developer: Marko Zec

The network stack virtualization project aims at extending the FreeBSD kernel to maintain multiple independent instances of networking state. This will allow for complete networking independence between jails on a system, including giving each jail its own firewall, virtual network interfaces, rate limiting, routing tables, and IPSEC configuration.

The prototype, which is kept in sync with FreeBSD -CURRENT, is now sufficiently stable for testing. It virtualizes the basic INET and INET6 kernel structures and subsystems, including IPFW and PF firewalls, and more. The next step is to have the IPSEC code fully virtualized, and refine and document the management APIs. The short-term goal is to deliver production-grade kernel support for virtualized networking for FreeBSD 7.0-RELEASE (as a snap-in kernel replacement), while continuing to keep the code in sync with -CURRENT for possible merging at a later date.