|
|
1.1 ! root 1: .\" Copyright (c) 1986 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)netns.t 1.3 (Berkeley) 4/11/86 ! 6: .\" ! 7: .NH ! 8: Xerox Network Systems Protocols ! 9: .PP ! 10: 4.3BSD now supports some of the Xerox NS protocols. ! 11: The kernel will allow the user to send or receive IDP datagrams directly, ! 12: or establish a Sequenced Packet connection. ! 13: It will generate Error Protocol packets when necessary, ! 14: and may close user connections if this is the appropriate action on ! 15: receipt of such packets. ! 16: It will respond to Echo Protocol requests. ! 17: The Routing Information Protocol is executed by a user level process, ! 18: and sufficient access has been left for other protocols to be implemented ! 19: using IDP datagrams. ! 20: It would be possible to set the additional fields required for the Packet ! 21: Exchange format at user level, to provide a daemon to respond to ! 22: time-of-day requests, or conduct an expanding ring broadcast to ! 23: discover clearinghouses. ! 24: .PP ! 25: Wherever possible, the algorithms and data structures parallel those ! 26: used in Internet protocol support, ! 27: so that little extra effort should be required to maintain the NS protocols. ! 28: There has not yet been much effort at tuning. ! 29: .NH 2 ! 30: Naming ! 31: .PP ! 32: A machine running 4.3 is allowed to have only one six-byte NS host address, ! 33: but is permitted to be on several networks. ! 34: As in the Internet case, an address of all zeros may be used to ! 35: bind the host address for an offered service. ! 36: Unlike the Internet case, an address of all zeros cannot be used ! 37: to contact a service on the same machine. (This should be changed.) ! 38: .PP ! 39: There is only one name space of port numbers, as opposed to the Internet ! 40: case where each protocol has its own port space. ! 41: .PP ! 42: Several point-to-point connections can share the same network number. ! 43: The destination of a point-to-point connection can have a different ! 44: network number from the local end. ! 45: .PP ! 46: The files \fIns.h\fP, \fIns_pcb.h\fP, \fIns.c\fP, ! 47: \fIns_pcb.c\fP and \fIns_proto.c\fP are direct ! 48: translations of similarly named files in the netinet directory. ! 49: \fINs_pcbnotify\fP differs a little from \fIin_pcbnotify\fP in that it takes ! 50: an extra parameter which it will pass to the ``notification'' ! 51: routine argument indirectly, by stuffing it in each NS control block ! 52: selected. ! 53: .PP ! 54: This header file \fIns_if.h\fP contains the declaration of the NS ! 55: variety of the per-interface address information, like \fInetinet/in_var.h\fP. ! 56: .NH 2 ! 57: Encapsulations ! 58: .PP ! 59: The stipulation that each host is allowed exactly one 6 byte address ! 60: implies that each 10 Mb/s Ethernet interface other than the first ! 61: will need to reprogram its physical address. ! 62: All the 10 Mb/s Ethernet drivers supplied with 4.3BSD perform this. ! 63: The 3 Mb/s Ethernet driver does not perform any address resolution, ! 64: but uses the 6th byte of the NS host address as a PUP host number, ! 65: making it largely incompatible with altos running XNS. ! 66: In a system with both 3 Mb/s and 10 Mb/s Ethernets, ! 67: one should configure the 3 Mb/s network first. ! 68: .PP ! 69: The file \fIns_ip.c\fP contains code ! 70: providing a mechanism for sending XNS packets over any medium supporting ! 71: IP datagrams. ! 72: It builds objects that look like point-to-point interfaces ! 73: from the point of view of NS, and a protocol from the point of view of IP. ! 74: Each of these pseudo interface structures ! 75: has extra IP data at the end (a route, source and destination), ! 76: and fits exactly into an mbuf. ! 77: If the \fIifnet\fP structure grows any larger, ! 78: the extra data will have to be put in a separate mbuf, ! 79: or the whole scheme will have to be reworked more rationally. ! 80: .NH 2 ! 81: Datagrams ! 82: .PP ! 83: The files \fIns_input.c\fP and \fIns_output.c\fP contain the base level ! 84: routines which interact with network interface drivers. ! 85: There is a kernel variable \fIidp_cksum\fP, which can be used to defeat ! 86: checksums for all packets. ! 87: (There ought to be an option per socket to do this). ! 88: The NS output routine manages a cached route in the protocol ! 89: control block of each socket. ! 90: If the destination has changed, the route has been marked down, ! 91: or the route was freed because of a routing change, a new route ! 92: is obtained. ! 93: The route is not used if the NS_ROUTETOIF (aka SO_DONTROUTE or MSG_DONTROUTE) ! 94: option is present. ! 95: .PP ! 96: The files \fIidp.h\fP, \fIidp_var.h\fP, and \fIidp_usrreq.c\fP are the analogues ! 97: of \fIudp.h\fP, \fIudp_var.h\fP, and \fIudp_usrreq.c\fP. ! 98: .NH 2 ! 99: Error and Echo protocols ! 100: .PP ! 101: Routines for processing incoming error protocol packets ! 102: are in \fIns_error.c\fP. They call \fIctlinput\fP routines for IDP and ! 103: SPP to maintain structural similarity to the Internet implementation. ! 104: The kernel will generate error messages indicating lack ! 105: of a listener at a port, incorrectly received checksum, ! 106: or that a packet was thrown away due to insufficient resources ! 107: at the recipient (buffer full). ! 108: The echo protocol is handled as a special case. ! 109: If there is no listener at port number 2, then the routine ! 110: that generates the ``no listener'' error message will inspect ! 111: the packet to see if it was an echo request, and if so, will ! 112: echo it. ! 113: Thus, the user is free to construct his own echoing daemon ! 114: if he so chooses. ! 115: .NH 2 ! 116: Sequenced Packet Protocol ! 117: .PP ! 118: In general, this code employs the Internet TCP algorithms where possible. ! 119: By default, a three-way handshake is used in establishing connections. ! 120: There is a compile time option to employ the minimal two way ! 121: handshake. ! 122: Incoming connections may multiplexed by source machine and port, as in the ! 123: Internet case. ! 124: It will switch over ports when establishing connections if requested to do so. ! 125: .PP ! 126: The retransmission timing and strategies are much like those of TCP, ! 127: though recent performance enhancements have not yet migrated here. ! 128: There has not yet been much opportunity to tune this implementation. ! 129: The code is intended to generate keep-alive packets, ! 130: though there is some evidence this isn't working yet. ! 131: The TCP source-quench strategy hasn't been added either. ! 132: The default nominal packet size is 576 bytes, and the default ! 133: amount of buffering is 2048. ! 134: It is possible to raise both by setting appropriate socket options.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.