Old Boiler House Building

Thursday, 18.X.2012

Time Track 1 (room 102) Track 2 (room 103)
09:00-10:00 Registration, coffee (room 5)
10:00-13:15 pfSense 2.1 Tutorial (1/2)

Chris Buechler, Ermal Luci

Introduction to FreeNAS 8.3

Dru Lavigne

13:15-14:00 Lunch (room 5)
14:00-17:15 pfSense 2.1 Tutorial (2/2)

Chris Buechler, Ermal Luci

Writing the NetBSD drivers with bus_space(9) API

Radoslaw Kujawa

Friday, 19.X.2012

Time Track 1 (room 102) Track 2 (room 103)
09:00-10:00 Registration, coffee (room 5)
10:00-13:15 An Introduction to the FreeBSD Open-Source Operating System (1/2)

Kirk McKusick

Building The Network You Need with PF

Peter N. M. Hansteen

13:15-14:00 Lunch (room 5)
14:00-17:15 An Introduction to the FreeBSD Open-Source Operating System (2/2)

Kirk McKusick

DTrace on FreeBSD systems: Hands on workshop

Tod McQuillin


Building the network you need with PF, the OpenBSD packet filter

This session is aimed at experienced or aspiring network administrators who want to expand their knowledge of PF, the OpenBSD packet filter, and related tools. A basic knowledge of Unix and TCP/IP network configuration is expected and required. Topics covered include

* Configuration on OpenBSD, FreeBSD and NetBSD
* PF ruleset basics and rule interactions: block, pass, match
* Writing maintainable rulesets
* Address families: IPv4 NAT vs IPv6
* Redirection, divert and services with odd dependencies (ftp-proxy, spamd)
* Adaptive rulesets (state tracking tricks)
* ALTQ traffic shaping
* Per user filtering with authpf
* High availability with CARP, relayd
* Wireless vs wired networks
* Filtering bridges
* Logging and monitoring – pflog, pflow and others
* Testing, debugging, and optimizing your configuration

The session will provide updates on the new PF syntax and features introduced in OpenBSD 4.7 (with samples presented in the old and new syntax where appropriate), with newer updates and previews of relevant new features in the upcoming OpenBSD 5.2 release (planned release date November 1st, 2012).

The tutorial is loosely based on Hansteen’s book, The Book of PF (No Starch Press, second edition November 2010).

Slides matching the latest version of the tutorial can be found at http://home.nuug.no/~peter/pf/newest/ (currently the BSDCan 2012 version); updated slides will be made available to the general public after the present session has concluded.

About author

Peter N. M. Hansteen is a consultant, sysadmin and writer from Bergen, Norway. During recent years he has been a frequent lecturer and tutor with emphasis on OpenBSD and FreeBSD, he has written several articles in various publications and The Bookof PF (No Starch Press 2007, 2nd edition November 2010). He writes an occasionally slashdotted blog at http://bsdly.blogspot.com/ centering on sanity in IT (or really the lack of it) and works in the Unix and infrastructure team at Evry ASA, Norway’s and Scandinavia’s dominant IT services company.

An Introduction to the FreeBSD Open-Source Operating System

Dr. Marshall Kirk McKusick
Author and Consultant

What is FreeBSD?
FreeBSD, like Linux, is an open-source UNIX-like operating system that is widely used to support the core infrastructure of many companies worldwide. Because it can be built with a small footprint, it is also seeing increased use in embedded applications. The licensing terms of FreeBSD do not require the distribution of changes and enhancements to the system. The licensing terms of Linux require that all changes and enhancements to the kernel be made available in source form at minimal cost. Thus, companies that need to control the distribution of their intellectual property increasing are building their products using FreeBSD.

Who Should Take this Course?
This course is of direct use to the professionals who work with FreeBSD systems. Individuals involved in technical and sales support can learn the capabilities and limitations of the system; system administrators without direct experience with the FreeBSD kernel can learn how to maintain, tune, and configure the system; applications developers can learn how to effectively and efficiently interface with the system; and systems programmers can learn how to extend, enhance, and interface to the system.

This course provides a broad overview of how the FreeBSD kernel implements its basic services. It will be most useful to those who need to learn how these services are provided. Students who will benefit from this course include operating-system implementors, system programmers, UNIX application developers, administrators, and curious users. This course is directed to users who have had at least a year of experience using a UNIX-like system. Knowledge of the C programming language is helpful, but not essential. They should have an understanding of fundamental algorithms (searching, sorting, and hashing) and data structures (lists, queues, and arrays).

This course will provide a firm background in the FreeBSD kernel. The course will cover basic kernel services, process structure, the FreeBSD jail facility for hosting virtual machines, scheduling, signal handling, and virtual and physical memory management. The kernel I/O structure will be described showing how I/O is multiplexed, special devices are handled, and the filesystem buffers are managed. The implementation of the filesystem and its capabilities including soft updates and snapshots will be described. The filesystem interface will then be generalized to show how to support multiple filesystem types. The course will also cover the FreeBSD socket-based network architecture, layering and implementation. The socket communications primitives and internal layering will be discussed, with emphasis on the interfaces between the layers. A discussion of routing issues will be included. The presentations will emphasize code organization, data structure navigation, and algorithms. It will not cover the machine specific parts of the system such as device drivers.

Morning Session 1 – Kernel Overview
Process structure
Process groups and sessions
Signals and timers
Virtual memory management

Morning Session 2 – Kernel I/O structure
I/O data structures
Disk management
Multiplexing I/O
Autoconfiguration strategy
Configuration of a device driver

Afternoon Session 1 – Filesystem Overview
Filesystem organization
Block I/O system (buffer cache)
Filesystem implementation
Soft Updates
Support for multiple filesystems

Afternoon Session 2 – Networking Implementation
System layers and interfaces
Internet protocols (TCP/IP)
Data structures (mbufs and control blocks)
Routing issues

Course Text
Marshall Kirk McKusick and George V. Neville-Neil, “The Design and Implementation of the FreeBSD Operating System”, Addison-Wesley Publishing Company, Reading, Massachusetts, 2005, 720 pages.

About author

Dr. Marshall Kirk McKusick writes books and articles, consults, and teaches classes on UNIX- and BSD-related subjects. For the past ten years he has been a developer and commiter to the FreeBSD Project. His particular areas of interest are the virtual-memory system and the filesystem. While at the University of California at Berkeley, he implemented the 4.2BSD fast file system, and was the Research Computer Scientist at the Berkeley Computer Systems Research Group (CSRG) overseeing the development and release of 4.3BSD and 4.4BSD. He earned his undergraduate degree in Electrical Engineering from Cornell University, and did his graduate work at the University of California at Berkeley, where he received Masters degrees in Computer Science and Business Administration, and a doctoral degree in Computer Science. He is a past president of the Usenix Association, is on the editorial board of ACM’s Queue magazine, and is a member of ACM and IEEE.

Writing the NetBSD drivers with bus_space(9) framework

This tutorial will show how to write a simple, but fully functional, device driver.

Topics covered:
* The NetBSD driver model
* Kernel autoconfiguration framework
* Creating an example driver from scratch
* Overview of the bus_space functions
* Interacting with the userspace through device file
* Writing a userspace program utilizing the example driver
* Common pitfalls
* Basic driver debugging

After the course attendees will receive access to preconfigured emulator, source and binaries of the example driver.

This tutorial is aimed mostly at new developers and students, although anyone interested is welcome to participate. Attendees are assumed to have some programming skills (experience in C will be very helpful). No prior knowledge of the NetBSD kernel internals is required.

About author

Radoslaw Kujawa is a 27 years old developer, consultant and lecturer. He has over 6 years’ experience in teaching UNIX-like systems administration and programming. Currently he is delivering courses at the Open Source Education Center. He is the NetBSD user since 2000 and developer since 2011. As the NetBSD developer he is having fun while working on the device drivers for obsolete and embedded platforms. So far he has committed about 10 new drivers and significantly enhanced many existing previously. He is also active in the Amiga community, he is an author of several articles written for PPA.pl portal and “Polskie Pismo Amigowe” (“Polish Amiga Magazine”).

Introduction to FreeNAS 8.3

FreeNAS is an embedded open source network attached storage (NAS) system based on FreeBSD and released under a BSD license. A NAS provides an operating system that has been optimized for file storage and sharing.

After attending this hands-on tutorial, attendees will be familiar with FreeNAS’ capabilities, administrative interface, and configuration workflow. Attendees will be able to configure sharing based on their network’s needs, backup their data, troubleshoot their NAS system, and install additional software.


Users do not need any previous NAS experience. This will be a hands-on class and students are encouraged to bring a laptop with virtual software already installed (e.g. vmware or virtualbox) so that they can install and configure their own FreeNAS system. FreeNAS ISOs will be provided.

The course will cover the following topics.


1. Introduction to FreeNAS features and ZFS

2. Installation and upgrading

3. Becoming familiar with the graphical administrative interface

4. Basic configuration workflow

5. Creating and managing shares

6. Managing snapshots, replication, and scrubs


7. Becoming familiar with the web shell and available command line utilities

8. Introduction to jails and installation of the jail PBI

9. Installing and configuring PBI software

10. Installing non-PBI software using FreeBSD packages and ports

About author

Dru Lavigne is the Director of Community Development at iXsystems and leads the documentation teams for the FreeNAS and PC-BSD projects. She has been a technical trainer since 1998, teaching network and system administration in Windows, Novell, Linux, BSD, Cisco, and Checkpoint. She is founder and current Chair of the BSD Certification Group Inc., a non-profit organization with a mission to create the standard for certifying BSD system administrators, and serves on the Board of the FreeBSD Foundation.

DTrace on FreeBSD systems: Hands on workshop

DTrace is a powerful tool for analysing system performance on production systems in real time, originally developed by Sun Microsystems for the Solaris operating system. Since the initial port of DTrace to FreeBSD in 2006, DTrace support on FreeBSD has grown more and more mature, and recently in 2011, userland DTrace support has also been added to FreeBSD.

DTrace support on FreeBSD is still new and is not yet as mature as it is on Solaris, but it is still useful enough to provide a powerful new tool for system observability and problem diagnosis.

The tutorial aims to help students become proficient with the use of DTrace on FreeBSD systems to analyse and correct system performance problems.

The tutorial will take about three hours and covers DTrace in detail, including enabling DTrace on FreeBSD and FreeBSD specific DTrace features, the D programming language, and includes several hands-on exercises in which students can participate during the session.

About author

Tod McQuillin co-founded Telerama, one of the United States’s first public access Internet service providers, in 1991. Tod joined UBS in 1995 and has worked in various IT groups in UBS including system administration, source code administration and developer services, performance metrics engineering and software development, and automated software build frameworks.

He has been working with BSD Unix since 1988, FreeBSD since 1993 and Solaris since 1995.

After moving to Japan in 1996, Tod has learned to read and write Japanese, Perl, C, and SQL to a high proficiency. He’s also a fine cook. Tod will celebrate his 22nd wedding anniversary in October.