|
|
1.1 root 1: .RP
2: .TL
3: BSC Troubleshooter's Guide
4: .br
5: or: What To Do When Things Go Wrong
6: .br
7: (cause they will)
8: .AU
9: Risa Galant
10: .AI
11: D. L. Buck and Associates, Inc.
12: .LP
13: The Bisync daemon
14: .I (bscd)
15: normally does its work quietly, without giving any
16: indication as to what it's doing.
17: Problems can and do occur however,
18: some of which the daemon complains about by displaying an error message,
19: some of which have to do with modems and phone lines and such.
20: .LP
21: This guide explains what to look for when any error message from the
22: daemon appears, how to troubleshoot modems and phone lines (or, at
23: least, to be able to tell what the problem
24: .I isn't)
25: problems that may occur when
26: installing
27: .I bscbatch,
28: and how to use the monitoring/trace facilities.
29: .LP
30: Some useful things to have handy are the user manuals for modems,
31: auto-dialers, or other peripheral communications equipment used at
32: your installation, and the
33: .I bscmon(8)
34: document, which includes
35: the BSC protocol states diagram.
36: .NH
37: When the Daemon Complains
38: .LP
39: The daemon mails its error messages to the system administrator,
40: for whom the user id is a specifiable parameter in the host configuration
41: file,
42: If a communications log is being kept, these error
43: messages will also be logged therein.
44: .NH 2
45: Error Message Format
46: .LP
47: The daemon mails its messages in the following format:
48: .DS
49: bscd [<hostname>]: <error message>
50: .DE
51: .LP
52: .I <Hostname>
53: is the name of the host to which the daemon was transmitting or
54: receiving files at the time the error occurred. If the error occurred
55: before contact with any host has been made, a hostname will not be
56: specified.
57: .I
58: <Error message>
59: .R
60: is the actual error message.
61: .NH 2
62: The Error Messages and What To Look For
63: .LP
64: Here are the error messages the daemon may send, and what to check
65: if it does.
66: .IP \(bu 5
67: .I
68: bscd: can't open /usr/lib/bscbatch configuration directory
69: .R
70: .IP
71: The configuration directory
72: .I /usr/lib/bscbatch
73: is where configuration files
74: for all hosts with which communications take place are kept. If it
75: can't be read, no communication is possible with any of them. Check
76: the directory's modes. If they don't include read and execute permissions
77: for everybody, change them so that they do.
78: .IP \(bu
79: .I
80: bscd <hostname>: another bscd process is currently running
81: .R
82: .IP
83: The daemon is, at this very moment,
84: talking with
85: .I <hostname>,
86: .R
87: so you can't.
88: .IP
89: Note:
90: .I bscd
91: thinks this is so because it creates a "lock" file
92: in the spool directory
93: .I /usr/spool/bscbatch/<hostname>,
94: named
95: .I bsclock,
96: when it starts processing for a host, and removes it when it is done.
97: It also creates a lock called
98: .I auditlock,
99: pertaining to the AUDIT trail file.
100: If unusual circumstances cause these files to be left in the directory
101: (a system crash, for example), you may have to manually remove them.
102: .IP
103: This message will also occur if
104: .I bscd
105: was unable to remove a file it
106: had sent. Be sure and check the AUDIT trail via
107: .I bsclog.
108: .IP \(bu
109: .I
110: bscd <hostname>: directory /usr/spool/bscbatch/<hostname> not readable
111: .R
112: .IP
113: This is probably the same problem as the configuration directory problem.
114: Check the directory's modes and change them if necessary.
115: .IP
116: Note: This message will also occur if the directory isn't there.
117: This may happen if a configuration file has been created for a host,
118: but the corresponding spool directory has not been.
119: .IP \(bu
120: .I
121: bscd <hostname>: <devname> cannot be opened for communications; system
122: error <errno>
123: .R
124: .IP
125: The communications device
126: .I <devname>
127: couldn't be opened when the daemon wanted to communicate with
128: .I <hostname>.
129: .IP
130: System error
131: .I <errno>
132: refers to the error number which was returned
133: to the daemon by the system. See INTRO(2) for further information
134: about system error numbers.
135: .IP
136: Possible values for
137: .I <errno>
138: and explanations are:
139: .RS
140: .IP \(bu
141: 16 (EBUSY)
142: .IP
143: Some other process has the communications device; you'll have to wait
144: for it to finish. In the meantime, the daemon will go on to the next
145: host.
146: .IP \(bu
147: 13 (EACCES)
148: .IP
149: This means the file modes are bad. Check the modes for
150: .I <devname>.
151: .RE
152: .IP \(bu
153: .I
154: bscd <hostname>: unrecognized keyword, line <l> in /usr/lib/bscbatch/<hostname>
155: .R
156: .IP
157: While reading the host configuration file
158: .I /usr/lib/bscbatch/<hostname>,
159: the daemon found a configuration keyword it didn't recognize.
160: Somebody probably made a typographical error. The daemon will
161: go on to the next host.
162: .IP \(bu
163: .I
164: bscd <hostname>: invalid parameter for keyword <k> in
165: /usr/lib/bscbatch/<hostname>
166: .R
167: .IP
168: While reading the host configuration file
169: .I /usr/lib/bscbatch/<hostname>,
170: the daemon found that configuration keyword
171: .I <k>
172: had an invalid parameter.
173: This could be due either to a typographical error, or the parameter
174: could be out of range. The daemon will go on to the next host.
175: .IP \(bu
176: .I
177: bscd <hostname>: file system <devname> has less than minimum blocks
178: available. Processing aborted.
179: .R
180: .IP
181: The amount of free space on
182: .I <devname>
183: is below the specified minimum
184: amount. The daemon refuses to receive any files from this host while
185: this condition lasts \(em it continues processing with the next host.
186: Check the MINSPACE parameter in the host configuration file and the
187: amount of free space on the file system. If there really is less
188: space on
189: .I <devname>
190: than the amount specified by MINSPACE, you'll have
191: to make room on it somehow before you can continue.
192: .IP \(bu
193: .I
194: bscd <hostname>: Transmission of <file> aborted: Attempt to send
195: transparent to non-transparent host.
196: .R
197: .IP
198: While sending file
199: .I <file>
200: to
201: .I <hostname>,
202: configured for normal data
203: only (TRANSPARENT = NO specified in the host's configuration file),
204: .I transparent
205: characters were encountered.
206: Certain control characters (SYN, DLE, ETX, ETB, IUS, ENQ) in the transmission
207: code being used cannot be sent as part of a normal data file \(em
208: the file must be sent in a special mode called
209: .I transparent.
210: Check <file> for control characters or typographical errors.
211: Transmision of <file> was aborted.
212: .IP \(bu
213: .I
214: bscd <hostname>: file /usr/spool/bscbatch/<hostname>/<filename>
215: can't be created.
216: .R
217: .IP
218: While attempting to create
219: .I <filename>
220: to hold a file being received,
221: an error was encountered. Check the host's spool directory and/or
222: file's permissions, and change them if necessary. The daemon goes
223: on to the next host.
224: .IP \(bu
225: .I
226: bscd <hostname>: file /usr/spool/bscbatch/<hostname>/<filename> can't
227: be removed.
228: .R
229: .IP
230: The transmission control files and copy files are normally removed
231: from the host's spool directory once the file has been sent. In this
232: case, the daemon had a problem while trying to unlink
233: .I <filename>.
234: The file will be left there, and the daemon will terminate immediately,
235: .I without
236: removing the lock file. This insures that the daemon won't
237: continuously send the unremovable file.
238: .IP \(bu
239: .I
240: bscd <host>: Transmission of <filename> aborted, <reason>
241: .R
242: .IP
243: If the reason is "Transmit timeout error", the usual explanation
244: for this is that the device did not get a transmit clock signal from
245: the modem. This could be due to improper modem option specification,
246: improper cable to the modem from the computer system, or to not having
247: jumpered the MODEM port for external timing (see section 2 on Modems).
248: The daemon will go on to the next host.
249: .NH
250: Modems, Phone Lines, and Cables
251: .LP
252: This section explains something about the kinds of modems, phone lines,
253: and cables involved in communications, and how to troubleshoot them.
254: .NH 2
255: About Modems
256: .LP
257: For general bisynchronous communications (the kind we've been talking
258: about), two synchronous modems are necessary, one on each end of the
259: communications line. They must be compatible or communications are
260: not likely to be successful. "Compatible" refers primarily to their
261: speed and type. If they are of the same manufacture and model, chances
262: are that they're of compatible types. Some of the most popular modems
263: are manufactured by Bell Telephone, and several companies manufacture
264: modems which are Bell-compatible, but not all modems are.
265: You should check
266: that the modems you intend to use are compatible before you install
267: anything.
268: .LP
269: There are three types of synchronous modems supported by this software
270: and manufactured by Bell Telephone \(em the 201C, 208B, and 209A models.
271: 208B is a 4800 baud modem which must be used only with very good phone
272: lines \(em you can't just plug it into a wall and expect it to transfer
273: perfect data over noisy or long distance lines.
274: The same goes for the 209A, 9600 baud modem.
275: The 201 is less fussy, and also slower.
276: It can transmit and receive data at either 2000
277: or 2400 baud over most telephone lines.
278: .NH 2
279: Types of Phone Lines
280: .LP
281: Telephone signals traveling over the wires tend to degrade after only
282: few thousand feet or so. They must either be amplified at regular
283: intervals or reconstructed completely so that they aren't lost.
284: .LP
285: There are two types of phone lines: voice grade,
286: and data (digital) grade.
287: .I "Voice grade"
288: lines have amplifiers every
289: few thousand feet or so which boost the signal and send it along to
290: the next amplifier. This method works quite well, although the amplifier
291: amplifies any noise which exists on the line along with the signal
292: (that's why long distance lines are usually noisy). The data signals on
293: .I "data grade"
294: lines are reconstructed
295: completely. Any noise which exists on a line when the signal arrives
296: at a reconstruction station is eliminated, resulting in more error-free
297: transmissions.
298: .LP
299: Voice grade lines work well enough for humans, who can usually reconstruct,
300: through context, any part of a word lost due to noise on a phone line.
301: Since computers don't recognize things like context when they're transferring
302: bits across the miles, and since thousands of bits can be lost at
303: 4800 baud in the time it takes to lose part of a word on a voice-grade
304: line, data grade lines are usually the best bet for long-distance
305: data transmission. Data lines are available in and between many larger
306: cities (check your telephone representative).
307: .NH 2
308: Switched Lines
309: .LP
310: Switched lines are the conventional phone lines you use every day.
311: They can be
312: .I switched
313: to reach any number of locations, based on the
314: number you dial when you pick up the phone.
315: .NH 2
316: Leased Lines
317: .LP
318: Leased lines are lines which are privately leased from the phone
319: company for use exclusively between two locations. They're also called
320: direct-connect lines, since they connect two points directly \(em no
321: switching is involved. When you pick up a phone which is on a leased
322: line, you won't get a dial tone \(em you'll get the other end immediately.
323: In fact, some installations don't even use a phone with their leased
324: lines.
325: .LP
326: Leased lines are particularly useful for finicky modems like the
327: Bell 208B and 209A, neither of which can handle noisy lines very well.
328: You can't guarantee the quality of a conventional telephone line since
329: you're never sure exactly which one you'll be getting when you dial.
330: But the leased line is, for all practical purposes, yours. You
331: can attempt to make it is as reliable as possible by having it "conditioned."
332: .LP
333: Conditioning is a method the phone company uses to reduce the likelihood
334: of errors by "tuning" a line for a modem. There are different kinds
335: of tuning. The kind you need for your modem will be specified by
336: its manufacturer; check the modem's user manual. Conditioning lines
337: is usually expensive, but the reliability which results from having
338: it done is worth considering.
339: .NH
340: Cables
341: .LP
342: No hardware will ever consent
343: to speak to any other hardware unless it has a suitable cable through
344: which to speak.
345: The 25 pins present on a standard, RS-232 cable each have
346: a special function. The ones in which we're most interested are:
347: .TS
348: center,box;
349: c|c
350: n|l.
351: Pin # Description
352: _
353: 2 Transmitted data (TD)
354: 3 Received data (RD)
355: 4 Request to send (RTS or RS)
356: 5 Clear to send (CTS or CS)
357: 6 Data set ready (DSR or MR)
358: 7 Signal ground
359: 8 Carrier detect (RLSD or CD)
360: 15 Transmit signal timing (TxC)
361: 17 Receive signal timing (RxC)
362: 20 Data terminal ready (DTR or TR)
363: .TE
364: .LP
365: Straight-through cables, in which every wire goes from a specific
366: pin number on one end to the same specific pin number on the other
367: end, are usually just fine for connecting modems to computers. If
368: the distance from computer to modem is short (10 feet or so), the
369: inexpensive flat ribbon cables will usually suffice. Regular asynchronous
370: terminal cables don't work so well because they usually lack connections
371: for pins 15 and 17, which the modem uses to provide transmit and receive
372: signal clocking (one bit of data is transferred per clock tick), and
373: because some of the pins on some terminal cables are wired through to different
374: pins; they sometimes aren't just straight-through cables.
375: .LP
376: .TS
377: center;
378: c s s
379: c s s
380: c c c
381: l c l.
382: .B
383: Common Computer-to-Asynchronous-Terminal
384: Cable Pin Connections
385: .R
386: Computer Async Terminal
387: _ _
388: TxD 2 -------> 3 RxD
389: RxD 3 <------- 2 TxD
390: RTS 4 -------> 8 DCD
391: *DSR 6 <------- 20 DTR
392: GND 7 <------> 7 GND
393: DCD 8 <------- 4 RTS
394: DTR 20 -------> 6 DSR
395: .TE
396: .LP
397: *often ignored
398: .TS
399: center;
400: c s s
401: c s s
402: c s s
403: c c c
404: l c l.
405: .B
406: Common Computer-to-Modem
407: Cable Pin Connections
408: (straight-through cable)
409: .R
410: Computer Modem
411: _ _
412: TxD 2 -------> 2 TxD
413: RxD 3 <------- 3 RxD
414: DCD 8 <------- 8 DCD
415: TxC 15 <------- 15 TxC
416: RxC 17 <------- 17 RxC
417: .TE
418: .LP
419: You should be sure that the cables you intend to use to connect computers,
420: modems, and terminals have the correct pin configurations.
421: .NH
422: Cable, Modem, and Phone Line Related Problems
423: .LP
424: Most problems in this section are caused by modem incompatibilities
425: or conflicts in data transmission codes or speeds. Some are due to
426: unusually noisy phone lines and are remedied simply by hanging up
427: and dialing again. Check the symptoms listed for the problem which
428: most closely resembles the one you're having, and follow the procedure
429: outlined.
430: .LP
431: Many of these situations are easier to check out if you're using
432: the monitor/trace facility (to be discussed). It allows you
433: to see what's happening on your end of the line. e.g. repeated enquiry
434: attempts, trying to send the same file over and over, NAKs, etc. all
435: appear in the trace quite clearly. If you're not sure exactly which
436: problem you're suffering from, use the monitor/trace facility in conjunction
437: with your other troubleshooting to help you determine what ails the
438: communications line.
439: .NH 2
440: When All Is Well, It Looks Like This
441: .LP
442: When everything is going well during a communications session with
443: a remote computer, certain lights on the modem go on:
444: .IP 1. 4
445: TR (Computer ready) when the bisync device has been opened
446: .IP 2.
447: MR (Modem ready) when the phone line connection has been
448: established
449: .IP 3.
450: RS (request to send), CS (clear to send), TD (transmit data) blinks
451: while transmitting
452: .IP 4.
453: CD (carrier detect), RD (receive data) blinks
454: while receiving
455: .LP
456: The TD and RD lights should be blinking on and off alternately as
457: communications continue; they're your primary indications that everything
458: is okay.
459: .NH 2
460: Modem Hangs Up Without Connecting
461: .LP
462: To connect with a remote computer, the modem needs to detect DTR (data
463: terminal ready). This is turned on by the computer when the
464: bisync device is opened; you'll see the TR light turned on. If the
465: modem doesn't detect DTR and the phone rings, it won't answer. If
466: there is no DTR and you try to connect after dialing by pressing the
467: DATA button (or such like), the modem won't hold the line; it will
468: hang up. What probably happened is the daemon wasn't able to open
469: the communications device; you should be sure that you're running
470: the correct operating system and that the proper entries have been
471: made in dfile, config, etc. Check the AUDIT trail via
472: .I bsclog,
473: and perhaps your cables to the modem.
474: .NH 2
475: Connection Made, But Nothing Transmits
476: .LP
477: To transmit, the transmit clock signal must be received by the computer.
478: One bit transmits per clock tick. If nothing goes out for 15 seconds,
479: there's a problem. Check the following possibilities:
480: .IP \(ci
481: LP
482: Synchronous modem being used?
483: .IP \(ci
484: Is the modem set up to generate a transmit clock?
485: Most modems have a (seldom used) option to allow the computer
486: (referred to as a DTE in most modem publications) to generate
487: this clock. The modem must be set up to provide this clock
488: signal on pin 15.
489: .IP \(ci
490: Is your computer system set up properly for synchronous communications?
491: Some require an internal jumper change to switch it from asynchronous
492: to synchronous mode.
493: .IP \(ci
494: Check the cable going from the modem to the computer; does
495: it have pins 15 and 17 on it as required?
496: .NH 2
497: Transmit Looks Fine, But Nothing's Received On Remote End
498: .LP
499: When the TD light appears at your modem, your computer is trying to
500: send. The modem at the other end of the connection should light RD
501: (receive data) at this time. If it doesn't, there's serious trouble.
502: You should check that the signal is strong enough. Some modems have
503: a signal quality indicator which lights when the signal is good.
504: Ask someone on the receiving end to check this. If the modem doesn't
505: have this indicator, try hanging up and calling again in a minute
506: or so.
507: .NH 2
508: You Aren't Receiving, or They Aren't Receiving
509: .LP
510: If the TD indicator is blinking about once every one to three seconds
511: and the session seems to be taking much too long (you may get an "NBID
512: limit exceeded" reason for transmit abort), or the remote computer
513: is sending (the RD indicator is blinking) but you aren't
514: receiving anything (trace shows nothing), check the following:
515: .IP \(ci
516: Make sure that the modems are set to the same speed and are compatible.
517: The 201 modem type usually has two speed capability, set by internal
518: jumpering.
519: .IP \(ci
520: Check that they're transferring data in the same transmission
521: code \(em both should be communicating in
522: .I either
523: ASCII or EBCDIC.
524: .LP
525: One hint: if the phone line you're using is a switched line and you
526: got the electronic tone indicating connection, the remote computer
527: is
528: .I probably
529: up. It's not easy to tell whether the remote computer
530: is up or not when you're going over a leased line, since you don't
531: dial the remote site; you need to call the site and check.
532: .NH 2
533: Too Many NAK'ed Data Transfers
534: .LP
535: Modems must be tuned to each other, or "equalized", to achieve communications
536: sessions as error-free as possible. If the modems aren't equalized,
537: an unusually high percentage of data transfers will be NAK'ed (not
538: acknowledged). If this occurs, the modems probably don't match, or
539: if a switched line is being used, the connection may be poor.
540: Hang up and
541: re-connect.
542: .NH 2
543: Additional Notes \(em What To Do If Re-Dialing Doesn't Work
544: .LP
545: The liklihood of getting a bad line on a conventional switched phone
546: line arrangement increases during peak line use times: 11 a.m. to
547: 12 p.m. and 1 p.m. to 3 p.m., so it's best to try to avoid communications
548: at those times. There's more of a spread if you're trying to dial
549: across time zones.
550: .LP
551: If repeated re-dialing doesn't seem to fix anything, there's a possibility
552: that the modem isn't working correctly. Perform some of the modem
553: tests recommended by the manufacturer (these tests should be described
554: in the modem manual):
555: .IP \(bu
556: Self-Test
557: .IP
558: In this test, the modem transmits of data bits in a recognizable
559: pattern to itself. Something's definitely wrong with the
560: modem if it can't recognize the pattern.
561: .IP \(bu
562: Error Testing
563: .IP
564: If the self-test checked out alright, you'll want to test the
565: path from your site to the remote site. Have the people at
566: the remote site put their modem into loop-back mode so that
567: everything you send out comes right back to you.
568: .IP
569: If the data
570: you send out comes back intact, have the people at the remote
571: site run the same test on their modem.
572: .IP
573: If this test fails for both your modem and the remote modem,
574: and the modems are truly compatible, the phone line is probably
575: at fault. If this is a leased line, check with the phone
576: company. If this test was successful, you'll have to do some
577: fooling around with the modems; try only transmitting from
578: your end to their end, or adjust transmission or reception
579: parameters on the modems to see if anything helps.
580: .IP
581: If only one modem has a problem, suspect that modem. Try
582: connecting to other sites with it, or call your modem repair
583: facility.
584: .IP \(bu
585: If All Tests Were Successful...
586: .IP
587: The problem is likely to be in transmission codes, protocol, or the
588: remote computer just doesn't want to talk to you.
589: .NH
590: The Monitor/Trace Facility \(em bscmon and bsctrace
591: .LP
592: When problems arise on a communications line, it's convenient to able
593: to monitor it and display exactly what's happening.
594: .LP
595: There are two BSC utilities which are used to troubleshoot communications
596: lines --
597: .I bscmon,
598: which monitors the communications link, and
599: .I bsctrace,
600: which interprets the monitored information and displays it in a readable
601: format. This section explains how
602: .I bscmon
603: and
604: .I bsctrace
605: work, how to
606: invoke them, and how to use the information they provide about the
607: communications link.
608: .NH 2
609: Terminology
610: .IP \(bu
611: Protocol State/State Transitions
612: .IP
613: A communications protocol may be defined as a set of states and transitions
614: to be made to other states, depending upon events such as data received.
615: The protocol state changes constantly as communications progress;
616: a separate state is defined for each kind of data transfer, errors
617: encountered, and protocol-related decisions. These changes, called
618: .I transitions,
619: indicate what sort of actions are being taken on the
620: communications link. A protocol state
621: diagram for Bisync is part of the
622: .I bscmon(8)
623: documentation.
624: .IP \(bu
625: Trace Device
626: .IP
627: This is a read-only pseudo-device. The Bisync driver will place information
628: on its state transitions into a buffer while the trace
629: device is open. When a read is done on the trace device, the driver
630: will transfer the buffered information to it. Because there's only so much
631: room in the trace buffer, it's fairly easy to overrun it. The best
632: way to minimize this is to have
633: .Ibscmon's
634: output go directly to a file
635: for processing by
636: .I bsctrace
637: later on, rather than piping its output
638: to bsctrace immediately (see bscmon(8)).
639: .IP \(bu
640: Trace Packet
641: .IP
642: A
643: .I
644: trace packet
645: .R
646: is a unit of information provided to
647: .I bscmon
648: by the
649: trace device which contains information about the state of the line
650: at a particular point in time, and optionally, data which was transferred
651: at that time. The format of this packet is defined in
652: .I /usr/include/bsctr.h.
653: .NH 2
654: How They Work
655: .LP
656: Once invoked,
657: .I bscmon
658: opens the trace device (usually
659: .I /dev/bsctr)
660: and tries to read from it. As soon as there are packets to read,
661: it records the communications state transition information and,
662: optionally, the data transferred, either to a user-specified file
663: or to standard output. Recording continues until communications end
664: (/dev/bsc is closed).
665: .LP
666: .I Bsctrace
667: takes the output from
668: .I bscmon,
669: accessing either the user-specified
670: file or standard input (via a pipe from
671: .I bscmon)
672: and interprets each trace packet.
673: It examines each trace packet's contents and displays
674: what it finds in report format. If the user specifies that
675: explanations of the state transitions from packet to packet are desired,
676: .I bsctrace
677: interprets the meaning of each transition and displays a brief
678: explanation along with the other information. It continues to display
679: the report until it reaches end of file.
680: .NH 2
681: About Communications States and their Transitions
682: .LP
683: States come in several types: send, receive, function, decision, error,
684: and trace overruns (the trace device is sending more packets than
685: .I bscmon
686: can handle), and message class, e.g., acknowledge message, enquiry,
687: or receive timeout.
688: .NH 2
689: Invocation
690: .LP
691: There are two ways to use
692: .I bscmon
693: and
694: .I bsctrace:
695: separately, e.g. running
696: .I bscmon
697: and saving its output in a file, then running
698: .I bsctrace
699: at another
700: time so that information may be checked in a leisurely way, or to
701: pipe
702: .I bscmon's
703: output directly to
704: .I bsctrace
705: as communications are taking
706: place for immediate interpretation. As soon as the communications line becomes
707: active,
708: .I bscmon
709: will begin copying buffered information from the trace device.
710: .LP
711: Their command syntax is as follows:
712: .DS
713: bscmon [\(emdata] [\(emhost=<hostname> \||\| \(emdev=<devname>] [file]
714: bsctrace [\(emdata=<code>] [\(emverbose] [file]
715: .DE
716: .LP
717: As usual, items enclosed in square brackets are optional. Items
718: enclosed in angular brackets will be substituted by actual value.
719: The vertical bar, "\||\|", indicates a choice of options \(em either may
720: be specified, but not both.
721: .NH 3
722: Bscmon's Options
723: .IP \(bu
724: \(emdata
725: .IP
726: Specifying
727: .I \(emdata
728: in the
729: .I bscmon
730: command line indicates to the daemon's
731: driver that you want to look at the actual data which is being transferred.
732: If all you want to check are the protocol items like NAK's and ENQs
733: and whether you're receiving anything, you don't need to specify this
734: option; it'll just slow the monitor down and increase the risk of
735: trace buffer overrun.
736: .IP \(bu
737: \(emhost=<hostname>
738: .IP
739: If this option is specified,
740: .I bscmon
741: will look in the host configuration
742: file
743: .I (/usr/lib/bscbatch/<hostname>)
744: for the parameter
745: .I DEVICE=<devname>.
746: When it finds it, it'll open
747: .I <devname>
748: with "tr" appended rather than
749: .I /dev/bsctr.
750: .IP \(bu
751: \(emdev=<devname>
752: .IP
753: This tells
754: .I bscmon
755: what device to open.
756: This option cannot be specified if the
757: .I -host
758: option has been specified.
759: .IP \(bu
760: file
761: .IP
762: If
763: .I file
764: is specified,
765: .I bscmon
766: will write its output to
767: .I file.
768: Otherwise, it's written straight to standard output. That's fine for a pipe
769: to
770: .I bsctrace,
771: but you may not want the output on your terminal as it's
772: binary data.
773: .NH 3
774: Bsctrace Options
775: .IP \(bu
776: \(emdata=<code>
777: .IP
778: If this option is specified,
779: .I bsctrace
780: will assume two things: that
781: .I bscmon
782: was called with the
783: .I \(emdata
784: option, and that you want the
785: transferred data to be displayed in
786: .I <code>
787: display style.
788: .I <Code>
789: may be ASCII, EBCDIC, or HEX (short for hexadecimal). Only one code display
790: style may be specified per monitor/trace invocation.
791: .IP \(bu
792: \(emverbose
793: .IP
794: This option tells
795: .I bsctrace
796: to display brief explanations of the
797: state transitions. This option is extremely useful, especially to
798: those who don't have a BSC state diagram etched in their memories.
799: It does slow the trace display down, however, increasing the possibility
800: of overruns and lost trace data if you are piping
801: .I bscmon's
802: output directly to
803: .I bsctrace.
804: Again, if you're worried about this, you can
805: use
806: .I
807: bscmon's
808: file
809: .R
810: option to save the monitor's output and run
811: .I bsctrace
812: on the file with the
813: .I \(emverbose
814: option later on.
815: .IP \(bu
816: File
817: .IP
818: If you saved
819: .I bscmon's
820: output to a file, you can tell
821: .I bsctrace
822: to interpret
823: the trace information in that file by specifying its name here.
824: .NH 2
825: Sample Invocations
826: .LP
827: Suppose that you were terribly concerned about overworking the trace
828: device, so you wanted to run the monitor separately from the trace,
829: saving its output in a file named mon.out. Just type:
830: .DS
831: bscmon mon.out
832: .DE
833: .LP
834: Further, suppose that when the communications session is over, you
835: want to look at mon.out and have brief explanations of the state
836: transitions. Type:
837: .DS
838: bsctrace \(emverbose mon.out
839: .DE
840: .LP
841: Or, suppose that you'd like to see what's happening on the line as
842: it's happening, perhaps as part of your installation process to be
843: sure that everything is going well. Type:
844: .DS
845: bscmon | bsctrace \(emverbose &
846: .DE
847: .LP
848: This will cause the monitor to start up in the background. As soon
849: as the daemon begins to work,
850: .I bsctrace's
851: formatted interpretation
852: of the state transitions will begin to display on the terminal.
853: .LP
854: If you'd like to see what the transferred data looks like, just to
855: be sure that you aren't sending or receiving garbage, and you have
856: a particular trace device that you'd like to use named /dev/bsc02tr,
857: try typing:
858: .DS
859: bscmon \(emdata \(emdev=/dev/bsc02tr mon.out
860: .DE
861: .LP
862: Let's say that you're transmitting to remote host 3780. You're not
863: sure which trace device to use, but you know the bsc device is in the
864: 3780 host configuration file.
865: Further, you want to see the data, and you don't
866: care about trace device overruns, so you want to display it in EBCDIC
867: as you go. Type:
868: .DS
869: bscmon \(emdata \(emhost=3780 | bsctrace \(emdata=EBCDIC \(emverbose
870: .DE
871: .NH 2
872: Sample Output
873: .LP
874: While you're looking at the sample output from
875: .I bscmon
876: and
877: .I bsctrace,
878: try following along using the BSC state diagram, then read the session
879: narrative which follows. You'll get a pretty good idea of how the
880: BSC communications protocol works by doing so.
881: .LP
882: When you start communicating with a remote host, try running the monitor
883: and trace facilities and study the output.
884: .NH 3
885: A Communications Session
886: .LP
887: In this session,
888: .I bscmon
889: was piped directly to
890: .I bsctrace,
891: which was
892: running with the
893: .I -verbose
894: option.
895: .LP
896: The following trace types appear:
897: .DS
898: d - decision state
899: s - send state
900: r - receive state
901: c - message class just received
902: o - trace overruns
903: f - function state
904: e - error state
905: .DE
906: .ta 10 20 30
907: .DS
908: BSC State Trace Report
909: 05/31/83
910: ---------------------------------------------------------------------------
911: Time |State | Type | Message
912: ---------------------------------------------------------------------------
913: 09:57:09 | 0 | d |
914: 09:57:09 | 1 | d | Start - Point-to-Point
915: 09:57:11 | 1 | d | Idle
916: 09:57:11 | 2 | s | Initial write system call - send line contention b
917: | | | id (ENQ)
918: 09:57:11 | 3 | r | Wait bid acknowledgement (ACK-0)
919: 09:57:11 | 7 | c | Even acknowledgement
920: 09:57:11 | 4 | d | Bid acknowledged - check host id
921: 09:57:11 | 5 | d | Host ok
922: 09:57:11 | 6 | s | Send text block
923: 09:57:11 | 2 | o | Trace overruns: 2
924: .DE
925: .DS
926: BSC State Trace Report
927: 05/31/83
928: ---------------------------------------------------------------------------
929: Time |State | Type | Message
930: ---------------------------------------------------------------------------
931: 09:57:11 | 7 | r | Wait text ACK
932: 09:57:11 | 8 | c | Odd acknowledgement
933: 09:57:11 | 8 | d | Text acknowledged
934: 09:57:11 | 9 | f | Correct ACK
935: 09:57:11 | 29 | e | Last text block - send EOT
936: 09:57:11 | 13 | s |
937: 09:57:11 | 0 | d | Send EOT, restart from beginning
938: 09:57:11 | 1 | d | Start - Point-to-Point
939: 09:57:12 | 1 | d | Idle
940: 09:57:12 | 30 | r | Initial read system call
941: 09:57:19 | -1 | c | Receive timeout
942: 09:57:19 | 30 | r | ** No bid received - try again
943: 09:57:27 | -1 | c | Receive timeout
944: 09:57:27 | 30 | r | ** No bid received - try again
945: 09:57:34 | -1 | c | Receive timeout
946: .DE
947: .DS
948: BSC State Trace Report
949: 05/31/83
950: ---------------------------------------------------------------------------
951: Time |State | Type | Message
952: ---------------------------------------------------------------------------
953: 09:57:34 | 30 | r | ** No bid received - try again
954: 09:57:36 | 0 | c | Enquiry message
955: 09:57:36 | 31 | f | ENQ received - set odd block expected, even acknow
956: | | | ledgement (ACK-0)
957: 09:57:36 | 32 | d | Check Receive buffer availability
958: 09:57:36 | 35 | s | Receive buffer available - send block acknowledgem
959: | | | ent (ACK0/1)
960: 09:57:37 | 36 | r | Wait for text block (ETB or ETX)
961: 09:57:37 | 4 | c | Text block - not last of series
962: 09:57:37 | 37 | d | Text block received - check CRC/LRC
963: 09:57:37 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
964: | | | dgement (ACK0/1)
965: 09:57:37 | 32 | d | Receive buffer unavailable - delay and retry
966: 09:57:37 | 35 | s | Receive buffer available - send block acknowledgem
967: | | | ent (ACK0/1)
968: .DE
969: .DS
970: BSC State Trace Report
971: 05/31/83
972: ---------------------------------------------------------------------------
973: Time |State | Type | Message
974: ---------------------------------------------------------------------------
975: 09:57:37 | 36 | r | Wait for text block (ETB or ETX)
976: 09:57:37 | 4 | c | Text block - not last of series
977: 09:57:37 | 37 | d | Text block received - check CRC/LRC
978: 09:57:37 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
979: | | | dgement (ACK0/1)
980: 09:57:38 | 32 | d | Receive buffer unavailable - delay and retry
981: 09:57:38 | 35 | s | Receive buffer available - send block acknowledgem
982: | | | ent (ACK0/1)
983: 09:57:38 | 36 | r | Wait for text block (ETB or ETX)
984: 09:57:38 | 4 | c | Text block - not last of series
985: 09:57:38 | 37 | d | Text block received - check CRC/LRC
986: 09:57:38 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
987: | | | dgement (ACK0/1)
988: 09:57:38 | 32 | d | Receive buffer unavailable - delay and retry
989: .DE
990: .DS
991: BSC State Trace Report
992: 05/31/83
993: ---------------------------------------------------------------------------
994: Time |State | Type | Message
995: ---------------------------------------------------------------------------
996: 09:57:38 | 35 | s | Receive buffer available - send block acknowledgem
997: | | | ent (ACK0/1)
998: 09:57:38 | 36 | r | Wait for text block (ETB or ETX)
999: 09:57:38 | 4 | c | Text block - not last of series
1000: 09:57:38 | 37 | d | Text block received - check CRC/LRC
1001: 09:57:38 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
1002: | | | dgement (ACK0/1)
1003: 09:57:39 | 32 | d | Receive buffer unavailable - delay and retry
1004: 09:57:39 | 35 | s | Receive buffer available - send block acknowledgem
1005: | | | ent (ACK0/1)
1006: 09:57:39 | 36 | r | Wait for text block (ETB or ETX)
1007: 09:57:39 | 4 | c | Text block - not last of series
1008: 09:57:39 | 37 | d | Text block received - check CRC/LRC
1009: 09:57:39 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
1010: | | | dgement (ACK0/1)
1011: 09:57:39 | 32 | d | Receive buffer unavailable - delay and retry
1012: 09:57:39 | 35 | s | Receive buffer available - send block acknowledgem
1013: | | | ent (ACK0/1)
1014: 09:57:39 | 36 | r | Wait for text block (ETB or ETX)
1015: 09:57:39 | 4 | c | Text block - not last of series
1016: 09:57:39 | 37 | d | Text block received - check CRC/LRC
1017: 09:57:39 | 32 | d | Correct CRC/LRC - flip expected block and acknowle
1018: | | | dgement (ACK0/1)
1019: .DE
1020: .DS
1021: BSC State Trace Report
1022: 05/31/83
1023: ---------------------------------------------------------------------------
1024: Time |State | Type | Message
1025: ---------------------------------------------------------------------------
1026: 09:57:40 | 32 | d | Receive buffer unavailable - delay and retry
1027: 09:57:40 | 35 | s | Receive buffer available - send block acknowledgem
1028: | | | ent (ACK0/1)
1029: 09:57:40 | 36 | r | Wait for text block (ETB or ETX)
1030: 09:57:40 | 9 | c | Temp. transmit delay
1031: 09:57:40 | 36 | r | Wait for good text block
1032: 09:57:47 | -1 | c | Receive timeout
1033: 09:57:47 | 36 | r | ** Timeout - keep waiting for text block
1034: 09:57:47 | 3 | c | Text block - last of series
1035: 09:57:47 | 37 | d | Text block received - check CRC/LRC
1036: 09:57:47 | 39 | s | ** Incorrect CRC/LRC - send NAK and count as tempo
1037: | | | rary error
1038: 09:57:47 | 36 | r | Wait for good text block
1039: 09:57:55 | -1 | c | Receive timeout
1040: 09:57:55 | 36 | r | ** Timeout - keep waiting for text block
1041: 09:58:02 | -1 | c | Receive timeout
1042: 09:58:02 | 36 | r | ** Timeout - keep waiting for text block
1043: 09:58:10 | -1 | c | Receive timeout
1044: 09:58:10 | 36 | r | ** Timeout - keep waiting for text block
1045: 09:58:17 | -1 | c | Receive timeout
1046: 09:58:17 | 36 | r | ** Timeout - keep waiting for text block
1047: 09:58:25 | -1 | c | Receive timeout
1048: 09:58:25 | 36 | r | ** Timeout - keep waiting for text block
1049: 09:58:32 | -1 | c | Receive timeout
1050: 09:58:32 | 36 | r | ** Timeout - keep waiting for text block
1051: 09:58:40 | -1 | c | Receive timeout
1052: 09:58:40 | 36 | r | ** Timeout - keep waiting for text block
1053: 09:58:47 | 47 | e |
1054: 09:58:47 | 0 | d |
1055: 09:58:47 | 1 | d | Start - Point-to-Point
1056: .DE
1057: .NH 3
1058: Session Narrative
1059: .LP
1060: This session starts out normally, with an enquiry (ENQ, the bid for
1061: control of the line). The host returns the expected acknowledgement,
1062: an ACK-O, and we send a block of text. The trace overruns aren't
1063: a problem, really; we just missed some data. The host again returns
1064: the expected acknowledgement, an ACK-1 this time. We've sent the
1065: last block of the file and have no more files to send, so we send
1066: an EOT to the host, go back to the start, and indicate that we're
1067: ready to receive. We continue trying to receive an ENQ from the host
1068: until we get one (if we didn't get one, we'd time out). We acknowledge
1069: it with an ACK-O. We then check to be sure that we can receive, and
1070: since we can, we send another ACK. We receive a block of text, check
1071: that it's good, and acknowledge it when it proves to be. During this
1072: time, the host tries to send another block. We're busy, so we send
1073: the host a temporary transmit delay (TTD). The host tries again,
1074: we're ready this time, and we receive another block. This process
1075: continues until the host sends us a TTD, meaning that it isn't ready
1076: to transmit and we should wait. We do this by sending a non-acknowledgement
1077: (NAK), which is find in this case. We check that we haven't gone
1078: over the NAK limit. If we had, we'd abort this session due to errors
1079: on the line. As it is, when the host does send a text block, it isn't
1080: a good one. We NAK it and try to receive it again, to no avail.
1081: The host has stopped transmitting, so we time out and disconnect.
1082: .LP
1083: Normally, the host would continue transmitting to us until it had
1084: nothing to send. If we no longer had anything to send, either, we'd
1085: time out and disconnect.
1086: .FS
1087: DLBA Version 1.1
1088: .FE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.