Thursday, March 31, 2011

FOSDEM Trip Report: Brooks Davis

Brooks Davis has provided the following trip report for FOSDEM 2011; it includes some interesting notes on clang/llvm.

I attended the FOSDEM 2011 conference in Brussels, Belgium on the weekend of February 5th and 6th.

As usual FOSDEM kicked off with the massive beer event on Friday night. An absurd number of geeks packed four bars and consumed tremendous amounts of beer until the wee hours of the night.

The next morning the conference started off with an opening session at 10 including the (in)famous FOSDEM Dance followed by keynotes at 10:45 and 11:45.

The first keynote was by Eben Moglen of the Software Freedom Law Center. He argued for the creation of decentralized alternatives to systems like Facebook and promoted the creation of mesh based alternative networks using plug computers. He also promoted his new FreedomBox Foundation which aims to create and promote these devices.

The second key note was a talk by Chris Lattner of the LLVM project. He provided an overview of the LLVM project and the various tools developed under its umbrella. What once started as a toolkit of compiler building blocks has become an umbrella project encompassing tools including a C/C++/Objective-C compiler, a debugger, code analysis tools, and support libraries. He also mentioned ongoing work to replace many other pieces of binutils with a LLVM derived version. He promoted several advantages of LLVM over its competitors including a modern code base, faster generation of code that also runs faster (in some cases), and the library approach to tool building allowing tool reuse in interesting and new ways. One example is the use of the clang compiler libraries to parse expressions in the lldb debugger so you can be certain they evaluate exactly as the compiler would have evaluated them. I had seen some of the slides in the talk before, but the amount of progress since the last time was remarkable with several new sub-projects and production quality C++ support.

After the keynotes I took a lunch break while Martin Matuska's ZFS in Open Source Operating Systems talk packed the BSD Devroom. I then attended the next talk by Aleksey Cheusov on a system called mk-configure which is a bmake derived build and configuration system aimed at replacing autotools. He has some interesting ideas and the system looks like it would be comfortable for a BSD developer to use, but it seems like there are limits on the number of autoconf alternatives the world can handle. The next talk was unfortunately canceled due to the speakers' inability to leave Egypt due to the turmoil there. In the 4pm slot Marc Balmer talked about the import of Lua into NetBSD. He proposed a number of potential uses for Lua in the base system including as an extension language in place of things like the script dhclient runs to configure things when leases change and the use of Lua scripts as configuration files. One thing I found interesting was that NetBSD decided to import Lua based on its potential usefulness rather than based on an actual application. While I could see FreeBSD bringing it in, I can't see it happening without a specific use case. Another interesting point that was raised was what sort of error handling the interpreter had when Lua was used as a configuration language. One person rightly pointed out that you won't want your daemon to hang forever if a configuration file has an infinite loop in it.

The next session was my mini-summit on BSD licensed toolchains. We didn't quite fill the room but attendance was quite good. I had solicited input from a number of projects on their use of BSD licensed tools and got status reports from NetBSD and Minix 3. I started out with an update from FreeBSD including the fact that we were nearly able to build and run 100% clang/LLVM worlds on i386 and amd64 and that we have imported them into the tree. I also talked about the things we are missing including cross compilation driver support in clang, C++ exception handling for libgcc, a port of libc++, a linker, and a debugger. Marc Balmer gave a short toolchain status presentation from NetBSD. With their support for legacy architecture like VAX they are interested in tools like clang, but have also imported recent versions of GCC. On Sunday Marc mentioned to me that they had imported clang and LLVM over night which was interesting timing. Minix 3 also
talked about their efforts to move from ATK to clang and LLVM. They are in the early stages and are also planning an a.out to ELF transition in a similar time frame.

After the status reports we had a general discussion and Q&A. One audience member mentioned that he had done a port of the Apache C++ standard library to IA64 along with exception handling code. He said that starting with the BSD licensed libunwind it is maybe a week's work to implement which was good to hear. Another audience member mentioned that he was interested in pursuing cross compiler support in clang. Chris Lattner mentioned that he thought it should be quite easy to do. All the code generation machinery is there, the driver just needs to learn about the paths to all the tools, headers, and libraries when passed a non-native target architecture. Chris also mentioned a developer who is working on a number of projects including a linker. It's not clear where the linker is on his project list, but Chris feels confident it's well within his grasp. Over all there was a lot of optimism about bringing LLVM based tools to non-Apple platforms and the
momentum and breadth of those efforts seem to be growing.

The slides from my intro and status report can be found here.

After my session I hit the hallway track and checked out the BSD booth where fliers and FreeBSD DVDs were moving quickly. Dinner with fellow developers followed.

Sunday was more of a hallway track day as nearly all the sessions I was interested in were scheduled at 11am. The session I did attend was Axel Beckert's talk on Debian GNU/kFreeBSD. He gave a general overview of the project and the status including the fact that along with Debian's 6.0 release the night before Debian GNU/kFreeBSD was now an official Debian port. The current port is considered a Technology Preview due to some key pieces not yet being ported. For example the Linux compatible wrapper to the BSD ifconfig command does not yet support IPv6. Over all it sounds like the community is supportive and the number of packages that build approach that of many other Debian ports. At the end of the talk one FreeBSD developer joked that this is clearly a sign that Linux is dying and that Debian GNU/kFreeBSD provides a transition plan.

At the end of the day I attended Jonathan Corbet's talk titled "How kernel development goes wrong and why you should be a part of it anyway." My main takeaway from the talk was that it's crucial to provide a solid reason from a kernel developer's perspective why a feature should be adopted before proposing it to Linux. While I can see some problems with a world where this is a requirement, it still seem like a good idea overall when proposing a major change to any operating system kernel.

After the conference wrapped up and the my brief Belgian vacation commenced.

Tuesday, March 22, 2011

Foundation at ILF and FlourishConf

I'll be representing the Foundation at the BSD booth at Indiana LinuxFest this upcoming weekend and at FlourishConf on the following weekend. If you're near Indianapolis or Chicago, drop by and say hi as registration is free for both events. Dropping by the booth provides an opportunity to discuss what the Foundation has been up to, check out the Foundation swag, and/or make a donation to the Foundation.

Saturday, March 19, 2011

Accepting Travel Grant Applications for BSDCan 2011

Calling all FreeBSD developers needing assistance with travel expenses to BSDCan 2011.

The FreeBSD Foundation will be providing a limited number of travel grants to individuals requesting assistance. Please fill out and submit the Travel Grant Request Application by April 15, 2011 to apply for this grant.

This program is open to FreeBSD developers of all sorts (kernel hackers, documentation authors, bugbusters, system administrators, etc). In some cases we are also able to fund non-developers, such as active community members and FreeBSD advocates.

You request funding based on a realistic and economical estimate of travel costs (economy airfare, trainfare, ...), accommodations (conference hotel and sharing a room), and registration or tutorial fees. If there are other sponsors willing to cover costs, such as your employer or the conference, we prefer you talk to them first, as our budget is limited. We are happy to split costs with you or another sponsor, such as just covering airfare or board. If you are a speaker at the conference, we expect the conference to cover your travel costs, and will most likely not approve your direct request to us.

We review your application and if approved, authorize you to seek reimbursement up to a limit. We consider several factors, including our overall and per-event budgets, and (quite importantly) the benefit to the community by funding your travel. Most rejected applications are rejected because of an over-all limit on travel budget for the event or year, due to unrealistic or uneconomical costing, or because there is an unclear or unconvincing argument thatfunding the applicant will directly benefit the FreeBSD Project. Please take these points into consideration when writing your application.

We reimburse costs based on actuals (receipts), and by check or bank transfer. And, we do not cover your costs if you end up having to cancel your trip. We require you to submit a report on your trip, which we may show to current or potential sponsors, and may include in our semi-annual newsletter and on this blog.

There's some flexibility in the mechanism, so talk to us if something about the model doesn't quite work for you or if you have any questions. The travel grant program is one of the most effective ways we can spend money to help support the FreeBSD Project, as it helps developers get together in the same place at the same time, and helps advertise and advocate FreeBSD in the larger community.

Monday, March 14, 2011

Ground Labs Announces FreeBSD Support

From the press release:

Ground Labs, a global leader in the development of security and auditing software for the payment card industry, recently announced the introduction of native support for FreeBSD within its cardholder data discovery products for PCI compliance.

"Our goal is to provide support for all major operating systems that are used to store, transmit or process cardholder data," said Stephen Cavey, director of corporate development for Ground Labs. "FreeBSD is used in mission-critical environments worldwide. It is therefore a perfect addition to our portfolio of supported platforms."

Many large organisations, including large web hosting providers rely on FreeBSD to achieve high levels of uptime. "FreeBSD is known for being a reliable and robust operating system," said Peter Duthie, chief architect for Ground Labs. "By offering native support for FreeBSD within our cardholder data discovery products we can enable more organisations to identify non-compliant instances of cardholder data storage and facilitate compliance with PCI DSS 2.0."

Ground Labs’ flagship products, Card Recon and Enterprise Recon, previously supported 5 operating systems, including Windows, Linux, Solaris, AIX and HPUX. Card Recon can now be used on FreeBSD systems to perform accurate cardholder data discovery scans. Enterprise Recon users will also benefit now that Enterprise Recon Node Agents can be deployed on remote FreeBSD systems within larger environments to achieve centralised monitoring and visibility of PCI compliant cardholder data storage practices.

"We’re very pleased to have Ground Labs offer FreeBSD support within its cardholder data discovery products," said Erwin Lansing, FreeBSD developer and member of the Ports Management team. "While FreeBSD is widely deployed throughout the industry, enterprise-grade commercially supported software tools are only just starting to appear. Given the growing importance of the PCI Compliance Standards, Ground Labs products add valuable tools for FreeBSD users, who will benefit from this new level of support."

FreeBSD versions of Card Recon and Enterprise Recon Node Agents are available at no additional charge for download by existing and new customers.

About Ground Labs

Ground Labs is a global leader in the development of security and auditing software solutions for PCI compliance. Its flagship products, Card Recon and Enterprise Recon, identify and analyze cardholder data storage risks on thousands of computer systems worldwide. Merchants, acquirers and schemes use Ground Labs products to achieve and maintain PCI compliance, while QSAs use those same products to validate compliance and produce accurate reports.

Tuesday, March 8, 2011

Summary of Five New TCP Congestion Control Algorithms Project

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


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.


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


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.


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:

Tuesday, March 1, 2011

Juniper Network's EX Series Enhances the FreeBSD Project's Infrastructure

We're pleased to announce the donation of EX4200 switches from Juniper Networks to the Project's new US East Coast site. From the press release:

The FreeBSD Foundation announced today that it has deployed Juniper Networks® EX4200 Ethernet Switches with Virtual Chassis technology as the high-performance communication infrastructure for the FreeBSD Project's new US East Coast site. The Virtual Chassis technology provided by the EX4200 switches, which were donated to The FreeBSD Foundation by Juniper Networks, ensures that the high availability and bandwidth demands of the FreeBSD Project are met through a scalable stackable chassis form factor.

The East Coast site will allow the FreeBSD Project to mirror critical systems from their US West Coast sites and also support more services for end-users and developers. Juniper's donation helps to extend and enhance the Project's ability to provide pre-built packages to users by enlarging the pool of package-building systems. Perhaps most importantly, it decreases latency and increases accessibility of key FreeBSD infrastructure for the many users and developers on the East Coast of the United States as well as in Europe.

“Juniper is proud to be working with The FreeBSD Foundation to enhance the accessibility, innovation and scalability of the FreeBSD Project,” Michael Bushong, Senior Director of Junos® OS Product Management at Juniper Networks. “FreeBSD provides a stable and scalable platform for the Junos® operating system, and we are pleased to support this project building new functionality to enable its extensive development community.”

According to Robert Watson, a core team member for the FreeBSD Project and Director of the FreeBSD Foundation, "This donation establishes Juniper as one of our leading hardware donors and builds on its track record of community involvement." Robert noted that Juniper's community involvement includes "their contribution of the Junos MIPS architecture port of FreeBSD." The FreeBSD Foundation helped to coordinate Juniper's hardware donation and Juniper engineers worked with members of the FreeBSD system administration team to integrate the EX4200 switches into the East Coast site.

About the FreeBSD Foundation:

The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated to supporting the FreeBSD Project and community. The Foundation gratefully accepts donations from individuals and businesses, using them to fund and manage projects, sponsor FreeBSD events, Developer Summits and provide travel grants to FreeBSD developers. In addition, the Foundation represents the FreeBSD Project in executing contracts, license agreements, and other legal arrangements that require a recognized legal entity. The FreeBSD Foundation is entirely supported by donations. More information about The FreeBSD Foundation is available on the web.

About Juniper Networks:

Juniper Networks is in the business of network innovation. From devices to data centers, from consumers to cloud providers, Juniper Networks delivers the software, silicon and systems that transform the experience and economics of networking. Additional information can be found at Juniper Networks.

Juniper Networks and Junos are registered trademarks of Juniper Networks, Inc. in the United States and other countries. The Juniper Networks and Junos logos are trademarks of Juniper Networks, Inc. All other trademarks, service marks, registered trademarks, or registered service marks are the property of their respective owners.