RFC 1682
IPng BSD Host Implementation Analysis
RFC 1682: IPng BSD Host Implementation Analysis π
okay bestie, title block tea β This one's from the Network Working Group, it's RFC 1682, and the author is J. Bound at Digital Equipment Corporation. It's Informational, so it's a vibe check, not a standard π It's dated August 1994, and the header doesn't list anything it obsoletes or updates, so it's not stepping on anyone's toes π¦
Status of this Memo πΈ
This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind. Distribution of this memo is unlimited. ngl that's the whole disclaimer energy π
Abstract β¨
This doc was submitted to the IETF IPng area in response to RFC 1550. Publication of this document does not imply acceptance by the IPng area of any ideas expressed within. Comments should be submitted to the big-internet@munnari.oz.au mailing list π
Overview π
So this IPng white paper, IPng BSD Host Implementation Analysis, was sent to the IPng Directorate as a BSD host reference point π₯οΈ The goal is to help with the engineering considerations during the IETF process of picking an IPng proposal. The University of California Berkeley Software Distribution (BSD) TCP/IP (4.3 + 4.4) system is the example host they use as the reference.
Also, this is only the author's personal analysis, based on research and implementation experience for IPng. It does not represent any product or future product from any host vendor π ββοΈ And it's not promoting any specific IPng at this time, so no picking favourites π
Acknowledgments π«Ά
The author gives a big shoutout to the people at Digital they talked host implementation stuff with over the past year: Peter Grehan, Eric Rosen, Dave Oran, Jeff Mogul, Bill Duane, Tony Lauck, Bill Hawe, Jesse Walker, John Dustin, Alex Conta, and Fred Glover π
Then there are the outside-the-company chats with Bob Hinden (SUN), Bob Gilligan (SUN), Dave Crocker (SGI), Dave Piscitello (Core Competence), Tracy Mallory (3Comm), Rob Ullmann (Lotus), Greg Minshall (Novell), J Allard (Microsoft), Ramesh Govinden (Bellcore), Sue Thompson (Bellcore), John Curran (NEARnet), Christian Huitema (INRIA), and Werner Volgels (INESC) π
And the author thanks Digital Equipment Corporation for letting him work on IPng within the IETF as part of his job π
1. Introduction π§
In this white paper, a host is a system with an operating system that includes a network subsystem as one of its parts, plus an interprocess communications facility to reach that network subsystem. People call these hosts all sorts of things: a Workstation, Server, PC, Super Computer, Mainframe, or an Embedded System (Realtime Devices) π€
IPng is going to need changes to a hosts network software architecture. Those changes should be as transparent as possible to the existing IPv4 applications running on hosts. The main ask is no drama for current apps π«Ά
After looking at the network software architecture for a BSD host, the paper goes into the network software alterations it expects, extended capabilities, transition software, and a deployment consideration for IPng hosts π¦
The inclusive OR of all IPng proposals was used to develop the engineering considerations discussed in this paper. So basically it's the whole crew, not just one proposal π
2. Network Software Architecture β¨
The BSD host network software architecture is basically three components: the interprocess communications facility, the network communications subsystem, and the network protocols supported. These three are tightly coupled, so they have to be integrated in a way that gives high performance for the applications depending on them to interoperate efficiently β‘ Here's the BSD host view of the TCP/IP protocol suite, as a diagram π
+-----------------------------------------------------------------+
| Application Layer |
| |
| Socket and Network Library APIs |
| |
| BIND DNS |
| SNMP Management |
| User Space |
+-----------------------------------------------------------------+
| Kernel Space AF_INET |
| Communications Domain |
| Socket Layer |
| |
| Transport Layer TCP & UDP |
| Queues/Control |
| Blocks |
| Network Layer |
| +-----------------------------------+ |
| | IPv4 Modules Discovery Multicast | |
| | ICMP IGMP | |
| | Routing | Routing |
| | RIP EGP | Tables |
| | OSPF BGP | |
| | I-IS-IS IDRP | |
| +-----------------------------------+ |
| Link Dependent Layer |
| +-----------------------------------+ |
| | ARP, RARP, InARP, NCPs, Addr Tbls | |
| +-----------------------------------+ |
| Discovery & Interface |
| Cache |
| Data Link Layer |
| +-----------------------------------+ |
| | Ethernet, FDDI, ATM, HIPPI, PPP | |
| +-----------------------------------+ |
+-----------------------------------------------------------------+
2.1 Interprocess Communications Facility π¬
The interprocess communications (IPC) facility has three critical parts π
- The IPC mechanism to the network communications subsystem.
- The ability to access a network protocol set within that subsystem.
- The structures supporting the network communications subsystem.
The IPC facility has two implementation parts: one in user space and one in kernel space inside the operating system. People usually don't tell them apart, which is why you'll see sockets in both user and kernel space in the diagram above π In user space, the IPC gives you an application program interface (API) that app developers use to reach the host's network features. Those APIs have matching functions in kernel space that carry out whatever the user space requests ask for π
On a BSD host, the sockets paradigm defines the data structure for a network address inside a chosen protocol family (communications domain) in the network subsystem. That structure has an address family, a port for the selected protocol, and a network address π
The IPC facility on a host depends on its interface to the BIND DNS application, which is the defacto method for retrieving network addresses when you use TCP/IP π
Other interfaces that applications might need to set up the network connection inside the IPC facility include setting and getting options for the protocols used, getting and accessing information about networks, protocols, and network services, and sending and transmitting datagrams π¬
2.2 Network Communications Subsystem π οΈ
The network communications subsystem has these generic parts, as shown in the diagram: transport layer, network layer, link dependent layer, and data link layer. A BSD host might not implement them as true distinct layers, but this white paper talks about them that way to make the discussion easier π§©
The transport layer is the application interface into the network communications subsystem. It sets up the parametric pieces needed to start and accept connections π€ It does that by making requests to the lower layers of the subsystem, and it also handles the queues and protocol control blocks for specific network connections.
The network layer has modules that build and extend the network layer datagram, the control protocol datagrams, and the routing abstraction on the host. On a BSD host, this layer often gets extended to cover both interior and exterior routing πΊοΈ
The link dependent layer has modules that give the network communications subsystem an interface for mapping network addresses to physical addresses. It also builds the cache so that info is available to the host network software πΎ
On a BSD host, the network layer and the link dependent layer together handle system discovery for hosts and routers π
The data link layer has modules that define the structures for talking to the hardware media the host uses on the local network π
2.3 Network Protocols π
The TCP/IP protocol suite, as defined by the IETF RFC specifications, is the set of network protocols this white paper uses as its reference π
3. Network Software Alterations π¦
Right now, these are the IPng network software alterations people expect to see on a BSD host π
- Applications Embedding IPv4 Addresses.
- Transport Interfaces and Network APIs.
- Socket Layer and Structures.
- Transport Layer.
- Network Layer Components.
- Link dependent Layer.
3.1 Applications Embedding IPv4 Addresses πͺ
Internet style applications in this white paper are the protocols defined for an end user using TCP/IP to exchange messages, transfer files, and set up remote login sessions π¬
Applications use the sockets network APIs to keep an opaque view of the network addresses used to support connections across a network. Opaque here means the application decides the network address for the connection and then binds that address to a socket. The application then uses the reference defined for that socket to receive and transmit data across the network π
An application that embeds an IPv4 network address in its datagram is assuming the format of that address is permanent. That's going to be a huge problem when IPng changes addresses π So far, only one Internet style application has been found to cause this problem, and that's FTP [1,2] π
3.2 Transport Interfaces and Network APIs β¨
okay bestie, the transport interface and network API changes a BSD host needs for IPng are all about the size of the network address inside the socket data structure π depending on how a host handles that, supporting both IPv4 and IPng could mean existing IPv4 apps have to be recompiled. worst case? the existing IPv4 apps might need their source code modified so they can reach the network communications subsystem π
there also have to be enhancements to the network APIs an app uses to fetch BIND DNS records, so it can tell IPv4 address requests apart from IPng ones π
the network API enhancements, and how they get implemented, decide how well any IPng proposal on a BSD host can interoperate between an IPv4 only host, an IPng only host, and an IPng-IPv4 host system. super important π
depending on which IPng proposal gets picked, the network options, services, and management objects will need to be extended at the transport interface so apps can actually use those features π¦
3.3 Socket Layer and Structures
the socket layer and its structures will need changes to support whatever network address an IPng proposal uses πΈ on top of that, new or removed options and services will have to be built into the socket abstraction inside the network communications subsystem.
3.4 Transport Layer
the transport layer will need to be modified to support any new or removed services that an IPng solution set proposes. it's about to get more overloaded π© since it has to handle binding either the IPv4 or the IPng network layer components, so apps can tell apart the services and structures available to them. the overload also happens if functionality gets removed from the network layer and moved up to the transport layer by an IPng solution.
it'll also take some real design thought to implement IPng in a way that keeps the hundreds of man years of performance work in the host transport layer intact π₯Ή this must be analyzed in depth, and it should be part of the operational testing of any IPng proposal.
3.5 Network Layer Components
the network layer components are going to get the biggest glow-up on a host π on top of that, a host will be required to keep an integrated network layer below the transport layer software, so it can support either IPng or IPv4 network layer components and their associated pieces.
depending on which IPng gets picked, the host changes to the network layer components could range from a complete replacement with new protocols all the way to extensions of the existing IPv4 network layer protocols π₯
every IPng proposal will affect the BSD host routing abstraction, which has to keep supporting interior and exterior routing. depending on the proposal, those changes could be a totally new paradigm or just an update to the existing IPv4 paradigm.
system discovery of nodes on the local subnetwork or across an internetwork path, in all IPng proposals, will require changes to the BSD host software network layer component π
3.6 Link dependent Layer
the link dependent layer on a host will need to accommodate new IPng addresses and the system discovery models of any IPng proposal π§
4. Extended Capabilities with IPng β¨
the extended capabilities that BSD hosts could implement are listed below π a lot of these already exist with IPv4, but they may need changes once IPng shows up. some of them will be brand new, though!
4.1 Autoconfiguration and Autoregistration
right now hosts can do autoconfiguration with DHCP using IPv4 addresses. IPng hosts will be faced with supporting the existing IPv4 addresses and the new IPng addresses π also, the boot-strap protocol BOOTP, which boots minimal BSD host configurations (e.g., diskless nodes), will need to be supported by IPng hosts too.
4.2 PATH MTU Discovery
PATH MTU discovery seems to be something every proposal is looking at π people are picking up on alterations to the existing PATH MTU implementation, because changes are expected in system discovery.
4.3 Multicast
every proposal shows changes to Multicast that will affect present BSD host implementations of IPv4 Multicast π‘ it also looks like the IPv4 unicast broadcast is going to get replaced by a multicast broadcast.
4.4 Flow Specification and Handling
this is an extended capability that all the IPng proposals are putting forward β¨
4.5 System Discovery
each proposal has a new model for IPng system discovery of a host π
4.6 Translation and Encapsulation
the routing abstraction in a BSD host will have to deal with the effects of any translation or encapsulation of network layer datagrams, if an IPng requires them π
4.7 Network Layer Security
it is perceived that network layer security will be required at the network layer component of IPng, and a BSD host will have to implement it π
4.8 Socket Address Structure
the network kernel socket address structure is going to change because of IPng π₯
4.9 Network APIs
the network APIs for a BSD host will have to be enhanced to support IPng. any new options that apps can use because of the IPng network service will also have to be added to the APIs π
4.10 Network Management
network management for IPng will have to support new network objects as defined by the IPng proposal. plus, the data structures in the BSD host network kernel that display network topology will be altered by a new network layer datagram and its associated components πΊοΈ
5. Transition Software β¨
transition software in this white paper refers to the network software alterations on a host that let both IPv4 and IPng work for applications and the host's operating system network kernel. it is the subject of another set of papers, which will identify the transition software network managers need to move their users from IPv4 to IPng π
transition software on a host will be required to maintain compatibility between IPv4 and IPng, and to manage both the existing IPv4 and IPng environments, as follows:
- BIND DNS record updates and handling by the application.
- SNMP management interface and monitoring of host network structures.
- APIs supporting IPv4 and IPng differentiation for the application.
- Defacto network tools altered (e.g.,
tcpdump,traceroute,netstat). - ARP to new system discovery.
- BOOTP diskless node support for IPng.
- DHCP integration with IPng Autoconfiguration.
- Routing table configuration on the BSD host (e.g.,
routed,ifconfig). - Selection of the network layer (IPv4 or IPng) at the transport layer.
- New options and services provided by an IPng protocol.
- IPv4 and IPng routing protocols in the network layer.
- IPv4 and IPng system discovery in the network layer.
these are only the highlights of the transition software a host will have to deal with when implementing IPng π«Ά the host network architecture diagram depicted previously will require software enhancements to each label in the diagram.
it is very important that each IPng proposal provide a specification for a transition plan from IPv4 to IPng, along with their technical criteria for interoperation between IPv4 and IPng π₯
it should also be a requirement that existing IPv4 applications not have to be recompiled when a host has implemented both an IPv4 and an IPng network layer and associated components π
it is very desirable that when a host implements both an IPv4 and an IPng network layer and associated components, there is no performance degradation compared to an existing IPv4 only host π
it should not be a requirement by IPng that a host must support both an IPv4 and an IPng network layer πΈ
6. A Deployment Consideration π
complete and extensive technical specifications must be available for any IPng proposal, and a selection of any proposal must accommodate multiple implementations. the IPng Directorate should review proposed specifications for completeness π§
it is important that the IPng Directorate determine how long the CIDR IPv4 address plan can extend the life of IPv4 addresses on the Internet. this variable can affect the time we have to deploy IPng and the proposed transition plans β³
References
[1] Gilligan, B., et. al., "IPAE: The SIPP Interoperability and Transition Mechanism", Work in Progress.
[2] Piscitello, D., "FTP Operation Over Big Address Records (FOOBAR)", RFC 1639, Core Competence, Inc., June 1994.
Security Considerations
Security issues are discussed in Section 4.7. π this one is serious business, so give Section 4.7 your full attention.
Author's Address π
Jim Bound
Digital Equipment Corporation
110 Spitbrook Road ZK3-3/U14
Nashua, NH 03062-2698
Phone: +1 603 881 0400
EMail: bound@zk3.dec.com
π¦ where this page comes from
- ietf: rfc1682 1994-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms