NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 1– NetBSD/Soc –Google’s Summer of Code within NetBSD

Jan Schaumannjschauma@netbsd.org
136D 027F DC29 8402 7B42

Jan Schaumann

47D6 7C5B 64AF AF22 6A4C

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 2

Summer of Code, eh?

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 3

Summer of Code, eh?

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 4

Summer of Code?

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 5

Summer of Code Dates
May 31st: Start of application process on http://code.google.com
June 1st: Last Day new Organizations will be listed on http://code.google.com
Interim Period: Back and Forth with applicants on the Summer-Discuss Google
Group
June 14th: Final application submission deadline.
June 24th: All applications approved or rejected. Cut $500 checks for initialfunding.
Interim Period: Give the students a helping hand and guidance.
August 3rd: Google gives a preliminary progress report at OSCON
September 1st: Deadline for all student work (pencils down).
September 30th: All adviser feedback in.
October 1st: Announce successful participants. Cut final checks send t-shirts.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 6

Suggested Projects
NetBSD Ports
NetBSD Userland
NetBSD Kernel
Filesystems
Networking
pkgsrcMiscellaneous

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 7

Suggested Projects: Ports & Userland
NetBSD Ports
Port NetBSD to SGI Octane and Origin machines
Support for MMU-less systems
ZaurusIA64
NetBSD Userland
WiFi browser
BSD licensed privacy guard
Wide Character Support in curses
BSD licensed rsync replacement
Dynamic NSS modules

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 8

Suggested Projects: Ports & Userland
NetBSD Ports
Port NetBSD to SGI Octane and Origin machines
Support for MMU-less systems
ZaurusIA64 (WIP using the HP Ski simputer (see references))
NetBSD Userland
WiFi browser
BSD licensed privacy guard
Wide Character Support in curses
BSD licensed rsync replacement
Dynamic NSS modules

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 9Suggested Projects: Kernel
NetBSD Kernel
Improve FFS
Improve Caching
Improve writing to FS
NetBSD block device driver for NAND flash chips
Flash translation layer
Compressed Cache System
Debug softdep on slow machines
Real time support
Bluetooth support

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 10

Suggested Projects: Filesystems
Filesystems
BSD tool to create ISO filesystems
BSD licensed XFS
BSD licensed JFS
BSD licensed HFS+
Journaling for UFS
ACLs
Efficient Memory Filesystem
resize ffs

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 11

Suggested Projects: Networking & pkgsrc
Networking
Teredo: Tunneling IPv6 over UDP through NATs
KismetNDIS network driver
Policy routing
Cleanup routing code
Implement IPv6 ipflow fastforward
zeroconf
pkgsrcUnprivileged pkgsrc builds
Parallel bulk builds

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 12

Suggested Projects: Networking & pkgsrc
Networking
Teredo: Tunneling IPv6 over UDP through NATs
KismetNDIS network driver
Policy routing
Cleanup routing code
Implement IPv6 ipflow fastforward
zeroconf
pkgsrcUnprivileged pkgsrc builds
Parallel bulk builds (WIP called “bobac”; ask jlam@NetBSD.org)

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 13

Suggested Projects: Miscellaneous
Miscellaneous
syspkgs
valgrind
NetBSD LiveCD with installer
CD Bootloader
Automate regression framework

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 14

Suggested Projects: Miscellaneous
Miscellaneous
syspkgs
valgrind
NetBSD LiveCD with installer
CD Bootloader (WIP makefs -t cd9660 in-tree)
Automate regression framework

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 15

Summer of Code => Endless Summer?

... I wish.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 16

Selection Processsmall team weeds out obvious rejectees
list of remaining applications presented to developer bodylist ranked based on developer feedback
mentors solicited from developer bodylist sorted based on developer interest + mentor availability
developers vote for their favorite projects
ranked list returned to Google
Google decides the total number of awarded projects, picks top ranked
applications

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 17

Accepted Projects
Out of 96 applications in total, the following projects were chosen:
bpg: BSD licensed privacy guard (pgp)hfs: HFS+
ndis: NDIS network driver
tmpfs: Efficient memory file-system
userfs: Userspace file system hooks
wcurses: Wide Character Support for Curses
zeroconf: Zeroconfd

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 18

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 19

hfs: HFS+Why?
no HFS+ support currently available
good amount of work for summer project
Who?
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
Developing student: Yevgeny Binder <yevbee@comcast.net>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 20

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 21

hfs: Resultsdeliverables adjusted earlier on as the project was found slightly too ambitious
student did not have much of a NetBSD background, so some time was spent ongetting into NetBSD
basic HFS+ filesystem completed in time
import into NetBSD source tree: not ready yet

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 22

hfs: Resultsdeliverables adjusted earlier on as the project was found slightly too ambitious
student did not have much of a NetBSD background, so some time was spent ongetting into NetBSD
basic HFS+ filesystem completed in time
import into NetBSD source tree: not ready yet

Success.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 23

ndis: NDIS network driverWhy?
driver available for FreeBSD
allow Windows driver to run on NetBSD
previous experience
previous collaboration with mentor

Who?
Mentoring NetBSD developer: Phil Nelson <phil@NetBSD.org>
Developing student: Alan Ritter <rittera@cc.wwu.edu>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 24

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 25

ndis: NDIS network driver
Deliverables:
produce a driver working well enough to use at least a standard wired Ethernet
card on PCI bus

Long Term Goals:
get a working driver for one or more PCMCIA cards
test and fix bugs on a multiprocessor systemtest and make sure it works on 64 bit systems
merge with latest code from FreeBSD
run as LKM

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 26

ndis: ResultsIntel EtherExpress Pro/100: works
Broadcom wireless card: works
mentor satisfied => we’re satisfied
student continues work after official end of SoC
mentor will review code before feature freeze for NetBSD 4.0

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 27

ndis: ResultsIntel EtherExpress Pro/100: works
Broadcom wireless card: works
mentor satisfied => we’re satisfied
student continues work after official end of SoC
mentor will review code before feature freeze for NetBSD 4.0

Success.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 28

tmpfs: Efficient memory file-systemWhy?
mfs(8) is regular ffs on top of memory
no specifically designed filesystem for temporary use available

Who?
Mentoring NetBSD developer: Luke Mewburn <lukem@NetBSD.org>
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
Developing student: Julio M. Merino Vidal <jmmv84@gmail.com>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 29

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 30

tmpfs: Goals
an implementation of an efficient memory file-systemin-depth documentation about tmpfs in detail, describing its data structures,
algorithms used and the rationales that lead to the decisions taken.
a “file-system how-to” document explaining how to write a file-system driver for
NetBSD from scratch.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 31

tmpfs: Summary
all goals met
rated “top-notch”
tmpfs(8) already imported into NetBSD-current
comparisons with mfs(8) have shown tmpfs(8) to be
more memory-efficient
more accurate in reporting memory usage
fasterstudent learned enough about filesystems to already have found and fixed someserious bugs in our NFS code
expect an article on tmpfs(8) on OnLamp

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 32

tmpfs: Summary
all goals met
rated “top-notch”
tmpfs(8) already imported into NetBSD-current
comparisons with mfs(8) have shown tmpfs(8) to be
more memory-efficient
more accurate in reporting memory usage
fasterstudent learned enough about filesystems to already have found and fixed someserious bugs in our NFS code
expect an article on tmpfs(8) on OnLamp

Success!
Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 33

userfs: Userspace file system hooks
What?
make it possible to write a file system in userspace so that an application will see
no difference to the pure in-kernel file system.

Who?
Mentoring NetBSD developer: Bill Studenmund <wrstuden@NetBSD.org>
Developing student: Antti Kantee <antti.kantee@hut.fi>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 34

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 35

userfs: Userspace file system hooks
most ambitious project
consists of three partsa kernel file system shim
a communications protocol
a userland API for the file system to use
also provide a trivial userland file system to demonstrate functionality

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 36

userfs: Userspace file system hooks
Flow-control of the “Pass-to-Userspace F-F-f-f-fileSystem”:
1. application
2. kernel (syscall, vfs ...)
3. kernel puffs
4. userspace puffs
5. fs implementation (userspace)
6. userspace puffs
7. kernel puffs
8. application

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 37

userfs: Results
still bare-bones
simple filesystem with some hardcoded files (which are modifyable) written“The framework coughs but manages to avoid complete and utter defeat.”code not yet imported
all SoC goals met

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 38

userfs: Results
still bare-bones
simple filesystem with some hardcoded files (which are modifyable) written“The framework coughs but manages to avoid complete and utter defeat.”code not yet imported
all SoC goals met

Success.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 39

wcurses: Wide Character Support for Curses
Why?
wide characters not supported in NetBSD’s curses
limited support for internationalized character sets

Who?
Mentoring NetBSD developer: Julian Coleman <jdc@NetBSD.org>
Mentoring NetBSD developer: Brett Lymn <blymn@NetBSD.org>
Developing student: Ruibiao Qiu <ruibiao@arl.wustl.edu>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 40

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 41

wcurses: Results

all goals met
code will be imported into NetBSD source Real Soon Now

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 42wcurses: Results

all goals met
code will be imported into NetBSD source Real Soon Now

Success.
Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 43

zeroconf: Zeroconfd
Who?
Mentoring NetBSD developer: Christos Zoulas <christos@NetBSD.org>
Mentoring NetBSD developer: David Young <dyoung@NetBSD.org>
Mentoring NetBSD developer: Jason R. Thorpe <thorpej@NetBSD.org>
Mentoring NetBSD developer: Ignatios Souvatzis <is@NetBSD.org>
Developing student: Silvio Valenti <silvio.valenti@gmail.com>

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 44

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 45

zeroconf: Zeroconfd
Work split in two parts:
daemon which autoconfigures an IPv4 link-local address for a network interface
a library for multicast DNS, which is used to resolve local network host name anddiscover available services in network where there is no DNS server

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 46

zeroconf: Results
zeroconfd implemented
responderd implemented
both working, but need more work
import into NetBSD CVS: not yet
too many mentors
nevertheless: all goals met

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 47

zeroconf: Results
zeroconfd implemented
responderd implemented
both working, but need more work
import into NetBSD CVS: not yet
too many mentors
nevertheless: all goals met

Success.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 48

bpg: BSD licensed privacy guard (pgp)Why?
no BSD licensed OpenPGP tools available
GPL licensed gnupg convoluted
Who?
Mentoring NetBSD developer: Alistair Crooks <agc@NetBSD.org>
Mentoring NetBSD developer: Curt Sampson <cjs@NetBSD.org>
Developing student: Manuel Freire <droggo@gmail.com>
previous work on myPGPJan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Jan Schaumann

Slide 49

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 50

bpg: BSD licensed privacy guard (pgp)
BPG, the BSD Privacy Guard, is a BSD-licensed program that performs
authentication and encryption using the OpenPGP standard (RFC 2440).
It provides:
A set of libraries for signing and encrypting data, allowing the integration of
OpenPGP features in other applications.
A modular “PGP cryptography toolkit” that allow users to chose their own
encryption and signing algorithms, key management structure, and so on.
A scriptable and well thought command-line interface built over the libraries. This
standalone application will be a suitable replacement for GnuPG or PGP.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 51

bpg: main uses
The main uses supported are:Data confidentiality: the library must support different algorithms for encryption ofdata. Concretely, it aims to be used for symmetric and asymmetric encryption.
Data integrity and authentication: via digital signatures, BPG will support
providing integrity and authentication to data, as defined in OpenPGP standard.
Integrated key management: BPG aims to support centralized management of allof a user’s public and private keys.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 52

bpg: Goals
Provide a complete implementation of the OpenPGP standard, with the only
exception of possible old formats incompatibility if project needs demands it.
Settle on the basis of a well-thought and well-designed data security framework.
Develop command-line interface that is both:
powerful: it must support all the program functionality in an easily scriptableway;
usable: confusing user interfaces reduce security by making it harder for auser to make correct decisions.
Design the libraries for extensibility. We’d like BPG to be a good field fordeveloping researchs in the state-of-the-art of authentication and cryptography.
Make BPG a good candidate to replace GnuPG usage in BSD Unixes.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 53

bgp: Architecture
The main goal of BPG is to provide applications with a toolkit for using OpenPGP
facilities. For that, functionality was packed into libraries.
There are four libraries, corresponding with the four problems BPG tries to solve:
securing data
key management
trust management
algorithms

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 54

bgp: Architecture: Securing data
Library name: libbpg
Relies on other libraries:
Key management library: PKI keys are especified in the API with user-IDs andobtained from the BPG key management library. The key management library is
the responsible of key decryption if necessary.
Algorithms library: for performing low-level encryption, hashing and compression,
it uses the BPG algorithms library.
Compression library: BPG will use libzip for compression

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 55

bgp: Architecture: Key Management
Library name: libbpgkey
The key managament library is divided into a set of specialized submodules:
Key fetcher: receives petitions for a key and performs the necessary operations togive it back to the user (or say why it wasn’t possible).
Key generator: receives petitions for creating asymmetric or symmetric keys.
Key importer/exporter: this module receives petitions from the user to take a key
from a location A and insert it into location B, where A and B can be files, keyringsor key servers.
Key interpreter: translates OpenPGP packets containing keys into the internal
data structure for keys and viceversa.
Key deliverer: with no public functions, this module performs the internal
checkouts and commits of keys from and to a file, keyring or key server.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 56

bgp: Architecture: Trust Management
Library name: libbpgtrust
The trust library handles the trust database and the trust policy. The trust database
contains a list of
U serID, trustlevelpairs. The policy defines the rules for deriving the trust level of a given key from thetrust database (i.e. OpenPGP web of trust, X.509 hierarchical trust model, ...).

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 57

bgp: Architecture: Algorithms
Library name: libbpgalgo
The initial algorithms supported will be:
Hash functions: SHA-1.
Symmetric algorithms: AES.
Asymmetric algorithms: RSA, DSA.

libbpgalgo may offer with a plugins system would take the extensibility andreusability to a higher level.

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 58

bpg: Security Issues
Memory purge
Integrity of the keyring
MITM attacks
Emission captures
Time-based attacks
Password sniffing

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 59

bpg: Resultsvery good work, mature code
all goals set were achieved
detailed documentation available (see references)
student was pro-active, responsive
result still under development on Sourceforge
discussion on import into NetBSD source tree are ongoing
expect a summary artice in “Dr. Dobb’s Journal”

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 60

bpg: Resultsvery good work, mature code
all goals set were achieved
detailed documentation available (see references)
student was pro-active, responsive
result still under development on Sourceforge
discussion on import into NetBSD source tree are ongoing
expect a summary artice in “Dr. Dobb’s Journal”

Success!

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 61

References
General:
http://www.netbsd.org/
http://netbsd-soc.sourceforge.net/
http://www.netbsd.org/contrib/projects.html
http://www.netbsd.org/Foundation/press/soc.html
http://www.netmeister.org/netbsd/soc/

http://code.google.com/summerofcode.html

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 62

References
BPG:
http://www.sourceforge.net/projects/mypgp/
http://netbsd-soc.sourceforge.net/projects/bpg/
http://netbsd-soc.sourceforge.net/projects/bpg/doc/
HFS+:
http://developer.apple.com/technotes/tn/tn1150.html
http://netbsd-soc.sourceforge.net/projects/hfs/
NDIS:
http://netbsd-soc.sourceforge.net/projects/nids
tmpfs:
http://netbsd-soc.sourceforge.net/projects/tmpfs
http://www.solarisinternals.com/si/reading/tmpfs.pdf

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 63

References
userfs:http://netbsd-soc.sourceforge.net/projects/userfs
wcurses:
http://netbsd-soc.sourceforge.net/projects/wcurses
zeroconf:
http://www.zeroconf.org/
http://netbsd-soc.sourceforge.net/projects/zeroconf

Jan Schaumann

October 5, 2005

NetBSD/SoC - Google’s Summer of Code within NetBSD

Slide 64

References
Other projects:
NetBSD/ia64:
http://www.netbsd.org/Ports/ia64/
http://mail-index.netbsd.org/port-ia64/
http://www.hpl.hp.com/research/linux/ski/

Jan Schaumann

October 5, 2005