Category Archives: funded project

New Funded Project: Improved IPv6 Support

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.

New Funded Project: Improved IPv6 Support

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.

Summary of Five New TCP Congestion Control Algorithms Project

Grenville Armitage has provided a summary of the completed TCP Congestion Control Algorithms project:

Background

TCP is a crucial part of any modern operating system. FreeBSD's standard "NewReno" congestion control (CC) is not able to fully utilize the high capacity links available today. A range of newer CC algorithms have emerged (and continue to emerge) from the networking research community over the past 15+ years. These include traditional loss-based algorithms (where packet losses indicate network congestion) and delay-based algorithms (where changes in Round Trip Time, RTT, are used to infer network congestion).

However, to date FreeBSD's TCP stack has not had an easy-to-use mechanism for introducing new CC algorithms. In recent years the Centre for Advanced Internet Architectures (CAIA) at Swinburne University of Technology has (with the support of the Cisco University Research Program Fund at Community Foundation Silicon Valley) been developing a range of extensions to the FreeBSD TCP stack. These included a modular framework for adding new CC algorithms and new modular implementations of the existing NewReno algorithm, four other algorithms from the literature (H-TCP, CUBIC, Vegas and HD) and a novel algorithm developed at CAIA (CHD). In mid-2010 the FreeBSD Foundation funded CAIA to complete, tidy up and commit a number of these key enhancements to the FreeBSD TCP stack.

Delivered

Our project, "Five New TCP Congestion Control Algorithms for FreeBSD", has delivered
the following enhancements to FreeBSD's TCP stack:
  • Modular congestion control framework.
  • Khelp (Kernel Helper) and Hhook (Helper Hook) frameworks.
  • Basic Khelp/Hhook (Kernel help/hook) integration with the TCP stack.
  • ERTT (Enhanced Round Trip Time) Khelp module for delay-based TCP algorithms.
  • Modularised implementations of NewReno, CUBIC and HTCP loss-based TCP CC algorithms.
  • Modularised implementations of Vegas, "HD" and "CHD" delay-based TCP CC algorithms.
  • Technical report comparing the computational overhead associated with TCP before and after integrating the new frameworks and modularised NewReno algorithm

Benefits

Each congestion control algorithm is implemented as a loadable kernel module. Algorithms can be selected to suit the application/network characteristics and requirements of the host's installation. The modular CC framework also makes it much easier for developers to implement new algorithms, allowing FreeBSD's TCP to be at the forefront of advancements in this area, while still maintaining the stability of its network stack.

CUBIC and HTCP are variants of TCP that provide significant performance improvements (relative to NewReno) over high bandwidth, high latency paths. Vegas, HD, and CHD utilise RTT fluctuations to provide a more timely indication of network congestion -- by not forcing network queues to overflow, delay-based CC algorithms can help to keep queuing delays low along a network path. CHD is also tolerant of packet losses that are unrelated to congestion (such as can occur over wireless links).

In addition, the Khelp/Hhook frameworks provide useful kernel infrastructure which are not specific to the TCP stack and we anticipate they will be used elsewhere in the kernel in the future to provide other unrelated enhancements to FreeBSD.

Participants

Code development, testing, and documentation: David Hayes and Lawrence Stewart

Editorial review of code and documentation: Rui Paulo and Bjoern Zeeb

Project supervision: Grenville Armitage

Project URL: http://caia.swin.edu.au/freebsd/5cc/

Summary of Five New TCP Congestion Control Algorithms Project

Grenville Armitage has provided a summary of the completed TCP Congestion Control Algorithms project:

Background

TCP is a crucial part of any modern operating system. FreeBSD's standard "NewReno" congestion control (CC) is not able to fully utilize the high capacity links available today. A range of newer CC algorithms have emerged (and continue to emerge) from the networking research community over the past 15+ years. These include traditional loss-based algorithms (where packet losses indicate network congestion) and delay-based algorithms (where changes in Round Trip Time, RTT, are used to infer network congestion).

However, to date FreeBSD's TCP stack has not had an easy-to-use mechanism for introducing new CC algorithms. In recent years the Centre for Advanced Internet Architectures (CAIA) at Swinburne University of Technology has (with the support of the Cisco University Research Program Fund at Community Foundation Silicon Valley) been developing a range of extensions to the FreeBSD TCP stack. These included a modular framework for adding new CC algorithms and new modular implementations of the existing NewReno algorithm, four other algorithms from the literature (H-TCP, CUBIC, Vegas and HD) and a novel algorithm developed at CAIA (CHD). In mid-2010 the FreeBSD Foundation funded CAIA to complete, tidy up and commit a number of these key enhancements to the FreeBSD TCP stack.

Delivered

Our project, "Five New TCP Congestion Control Algorithms for FreeBSD", has delivered
the following enhancements to FreeBSD's TCP stack:
  • Modular congestion control framework.
  • Khelp (Kernel Helper) and Hhook (Helper Hook) frameworks.
  • Basic Khelp/Hhook (Kernel help/hook) integration with the TCP stack.
  • ERTT (Enhanced Round Trip Time) Khelp module for delay-based TCP algorithms.
  • Modularised implementations of NewReno, CUBIC and HTCP loss-based TCP CC algorithms.
  • Modularised implementations of Vegas, "HD" and "CHD" delay-based TCP CC algorithms.
  • Technical report comparing the computational overhead associated with TCP before and after integrating the new frameworks and modularised NewReno algorithm

Benefits

Each congestion control algorithm is implemented as a loadable kernel module. Algorithms can be selected to suit the application/network characteristics and requirements of the host's installation. The modular CC framework also makes it much easier for developers to implement new algorithms, allowing FreeBSD's TCP to be at the forefront of advancements in this area, while still maintaining the stability of its network stack.

CUBIC and HTCP are variants of TCP that provide significant performance improvements (relative to NewReno) over high bandwidth, high latency paths. Vegas, HD, and CHD utilise RTT fluctuations to provide a more timely indication of network congestion -- by not forcing network queues to overflow, delay-based CC algorithms can help to keep queuing delays low along a network path. CHD is also tolerant of packet losses that are unrelated to congestion (such as can occur over wireless links).

In addition, the Khelp/Hhook frameworks provide useful kernel infrastructure which are not specific to the TCP stack and we anticipate they will be used elsewhere in the kernel in the future to provide other unrelated enhancements to FreeBSD.

Participants

Code development, testing, and documentation: David Hayes and Lawrence Stewart

Editorial review of code and documentation: Rui Paulo and Bjoern Zeeb

Project supervision: Grenville Armitage

Project URL: http://caia.swin.edu.au/freebsd/5cc/

Feed-Forward Clock Synchronization Algorithms Project

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 will conclude in March 2011.

Feed-Forward Clock Synchronization Algorithms Project

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 will conclude in March 2011.

Five new TCP Congestion Control Algorithms Project

The FreeBSD Foundation is pleased to announce that Swinburne University's 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 their prototypes and integrate them into FreeBSD.

The project will conclude in January 2011.

Addendum:

The five protocols are:

Update on DAHDI Project

Max Khon has completed the DAHDI Project and provides the following report:

I am pleased to announce the completion of the DAHDI/FreeBSD project.

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.

The main goal of this funded project was to make it possible to use FreeBSD as a base system for software PBX solutions.

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.

I will continue periodic merges from DAHDI/Linux SVN on a regular basis and roll out new DAHDI/FreeBSD releases. These will most likely be synchronized with DAHDI/Linux releases.

Summary of DTrace Project

Rui Paulo recently committed to FreeBSD HEAD the userland DTrace support, marking the completion of this FreeBSD Foundation sponsored project. Rui summarizes his work as follows:

DTrace, which originated on Solaris 10, is a comprehensive tracing framework that allows the instrumentation of software. FreeBSD has had DTrace support since 7.0, but until now tracing userland programs was not possible. Now that this project is complete, anyone can use DTrace with userland programs.

Tracing and instrumenting userland programs is very important because it allows the understanding of what's going on, especially on highly complex systems such as databases, web servers, and language interpreters. Since DTrace on FreeBSD now has the ability to instrument both the kernel and the userland program, you can get very meaningful data on how your program is behaving and why.

Companies building products on FreeBSD now have the ability to create better products and find about problems faster then before.

This project focused on allowing the creation of DTrace pid probes, userland statically defined probes (aka USDT), importing plockstat (a DTrace utility to measure lock contention in the pthread library), importing dtruss (a system call tracing utility similar to ktrace) and enabling FreeBSD DTrace support on MySQL and PostgreSQL.

Merges to upcoming FreeBSD releases (8.2 and 7.4) are being thought out, but it's likely they will happen.

Update on FreeBSD Jail Based Virtualization Project

Bjoern Zeeb has provided a summary regarding the completion of the funded portion of the FreeBSD Jail Based Virtualization Project:

I am happy to report that the funded parts of the FreeBSD Jail Based Virtualization project are completed. Some of the results have been shipping with 8.1-RELEASE while others are ready to be merged to HEAD.

Jails have been the well known operating system level virtualization technique in FreeBSD for over a decade. The import of Marko Zec's network stack virtualization has introduced a new way for abstracting subsystems. As part of this project, the abstraction framework has been generalized. Together with Jamie Gritton's flexible jail configuration syscalls, this will provide the infrastructure for, and will ease the virtualization of, further subsystems without much code duplication. The next subsystems to be virtualized will likely be SYSV/Posix IPC to help, for example, PostgreSQL users. This will probably be followed by the process namespace.

Along with the framework, debugging facilities, such as the interactive kernel debugger, have been enhanced so that every new subsystem will be able to immediately make use of these improvements without modifying a single line of code. Libjail and jls can now work on core dumps and netstat is able to query individual live network stacks attached to jails.

For the virtual network stack, work was focused on network stack teardown, a concept introduced with the network stack virtualization. The primary goal was to prototype a shutdown of the (virtual) network stacks from top to bottom, which means letting interfaces go last rather than first and still being able to cleanly shutdown TCP connections. Good progress was made, but a lot of code over the last two decades was never written in a way to be cleanly stopped. Work on this will have to continue, along with virtualizing the remaining network subsystems to allow long term stability and a leak and panic free shutdown. As a side effect, users of non-virtualized network stacks will also benefit, as other general network stack problems are identified and fixed along the way.

I am happy to see more early adopters, former OpenSolaris users, and people contributing code or reporting problems and would like to encourage people to further support this project.

My special thanks go the FreeBSD Foundation and CK Software GmbH for having sponsored this project, as well as to John Baldwin and Philip Paeps for helping with review and excellent suggestions.

DAHDI FreeBSD Driver Project

We are pleased to announce that Max Khon has been awarded a grant to finish the DAHDI (formerly known as Zaptel) FreeBSD driver port.

The purpose of the 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 hardware drivers for E1/T1, ISDN digital and FXO/FXS analog cards. Asterisk is one of the most popular open source software PBX solutions.

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

The project is nearing its completion: DAHDI framework and HW drivers telephony cards has been ported and tested. There are a number of success stories from early adopters who use E1/T1 and FXO/FXS cards on FreeBSD for several months.

This project will be completed in September 2010.

SIFTR Committed

On July 3, Lawrence Stewart committed SIFTR (Statistical Information For TCP Research) to HEAD. SIFTR was part of the Improvements to the FreeBSD TCP Stack project that the Foundation funded last year. SIFTR is a kernel module that logs a range of statistics on active TCP connections to a log file. It provides the ability to make highly granular measurements of TCP connection state, aimed at system administrators, developers and researchers.

Resource Containers Project

We are pleased to announce that 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 will be completed December, 2010.

Dtrace Userland Project

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 should be completed by September 2010.

BSNMP Improvements Project

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 will be completed in October 2010.

FreeBSD and PostgreSQL

Last month the FreeBSD DevSummit was once again held the two days prior to BSDCan. While the DevSummit is aimed primarily at FreeBSD Developers, some invitees were from other organizations that use, contribute to, or are otherwise interested in the development of FreeBSD. Such a mix offers opportunities to discuss pain points and ways to collaborate.

One of the invited speakers was Greg Smith from 2ndQuadrant, a company that provides professional services and support for PostgreSQL. Greg wrote about his experience at the DevSummit on the 2ndQuadrant blog and has given permission to repost that entry here. It should be noted that the FreeBSD Foundation is currently funding a project for userspace DTrace.

This week I did something I'd prefer to never repeat: I left the country, did something useful, and made it back again in the same day. The occasion was the FreeBSD Developer Summit, held just before BSDCan--the convention that happens in Ottawa the week before PGCon every year. So I get to head right back again next week, but stay a while that time.

The FreeBSD developers were nice enough to sponsor my trip so that we could talk about both the business and technical hurdles that I felt were keeping the sort of companies I work with from deploying their databases on FreeBSD more often than they do. My slightly updated slides are available on our talks page, I cleaned up a couple of things from what was presented (the most important rewording I'll talk about below).

I was very pleased at how friendly and receptive the developers were even to some of my critical comments. FreeBSD and PostgreSQL have very like minded communities: open for any purpose BSD license, academic roots, developers focused on stability, and even a strong documentation culture. There's been plenty of cross-over too.

Much of the PostgreSQL infrastructure has been run using FreeBSD jails for quite some time (although plans are moving to use more Debian in its place, details on why at Inside the PostgreSQL Project Infrastructure). My running joke during the talk was that if PostgreSQL developers are eating their own dog food by deploying critical infrastructure that depends on the database, much of that has been served in a FreeBSD bowl. (The lunch at the conference session was pizza, much better choice)

And there's been plenty of FreeBSD development that's used PostgreSQL benchmarking as a measuring stick for the success of their advances. The very popular Introducing FreeBSD 7.0 slides that not only showed their achieving performance parity against Linux during that release, it doubled as a document showing how PostgreSQL outscales MySQL. Cheers all around for community driven, BSD licensed code.

One bit of audience contention during my talk came from my assertion that not having support for Emulex fiber channel cards in FreeBSD was preventing a significant amount of "big iron" adoption for databases, due to their perception as the market leader for connecting up expensive hardware like SANs. The guys from FreeBSD hardware and support vendor iXsystems called me out on that, suggesting that the alternative vendor here--QLogic--is both completely trusted by the big boys and has top notch FreeBSD driver quality.

I did a bit more research into whether I was suffering from sampling bias from the set of people I'd talked to about this, and it looks like that was the case. While Emulex claims they've been named Sun's "Best-in-Class Supplier for OEM products", and all the Sun FC cards I've personally run into came from them, there are tons of Sun rebrands of both Emulex and QLogic cards. Same thing is true at all the other vendors I mentioned in my talk; you can get FC cards from both manufacturers via HP and Dell too. I think my general point, that not supporting both Emulex and QLogic hurts the perception of FreeBSD as a serious choice for large businesses, still stands; it's just not quite as bad as I'd feared. Accordingly, I tweaked the wording in the slides I'm publishing, to better match reality here than the ones I presented.

In additional to the solid core they've been growing for years, FreeBSD's license has allowed them to incorporate two very valuable features Sun released as open-source, ZFS and DTrace, into their operating system, both of which are incompatible with Linux's license and are extremely valuable for PostgreSQL deployments. It's still not ideal yet; FreeBSD DTrace can currently be used only by root for example. Limitations such as these have in the past kept me from being particularly motivated to work with FreeBSD. The existence of a free commercial Solaris that ran on generic hardware, combined with the steady progress and open enough community around OpenSolaris, satisfied my needs better. While not many of my PostgreSQL installations have been on Solaris, its has a monopoly share for hosting the terabyte scale databases I've worked with. High quality filesystem snapshots via ZFS and the additional piece of mind you get from disk block checksums alone justified those platform decisions.

The problem today is that hating everything about how Oracle does business is what got me working with PostgreSQL in the first place, and now that they own Sun they're doing the same things to Solaris. No more Solaris on non-Sun hardware, serious cutbacks on the open-source version (OpenSolaris looks like a walking corpse to me), cutting off even basic OS patches unless you have a support contract--that's what we've seen just in the first round from Oracle here. Solaris isn't free in any sense of the word again, we're right back to the same dynamics that pushed me away from them and toward Linux fifteen years ago.

But I continue to be dissapointed at how little focus there is on quality control in Linux. How poorly the filesystem mechanics work for the sorts of database work I do doesn't help either. The Linux OOM killer might as well be named the Linux PostgreSQL Hater for how it acts on my servers. And those sexy Solaris features I know work so well for databases, still not there (even if SystemTap is getting better at DTrace emulation).

Meanwhile, FreeBSD has the whole "free" thing sorted out right in their name, and their quality control paranoia is similar to that of your typical good DBA. It looks to me like they're very close to fully assimilating ZFS and DTrace to the point where they can start improving them, rather than just working on getting the original feature set Solaris already had complete and the matching code stable. I think all of us who work on business critical PostgreSQL deployments and who value free software should do a sanity check on just what dog food we're chewing on, and start making sure there's a FreeBSD bowl there at least sometimes. From what I heard this week, the FreeBSD developers are gearing for another round of chewing on ours too. They're looking into database oriented performance improvements as part of future development, and they're not any happier about using MySQL for that than I am about running PostgreSQL on Solaris. Looks like it might be bowls of dog food all around. Nobody said that leading the software industry was going to be tasty.

Update on Jail Based Virtualization Project

One of the proposals selected for funding earlier this year was for jail based virtualization. Bjoern Zeeb, the developer being funded, recently provided an update on the progress of this project:

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. 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 will end mid-July 2010.

FreeBSD Lectures Captioning Project Complete

Murray Stokely has completed his captioning project, which was funded by the FreeBSD Foundation, and provides the following update:

A pilot project to improve the machine generated captions of technical conference lectures from the BSD Conferences YouTube channel has been completed. The 73 videos in this channel have been viewed over 200,000 times since the channel launched in late 2008, and the addition of human-edited transcripts to some of our most popular videos makes this content more accessible to people around the world.

In addition to the benefits to the hearing impaired, captions are very useful for international viewers as well as for the improved discoverability of this content by search engines. The improved quality of the English language transcripts also improves the quality of the automated translation of the captions into over 45 different languages. It is also now possible to search for words and phrases in the audio transcripts and get a link directly to videos that contain spoken content of that word or phrase.

For example, try searching for a famous line from one of Dr. Kirk McKusick's FreeBSD Kernel Internal Lectures. The above link will take you to the Google Video Search Result page where one of Dr. McKusick's lectures containing the phrase as long as dinosaurs and mainframes is the first result, along with a snippet of the transcript from his lecture, just as you would see the snippet from text content on a web page. A dozen of our most popular videos of FreeBSD technical content are now captioned and fully indexed allowing users to search for very technical terms and get access to lecture material from BSD Conferences.

The captions were improved by two passes of human editing paid for hire through Amazon Mechanical Turk.

HAST Project is Complete!

Late yesterday, Paweł Jakub Dawidek committed HAST to HEAD, marking the completion of this Foundation sponsored project. We asked Pawel to write a few words about the project. He says:

HAST is ready!

I'm very happy to report to FreeBSD users that the HAST project I was working on for the last three months is ready for testing and already committed to the HEAD branch.

I'll describe what HAST does in few words. HAST allows for synchronous block-level replication of any storage media (called GEOM providers, using FreeBSD nomenclature) over a TCP/IP network for fast failure recovery. HAST provides storage using the GEOM infrastructure, meaning it is file system and application independent and can be combined with any existing GEOM class. In case of a primary node failure, the cluster will automatically switch to the secondary node, check and mount the UFS file system or import the ZFS pool, and continue to work without missing a single bit of data.

I must admit the project was quite challenging, not only from the technical point of view, but also because it was sponsored by the FreeBSD Foundation. The FreeBSD Foundation has a great reputation and is known to select the projects it funds very carefully. I felt strong pressure that should I fail, the FreeBSD Foundation's reputation might be hurt. Of course, not a single dollar would be spent on a failed project, but the FreeBSD community's expectations were very high and I really wanted to do a good job.

During the work a number of people contacted me privately offering help, explaining how important HAST is for FreeBSD and giving me the motivation to soldier on.

I hope that HAST will meet the community's expectations and I myself am looking forward to using it :)

Once again, I'd like to thank the HAST sponsors: the FreeBSD Foundation, OMCnet Internet Service GmbH, and TransIP BV.

Accepting Project Proposals

The FreeBSD Foundation is soliciting the submission of proposals for work relating to any of the major subsystems or infrastructure within the FreeBSD operating system. Proposals will be evaluated based on desirability, technical merit, and cost-effectiveness. Download the PDF of the complete Guidelines if you are interested in a submission.

Proposals must include the following: 

  1. A detailed description of what is being proposed, how it will benefit the FreeBSD project, and why the work is needed. Also include your name, email address, mailing address, phone number, and involvement in the FreeBSD Project.

  2. You need to include a timeline and costing for the project. This includes your fees, compensation for reviewer, and taxes. We would also like you to include a rough estimated breakdown of how the money will be spent. Also include the estimated man hours.

  3. Technical reviewers are very important to the project. It lends to accountability on the project. The Foundation does not have the staffing resources to provide detailed source code review, but feels that detailed technical review of funded projects as they proceed is extremely important. The reviewer may request to be compensated for their time they spend on the project. It is important that the reviewer is familiar with what you plan to accomplish. The person should be a recognized FreeBSD contributor. Include in your proposal the name of the reviewer and what criteria you used to select this person. Please include this cost in your final project cost.

  4. Proposals must include milestones for which partial payments can be made. In addition to the milestones, a completion target date must be proposed with the completed project placed into the FreeBSD source repository. A proposal will be rejected if a target completion date is not submitted. Payments will only be made when milestones are reached and the project has been completed.


All proposals must be in US dollars.

Proposals are open to all developers, including non-FreeBSD committers, but developers without access to commit to the source tree must provide details about how the completion guidelines will achieved.

Please email your proposal to the FreeBSD Foundation Board.