New ProductsTable 1Data Communication LayersISO LayerApplicationPresentationSessionTransportNetworkData linkPhysical linkDNA LayerUser/network managementNetwork applicationSession controlEnd-to-end communicationRoutingData linkPhysical linkDECnet-DOS QomponentsIIProgramming libraryJob spawner INetwork control program (NCP)Network test utility (NTU)Network file transfer (NFT)Virtual terminal service (SETHOST)Virtual disk/printer service (NDU)Network mail (MAIL)File access server (FAL)SESSIONNSPROUTINGIAsynchronous :DATA LINKEthernet DATA LINKAsynchronous controllersEthernet controllersIIData Link ServicesAsynchronous Data Link LayerThe <strong>Digital</strong> Network Architecture standard speci- _fies a protocol providing a reliable data communicationspath between two processors oversynchronous and asynchronous serial communicationlines. This protocol is the <strong>Digital</strong> DataCommunications Message Protocol (DDCMP) .The asynchronous data link layer providesDDCMP protocol processing and device driversupport for the asynchronous controllers contained.inthe PCs.We found that no existing software could beborrowed for the DDCMP protocol modules.However, existing DDCMP software programsfrom other products were used as models to constructour own modules. We also had to designand code all device drivers for the various asynchronouscontrollers. At first we were not sureexactly how the asynchronous controller chipand the interrupt controller chip workedtogether. Reading the specifications from thechip manufacturers along with the documentationfrom the makers of the controller boardsresolved any questions we had. The code wethen developed worked properly at lowerspeeds; at 9600 baud, however, we found thatcharacters were being lost during reception.After calculating the bytes per second at9600 baud and the instrutions per second onthe lower-speed PCs, we raiized that very fewinstructions could be exetuted between eachreceived character. In this ase the advantages ofI .coding in a higher-level !language were outweighedby other considerations. After carefullyrecoding the interrupt handler for received charactersin assembler language, we reduced but didnot eliminate the character loss. Using debugtracing of the interrupt stack, we discovered thatthe PC BIOS code handling the clock interruptscould leave the interrupt; system disabled forlong periods. Changing this clock interrupt codesolved the character-loss problem.IEthernet Data Link LayerIThe Ethernet data link layer provides buffer managementservices, transmfts and receives messages,and dispatches the received messagesbased upon their protocol types. The goal forDECnet-DOS included support for a number ofEthernet controllers. Unfortunately, the code forthe device drivers is often the hardest to designand debug.Our search for existing code led us to two separateengineering groups lwithin <strong>Digital</strong>. Bothgroups had already written device drivers for PCbasedEthernet controllers.! We decided to use a<strong>Digital</strong> Techntcal]ournalNo. 3 <strong>September</strong> 1986Ill
The DECnet-DOS Systemdata link layer for buffer management andreceived-message dispatching that was commonto these drivers. We also borrowed several otherdevice drivers, all having consistent callingsequences. As a result, our team had to write thecode for only one device driver; the code for theother device drivers and the data link layer wasprovided to us complete and partially tested.Network Layer Services (Routing)The modules that perform routing functionshave well defined inputs and outputs that arealmost entirely independent of the operating systemtype. Messages arriving from the NSP layermust be passed to lower layers, depending uponinformation stored in the routing database. Messagesalso arrive from the data link layer and mustbe passed to higher layers, depending uponinformation stored in the routing database.Since the code is relatively independent of thesystem, we were able to use the routing modulesfrom the DECnet-ULTRIX system with very fewchanges.Transport Layer Services (NSP)The NSP layer is the one in which logical linksare created, maintained, and destroyed. Linkmaintenance includes all the timing and retransmissionof messages necessary to maintain logicallink integrity. NSP also segments large userbuffers into smaller network buffers and ensuresthat they are reassembled correctly.We studied the feasibility of porting the NSPmodules from the DECnet-ULTRIX system to theDECnet-DOS system. However, the differences inmemory management and process schedulingmade the conversion appear too costly. Therefore,we re'Yrote the modules in the NSP layer ofthe DECnet-ULTRIX software, but retained thesame names and functions.This code was the most difficult to develop.Manipulating dynamic memory, buffers, and timingfor multiple internal tasks is very specific tothe operating system. Code from other implementationsto perform these functions was notvery helpful.In addition, our initial device drivers for asynchronousand Ethernet connections often los'tcharacters or messages. Since NSP maintains theintegrity of each logical link, the retransmissionalgorithms had to be complete and correct veryearly for both low- and high-speed failures.These difficult problems, like many others,were solved by using the algorithms from otherimplementations.Session Layer ServicesThe session layer, where user requests arechecked and dispatched for processing, ishighly dependent on the type of operating system.The single-task environment of the MS-DOSsystem provides no process context identificationor integrity assurance for the user. As aresult, we could not use the traditional design fora DECnet session layer, in which logical linkownership is known by a process code assignedby the system.To design a new session layer, we chose tomake the logical links into system-wide entitiesand retain all information about those links inthe background network process. In that way theidentifiers for logical links would be uniqueacross the entire system. This solution ensuresthe integrity of the logical link database even if auser program creates a logical link and thenexits. One side effect of this design is that anapplication can create a logical link, exit, andthen be run again later to access the existing logicallink. This effect allows the SETIIOST applicationto interrupt a virtual terminal session,return the user to the MS-DOS system to performlocal tasks, and then resume the terminal sessionlater in the same state in which the session wasinterrupted.The actual session interface that we providedwas modeled after the UNIX 4.2BSD networksocket interface as implemented in the DECnetULTRIX system. Since the MS-DOS code is similarto the UNIX code, we felt the interface was themost appropriate model to use. Unfortunately,we could not use any of the UNIX code in thisarea, so we had to write our own implementation.By providing the same interface, however,we could easily share network application programswith the DECnet-ULTRIX project.Presentation Layer ServicesNetwork File TransferThe network file transfer utility (NFf) providesfile access services between the PC and remotenodes. NFf supports a number of activities.• Files can be copied in both directions.• Remote files can be displayed on the PC'sconsole.112Dtgital TecbntcaljournalNo. 3 <strong>September</strong> 1986