Abstract:
Ring communication system using ISDN including terminal adapter hardware and associated software that can be combined with a general purpose computer and used to provide a work station or party unit which can be linked together with other similarly configured units via the ISDN to provide a closed wide area network. Although the system can be implemented on any type of computer using any programming language, in the preferred embodiment proprietary software designated WinISDN.DLL in a Microsoft Windows™ environment is used to implement a novel algorithm in Visual Basic or C-language programming systems. The hardware aspects of the invention are provided in a terminal adapter card that includes a dual port RAM, an ISDN controller, and a subscriber access controller. The adapter card plugs into the (E)ISA bus that is the PC standard bus/backplane.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates generally to communication networks having ring topology, and more particularly to a wide area network architecture using the ISDN system and having ring topology and startup procedure offering inherent security. 
     2. Brief Description of the Prior Art 
     The advantages of local area networks (LAN) for linking a plurality of work stations together in a ring topology are well known. However, there is currently no equivalent wide area network (WAN) having equivalent characteristics. Although work groups can be implemented in wide area networks using other topologies, such networks do not provide simple interconnections between parties which will allow any party to communicate with any other party without substantial restriction. Generally, any &#34;direct dialing&#34; technology will experience &#34;collisions&#34;. More specifically, if &#34;on-demand&#34; connections are attempted, there will be instances in which several parties will attempt to call a particular party. If more than two calls to the particular party occur at the same time, they will &#34;collide&#34;, and one or more will receive a &#34;busy&#34; signal from the switch, i.e., the call will fail. Even when two parties succeed in calling a third party, the third party is then prevented from communicating with any of the remaining parties for the duration of the two calls. 
     Prior art LAN technologies, both EtherNet and Token Ring, primarily depend on high-speed transmission over relatively short distances using shared media subject to collisions. EtherNet survives collisions by sensing them and retrying according to an appropriate algorithm. Token Rings avoid collisions by passing a &#34;token&#34; or &#34;permission to transmit&#34; Prior art WANs use modem technologies, or the equivalent, to maintain point-to-point links. In all cases, &#34;wide area&#34; equates to &#34;long lines&#34;, and the expense of the physical wiring media generally precludes multiple links, i.e., multiple wires. 
     ISDN technology, publicly deployed about 1990, offered two 64K data links over the same physical media. However, several factors prevented ring topologies from being used with the ISDN. First, available hardware and software did not support ISDN ring architecture. Second, habits of mind (and the availability of software based on COM ports) led most users to think of ISDN as simply a &#34;fast modem&#34;. This was evidenced by the fact that most manufacturers of ISDN terminal adapters for PCs offered neither voice support nor D-channel X.25 support, and offered, for the most part, only one B-channel of transfer capability. The few manufacturers that did offer two-channel capability almost universally treated the two B-channels as a way to achieve 128K transfers as opposed to two independent 64K data channels. Most ISDN applications have focused on point-to-point connections between two LANs (bridging), or between a user and a LAN, or a user and the Internet. For these and perhaps other reasons, no ISDN ring architecture has previously been implemented. 
     However, because the ISDN provides two independent B-channels of communication, as well as a third D-channel which can be used to establish communication links for the B-channels, the ISDN system offers a unique opportunity for implementation of a novel wide area network having ring topology. 
     SUMMARY OF THE PRESENT INVENTION 
     It is therefore a principal objective of the present invention to provide a novel method and apparatus by which a plurality of remote voice and/or data communication units can be linked together in a closed network. 
     Another objective of the present invention is to provide a method and apparatus of the type described which permits simple connection between all party units using the maximum bandwidth available in the Basic Rate ISDN. 
     Still another objective of the present invention is to provide a method and apparatus of the type described which provides a &#34;collision-free&#34; topology in which all party units can transmit and receive to and from any other party unit on the ring, subject only to the per-node buffering delays which are, for most purposes, negligible. 
     Yet another objective of the present invention is to provide a method and apparatus for implementing a novel wide area network having a high level of security. 
     Briefly, a preferred embodiment of the present invention includes terminal adapter hardware and associated software that can be combined with a general purpose computer and used to provide a work station or party unit which can be linked together with other similarly configured units via the ISDN to provide a closed wide area network. Although the system can be implemented on any type of computer using any programming language, in the preferred embodiment proprietary software designated WinISDN.DLL in a Microsoft Windows™ environment is used to implement a novel algorithm in Visual Basic or C-language programming systems. These programming systems are preferred because they are probably the most widely used general purpose systems available on the 50 million+ IBM-PC-compatible computers that run Microsoft Windows™. The hardware aspects of the invention are provided in an interfacing terminal adapter card that includes a dual port RAM, an ISDN controller, and a subscriber access controller. The adapter card plugs into the (E)ISA bus that is the PC standard bus/backplane. 
     The key functions used to implement the algorithms are: 
     &#34;Listen --  for --  connection( )&#34;. . . (incoming on either B-channel), 
     &#34;Accept ( )&#34;. . . (Connection when incoming call detected), 
     &#34;CONNECT( )&#34;. . . (to next party in ring). 
     Using these function calls, each party unit in the ring can implement a Ring Startup Procedure that waits for an incoming call, determines whether to accept or reject the call, and if accepted, connects to the next node in the ring. The next node executes an identical Ring Startup Procedure using appropriate local values to validate/authenticate the incoming call. These functions are used to automatically link the ring network when the first call is transmitted by any one unit and received by a second unit. 
     An important advantage of the present invention is that, in contrast to the above-mentioned &#34;collision&#34; topologies, the present invention provides a &#34;collision-free&#34; topology in which all parties can transmit and receive to and from any other party on the ring, subject only to the per-node buffering delays which are for most purposes negligible. 
     Another advantage lies in the fact that fully linked rings cannot be penetrated since all B-channels of all units are busy. This security can be enhanced by other means, but the basic security associated with fully linked rings is inherent in the architecture. 
     Still another advantage of the present invention is that once the ring is linked, any party can &#34;broadcast&#34; to all other parties. However, the most useful communication scheme uses headers specifying the source and destination of each message. In this manner, each node can check the destination of every packet, and if the destination address matches the local address of the node (party), then the local node will remove the message from the ring and process the message. If the destination address is not equal to the local address, then the local node simply re-transmits the message on the other B-channel, i.e., the B-channel other than the one from which the message was received. 
     If the destination address has the value &#34;broadcast&#34; (customarily all &#34;1&#34;s in the destination field) and the source address is unequal to the local address, then the message is re-transmitted. When the source address equals the local address, the message has completed the circuit and is not re-transmitted, thus preventing endless looping. In this fashion any user/node on the ring can broadcast to all other users/nodes in a reliable, simple fashion. 
     These and other objects and advantages of the present invention will no doubt become apparent to those skilled in the art after having read the following detailed description of the preferred embodiment which is illustrated in the several figures of the drawing. 
    
    
     IN THE DRAWING 
     FIG. 1 is a diagram generally illustrating a network using an ISDN ring architecture in accordance with the present invention. FIG. 2 is a diagram schematically illustrating the principal components of a party unit and its connection to the ISDN in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The Basic Rate ISDN node connection provides two 64K-bit/sec bearer channels (B1 and B2) and a 16K-bit/sec signalling/data packet channel (D). The Basic Rate interface is called 2B+D. All three of the channels are orthogonal to each other, and each of the channels is synchronous and full duplex. As will be described below, these features allow for the provision of a unique ring architecture, as illustrated in FIG. 1 of the drawing. In essence, if N parties, e.g. party units 1, 2, . . . N illustrated in the drawing, possess Basic Rate interface equipment of the type to be described below, then party 1 can place a call using one of its B-channels (B2 1 , for example) to call party 2 on one of the B-channels of party 2 (for example, B1 2 ). Party 2 can then use its second B-channel (B2 2 ) to place a call into party 3 through its B1 3  channel, which in turn can use its second B-channel (B2 3 ) to call a fourth unit, et cetera, until party N uses its second B-channel (B2 N ) to call party 1 via its unused channel (B1 1 ), thereby closing the N-element ring. 
     Unlike local area network (LAN) &#34;TOKEN&#34; rings in which only one node/unit can use the ring at any given time, and a token is passed as a &#34;permission&#34; to use the ring, the above architecture allows all of the N parties to send and receive information simultaneously. In fact, all of the N parties can send in both directions, i.e., to each of its adjoining neighbors simultaneously. This of course requires buffering at each node. However, since all B-channel data communications require buffering, this is not an unusual constraint. 
     The Basic ISDN Ring Startup Algorithm is as shown below: 
     Begin --  Ring --  Startup 
     ISDN --  Open(ISDN --  board) 
     ISDN --  Listen --  for --  Connection(Call --  Structure, Event --  Structure) 
     ISDN Event Notification Handling 
     Incoming Call Validation Procedure 
     ISDN --  Accept(Call --  handle)  or Reject() and Re-Listen()! 
     ISDN --  Connect(Call --  Struct, Event --  Structure) 
     End --  of --  Ring --  Startup 
     All function names beginning with &#34;ISDN --  &#34; correspond to WinISDN function names. WinISDN is an ISDN software interface application produced by ISDN*tek of San Gregorio, Calif. The source code listings of WinISDN are given in the programmer&#39;s guide entitled &#34;Programmer&#39;s WinISDN SDK&#34; published by ISDN*tek of San Gregorio, Calif. The first function, ISDN --  Open(), specifies the ISDN terminal adapter board to be opened. This function prepares the system interrupt structure and allocates system memory, and defines the system addresses used by the unit&#39;s terminal adapter (as described below). The call returns success or error codes to the application attempting to &#34;open&#34; the ISDN board. 
     The next major operation involves the ISDN --  Listen --  for --  Connection() function which passes two structures to the WinISDN driver module. The first structure specifies the type(s) of calls to be listened for via a Listen --  Mask that contains a &#34;1&#34; in each location corresponding to a desired Call --  Type and a &#34;0&#34; in each location that corresponds to a Call --  Type to be rejected. Note that this mechanism is useful for security, as well as simply restricting the incoming call types to those to be used by the ring members. The event structure that is passed to the driver specifies the type of event notification mechanism to be used in reporting systems&#39; events such as an incoming call of a qualified type. WinISDN allows callbacks, polling, and Windows message passing, although other mechanisms are possible in other implementations. The ISDN --  Listen --  for --  Connection() call will return a Call --  Handle that is to be associated with the first incoming call that passes the Listen --  Mask filter. 
     The event notification handling procedure uses the appropriate method for the notification mechanism specified in the ISDN --  Listen --  for --  Connect() function call. The Windows™ operating system, like many others, is non-preempting, and therefore &#34;blocking&#34; function calls do not exist. (Note that OS/2™ uses preemptive multi-tasking, and an equivalent blocking algorithm based on threads has been implemented.) Blocking function calls &#34;put themselves to sleep&#34; and relinquish the system until the desired event &#34;wakes them up&#34;. Non-blocking functions must return immediately, because system resources are tied up while execution is in the function call. Since the events of interest in most WANs depend on the actions of remote parties, it is clear that an application cannot simply wait for an event, tying up system resources while waiting. Instead, the event notification mechanisms provide a means of re-invoking the function when the awaited event occurs, thereby effectively &#34;waking up&#34; the function and allowing it to perform the appropriate action or response. This is the rationale for the event notification handling procedure that is executed when the qualified incoming call arrives. 
     When the incoming call event occurs, the Ring Startup Procedure is notified and presented with an opportunity to validate the incoming call in terms of security, etc. There are numerous mechanisms possible for validating the incoming call, but most will be based either on communications from the switch, or communications from the incoming caller. For example, communications from the switch may include the incoming caller identification information element, while communications from the caller may include a unique serial number or other identifying means. The ISDN Ring Architecture does not depend on the details of the validation mechanism; indeed, there may be no validation performed in some cases. The details will depend upon the required security for a specific application of the ISDN Ring Architecture. 
     If the validation of the incoming call is positive, then the ISDN --  Accept() function call is made using the Call --  Handle returned by the Listen --  for --  Connection() function. If the incoming call fails the validation procedure, then ISDN --  Reject() should be called. 
     When the incoming call has been accepted (on one B-channel), the Ring Startup Procedure then issues an ISDN --  Connect() function call to the next neighbor in the ISDN Ring, based on whatever previously stored information about ring topology is available. At a minimum, this includes the ISDN directory number of the next ring member to be linked into the ring, and also the Call --  Type of the call to be used to link the member. (Obviously this Call --  Type must be acceptable to the next ring members Listen --  Mask or else the link will fail.) A Call --  Handle is returned when the function call succeeds. This handle will be used to identify events associated with this connection. Note that the return of the Call --  Handle does not indicate that the call is connected, only that the system has been prepared for the connection when the far end accepts the call. If the next ring member accepts the call, the specified event notification mechanism informs the system, and the current ring member is linked to two adjoining nodes in the ring topology. The next ring member, after accepting this incoming call, will place an outgoing call to the next member, and so on, until the last ring member calls the first, thereby completing the link. Note that each member will accept a call on one of its B-channels, and place a call on the other of its B-channels. This ring closure provides the inherent security discussed elsewhere. 
     Referring now to FIG. 2 of the drawing, details relating to the make-up of each terminal or party unit will be given. As generally depicted, each party unit 10 includes a general purpose computer 12, such as an IBM PC or compatible, having an interfacing terminal adapter card 14 (such as the Cyberspace Commuter Card manufactured by ISDN*tek, Inc. of San Gregorio, Calif.) plugged into its (E)ISA bus, signified by the dashed line 16. The adapter card 14 includes a subscriber access controller 18 (physical interface device, typically a Siemens PEB2085 or equivalent), an ISDN controller 20 (a Cybernetic Microsystems CY123), and a dual port RAM 22. Installed in computer 12 is a physical device driver, generally illustrated at 24, and a ring architecture application, generally illustrated at 26. The adapter card 14 communicates with the ISDN 30 by means of a network terminator or ISDN interface 32, typically an S/T or U interface, via an ISDN switch 34 that couples one of the B-channels (B1 1 ) of unit 10 to one of the B-channels (B2 N ) of a remote unit N, and connects the second B-channel (B2 1 ) to one of the B-channels (B1 2 ) of a party unit 2. 
     The Ring Startup Procedure begins when the ISDN switch 34 receives an incoming call on channel B2 N  sent by call signaling performed on a D-channel D N . If the application 26 of party unit 1 is &#34;Listening --  for --  Connection&#34; as is assumed in the Ring Startup Procedure, then the incoming call will be accepted. Note that the application 26 communicates with the ISDN switch 34 via the D-channel D 1  indicated at 36. The ISDN terminal adapter 14 connects to the ISDN Basic Rate interface {2B+D=(B1 1 )+(B2 1 )+(D 1 )} via the physical interface device 32. This device is controlled by the access controller 18 which handles the Q.921 protocols necessary to establish a data link with the switch, and the Q.931 network protocols that specify the communication over the data link. The ISDN controller 20 communicates with the device driver 24 via the dual port RAM &#34;mailbox&#34; 22, which is interfaced to the PC (E)ISA bus 16. All of these devices are described in more detail in my co-pending U.S. patent application entitled &#34;BYTE ALIGNED COMMUNICATIONS SYSTEM FOR TRANSFERRING DATA FROM ONE MEMORY TO ANOTHER MEMORY OVER AN ISDN&#34;, Ser. No. 08/370,965 filed Jan. 10, 1995, and expressly incorporated herein by reference. The driver 24 is the WinISDN.DLL (or .Vxd or .Obj or .Sys, etc., depending on operating system) manufactured by ISDN*tek, Inc., and runs on the IBM PC 12 or compatible, which directly communicates with the terminal adapter 14 across the (E)ISA bus 16. The WinISDN driver manages receive buffers Rx 1  and Rx 2 , and transmit buffers Tx 1  and Tx 2 . The buffers Rx 1  and Tx 1  hold data received from or sent to the B1 1  -channel, while the buffers Rx 2  and Tx 2  hold data received from and transmitted to the B2 1  -channel. 
     The ISDN ring architecture application 26 communicates with the driver 24 via an application programming interface (API) 40 which is preferably the WinISDN API manufactured by ISDN*tek, Inc. The Ring Startup Procedure performs the Listen --  for-connection() function call. When the incoming call on B2 N  arrives, the application issues the ACCEPT() function call. The ISDN switch 34 then connects B2 N  to B1 1 , establishing a 64K-channel from the caller to the application 26. The Ring Startup Procedure then performs a CONNECT() function call across the API 40, and the driver 24 causes the controller 20 to communicate with the ISDN switch 34 via the D-channel 36. The switch 34 then places the call to connect B2 1  to one of the channels B1 2  of a second party unit (unit 2, FIG. 1). When unit 2 accepts the call (using its own Ring Startup Procedure), the switch 34 connects B2 1  to B1 2  and alerts the application 26 via the D-channel 36, the controller 20 and the driver 24 event notification mechanism. 
     At this point, the three ring members (units N, 1 and 2) are interconnected. The application processes the full duplex data to and from the buffers Rx 1  and Tx 1  that is exchanged over the B2 N  -B1 1  connection to the ring member N and initiates the incoming call. The application also processes the full duplex data to and from buffers Rx 2  and Tx 2  that is exchanged over the B2 1  -B1 2  connection to the ring member (unit 2) that accepted the application&#39;s outgoing call. A data processing subsystem 42, forming a part of application 26, determines which data to transmit or re-transmit, and which to process locally, based on the destination and source addresses associated with the data, and on local control by the user or user agents associated with this ring member. 
     Each ring member implements a system equivalent to the above, thereby achieving a fully linked ISDN ring. When the ring is linked, all members can interact via two full duplex B-channels. Communications on the ring are achieved in the preferred implementation via two WinISDN function calls: ISDN --  READ() and ISDN --  WRITE(). Each function call passes a CALL --  HANDLE that is used to identify which of the two B-channels is to be used for the communications. The ISDN READ() also causes a buffer to hold the data read from the B-channel. The ISDN --  WRITE() passes a pointer to a data packet to be written into the appropriate B-channel. Note that, depending upon the call-type specified in the Ring Startup Procedure, the data may either be HDLC packets or may be streaming (byte-oriented) data. The WinISDN event notification mechanism allows the application program to be informed when data is available to be read, and similarly, when the transmit buffer is available for data to be written. This asynchronous event mechanism allows management of the buffers that hold data sent to and received from the synchronous 64K B-channels of the ISDN Basic Rate interface 32. 
     While the above scheme is sufficient for an ISDN Ring Architecture, it can be extended in many ways via the use of out-of-band X.25 communications. This disclosure does not detail these possible connections, but by implication, all such connections between ring members and/or non-ring members are included. 
     Although considerable emphasis has been placed on the inherent degree of security associated with a fully linked, closed ring, it is also possible to unlink the ring between two given ring members, and add a new ring member to the ring, with subsequent relinking to each on the unlinked members. Similarly, one member can unlink from one neighbor, then the other, and the two neighbors of the (now totally) unlinked member can then relink to each other. Thus one can easily add or drop members from an ISDN WAN Ring. The unlinking and relinking procedures can be accompanied by various security schemes; however, its main advantage may reside in its malleability. Members can be dropped from or added to work groups as conditions require. 
     Examples of applications of the architecture are: 
     1. Work groups (white board, etc.), 
     2. Multi-player games, 
     3. MIDI WAN &#34;bands&#34;, and 
     4. Distributed real-time control systems. 
     The fully linked feature of the ring architecture allows Ring Closure to be treated as a security firewall, i.e., as a means of preventing outside access to users on the ring. Once the ring establishes closure, there is no means to surreptitiously break the ring and enter the ring. This means that after a suitably secure ring closure is achieved, ring security is simple to maintain and monitor. Any break in the ring can be easily signalled to all remaining parties and the breach of ring security acted upon. Note that in addition to the natural closure afforded by the two B-channels, it is usually possible to subscribe to Basic Rate ISDN line translations that enhance the security of the ring. For example, &#34;Call Waiting&#34; is a feature that should not be subscribed to if security is to be maximized. 
     Via X.25 or other communication channels, the ring can be broken and healed by one party leaving, or by another party entering, the ring. Because the ring is a &#34;closed&#34; communication channel, it is preferred that the D-channel X.25 packets initiate and coordinate growth and shrinkage as members leave or are added to the group. Since this feature tends to violate the &#34;firewall&#34; aspect of ring closure, it should normally be accompanied by other compensating security features, such as might be obtained with individual security ID numbers, use of Caller ID, and any other appropriate measures. Note also that X.25 Closed User Groups offer significant secure facilities that can be used to maximize the safety of unlinking and relinking the ring. 
     The closed ring architecture is not intended to exclude other communication channels; for example, in addition to B-channel connectivity, the ring members may also communicate via X.25 packets on the D-channel. Some or all ring members may also possess secondary or other Basic Rate interface boards; i.e., any ring member may have access to more than two B-channels, thereby allowing a ring connection plus other B-channel connections. In any such extension the ring topology aspects of the system should take precedence over those features which allow the ring paradigm to be violated. 
     Although the present invention has been described above in terms of a specific embodiment, it is anticipated that alterations and modifications thereof will no doubt become apparent to those skilled in the art. It is therefore intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the invention.