Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / share / doc / papers / beyond4.3 / beyond43.ms
1 .\" Copyright (c) 1989 The Regents of the University of California.
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\"    must display the following acknowledgement:
14 .\"     This product includes software developed by the University of
15 .\"     California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     @(#)beyond43.ms 5.1 (Berkeley) 6/5/90
33 .\" $FreeBSD: src/share/doc/papers/beyond4.3/beyond43.ms,v 1.2.6.1 2000/11/28 11:35:48 ru Exp $
34 .\" $DragonFly: src/share/doc/papers/beyond4.3/beyond43.ms,v 1.2 2003/06/17 04:36:56 dillon Exp $
35 .\"
36 .\" *troff -ms
37 .rm CM
38 .sp 2
39 .ce 100
40 \fB\s+2Current Research by
41 The Computer Systems Research Group
42 of Berkeley\s-2\fP
43 .ds DT "February 10, 1989
44 .\" \fBDRAFT of \*(DT\fP
45 .sp 2
46 .nf
47 Marshall Kirk McKusick
48 Michael J Karels
49 Keith Sklower
50 Kevin Fall
51 Marc Teitelbaum
52 Keith Bostic
53 .fi
54 .sp 2
55 .ce 1
56 \fISummary\fP
57 .ce 0
58 .PP
59 The release of 4.3BSD in April of 1986 addressed many of the 
60 performance problems and unfinished interfaces
61 present in 4.2BSD [Leffler84] [McKusick85].
62 The Computer Systems Research Group at Berkeley
63 has now embarked on a new development phase to
64 update other major components of the system, as well as to offer
65 new functionality.
66 There are five major ongoing projects.
67 The first is to develop an OSI network protocol suite and to integrate
68 existing ISO applications into Berkeley UNIX.
69 The second is to develop and support an interface compliant with the
70 P1003.1 POSIX standard recently approved by the IEEE.
71 The third is to refine the TCP/IP networking to improve
72 its performance and limit congestion on slow and/or lossy networks.
73 The fourth is to provide a standard interface to file systems
74 so that multiple local and remote file systems can be supported,
75 much as multiple networking protocols are supported by 4.3BSD.
76 The fifth is to evaluate alternate access control mechanisms and
77 audit the existing security features of the system, particularly
78 with respect to network services.
79 Other areas of work include multi-architecture support, 
80 a general purpose kernel memory allocator, disk labels, and
81 extensions to the 4.2BSD fast filesystem.
82 .PP
83 We are planning to finish implementation prototypes for each of the
84 five main areas of work over the next year, and provide an informal
85 test release sometime next year for interested developers.
86 After incorporating feedback and refinements from the testers,
87 they will appear in the next full Berkeley release, which is typically
88 made about a year after the test release.
89 .br
90 .ne 10
91 .sp 2
92 .NH
93 Recently Completed Projects
94 .PP
95 There have been several changes in the system that were included
96 in the recent 4.3BSD Tahoe release.
97 .NH 2
98 Multi-architecture support
99 .PP
100 Support has been added for the DEC VAX 8600/8650, VAX 8200/8250, 
101 MicroVAXII and MicroVAXIII.
102 .PP
103 The largest change has been the incorporation of support for the first
104 non-VAX processor, the CCI Power 6/32 and 6/32SX.  (This addition also
105 supports the
106 Harris HCX-7 and HCX-9, as well as the Sperry 7000/40 and ICL machines.)
107 The Power 6 version of 4.3BSD is largely based on the compilers and
108 device drivers done for CCI's 4.2BSD UNIX,
109 and is otherwise similar to the VAX release of 4.3BSD.
110 The entire source tree, including all kernel and user-level sources,
111 has been merged using a structure that will easily accommodate the addition
112 of other processor families.  A MIPS R2000 has been donated to us,
113 making the MIPS architecture a likely candidate for inclusion into a future
114 BSD release.
115 .NH 2
116 Kernel Memory Allocator
117 .PP
118 The 4.3BSD UNIX kernel used 10 different memory allocation mechanisms,
119 each designed for the particular needs of the utilizing subsystem.
120 These mechanisms have been replaced by a general purpose dynamic
121 memory allocator that can be used by all of the kernel subsystems.
122 The design of this allocator takes advantage of known memory usage
123 patterns in the UNIX kernel and a hybrid strategy that is time-efficient
124 for small allocations and space-efficient for large allocations.
125 This allocator replaces the multiple memory allocation interfaces 
126 with a single easy-to-program interface,
127 results in more efficient use of global memory by eliminating
128 partitioned and specialized memory pools,
129 and is quick enough (approximately 15 VAX instructions) that no
130 performance loss is observed relative to the current implementations.
131 [McKusick88].
132 .NH 2
133 Disk Labels
134 .PP
135 During the work on the CCI machine,
136 it became obvious that disk geometry and filesystem layout information
137 must be stored on each disk in a pack label.
138 Disk labels were implemented for the CCI disks and for the most common
139 types of disk controllers on the VAX.
140 A utility was written to create and maintain the disk information,
141 and other user-level programs that use such information now obtain
142 it from the disk label.
143 The use of this facility has allowed improvements in the file system's
144 knowledge of irregular disk geometries such as track-to-track skew.
145 .NH 2
146 Fat Fast File System
147 .PP
148 The 4.2 fast file system [McKusick84]
149 contained several statically sized structures,
150 imposing limits on the number of cylinders per cylinder group,
151 inodes per cylinder group,
152 and number of distinguished rotational positions.
153 The new ``fat'' filesystem allows these limits to be set at filesystem
154 creation time.
155 Old kernels will treat the new filesystems as read-only,
156 and new kernels
157 will accommodate both formats.
158 The filesystem check facility, \fBfsck\fP, has also been modified to check
159 either type.
160 .br
161 .ne 10
162 .sp 2
163 .NH
164 Current UNIX Research at Berkeley
165 .PP
166 Since the release of 4.3BSD in mid 1986,
167 we have begun work on several new major areas of research.
168 Our goal is to apply leading edge research ideas into a stable
169 and reliable implementation that solves current problems in
170 operating systems development.
171 .NH 2
172 OSI network protocol development
173 .PP
174 The network architecture of 4.2BSD was designed to accommodate
175 multiple network protocol families and address formats,
176 and an implementation of the ISO OSI network protocols
177 should enter into this framework without much difficulty.
178 We plan to 
179 implement the OSI connectionless internet protocol (CLNP),
180 and device drivers for X.25, 802.3, and possibly 802.5 interfaces, and
181 to integrate these with an OSI transport class 4 (TP-4) implementation.
182 We will also incorporate into the Berkeley Software Distribution an
183 updated ISO Development Environment (ISODE)
184 featuring International Standard (IS) versions of utilities.
185 ISODE implements the session and presentation layers of the OSI protocol suite,
186 and will include an implementation of the file transfer protocol (FTAM).
187 It is also possible that an X.400 implementation now being done at
188 University College, London and the University of Nottingham
189 will be available for testing and distribution.  
190 .LP
191 This implementation is comprised of four areas.
192 .IP 1)
193 We are updating the University of
194 Wisconsin TP-4 to match GOSIP requirements.
195 The University of Wisconsin developed a transport class 4
196 implementation for the 4.2BSD kernel under contract to Mitre.
197 This implementation must be updated to reflect the National Institute
198 of Standards and Technology (NIST, formerly NBS) workshop agreements,
199 GOSIP, and 4.3BSD requirements.
200 We will make this TP-4 operate with an OSI IP,
201 as the original implementation was built to run over the DoD IP.
202 .IP 2)
203 A kernel version of the OSI IP and ES-IS protocols must be produced.
204 We will implement the kernel version of these protocols.
205 .IP 3)
206 The required device drivers need to be integrated into a BSD kernel.
207 4.3BSD has existing device drivers for many Ethernet devices; future
208 BSD versions may also support X.25 devices as well as token ring
209 networks.
210 These device drivers must be integrated
211 into the kernel OSI protocol implementations.
212 .IP 4)
213 The existing OSINET interoperability test network is available so 
214 that the interoperability of the ISODE and BSD kernel protocols
215 can be established through tests with several vendors.
216 Testing is crucial because an openly available version of GOSIP protocols
217 that does not interoperate with DEC, IBM, SUN, ICL, HIS, and other
218 major vendors would be embarrassing.
219 To allow testing of the integrated pieces the most desirable
220 approach is to provide access to OSINET at UCB.
221 A second approach is to do the interoperability testing at
222 the site of an existing OSINET member, such as the NBS.
223 .NH 2
224 Compliance with POSIX 1003
225 .PP
226 Berkeley became involved several months ago in the development
227 of the IEEE POSIX P1003.1 system interface standard.
228 Since then, we have been participating in the working groups
229 of P1003.2 (shell and application utility interface),
230 P1003.6 (security), P1003.7 (system administration), and P1003.8
231 (networking).
232 .PP
233 The IEEE published the POSIX P1003.1 standard in late 1988.
234 POSIX related changes to the BSD system have included a new terminal
235 driver, support for POSIX sessions and job control, expanded signal
236 functionality, restructured directory access routines, and new set-user
237 and set-group id facilities.
238 We currently have a prototype implementation of the
239 POSIX driver with extensions to provide binary compatibility with
240 applications developed for the old Berkeley terminal driver.
241 We also have a prototype implementation of the 4.2BSD-based POSIX
242 job control facility.
243 .PP
244 The P1003.2 draft is currently being voted on by the IEEE
245 P1003.2 balloting group.
246 Berkeley is particularly interested in the results of this standard,
247 as it will profoundly influence the user environment.
248 The other groups are in comparatively early phases, with drafts
249 coming to ballot sometime in the 90's.
250 Berkeley will continue to participate in these groups, and
251 move in the near future toward a P1003.1 and P1003.2 compliant
252 system.
253 We have many of the utilities outlined in the current P1003.2 draft
254 already implemented, and have other parties willing to contribute
255 additional implementations.
256 .NH 2
257 Improvements to the TCP/IP Networking Protocols
258 .PP
259 The Internet and the Berkeley collection of local-area networks
260 have both grown at high rates in the last year.
261 The Bay Area Regional Research Network (BARRNet),
262 connecting several UC campuses, Stanford and NASA-Ames
263 has recently become operational, increasing the complexity
264 of the network connectivity.
265 Both Internet and local routing algorithms are showing the strain
266 of continued growth.
267 We have made several changes in the local routing algorithm
268 to keep accommodating the current topology,
269 and are participating in the development of new routing algorithms
270 and standard protocols.
271 .PP
272 Recent work in collaboration with Van Jacobson of the Lawrence Berkeley
273 Laboratory has led to the design and implementation of several new algorithms
274 for TCP that improve throughput on both local and long-haul networks
275 while reducing unnecessary retransmission.
276 The improvement is especially striking when connections must traverse
277 slow and/or lossy networks.
278 The new algorithms include ``slow-start,''
279 a technique for opening the TCP flow control window slowly
280 and using the returning stream of acknowledgements as a clock
281 to drive the connection at the highest speed tolerated by the intervening
282 network.
283 A modification of this technique allows the sender to dynamically modify
284 the send window size to adjust to changing network conditions.
285 In addition, the round-trip timer has been modified to estimate the variance
286 in round-trip time, thus allowing earlier retransmission of lost packets
287 with less spurious retransmission due to increasing network delay.
288 Along with a scheme proposed by Phil Karn of Bellcore,
289 these changes reduce unnecessary retransmission over difficult paths
290 such as Satnet by nearly two orders of magnitude
291 while improving throughput dramatically.
292 .PP
293 The current TCP implementation is now being readied
294 for more widespread distribution via the network and as a 
295 standard Berkeley distribution unencumbered by any commercial licensing.
296 We are continuing to refine the TCP and IP implementations
297 using the ARPANET, BARRNet, the NSF network
298 and local campus nets as testbeds.
299 In addition, we are incorporating applicable algorithms from this work
300 into the TP-4 protocol implementation.
301 .NH 2
302 Toward a Compatible File System Interface
303 .PP
304 The most critical shortcoming of the 4.3BSD UNIX system was in the
305 area of distributed file systems.
306 As with networking protocols,
307 there is no single distributed file system
308 that provides sufficient speed and functionality for all problems.
309 It is frequently necessary to support several different remote
310 file system protocols, just as it is necessary to run several 
311 different network protocols.
312 .PP
313 As network or remote file systems have been implemented for UNIX,
314 several stylized interfaces between the file system implementation
315 and the rest of the kernel have been developed.
316 Among these are Sun Microsystems' Virtual File System interface (VFS)
317 using \fBvnodes\fP [Sandburg85] [Kleiman86],
318 Digital Equipment's Generic File System (GFS) architecture [Rodriguez86],
319 AT&T's File System Switch (FSS) [Rifkin86],
320 the LOCUS distributed file system [Walker85],
321 and Masscomp's extended file system [Cole85].
322 Other remote file systems have been implemented in research or
323 university groups for internal use,
324 notably the network file system in the Eighth Edition UNIX
325 system [Weinberger84] and two different file systems used at Carnegie Mellon
326 University [Satyanarayanan85].
327 Numerous other remote file access methods have been devised for use
328 within individual UNIX processes,
329 many of them by modifications to the C I/O library
330 similar to those in the Newcastle Connection [Brownbridge82].
331 .PP
332 Each design attempts to isolate file system-dependent details
333 below a generic interface and to provide a framework within which
334 new file systems may be incorporated.
335 However, each of these interfaces is different from
336 and incompatible with the others.
337 Each addresses somewhat different design goals,
338 having been based on a different version of UNIX,
339 having targeted a different set of file systems with varying characteristics,
340 and having selected a different set of file system primitive operations.
341 .PP
342 Our effort in this area is aimed at providing a common framework to
343 support these different distributed file systems simultaneously rather than to
344 simply implement yet another protocol.
345 This requires a detailed study of the existing protocols, 
346 and discussion with their implementors to determine whether
347 they could modify their implementation to fit within our proposed
348 framework.  We have studied the various file system interfaces to determine
349 their generality, completeness, robustness, efficiency, and aesthetics
350 and are currently working on a file system interface
351 that we believe includes the best features of
352 each of the existing implementations.
353 This work and the rationale underlying its development
354 have been presented to major software vendors as an early step
355 toward convergence on a standard compatible file system interface.
356 Briefly, the proposal adopts the 4.3BSD calling convention for file
357 name lookup but otherwise is closely related to Sun's VFS
358 and DEC's GFS. [Karels86].
359 .NH 2
360 System Security
361 .PP
362 The recent invasion of the DARPA Internet by a quickly reproducing ``worm''
363 highlighted the need for a thorough review of the access
364 safeguards built into the system.
365 Until now, we have taken a passive approach to dealing with
366 weaknesses in the system access mechanisms, rather than actively
367 searching for possible weaknesses.
368 When we are notified of a problem or loophole in a system utility
369 by one of our users,
370 we have a well defined procedure for fixing the problem and 
371 expeditiously disseminating the fix to the BSD mailing list.
372 This procedure has proven itself to be effective in
373 solving known problems as they arise
374 (witness its success in handling the recent worm).
375 However, we feel that it would be useful to take a more active
376 role in identifying problems before they are reported (or exploited).
377 We will make a complete audit of the system
378 utilities and network servers to find unintended system access mechanisms.
379 .PP
380 As a part of the work to make the system more resistant to attack
381 from local users or via the network, it will be necessary to produce
382 additional documentation on the configuration and operation of the system.
383 This documentation will cover such topics as file and directory ownership
384 and access, network and server configuration,
385 and control of privileged operations such as file system backups.
386 .PP
387 We are investigating the addition of access control lists (ACLs) for
388 filesystem objects.
389 ACLs provide a much finer granularity of control over file access permissions
390 than the current
391 discretionary access control mechanism (mode bits).
392 Furthermore, they are necessary
393 in environments where C2 level security or better, as defined in the DoD
394 TCSEC [DoD83], is required.
395 The POSIX P1003.6 security group has made notable progress in determining
396 how an ACL mechanism should work, and several vendors have implemented
397 ACLs for their commercial systems.
398 Berkeley will investigate the existing implementations and determine
399 how to best integrate ACLs with the existing mechanism.
400 .PP
401 A major shortcoming of the present system is that authentication
402 over the network is based solely on the privileged port mechanism
403 between trusting hosts and users.
404 Although privileged ports can only be created by processes running as root
405 on a UNIX system,
406 such processes are easy for a workstation user to obtain;
407 they simply reboot their workstation in single user mode.
408 Thus, a better authentication mechanism is needed.
409 At present, we believe that the MIT Kerberos authentication
410 server [Steiner88] provides the best solution to this problem.
411 We propose to investigate Kerberos further as well as other
412 authentication mechanisms and then to integrate
413 the best one into Berkeley UNIX.
414 Part of this integration would be the addition of the
415 authentication mechanism into utilities such as
416 telnet, login, remote shell, etc.
417 We will add support for telnet (eventually replacing rlogin),
418 the X window system, and the mail system within an authentication
419 domain (a Kerberos \fIrealm\fP).
420 We hope to replace the existing password authentication on each host
421 with the network authentication system.
422 .NH
423 References
424 .sp
425 .IP Brownbridge82
426 Brownbridge, D.R., L.F. Marshall, B. Randell,
427 ``The Newcastle Connection, or UNIXes of the World Unite!,''
428 \fISoftware\- Practice and Experience\fP, Vol. 12, pp. 1147-1162, 1982.
429 .sp
430 .IP Cole85
431 .br
432 Cole, C.T., P.B. Flinn, A.B. Atlas,
433 ``An Implementation of an Extended File System for UNIX,''
434 \fIUsenix Conference Proceedings\fP,
435 pp. 131-150, June, 1985.
436 .sp
437 .IP DoD83
438 .br
439 Department of Defense,
440 ``Trusted Computer System Evaluation Criteria,''
441 \fICSC-STD-001-83\fP,
442 DoD Computer Security Center, August, 1983.
443 .sp
444 .IP Karels86
445 Karels, M., M. McKusick,
446 ``Towards a Compatible File System Interface,''
447 \fIProceedings of the European UNIX Users Group Meeting\fP,
448 Manchester, England, pp. 481-496, September 1986.
449 .sp
450 .IP Kleiman86
451 Kleiman, S.,
452 ``Vnodes: An Architecture for Multiple File System Types in Sun UNIX,''
453 \fIUsenix Conference Proceedings\fP,
454 pp. 238-247, June, 1986.
455 .sp
456 .IP Leffler84
457 Leffler, S., M.K. McKusick, M. Karels,
458 ``Measuring and Improving the Performance of 4.2BSD,''
459 \fIUsenix Conference Proceedings\fP, pp. 237-252, June, 1984.
460 .sp
461 .IP McKusick84
462 McKusick, M.K., W. Joy, S. Leffler, R. Fabry,
463 ``A Fast File System for UNIX'',
464 \fIACM Transactions on Computer Systems 2\fP, 3.
465 pp 181-197, August 1984.
466 .sp
467 .IP McKusick85
468 McKusick, M.K., M. Karels, S. Leffler,
469 ``Performance Improvements and Functional Enhancements in 4.3BSD,''
470 \fIUsenix Conference Proceedings\fP, pp. 519-531, June, 1985.
471 .sp
472 .IP McKusick86
473 McKusick, M.K., M. Karels,
474 ``A New Virtual Memory Implementation for Berkeley UNIX,''
475 \fIProceedings of the European UNIX Users Group Meeting\fP,
476 Manchester, England, pp. 451-460, September 1986.
477 .sp
478 .IP McKusick88
479 McKusick, M.K., M. Karels,
480 ``Design of a General Purpose Memory Allocator for the 4.3BSD UNIX Kernel,''
481 \fIUsenix Conference Proceedings\fP,
482 pp. 295-303, June, 1988.
483 .sp
484 .IP Rifkin86
485 Rifkin, A.P., M.P. Forbes, R.L. Hamilton, M. Sabrio, S. Shah, K. Yueh,
486 ``RFS Architectural Overview,'' \fIUsenix Conference Proceedings\fP,
487 pp. 248-259, June, 1986.
488 .sp
489 .IP Rodriguez86
490 Rodriguez, R., M. Koehler, R. Hyde,
491 ``The Generic File System,''
492 \fIUsenix Conference Proceedings\fP,
493 pp. 260-269, June, 1986.
494 .sp
495 .IP Sandberg85
496 Sandberg, R., D. Goldberg, S. Kleiman, D. Walsh, B. Lyon,
497 ``Design and Implementation of the Sun Network File System,''
498 \fIUsenix Conference Proceedings\fP,
499 pp. 119-130, June, 1985.
500 .sp
501 .IP Satyanarayanan85
502 Satyanarayanan, M., \fIet al.\fP,
503 ``The ITC Distributed File System: Principles and Design,''
504 \fIProc. 10th Symposium on Operating Systems Principles\fP, pp. 35-50,
505 ACM, December, 1985.
506 .sp
507 .IP Steiner88
508 Steiner, J., C. Newman, J. Schiller,
509 ``\fIKerberos:\fP An Authentication Service for Open Network Systems,''
510 \fIUsenix Conference Proceedings\fP, pp. 191-202, February, 1988.
511 .sp
512 .IP Walker85
513 Walker, B.J. and S.H. Kiser, ``The LOCUS Distributed File System,''
514 \fIThe LOCUS Distributed System Architecture\fP,
515 G.J. Popek and B.J. Walker, ed., The MIT Press, Cambridge, MA, 1985.
516 .sp
517 .IP Weinberger84
518 Weinberger, P.J., ``The Version 8 Network File System,''
519 \fIUsenix Conference presentation\fP,
520 June, 1984.