<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD$">
<!ENTITY title "FreeBSD Summer of Code 2006">
<!ENTITY % navinclude.developers "INCLUDE">
<!ENTITY % developers PUBLIC "-//FreeBSD//ENTITIES FreeBSD Developers Entities//EN"> %developers;
]>

<html>
&header;

<p>The FreeBSD Project is proud to have taken part in the Google <a
  href="http://code.google.com/summerofcode.html">Summer of Code</a>
  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.</p>

<p>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.</p>

<p>Information about the student projects is available from our <a
  href="http://wiki.freebsd.org/SummerOfCode2006">Summer of Code
  wiki</a> and all of the code is checked into <a
  href="http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2006/">Perforce</a>.
  The summaries below were submitted by the individual students and
  their mentors.</p>

<a name="students"></a>
<h2>2006 Student Projects</h2>

<table border="0"><tr><td>Student:</td><td>Clement Lecigne</td></tr>
<tr><td>Summary:</td><td>IPv6 stack vulnerabilities</td></tr>
<tr><td>Mentor:</td><td>  &a.gnn; &lt;gnn@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

<p>All of the code from the project, including the tools, is on line and
is described in the paper.</p>

<p>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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Chris Jones</td></tr>
<tr><td>Summary:</td><td>Jail Resource Limits</td></tr>
<tr><td>Mentor:</td><td>  &a.kmacy; &lt;kmacy@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

<p>The code is currently available as patches against <tt>RELENG_6</tt>, and
Chris is in the process of applying it to -CURRENT.  More details can
be found at <a
href="http://wiki.freebsd.org/JailResourceLimits">JailResourceLimits</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Ivan Voras </td></tr>
<tr><td>Summary:</td><td>GEOM storage virtualization (gvirstor)</td></tr>
<tr><td>Mentor:</td><td>  &a.pjd; &lt;pjd@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

<p>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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Paolo Pisati</td></tr>
<tr><td>Summary:</td><td>Study analyze and improve the interrupt handling infrastructure</td></tr>
<tr><td>Mentor:</td><td>  &a.jhb; &lt;jhb@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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:</p>

<ul>
  <li>feedback from filters (the system finally knows
 if any handler has serviced an interrupt or not, and can react
 consequently).</li>
  <li>lower latency/overhead for shared interrupt line.</li>
  <li>previous experiments with interrupt filtering showed an increase
 in performance against the plain ithread model</li>
</ul>

<p>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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Yuan Jue</td></tr>
<tr><td>Summary:</td><td>Porting Xen to FreeBSD.</td></tr>
<tr><td>Mentor:</td><td>  &a.kmacy; &lt;kmacy@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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 <a
href="http://www.yuanjue.net/xen/howto.html">here</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Adam David Alan Martin</td></tr>
<tr><td>Summary:</td><td>AutoFS - An Automounting Filesystem implementation for FreeBSD</td></tr>
<tr><td>Mentor:</td><td> &a.benno; &lt;benno@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Ryan Beasley</td></tr>
<tr><td>Summary:</td><td>OSSV4 Sound support</td></tr>
<tr><td>Mentor:</td><td>  &a.ariff; &lt;ariff@FreeBSD.org&gt;,
&a.netchild; &lt;netchild@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>This summer was spent adding support for 4Front's OSSV4 API to
FreeBSD.  A large number of audio <a
href="http://wiki.freebsd.org/RyanBeasley/ioctlref">ioctls</a> 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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Markus Boelter</td></tr>
<tr><td>Summary:</td><td>Bundled PXE Installer</td></tr>
<tr><td>Mentor:</td><td>  &a.ps; &lt;ps@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

<p>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.</p>

<p>Thanks people at FreeBSD and Google for the really, really great
time!</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Shteryana Sotirova Shopova</td></tr>
<tr><td>Summary:</td><td>Integrated SNMP monitoring</td></tr>
<tr><td>Mentor:</td><td>  &a.bz; &lt;bz@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

<p>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.</p>

<p>See also <a
href="http://wiki.freebsd.org/ShteryanaShopova">ShteryanaShopova</a>
and <a
href="http://wiki.freebsd.org/SnmpBridgeModule">SnmpBridgeModule</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Michael Bushkov</td></tr>
<tr><td>Summary:</td><td>Nss-LDAP importing and nsswitch subsystem improvement</td></tr>
<tr><td>Mentor:</td><td>  &a.ume; &lt;ume@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>The project consisted of 5 parts:</p>

<ol>
  <li>Nsswitch modules and libc separation. The idea was to move the source
code for different nsswitch sources (such as "files", "dns", "nis") out of
the libc into the separate shared libraries. This task was successfully
finished (the patch is available).</li>

  <li>Regression tests for nsswitch. A set of regression tests to test the
correctness of all nsswitch-related functions and the invariance of their
behavior between system upgrades. I think that task can be considered
successfully completed (the patch is available).</li>

  <li>nss_ldap rewriting. Though, this task was not clearly mentioned in the
original proposal, during the SoC we found reasonable not to simply import
PADL's nss_ldap, but to rewrite it from scratch (licensing issues were among
the basic reasons for this). The resulting nss_ldap nsswitch module, though,
behaves mostly similar to the PADL's one, has different (I believe - more
flexible) architecture. Though it's basically finished, several useful
features from the PADL's nss_ldap still need to be implemented. But, despite
the lack of some features, I believe, that this task can be considered to be
successfully completed. (Missing features will be implemented ASAP -
hopefully during the September).</li>

  <li>nss_ldap importing into the base. The task was to prepare a patch, that
will allow users to use nss_ldap from the base system. The task was
successfully completed (the patch is available), but required to import
OpenLDAP into the base in order for nss_ldap to work properly, and it had
led to a long discussion in the mailing list. This discussion, however, have
concluded with mostly positive opinions about nss_ldap and OpenLDAP
importing.</li>

  <li>cached performance optimization. The caching daemon performance needs to
be as high as possible in order for cached to be as close (in terms of
speed) to "files" nsswitch source as possible. Cached's performance analysis
was made and nsswitch database precaching was introduced as the
optimization. This task was completed (the patch is available). However
there is an area for improvements - more precise and extensive performance
analysis should be made and more optimizations need to be introduces. This
will be done in the nearest future.</li>

</ol>

<p>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.</p>

<p>More detailed information about the project can be found at <a href="http://wiki.freebsd.org/LdapCachedDetailedDescription">LdapCachedDetailedDescription</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Roman Divacky</td></tr>
<tr><td>Summary:</td><td>Linux emulation layer update</td></tr>
<tr><td>Mentor:</td><td>  &a.netchild; &lt;netchild@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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 <a href="http://wiki.FreeBSD.org/linux-kernel">linux kernel
project wiki</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Spencer Whitman</td></tr>
<tr><td>Summary:</td><td>K Kernel Meta-Language</td></tr>
<tr><td>Mentor:</td><td>  &a.phk; &lt;phk@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

<p>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.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>Dongmei Liu</td></tr>
<tr><td>Summary:</td><td>Porting the seref policy and setools to SEBSD</td></tr>
<tr><td>Mentor:</td><td>  &a.csjp; &lt;csjp@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>

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.

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

<tr><td>Student:</td><td>G&aacute;bor K&ouml;vesd&aacute;n</td></tr>
<tr><td>Summary:</td><td>Improving FreeBSD Ports Collection Infrastructure</td></tr>
<tr><td>Mentor:</td><td>  &a.erwin; &lt;erwin@FreeBSD.org&gt;</td></tr>
<tr><td>Summary:</td><td>
<p>This project consists of the following tasks:</p>

<ol>
  <li>New handling for i386 binary ports</li>
  <li>Cleanup: use ECHO_CMD and ECHO_MSG in bsd.port.mk properly</li>
  <li>Add a basic infrastructure support for debugging</li>
  <li>Installing ports with different destination (DESTDIR macro)</li>
  <li>Cleanup: Move fetch shell scripts out of bsd.port.mk</li>
  <li>Make ports respect CC and CFLAGS</li>
  <li>Cross-compiling Ports</li>
  <li>Plist generator tool<li>
</ol>

<p>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&aacute;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.</p>

<p>More details can be found at <a href="http://wiki.freebsd.org/G%C3%A1borK%C3%B6vesd%C3%A1n">
  G&aacute;bor's Wiki page</a>.</p>

</td></tr>
<tr><td colspan="2">&nbsp;</tr>

</table>

&footer;
</body>
</html>
