FreeBSD Foundation Projects

High Available Storage Project

Project Status: On going

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.

The project will complete by February 2010.

Flattened Device Tree Project

Project Status: On going

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.

This project will complete by February 2010.

New Console Driver

Project Status: On going

FreeBSD Developer: Ed Schouten

Ed Schouten has been awarded a grant to write a new console driver for the FreeBSD project. We are excited to support Ed in providing a more efficient and user friendly console driver.

This project will allow Ed to add an additional abstraction layer to the kernel. This new layer, the terminal layer will be a layer that sits between the TTY layer, the kernel console (cngetc, cnputc) and the actual console driver. Right now we have a terminal emulator (libteken) that is part of Syscons. This terminal emulator will be moved into this terminal layer.

The advantage of having such a layer, is that the console driver itself does not have to care about any TTY semantics, streams of bytes, processing escape sequences, etc. It will just receive a set of character drawing, filling and copying actions. This should also make it easier to implement Unicode.

The project will be completed by the end of December 2009.

Problem Reporting Prototype

Project Status: On Hold

FreeBSD Developer: Mark Linimon

Mark Linimon has been awarded a grant to prototype a new problem reporting system for the FreeBSD project. This project will allow Mark to define the features, look-and-feel, and architecture of a future replacement of the project's current GNATs based system. Once the prototype is complete, it will be used to garner input from the FreeBSD community before a production system is implemented.

The project is on hold.

AVR32 Support

Project Status: On going

FreeBSD Developer: Arnar Mar Sig

Arnar Mar Sig will be developing AVR32 support for FreeBSD. AVR32 is a 32-bit RISC architecture targeted for low power high throughput embedded applications. The target platform is the NGW100 reference design board from Atmel.

The project will be completed by August 2009.

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: On going

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.

Status of the changes is: -CURRENT should no longer panic when you remove a USB drive without unmounting it first. The changes will be merged into 7.x soon.

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.