A Made IT project
To start off, ARCnet is not a standardized network. All information provided here is gathered through the years by different people and by just making mistakes, so if you have other experiences don't be surprised, but share them with us. This way we can all learn from it.
ARCnet (Attached Resource Computer NETwork) was originally developed by Datapoint Corporation in 1968, way before OSI and the like. The original purpose was a harddisk interface, later it became popular as a local area network.
According to the Datapoints ARCNET Designer's Handbook 61610 © 1988, ARCnet is: a high-performance, bus-structured, token-passing, base-band network linking two or more computers through high-speed connections. The network can support up to 255 nodes, transmitting data at a rate of 2.5 Mbps up to 4 miles in distance (when active hubs are used between nodes).
ARCnet uses a Token Passing bus structure much like IEEE802.4. It's most common speed is still 2.5 Mbps, but we know of versions runnig 20 Mbps (ARCnet plus by SMC, NCR and Datapoint) and the rumour is there is even a 100 Mbps (by Thomas Conrad) version. So it seems like it is still in progress. The reason for this is probably its easyness (ARCnet is very tolerable) in cabling and the predictable delivery of packets through the use of a token architecture.
The ARCnet devices
ARCnet knows 5 different types of devices:
The ARCnet cabling
There are three types of cabling that are mainly used with ARCnet, although every cable type can be used. The first is RG62 coax (93 ohm), the second is CAT3 or better UTP (only one pair used), and the last one is fiber. The coax version uses BNC connectors, the UTP version uses RJ11 or RJ45 connectors. The fiber connector can be anything, just what the vendor likes.
The logical structure of ARCnet is always a bus. The token runs from station to station until it reaches the last one. A coaxial cable should therefore always be terminated with a 93 ohm terminator. But physically ARCnet can be a bus or a star topology or even a mixture.
All distances are rough estametes. The actual calculation should be done like this: an active device (host or hub) provides 24 Volt output, and needs atleast 5 Volt on the receiving pins. So the network may consume a maximum of 19 Volts. Dependent on the used components, a certain cable run can be used. The only other limiting factor is the propagation delay of 31 µs or less between two nodes. It is however possible to work with 'extended timing' that allows for much larger distances.
A host can be a server or a PC.
|mtr/feet||Active HUB||Passive HUB||Host|
One document described the maximum length attainable for a passive hub that the sum of the two longest cable runs should not exceed 100 mtr or 330 ft. Using the above table that is never possible. But we don't know which one is right. For solutions e-mail is!
Coaxial bus The coaxial bus topology uses BNC T-connectors. Bus length is maximum 300 mtr or 1000 ft. A bus segment supports a maximum of 8 stations or repeaters (could also be active hubs). The unused end of the coaxial bus needs a 93 ohm BNC terminator.
UTP bus UTP uses a daisy-chained star topology, with a maximum segment length of 120 mtr or 400 ft. A segment can support up to 10 hosts (PC, server or repeater). Every UTP-card has two connectors and are sometimes auto-terminating and sometimes not. If they are not a 120 ohm terminator should be used to terminate the bus. The minimum cable length between two hosts is 2.1 mtr or 6 ft.
The only fiber products we have seen where from SMC. the maximum point-to-point link lengths for these products where:
Maximum overall distance was 6.4 km or 4 miles due to the timing restraints. With 'extended timing' it could be more.
ARCnet used a sinusoidal dipulse of 24 Vtt to transmit data over the network. Is during a symbol interval a dipulse present then that counts as a '1' is the pulse not present then a '0' is received. With this ARCnet builds a number of signal elements:
|Element||Function||Signal (amount of symbols)|
|SD||Starting Delimiter||111111 (6)|
|ISU||Information Symbol Unit||110xxxxxxxx (11)|
Those xes are filled with a value to represent some information:
|ED||Ending Delimiter||000000000 (9)|
|RSU||Reconfiguration Symbol Unit||111111110 (9)|
ARCnet Token passing and network (re)configuration
Configuration and reconfiguration of the network happens completely automatic. You only have to asign an address to the NIC (RIM) and the protocol will make sure it gets into the network.
When a station is powered on or it hasn't received an ITT for 840 ms it sends out a RECON burst, which is a 765 times repeated RSU. During this burst no data will be received correctly. The station holding the token sees network activity and asumes trouble so it drops the token. After the burst no token is present so a new token needs to be generated through sending out an ITT.
The ARCnet protocol needs a positive acknowledgement on every data transmission. The actual transmission is pretty simple. As soon as a station receives the token and has some data it wants to transmit it sends out an FBE to the destination station (did). As soon as it gets back an ACK it starts sending a packet (PAC). It waits for a maximum of 74 µs to receive an ACK. When the ACK is received the token is released and send to the next station (nid).
ARCnet knows three types of framing: short frames, long frames and the exception frame.
The short frame is always 256 octets long and can hold 0 to 249 octets of client data. The frame looks like this:
|1 octet||1 octet||1 octet||3 octets||1 octet||1 octet||2 octets||256 -offset -4 octets|
|Source address||Destination address||Offset||Unused (offset)||protocol ID||split flag||sequence number||Client data|
The long frames are always 512 octets and can hold 253 to 504 octets of user data. They look like this:
|1 octet||1 octet||1 octet||1 octet||4 octets||1 octet||1 octet||2 octets||512 -offset -4 octets|
|Source address||Destination address||0||offset||Unused (offset)||protocol ID||split flag||sequence number||Client data|
Can hold 250 to 252 octets of client data and looks like this:
|1 octet||1 octet||1 octet||1 octet||4 octets||1 octet||1 octet||1 octet||1 octet||1 octet||1 octet||2 octets||512 -offset -8 octets|
|Source address||Destination address||0||offset||Unused (offset)||protocol ID||Flag: FF hex||Padding: 0xFF||Padding: 0xFF||(protocol ID)||split flag||sequence number||Client data|