%% $Id: usenix2001.mgp,v 1.4 2003/07/17 07:15:06 keihan Exp $ %% %% This document was written by: %% Luke Mewburn %% Christos Zoulas %% with input from: %% Andrew Brown %% %deffont "standard" xfont "helvetica-medium-r", tfont "arial.ttf", tmfont "wadalab-gothic.ttf" %deffont "thick" xfont "helvetica-bold-r", tfont "arialbd.ttf", tmfont "wadalab-gothic.ttf" %deffont "ital" xfont "helvetica-bold-i", tfont "ariali.ttf", tmfont "wadalab-gothic.ttf" %deffont "typewriter" xfont "courier-medium-r", tfont "courbd.ttf", tmfont "wadalab-gothic.ttf" %% %default 1 leftfill, size 2, fore "white", back "black", font "thick" %default 2 size 7, vgap 10, prefix " " %default 3 size 2, bar "gray70", vgap 10 %default 4 size 5, fore "white", vgap 30, prefix " ", font "standard" %% %tab 1 size 6, vgap 50, prefix " ", icon arc "cyan" 50 %tab 2 size 5, vgap 50, prefix " ", icon delta3 "green" 50 %tab 3 size 4, vgap 50, prefix " ", icon box "orange" 40 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault %font "standard", fore "white", back "black" %center %size 7, font "thick" The NetBSD project %newimage -xscrzoom 30 "NetBSD-smaller.jpg" %size 4, font "standard" Christos Zoulas, NetBSD Core Luke Mewburn, NetBSD Core %font "typewriter" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Outline What is NetBSD? Structure of NetBSD Project Status Recent improvements Future Directions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page What is NetBSD? One of 3 major open-source BSD projects NetBSD, FreeBSD, OpenBSD Goals Architecturally clean Highly portable Highly interoperable State-of-the-art security BSD license Working on NetBSD 1.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: Architecturally clean Well designed Complete Stable Fast %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: Highly portable (1/3) Flexible endianness and word size: Endian: big, little Word size: ILP32, LP64 All combinations are supported Some CPU families can be either endian (e.g, mipseb, mipsel, sh3el, sh3eb) 64 bit CPUs can run the 32 bit binaries of the same CPU family Application binaries of a CPU family run on all architectures in the same family %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: Highly portable (2/3) Subsystems are designed with a high level of abstraction UVM pmap interface wscons console driver MI floating point emulation Driver layer abstractions Architecture specific Bus specific (machine independent) Device specific (machine independent) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: Highly portable (3/3) 16 CPU families, 44 architectures (ports): %size 3, prefix " " %font "typewriter" %fore "grey66" alpha alpha %fore "white" arm26 arm26 arm32 arm32 cats dnard hpcarm netwinder %fore "grey66" i386 i386 amd64 amd64 %fore "white" m68000 sun2 m68k amiga atari cesfic hp300 luna68k mac68k mvme68k news68k next68k sun3 x68k %fore "grey66" mipseb mipsco newsmips sgimips mipsel algor arc cobalt hpcmips pmax %fore "white" pc532 pc532 %fore "grey66" powerpc amigappc bebox macppc ofppc prep sandpoint walnut %fore "white" sh3eb evbsh3 mmeye sh3el dreamcast evbsh3 hpcsh %fore "grey66" sparc sparc sparc64 sparc64 sparc64 %fore "white" vax vax %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: Highly interoperable Binary compatible FreeBSD, HP-UX, IBCS2, Linux, OSF/1, SVR4, SunOS, Ultrix, Win32 Source compatibility POSIX.1, POSIX.2, XPG/SUS (Single Unix Specification), BSD File systems FFS, ISO CD9660, EXT2FS, MS-DOS (FAT), AmigaDOS, NTFS Networking TCP/IP (including IPv6), AppleTalk, SMB (CIFS) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: State-of-the-art security Services default to secure setting Insecure services disabled by default IPsec Eliminate set_id kmem grovellers by providing kernel APIs Audit kernel and userland code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Goal: BSD license Majority of system is a BSD-style license, with other licenses "sandboxed" to allow removal Allows third parties to release NetBSD derived products without releasing the source Standardize on "The NetBSD Foundation" BSD-style copyright to minimize third-party vendor integration hassles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Structure of NetBSD Project Approximately 250 Developers Management via Board and Core Port maintainers Security officers Release engineers (releng) Internal System Administrators Website maintainers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Current Status Project re-organization Project growth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Project re-organization In the process of clarifying the structure, role and assignment of Board and Core New bylaws have been accepted by core; to be released to and ratified by the NetBSD developer community US non-profit organization tax status - 501(c)3; waiting on bylaws to be ratified %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Project growth %size 4, prefix " " %font "typewriter" Year Release M_ARCH MACHINE #lines kern* Dev %size 4, prefix " " %font "typewriter" ---- ------- ------ ------- ------ ------ --- %size 4, prefix " " %font "typewriter" 1997 1.2 7 13 4407k 1478k 73 %size 4, prefix " " %font "typewriter" 1998 1.3 8 15 6154k 2171k 105 %size 4, prefix " " %font "typewriter" 1999 1.3.3 6 11 6167k 2222k 134 %size 4, prefix " " %font "typewriter" 2000 1.4.1 9 16 7505k 3113k 183 %size 4, prefix " " %font "typewriter" 2001 1.5 10 20 9923k 4751k 223 %size 4, prefix " " %font "typewriter" now current 16 44 15362k 5052k 252 * i386 GENERIC kernel size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Recent improvements Platforms Performance Devices Miscellaneous kernel Networking Security Userland %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Platforms New platforms algor Algorithmics MIPS evaluation boards dreamcast Sega Dreamcast game console hpcarm StrongARM based PDAs hpcsh SH3 based PDAs sandpoint Motorola MPC8240 reference platform sun2 Sun 2 workstation walnut IBM PPC405GP reference platform x86-64 AMD's 64 bit x86 PC architecture %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Improved machine support (1/4) alpha AlphaLinux emulation LKMs work amiga Use MI wdc (IDE) controller PCMCIA arm26 Randomize statclock periods %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Improved machine support (2/4) arm32 New bootloader Split cats, dnard, and netwinder into separate ports hp300, news68k, sun3 Migration to ELF i386 New systems: MCA bus machines, including improved MCA bus detection via BIOS 16 partitions per disk (up from 8) Booting off a RAIDframe RAID1 mirror DIAGNOSTIC off by default %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Improved machine support (3/4) macppc Honor RTC_OFFSET mvme68k New systems: MVME-162-LX, MVME-172, MVME-177 boards Migration to ELF powerpc LinuxPPC emulation sparc New systems: sun4/400 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Improved machine support (4/4) sparc64 Solaris/SPARC emulation (32 and 64 bit) LKMs work vax New systems: MicroVAX 3100m9x, 4000/10x, 4000/[4567]00 ELF shared libraries %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Performance enhancements Multi-platform Symmetric Multi-Processing Working: Alpha, VAX i386 (On branch) Spins up CPUs, needs more help: PowerPC, SPARC, UltraSPARC Still needs stability and scalability improvements High performance user threads, via scheduler activation support in the kernel (On branch) Virtual Memory (VM) improvements Unified Buffer Cache Round-robin page coloring %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Devices (1/4) Audio Avance Logic ALS100 (sb) Cirrus Logic CS4281 (clct) ESS Technology Maestro-2/2e AC97 PCI (esm) Intel ICH integrated AC'97 (auich) NeoMagic 256 AC'97 (neo) Yamaha DS-1 PCI (yds) OKI MSM6258 ADPCM voice synthesizer on x68k (vs) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Devices (2/4) Disk IBM ESDI DASD storage devices on MCA (ed) Initio INIC-940/950 based PCI SCSI (iha) Qlogic FAS408 ncr53c9x (esp) SCSI & IDE RAID cards 3Ware Escalade IDE RAID (twe) EISA & PCI Compaq Array Controllers (cac) I2O cards; Adaptec 2100/3100, ... (iop) Mylex DAC960 RAID (mlx) Symbios/NCR 53C710 SCSI (osiop) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Devices (3/4) Networking 3Com 3c529 MCA (ep) 3Com EtherLink/MC (3c523) MCA (elmc) Aironet 4500/4800, Cisco 340/350 wireless (an) DE-422 EISA (le) DMC-11/DMR-11 DDCMP interface (dmc) Interlan NI1010 (il) NE2000 on MCA (ne) NatSem DP83820 Gigabit Ethernet (gsip) WD WD80x3 on MCA (wd) SKNET Personal/MC2+ MCA (le) arm26 i-cubed EtherLan (eh) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Devices (4/4) USB MCT USB-RS232 (umct) Prolific PL-2303 serial (uplcom) SCSI-over-USB scanners (usscanner) USB midi (umidi) USB scanners (uscanner) usbhidaction(1): perform actions when USB HID items change %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Miscellaneous kernel Customizable magic console key sequence to enter debugger/ROM monitor Emulation layers can load as an LKM OpenFirmware interface (/dev/openfirm) Watchdog timer framework kgdb support in wscons via CTRL-ALT-ESC poll(2) support added to tty line-disciplines LFS can now load as an LKM Rework SCSI subsystem ("scsipi" branch) Cleaner interfaces between layers Better error recovery %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Networking (1/2) ISDN (from the ISDN4BSD project) 802.1Q virtual LANs (VLANs) Hardware-assisted IPv4/TCP/UDP checksums racoon(8): KAME IKE daemon for IPsec key negotiation (pkgsrc) Enhanced /etc/ifconfig.xxN syntax ipfilter now only works on IPsec wire-format packets Alternate queuing (ALTQ) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Networking (2/2) 802.11 wireless networking Improved wireless encryption (WEP) wi defaults to BSS (base station) instead of ad-hoc Optional RFC1948 - cryptographic hash for TCP ISS generation Add PFIL_HOOKS filtering points to network interfaces Eliminate splimp() %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Security Configurable password encryption scheme via passwd.conf(5) rnd(4) random number device is now required to run ssh et al Fixed kernel problems related to: trap delivery architecture specific issues (e.g, i386 LDT) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Userland (1/2) Native port of the Sun JVM (in progress) Third-party in-tree packages updated amd, BIND, bzip2, cvs, dhcpd, file, groff, named, ntpd, nvi, openssh, openssl, postfix, ppp, routed, sendmail, xfree86 New system administration tool - sushi Maximum number of ptys is now tunable on demand Improved support for parallel make(1) jobs in recursive source builds Curses Development Kit (libcdk) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Userland (2/2) Internationalization Multibyte LC_CTYPE locale support (from the Citrus XPG4DL project) X11 Update to XFree86 4.1.1 Support XDM-AUTHENTICATION-1 PCI video cards on NetBSD/Alpha HPC X11 support libc improvements: getprogname(3) getopt_long(3) fmtcheck(3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Program enhancements (1/3) arp(8): -d -a deletes all entries disklabel(8): improved interactive mode dump(8): -e (eject tape automatically on tape change), improve support for file systems not in fstab fdisk(8): display extended partitions fsck(8): don't fsck partitions mounted read-write ftp(1): add FEAT and OPTS, mreget %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Program enhancements (2/3) ftpd(8): 'advertize', 'maxfilesize', 'sanenames', -e emailaddr, -P dataport, -q/-Q (do/don't use pidfiles), -u/-U (do/don't log to utmp), -w/-W (do/don't log to wtmp), -X (syslog wu-ftpd style xferlogs) ifconfig(8): -A (list up interfaces only) now the default ktrace(1): -s (synchronized writes) mbrlabel(8): don't modify disklabel unless requested %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Program enhancements (3/3) ndbootd(8): Sun Network Disk (ND) Protocol boot server newsyslog(8): logs can be rotated at specific times, create log file on request nfsstat(1): show percentages in output rc(8): when "stop"ping a service poll until service dies, global watchdog timer for rc.shutdown(8) savecore(8): use the formatted panic string if available sort(1): switch from GNU to BSD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Packages bzip2 support consolidate package build information to save time and space better xpkgwedge support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Release Schedule 1.5.1 (available "now") Bug & security fixes, new drivers 1.6 (end of year) SMP on alpha, i386, sparc, sparc64, vax Scheduler activations (kernel assisted user threads) {get,set}context(2) support kernel queues (kqueue(2), kevent(2)) faster pipe(2) Improved installation tools Pkg-ized base system gcc 2.95 integration ELF migration on remaining platforms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Future directions (1/2) More crypto/security work Hardware crypto cards More removal of set_id Crypto file system Improved wscons and X11 support on all platforms More CPU architectures IA-64, m88k, PA-RISC, POWER, ... Improve support for embedded environments, including MMU-less systems %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Future directions (2/2) Performance enhancements Improve responsiveness by reducing interrupt latencies Kernel and library profiling Multi-lingual improvements console driver getopt(3) wide char to close PR 13 Kernel linker for enhanced LKM support "Doors" for faster localhost RPC Dynamic support in nsswitch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Contact details... ftp://ftp.NetBSD.org/pub/NetBSD/ http://www.NetBSD.org/ AnonCVS from anoncvs.NetBSD.org http://cvsweb.NetBSD.org/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Comments ?