Trailing-Edge
-
PDP-10 Archives
-
tops20_version7_0_tools_tape_clock_tape
-
tools/rmtcon/rmtcnd.txt
There are 4 other files named rmtcnd.txt in the archive. Click here to see a list.
Date: 27 May 88 12:37:09
Charge Number:V20-05113
Revision "0.2" of
Diagnostic Engineering Functional Specification for
NI Services Program
RMTCON
Revisions:
Rev 0.1 26-Sep-83 By John R. Kirchoff
Rev 0.2 17-Oct-84 By Gary Papazian
Overview of the Diagnostic Product Page ii
Table of Contents 27 May 88
Table of Contents
Page
----
1.0 OVERVIEW OF DIAGNOSTIC PRODUCT . . . . . . . . . . . 1
1.1 Scope of this document . . . . . . . . . . . . . . 1
1.2 General program description . . . . . . . . . . . 1
1.3 Users and Uses . . . . . . . . . . . . . . . . . . 1
1.4 Pre-requisite software . . . . . . . . . . . . . . 1
2.0 PRODUCT GOALS/NON-GOALS . . . . . . . . . . . . . . 2
2.1 Performance goals . . . . . . . . . . . . . . . . 2
2.1.1 Program size . . . . . . . . . . . . . . . . . . 2
2.1.2 Program run time . . . . . . . . . . . . . . . . 2
2.1.3 Exec mode capability . . . . . . . . . . . . . . 2
2.1.4 User mode capability . . . . . . . . . . . . . . 2
2.1.5 Fault Detection . . . . . . . . . . . . . . . . 2
2.1.6 Fault isolation . . . . . . . . . . . . . . . . 2
2.1.7 General user interface philosophy . . . . . . . 3
2.1.8 Program documentation . . . . . . . . . . . . . 3
2.2 Compatibility goals . . . . . . . . . . . . . . . 3
2.2.1 CPU family . . . . . . . . . . . . . . . . . . . 3
2.2.2 Standard diagnostic support software . . . . . . 3
2.2.3 Operating systems (TOPS-10) . . . . . . . . . . 3
2.2.4 Operating systems (TOPS-20) . . . . . . . . . . 4
2.2.5 Spear . . . . . . . . . . . . . . . . . . . . . 4
2.3 Failsoft goals . . . . . . . . . . . . . . . . . . 4
2.3.1 CPU/Memory failures . . . . . . . . . . . . . . 4
2.3.2 Power fail/restart . . . . . . . . . . . . . . . 4
2.4 Restrictions . . . . . . . . . . . . . . . . . . . 4
2.4.1 User mode privileges . . . . . . . . . . . . . . 4
2.4.2 User mode priority interrupts . . . . . . . . . 4
2.5 Non-Goals . . . . . . . . . . . . . . . . . . . . 5
3.0 REQUIREMENTS . . . . . . . . . . . . . . . . . . . . 6
3.1 Run time requirements . . . . . . . . . . . . . . 6
3.2 Development environment requirements . . . . . . . 6
3.3 Evaluation system . . . . . . . . . . . . . . . . 6
4.0 PROGRAM INTERFACES . . . . . . . . . . . . . . . . . 7
4.1 Diagnostic software interfaces . . . . . . . . . . 7
4.2 Operating system interfaces (TOPS-10) . . . . . . 7
4.3 Operating system interfaces (TOPS-20) . . . . . . 7
5.0 COMMANDS . . . . . . . . . . . . . . . . . . . . . . 8
6.0 FUNCTIONAL DESCRIPTION . . . . . . . . . . . . . . 10
6.1 Relationship To Other Components . . . . . . . . 10
6.2 NI Services Program . . . . . . . . . . . . . . 11
6.3 PLUTO Console Carrier Server . . . . . . . . . . 12
Overview of the Diagnostic Product Page iii
Table of Contents 27 May 88
6.4 Console Carrier Protocol . . . . . . . . . . . . 12
6.4.1 Message Flow Within The CC Protocol . . . . . 13
6.4.2 Characteristics And Uses Of The Protocol . . . 14
6.5 Remote Console Reservation . . . . . . . . . . . 16
6.5.1 Reservation States . . . . . . . . . . . . . . 16
6.5.2 Reservation Details . . . . . . . . . . . . . 17
6.5.3 Console Carrier exists - but console in use . 18
6.5.4 Console Carrier exists - Console not reserved 18
6.5.5 Console Carrier exists - we own the console . 19
6.5.6 Console Carrier code does not exist . . . . . 20
6.6 Remote Console Operation . . . . . . . . . . . . 23
7.0 ERROR REPORTING PHILOSOPHY . . . . . . . . . . . . 24
7.1 Reporting to SPEAR . . . . . . . . . . . . . . . 24
8.0 OPEN ISSUES . . . . . . . . . . . . . . . . . . . 25
9.0 SCHEDULE . . . . . . . . . . . . . . . . . . . . . 25
10.0 BIBLIOGRAPHY . . . . . . . . . . . . . . . . . . . 26
11.0 GLOSSARY . . . . . . . . . . . . . . . . . . . . . 27
12.0 REVISION HISTORY . . . . . . . . . . . . . . . . . 27
13.0 ALGORITHMS . . . . . . . . . . . . . . . . . . . . 28
13.1 NI Services Program algorithm . . . . . . . . . 28
13.2 Normal Command Processing algorithm . . . . . . 28
13.3 Reserve Remote Console algorithm . . . . . . . . 29
13.4 Release Remote Console algorithm . . . . . . . . 29
13.5 Load Server Code algorithm . . . . . . . . . . . 30
13.6 Multi-block Load algorithm . . . . . . . . . . . 31
Overview of the Diagnostic Product Page 1
OVERVIEW OF DIAGNOSTIC PRODUCT 27 May 88
1.0 OVERVIEW OF DIAGNOSTIC PRODUCT
1.1 Scope of this document
This document describes the functional definition, design details,
testing requirements and schedule for the "NI Services Program
[DFNIC] of the TOPS-20 implementation of the TOPS-20/PLUTO. This
program implements the console carrier requestor portion (CCR) of
the NI based system. This document will be updated whenever changes
are necessitated in these areas.
1.2 General program description
The NI Services Program is a user mode only Program that will run
under the TOPS-20 Operating System (Release 6.1 or newer). In
simple terms the NI Services Program is basically a terminal
interface between TOPS-20(host) and a remote program which resides
in a PLUTO(node) on the NI. This Program will have the ability to
cause a Diagnostic or a Utility program in the remote node to be
loaded and executed. It will also be able to communicate with the
remote program while it is running and may take status or terminate
its operation.
Command and Response Packets are passed between the NI Services
Program and the PLUTO Console Carrier Server Task using the Console
Carrier Protocol and the NI Remote Console Interface provided by the
LLMOP% JSYS.
1.3 Users and Uses
Field Service will use this Program to run remote diagnostic and
utility programs on NI nodes.
1.4 Pre-requisite software
o TOPS-20 Operating System with the LLMOP% JSYS implemented.
Overview of the Diagnostic Product Page 2
PRODUCT GOALS/NON-GOALS 27 May 88
2.0 PRODUCT GOALS/NON-GOALS
2.1 Performance goals
To be able to execute, with a high degree of predictability, the
commands received by the user on a terminal and relay messages
effectively from the remote program.
2.1.1 Program size
The NI Services Program should not be more than 10k, including
buffer storage.
2.1.2 Program run time
Run time in the traditional sense does not apply. This program is
used as a terminal interface between TOPS-20 and a remote NI node.
2.1.3 Exec mode capability
The NI Services Program will not run in Exec Mode.
2.1.4 User mode capability
The user will need Wheel, Operator or Maintenance priviledges to run
this Program.
2.1.5 Fault Detection
The NI Services Program will not have any of its own Fault
Detection. Any error detected by the remote program will be
displayed for the User to see. A JSYS failure will be displayed on
the users terminal like all other TOPS-20 programs.
2.1.6 Fault isolation
The NI Services Program has no built in isolation capability. Any
Functional Fault Detected will be passed back to the user by the
remote program for analysis and reporting.
Overview of the Diagnostic Product Page 3
PRODUCT GOALS/NON-GOALS 27 May 88
2.1.7 General user interface philosophy
The NI Services Program will use TOPS-20 style Parsing and
Recognition.
2.1.8 Program documentation
Excerpts from this Functional Specification will be incorporated in
the final Program documentation. The Program Documentation will be
in conformance to the Diagnostic Q.A. Manual.
2.2 Compatibility goals
The NI Services Program will support the manditory functionality as
defined in the "A PLUTO IMPLEMTATION OF A CONSOLE CARRIER SERVER",
3-Mar-82 by Paul Weiss.
2.2.1 CPU family
The NI Services Program is a user Program and is Monitor dependent
rather than Hardware dependent. It will run on any KL10 Model B 36
bit CPU provided the Monitor is a TOPS-20 Monitor that supports the
NI.
2.2.2 Standard diagnostic support software
The NI Services Program will not use any of the Standard Diagnostic
Support Software. It will be a self contained program with an
".EXE" extension.
2.2.3 Operating systems (TOPS-10)
There is no planned TOPS-10 support for the NI Services Program. If
in the future it is decided to have the NI Services Program run
under TOPS-10, it will be done as a separate project. The TOPS-10
effort will be minimized by organizing the Software in a modular
fashion.
Overview of the Diagnostic Product Page 4
PRODUCT GOALS/NON-GOALS 27 May 88
2.2.4 Operating systems (TOPS-20)
The NI Services Program will run under TOPS-20 release 6.1 and
newer.
2.2.5 Spear
The NI Services Program will be upward compatible with versions of
SPEAR after TOPS-20 release 6.1 and newer.
2.3 Failsoft goals
2.3.1 CPU/Memory failures
The NI Services Program will be aborted by the Operating System.
2.3.2 Power fail/restart
The Ni Services Program will have to be restarted by the user when
the System is reloaded.
2.4 Restrictions
The NI Services Program will only work under a TOPS-20 Operating
System and communication will only be with a PLUTO node located on
the NI.
2.4.1 User mode privileges
The LLMOP% JSYS requires Wheel, Operator or Maintenence priviledges.
This means that the directory the user is logged on to must have the
above priviledges.
2.4.2 User mode priority interrupts
The NI Services Program will not use any Hardware Interrupts. The
Software Interrupt System will be used.
Overview of the Diagnostic Product Page 5
PRODUCT GOALS/NON-GOALS 27 May 88
2.5 Non-Goals
o The Ni Services Program will not do error retries.
o The NI Services Program will provide no exec mode support.
o The NI Services Program will provide no TOPS-10 support as part
of this Project.
Overview of the Diagnostic Product Page 6
REQUIREMENTS 27 May 88
3.0 REQUIREMENTS
3.1 Run time requirements
o A TOPS-20 Timesharing Monitor needs to be running.
o Adequate user priviledges.
o An NI (ETHERNET) Network
o A PLUTO, that has Console Carrier Server support.
3.2 Development environment requirements
The hardware requirements needed to test the NI Services Program
are:
o A KL10 system that has a KLNI and a PLUTO is required.
o One Pluto system with a UNA.
o Two host systems residing on the NI.
The NI Services Program must be tested with the PLUTO console server
in each of the three possible states described below under
Reservation States.
The NI Services Program must be tested with the PLUTO at micro-odt
level and with the PLUTO based diagnostics package to test the
normal processing of commands.
3.3 Evaluation system
Engineering, Manufacturing and CSSE are expected to make their own
arrangements as to the availability of hardware for their Diagnostic
evaluation.
Overview of the Diagnostic Product Page 7
PROGRAM INTERFACES 27 May 88
4.0 PROGRAM INTERFACES
4.1 Diagnostic software interfaces
Not Applicable
4.2 Operating system interfaces (TOPS-10)
Not Supported
4.3 Operating system interfaces (TOPS-20)
The programming interface will be with the Monitor. Packets of
information will be sent and recieved using Monitor Calls that will
be supported in TOPS-20 Release 6.1 and newer.
Overview of the Diagnostic Product Page 8
COMMANDS 27 May 88
5.0 COMMANDS
The commands available to the user of the NI Services Program are:
HELP
ENABLE/DISABLE
| Debug
Spear-Reporting
Output-Logging (to) <file-spec>
| Trace
IDENTIFY (node) <node-address>
| DISPLAY-ADDRESS <of>
| All
| Local-node
| Remote-nodes-on-network
| READ-COUNTERS <node>
| REDEFINE
| CONNECT (port) <number>
| CONNECT (node) <node-address>
SHOW
| All
| Debug
| Logging
| Spear-reporting
| Trace
QUIT
| EXIT
Control-C
Control-Y
| Control-D
| Control-B
The HELP command will list information about the other commands and
their options
The ENABLE command is used to enable or "turn-on" certain program
features.
The DISABLE command is used to disable or "turn-off" certain program
features.
Overview of the Diagnostic Product Page 9
COMMANDS 27 May 88
| The IDENTIFY command will cause the program to perform a REQUEST ID
| to the address specified as part of the command and will print the
| SYS-ID information obtained from that address.
|
| The DISPLAY-ADDRESS command displays the address of the local node
| and/or all the remote nodes on the network.
|
| The READ-COUNTERS command will read the counters of the specified
| node.
|
| The REDEFINE command will enable the user to change the exit
| character to exit from the remote mode.
|
| The CONNECT command actually connects the user's terminal to the
| PLUTO console terminal to transfer characters back and forth between
| the two. A "control-D" typed by the user will disconnect the user's
| terminal from this mode and return the user's terminal to command
| mode. A "control-B" typed on the user's terminal will cause a BREAK
| to be sent to the the PLUTO.
The SHOW command is used to display the current state of various
options and control flags in use by the program.
|
| The QUIT and EXIT commands will return the user to TOPS20 monitor
| level. It will Deselect a selected NODE properly before returning
| to the monitor and close the logging file if it was in use.
|
| A CONTROL-D typed while in the Remote Terminal mode will cause a
| disconnect from the remote mode and put the user back to the command
| level.
|
| Two CONTROL-C's typed while the program is in command or remote mode
| will always put the user back to TOPS20 monitor level.
A CONTROL-Y typed while the program is in any mode will cause an
immediate return to TOPS20 monitor level. The monitor CONTINUE
command will then resume operation from the interrupted point.
Overview of the Diagnostic Product Page 10
FUNCTIONAL DESCRIPTION 27 May 88
6.0 FUNCTIONAL DESCRIPTION
The PLUTO hardware does not include a physical console terminal.
Instead, a facility has been designed whereby a terminal on a host
node can be connected logically to the console interface on the
PLUTO and hence act as its console.
The standard PLUTO Server software will not use the console at all,
but there are occasions where this facility will be useful. For
example, diagnostics will use this facility extensively to
communicate with the user running the diagnostic - this enables
diagnostics that currently exist to be used without being rewritten.
Also, the 11/24 PLUTO processor includes micro-ODT, and so the
remote console facility may be used to control or debug a failing
node, much in the same way that a standard 11/24 may be controlled
via its own console terminal.
6.1 Relationship To Other Components
Terminal
|
|
V
+-----+ LLMOP% +---------+ NI +-------+ ASYNC +-------+
| NIS |<-------->| TOPS-20 |<------->| PLUTO |<------->| PLUTO |
+-----+ +---------+ (MOP) | UNA | Console | 11/24 |
| | CCS | +-------+
| +----------+ +-------+
+----------->| Volatile |
| Data | NIS = NI Services Program
| Base | CCS = Console Carrier Server
+----------+
Overview of the Diagnostic Product Page 11
FUNCTIONAL DESCRIPTION 27 May 88
6.2 NI Services Program
The NI Services Program will communicate with the PLUTO console
carrier server (CCS) which resides on a target node to provide
remote access to normal PLUTO console services. The NI Services
Program will provide the user interface to communicate with the
remote console. This program communicates via the LLMOP% interface
with the TOPS-20 monitor which in turn communicates with the PLUTO
console carrier server on a target node. It is a requirement that
the user be a privileged user in order to invoke the NI Services
Program and communicate with the PLUTO console carrier server.
There are two pieces of software that implement the remote console
facility. The NI Services Program on a TOPS20 host implements the
Console Carrier protocol and transfers characters transmitted across
the NI to and from a physical terminal on the host. The PLUTO UNA
code that implements this facility is known as the Console Carrier
Server.
The PLUTO remote console is a resource, and as such is subject to
contention between multiple requesting hosts. There is a mechanism
to resolve conflicts in using the remote console, viz.
'reservation' of the console. The requestor has to 'reserve' the
console before it may be used to transfer characters, and normally
the requestor 'releases' the remote console when it is no longer
required.
There is a timeout associated with reservation of the remote
console; the requestor must communicate with the server often
enough so that the reservation timer does not complete and hence
cause the remote console to be released from the requestor. The
value of the reservation timer is of the order of minutes; its
exact value will be determined later.
Having reserved the PLUTO's remote console facility and confirmed
that the reservation was successful, the NI Services Program may now
initiate communication to and from the PLUTO remote console.
Normally this would involve communications with a real terminal,
taking characters typed by the user on the real terminal and passing
them to the remote console and taking characters from the remote
console and displaying them on the users real terminal.
There is a requirement to provide an escape convention, so that the
terminal user may effect the following features:
1. Exit from the REMOTE TERMINAL portion of the NI Services
Program.
2. Emulate an input break condition, as though the user had hit the
break key on a local 11/24 console. This will force the PLUTO
processor into its micro-ODT, making available all the features
that micro-ODT permits, ie. examining memory, depositing
memory, resetting the machine etc.
Overview of the Diagnostic Product Page 12
FUNCTIONAL DESCRIPTION 27 May 88
3. Pass characters through that would otherwise be interpreted by
the hosts terminal driver, for example ^C.
As previously described, the requestor program should ensure that
there is communications with the server often enough to avoid the
reservation timer in the server expiring and forcing the remote
console back in the unreserved state. The Console Carrier protocol
includes the ability to send 'null' messages so that communication
can still occur between a functioning requestor and the server
without passing any data.
When the terminal user has finished with the remote console, the
requestor should relinquish control. The remote console facility is
now available to other requestors.
6.3 PLUTO Console Carrier Server
The PLUTO console carrier server is being supplied by the PLUTO
server base.
6.4 Console Carrier Protocol
The Console Carrier (CC) protocol is, as its name implies, a means
of transporting ("carrying") the information flow between a computer
console and that console's usually human user, in a situation in
which the user's terminal is attached to a system other than the
system of interest. The information is typically streams of ASCII
characters, though that is not a requirement of the protocol. The
physical console serving as a paradigm for the model is not an
"old-fashioned" console with a switch register, boot, continue,
examine, address, and deposit switches, but rather an ASCII console.
Such a console is a distinguished terminal. It can be used as a
normal terminal I/O device until a particular sequence of characters
is input by the human, after which point it has all the capabilities
of the old-fashioned console.
The objects of interest in the protocol are a requestor module, a
server module (the objects which speak the protocol) and a requestor
user process and server user process. Typically the latter two will
be a human using the remote console, and the target system's ASCII
console, respectively. The requestor and server protocol modules
occupy levels III through VI in the ISO model: they make direct use
of a data link layer (DDCMP or NI Data Link), under which is a
physical link layer (RS232-C or Ethernet Physical Link). The end
users make direct use of the CC Requestor and Server.
The Console Carrier protocol is a simple half-duplex polled protocol
designed to provide some degree of end-to-end (or user-to-user)
communication without the overhead of DECnet logical links. These
sections will discuss the operation of the protocol in terms of
Overview of the Diagnostic Product Page 13
FUNCTIONAL DESCRIPTION 27 May 88
message interchanges, the services the protocol affords, and what
the costs are for supplying those services in such an "inexpensive"
manner. The description will be informal; the protocol is formally
defined in the DNA Low-level Maintenance Operations Spec.
6.4.1 Message Flow Within The CC Protocol
The protocol is comprised of six different types of messages:
Request System ID, System ID, Reserve Console, Release Console,
Console Command and Poll, and Console Response and Acknowledgement.
The procedure which a Console Requestor must follow to reserve a
remote console is:
1. Ask the remote system for a System ID message, and receive that
message.
2. Note that the remote system has a remote console, and that the
console is not reserved. These two pieces of information are
included in the system ID message.
3. Assuming that the remote system has an unreserved console, send
that remote system a Reserve Console message.
4. Again ask the remote system for a System ID message by means of
a Request System ID message. If the requestor system has been
successful in reserving the remote console, the requestor's
address will appear as the console owner in the System ID
message.
If the remote system does not have a remote console, it may be
possible to "put a console on the system". This is not part of the
CC protocol, but is rather a function of a particular
implementation. For instance, it will be seen later in this paper
that the CC server for a Pluto implementation runs on the CPU aboard
the Pluto's UNA, not on the Pluto's CPU. This CC server can be
down-line loaded into the UNA, at which time the remote system will
"have" a console.
After reserving the remote console, the requestor must maintain that
reservation by sending Console Commands and Polls at some interval
less than the console's reservation timer. (The magnitude of the
timer is contained, again, within the System ID message.)
After the point at which the console is successfully reserved, the
communication consists of an arbitrarily long series of Console
Commands and Polls, answered by Console Responses and
Acknowledgements. Any messages may have null data; the protocol is
concerned only with the correct state changes. This dialog is
driven by the Requestor, which is responsible for issuing commands
and polling for responses from the Server. The Server cannot
independently return a response. Therefore, the Requestor must know
when and how often it must poll a response in order to prevent a
Overview of the Diagnostic Product Page 14
FUNCTIONAL DESCRIPTION 27 May 88
buffer overrun at the Server. The association of Requestor-defined
command data to Server-returned response data is made in the user
layer above the CC protocol. The communications path thus
established between Requestor User and Server User will remain
intact until the console is explicitly given up by the Requestor by
means of a Release Console message, or until the interval between
Console Commands and Polls exceeds the Console Server-defined
reservation timer. The protocol state is reflected unchanged by the
Console Server. The burden of recognizing an unsynchronized
protocol rests on the requestor. To resynchronize the protocol, the
requestor must release, then re-reserve the console.
6.4.2 Characteristics And Uses Of The Protocol
A user process within a DECnet network (or other modern layered
protocol network) has available certain services which allow that
user to believe that there exists a direct, exclusive, error free
communication path between him/herself and some physically distant
analogous user process. Of course, neither of the "users" need be
human, and the physical distance may vary by several orders of
magnitude, but in all cases, a model of two users "conversing" over
an I/O channel (telephone line, "pipe") is a useful one. Such user
processes have the following expectations of an end-to-end protocol:
1. That the pipe will hide the imperfections of the physical
medium; that is, they expect the path to be error-free.
2. That everything entering at one end will come out the other in
the same order; that is, they expect guaranteed delivery and
sequentiality.
3. That no other user's traffic will be interjected into their data
stream, and that the data that they input will be delivered only
to the partner process.
4. The initiating process expects that, if an attempted connection
succeeds, that connection will be made only to the object with
which it is specifically interested in communicating.
5. Both processes expect a degree of flow control sufficient to
protect themselves and the network from congestion and/or
overrun.
The CC protocol addresses all of these problems except the first by
the expedient of ignoring them: it is entirely the concern of the
user processes to see that they get done. The first, the error-free
path, is assumed to be supplied by the data link layer protocol.
Delivery is not guaranteed: if a requestor doesn't poll the server
as fast as the server generates responses, response data will be
lost. If the requestor generates commands faster than the server or
the server user process is able to process them, commands will be
Overview of the Diagnostic Product Page 15
FUNCTIONAL DESCRIPTION 27 May 88
lost, or the association of response to command will become skewed.
Access to the PLUTO Console Carrier Server is controlled by
requiring that the value of the "verification" field in a Reserve
Console message match the verification field which is stored in the
PLUTO UNA. How the verification field value in the PLUTO UNA gets
set is yet to be defined. Access to the CC requestor module is
neither specified nor controlled by the protocol. (However, CC
requestors will typically be implemented on larger, more controlled
systems.)
Because the protocol assumes no layers between itself and a user
layer, and because it demands no particular proof of identity from
its users, the server user process is that process which happens to
be interested in being the server user. Control of the access to
the console by a requestor user is within the protocol: a requestor
sends the console server a request to reserve the console, and then
asks the console to send a system ID. If the requestor has
successfully reserved the console, the requestor's own address will
appear in the ID message as the console user. A requestor may
explicitly release a reserved console. In addition, a reservation
timer, the magnitude of which is indicated in the system ID message,
determines how long the requestor may remain idle (not sending
commands or polling for data) before its ownership will be
rescinded. (The magnitude of this timer is not yet defined; it is
thought to be of the order of minutes.) This value will be
hard-coded into the Console Carrier Server microcode.
Flow control is very rudimentary: only one message may be
outstanding at any one time; to return response data requires a
command/poll. Lost response data is reported by the CC server. The
protocol state is kept as a one-bit sequence number. The first
command from the requestor has a sequence number of one. The
protocol state of the requestor may be thought of as the message
number of the current command/poll that it is currently attempting
to get across. The protocol state of the server may be thoght of as
the message number of the last correctly received command/poll. A
change in state implies an ACK, and is accompanied by (possibly
null) command data or response data. Command/polls with no state
changes and no data are used by the Console Requestor to NAK Console
Responses. The Console Server has the ability to indicate that it
has dropped (or lost, or scrambled) a Console Command, and the
ability to piggyback Console Response data on that NAK. Such a
response might be better called a WAK (wait/acknowledgement), with
the semantic meaning: "I've received your command, but no action
will be taken on it. Please retransmit the command, and,
incidently, here is some response data."
All of this should be taken to mean that this protocol assumes that
the requestor user process has the intelligence of a human, that in
fact the requestor user process is a human. Although the preceeding
traits seem to describe a terrible protocol, they are, in fact, very
much the same traits exhibited by a real ASCII console terminal
connected to a computer system in which one may be interested. That
terminal may be attached by some process of no interest, it may be
Overview of the Diagnostic Product Page 16
FUNCTIONAL DESCRIPTION 27 May 88
too slow to output the information from the process without dropping
characters, it may be typing out the uncoordinated interspersed
outputs of several processes, it may be a terminal on a "dead"
machine, etc. In such a case, the human user would either make some
sense of the scrambled mess presented to him/her, or would put the
terminal into console mode and reboot the system, perhaps using the
console emulator to try to figure the system's state first. (Of
course, it will frequently be the case that the terminal will afford
the user exactly the desired capabilities.)
6.5 Remote Console Reservation
The user must specify the target node with which the user wishes to
communicate. The required input to the NI Services Program will be
a node id (ie. either node name or node address). The other
parameters are optional. If not specified in the command line, they
must be specified in the Ni Services data base. If specified in the
command line, they override the parameters set in the NI Services
data base. The syntax for the command line input is:
| RMTCON> CONNECT port-id
| RMTCON> CONNECT node-id
If the connection is established with the specified node, the
following message will be displayed on the user's terminal:
| To Disconnect & return to command mode, type a single control-D
|
| Typing one or several carrage returns will then result in the
| following prompt to be displayed on the user's terminal:
| Local>
The user can now begin communications as a remote terminal.
In order for the NI Services Program to communicate with a remote
node, the SERVICE CIRCUIT, HARDWARE ADDRESS, and SERVICE PASSWORD
must be specified in either the command line or the volatile data
base. The names of the files containing the special secondary
loader and the micro-code will be hardwired into the program image.
6.5.1 Reservation States
The PLUTO console carrier server may be in one of three states when
the user wishes to reserve the console:
1. The PLUTO console carrier server is loaded and unreserved.
2. The PLUTO console carrier server is loaded and reserved.
Overview of the Diagnostic Product Page 17
FUNCTIONAL DESCRIPTION 27 May 88
3. The PLUTO console carrier server is not loaded.
If the PLUTO console carrier server is loaded and unreserved, the NI
Services Program will reserve it. At this point, the user will
enter commands as if he were physically located at a console. The
commands will be transmitted by the requestor to the server. The
appropriate response will be transmitted by the server to the
requestor. The requestor will display this information to the user.
If the PLUTO console carrier server is loaded and reserved, an error
message will be displayed to the user on the issuing terminal.
If the PLUTO console carrier server is not loaded, the requestor
will load the server. It may be necessary for the requestor to
identify the target node via the 48-bit hardware address if the
target node is not known to the network. Once the server is loaded,
the requestor will attempt to reserve the console and proceed as
above.
6.5.2 Reservation Details
The PLUTO UNA code that implements the Console Carrier protocol may
or may not be resident in the PLUTO UNA. Thus the requestor must
check whether the Console Carrier code is present in the PLUTO UNA
and if necessary load the appropriate server code into the PLUTO UNA
via the NI.
The target PLUTO may be responding to one of two 48bit NI addresses,
depending on the state of the PLUTO UNA. Thus the requestor should
attempt to communicate with both the PLUTO 48bit hardware UNA
address and the PLUTO 48bit Phase IV UNA address and use whichever
one that responds in subsequent messages.
In its initial state, the PLUTO UNA will respond to its 48bit
hardware UNA address. When the PLUTO Server software initializes
the UNA for a phase IV node, it changes the UNA address to be a
Phase IV 48bit address. The Phase IV 48bit address is formed by
appending the 16bit Phase IV node number to a fixed 32bit value.
The following sections describe the different situations which may
occur when the requestor tries to connect to the remote console
facility. The requestor sends the initial request, to both 48bit
addresses if necessary, as follows:
REQUEST ID :
CODE = 15
RECEIPT NUMBER = requestors identification
We will now see the possible responses to this request, and the
actions that may be taken by the requestor in each case.
Overview of the Diagnostic Product Page 18
FUNCTIONAL DESCRIPTION 27 May 88
6.5.3 Console Carrier exists - but console in use
In this case, the Console Carrier code has been loaded into the
PLUTO UNA previously, but at the moment, another host has reserved
the console, so that it is unavailable to us.
The format of the reply is:
SYSTEM ID :
CODE = 7
RECEIPT NUMBER = matches value sent in REQUEST ID
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = at least console carrier
CONSOLE USER = non-zero 48bit Phase IV address
which does not match our address
RESERVATION TIMER = (value to be determined)
CONSOLE COMMAND SIZE = (value to be determined)
CONSOLE RESPONSE SIZE = (value to be determined)
HARDWARE ADDRESS = 48bit hardware UNA address
DEVICE = 1 (ie. UNA)
In this case, console carrier is known to be present as the 'console
carrier' bit is set in the FUNCTIONS field - other bits will be set
in this field depending on the current state of the PLUTO UNA. The
console is reserved by some user as CONSOLE USER is non zero.
However the host is not the current user of the remote console
feature as the value of this field does not match the hosts 48bit
Phase IV address.
In this case, the host is unable to reserve the console. There are
two options at this point: either wait a while and try again, or
return an error message to the user who is requesting the console
service for the PLUTO.
6.5.4 Console Carrier exists - Console not reserved
In this case, the Console Carrier code has been previously loaded
into the PLUTO UNA, but at the moment there is no requestor who has
reserved the console.
The reply looks like:
SYSTEM ID :
CODE = 7
RECEIPT NUMBER = matches value sent in REQUEST ID
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = at least console carrier
CONSOLE USER = 0 (ie. not reserved)
RESERVATION TIMER = (value to be determined)
CONSOLE COMMAND SIZE = (value to be determined)
Overview of the Diagnostic Product Page 19
FUNCTIONAL DESCRIPTION 27 May 88
CONSOLE RESPONSE SIZE = (value to be determined)
HARDWARE ADDRESS = 48bit hardware UNA address
DEVICE = 1 (ie. UNA)
Here we see that the Console Carrier code is running, as the console
carrier bit is set in the FUNCTIONS byte. However, CONSOLE USER is
0 meaning that there is no current host that has reserved the
console.
We may now attempt to reserve the console, as follows:
RESERVE CONSOLE :
CODE = 13
This will attempt to reserve the remote console for our exclusive
use. However it is possible that another user is trying to reserve
the console, and managed to do so before we were able to. There is
also a possibility that the Console Carrier in the PLUTO UNA has
been disabled before we were able to reserve the console. Thus we
need to check whether we did indeed manage to reserve the console
successfully.
We now issue another REQUEST ID message, and depending on the reply,
we will find that we own the console, or that some other host has
reserved the console before us, or that Console Carrier is no longer
operational in the PLUTO, and will therefore have to be reloaded.
6.5.5 Console Carrier exists - we own the console
Assuming that we have tried to reserve the console, as in the
previous case, then we would normally expect this reply when we
issue the second REQUEST ID. In this case, we have managed to
successfully reserve the PLUTO console carrier server and may
proceed to use the remote console feature.
It is also possible that due to some error, the console believes we
own it, but we were not aware that we own it. This case is an error
as there can only be one user of the Console Carrier request code
for a given PLUTO at any time. In this case, the requestor should
issue a warning message, then release the console via a RELEASE
CONSOLE message and then attempt to reserve the console again via a
RESERVE CONSOLE message.
The format of the reply is:
SYSTEM ID :
CODE = 7
RECEIPT NUMBER = matches value sent in REQUEST ID
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = at least console carrier
Overview of the Diagnostic Product Page 20
FUNCTIONAL DESCRIPTION 27 May 88
CONSOLE USER = non-zero 48bit Phase IV address
which matches our address
RESERVATION TIMER = (value to be determined)
CONSOLE COMMAND SIZE = (value to be determined)
CONSOLE RESPONSE SIZE = (value to be determined)
HARDWARE ADDRESS = 48bit hardware UNA address
DEVICE = 1 (ie. UNA)
The console carrier code is present, as determined by the bit set in
the FUNCTIONS field, and we are designated as the console requestor
as the CONSOLE USER is set to be our 48bit Phase IV address. We may
now use the console carrier server and communicate between the host
terminal and the DL on the PLUTO.
6.5.6 Console Carrier code does not exist
Either there has never been any console carrier code operating in
the PLUTO, or else it had previously been loaded but has since been
disabled.
The reply in this case looks like:
SYSTEM ID :
CODE = 7
RECEIPT NUMBER = matches value sent in REQUEST ID
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = does not include console carrier
HARDWARE ADDRESS = 48bit UNA hardware address
DEVICE = 1 (ie. UNA)
In this case, the FUNCTIONS field does not include the console
carrier bit, so there is no running PLUTO Console Carrier server on
the PLUTO's UNA. Therefore we must load the console carrier code
into the UNA. This is accomplished by sending a BOOT message to the
PLUTO indicating that we wish to load the communications processor,
ie. the UNA, rather than the PLUTO itself.
The message format is:
BOOT :
CODE = 6
VERIFICATION = 8 bytes of password
PROCESSOR = 1 (ie. communications processor)
CONTROL :
BOOT SERVER = 1 (ie. requesting system)
BOOT DEVICE = 0 (ie. system default)
DEVICE ID = 0 (ie. irrelevant)
SOFTWARE ID = -1 (ie. system image)
Overview of the Diagnostic Product Page 21
FUNCTIONAL DESCRIPTION 27 May 88
As in the case of loading a PLUTO from a host, the password field
may be set up in the PLUTO UNA as 8 octets of zero, or it may be
non-zero. The requestor should attempt this message twice if
necessary, once with the normal password, and once with the
VERIFICATION field consisting of 8 octets of zeros. Only one of
these requests will be responded to. Note that the SOFTWARE ID is
always -1; "diagnostic" is not supported when trying to boot the
communications processor (ie. the UNA).
The reply to the BOOT message will be a REQUEST PROGRAM, which is a
request for the host to load the appropriate secondary loader into
the PLUTO UNA. The format of the request is as follows:
REQUEST PROGRAM :
CODE = 8
DEVICE TYPE = 1 (ie. UNA)
FORMAT VERSION = 1
PROGRAM TYPE = 0 (ie. secondary loader)
SOFTWARE ID = -1 (ie. system image)
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = dependant on current UNA state
... the rest of this section depends on
the current UNA state
The secondary loader that the host responds with is not the same as
would be sent for a load of the complete node. This secondary
loader is a loader which will load an image into the PLUTO UNA WCS
rather than the PLUTO memory. The secondary loader is contained in
a file PLUTOWL.SYS on the PLUTO directory.
The host sends the secondary loader in a single message as follows:
MEMORY LOAD WITH TRANSFER ADDRESS :
CODE = 0
LOAD NUMBER = 0
LOAD ADDRESS = (value to be determined)
IMAGE DATA = data from PLUTOWL.SYS
TRANSFER ADDRESS = (value to be determined)
The PLUTO WCS secondary loader now runs and requests the PLUTO WCS
code to be loaded, ie. the console carrier server code. The
message is as follows:
REQUEST PROGRAM :
CODE = 8
DEVICE TYPE = 1 (ie. UNA)
FORMAT VERSION = 1
PROGRAM TYPE = 2 (ie. system)
SOFTWARE ID = -1 (ie. loading standard software)
OTHER INFO :
MAINTENANCE VERSION = 3.0.0
FUNCTIONS = dependant on current UNA state
Overview of the Diagnostic Product Page 22
FUNCTIONAL DESCRIPTION 27 May 88
... the rest of this section depends on
the current state of the UNA
The host will now load down the PLUTO console carrier server code
into the PLUTO UNA WCS. This is a multiblock load. The PLUTO
console carrier server code is in the file PLUTOCC.SYS on the PLUTO
directory.
The host sends the following message:
MEMORY LOAD :
CODE = 2
LOAD NUMBER = starts at zero
LOAD ADDRESS = starting address to load this segment
IMAGE DATA = data to be loaded into the UNA's WCS
The exact method for determining LOAD ADDRESS and IMAGE DATA from
the file PLUTOCC.SYS will be determined later. The PLUTO UNA
secondary loader will reply with a message in the following form:
REQUEST MEMORY LOAD :
CODE = 10
LOAD NUMBER = number of next segment to load
ERROR = 0, if the last segment received correctly
1, if the last segment received was in error
The sequence of MEMORY LOAD and REQUEST MEMORY LOAD is repeated as
often as necessary to complete the load of the PLUTO console carrier
server. The load is terminated with a message of the form:
PARAMETER LOAD WITH TRANSFER ADDRESS :
CODE = 20
LOAD NUMBER = matches the last REQUEST MEMORY LOAD value
PARAMETERS :
0 (ie. no parameters)
TRANSFER ADDRESS = starting address of Console Carrier server
The actual value for TRANSFER ADDRESS will be determined later.
At this stage the PLUTO console carrier server is loaded and running
in the PLUTO UNA WCS. The host should now issue a RESERVE CONSOLE
request to attempt to get exclusive access to the remote console
facility. The format of the message is as follows:
RESERVE CONSOLE :
CODE = 13
The possible responses to the RESERVE CONSOLE message are explained
in a previous section.
Overview of the Diagnostic Product Page 23
FUNCTIONAL DESCRIPTION 27 May 88
6.6 Remote Console Operation
Once the remote console is reserved, a timer routine will be
executed once per second. The timer routine will transmit a console
command and poll message to the server with any data which has been
typed in by the user since the last transmit. If any response data
is received from the server, this data will be displayed on the
user's terminal exactly as it was received from the server. The
reservation timer for the server must be specified in units of
seconds. Since the requestor is polling at one second intervals,
there is no problem with satisfying the requirement that the server
must be polled within the time specified by its reservation timer.
Overview of the Diagnostic Product Page 24
ERROR REPORTING PHILOSOPHY 27 May 88
7.0 ERROR REPORTING PHILOSOPHY
o Report back to the user on functional errors.
o Hardware errors will be detected and logged by the Operating
System.
7.1 Reporting to SPEAR
The following information will be logged into the System Error Log
for SPEAR use.
o The current time when the remote console is reserved.
o The current time when the remote console is released.
o Port number/Node number.
Overview of the Diagnostic Product Page 25
OPEN ISSUES 27 May 88
8.0 OPEN ISSUES
There must be some special character which will be used to specify a
'BREAK' command in order to get the attention of micro-odt. [Control-B]
There must also be some special character to exit console carrier mode.
[Control-X]
These special characters should be agreed upon by all host
implementations (VMS and TOPS). At this point, there has not been any
agreement on the details in these areas.
The manner in which circuits over the UNA are modelled in network
management has not been defined as yet. For DDCMP circuits, the owner
is changed to the appropriate module (ex. LOOPER) and the state and
sub-state of the circuit is set according to the operation (ex.
on-looping). There is currently no definition of the model of UNA
circuits which specifies that this information will be kept or how this
information will be passed to network management if it will be
collected.
9.0 SCHEDULE
Milestone Target Date
--------- -----------
1. Functional Spec 6 May 83
Complete
2. Design/Code 1 July 83
Complete
3. Begin Debug 5 July 83
4. Complete Debug 15 July 83
5. Documentation 29 July 83
Complete
6. Evaluation 5 Aug 83
Complete
7. Completed 12 Aug 83
Overview of the Diagnostic Product Page 26
BIBLIOGRAPHY 27 May 88
10.0 BIBLIOGRAPHY
o Diagnostic Engineering Project Plan For Support of the Ethernet
Port (KLNI) on KL10.
Frank Gatulis / January 13,1983
o NI Node Product Architecture Specification
/ March 24,1982
o Digital Network Architecture - Low Level Maintenance Operations
Architectural Specification
Bob Stewart, Ken Chapman / April 20,1982
o A PLUTO Implementation of a Console Carrier Server
Paul Weiss / March 3,1982
Overview of the Diagnostic Product Page 27
GLOSSARY 27 May 88
11.0 GLOSSARY
o CCR Console Carrier Requestor, (the NI Services Program)
o CCS Console Carrier Server
o FCS First Customer Ship
o KLNI KL10 NI Ethernet Adapter
o N/A Not Applicable
o NI Network Interconnect (ETHERNET)
o PLUTO Communications Controller
o RCS Remote Console Service
o SCS Systems Communications Services
o SPEAR Standard Package for Error Analysis and Reporting
o TBD To Be Determined
o UUT Unit Under Test
12.0 REVISION HISTORY
Revision 0.1
May 3, 1983
John R. Kirchoff
The first mailing of this document.
Overview of the Diagnostic Product Page 28
ALGORITHMS 27 May 88
13.0 ALGORITHMS
13.1 NI Services Program algorithm
MODULE NIS
Get node to connect to
Check for required parameters in data base
IF user is privileged THEN
Open circuit
IF NI circuit THEN
Set characteristics
ENDIF
CALL Reserve_console
IF success then
Clear exit_flag
WHILE exit_flag not set DO
CALL process_command
ENDWHILE
Call release_console
ENDIF
Close circuit
ELSE
Display error messge
ENDIF
EXIT
13.2 Normal Command Processing algorithm
ROUTINE process_command
WHILE exit not set DO
Complement message number
IF timer expired or character received THEN
IF character received = exit character THEN
Set exit
ELSE
Transmit console command and poll message
Display response if any
ENDIF
ELSE
Wait
ENDIF
Overview of the Diagnostic Product Page 29
ALGORITHMS 27 May 88
13.3 Reserve Remote Console algorithm
ROUTINE reserve_console
Clear error
CALL transmit(request_id)[receive system id message]
IF CCS not loaded THEN
CALL load_server
ELSEIF CCS reserved by other node THEN
Display error message
Set error
ELSEIF CCS reserved by local node THEN
CALL release_console
ENDIF
IF no error THEN
Retry = 0
Clear fatal_error
WHILE retry < 5 and not fatal_error and not success DO
IF no error THEN
CALL transmit(reserve_console)
CALL transmit(request_id)
IF reservation not successful THEN
IF not loaded THEN
CALL load_server
ELSE
Set fatal_error
Display error message
ENDIF
ELSE
Get reservation timer from system id message
Message_number = 0
Set success
ENDIF
ENDIF
ENDWHILE
ENDIF
RETURN
13.4 Release Remote Console algorithm
ROUTINE release_console
CALL transmit(release_console)
RETURN
Overview of the Diagnostic Product Page 30
ALGORITHMS 27 May 88
13.5 Load Server Code algorithm
ROUTINE load
Transmit boot message - no service password
IF no reply THEN
Transmit boot message - include service password
IF no reply THEN Set fatal error
ENDIF
WHILE no fatal error DO
Set secondary comm loader flag
WHILE no error and more to load DO
Open image and check for proper format
IF improper format THEN
Set file error
ELSE
Get start address, length, and transfer address
IF loading secondary comm loader THEN
Read entire image
Transmit memory load with transfer address
ELSE
Call multi-block load
Set retry counter to 0
WHILE no error and request memory load
and req segment = load number DO
Transmit memory load with transfer address
IF no error and request memory load
and req segment = load number
and retry counter < 5 THEN
Increment retry counter
ELSE
Increment load segment number
ENDIF
ENDWHILE
ENDIF
ENDIF
IF no error THEN
Close file being loaded
IF loading server image THEN
IF request memory and segment = load number THEN
Indicate no more to load
ELSE
Set line protocol error
ENDIF
ELSE
IF request program received THEN
Set file to load from Program Request
ELSE
Set line protocol error
ENDIF
ENDIF
ENDIF
ENDWHILE
ENDWHILE
RETURN
Overview of the Diagnostic Product Page 31
ALGORITHMS 27 May 88
13.6 Multi-block Load algorithm
ROUTINE multi-block_load
Set Load Segment number to 0
Set Requested Segment number to 0
WHILE no error and more to load DO
Read a segment of memory from file
Set retry count to 0
WHILE no error and Requested Segment = Load Segment DO
Transmit Memory Load Message
IF no error THEN
IF Request Memory Load received THEN
Set Requested Segment number from message
IF Requested Segment = Load Segment THEN
IF Retry count less than 5 THEN
Increment retry count
ELSE
Set Line Communication error
ENDIF
ELSE
IF Req Segment .ne. Load Segment+1 THEN
Set Line Protocol error
ENDIF
ENDIF
ELSE
Set Line Protocol error
ENDIF
ENDIF
ENDWHILE
Increment Load Segment number
ENDWHILE
RETURN