RFC 704

IMP/Host and Host/IMP Protocol change

πŸ“… published September 1975, from ietf

RFC 704: IMP/Host and Host/IMP Protocol Change πŸ’–

Okay bestie, so this one is from September 1975, written by Paul J. Santos, Jr. (BBN), and it's filed as NIC #33490. It's a revision of RFC 687 πŸŽ€ Its whole vibe is expanding the IMP/host and host/IMP protocol so hosts can be addressed on more than 63 IMPs 🌈

The goal is to fix existing limits without big fundamental changes to the IMP/host philosophy. Yes, the wider packet-switching world is debating a lot of huge changes right now, but the network needs improvements on a shorter timeline, and there are already 62 IMPs 😭 So this is a glow-up, not a total rebuild ✨

Before reading, you should already know Section 3 of BBN Report 1822 πŸ“š Also, the expanded protocol is backwards compatible, which we'll get into 🫢


1. Expanded Leader Size πŸ¦‹

The leader grows from two to six 16-bit words πŸ’… That gives room for bigger fields and new additions.

Here's the tricky part. The IMP/host (host/IMP) leader goes from 32 bits to 96 bits, and that causes word-boundary problems for some hosts πŸ™ˆ To deliver messages between a host on the old protocol and a host on the new one, without shifting the data in the IMP words, the data (the first bit of the host/host leader) has to start at an even multiple of 8-bit bytes from the beginning of the whole message πŸ“

Hosts also prefer (really, they require it if they aren't going to shift anything) that the combined host/IMP (IMP/host) and host/host leaders fill a whole number of machine words. A "machine word" here means the smallest bit sequence the host/IMP interface can access independently πŸ’œ The combined leader is 136 bits, so only machines with 8-, 16-, 32-, and 64-bit words are happy with it 😭

To make life easier for weird machines, each host can tell its IMP how many 16-bit padding words to insert between the host/IMP (IMP/host) and host/host leaders 🧚 The IMP strips the padding on host-to-IMP processing and adds it back on IMP-to-host processing. So 24-bit machines can ask for one 16-bit padding word, and 10- and 36-bit machines can ask for five 16-bit padding words πŸ‘‘

2. Expanded Address field 🌸

The address field grows to 32 bits: 16 bits of IMP address, 0 bits of host address, and 8 bits for a (future) network address πŸ’– The team says this is enough for any foreseeable ARPA Network growth ✨

3. New Message Length Field 🧚

A new field lets the source host optionally tell the IMP subnetwork the message length in bits πŸ’… The IMP subnetwork can use that info, when it's there, to manage network buffer storage better. The destination host can use it too, for its own buffer storage πŸ¦‹

The field is 16 bits wide. The maximum number of packets per message also expands to 16, up from the current 8 πŸ”₯

4. Expanded Handling Type Field 🌈

The handling type field, which currently tells priority streams apart from non-priority streams (and more), grows to eight bits πŸ’œ That opens the door to lots of parallel message streams between pairs of hosts with different handling. Think priority, non-priority, different packets-per-message counts (more on that below), and a stream that needs guaranteed capacity ✨

For now, only the old-style priority and non-priority handling types ship in the first implementation of the expanded protocol πŸŽ€

5. Source Host Control of Packets per Message πŸ’…

The source host may be able to specify a message stream that uses a set number of packets per multi-packet message, like two packets per message or five packets per message πŸ¦‹ Right now the IMP network needs eight packet-buffers for reassembly, but with this it won't have to, which may give better service to those hosts πŸ™Œ This helps users who need both low delay and high throughput πŸ”₯

This facility is orthogonal to the address expansion and lower priority, so it gets built after the other basic changes 🫢

6. Unordered (type-3) Message Change πŸ’€

Unordered messages become a subtype of the type O message instead of their own separate message type πŸ’… That keeps things consistent with needing to check host access control on all messages ✨

Heads up: this is a slight backward incompatibility for the three or so hosts that currently use type-3 messages in their research 😭

7. Change in Format of Fake Host Addresses πŸŽ€

The For/From IMP bit gets eliminated βœ‚οΈ The fake host addresses will now be the four highest host numbers. For example, IMP Teletype becomes host 252 🌸

8. Addition of a Parameter to the IMP to Host NOP 🧚

The IMP to host NOP picks up a new parameter that specifies the address (IMP and host number) of the host πŸ’œ

9. Backward Compatibility 🫢

The old and new formats run in parallel inside the IMPs for the foreseeable future, so host software can phase over gradually πŸ¦‹ A host can tell its IMP which format to use, so it can even switch back and forth between the two modes for debugging πŸ”₯

You pick the mode with the format of the host to IMP NOP message, and the IMP uses whichever mode the host to IMP NOP it has received is in ✨ A host can use either format without knowing much about the other one. If it gets the other format's messages, it just discards them πŸ’… When the IMP starts up, it sends several NOP messages of each type so the hosts can see its choice 🌈

One caveat: a host that doesn't implement the new format can't address hosts on IMPs with an IMP number greater than 63 😭 Even so, wherever possible, the IMPs do the conversion needed so old-format hosts and new-format hosts can talk to each other, in both directions 🫢

10. Non-blocking Host Interface πŸ™ˆ

The IMP gets a way to refuse a message from a host without blocking the host interface πŸ›‘ While it refuses, it can gather what it needs to send the refused message, then ask the host to resend it πŸ”

The host can also ask whether it's able to send a message and get notified when it is, without actually sending the message and getting refused πŸ‘€ Just like point 5, this gets added after the more basic changes are in πŸ’–

11. Maximum Message Length ✨

The maximum number of data bits in a single-packet message may drop by a few bits πŸŽ€


We're now drafting the needed changes to Report 1822 🌸 We'll circulate the draft so host programmers can start getting ready πŸ’…πŸ¦‹

πŸ“¦ where this page comes from