Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!lll-crg!ames!ucbcad!ucbvax!TOPAZ.RUTGERS.EDU!hedrick From: hedrick@TOPAZ.RUTGERS.EDU.UUCP Newsgroups: mod.protocols.tcp-ip Subject: terminal servers: minireview of Bridge CS/100 and Cisco ASM Message-ID: <8611271158.AA27820@topaz.rutgers.edu> Date: Thu, 27-Nov-86 06:58:45 EST Article-I.D.: topaz.8611271158.AA27820 Posted: Thu Nov 27 06:58:45 1986 Date-Received: Fri, 28-Nov-86 01:48:16 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 603 Approved: tcp-ip@sri-nic.arpa 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 ( ) Connect ( )
[ ECM ] DEFine = ( ) DisConnect ( ) [] DO Echo Listen ( ) ReaD ( )