[mod.protocols.tcp-ip] terminal servers: minireview of Bridge CS/100 and Cisco ASM

hedrick@TOPAZ.RUTGERS.EDU.UUCP (11/27/86)

A message that just appeared on this list gave a reasonably complete
description of the Encore terminal server.  Since we have used Bridge
CS-100's extensively, and are now using cisco ASM's, I thought it
might be helpful to give a description of them as well.  I hope the
following review isn't too long to read, but it seemed worth trying to
give a good feel for the products.  There are a number of similarities
in what these two products do.  Both of them implement telnet using
special-purpose software (i.e. they do not run Unix or a Unix-like
shell).  The user interfaces look like a typical DEC command scanner:
keywords which can be abbreviated, you can type ?  at any point to see
what is wanted there.  (With Bridge you have to hit carriage return
after the ?.  Cisco activates immediately.)  A number of the keywords
are even similar: connect, resume, disconnect, and show (though the
things that show will show are different).  In both cases, you can
have multiple sessions active.  You switch by typing an escape
character to get back to the terminal server, and then resuming the
session that you want to go back to.  Because they implement telnet
and not rlogin, they are not as optimized for use with Unix as it
sounds like Encore is.  However they do implement telnet sync, so
things are not as bad as they might be.  The big problem with terminal
servers is that ^C ^O ^S and ^Q tend to have very long delays unless
you do something special.  The difficulty is that in general there are
large buffers at both ends, and several packets can be "in flight".
So after you type ^S, ^C or ^O, you can still get several thousand
characters.  Rlogin solves the problem by integrating control
character handling on the terminal server and the host.  The host uses
TCP out of band messages to keep the terminal server apprised of what
mode the tty is supposed to be in.  Thus the terminal server handles
^S locally when appropriate.  But when you are in Emacs, the host
tells it not to do ^S, and so that character works as the search
command.  ^C and ^O are handled by cooperation between the server and
host.  These features give rlogin a big advantage over a naive telnet
implementation.  However it turns out that if you are careful, it is
possible to do nearly as well using telnet.  The telnet protocol
includes the same out of band features as rlogin for implementing ^C
and ^O.  It's just that most hosts and telnets don't bother to
implement these features.  (In particular, 4.2 telnet and telnetd do
not.)  Both Bridge and Cisco implement them in the terminal server.
So one need only repair the telnetd on your host.  We have done this
on our primary timesharing machines.  (Pyramid 90x systems.  Alas, our
code may not be easy to import, since our telnetd is in the kernel,
for performance reasons.)  This leaves ^S.  It would be possible to
use telnet negotations to turn on and off local ^S handling.
Unfortunately, no one seems to have defined such a negotiation.  Thus
we simply pick a character that is not used by Emacs for anything very
important (by default ^\ is used), and set up our terminal servers to
use that as a local XOFF.  The same character is set as XON.  I.e. it
is a toggle.  [An editorial comment:  Why did Berkeley define a new
proocol, rlogin, rather than simply implementing telnet fully, and
adding a negotiation to handle toggling XOFF.]

Enough of generic descriptions.  Now down to details.  I'll start with
Bridge, because that is what we have had for the longest.  Bridge has
at least 3 different terminal servers: CS-1, CS-100, and CS-200.  They
have different numbers of ports: 32 for the CS-1 (I have heard rumors
that they may allow more now), 14 for the CS-100, and some smaller
number for the CS-200.  The CS-100 is the only one that I know, though
I think the CS-200 might be more attractive for a new installation.
The CS-100 uses several 68000's to get enough bandwidth to drive all
of the lines at full speed.  It boots from a floppy (although it is
also possible to get diskless machines, which boot over the network
from a special server CS-100.  This would be a nice idea for any
installation that intends to have a number of boxes.  The server can
also be used to help monitor the network, and to diagnose problems.)
Major networking parameters are set via a sysgen, which must be done
standalone (i.e. the system is not in normal operation).  This allows
you to set the network addresses, subnet masks, and servers used for
various purposes.  The system uses IEN116 for name service.  (This is
an older name server standard.  There are Unix implementations
available.)  You can use one or more of the boxes as name server --
they keep the name table on floppy, or set up one or more of your Unix
systems as a server.  The terminal interface is highly configurable.
You can set up any characters to do character echoing, tailor the
prompts and greeting messges, etc.  We set it up to have the same
control characters as TOPS-20 or VMS.  It appears that they have
options oriented to half duplex, and every other conceivable kind of
terminal environment.  Of course, you can choose parity, character
size, and all of that.  The box is designed to allow you to support
machines that don't have their own TCP/IP implementations.  You can
connect a group of ports from a CS-100 to ports on the host.  You can
define those ports as a hunt group with its own Internet address.
Then anyone who telnets to that address will get the first free line
in the group.  There is enough processing power in the box to be able
to handle 9600 baud output under normal circumstances.  However the
CS-100 is short on memory, so certain combinations of uses can cause
trouble (e.g. if you are doing this, and using the same box to drive a
printer).  I'll say a bit more about this below.  The following
transcript will give you an idea of the configuration options, as well
as the available commands.  (By the way, the mechanism that we used to
produce this transcript puts us into system manager mode from our
favorite Unix machine.  We could do it to any box on the Internet,
without typing a password.  Fortunately, it more than a simple telnet,
and the program does not appear to be widely distributed.  There is
also a limit to the damage one could do, since serious configuration
changes have to be done with a sysgen.)

Remote: show parameters
...............................Global Parameters...............................
DATE = Thu Nov 27 05:52:54 1986
WelcomeString = "^G^J^MBridge CS/100, Rutgers LCSR Ethernet, Node Hill-SYS, Version 1.2000^J^M"
PROmpt = "Hill-Sys> "                   NMPrompt = "SYS> "
LocalPassWord = ...                     GlobalPassWord = ...
CONNectAudit = OFF                      ERRorAudit = ON

Remote: show allsessions [NB: It's before dawn on Thanksgiving Day]
Port/session#  state                    Port/session#  state
! 0   LISTEN                            ! 1   LISTEN 
! 2   LISTEN                            ! 3   LISTEN 
! 4   LISTEN                            ! 5   LISTEN 
! 6   LISTEN                            ! 7   LISTEN 
! 8   LISTEN                            ! 9   CONCTD with 128.006.005.107
!10   LISTEN                            !11   LISTEN 
!12   LISTEN                            !13   LISTEN 

Remote: show (!9) parameters
Parameters  for PortId !9, current session
...................Port Transmission and VTP Characteristics...................
BUffersize = 82     DeVice = ( Terminal, Glass )
InterAction = ( Verbose, Echo, NoMacroEcho, BroadcastON, NoLFInsert )
InitMacro = "motd"  MaxSessions = 6     PRIvilege = User
.........................Port Physical Characteristics.........................
BAud = 9600         BSPad = None        CRPad = None        FFPad = None
LFPad = None        TabPad = None       DataBits = 8        DUplex = Full
LinePRotocol = ASynchronous             PARIty = None       StopBits = 1
UseDCDout = ( AlwaysAssert, NoToggle )  UseDTRin = Ignore
.................Session Transmission and VTP Characteristics..................
BReakAction = ( InBand )                BReakChar = Disabled
DIsconnectAction = None                 DataForward = None  ECHOData = OFF
ECHOMask = ( AlphaNum, CR, Term, Punct )                    ECMChar = ^^
EOM = Disabled      FlowControlFrom = Xon_Xoff
FlowControlTo = Xon_Xoff                FlushVC = OFF       IdleTimer = 2
LongBReakAction = IGnore                LFInsertion = None  MOde = Transparent
XOFF = ^\           XON = ^\
..................Sess
Remote: ?
      BRoadcast   ( <addr> ) <string>
      Connect     ( <addr> ) <address> [ ECM ]
      DEFine      <macro-name> = ( <text> )
      DisConnect  ( <addr> ) [<session number>]
      DO          <macro-name>
      Echo        <string>
      Listen      ( <addr> ) 
      ReaD        ( <addr> ) <option> <parameter>
      ROtary      !<rotary> [+|-]= !<portid>[-!<portid>] , ...
      SAve        ( <addr> ) <option> <filename>
      SET         <param-name> = <value> ...
      SETDefault  ( <addr> ) [<param-name> = <value>] ...
      SHow        ( <addr> ) <argument> ...
      UNDefine    <macro-name>
      UNSave      <filename>
      ZeroStats   
      <BREAK>     (to leave remote mode)

Remote: sho (!9) stat   [This was done Thanksgiving day.  Not very busy...]

PORT # 000.000.000.000 STATISTICS REPORT: -------------
DAILY-AVERAGE:   CALL/D    PKT/S     BYTE/S    ERROR/D
                 0         0         0         0         
BUSIEST-MINUTE:  CALL/M    PKT/S     BYTE/S    ERROR/M
                 0         0         0         0         
BUSIEST-SAMPLE:  MAX#SN    PKT/S     BYTE/S    ERROR
                 1         0         0         0         
HOUR CALL/H PKT/S  BYTE/S ERR/H         HOUR CALL/H PKT/S  BYTE/S ERR/H
0    0      0      0      0             1    0      0      0      0      
2    0      0      0      0             3    0      0      0      0      
4    0      0      0      0             5    0      0      0      0      
6    0      0      0      0             7    0      0      0      0      
8    0      0      0      0             9    0      0      0      0      
10   0      0      0      0             11   0      0      0      0      
12   0      0      0      0             13   0      0      0      0      
14   0      0      0      0             15   0      0      0      0      
16   0      0      0      0             17   0      0      0      0      
18   0      0      0      0             19   0      0      0      0      
20   0      0      0      0             21   0      0      0      0      
22   0      0      0      0             23   0      0      0      0      

Remote: sho ?
      SHow    ADDRess 
      SHow    AllSessions [ p ]
      SHow    CONFigurationS [<filename>]
      SHow    ( <addr> ) DefaultParameters [<param-name> ...]
      SHow    GLobalParameters 
      SHow    InternetPorts 
      SHow    InternetServers 
      SHow    MACros [<macro-name>]
      SHow    NAmes [<host name>]
      SHow    NetMAP 
      SHow    ( <addr> ) PARAmeterS [<param-name> ...]
      SHow    <param-name> ...
      SHow    ROtaries 
      SHow    ( <addr> ) SESsions [ P ]
      SHow    ( <addr> ) STATisticS [ Sample | Min | <hour> | Day ]
      SHow    VERSion 
      SHow    VirtualPorts 
      <BREAK>     (to leave remote mode)

Remote: ^C

The CS-100's are reasonably reliable when used as simple terminal
servers.  However from time to time we have run into glitches in their
TCP, which make us wary of using it for anything unusual.  For
example, at one point we ran a printer off a line on a CS-100.  The
host would connect to that port in order to access the printer.  The
box where we did this always seemed to crash more often than others.
Also, if there were problems, we had to reboot the box.  Apparently,
they did not implement RST in TCP.  If the host crashed, this could
lead the CS-100 to keep trying to send a character to a connection
that no longer existed.  It would ignore the RST that was sent to tell
it to desist.  At times, the rate of retry could be high enough to
noticably affect the performance of the machine being attacked.
Historically, we have had fairly long delays in getting TCP problems
of this sort fixed.  TCP/IP was clearly a lower priority with them
than XNS. However over the last few months, they have apparently
raised the priority of TCP/IP, and we are now getting fixes to long-
standing problems.  Whether the particular problem I just described
is now fixed, I don't know.  The most serious problem is that the
boxes are short of memory.

  - There is a limit to the number of sessions you can have active
	at once.  If you use all 14 ports on a CS-100, there are
	only 4 extra sessions.  I.e. 4 people can have two sessions,
	or one person can have 4, but that's all.

  - The TCP buffers are small.  The packet sizes tend to be very
	small.  (I just telnetted to one, and got a send window
	of 102.)  This can increase the CPU overhead on the host
	and the network traffic	when doing such things as Emacs
	screen refreshes.

This is a known problem, and may not be present with all of the models,
or even on newer CS-100's.  So you should check with your salesman
to find out the current limits.

Note that Bridge has a large line of TCP/IP products.  I don't know
the current product list, but it includes gateways of various sorts,
and I think also a box that can handle 3270's.

=============

The cisco ASM is one of a set of products that use the same chassis.
It is a standard Multibus backplane, into which various boards can be
inserted.  Unlike Bridge, they don't actually have a finite set of
products.  They have these things with product numbers, like ASM-32/S.
But in fact all they are is a certain set of boards plugged into the
box.  You can add boards and produce objects that are a combination of
different announced products.  (E.g. if you add a second Ethernet card
to a terminal server, you have a thing that works as both a terminal
server and a gateway.)  There is a single CPU, a 68000 on a cisco
version of the SUN card.  (No connection with Sun Microsystems.  Sun
was one of several people who licensed the original SUN design from
Stanford.  Cisco's card is most similar to the Forward Technology SUN
board.)  The board has plenty of memory.  (1MB, which is loads of
memory for this application.)  Terminals are connected to terminal
interface cards that handle 16 ports.  The 3Com Ethernet card is
currently used.  Cisco supports up to 80 terminals on one box.
However if they are all active at once, there will not be enough CPU
power in the 68000.  This would be used if you had lots of offices,
but you knew that not everybody was logged in at once.  Cisco claims
that 32 ports can be in use at once with no problem.  We have a number
of 32-port boxes, and have never seen any slowdowns.  I think we are
probably going to start adding port cards so that we have 48-port
boxes.  They have a packaging problem with all of these ports.  How do
you put 80 RS232 connectors on the back of a box?  Obviously, you
don't.  Their preferred configuration uses 50-wire phone company
cables.  They have the standard phone company connectors on the back
of the boxes.  We run the cables to a board on the wall, where we fan
the wires out to phone company punch blocks.  Other wires are then run
out to the terminals.  We can then cross patch any terminal to any
port.  This is certainly the best way to handle large installations.
It results in compact connectors and fewer cables.  However if you
prefer RS232 connectors, they will put up to 32 on the back of their
box.  I think they also have a kludge for putting extra ones near the
box, connected by ribbon cable.  The boxes normally have their code in
ROM, though there are provisions to load it using TFTP from any host
system that supports that.  (Cisco sends out new code by giving us new
ROM's.)  When a machine comes up, it needs two services from some
server: (1) It has to find its Internet address.  It sends out both
RARP and bootp requests.  Bootp servers are available for 4.3.  We
also run it on 4.2, but I think it needs one extra ioctl.  RARP is
also widely available.  However before buying one of these boxes, you
should verify that you can run one or the other of these.  (2) It
attempts to load a configuration file using TFTP.  This contains
information such as terminal speeds, host name, greeting message,
routing tables, etc.  TFTP servers are widely available, and should
run on just about any system that supports TCP/IP.  Host name can be
handled via either IEN116 (an older TCP/IP name server protocol), or a
domain server.  It will broadcast, or you can give it a list of
servers to use.

System administration can be done using any terminal or an incoming
telnet connection.  Simply enable (which requires a password).  It
is possible to type any of the commands interactively that go in the
configuration file, though it would be more likely to update the
configuration file and request that it be reloaded. (This will not
disturb other users, as they won't change parameters of terminals
that are currently in use.)  One slight security problem: the password
is defined in the configuration file.  Most versions of TFTP will only
access files that are protected so that everyone can read them.  This
means that some machine on your network will have the password in a 
file that is readable by the world.  (We have altered TFTP to allow
us to protect the file.  It uses a slightly nonstandard interpretation
of .rhosts to let us limit access to just cisco terminal servers.)

The command language looks like a typical DEC command scanner.  It's
modelled after TOPS-20, but would look familiar to any VMS user, and
indeed to most Unix users.  It responds to rubout or backspace, ^U or
^X, ^W [word delete], and ^R [retype line].  If you just type a host
name, it will connect.  We have not seen any limit to the number of
connections you can have active at once.  The example below will give
a feeling for the commands and options available.  (It was obtained by
a normal telnet connection.)  One of the strong points of the system
is that they try to let you see as many internal tables and parameters
as possible.  This can be very useful in debugging situations.  Note
that no ? help is available for the configuration commands.  However
the results of the "show" commands will give a good feeling for the
sorts of options that can be set.  There are not quite as many
terminal options as with Bridge.  In particular

  - I don't think any attempt is made to handle half-duplex terminals
  - You can't change the editing characters (backspace/rubout, etc)
  - No padding is supported.  (The host system is assumed to do that.)

However there are more network configuration options.  There is also
access control.  You can control incoming or outgoing connections on
any port.  Access control lists can contain wildcards.  You can also
use this mechanism in their gateways to control which hosts access a
given network.  (We use it for Arpanet access control.  If you list
individual hosts, a hash table is used, so it should not cause a
performance problem.  A list with several wildcards might not be quite
so fast.)  Cisco appears to have implemented the IEEE 802.whatever
encapsulation.  In addition to the usual Ethernet encapsulation using
ARP's, they support two versions of IEEE/ISO encapsulation, one which
follows the newest proposed method, and the other which seems to be
peculiar to H-P.

Connected to hilltop.rutgers.edu.
Escape character is '^]'.
     cisco ASM-32, Rutgers LCSR Computer Science Network, Node Hilltop.

   Please type name of machine you wish to connect to, followed by a <CR>.

hilltop>enable

Password: 

hilltop#?

banner          Change message of the day banner
clear           Reinitialization functions, type "clear ?" for list
configure       Configure from terminal or over network
connect <host>  Connect to host - same as typing just a host name
disconnect <cn> Break the connection specified by name or number
disable         Turn off privileged commands
enable          Turn on privileged commands
exit, quit      Exit from the EXEC
name-connection Give a connection a logical name
ping            Send ICMP Echo message
reload          Halt and reload system
resume          Make the named connection be current
send <line>|*   Send message to a terminal line or lines
set <option>    Set an option, type "set ?" for list
show <cmd>      Information commands, type "show ?" for list
systat          Show terminal lines and users
terminal        Change terminal's hardware parameters, type "terminal ?"
unset <option>  Clear an option, type "unset ?" for list
where           Show open connections
<cr>            To resume connection


hilltop#set ?

download.mode  Optimize settings for using Kermit, etc.
egp-tracing    Detailed printout of EGP transactions
escape <ch>    Local escape character
event-watching Display special gateway events
gateway        Gateway processing activity
hold <ch>      Local hold character
imp-loopback   Put any ARPA-1822 interfaces into self loopback
line-debugging Helpful debugging printout for RS232 lines
notify         Notification of data pending on idle connections
tcp-debugging  Debugging printout for TCP connections
tracing        Print datagram routing information

hilltop#sho ?

access-lists   Access control lists
arp            ARP cache
buffers        Network buffer utilization
controllers    Serial network interface statistics
egp            EGP neighbors
hardware       Hardware configuration
hosts          Host/address cache
imp-hosts      Active IMP hosts
interfaces     Network interface statistics
line <line>    Line information, may specify a line
memory         Memory utilization statistics
options        Options configured via "set" and "unset"
printers       Parallel printer status
processes      Active system proceses
redirects      ICMP redirect cache
routes         Network routing table
stacks         Process and interrupt stack use
terminal       Terminal parameters
tcp <line>     TCP information, may specify a line
traffic        Network protocol statistics
users          Summary of active lines and connections

hilltop#term ?

databits  5|6|7|8
flowcontrol  none|hardware|software  [in|out]
length  <length>
parity  none|even|odd|space|mark
speed  300|1200|2400|4800|9600|19200
start-character  <decimal-number>
stop-character  <decimal-number>
stopbits  1|2
terminal-type  <string>

hilltop#sh line 14

 Tty Typ    Tx/Rx    A Mode      Status  Capab Roty AccO AccI  Uses    Noise
* 14 TTY  1200/1200  L modem     100448   1100    -    1    -   139       79

Location: "Dialup x2970", Type: "", Length: 24 lines
TX/RX speeds are 1200/1200, 8 databits, 1 stopbits, no parity
No flowcontrol in effect.
Status currently=0x100448, default=0x100020, permanent=0x40
Capability currently=0x1100, default=0x1100, permanent=0x0
Idle EXEC timeout is 5 minutes.
Idle session timeout is 120 minutes.
Escape character is ^^ (30), default is ^^ (30)
Hold character is ^\ (28), default is ^\ (28)
Disconnect character is not set
Activation character is ^M (13)
hilltop#systat

 TTY       Host(s)             Location
 tty14     H008-19             Dialup x2970
 tty22     TOPAZ               Dialup x2976
 tty34     TOPAZ               Dialup x2954
*vty41     idle                TOPAZ
 vty42     idle                192.12.88.3

hilltop#sho traffic

IP statistics:
  Rcvd:  3075505 total, 23 format errors, 79 checksum errors, 0 bad hop count
         0 unknown protocol, 2998056 local destination, 77347 not a gateway
  Frags: 0 reassembled, 0 timeouts, 0 fragmented, 0 couldn't fragment
  Bcast: 974 received, 4 sent
  Sent:  0 forwarded, 2395890 generated, 64 encapsulation failed, 0 no route

ICMP statistics:
  Rcvd: 1 checksum errors, 85 redirects, 46 unreachable, 342 echo
        0 echo reply, 35 mask requests, 20 mask replies, 0 other
  Sent: 0 redirects, 0 unreachable, 0 echo, 342 echo reply
        1 mask requests, 0 mask replies

UDP statistics:
  Rcvd: 1526 total, 0 checksum errors, 1131 no port
  Sent: 1653 total, 0 forwarded broadcasts

TCP statistics:
  Rcvd: 2996037 total, 471 checksum errors, 716 no port
  Sent: 2394255 total

 --More--  

ARP statistics:
  Rcvd: 47699 requests, 1177 replies, 78 reverse, 69 other
  Sent: 289 requests, 533 replies (0 proxy), 1 reverse

Xerox ARP statistics:
  Rcvd: 0 requests, 0 replies
  Sent: 0 requests, 0 replies

Probe statistics:
  Rcvd: 16217 address requests, 81 address replies, 0 other
  Sent: 289 address requests, 4 address replies (0 proxy)

hilltop#sho interface

Ethernet #0 is up, hardware address 0260.8C02.5606, IP address 128.6.4.56
  MTU is 1504 bytes, encapsulation is ARPA, no access checking
  Address determined by Reverse ARP from host 128.6.4.194
  Time since last input is 0:00:00.000
  Time since last successful output is 0:00:00.016
  No output failure has occurred
     3601442 input, 4119 with errors, 541 no input buffers
     2401375 output, 3443 with errors, 0 congestion drops
     202 resets, 0 runts rcvd, 0 giants rcvd

hilltop#sho ?

access-lists   Access control lists
arp            ARP cache
buffers        Network buffer utilization
controllers    Serial network interface statistics
egp            EGP neighbors
hardware       Hardware configuration
hosts          Host/address cache
imp-hosts      Active IMP hosts
interfaces     Network interface statistics
line <line>    Line information, may specify a line
memory         Memory utilization statistics
options        Options configured via "set" and "unset"
printers       Parallel printer status
processes      Active system proceses
redirects      ICMP redirect cache
routes         Network routing table
stacks         Process and interrupt stack use
terminal       Terminal parameters
tcp <line>     TCP information, may specify a line
traffic        Network protocol statistics
users          Summary of active lines and connections

hilltop#sho line

 Tty Typ    Tx/Rx    A Mode      Status  Capab Roty AccO AccI  Uses    Noise
   0 CTY             - direct        40      0    -    -    -     1        1
   1 TTY  4800/4800  - direct    400040      0    -    2    -     0      107
   2 TTY  4800/4800  - direct    400040      0    -    2    -    70     2757
   3 TTY  4800/4800  - direct    400040      0    -    2    -    83      147
   4 TTY  4800/4800  - direct    400040      0    -    2    -    70       13
   5 TTY  4800/4800  - direct    400040      0    -    2    -    33       46
   6 TTY  4800/4800  - direct    400040      0    -    2    -    54     2036
   7 TTY  4800/4800  - direct    400040      0    -    2    -     0  2322046
  10 TTY  2400/2400  - direct        40      0    -    1    -    39        8
  11 TTY  2400/2400  - direct    400040      0    -    1    -     0        0
  12 TTY  2400/2400  - direct        40      0    -    1    -    30       41
  13 TTY  2400/2400  - direct        40      0    -    1    -    57        8
* 14 TTY  1200/1200  L modem     100448   1100    -    1    -   139       79
  15 TTY  1200/1200  L modem     100020   1100    -    1    -   112       23
  16 TTY  1200/1200  L modem     100020   1100    -    1    -   103      107
  17 TTY   300/300   L modem     100020   1100    -    1    -    81       13
  20 TTY  1200/1200  L modem     100020   1100    -    1    -    70       21
  21 TTY  1200/1200  L modem     100020   1100    -    1    -    41        3
* 22 TTY   300/300   L modem     500600   1100    -    1    -     2      166
  23 TTY  1200/1200  L modem     100020   1100    -    1    -    22        1

 --More--  
 Tty Typ    Tx/Rx    A Mode      Status  Capab Roty AccO AccI  Uses    Noise
  24 TTY  1200/1200  L modem     100020   1100    -    1    -     7       45
  25 TTY  1200/1200  L modem     100020   1100    -    1    -    13       12
  26 TTY  1200/1200  L modem     100020   1100    -    1    -    35       29
  27 TTY  1200/1200  L modem     100020   1100    -    1    -     5        0
  30 TTY  9600/9600  L modem     100020   1100    -    1    -     0        0
  31 TTY  9600/9600  L modem     100020   1100    -    1    -     0        0
  32 TTY  2400/2400  L modem     108000   1100    -    1    -    78      389
  33 TTY  2400/2400  L modem     100020   1100    -    1    -    34       19
* 34 TTY  2400/2400  L modem     100448   1100    -    -    -    25       34
  35 TTY  9600/9600  L modem     100020   1100    -    1    -     0        0
  36 TTY  2400/2400  L modem     100020   1100    -    1    -    49     2258
  37 TTY  2400/2400  L modem     100020   1100    -    1    -     9        0
  40 TTY  9600/9600  L modem     100020   1100    -    1    -     0        0
* 41 VTY             - virtual   120440      1    -    2    -    45        0
* 42 VTY             - virtual   120440      0    -    2    -     3        0
  43 VTY             - virtual   120240      0    -    2    -     8        0
  44 VTY             - virtual   120020      0    -    2    -     0        0
  45 VTY             - virtual   120020      0    -    2    -     0        0

hilltop#quit
Connection closed by foreign host.

The primary issue with cisco is that they are a new and small company.
We have had problems show up, as you would expect with any new
product.  They have all been fixed reasonably quickly.  Simple coding
blunders are normally fixed within a couple of days.  (I trust no one
expects a bug free product.  We are not so concerned about finding
bugs in new products.  We had at least as many bugs in the early days
of the CS-100's.  We are more concerned with how hard it is to get
them fixed.  As far as I know, there are no unfixed bugs at the moment
in the Cisco software.)  Rutgers has, as usual, run into a few really
difficult problems.  The most difficult ones turned out to be design
problems with two different boards used in the Arpanet gateway (both
from established vendors).  The question that a few of us have is
whether they will be able to continue their good support when they
have hundreds of customers.  The biggest problem we have with small
companies is that when they succeed, it is no longer practical for
everyone to talk to their wizards.  Either they supply no support, or
they build up a large staff of turkeys to deal with the users.  (We
have seen both strategies.)  However we don't know of any more
established vendors that have really brilliant solutions to this
problem either.  One of the stengths of the company is Len Bosack's
expertise in the area of TCP/IP and routing technology.  The folks
at Bridge are certainly competent, but our evidence does not suggest
that they have anyone of his caliber.  This shows up in how the
nooks and cranies of TCP are handled.  (It is inconceivable that
cisco would put out a TCP that failed to implement RST.)  It also
matters if you are thinking of building a large network, where
routing technology matters.  (However Bridge has in the past tended
to license DEC's technology for routing.  That is a perfectly
acceptable solution.)

In short, both Bridge and cisco make useful products.  We think
cisco's software design is somewhat superior.  But you have to balance
this against the dangers of dealing with a startup company, with
the details of what the particular products do and don't support,
and with the cost of the equipment needed for your particular
configuration.  (E.g. the Bridge CS-200 would tend to be more
cost-effective for locations with very small numbers of terminals,
but in most situations, cisco would probably come out ahead.)