home *** CD-ROM | disk | FTP | other *** search
- [The following paper has been submitted to the 7th ARRL Computer
- Networking Conference. You may read it and pass it on to others
- to read, but please do not reproduce it in any other publication.
- Copyright 1988 by Daniel M. Frank.]
-
- [This is a DOS text version of a document originally produced
- with a word processing program. In the translation process,
- some text formatting may have been disturbed, and the bold
- facing has definitely been lost. So, it may not scan quite
- like the original. Sorry.]
-
-
- TRANSMISSION OF IP DATAGRAMS OVER NET/ROM NETWORKS
-
- Daniel M. Frank, W9NK
- 1802 Keyes Avenue
- Madison, WI 53711-2006
-
-
- ABSTRACT
-
- One of the main design goals of the Internet Protocol was that IP
- datagrams could be carried over existing local- and wide-area
- networks. This characteristic of IP makes it possible to build so
- called "internetworks" out of existing network facilities. We
- built support for an existing Amateur wide area network, NET/ROM,
- into the KA9Q TCP/IP package, allowing the use of NET/ROM to carry
- IP datagrams, and adding features which make the KA9Q software
- useful as a full duplex NET/ROM packet switch. We have also shown
- that NET/ROM may be used as a datagram network only, independent
- of its transport and application layer facilities.
-
-
- INTRODUCTION
-
- In the late Seventies and early Eighties, the world of computer
- communications consisted of many isolated local- and wide-area
- networks. Enough communications capacity existed to link the
- entire country, and much of the world, into a single large network,
- but the existing facilities were physically and logically
- dissimilar. They could not simply be "plugged together" to make
- this large "internetwork" (or "Internet").
-
- The designers of the Internet Protocol (the "IP" in "TCP/IP") were
- committed to overcoming the obstacles that prevented an Internet
- >from developing. They came up with two key ideas:
-
- o Gateways can be established between networks. A gateway
- is a computer which possesses the physical resources and
- software to connect with and speak to more than one kind
- of network.
-
- o A single protocol can be developed whose messages
- ("datagrams") can pass through any network, hidden inside
- that network's "native" messages. When a message with
- a datagram inside it encounters a gateway, the gateway
- "unwraps" the datagram, rewraps it in the native message
- of a second network, and sends it on its way. If a
- datagram is too large to fit inside the native message
- type of a network, the gateway breaks it into pieces
- ("fragments"), each of which is then wrapped in a native
- message and sent on.
-
- By using IP and gateways, the designers of the Internet have
- created a global "network of networks", which today encompasses
- hundreds of thousands of computer systems, connected to every
- conceivable kind of network.
-
- Amateur packet radio networking, like computer networking, consists
- of many different network technologies and protocols. Local AX.25
- communications, digipeating, TexNet, ROSE, and NET/ROM, to name
- only a few, coexist or compete for dominance as the network
- technology of choice. This competition is healthy, and is in the
- spirit of amateur radio experimentation. Any attempt to establish
- one network over another as the single "standard" is both pointless
- and doomed to failure. No single standard can ever be imposed on
- radio amateurs any more than it could have been imposed on computer
- networks, given the investments already made in equipment,
- software, and education.
-
- As the dissimilar amateur networks grow in size, they meet up with
- each other. Sometimes they coexist on the same channels. But
- without gateways and some kind of Internet Protocol, each network
- is an island of communication, unable to send or receive data
- beyond its own shores.
-
- The work described in this paper is a first step towards true
- Amateur Radio internetworking. Using the KA9Q TCP/IP package as
- a basis, we have built a software system which functions as a
- gateway between local TCP/IP networks and the NET/ROM network. It
- allows IP datagrams to be forwarded automatically and transparently
- across existing NET/ROM facilities. In addition, as a full
- implementation of NET/ROM layer 3, it is capable of functioning as
- a NET/ROM relay node (as opposed to an AX.25 endpoint), and as a
- full duplex NET/ROM packet switch.
-
-
- IP OPERATIONS OVER STANDARD AX.25 CONNECTIONS
-
- In order to properly understand how we have interfaced to the
- NET/ROM network, we should first examine how "ordinary" TCP/IP
- operations take place over AX.25. This description follows the ISO
- OSI Reference Model (RM), a seven-layer classification of network
- facilities.
-
- >From the bottom up, the layers used in packet TCP/IP operation are:
-
- (1) A physical layer, made up of the radios, antennas, and
- modems used to generate and carry the tones used to
- convey digital data from one place to another.
-
- (2) A data link layer, made up of HDLC and AX.25, used to
- format and address the data, detect errors and discard
- bad packets. The link layer only knows about and
- communicates with stations with which we are directly
- connected. In the case of packet radio, this means
- stations with which we have reliable, direct
- communications. (Digipeating doesn't count, for purposes
- of this discussion.)
-
- (3) A network layer, responsible for routing packets to their
- destinations through one or more link-to-link hops. The
- main distinction between the data link and network layers
- is that the network layer provides facilities for
- communication between stations not directly connected.
- The network layer has to have some concept of routing,
- that is, the path to be taken by a packet to reach its
- destination. We use IP as our network protocol.
-
- (4) A transport layer, responsible for reliable end-to-end
- communications. Our network layer does not guarantee
- that a packet will actually reach its destination. While
- AX.25 provides link layer acknowledgement and
- retransmission, it does not guard against nodes which go
- down, software errors, or a destination station which is
- not on the air. The transport layer provides for an
- acknowledgment to be sent from the packet's ultimate
- destination, and for retries in case that acknowledgment
- doesn't arrive within a reasonable amount of time.
-
- The other function of a transport layer is multiplexing.
- The network layer provides only host-to-host addressing.
- However, a computer can have many users, and provide many
- different services. The transport layer takes incoming
- packets from the network and directs them to the proper
- programs based on information contained in the transport
- header portion of the packets.
-
- Our transport protocol is TCP, the Transmission Control
- Protocol.
-
- (5) The session layer is mainly involved with providing
- services to individual programs within the computer. It
- is not of importance for the current discussion.
-
- (6) The presentation layer is mainly concerned with the
- uniform formatting of data, or its conversion between
- different character sets. Some of the TCP/IP user
- programs have a very simple presentation "layer" which
- maps plain text messages in the native character set of
- the user's computer, to and from ASCII with a standard
- line-ending convention.
-
- (7) The application layer is made up of the various programs
- and services that use networking facilities. Users of
- TCP/IP mainly make use of telnet, for keyboard to
- keyboard chat and remote login, smtp for automated
- transfer of mail, and ftp, for easy exchange of files.
-
-
-
- LINK LAYER MULTIPLEXING
-
- As can be seen from our description, local TCP/IP operation uses
- regular AX.25 communications for its link layer. An AX.25 packet
- containing an IP datagram contains a special code in the protocol
- ID (PID) field of its header. This allows the link layer software
- to forward the contents of the packet to the proper part of the
- KA9Q package, in this case the IP routing code.
-
- If the AX.25 packet contained a PID of "no level 3", the link layer
- would forward it to a different part of the package, in this case
- the AX.25 session code, which allows users of the package to hold
- "regular" AX.25 conversations, bypassing all layers between the
- link and application layers. (This brings up an important point
- about the reference model we've presented: an implementation may
- not contain certain layers from the RM if the services they would
- have provided are unused or unneeded.)
-
- This switching of packets at the link layer based on their PIDs is
- known as link layer multiplexing. Multiplexing at the link layer
- is extremely useful, because it allows different network layer
- protocols to share the same data link services, and often the same
- link connections. Link layer multiplexing is what allows the KA9Q
- software with NET/ROM support to act as a digipeater, an IP relay,
- and a NET/ROM relay node, all on the same channel, through the same
- TNC.
-
-
- AN OVERVIEW OF NET/ROM
-
- Now that we understand how IP datagrams are carried over packet
- radio links, we should examine how NET/ROM operates. Again, we
- will use the ISO OSI Reference Model as our framework:
-
- (1) The physical layer is the same, i.e. radios, antennas,
- and modems.
-
- (2) The data link layer is again AX.25, but the Protocol ID
- field of NET/ROM packets is set to a special NET/ROM ID.
-
- (3) The network layer of NET/ROM handles the automatic
- routing of packets to their destination. A NET/ROM
- network packet header contains the source and destination
- callsigns of the NET/ROM endpoints. There is no
- information about the route the packet will travel to its
- destination. Instead, every node maintains a routing
- table based on routing adjacencies: it receives
- broadcasts from other nodes which say, essentially, "I
- am willing to take traffic for such-and-such a node."
- When a NET/ROM node receives a network packet, it
- examines its routing table to see if anyone is willing
- to pass it on toward its destination. If so, it hands
- off the packet to the next station. If not, it simply
- throws the packet away without comment.
-
- The type of network communications service (as opposed
- to the routing techniques) used in NET/ROM (and IP) is
- usually called an unreliable, connectionless datagram
- layer, and the network layer packets are generally called
- datagrams. The service is unreliable, because it does
- not guarantee or confirm ultimate delivery. It is
- connectionless, because no circuit is established over
- which datagrams will travel. (This contrasts with some
- public data network protocols, where before data may be
- sent to a remote system, a fixed path to that system must
- be set up through the network, with resources
- preallocated at every intervening node. Each approach
- has its advantages and adherents.)
-
- (4) The transport layer of NET/ROM uses what is called a
- sequenced packet protocol. Unlike TCP, which delivers
- an unsegmented stream of bytes to the receiver, and is
- free to pack as many or as few bytes into each message
- as it likes, the NET/ROM transport delivers a sequence
- of packets. The amount of data in these packets is
- determined by the amount of data in the AX.25 packets the
- NET/ROM user presents for transmission. NET/ROM is not
- free to combine packets together for greater efficiency,
- although it can fragment and reassemble packets which are
- too large to fit in one of its transport messages.
-
- The NET/ROM transport protocol provides end-to-end
- delivery and acknowledgement, as well as demultiplexing
- of arriving messages by circuit number. A NET/ROM node
- can be handling traffic for more than one circuit, or
- connection, at a time, and it directs that traffic
- internally by examining the circuit number field of the
- transport header.
-
- (5) The session layer is not present in NET/ROM.
-
- (6) The presentation layer is not present in NET/ROM.
-
- (7) The application layer is what a user sees when he or she
- connects to a NET/ROM node. It is responsible for
- responding to user commands to list routes and nodes, and
- establish connections. "No layer 3" AX.25 packets
- arriving at a NET/ROM node are shunted directly up to the
- application layer, while "NET/ROM" PID packets are
- forwarded up to the NET/ROM network layer. This link
- layer multiplexing should be familiar from our earlier
- discussion.
-
-
- A full explanation of how the NET/ROM software works is beyond the
- scope of this paper. The reader is referred to the NET/ROM manual
- for further details.
-
-
- NETWORK AND INTERNETWORK
-
- Our presentation of the ISO OSI RM has been somewhat simplified.
- In particular, the ISO recognizes a subdivision of Layer 3 into a
- Network Layer (3A) and an Internetwork Layer (3B). Strictly
- speaking, the Internet Protocol (IP) is a 3B protocol, while the
- NET/ROM network service is a 3A protocol. To put it somewhat
- crudely, IP is an Internetwork Layer because its messages can be
- routed through multiple logically and physically distinct networks.
- The same cannot be said of X.25, for example, or of NET/ROM layer
- 3. Our NET/ROM support in the KA9Q package reflects this
- distinction.
-
- The KA9Q NET/ROM software is not a full NET/ROM implementation.
- That was unnecessary for our purposes. We didn't need the NET/ROM
- transport protocol, since our reliable end-to-end services are
- already provided by TCP. We didn't need the application layer, for
- similar reasons. What we did need was an existing network service
- that could carry our IP datagram traffic to remote destinations
- simply and easily. The NET/ROM network layer was sufficient for
- this purpose.
-
- We use the NET/ROM nodes as a datagram network. When we have
- traffic to pass through a local NET/ROM, our software makes sure
- we have an AX.25 connection to that node, then puts a NET/ROM layer
- 3 header on our IP datagram and sends it off to the NET/ROM via an
- AX.25 packet with a protocol ID of NET/ROM. The NET/ROM link layer
- sees the protocol ID and passes the packet to its network layer,
- which examines its routing table and passes the packet on to the
- appropriate neighboring NET/ROM. This process continues until the
- packet arrives at the destination computer running the KA9Q
- software, where it is unwrapped and passed back up to the IP code.
-
- At no point is the NET/ROM user interface or transport layer
- involved. We do not have to issue CONNECT commands, or make use
- of NET/ROM virtual circuits in any way. The NET/ROM nodes accept
- and pass our datagrams because they do not examine the contents of
- network datagrams not specifically addressed to them. We are able
- to take advantage of the link-layer acknowledgements and automatic
- routing of the NET/ROM system without the overhead of its higher
- level services.
-
-
- SOFTWARE ARCHITECTURE
-
- Let's examine how this is done in more detail. Our once-simple
- protocol stack has grown a bit by now. Let's have a look at it:
-
- (1) The physical layer is basically unchanged (although we
- did added another physical layer service, described
- later).
-
- (2) At the data link layer, we still have AX.25. However,
- the link layer now multiplexes three different kinds of
- packets. "No level 3" packets still go up the AX.25
- session code, and IP packets will go directly up to layer
- 3B, but now we also direct packets with a NET/ROM PID to
- the NET/ROM 3A routing layer.
-
- (3A) Incoming packets with a NET/ROM PID go to the network
- layer. This is a full implementation of NET/ROM layer
- 3. It has its own routing table, similar to that found
- in any NET/ROM node. It sends NODES broadcasts, which
- update the routing tables of neighboring NET/ROM nodes,
- and updates its own routing table on receipt of NODES
- broadcasts from those neighbors.
-
- The NET/ROM layer examines incoming NET/ROM datagrams to
- see if our station is their destination. If the
- datagrams are not for us, the routing table is examined
- to see if we can forward them on to a neighboring node
- for handling. If we can, they are sent back down to the
- link layer to continue their journey. In other words,
- a station running the KA9Q package with NET/ROM support
- can act as a NET/ROM relay station. As far as
- neighboring NET/ROM nodes are concerned, they are simply
- passing traffic on through another NET/ROM.
-
- If a NET/ROM datagram is for us, the network layer makes
- sure that it isn't a NET/ROM transport packet. If it is,
- it is dropped. If it isn't, it is sent up to layer 3B.
-
- (3B) The internetwork layer contains the IP router and
- protocol code. (Remember that IP has its own routing
- table and algorithms!). It receives AX.25 traffic with
- a protocol ID of IP, as well as IP datagrams arriving in
- NET/ROM network datagrams.
-
-
- The remaining layers are the same as before, so we won't repeat
- them.
-
-
- IP ROUTING VIA NET/ROM
-
- The IP routing table is similar, although not identical, to the one
- used for NET/ROM. It contains two kinds of entries, which we will
- call local routes and gateway routes.
-
- A local route consists of an IP address and an interface name. The
- KA9Q software supports multiple interfaces, similar to the way that
- NET/ROM supports both a TNC's modem and its serial port. One
- component of a route, both in NET/ROM and the KA9Q package, is the
- interface through which an outgoing datagram should pass. (The
- main difference is that, while NET/ROM only supports AX.25 and two
- interfaces, the KA9Q code supports many different link layers and
- an almost unlimited number of interfaces.) When a local route is
- found in the IP routing table, this means that the station with the
- given IP address is on the local subnet, which for packet radio
- purposes means that it is within radio communications range. The
- datagram is forwarded to the link layer with an indication that
- direct delivery should be attempted.
-
- A gateway route consists of an IP address, an interface name, and
- a gateway IP address. When we encounter a gateway route, it means
- that the station in question is not on our local subnet (i.e. not
- within radio range), and must be reached via a relay station, or
- gateway. (You will recall the idea of gateways from our earlier
- introduction of internetworking.) The IP datagram is forwarded to
- the link layer with an indication that the message should be sent,
- not directly to its destination, but to the gateway station, which
- will make an attempt to reach the recipient, perhaps via another
- gateway.
-
- When we added the NET/ROM support, we were concerned that it be
- fully transparent to the IP layer, both out of concern over proper
- design, and out of a desire to avoid any unnecessary rewrite of the
- existing code. One key assumption in the KA9Q IP routing software
- is that of routing adjacency: the IP layer makes the assumption
- that it can reach, via the interface given, some IP address
- mentioned in the route entry (either the recipient or the gateway).
- However, we are using NET/ROM precisely because there is no IP
- station within radio range who can handle our traffic. In order
- to maintain the adjacency assumption at the IP layer, we had to
- simulate the presence of an adjacent IP station in the NET/ROM
- code.
-
- An IP route which uses the NET/ROM support looks just like any
- other routing table entry: it consists of a destination, an
- interface, and an optional gateway. The only difference is that
- the interface is called "Netrom", and it's not a link layer
- interface at all, although it appears that way to the IP routing
- code. When the IP layer sends a datagram down to the NET/ROM
- "interface" for handling, it is actually calling a small stub
- routine above the NET/ROM routing code. This stub looks up the IP
- address in a table which associates IP addresses, used at the IP
- layer and above, with AX.25 callsigns, used by NET/ROM's network
- layer. If it finds an entry for the given IP address, it creates
- a NET/ROM network layer datagram header with a destination address
- set to the AX.25 callsign found in the association table, prepends
- this header to the IP datagram, and hands it off to the NET/ROM
- routing code.
-
- The NET/ROM routing software now handles the datagram exactly as
- it would any NET/ROM traffic coming in from outside: it checks to
- see if there is an entry for the destination AX.25 callsign in its
- routing table. If there is, it opens a link layer (AX.25)
- connection to the neighboring NET/ROM node advertising the best
- quality route, and forwards the message into the NET/ROM network,
- to be delivered (ultimately) to the station whose AX.25 address is
- that in the destination field of the NET/ROM network header, and
- whose IP address was that of the destination or gateway in the IP
- routing table entry.
-
- This approach was extremely successful. Not one line of code
- needed to be changed in the IP routing code of the original KA9Q
- package.
-
-
- FEATURES TO SUPPORT NET/ROM PACKET SWITCHING
-
- As implied above, the KA9Q package allows an almost unlimited
- number of interfaces to be used for receiving and forwarding
- packets. At the IP layer, datagrams are routed from interface to
- interface using information from the IP routing table. We added
- a similar functionality to the NET/ROM routing layer, allowing it
- to receive and send NET/ROM traffic on any AX.25 interface it is
- configured to use. This feature allows the KA9Q software with
- NET/ROM support to be used as a multi-port full duplex NET/ROM
- packet switch, using standard TNCs or modem boards available for
- the IBM PC. This is vastly superior to the practice of wiring
- together several NET/ROM TNCs with a diode bridge. There is no
- possibility of collisions, since each TNC has its own serial port
- or bus address, so the interfaces can all run at full duplex, full
- speed through the switch. In addition, this arrangement can be
- used with the high-speed interfaces and modems now becoming
- available, far exceeding the capabilities of a standard TNC.
-
- In several places in the United States, excess bandwidth on
- commercial data links is being used to carry NET/ROM traffic.
- These "wormhole" links work fairly well when there is only one
- NET/ROM at each end, but their performance degrades quickly if more
- are added. Beyond the difficulties inherent in the diode bridging
- scheme shown in the NET/ROM manual, there is an additional problem
- not amenable to a simple hardware solution. Most of the data links
- being used are running through time-domain or statistical
- multiplexing hardware, or through public data networks. While all
- of these provide some kind of carrier detect indication, in almost
- every case that indication comes far too late to avoid collisions.
- Carrier sense simply doesn't work, since the carrier indication
- isn't there when it is needed, and arrives just in time to cause
- unnecessary delays afterwards. Performance of such an arrangement
- is likely to degrade to below that of schemes using no carrier
- sense at all.
-
- NET/ROM nodes use a simple serial framing method to communicate
- with each other over their serial ports. We have added support for
- this framing method alongside the "KISS" protocol which the KA9Q
- package normally uses to communicate with TNCs. It is possible to
- plug a number of NET/ROM TNCs directly into the serial ports of an
- IBM PC, and use the PC as a switch. Some of those NET/ROM TNCs can
- be at the ends of "wormhole" links. These links can run at full
- duplex with no collisions, thus getting maximum performance and
- almost zero retries (assuming reliable data lines and serial
- interface hardware). The NET/ROM serial interface code is
- instrumented to provide statistics on traffic volume and error
- rates on its serial ports.
-
-
- LESSONS LEARNED
-
- The creation of the NET/ROM code has provided some interesting
- lessons on how we should and should not go about building amateur
- packet networks. One of these lessons became apparent before we
- even thought of writing the NET/ROM code.
-
- We would probably not even have added the NET/ROM layer three
- support to the KA9Q package had there been an easier way to
- accomplish what we wanted, which was to use NET/ROM networks to
- handle our IP traffic until we could build our own IP network.
- Unfortunately, the NET/ROM software has a rather unfriendly link
- layer multiplexor. It sends "no layer 3" packets to the
- application layer, and "NET/ROM" packets to the NET/ROM network
- layer, but anything else it consigns to oblivion. We could have
- built fairly simple code to establish connections and send our IP
- traffic over NET/ROM transport circuits, but any packet with a
- protocol ID of "IP" was simply dropped by the NET/ROM software.
- So, lesson number one:
-
- If you're going to build a networking product, write the
- multiplexing code to be inclusive, rather than exclusive.
- In other words, if you get something with an unfamiliar
- protocol ID, wrap it up and send it on, remembering to
- regenerate the PID properly on the other end.
-
-
- Another problem we encountered was the lack of a protocol ID field
- in the NET/ROM network layer header. Both AX.25 packet headers and
- IP datagram headers contain a field which indicates what sort of
- higher level protocol stuff is packaged inside. This is not unlike
- the cans on your grocer's shelf: without a label, you have a hard
- time telling the beets from the beans. The AX.25 protocol ID field
- makes link layer multiplexing possible, and the protocol ID of an
- IP datagram header allows many higher level protocols to use its
- internetworking services. Because the NET/ROM network header does
- not contain a protocol ID field, there is no straightforward way
- to put anything but a NET/ROM transport packet inside. This is
- unwise. The authors of NET/ROM may well have been unaware that
- anyone would ever attempt a project such as ours, but by leaving
- this feature out of their network layer, they made it difficult,
- if not impossible, to ever introduce other transport protocols into
- their product line. So, lesson number two:
-
- Include a protocol ID field in your link and network
- layer headers, even if you can't think of a use for it
- yet. Make it big enough to be useful, and offer to be
- the repository of assigned PIDs, so that a standard
- develops.
-
-
- In experimenting with the auto-routing code in our NET/ROM network
- implementation, we discovered something that is a common complaint
- among NET/ROM operators. This can be summed up by the dictum,
- "Just because you can hear them, doesn't mean they can hear you."
- It is not unusual to have neighboring nodes that are "alligators"
- (big mouth, tiny ears) or for your node to be a "rabbit" (big ears,
- tiny mouth). Also, band openings on two meters happen quite often,
- and usually last just long enough for you to receive a routing
- broadcast from a station from whom you will never hear again - at
- least until the next band opening. Either situation leaves your
- routing table cluttered with impossible routes, which can lead to
- repeated link-layer retries and transport layer failures. Routes
- based on band openings age out fairly quickly. Ones based on deaf
- neighbors come back, again and again.
-
- After a bit of experience with this phenomenon, we added the
- "nodefilter" feature to our implementation. The user may specify
- a list of nodes which are the only ones from which route broadcasts
- will be accepted, or alternately, may specify a "reject list" of
- nodes whose broadcasts will be routinely ignored. The lesson:
-
- If your routing method involves broadcast in an
- asymmetrical or inconsistent communications environment,
- provide a way to restrict the routes accepted to those
- offered by reliable nodes.
-
-
- The implementation described was actually the second one we did.
- The first one grabbed AX.25 interfaces away from the IP part of the
- KA9Q code, and could only be used for NET/ROM and regular AX.25
- traffic. This appeared to be a horrible idea from the moment the
- first version was completed, and prompted an immediate rewrite,
- producing a program that could act as a packet switch for IP as
- well as NET/ROM. The lesson here (besides "look before you leap")
- is:
-
- If you're going to build a packet switch for amateur use,
- support link layer multiplexing, and try to make it
- multi-purpose. This is a hobby, and the radios, tower
- space, and dollars are in short supply. The more stuff
- you can do with a single one of each, the happier you
- will be in the long run.
-
-
- EXPERIENCE
-
- At this writing, experience with the software is necessarily
- limited. It is only now being made an official part of the
- official KA9Q release (thanks, Phil!), so it has not been widely
- available as for as long as we would have wished. Still, it has
- found its way into enough hands for us to have some preliminary
- measurements and impressions.
-
- The Madison, Wisconsin NET/ROM node (MAD) is connected to a node
- (MQTA) in Marquette, in the Upper Peninsula of Michigan, via a
- multiplexed commercial data line. We have conducted tests between
- W9NK, in Madison, and KV9P, in Alpha, Michigan. Both stations sent
- periodic routing broadcasts to announce their presence to their
- local nodes. The path chosen by NET/ROM was:
-
- W9NK <-> MAD <-> MQT <-> MQTA <-> IRN <-> KV9P
-
- where MQTA and IRN were NET/ROM or TheNet nodes in Marquette and
- Iron Mountain, Michigan, respectively. All nodes except the two
- using the data line were on two meters, with a speed of 1200 baud.
-
- Performance was surprisingly good, with TCP round trip times
- settling in around 12 to 20 seconds, with a standard deviation of
- about nine seconds. In spite of the number of hops, performance
- was good enough to hold fairly coherent keyboard-to-keyboard
- conversations.
-
- We did note at least one case where duplicate copies of datagrams
- were delivered by the NET/ROM network. Since TCP discards
- duplicates, this causes no problem in normal operations, but in the
- case we noticed it resulted in two replies to the same ICMP Echo
- Request message (produced by the ping command).
-
- Feedback from other users, particularly N0AN in Iowa, illuminates
- a serious problem with the management of existing NET/ROM networks:
- the routing tables of these networks are so inaccurate that many
- experienced users don't use the network layer facilities at all!
- BBS mail forwarding scripts are set up to establish connections to
- the local NET/ROM node, request a transport connection to a
- selected neighbor, then from that neighbor to another, and so forth
- to the NET/ROM node in their destination area. They have
- discovered that, without human intervention, many NET/ROM networks'
- routing facilities break down and become unusable.
-
- This problem has some impact on normal operations, in the sense
- that these multiple transport sessions do not in any sense add up
- to end-to-end protocol support. There is in fact no transport
- facility (as we understand the term) in use in these cases, since
- no acknowledgements travel from one end of the communications path
- to another. There may as well be no transport layer in NET/ROM
- under these circumstances; the overhead would at least be
- substantially lower, with no additional loss of reliability.
-
- Unfortunately, networks in such a pathological state are unusable
- by our TCP/IP software. Since we make no use of the NET/ROM
- transport layer, we must rely entirely on the accuracy of the
- network layer routing tables to support the forwarding of our
- packets to their destinations. If these tables are not correct,
- our traffic will not get through.
-
- The good news is that, in some areas where the NET/ROM operators
- are also working with TCP/IP, this problem is forcing them to pay
- attention to the quality of their routing tables. As we have noted
- above, NET/ROM is somewhat short on facilities to do this, but a
- few things can be and are being done with the tools available. One
- side-effect of the TCP/IP NET/ROM support may be an improvement in
- quality of service to all NET/ROM users!
-
-
- FUTURE DEVELOPMENT
-
- We hope, at some point, to produce a version of this support that
- can be put into ROM and used in a dedicated packet switch for
- hostile environments. Such a switch would allow us to begin
- building IP networks, while also offering superior performance to
- the NET/ROM community. It is our hope that the two user
- communities can work together, sharing resources to build a better
- network than either could alone.
-
-
- ACKNOWLEDGEMENTS
-
- Sincere thanks are due to Phil Karn, KA9Q, who would have been rich
- (or at least, richer) by now if he hadn't been dedicated to
- improving the state of the art for all radio amateurs. Also,
- thanks to everyone on the tcp-group mailing list, who contributed
- helpful comments during the design and development of the NET/ROM
- code. Special thanks also to Howard Leadmon, WB3FFV, and John
- Limpert, N3DMC, who got it to compile under Unix.
-
- Individuals who helped test or provided feedback on experience with
- the software were: Duane Brummel, NX9K; Hasan Schiers, N0AN; and
- Dave Reinhart, KV9P.
-
- Phil Karn, KA9Q, reviewed the first draft of this paper, providing
- many helpful comments and suggestions.
-
-
-