FreeBSD Summer of Code 2006
The FreeBSD Project is proud to have taken part in the Google Summer of Code again in 2006. By all accounts, the FreeBSD participation in this program was an unqualified success. We received over 150 applications for student projects, amongst which 14 were selected for funding. These student projects included security research, improved installation tools, new utilities, and more. Many of the students have continued working on their FreeBSD projects even after the official close of the program.
We are happy to report than all 14 of our students this year successfully completed the program. There were many other strong applications which we unfortunately couldn't fund and many of these students also spent the summer working on FreeBSD. We are happy to see continued development in our source code repository by these talented young programmers and we look forward to working with more students in the future.
Information about the student projects is available from our Summer of Code wiki and all of the code is checked into Perforce. The summaries below were submitted by the individual students and their mentors.
2006 Student Projects
Student: | Clement Lecigne |
Summary: | IPv6 stack vulnerabilities |
Mentor: | George V. Neville-Neil <gnn@FreeBSD.org> |
Summary: |
The focus of this project was to review past vulnerabilities, create vulnerability testing tools and to discover new vulnerabilities in the FreeBSD IPv6 stack which is derived from the KAME project code. During the summer Clement took two libraries, the popular libnet, and his mentor's Packet Construction Set (PCS) and created tools to find security problems in the IPv6 code. Several issues were found, bugs filed, and patches created. At the moment Clement and George are editing a 50 page paper that describes the project which will be submitted for conference publication. All of the code from the project, including the tools, is on line and is described in the paper. By all measures, this was a successful project. Both student and mentor gained valuable insight into a previously externally maintained set of code. In addition to the new tools development in this effort, the FreeBSD Project now also has a new engineer to help work on the code. |
Student: | Chris Jones |
Summary: | Jail Resource Limits |
Mentor: | Kip Macy <kmacy@FreeBSD.org> |
Summary: |
Chris added support for limiting CPU and memory use by jails. This allows fairer sharing of systems' resources between divergent uses by preventing one jail from monopolizing the available memory and CPU time, if other users and jails have processes to run. The code is currently available as patches against RELENG_6, and Chris is in the process of applying it to -CURRENT. More details can be found at JailResourceLimits. |
Student: | Ivan Voras |
Summary: | GEOM storage virtualization (gvirstor) |
Mentor: | Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Summary: |
The goal of this project was to create a virtual storage class for the GEOM framework in FreeBSD that would allow creating "overcommitted" storage devices, with a size larger than that of available physical storage (e.g. hard drives). The project was completed successfully, and the result is available on the project's home page. It's expected the project will be included in FreeBSD CVS after it gets more testing or after FreeBSD 6.2 is released, whichever comes first. Working on the project was very pleasant, there was enough documentation and the mentor was very helpful and responsive. Google's team was apt and provided ample support to the participants of the project. The project will help both OEMs of embedded devices (such as NAS devices) and big users to make use of FreeBSD for large storage projects. |
Student: | Paolo Pisati |
Summary: | Study analyze and improve the interrupt handling infrastructure |
Mentor: | John Baldwin <jhb@FreeBSD.org> |
Summary: |
This project consisted in the improvement of the interrupt handling system in FreeBSD: while retaining backward compatibility with the previous models (FAST and ITHREAD), a new method called 'Interrupt filtering' was added. With interrupt filtering, the interrupt handler is divided into 2 parts: the filter (that checks if the actual interrupt belong to this device) and the ithread (that is scheduled in case some blocking work has to be done). The main benefits of interrupt filtering are:
Moreover, during the development of interrupt filtering, some MD dependent code was converted into MI code, PPC was fixed to support multiple FAST handlers per line and an interrupt stray storm detection logic was added. While the framework is done, there are still machine dependent bits to be written (the support for ppc, sparc64, arm and itanium has to be written/reviewed) and a serious analysis of the performance of this model against the previous one is a WIP. |
Student: | Yuan Jue |
Summary: | Porting Xen to FreeBSD. |
Mentor: | Kip Macy <kmacy@FreeBSD.org> |
Summary: |
Successfully got a domU kernel usable for installation. dom0 support still in progress. Kip and Yuan Jue are continuing to work together on this project after the official end of SoC. Yuan Jue has published a more comprehensive FreeBSD/Xen howto here. |
Student: | Adam David Alan Martin |
Summary: | AutoFS - An Automounting Filesystem implementation for FreeBSD |
Mentor: | Benno Rice <benno@FreeBSD.org> |
Summary: |
Adam used PseudoFS as a starting point for an in-memory representation of an Automounter Filesystem. This involved making a few tweaks to PseudoFS to allow AutoFS to detect lookups. At this time, the filesystem works and sends signals up to a userland program. Adam plans to continue working on this, with Benno and Erez, to get AutoFS working with Erez Zadok's AMD. The goal is to merge this work into -CURRENT. |
Student: | Ryan Beasley |
Summary: | OSSV4 Sound support |
Mentor: | Ariff Abdullah <ariff@FreeBSD.org>, Alexander Leidinger <netchild@FreeBSD.org> |
Summary: |
This summer was spent adding support for 4Front's OSSV4 API to FreeBSD. A large number of audio ioctls were added, with a few pending, and there is still work left to do with mixers/mixer extensions (4Front's specs are still in flux) and MIDI (low priority because, IIRC, MIDI still needs maintainership). Ryan plans to continue work related to the mixer extensions as best he can while attending university full-time. All of the code is committed to FreeBSD-current. |
Student: | Markus Boelter |
Summary: | Bundled PXE Installer |
Mentor: | Paul Saab <ps@FreeBSD.org> |
Summary: |
For me, Google Summer of Code was a new and very exciting experience. I got actively involved in doing Open Source Software and giving something back to the community. Facing to some challenges within the project forced me to look behind the scenery of FreeBSD. The result was a better understanding of the overall system. Getting in touch with a lot of developers directly also gave a very special spirit to the Summer of Code. I really enjoyed the time and will continue to work on the project also after the deadline. For me, it was a great chance to get involved in active development and not just doing some scripts and hacks at home. Getting paid for the work was just a small part of the overall feeling. Thanks people at FreeBSD and Google for the really, really great time! |
Student: | Shteryana Sotirova Shopova |
Summary: | Integrated SNMP monitoring |
Mentor: | Bjoern A. Zeeb <bz@FreeBSD.org> |
Summary: |
After working on bsnmptools last year, Shteryana concentrated on the server side this year. An implementation for if_vlan(4) monitoring was dropped from the original proposal in favor of extended support for the new if_bridge(4) network bridge device monitoring module. In addition to RFC 4188 single bridge support and extending the kernel to get access to all the information a private MIB was designed. This was needed to be able to monitor multiple bridges supported by FreeBSD and adding an extended bridge management interface and definitely was the greatest technical challenge of the project. The project was successfully completed - including code review - and the kernel part has already been committed to CURRENT. User space part will follow soon. For STABLE a patch is available too (see wiki). Shteryana is going to continue her work on bsnmpd and is already planning support for if_vlan(4) and jails monitoring modules. We are happy that she will stay with the FreeBSD project and continue to work on bsnmp and FreeBSD after SoC. See also ShteryanaShopova and SnmpBridgeModule. |
Student: | Michael Bushkov |
Summary: | Nss-LDAP importing and nsswitch subsystem improvement |
Mentor: | Hajimu UMEMOTO <ume@FreeBSD.org> |
Summary: |
The project consisted of 5 parts:
Though none of the code was committed yet into the main, official FreeBSD tree, my experience from the previous year makes me think that this situation is normal. I hope, that the code will be reviewed and committed in the coming months. More detailed information about the project can be found at LdapCachedDetailedDescription. |
Student: | Roman Divacky |
Summary: | Linux emulation layer update |
Mentor: | Alexander Leidinger <netchild@FreeBSD.org> |
Summary: |
The goal was to implement the basics of 2.6.16 support. This has been implemented, and several programs from Fedora Core 4 work now with osrelease="2".6.16. More complex applications do expose some bugs, however. All of Roman's SoC work is in FreeBSD-current (the default compatibility is still 2.4.2) and his current focus is to fix the remaining bugs as time permits while attending university full-time. A more detailed status of what is supported and what is not can be found in the linux kernel project wiki. |
Student: | Spencer Whitman |
Summary: | K Kernel Meta-Language |
Mentor: | Poul-Henning Kamp <phk@FreeBSD.org> |
Summary: |
Spencer investigated implementing CPP macros in the first stage of the prototype 'K' compiler. Spencer has expressed interest to continue working with us on the 'K' project. |
Student: | Dongmei Liu |
Summary: | Porting the seref policy and setools to SEBSD |
Mentor: | Christian S.J. Peron <csjp@FreeBSD.org> |
Summary: | Dongmei Liu spent the summer working on the basic footwork required to port the SEREF policy to SEBSD. This work has been submitted and can be viewed in the soc2006/dongmei_sebsd Perforce branch. This work was originated from the sebsd branch: //depot/projects/trustedbsd/sebsd. Additionally setools-2.3 was ported from Linux and can be found in contrib/sebsd/setools directory. It is hoped that this work will be merged into the main SEBSD development branch. |
Student: | Gábor Kövesdán |
Summary: | Improving FreeBSD Ports Collection Infrastructure |
Mentor: | Erwin Lansing <erwin@FreeBSD.org> |
Summary: |
This project consists of the following tasks:
The first three items are completed and the next two items are being worked on. The DESTDIR support was more complicated than presumed, so it took more time and the student didn't have time to finish the other items. Gábor will continue working on these and other ports related tasks and FreeBSD is happy to have interested him to keep working on ports and ports infrastructure. More details can be found at Gábor's Wiki page. |