[comp.dcom.modems] X.25, X.31 vs Q.921/Q.921 and Networking Style in General

martillo@athena.mit.edu (Yakim Martillo) (03/23/87)

I am working on getting a proprietary data communications system to
work over ISDN primary and basic rate interfaces.  The system was
originally designed to use only PSDN (PDNs) as the communications
subnet.  An end to end protocol was never designed so that individual
applications have their own end to end protocols.  Eventually, the
developers put the communications system over a proprietary token
ring and ethernet, as well as point to point leased lines.  

Since they wanted to modify the networking software as little as
possible, they basically used a slightly modified version of X.25
level 2 for the token ring and ran X.25 level 3 on top of it.  On
ethernet they substituted 802.3 for X.25 level 2 and ran X.25 level 3
on top of that.  And for point to point leased lines they run straight
X.25.  Of course, they had some sort of procedure whereby one party
becomes the DCE and the other party becomes the DTE.  Thus X.25 has
basically become the end to end transport protocol in the network
unless a PSDN is the communications subnet.

Now they want to put their network over ISDN using LAPD, LAPB, X.25
level 3, X.31 with Q.931/Q.921 signaling and I see problems with how
people use the X.25 family of protocols and what Q.931/Q.921 seems to
provide.  

Full Q.931 seems to allow for "hold" on a given CSC (Circuit-Switched
Circuit), and in fact I think I really want to do this because I could
easily see an individual user using 3 CSCs or more for a given session
(e.g. remote terminal session from A to B, while on B doing a remote
copy from C to B -- the user could easily be taking up 3 CSCs).  With
an average of 40 users on the machine with a full-blown remote file
system and RPCs (Remote procedure calls), I think it is fairly easy
for even a PRI to get fully loaded really fast, and I would want the
PBX to send indication of incoming calls even when there are no
available channels, so that the controller could put one call on-hold
and then accept the new call.  For outgoing, if there are no channels
available I would like to put one call on hold and then place the new
outgoing call, and then round-robin (with prioritization for calls
which have outgoing data) the calls on the available channels.

In the case of a (2B+D or 1B+D) BRI on a workstation, the scenario
described above becomes even more problematic.

The problem comes in with X.25 restart and rest procedures as outlined
in the redbook and as typically implemented.

Deasington says in X.25 Explained (p.52) says:

The restart procedure is used to ensure that both the DCE and DTE
consider that all the PVCs and SVCs are in a known state.  A restart
causes all PVCs to be reset and all SVCs to be cleared and free to be
used.  The Network level will need to be restarted if the Link level
has failed for some reason, for example the line between the DTE and
DCE was disconnected.  If the Link level has timed out and has been
restarted by the exchange of SABM, UA, etc., as previously described,
the Network level will be restarted by the DCE sending to the DTE a
Network level Restart Indication frame; in PSS the Restart Indication
frame will be sent to the DTE  at intervals of six seconds until a
Restart Confirmation is received.  The DTE may at any time transmit a
Restart Indication to the DCE if it needs to restart the Network level
completely, for example if it has completely lost track of the state
of the active SVCs.

According to the X.25 specification, resets should be generated on VCs
if data has been lost or a protocol error has occurred.

I have no problems with either restart or reset procedures as long as
disconnection of level 2 is not considered a protocol error because I
don't intend for my hosts to loose data in this case and I can set up
the following scenario:

1) non-alien host (i.e one of my hosts which form a part of my
   contractee's proprietary network) connects to non-alien host.

2) calling party exchanges XID with called party,
   establishes calling party as DCE and establishes
   automatic call-back in the event of disconnections while
   VCs are still active (sometimes CSCs just drop).

3) Level 2 gets connected.  DCE does a network level restart.

4) VCs get started and normal data communications proceeds.

5) Called party interface fills and incoming call arrives,
   Called party interface selects channel to put on-hold (probably
   least-recently used algorithm), and stat muxes the active calls
   among physical channels.  

6) Possibly, the level 2 of one of the calls on hold times out and
   becomes disconnected, when the call goes off-hold.

Now from the above in Deasington, apparently many automatically
restart the interface upon disconnection of the logical link under the
assumption this means the foreign interface had been turned off.  I
think in the case of hold this should be utterly unnecessary and the
level 2 should just be reconnected transparently to the level 3.

6) Alternatively, the call drops for unspecified reason, the DCE
replaces the call, reconnects the link-layer, but does not restart the
network interface.

7) Eventually the number of VCs on the link goes to zero.  Level three
on both hosts requests to controller to disconnect the logical level 2
and then to disconnect the call.

In the case of alien hosts who do not understand the proprietary
protocols, the alien host is always the DTE and the non-alien host is
always the DCE.  Hold and auto-redial could be negotiated in the XID
but I would tend to make the default to disallow hold and neither
expect nor perform auto-redial in case of disconnect but rather inform
level 3 of termination of level 2 so that the VCs could be abnormally
terminated from the host point of view.

When one of my hosts calls a PSDN or is called by a PSDN, the PSDN
would of course be the DCE while my (non-alien) host would be the DCE.
Procedures about hold and auto-redial would be negotiated with the
PSDN at subscription time and could be exchanged in the XID.

To me this all seems like a perfectly reasonable way to do data
communications via ISDN (I mean real resource sharing not kermit)
however all the network "experts" at my employer totally freaked at my
suggest and scenarios.

I would like opinions.  If you comment, I would be interested in your
background and experience because I guess I am conducting a survey and
I would like to have some sort of guide to weight opinions.  If you
prefer, you may send your comments to me by private mail at
		
			martillo@athena.mit.edu
			..!ihnp4!mit-eddie!athena!martillo

If there is desire, I can post the results to the net.

Yaqim Martillo

fair@ucbarpa.Berkeley.EDU.UUCP (03/23/87)

Do the obvious thing: chuck it all and use the DoD Internet Protocol
suite for this application. It is certainly clear that you need some
sort of transport that makes no assumption about the reliability of
the data link layers, and the X.* stuff doesn't seem to qualify.

	Erik E. Fair	ucbvax!fair	fair@ucbarpa.berkeley.edu

martillo@bacchus.UUCP (03/25/87)

In article <17977@ucbvax.BERKELEY.EDU> fair@ucbarpa.Berkeley.EDU (Erik E. Fair) writes:
>Do the obvious thing: chuck it all and use the DoD Internet Protocol
>suite for this application. It is certainly clear that you need some
>sort of transport that makes no assumption about the reliability of
>the data link layers, and the X.* stuff doesn't seem to qualify.

While I have enjoy Padlipsky's writing, you have missed the point (or
I have accidentally mislead you), the X.25, X.31, LAPD, Q.921/Q.931
suite of protocols is not comparable to TCP/IP but is rather
comparable to 1822. The ISDN switch is basically comparable to an IMP
(or PSN nowadays I guess).  One might argue about the virtual circuit
orientation of the X.25 but in fact an ISDN switch is much more
complicated than an IMP and you really need something more complex
than 1822.  As for the circuit orientation, from personal experience
in dealing with the FCC, I believe tariffing a reliable virtual
circuit access protocol in which the remote end point is specified is
much easier than tariffing an access protocol like 1822.  Of course,
the existence of a level 3 reset is relatively stupid in a virtual
circuit oriented access protocol, but the level 3 reset was *demanded*
by the PDNs because of the limitations of their switches.

Running TCP/IP on top of X.25 is just as reasonable as running TCP/IP
on top of 1822 but as far as the PTTs and the private long distance
carriers are concerned, they have no interest in an internetting layer
or a transport layer built on top of it.  A true internetting layer
makes tail-end-hop-off (popping in and out between public and private 
networks where the two end point are accessing the catenet via public
phone lines in order to decrease phone bills) and such a specification
will never come out of CCITT.  

Now the proprietary network on which I am working was developed before
the modern TCP/IP based Arpanet came into existence.  As I understand
it the pre-TCP/IP Arpanet basically used a predecessor of 1822 as an
end to end protocol, so that my contractee's decision to go with X.25
as the network communications protocol was not unreasonable especially
given that the major portion of their business is overseas where until
recently no one did TCP/IP.  Of course not learning anything from the
Arpanet experience is pretty close to criminal but the company is
being punished in its sales, so justice is being served.

Granted, there is no real reason to run X.25 on an unrestricted
digital 64kbps CSC bearer channel except that the CSC may equally
probably be going to a PSDN as to one of the proprietary network hosts
where one of the network hosts is acting as the DCE and pretends to be
a PSDN.  This is reasonable because if some other manufacturer
supports some service via a PSDN, my contractee can directly offer
that service to the other manufacturer's equipment because my
contractee's equipment can pretend to be a PSDN.

But my contractee is also trying to sell real data communications via
a ISDN-PBX-LAN and my feeling is that while the network hosts can
pretend to be PSDNs, among friends (non-alien hosts), the host that
pretends to be a DCE does not have to imitate the non-obligatory
procedures which PSDNs use like VC reset, some of the network-level
restarts, the various worthless level 3 DCE timers.

If they do complete imitation of the PSDN non-obligatory procedures, a
CSC based ISDN-PBX-LAN running the proprietary data communications
network should quite quickly become fragmented into topologically
disconnected islands of network connectivity with evil consequences
like dead-lock, loss of network services and inability to use to use
some of the niftier features of Q.921/Q.931 [of course maybe they are
trying to prevent the ultimate convergence of phone and computer
hacking :)].

I would really like some genuine X.25/PSDN expert to tell me my
suggestion is perfectly reasonable and is in fact the right way to do
data communications in the environment of a CSC based ISDN-PBX-LAN
using the X.25 suite of protocols.  Of course, if I am wrong I would
like to be told and be told why.  The network-export at my
contractee's has yet to show any understanding of data communications
at a level more sophisticated than that of a PAD.

Yaqim Martillo