Abstract:
A packet switching network supporting X-series protocol access employs PVC (Permanent virtual connection) trunks as the backbone trunks for the network.

Description:
FIELD OF THE INVENTION 
     This invention relates to a PVC backbone for packet switching networks capable of implementing CCITT X protocols, such as the X.25 protocol. 
     BACKGROUND OF THE INVENTION 
     The primary protocol to be implemented by the X.25 service is the X.25 CCITT standard, 1988 version. Other related protocols are X.75, X.32, and the &#34;triple X&#34; PAD (Packet Assembler-Dissembler) (X.3, X.28, X.29). 
     Until now, packet switches have been built on trunking and routing systems that use simple circuit switching or point-to-point data communications technologies. This provided no flexibility and control of the individual virtual circuits when parts of the backbone network became congested. 
     X.25 is an interface specification for statistically multiplexing several independent data streams onto common facilities. It uses a link layer based on HDLC frames, using LAPB between the DTE and the DCE. 
     An object of this invention is to provide an improved network supporting X-series packet and call protocol. 
     BRIEF SUMMARY OF THE INVENTION 
     Accordingly the present invention provides a packet switching network supporting X-series protocol access wherein PVC trunks are employed as the backbone trunks for the network. 
     The invention also provides a node for use in a data transmission system comprising a hardware platform having sufficient memory, processing power and fanout to support X-series protocol access; processing means providing support for HDLC and LAPB at the link level, and standard X-series packet and call-control protocol; a packet transport system for transmitting packets between data communications equipment (DCE&#39;s) with no errors, no loss and in-sequence; and a routing system to establish a virtual connection between DCEs within specified time limits, and maintain connectivity in the event of failures, errors and congestion. 
     Preferably, the node includes a management system that provides the configuration data for the above system, and integrated management services, a system for reliably gathering accounting data from the nodes, and a system for validating Network User Identifiers. 
     The X-series protocol may be X.25 operating at speeds of 9.6 K to T1/E1. 
     Each node that supporting X.25 has one or more X.25 Packet Engines. This Packet Engine supports X.25 interfaces to users on either its own access ports, or through subrate interfaces. The X.25 Packet Engines connect to other X.25 packet engines through frame relay PVCs. These PVCs terminate on software processes within the Packet Engines. They act as trunks over which the X.25 data packets are multiplexed by the X.25 transport and routing software on the Packet Engine. 
     This invention employs the frame relay protocol described in: ANSI T1.602, ANSI T1.606, ANSI T1S1/90-175, ANSI T1.617 - DSS 1, ANSI T1.618 - DSS1, CCITT Recommendation I.122, CCITT Recommendation Q.922, CCITT Recommendation Q.933. 
     The flow control procedures are based on CCITT Recommendation Q.922 and Frame Relay Forum Technical Committee Document Number FRFTC 92.15 &#34;Frame Relay X.25 Interworking Implementation Agreement.&#34; 
     The X.25 protocol is described in CCITT Recommendation X.25. 
     The invention still further provides a method of transferring data comprising receiving X.25 LAPB frames, characterized in that it comprises the steps of establishing a permanent virtual connection between data communications equipment (DCE&#39;s), encapsulating the X.25 LAPB frames into frame relay frames and attaching a DLCI identifier, transmitting the encapsulated frames over bewteen the DCE&#39;s over the PVC, and stripping off the frame relay header from the received encapsulated frames to restore the LAPB frames. 
     This invention overcomes the above difficulties experienced in conventional systems by using PVCs, for example frame relay PVC&#39;s, as the backbone trunks for a packet switching network. This allows the use of frame relay explicit congestion notification to individually flow control virtual circuits. By integrating the frame relay PVCs into a routing system that monitors the states of the PVCs and uses an OSPF-like (Open Shortest Path First) procedure to calculate paths over the PVCs, a more robust and reliable backbone network is created. This robustness is further enhanced by the use of the frame relay Explicit Congestion Notification bits, the techniques of Q.922, and the procedures in this invention to flow control the individual virtual circuits. 
     X.25 is the primary packet-switching protocol to be supported. The interface to the backbone is based on C language subroutine calls for virtual circuit setup, packet transfer and flow control, so any other packet oriented protocol (such as SNA) may be supported through this interface. 
     The memory required to handle the storage and buffer requirements is defined by the following formula. The formula is based on: (ports*LCNs*average packet size*average window size)+total software. 
     A real-time clock is required to provide accurate start and end times in the accounting records if the software cannot provide timing accurate within 1 second. 
     The requirement for economical fanout at lower speeds means that HDLC frame streams between the DTE (user) and the DCE (Packet Engine) must be multiplexed onto DSOs, for example, using DTUs, and subrate interfaces. This allows very effective backhaul from central offices direct to the packet engine. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention will now be described in more detail, by way of example only, with reference to the accompanying drawings, in which: 
     FIG. 1 shows a pair of X.25 packet engines; 
     FIG. 2 shows an X.25 packet engine interfacing with an X.25 network management system; 
     FIG. 3 is a block diagram of an X.25 frame relay packet engine; 
     FIG. 4 shows details of the packet flow control; 
     FIG. 5 the packet loss and recovery scheme; 
     FIG. 6 shows the system data paths; 
     FIG. 7 shows the call set-up data flow; 
     FIG. 8 shows the Call Accept and Clear Data Flow; 
     FIG. 9 shows User Data Packet Flowl 
     FIG. 10 shows the X.25 Data Packet Flow and Congestion Control; 
     FIG. 11 shows the X.25 Data Routing; and 
     FIG. 12 shows the X.25 Transit Data Packet Flow; and 
     FIGS. 13a and 13b are a detailed diagram of an X.25- frame relay network. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     As shown in FIG. 1, the X.25 protocol is implemented in layers of smaller subsystems. The X.25 Packet Engine 1 provides X.25 DCE (Data Communications Equipment) functionality, allowing any X.25 DTE 2 (Data Terminal Equipment) to connect using the CCITT X.25 standard. 
     The link level connection 3 uses the standard CCITT X.25 LAPB (Link Access Protocol Balanced) protocol as implemented by Trillium software. 
     The X.25 Engine 1 receives packets from the DTE 2 encapsulated within HDLC frames as described in the X.25 standard. Requests to set up SVCs (Switched Virtual Circuits) are sent in-band by using call request packets. They contain the requested address, an LCN (Logical channel number) to use for multiplexing subsequent data packets, and a variable length list of facilities (call-options) requested for the duration of the call. 
     Network management data is received from the network manager 4 (FIG. 2). The following table summarizes the activities of the network manager 4. 
     
         ______________________________________ACTION       DATA ITEMS     CROSS-CHECKS______________________________________ 1. Configure network        Network name, herald                       None(alter, delete)        Address format, escape        digits        Default packet size        and ranges        Default window sizes        and ranges (mod 8, mod        128)        Segment size        Accounting intervals        DNIC 2. Configure X.25        Routing ID     3600 node controlEngine       Hardware address                       data(alter, delete, move,        Software modules andcopy, schedule)        versions        Configuration        parameters 3. Assign Frame Relay        Endpoint addresses of                       Frame relaytrunks       X.25 Engines   assignment(alter, delete, move,        Frame Relay parameters                       parameterscopy, schedule)             X.25 Engine                       assignments 4. Configure X.25 Port        LCN ranges     X.25 Engine(alter, delete, move,        Routing I.D.   definitioncopy, schedule)        Facilities     Hardware addresses        Billing information                       Memory        X.25 Gateway   engineering        information and                       Processor        address translation                       engineering        tables         X.121 addresses 5. Assign X.121        X.121 address  X.25 portaddress      X.25 port and LCN                       assignment(delete, move,              Networkschedule)                   configuration                       X.121 address                       uniqueness 6. Assign CUG        CUG directory, options                       X.121 addresses 7. Assign X.25 PVC        PVC address, endpoint                       X.121 addresses(alter, delete, move,        LCNs           X.25 portcopy, schedule)             assignment LCNs 8. Configure NUI        NUI id, password,                       None(alter, delete,        billing informationschedule) 9. Configure Hunt        HG Address     X.121 addressesGroup        Call distribution(alter, delete,        optionsschedule) 9. Collect Accounting        Call reference number        Addresses        Start time and        duration        segments transferred        facilities requested10. Monitor alarms        Alarm type        source        severity        time        additional data11. Define spoolingsite______________________________________ 
    
     The routing system 5 receives routing and topology information from peer systems in other nodes. The routing system 5 monitors the states of the PVCs and uses an OSPF-like procedure to calculate paths over the PVCs. The X.25 Engine receives NUI (Network User Identifier) validation responses from the NUI database 6. This provides validation information for any NUI in the network. It must be accessible from any port in the network. It must also provide administration functions for password change, NUI cancellation, and indications of usage. 
     At least 200 NUI/Passwords must be stored on the Packet Engine to provide a fast NUI validation by the X.25 transport layer. This table will become a local cache for the global NUI database system, but will initially be downloaded from a simple NUI managment function. 
     The X.25 Engine 1 sends packets to the DTE 2 encapsulated within HDLC frames as described in the X.25 standard. 
     Network alarms, status indicators and statistics are delivered to the network management system 4. 
     The routing system 5 sends routing and topology information to peer systems in other nodes. 
     The X.25 link layer, packet layer and transport layer software run on the Packet Engine (FIG. 3), as does the routing system and Frame Relay PVC trunks. The Packet Engine is based on a standard Frame Relay Engine with the additional of 16 Megabytes of memory and a real time clock and includes network address tables 20, X.25 access interfaces 21, Network management interfaces 22, packet routing system 23, and frame relay trunk interfaces 24. 
     The X.25 DCE Data Link Layer 3 provides access via subroutines. It receives HDLC frames either directly from drivers handling the super-rate interfaces, or from the subrate feeder interface. 
     The DCE Network Layer 11 is also a port of the Trillium X.25/X.75 DCE interface software to run on the Packet Engine. 
     The X.25 Transport Layer 9 provides a packet-transport protocol for the X.25 DCE Network Layer, using the X.25 routing system and frame relay PVC trunks. It provides the following services: 
      At call setup, translates the X.121 addresses in the address tables 12 in the call packet to internal routing ids, and binds the two ends of the virtual circuit 
      buffers transmitted packets and starts a retransmission timer 
      releases the buffer and stops the timer upon receipt of an acknowledgment 
      retransmits the packet upon time-out 
      acknowledges received packets, discard duplicates, and resequence any packets received out of order 
      delivers packets to the Trillium network layer software in order 
      flow controls packets from the Trillium network layer using congestion information received from the frame relay trunks, based on Q.922 Annex A and Frame Relay forum standards 
      detects errors and recover appropriately--reset or clear the call only if absolutely necessary 
      responds to queries from the network management system 
      collects and forwards accounting data. 
     The X.25 Transport Layer 9 thus manages the connection between the X.25 DCE software and the X.25 routing system. The X.25 DCE software provides subroutine calls to deliver and receive packets from a network layer. It expects this layer to handle the transport of packets through the network. The X.25 Transport Layer 9 makes the best use of the features available from the routing and trunking system. It handles the translation of X.121 addresses to routing ids when it binds the ends of an SVC during call setup. It forwards packets to the X.25 routing system, buffer and time the packets for retransmission, and either retransmit on timeout or discard upon receipt of an acknowlegment. It receives packets from the X.25 routing system, acknowledge them, and forward them to the X.25 packet layer in the proper sequence and without duplicates. 
     The X.25 transport layer 9 must also provide flow control to the packet layer. Details of the packet flow control are shown in FIGS. 4 and 5. It makes use of the Explicit Congestion Notification bits from the frame relay protocol used by the trunking system to dynamically adjust the window sizes of any virtual circuit that may be experiencing congestion. When a call request is sent through the Transport Layer, it will record the assigned or negotiated window size for the call, and assign that number of &#34;credits&#34; to the virtual circuit. The credit counter will be decremented for each packet received from the packet layer, and incremented for each acknowledgment received from the trunking system. If the credit counter ever reaches 0, then a flow control notification will be sent to the packet layer. When the credit counter eventually increases, the flow control notification will be cancelled. 
     The reception of a packet with the BECN bit set indicate that that particular virtual circuit was following a route that was experiencing some form of congestion. Rather than immediately disrupt the network by trying to re-route or re-establish the call, an attempt will be made to temporarily throttle the data flowing on the virtual circuits over that route until the congestion is resolved. This is done by decreasing the current credit count to some fraction of the original window size, but never less than one. This will cause flow control notifications to be sent more frequently, reducing the throughput and hence congestion on that route. If the packets being received on that virtual circuit no longer have the BECN bits set, the credit count will be gradually increased back to the original window size. The packets may start arriving with clear BECN bits for two reasons: either the congestion has cleared up, or the routing system has re-routed the path over a different set of trunks. In both cases, it is valid to stop throttling the data. The techniques used for adjusting the credit counts are based on the window adjustment techniques and CCITT standard Q.922, Annex I. 
     Referring to FIG. 3, the network address tables 23 must provide a network-wide, consistent mapping of X.121 addresses to routing addresses that are understood by the packet routing system. The X.121 address can be as long as 19 BCD digits. The routing id&#39;s consist of two parts: the packet engine address, and the port address on the packet engine. 
     Given the number of addresses that must be supported in a large network, it is required to optimize the storage requirements. (50,000 address*(8 bytes per address+4 bytes per routing id)=600 K bytes of storage.) The demands for fast call setups also requires fast table access. 
     One way to shorten the tables is to put only the information required at each node into its tables, and to partition the address assignments to each node. Outgoing packets only need to map the address as far as required to determine the destination node id. Each node keeps a full mapping of address to final hardware id for the ports directly on that node. 
     Each node is assigned one or more address prefixes, analogous to an area code on the telephone network. The LSRouter (or generic frame router) can be used to exchange this information along with its routing table updates. This insures that the information is consistent and up to date throughout the network. 
     The X.25 Packet Routing (LSRouter) 23 is an adaptation of the CPSS LSRouter. This system receives outgoing packets from the transport layer 9 and enqueues them for the X.25 trunk as indicated by the current routing tables. Packets for a local destination are put in the queue for that port address. Incoming packets are switched to the queue for the port address if the destination is on the node, or put into the queue for the next trunk hop if it is a transit packet. The packet routing system does not distinguish between data packets or call progress packets. 
     To connect X.25 Trunks to Frame Relay PVCs, packets queued by the routing system are transmitted using the frame relay protocol as described in ITU-T, Q.933 and ANSI t1.617. Packets received from the frame relay PVC are queued for the routing system, along with any explicit congestion information. 
     The subrate feeder interface receives HDLC subrate data streams multiplexed on a DS-0 channel. It de-multiplexes and decapsulates the HDLC frames and deliver them to the link layer software. 
     X.25 Gateways provide a connection to other X.25 networks. They offer the option of connecting either a DCE or DTE to a similar gateway configured as the complementary DTE or DCE on the other network. 
     They provide the standard X.25 functionality, with the added ability to translate addresses between the two networks. This can be accomplished in several ways: 
      use explicit address translation tables 
      use subaddresses 
      use the address extension facility from the X.25 DTE facilities 
      use the user data field in the call request packet 
      integrate the address assignment schemes across the two networks 
     The X.75 gateways X.75 Gateways provide connections between X.25 networks using DNIC (Data Network Identifier Code) in the addresses. This is normally limited to public networks. The X.75 gateway (STE) connects to a similar X.75 gateway (STE) on the other network using LAPB and a form of X.25 that is similar to but more symmetric than the X.25 DTE-DCE protocol. 
     The network routing system must recognize the DNIC in an address and route the call to a gateway to the network identified by the DNIC. This network may be connected directly to the gateway, or indirectly via a transit network, which adds complexity to the routing decisions. 
     The X.25 Engine sends NUI validation requests to the NUI database as set out I. 
     The design of the X.25 Engine is then based on five main objects as shown in FIG. 3, namely an X.25 service encapsulator 21, an address translation database 20, a routing system controller 23, a network management interface 22, and a trunk interface 24. 
     In addition, the packet engine comprises a packet object, which incorporates data and flow control packets, and queue objects, which operate on Packet objects. These comprise the The LAPB receive queue, the LAPB send queue, the FR trunk send queue, the FR trunk receive queue, the packet level retransmit queue, the call router serving queue, the packet router serving queue, and the free buffer queue (sorted by address to make it easy to recombine buffers). 
     The X.25 Engine or packet engine supports up to 60 directly connected high speed X.25 interfaces. 
     A Subrate Feeder Interface provides the appropriate connection for these devices. An encapsulation technique is used to transport the X.25 HDLC frames through the FRS and backplane to the X.25 Engine. This encapsulation technique is supported on the X.25 Engine, the FRS, and any other device that will be connected to the packet engine. It allows the LAPB protocol to run transparently between the X.25 device and the X.25 Engine. 
     The X.25 devices use HDLC to send LAPB frames, not Frame Relay frames, to the FRS. The FRS encapsulates the LAPB frames into frame relay frames and attach a DLCI identifier. The current FRS routing software routes these frames onto the circuits to the X.25 Engine. Packets from the X.25 Engine have the frame relay header stripped off and only the LAPB frame will be sent on the link to the X.25 device. 
     Each X.25 device is allocated a single DLCI to the X.25 Engine. This allows the X.25 software to correctly identify the LCN and X.25 device. 
     The packet engine with X.25 software also terminates circuits from the FRS that carry X.25 packets encapsulated in frame relay frames. The feeder interface extracts the original X.25 packet and passes it on to the X.25 DCE software. Packets from the X.25 DCE software will be encapsulated and routed over the frame relay connection to devices on the FRS. Each device is identified either by the DLCI used to connect to it, or by addressing information contained within the encapsulation data. 
     The routing system controller is based on a link-state routing system similar to OSPF Open Shortest Path First. Other routing systems may be supported by implementing the appropriate routing objects. This allows integration with ATM backbone trunks. 
     The network management interface 22 provides communications between the X.25 software objects and the 4602 network management system. 
     The trunk interface 24 provides an interface to the frame relay system. Each trunk queue corresponds to a frame relay PVC. These PVCs can be very quickly configured by the network management system and put into service by the X.25 system. This gives network operators a large operational benefit and cost saving. It becomes easier and faster to fine tune the engineering and utilization of the X.25 trunks. Frame relay features such as CIR and BECN can help provide a higher quality of service to the X.25 users. 
     The protocol that runs between the trunk interface processes is based on LAPB. Protocol identification, routing information and the X.25 packets will be encapsulated in the information bytes of the LAPB frames. 
     Future trunking systems can be based on newer ATM technology. This could allow the X.25 network to dynamically deploy and configure &#34;trunks&#34; as required by the network traffic. 
     Data Flows to and from the X.25 Engine are described in the following table. 
     
         ______________________________________Inputs                           OutputsFrom       Data       Data       To______________________________________3604 or other      X.25 packet                 X.25 packets                            3604 or otheraccess devices:      encapsulated in                 encapsulated in                            access devices:FRS, X.25 DTU,      Frame Relay                 Frame Relay                            FRS, X.25 DTU,3601, Viper                      3601, ViperCPSS       Network    Alarms, Status,                            CPSS      management Statistics,      information                 Billing                 InformationOther X.25 Incoming and                 Outgoing and                            Other X.25Engines (Router      transit X.25                 transit X.25                            Engines (Routersub-object)      encapsulated                 encapsulated                            sub-object)      packets    packets      Routing    Routing      updates    updatesNUI Database      Validation info                 Validation NUI Database                 requests______________________________________ 
    
     The system data paths are shown in FIG. 6. 
     Packets being sent on a frame relay feeder interface and on the frame relay trunks need to be encapsulated within frame relay frames. This encapsulation must pass the user information and the X.25 packet information transparently. The routing information must be inserted at the sending node and examined by the routing system at transit and termination points. 
     Standard encapsulation techniques provide mechanisms for integrating flow control between the frame relay and X.25 protocols. Encapsulation techniques are described in Q.922 (Annex A), and ANSI T| 617a (Annex F) and FRF.3 annex F, &#34;Multiprotocol Encapsulation Implementation Agreement&#34;. 
     The encapsulation techniques must notify LCNs multiplexed on the DLCI of congestion and recovery as indexed on the FECN and BECN bits, and transfer congestion information across trunk PVCs associated with each LCN. 
     FIGS. 7 to 12 show various data flows in the packet switching network according to the invention. 
     FIG. 13 shows a detailed implementation of an X.25-frarme relay newtork. 
     An advantage of the invention is that all the network management features and ability to provide virtual bandwidth offered by frame relay can be utilized in an X.25 service.