US20020031214A1 - Interface for interfacing client programs with network devices in a telecommunications network - Google Patents

Interface for interfacing client programs with network devices in a telecommunications network Download PDF

Info

Publication number
US20020031214A1
US20020031214A1 US08/824,648 US82464897A US2002031214A1 US 20020031214 A1 US20020031214 A1 US 20020031214A1 US 82464897 A US82464897 A US 82464897A US 2002031214 A1 US2002031214 A1 US 2002031214A1
Authority
US
United States
Prior art keywords
network
interface
communication
format
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US08/824,648
Other versions
US6389129B1 (en
Inventor
Daniel E. Cowan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Verizon Patent and Licensing Inc
Original Assignee
MCI Communications Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MCI Communications Corp filed Critical MCI Communications Corp
Assigned to MCI COMMUNICATIONS CORPORATION reassignment MCI COMMUNICATIONS CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COWAN, DAN
Priority to US08/824,648 priority Critical patent/US6389129B1/en
Priority to CA002285484A priority patent/CA2285484A1/en
Priority to PCT/US1998/005313 priority patent/WO1998043390A2/en
Priority to JP54578998A priority patent/JP2001520777A/en
Priority to EP98910482A priority patent/EP0972385A2/en
Priority to AU64715/98A priority patent/AU6471598A/en
Publication of US20020031214A1 publication Critical patent/US20020031214A1/en
Publication of US6389129B1 publication Critical patent/US6389129B1/en
Application granted granted Critical
Assigned to VERIZON PATENT AND LICENSING INC. reassignment VERIZON PATENT AND LICENSING INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MCI COMMUNICATIONS CORPORATION
Assigned to VERIZON PATENT AND LICENSING INC. reassignment VERIZON PATENT AND LICENSING INC. CORRECTIVE ASSIGNMENT TO REMOVE THE PATENT NUMBER 5,835,907 PREVIOUSLY RECORDED ON REEL 032725 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: MCI COMMUNICATIONS CORPORATION
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Definitions

  • the present invention relates generally to telecommunications networks and, more particularly, to an interface for interfacing client programs with network devices in a telecommunications network.
  • Telecommunication networks such as telephone networks, include a number of different components.
  • telecommunication networks include network devices that are interconnected by links that facilitate communications.
  • network devices are digital cross-connects (DXCs), multiplexing equipment, line termination equipment, computer systems, and fiber transmission systems.
  • DXCs digital cross-connects
  • a “link,” as used herein, is a physical connection between network devices that carry network traffic.
  • a single link may include multiple trunks where a “trunk” is a logical channel of communication with capacity that traverses one or more network devices and/or one or more links between network devices.
  • network devices may be of many different types.
  • DXC that switches communication trunks based on external commands.
  • DXCs There are many different types of DXCs and there are many different vendors who sell DXCs.
  • each vendor's device has its own command set and its own format for data messages that contain commands.
  • a restoration system that restores traffic within a telecommunications network after a failure must be able to communicate with each of the different types of devices that are used to realize restoration.
  • These devices include DXCs.
  • the central control system must be able to send commands to and receive messages from each DXC within the affected area of the network.
  • the central control system must be able to identify the type of device and the format of commands for that device.
  • the central control system must be able to receive messages in different formats from different types of devices and interpret these messages in a common generic manner.
  • the present invention overcomes the difficulties of the prior art by providing a common interface that may interface multiple client programs with multiple network devices.
  • the interface communicates with the client programs in a common format and communicates with the network devices in device-specific formats.
  • the interface is able to convert communications from the device-specific formats of the network device into the common format of the client programs.
  • the interface is able to convert communications from the client programs in the common format into communications in the device-specific formats of the network devices.
  • the interface may also include additional functionality, such as automatic auditing and monitoring of data links to utilize optimal data links.
  • a method of interfacing a program with network devices is performed by a computer system in a telecommunications network.
  • An interface is provided for interfacing the program with the network devices, where each network devices has a device-specific communication format.
  • a first communication, that is destined to selected network device is received at the interface from the program in a first format.
  • the interface converts the first communication from the first format to a second format that is the device-specific communication format of the selected network device to which the communication is destined.
  • the converted communication is then forwarded in the second format from the interface to the selected network device.
  • a telecommunication network includes a program that is run on a processor.
  • the program adopts a communication format for communications.
  • the telecommunications network also includes a number of network devices, where each network device has a device-specific communication format.
  • An interface is provided in the telecommunications network for interfacing the program with the network devices to facilitate communications between the program and the network devices.
  • the interface includes a converter for converting communications from the program that are destined to network devices into the device-specific communication formats of the network devices.
  • a computer-implemented method is practiced in a telecommunications network that has a network device, a processor that runs a program, and data links that lead to the network device.
  • An interface is provided that interfaces the program with the network device. The interface determines which of the data links is most reliable and determines the data link to be the primary link that is to be used for communications with the network device. Another one of the data links is designated as a secondary link to be used for communications with the network device when the primary link fails.
  • FIG. 1 is a block diagram illustrating a portion of the telecommunications network that is suitable for practicing a first option in accordance with the present invention.
  • FIG. 2 is a block diagram illustrating the computer system of FIG. 1 in more detail.
  • FIG. 3 is a block diagram of a portion of a telecommunications network that is suitable for practicing a second option in accordance with the present invention.
  • FIG. 4 illustrates the major components of the NIFTE of the exemplary embodiment of the present invention.
  • FIG. 5 is a data flow diagram for the common interface module of FIG. 4.
  • FIG. 6 is a flow chart illustrating the steps that are performed by the Queue_Input_Cmds object of FIG. 5.
  • FIG. 7 is a flow chart illustrating the steps performed by the Parse_Input_Cmds object of FIG. 5.
  • FIG. 8 is a flow chart illustrating the steps that are performed by the NIFTE_Data_Manager object of FIG. 5.
  • FIG. 9 is a flow chart illustrating the steps that are performed by the Administer_Alarm_Subscriber_List object of FIG. 5.
  • FIG. 10 is a flow chart illustrating the steps that are performed by the NIFTE_Shutdown object of FIG. 5.
  • FIG. 11A is a flow chart illustrating the steps that are performed by the Process_State_Changes object of FIG. 5 when it receives a Change_Readiness_Mode_Cmd command.
  • FIG. 11B is a flow chart illustrating the steps that are performed by the Process_State_Changes object of FIG. 5 when it receives a Change_Ex_State_Cmd command.
  • FIG. 12 is a flow chart illustrating the steps that are performed by the Verify_Device_Cmds object of FIG. 5.
  • FIG. 13 is a data flow diagram for the components of the device-specific interface module of FIG. 4.
  • FIGS. 14A and 14B depict a flow chart of the steps performed by the device-specific interface when an audit command is received.
  • FIGS. 15A, 15B, and 15 C show a flow chart of the steps performed by the device-specific interface module when a port connect or port disconnect command is received.
  • FIG. 16 is a flow chart illustrating the steps that are performed when an unsolicited alarm is received by the NIFTE.
  • FIG. 17 is a data flow diagram for the components of the initialization module of FIG. 4.
  • FIG. 18 is a flow chart illustrating the steps performed by the initialization module.
  • the exemplary embodiment of the present invention described herein provides a generic interface that interfaces client application programs with multiple network devices.
  • the client application programs may perform different functionality including restoration, maintenance, and administration of a telecommunications network.
  • the interface is especially well adapted for use in a telephone network, and for purposes of discussion below, it is assumed that the interface is utilized in a telephone network.
  • the interface converts communications originating in a common format shared by the client application programs into device-specific formats of the network devices.
  • the interface converts communications from the network devices in the device-specific format into communications in the common format of the client application programs.
  • the interface enables free communication between the client application programs and the network devices.
  • the client application program need not have code and configuration information for communicating with each of the various network devices.
  • the network devices need not have added components for communicating directly with the client application programs.
  • the interface thus, greatly simplifies the ability of the client application programs to communicate with the network devices.
  • the interface may be implemented in computer-executable instructions.
  • the interface may be implemented in software, hardware, firmware, or a combination thereof. As will be described in more detail below, multiple instances of the interface may be present within a given telecommunications network.
  • the interface may include additional functionality, such as an automatic auditing functionality that generates audit requests at periodic intervals without external prompting.
  • the audit request audits the network devices to retrieve information regarding status and configuration of the network devices.
  • the interface may also include functionality for managing data links that connect the interface with the network devices. This functionality enables the interface to determine which of the data links leading to a given network device is most reliable. This most reliable data link is designated as a primary link for carrying communications to and from the network device. A secondary link is also designated to serve as a backup link that becomes operational when the primary link fails.
  • the interface includes intelligence for changing what links are designated as the primary link and the secondary link in response to changing events and conditions within the telecommunications network.
  • FIG. 1 depicts a portion of a telecommunications network that represents a first option under the present invention.
  • a second option will be discussed in more detail below.
  • a computer system 10 is interfaced with network resources 12 .
  • the computer system 10 executes a number of client application programs 14 A- 14 N, which may include an application program 14 A for performing dynamic network restoration of the telecommunications system.
  • the restoration application program 14 A receives alarms from network devices and sends commands to the devices to restore traffic on the telecommunications network after a failure.
  • the client application programs may also include a maintenance application program 14 B that sends maintenance commands to network devices within the telecommunications system.
  • client application programs may be run on the computer system 10 and that additional client application programs may also be run on the computer system.
  • application programs need not be run on a single computer system, but rather may be run on multiple computer systems that are in communication with each other.
  • the computer system stores real-time network device data that reflects the current configuration and topology in the network. This data may be organized in a separate database 16 .
  • the computer system 10 also executes an interface known as the network item front end (NIFTE).
  • NIFTE 18 serves as the common interface between the application programs and network devices. The details of the NIFTE 18 will be described below.
  • the network resources 12 communicate with the computer system 10 via the NIFTE 18 .
  • the network resources 12 includes a number of network devices 20 A- 20 N.
  • the network devices may be any of a number of different types of telecommunication devices, including digital cross connects (DXC).
  • DXCs are devices that switch trunks among various ports in order to route traffic. DXCs play a critical function in network restoration. They are able to monitor traffic on their ports and generate alarms when an outage is detected.
  • DXCs may receive and process commands from the restoration client application program 14 A to restore network traffic.
  • the network devices 20 A- 20 N are DXCs.
  • the NIFTE 18 has a backup communication path to each network device via communication gateway 24 .
  • the gateway 24 serves as a network concentrator interface between the NIFTE 18 and the network resources 12 .
  • Communication links 21 and 23 provide connectivity between the communication gateway 24 and the NIFTE 18 and the site controllers 22 A- 22 N and the NIFTE, respectively.
  • the communication links 21 and 23 may be standard X. 25 connections.
  • the site controllers 22 A- 22 N provide access to the network devices 20 A- 20 N. A separate site controller is located at each site.
  • FIG. 2 shows a computer system configuration that is suitable for the computer system 10 of FIG. 1.
  • the computer system includes a central processing unit (CPU) 26 that communicates with a number of peripheral devices, including a video display 28 , a mouse 30 , and a keyboard 32 .
  • the CPU 26 also has access to a memory 34 and a secondary storage 36 .
  • Objects for implementing the NIFTE 18 are stored in the memory 34 along with the client application programs 14 A- 14 N.
  • the real-time network device data 16 may be stored within a secondary storage 36 or resident within the primary memory 34 .
  • the computer system 10 may further include a modem 38 for enabling the computer system to send communications and receive communications over a telephone line.
  • the computer system 10 may also include a network adapter 40 for interfacing with a network having computing resources.
  • FIG. 2 is intended to be merely illustrative and not limiting of the present invention.
  • the present invention may be practiced with other computer system configurations.
  • the client programs 14 A- 14 N and the NIFTE 18 may reside on different machines.
  • the computer system 10 may be implemented as a distributed computing system rather than a single processor or personal computer system.
  • FIG. 3 depicts a second option under the present invention wherein multiple instances of the NIFTE are provided.
  • NIFTEs 18 A- 18 N are provided such that each network device 20 A- 20 N has its own corresponding NIFTE.
  • Each instance of the NIFTE includes the same code but is implemented as a separate process by the computer system 10 .
  • Each client application program 14 A- 14 N may communicate with a given network device 20 A- 20 N via the NIFTE that is associated with the network device. As shown in FIG. 3, each client application program has a connection with each NIFTE. Moreover, each NIFTE has access to the real-time network device data database 16 .
  • Each NIFTE 18 A- 18 N is connected to its corresponding network device 20 A- 20 N via two redundant data links 42 A- 42 N and 44 A- 44 N, which may be, for example, X. 25 data links.
  • Each such data link 42 A- 42 N and 44 A- 44 N is designated as being a primary link or a secondary link for the associated network device 20 A- 20 N.
  • Communications between the NIFTE 18 A- 18 N and the network device 20 A- 20 N are performed over one link at a time where the link that is not being used serves as a backup secondary link.
  • the NIFTE designates one of the links as a primary link and the other link as a secondary link.
  • the NIFTE designates the more reliable link as the primary link.
  • the connection request is sent over both links in the pair of links leading to a particular network device, and the first link to respond with a connection is designated as the primary link wherein the other link is designated as a secondary link. If a primary link fails, the NIFTE automatically shifts its communication to the designated secondary link and changes the designation of the link so that the secondary link is a new primary link.
  • each of the binary data links 42 A- 42 N and 44 A- 44 N may include multiple logical channels of communications.
  • an Alcatel DXC device supports four logical channels per link. The number of logical channels may depend upon the type of network device.
  • the communication gateway 24 serves as a backup communication path in the event that the data links 42 A- 42 N and 44 A- 44 N for a particular network device 20 A- 20 N fail.
  • Each NIFTE 18 A- 18 N is capable of providing administrative and maintenance functions to the network devices 18 A- 18 N.
  • the maintenance system 14 B generates commands to perform maintenance functions such as the enablement and disablement of binary links, the dynamic configuration of binary links, and the changing of internal configuration parameters.
  • Each NIFTE may also generate automatic audits of network devices at periodic intervals.
  • FIG. 4 depicts a high-level internal architectural diagram of the NIFTE 18 .
  • Each instance of a NIFTE 18 is comprised of three main software modules: a common interface module 50 , a device-specific interface module 52 , and an initialization module 54 .
  • the common interface module 50 is responsible for receiving commands from client application programs 14 A- 14 N in a common format syntax. It communicates with the device-specific interface module 52 to forward commands to the network devices 20 A- 20 N.
  • the common interface module 50 receives responses to the commands from the network devices 20 A- 20 N via the device-specific interface module 52 and forwards the responses in a converted format to the client application programs 14 A- 14 N.
  • the common interface module 50 performs automated auditing and administration by generating its own commands.
  • the device-specific interface module 52 converts commands from the common format to a device-specific format that is required by the destination network device 20 A- 20 N.
  • the device-specific interface module 52 also receives responses from the network devices 20 A- 20 N and converts the responses into the common format so that the responses may be forwarded to the appropriate client application programs 14 A- 14 N via the common interface module 50 .
  • the initialization module 54 performs initialization upon the startup of the NIFTE 18 . These functions include the initialization of binary data links 42 A- 42 N and 44 A- 44 N in determining network device configuration information.
  • the common interface module 50 is implemented as a number of different objects.
  • FIG. 5 is a data flow diagram that shows data flow among the respective objects of the common interface module 50 .
  • the discussion below details the functions performed by these objects.
  • the Queue_Input_Cmds object 62 is responsible for receiving commands from the client application programs 14 A- 14 N and queuing these commands for distribution to other objects within the common interface module 50 .
  • the commands 60 received by the Queue_Input_Cmds object 62 are placed in the Input_Cmd_Queue 64 .
  • the following commands may be received at the Queue_Input_Cmds object 62 .
  • the Change_Ex_State_Cmd command is responsible for changing the execution state of the NIFTE 18 .
  • the execution state will be described in more detail below.
  • the Change_Readiness_Mode_Cmd command changes the readiness mode of the NIFTE 18 .
  • the readiness mode will also be described in more detail below.
  • the NIFTE_Force_Audit_Cmd command causes an audit of a network device to be initiated.
  • the NIFTE_Alarm_Registration_Cmd command requests that certain unsolicited alarms originating from the network devices 20 A- 20 N be sent to a client application program.
  • the NIFTE_Port_Connect_Cmd command instructs a network device 20 A- 20 N to connect a port.
  • the NIFTE_Port_Disconnect_Cmd command instructs the network device to disconnect a port.
  • the NIFTE_Data_Update_Cmd command updates data within the NIFTE's internal configuration or within the real-time network device data.
  • the NIFTE_Data_Request_Cmd command requests that data be retrieved either from the NIFTE's internal configuration or from the real-time network device data.
  • the NIFTE_Stop_NIFTE_Cmd command causes the NIFTE 18 to shut down.
  • FIG. 6 is a flowchart illustrating the steps that are performed when one of the above-described commands is received by the Queue_Input_Cmds object 62 .
  • the command is received from one of the client application programs 14 A- 1 4 N (step 140 in FIG. 6).
  • the Queue_Input_Cmds object 62 then adds the received command to the Input_Cmd_(Queue 64 (step 142 in FIG. 6).
  • the Queue_Input_Cmds object 62 also dispatches a Set_Event message 66 to wake up 68 the Parse Input_Cmds object 70 (step 144 in FIG. 6).
  • the dispatching of the Set_Event message 66 causes a wake up 68 of the Parse_Input_Cmds object 70 (step 146 in FIG. 6).
  • the Parse_input_Cmds object 70 is responsible for distributing commands that are stored in the Input_Cmd_Queue 64 to the appropriate destination objects.
  • FIG. 7 is a flowchart of the steps performed for a single retrieve command by the Parse_Input_Cmds object 70 .
  • the Parse_Input_Cmds object 70 retrieves a command from Input_Cmd_Queue 64 (step 148 in FIG. 7).
  • the Parse_Input_Cmds object 70 then identifies the type of the command (step 150 in FIG. 7). Based upon the type of command, the Parse_Input_Cmds object 70 determines where to distribute the command for proper processing.
  • the Parse_Input_Cmds object sends the command to the NIFTE_Data_Manager object 72 (step 154 in FIG. 7). If the command is the NIFTE_Alarm_Registration_Cmd command (see step 156 in FIG. 7), the Parse_Input_Cmds object 70 sends the command NIFTE_Alarm_Registration_Cmd to the Administer_Alarm_Subscriber_List object 82 (step 158 in FIG. 7).
  • the Parse_Input_Cmds object 70 sends the command to the NIFTE_Shutdown object 92 (step 162 in FIG. 7). If the command is a Change_Ex_State_Cmd command or a Change_Readiness_Mode_Cmd command (see step 164 in FIG. 7), then the command is sent to the Process_State_Changes object 96 (step 166 in FIG. 7).
  • the command is a NIFTE_Force_Audit_Cmd command, a NIFTE_Port_Connect_Cmd command or a NIFTE_Port_Disconnect_Cmd command
  • the command is sent to the Verify_Device_Cmds object 120 (step 168 in FIG. 7).
  • NIFTE_Data_Update_Cmd commands and NIFTE_Data_Request_Cmd commands get sent to the NIFTE_Data_Manager object 72 .
  • FIG. 8 is a flowchart of the steps performed by this object. Initially, the NIFTE_Data_Manager object 72 receives the command from the Parse_Input_Cmds object 70 (step 170 in FIG. 8). The NIFTE_Data_Manager object 72 then accesses the data to update or retrieve the data, depending upon the command (step 172 in FIG. 8). If the data update or request is for internal NIFTE configuration information, the NIFTE_Data_Manager object 72 will access the NIFTE's internal data tables to make the update.
  • the RealTime_Network_Device_Data 126 is accessed from the real-time network device data database 16 (FIG. 1) to gain access to the appropriate data.
  • the NIFTE_Data_Manager object 72 then sends a response to the client application program 14 A- 14 N that sent the command (step 174 in FIG. 8).
  • a NIFTE_Data_Update_Resp response 74 is sent for each NIFTE_Data_Update_Cmd command that is received, and a NIFTE_Data_Request_Resp response 75 is sent for each NIFTE_Data_Request_Cmd command that is received.
  • data is returned in response to the NIFTE_Data_Request_Cmd.
  • the responses 74 and 75 confirm that the corresponding command was received and processed.
  • the NIFTE_Data_Manager object 72 uses a Respondent_List 90 that holds a list of all client application programs 14 A- 14 N and the logical addresses for such client application programs.
  • the NIFTE_Data_Manager object 72 may generate a status message (Status_Msg) 78 from time to time when certain qualifying events are performed or detected. Examples of qualifying events include detection of an error or completion of a task that a user wishes to know about. Such status messages are kept in an internal log for the NIFTE 18 and are available to users to view a report. Other objects within the common interface module 50 (FIG. 4) also generate such status messages. For example, the Parse_Input_Cmds object 70 generates a Status_Msg message 80 when qualifying events occur.
  • FIG. 9 depicts the steps that are performed by the Administer_Alarm_Subscriber_List.
  • FIG. 9 is a flowchart illustrating the steps performed by the Administer_Alarm_Subscriber_List object 82 when it receives a NIFTE_Alarm_Registration_Cmd command from the Parse_Input_Cmds object 70 . Initially, the command is received (step 176 in FIG. 9). The Administer_Alarm_Subscriber_List object 82 then registers the alarm request with the Alarm_Subscriber_List 84 (step 178 in FIG. 9).
  • the NIFTE_Alarm_Registration_Cmd commands are sent to the Administer_Alarm Subscriber_List object 82 for a client application program to register unsolicited alarms such that the client application program receives alarms from the network devices 20 A- 20 N that would not usually be forwarded to the client application programs.
  • the Alarm_Subscriber_List 84 is a list of client application programs that are registered by request to receive unsolicited alarms, and the list is updated and maintained by the Administer_Alarm_Subscriber_List object 82 .
  • the Administer_Alarm_Subscriber_List object 82 generates a response, NIFTE_Alarm_Registration Resp 86 to the registered client application programs 14 A- 14 N (step 180 in FIG. 9). The response confirms that the alarm registration command was received and processed.
  • the Administer_Alarm_Subscriber_List object 82 uses the Respondent_List 90 to locate the name and address of the client application program to which the response is sent.
  • the Administer_Alarm_Subscriber_List object 82 will generate a Status_Message 88 when certain triggering events occur.
  • the NIFTE_Shutdown object 92 may receive NIFTE_Stop_NIFTE_Cmd commands from the Parse_Input_Cmds object 70 .
  • FIG. 10 is a flowchart illustrating the steps that are performed in such an instance.
  • the NIFTE_Shutdown object 97 receives the NIFTE_Stop_NIFTE_Cmd command (step 182 in FIG. 10).
  • the NIFTE_Shutdown object 92 generates a response (i.e., NIFTE_Stop_NIFTE_Resp 94 ) that it sends to the client application program 14 A- 14 N that initiated the command (step 184 in FIG. 10).
  • the NIFTE_Shutdown object 92 then proceeds to shutdown the NIFTE (step 186 in FIG. 10).
  • Each NIFTE operates in one of two execution states: primary or backup.
  • the preferred embodiment provides two instances of the NIFTE; one that serves as the active or primary NIFTE and one that serves as backup NIFTE.
  • these instances of the NIFTE are run on separate computer systems.
  • the NIFTE closes its communications with the rest of the network and brings down its binary links 42 A- 42 N and 44 A- 44 N.
  • the NIFTE opens its binary links 42 A- 42 N and 44 A- 44 N and begins communications.
  • Such transitions in execution state are triggered by a Change_Ex_State_Cmd command.
  • the primary NIFTE 18 may also operate in one of two readiness modes: normal and alert.
  • the normal mode is the nominal mode of operation in which the NIFTE performs route auditing, administration, and other functions.
  • the restoration system application program 14 A sends a Change_Readiness_Mode_Cmd command to the NIFTE. This command triggers a change in the readiness mode such that the NIFTE transitions to the alert readiness mode.
  • the alert readiness mode all auditing and background processing ceases, and the NIFTE 18 stands ready to receive and process NIFTE_Port_Connect_Cmd and NIFTE_Port_Disconnect_Cmd commands from the restoration 14 A.
  • FIG. 11A illustrates the steps that are performed by the Process_State_Changes object 96 when it receives a Change_Readiness_Mode_Cmd command.
  • the command is received at the Process_State_Changes object 96 (step 190 in FIG. 11A).
  • the Process_State_Changes object 96 then updates the state that is held in the Current_NIFTE_State 98 to reflect the change in readiness mode state. If the readiness mode state is changing from normal to alert (see step 194 in FIG.
  • the Process_State_Changes object 96 sends an Audit_Interval message 100 to the Audit_Interval_Timer 102 to cease all automatic auditing operations, which are described in more detail below (step 196 in FIG. 11A).
  • the Process_State_Changes object 96 proceeds to suspend all audits that are currently in progress (step 198 in FIG. 11A). Incomplete initial device audits that are performed during initialization, however, are not suspended.
  • the Process_State_Changes object 96 then sends a Change_Readiness_Mode_Resp response 106 to the client application program that sent the initial command (step 200 in FIG. 11A).
  • FIG. 11B shows the steps that are performed by the Process_State_Changes object 96 when a Change_Ex_State_Cmd command is received.
  • the object receives the Change_Ex_State_Cmd command (step 202 in FIG. 11B).
  • the Process_State_Changes object 96 then checks the System_Logicals 108 , which constitutes data from the operating system of the computer that indicates status and performance conditions of the computer, to ensure that the state change may be executed (step 204 in FIG. 11B).
  • the state held in Current_NIFTE_State 98 is then modified to note the change in execution state (step 206 in FIG. 11B).
  • commands 112 are sent to the binary links to close the binary links (step 210 in FIG. 11B).
  • an Audit_Interval message 100 is sent to the Audit_Interval_Timer 102 to stop automated auditing (step 212 in FIG. 11B).
  • the Process_State_Changes object 96 then sends a Change_Ex_State_Resp response 108 to the client application program that sent the initial command (step 218 in FIG. 11B).
  • the Process_State_Changes object 96 reads in the Realtime_Network_Device_Data 110 to obtain information that will be needed to open the binary links 42 A- 42 N and 44 A- 44 N (step 214 in FIG. 11B).
  • a command 112 is then sent to open the binary links and an Audit_Interval message 100 is sent to the Audit_Interval_Timer 102 to initiate automatic auditing (step 216 in FIG. 11B).
  • a Change_Ex_State_Resp response 108 is sent to the client application program that sent the initial command (step 218 in FIG. 11B).
  • the Process_State_Changes object 96 generates a Status_Msg message 114 when certain events are triggered.
  • the Auto_Audit object 105 performs an automated auditing process for the NIFTE 18 .
  • the auditing process automatically generates NIFTE_Force_Audit_Cmd commands 116 at specified time intervals. These commands are sent to various ones of the network devices 20 A- 20 N. The commands trigger response from the network devices 20 A- 20 N such that the devices specify their internal configuration.
  • the Audit_Interval_Timer 102 triggers execution of the sending of such NIFTE_Force_Audit_Cmd commands 116 .
  • the timer 102 sends Audit_Interrupt messages 104 to the Auto_Audit object 105 to cause the Auto_Audit object to generate the NIFTE_Force_Audit_Cmd commands.
  • Such commands are forwarded to the Queue_Input_Cmds object 62 .
  • the Auto_Audit object 105 resets the Audit_Interval_Timer 102 by sending an Audit_Interval message.
  • the Verify_Device_Cmds object 120 receives and processes commands to connect ports, disconnect ports, and force audits from the Parse_Input_Cmds object 70 . Specifically, the Verify_Device_Cmds object 120 receives NIFTE_Port_Connect_Cmd, NIFTE_Port_Disconnect_Cmd, and NIFTE_Force_Audit_Cmd commands from the Parse_Input_Cmds object 70 . The Verify_Device_Cmds object 120 verifies that commands of the type it receives include the proper arguments and can be currently processed by device-specific interfaces.
  • FIG. 12 is a flow chart of the steps performed by the Verify_Device_Cmds object 120 in processing received commands.
  • the Verify_Device_Cmds object 120 receives a port connect, port disconnect, or force audit command (step 220 in FIG. 12).
  • the Verify_Device_Cmds object 120 then accesses the Current_NIFTE_State to ensure that the current operational mode 122 and execution state 124 are proper for processing of the command (step 222 in FIG. 12).
  • the appropriate execution state is the primary execution state and either readiness mode is acceptable.
  • the proper execution state is the primary execution state and the proper readiness mode is the normal mode.
  • the command is not further processed. If the proper operational mode 122 and execution state 124 have been verified in step 222 in FIG. 12, the Realtime_Network_Device_Data 126 is read in to verify arguments of the command (step 224 in FIG. 12). For example, for the port connect and port disconnect commands, the port range specified in the commands must be valid. The data is also used to obtain a network address for the network device 20 A- 20 N to which the command is destined. If the arguments are verified, the command 128 is sent to the Queue_Device_Cmds object (which will be discussed in more detail below) for processing by the device-specific interface module (step 226 in FIG. 12).
  • the Queue_Device_Cmds object which will be discussed in more detail below
  • the Verify_Device_Cmds object 120 then sends an appropriate response 130 , 132 , or 134 to the client application program that initiated the command (step 228 in FIG. 12). If the command cannot be sent to the device-specific interface module for some reason, the Verify_Device_Cmds object 120 sends a response message indicating the inability to send the command. If the command is successfully sent; however, a response is sent to the client application program 14 A- 14 N when the response is received from the network device 20 A- 20 N.
  • FIG. 13 illustrates the architecture of the device-specific interface module 52 (FIG. 4) in more detail.
  • FIG. 13 depicts a data flow diagram showing the data flow among the objects that comprise-specific interface module 52 .
  • the device-specific interface module 52 receives client commands from the common interface module 50 in the common format and converts the commands into formats that are specific to destination network devices 20 A- 20 N. The converted commands are forwarded to the destination network devices 20 A- 20 N using the data links 42 A- 42 N or 44 A- 44 N.
  • the device-specific interface module 52 receives responses and unsolicited messages from the network devices 20 A- 20 N and converts the responses and messages into a common format.
  • the device-specific interface module 52 is additionally responsible for managing the binary data links 42 A- 42 N and 44 A- 44 N.
  • the Queue_Device_Cmds object 230 is responsible for enqueing the device commands into appropriate queues. The discussion below will focus on the steps that are performed when different types of commands are received by the Queue_Device_Cmds object 230 .
  • FIGS. 14A and 14B illustrates the steps that are performed when an audit command is received by the Queue_Device_Cmds object 230 .
  • the Queue_Device_Cmds object 230 assigns a sequence number to the audit command that uniquely identifies the instance of the command (step 330 in FIG. 14A).
  • the sequence numbers are obtained from the Next_Sequence_Number server 234 , which is maintained internally by the NIFTE 18 . Since the command is an audit command, the Queue_Device_Cmds object 230 places the audit command in the Audit_Cmd_Queue 236 (step 332 in FIG. 14A). Subsequently, the Format_And_Submit_Cmds object 252 retrieves the audit command from Audit_Cmd_Queue 236 (step 334 in FIG. 14A). The Format_And_Submit_Cmds object 52 retrieves commands from various queues and converts the commands from the common format used by the client application programs 14 A- 14 N to the device-specific formats used by the network devices 20 A- 20 N.
  • the Format_And_Submit_Cmds object 252 then retrieves specific device-type information about the destination device and version information from the Device Status file 254 (step 336 in FIG. 14A).
  • the Device_Status file 254 holds information regarding device type and version information for each of the network devices 20 A- 20 N.
  • the Format_And_Submit_Cmds object 252 retrieves device configuration information about the destination network device from the Realtime_Network_Device_Data 256 that is stored in the real-time network device data database 16 (FIG. 1) to verify that the destination network device is properly configured and can receive the command (step 338 in FIG. 14A).
  • the Format_And_Submit_Cmds object 252 proceeds to create an audit command in the device-specific format (step 340 in FIG. 14A). A copy of the device-specific command is then placed in the Audit_Cmd_Queue 236 (step 342 in FIG. 14A).
  • the Format_And_Submit_Cmds object 252 sends a request for status regarding an audit channel 260 to the Manage_Binary_Links object 258 (step 344 in FIG. 14A). It is worth noting that there may be, for example, multiple channels for binary link to most of the network devices 20 A- 20 N. In such a case, one channel is used for audit commands and is designated as the audit_channel 260 . Another channel is used for administration commands and is designated as admin_channel 261 . An additional channel used is used for connect/disconnect commands and is designated as the connect_channel 282 . A normalization_channel 271 may also be provided.
  • the Message_Binary_Links object 258 then checks the status of the Audit_Channel 261 (step 346 in FIG. 14A).
  • the Manage_Binary_Links object 258 then sends a Binary_Link_Status message 262 to the Format_And_Submit_Cmds object 252 that specifies if the audit_channel 260 is available or not (step 348 in FIG. 14A). If the audit_channel 281 is not available for either of the binary links (see step 350 in FIG. 14B).
  • the Format_And_Submit_Cmds object 252 rejects the command and sends a response to the client application program indicating that the command cannot be processed (step 352 in FIG. 14B).
  • the Format_And_Submit_Cmds object 252 sends the formatted audit command to the Manage_Binary_Links object 258 (step 354 in FIG. 14B).
  • the Manage_Binary_Links object 258 then sends the audit command as a Binary_Device_Cmd command 264 to the destination network device (step 256 in FIG. 14B).
  • the destination network device receives the formatted audit command and generates configuration information in the form of Binary_Device_Data 266 that is received by the Queue_Binary_Device_Data object 268 (step 358 in FIG. 14B).
  • the Queue_Binary_Device_Data object 268 places the response in the Binary_Device_Data_Queue 270 (step 360 in FIG. 14B).
  • the Parse_Binary_Device_Data object 272 retrieves and parses the data stored in the Binary_Device_Data_Queue 270 (step 362 in FIG. 14B).
  • the data is sent to the Process_Audit_Response object 274 by the Parse_Binary_Device_Data object 272 (step 364 in FIG. 14B).
  • the Process_Audit_Response object 274 places a copy of the retrieved data in the Audit_Cmd_Queue 236 and matches the data with the original audit command (step 366 in FIG. 14B).
  • the Audit_Cmd_Queue 236 is the same queue in which audit commands are placed by the Queue_Device_Cmds object 230 .
  • the matching of the response with the original command is achieved by matching sequence numbers.
  • the response includes the same sequence number that was added by the Queue_Device_Cmds object 230 .
  • the Process_Audit_Response object 234 controls the submission of audit commands by ensuring that a command to a particular network device is not submitted until response to the last audit command is received.
  • the Process_Audit_Response object 274 has access to the Realtime_Network_Device_Data 256 and updates this data in response to the received response data.
  • the Process_Audit_Response object 274 sends the response, NIFTE_Force_Audit_Resp 278 to the client application program that sent the original command.
  • the Respondent_Mailbox_List 308 is used to determine where to send the response (step 368 in FIG. 14B).
  • the Queue_Device_Cmds object 230 may also receive port connect and port disconnect commands from the Verify_Device_Cmds object 120 (FIG. 5).
  • FIGS. 15 A- 15 C provide a flowchart of the steps that are performed in processing such port connect and port disconnect commands within the device-specific interface module 52 (FIG. 4).
  • the Queue_Device_Cmds object 230 assigns a sequence number to the received port connect or port disconnect command (step 370 in FIG. 15A).
  • the sequence numbers are obtained from the Next_Sequence_Number server 234 , which was discussed above.
  • the Queue_Device_Cmds object 230 then places the connect or disconnect command in the Connect_Disconnect_Cmd_Queue 238 (step 372 in FIG. 15A).
  • This queue is dedicated to the destination network device to which the command is destined.
  • multiple connect/disconnect commands are bundled together and received and forwarded to network devices 20 A- 20 N in bundles.
  • the maximum bundle size is the maximum number of commands that a particular network device 20 A- 20 N can handle.
  • the maximum bundle interval is the time that the Queue_Device_Cmds object 230 is instructed to wait prior to submitting a next bundle of commands for processing. This prevents excess waiting to collect a sufficient number of connect/disconnect commands to realize the maximum bundle size.
  • the Queue_Device_Cmds object 230 retrieves the maximum bundle size (i.e., max_batch_size), maximum bundle interval (i.e., max_batch_interval) 280 , and the number of unsubmitted commands in the Connect_Disconnect_Cmd_Queue 238 , which is designated as Num_Unsubmitted_Cmds 242 .
  • the Queue_Device_Cmds object 230 determines whether the maximum bundle size has been reached by comparing the Num_Unsubmitted_Cmds 242 with the retrieved maximum bundle size and also determines whether the maximum bundle interval has been reached (step 376 in FIG. 15A).
  • the object must wait for the next connect/disconnect command (step 378 in FIG. 15A). However, if the maximum bundle size has been reached or if the maximum bundle interval has been reached (as checked in step 376 of FIG. 15A), the Queue_Device_Cmds object 230 submits the bundle of commands to the Format_And_Submit_Cmds object 252 for future processing (step 380 in FIG. 15A).
  • the Format_And_Submit_Cmds object 252 sends the max_batch_interval to an interrupt generator 273 that generates a wakeup_interrupt 275 when the maximum interval has been reached.
  • the Format_And_Submit_Cmds object 252 also looks at some additional values 277 in determining whether to send a command or not.
  • the Max_Cmd_Age_Before_Resending specifies the maximum amount of time that may be waited after a command is initially sent out before resending due to the lack of a response.
  • the Max_Resend_Retries value specifies how many times a command may be resent before efforts are exhausted.
  • the Cmd_Metering value specifies a maximum number of commands that may be concurrently outstanding.
  • the Format_And_Submit_Cmds object 252 retrieves device-type and version information for the destination device from the Device_Status file 254 (step 382 in FIG. 15A). This information is used to determine the device type and current version information for the destination network device 20 A- 20 N.
  • the Format_And_Submit_Cmds object 252 subsequently retrieves device configuration information from the Realtime_Network_Device_Data 256 (step 384 in FIG. 15A) to determine if the network device is properly configured and can receive the connect/disconnect command.
  • the Format_And_Submit_Cmds object 252 creates a connect/disconnect command in the device-specific format of the destination network device 20 A- 20 N (step 386 in FIG. 15A).
  • a copy of the device-specific command is placed in the Connect_Disconnect_Cmd_Queue 238 (step 388 in FIG. 15A).
  • the Format_And_Submit_Cmds object 252 sends a request to the Manage_Binary_Links object 258 to examine connect channel status for the binary links 42 A- 42 N and 44 A- 44 A (step 390 in FIG. 15A).
  • the Manage_Binary_Links object 258 checks the status of the connect channels 282 of the binary links (step 392 in FIG. 15A) and sends this information in a Binary_Link_Status message 262 that is sent to the Format_And_Submit_Cmds object 252 (step 394 in FIG. 15A).
  • Connect/disconnect commands can be sent over the primary communication pathway or the backup communication pathway that passes through communication gateway 24 (FIGS. 1 and 3). If the connect channels on both the primary links are unavailable, the backup link may be utilized.
  • the Format_And_Submit_Cmds object 252 determines whether the connect channel on the binary links is available or not. If the connect channel on the primary or backup binary link is available, the Format_And_Submit_Cmds object 252 sends the formatted connect/disconnect command to the Manage_Binary_Links object 258 (step 398 in FIG. 15B). The Manage_Binary_Links object 258 sends the command as a Binary_Device_Cmd command 264 to the destination network device (step 400 in FIG. 15B).
  • the destination network device receives the connect/disconnect command and generates a response. This response is forwarded to the Queue_Binary_Device_Data object 268 (step 402 in FIG. 15B).
  • the Queue_Binary_Device_Data object 268 places the response in the Binary_Device_Data_Queue 270 (step 404 in FIG. 15B).
  • the Parse_Binary_Device_Data object 272 retrieves the response from the Binary_Device_Data_Queue 270 and parses the response (step 406 in FIG. 15B).
  • the Parse_Binary_Device_Data object 272 sends a response command to the Process_Connection_Response object 304 (step 408 in FIG. 15B).
  • the Process_Connection_Response object 304 places a copy of the response in the Connect_Disconnect_Cmd_Queue 238 , where the response is matched with the original command on the basis of the sequence number (step 410 in FIG. 15B).
  • the Process_Connection_Response object 304 updates the Realtime_Network_Device_Data 256 in view of the response.
  • the Process_Connection_Response object then generates a response 310 or 312 that is sent to the client application program that sent the initial command (step 412 in FIG. 15B).
  • the Format_And_Submit_Cmds object 252 sends a request for the status of the connection channel to the Send_Cmd_IDCS_Link object 284 (step 414 in FIG. 15B).
  • the Send_Cmd_IDCS_Link object 284 checks the status of the connect channel 283 on the backup link (step 416 in FIG. 15B), and it sends an IDCS message 286 that contains information regarding the status of the connect channel 283 on the backup link to the Format_And_Submit_Cmds object 252 (step 418 in FIG. 15B).
  • the Format_And_Submit_Cmds object 252 makes a determination of whether the connect channel on the backup link is available.
  • the Format_And_Submit_Cmds object 252 sends a formatted connect/disconnect command to the Send_Cmd _IDCS_Link object 284 (step 422 in FIG. 15B).
  • the Send_Cmd_IDCS_Link object 284 sends the connect/disconnect command as an IDCS_Gateway_Cmd command 290 to the destination network device (step 424 in FIG. 15B).
  • the destination network device receives the command and attempts to connect or disconnect the port depending on the nature of the command.
  • a response is sent from the destination network device.
  • This response IDCS_Gateway_RESP 294 , is received by the Queue_IDCS_GW_Responses object 292 (step 426 in FIG. 15B).
  • This object 292 places the response in the IDCS_GW_Data_Queue 296 (step 428 in FIG. 15B).
  • the Parse_IDCS_GW_Responses object 300 retrieves and parses the response that was placed in the IDCS_GW_Data_Queue 296 (step 430 in FIG. 15B).
  • the Parse_IDCS_GW_Responses object 300 sends the command to the Process_Connection_Response object 304 (step 432 in FIG. 15B) where it is processed as discussed above beginning at step 410 .
  • the Format_And_Submit_Cmds object 252 rejects the connect/disconnect command (step 434 in FIG. 15C).
  • the Format_And_Submit_Cmds object 252 then sends a response to the client application program indicating the rejection (step 436 in FIG. 15C).
  • Commands that are received by the Queue_Device_Cmds object may be administrative commands as well. These commands are immediately placed in the Administration_Cmd_Queue 240 where they are immediately submitted by the Format_And_Submit_Cmds object 252 .
  • the administration commands are generated by the NIFTE at startup to configure the binary links 42 A- 42 N, 44 A- 44 N, network device identifiers, and alarm filter tables. Such administrative commands may be sent over the admin_channel 261 to the Manage_Binary_Links object 258 , that sends the commands to the appropriate destination.
  • the Manage_Binary_Links object 258 manages the binary links 42 A- 42 N and 44 A- 44 N by monitoring such links and determining the most reliable link of each pair which it designates as the primary link.
  • the Manage_Binary_Links object 258 is also responsible for switching communications from one link to another when one fails, dynamically configuring links, and providing maintenance.
  • the Manage_Binary_Links object 258 ensures that links are available by sending keepalive commands to network devices 20 A- 20 N at regular intervals.
  • the keepalive commands cause the network devices to perform no action, but solicit responses from the network devices and the corresponding link if both are still properly functioning.
  • a Keepalive_Timer 263 triggers the Manage_Binary_Links object 258 to send a keepalive command at specified time intervals.
  • the Manage_Binary_Links object 258 requeues the Keepalive-Timer 263 after the sending of a keepalive command by sending a Keepalive_Timer_Interval message 265 to the Keepalive_Timer 263 .
  • the Manage_Binary_Links object 258 will disconnect and reconnect the link.
  • the responses to keepalive commands are sent via the Queue_Binary_Device_Data object 268 , which sends a Keepalive_Timer_Interval message 265 to the Keepalive_Timer 263 to confirm the availability of the associated link.
  • the Manage_Binary_Links object 258 determines the most reliable link of a binary link pair and designates the most reliable link as the primary link. The other pair is designated as the secondary link. If the primary link fails, the Manage_Binary_Links object 258 switches communications to the secondary link.
  • the Manage_Binary_Links object 258 is able to dynamically configure a binary link. If configuration or maintenance of a primary link is required, this object switches communications to the secondary link, designates a secondary link to be the new primary link, and brings down the old primary link. When this configuration is complete, the newly designated secondary link is brought back up, but communications remain with the newly designated primary link. This approach ensures availability of communications even during configuration and maintenance activities.
  • the Queue_Binary_Device_Data object 268 may also receive unsolicited alarms from network devices 20 A- 20 N.
  • FIG. 16 is a flowchart illustrating the steps that are performed in such instances. Initially, the Queue_Binary_Device_Data object 268 receives a unsolicited alarm from a network device 20 A- 20 N (step 440 in FIG. 16). The Queue_Binary_Device_Data object 268 places the unsolicited alarm in the Binary_Device_Data_Queue 270 (step 442 in FIG. 16). The Parse_Binary_Device_Data object 272 retrieves the unsolicited alarm from the queue and parses the alarm (step 444 in FIG.
  • the Parse_Binary_Device_Data object 272 sends the parsed alarm to the Process_Unsolicited_Alarms object 318 (step 446 in FIG. 16).
  • This object 318 queries the Alarm_Subscriber_List 320 to identify any client application programs that have registered to receive such an unsolicited alarm (step 448 in FIG. 16).
  • the Process_Unsolicited_Alarms object 318 then formats the unsolicited alarm and sends the unsolicited alarm to the client application programs by sending a NIFTE_Alarm_Notification message 322 (step 450 in FIG. 16).
  • the Process_Unsolicited_Alarms object 318 updates the Realtime_Network_Device_Data 256 with the alarm status information (step 452 in FIG. 16).
  • FIG. 17 shows the architecture of the initialization module 54 (FIG. 4). Specifically, FIG. 17 shows a data flow diagram of the objects that make up the initialization component.
  • the initialization module includes the Initialize_NIFTE object 460 . This object 460 is responsible for starting the initialization process.
  • the Initialize_NIFTE object 460 receives a start message to start initialization with a specified device number, Device_Num, 462 (step 500 in FIG. 18).
  • the Device_Num in the start message identifies a particular network device 20 A- 20 N with which the current instance of the NIFTE is to establish communications.
  • the Initialize_NIFTE object 460 begins initialization and reads the Realtime_Network_Device_Data 256 to obtain configuration information that is needed to open the binary links 42 A- 42 N and 44 A- 44 N (step 502 in FIG. 18).
  • the Initialize_NIFTE object 460 also reads in the System_Logicals 108 from the operating system for later use (step 504 in FIG. 18).
  • the Current_NIFTE_State 98 is established and sent out by the Initialize_NIFTE object 460 (step 506 in FIG. 18).
  • the Initialize_NIFTE object 460 sends an Audit_Interval message 464 to the Audit_Interval_Timer 102 (FIG. 5) to establish the audit interval (step 508 in FIG. 18).
  • Initialize_NIFTE object 460 triggers the execution of the Initialize_Binary_Links object 466 , the Initialize_IDCS_Link object 468 , and the Configure_Device object 470 (step 510 in FIG. 18).
  • the Initialize_Binary_Links object 466 retrieves information that is needed to open the binary links 42 A- 42 N and 44 A- 44 N from the Initialize_NIFTE object 460 . This is the information that was retrieved from the Realtime_Network_Device_Data 256 by the Initialize_NIFTE object 460 .
  • the Initialize_Binary_Links object 466 sends a message with the configuration data to the Manage_Binary_Links object 258 (FIG. 13) to open the binary links (step 512 in FIG. 18).
  • the Initialize_IDCS_Link object 468 receives data from the Initialize_NIFTE object 460 to open backup link.
  • the Initialize_IDCS_Link object 468 then sends a message with this data to the Send_Cmd_IDCS_Link object 284 (FIG. 13) to open the backup link (step 514 in FIG. 18).
  • the Configure_Device object 470 initiates administrative processing. This object 470 sends administrative commands 474 to the network devices 20 A- 20 N to solicit information from such devices (step 516 in FIG. 18).
  • the commands include the Set_Node_ID command, the Retrieve_Software_Version command, and the Configure_Alarm_Filters command. Responses 472 to these commands are subsequently received by the Configure_Device object.

Abstract

A generic interface is provided for interfacing multiple client application programs with multiple network devices. The client application programs may differ from each other and may include application programs for performing a network restoration, network maintenance, and network administration. The network devices may be of different device types. The interface converts communications between the client application programs and the network devices so that the communications are compatible with the requirements of the destination. The interface may include added functionality, such as an automatic auditing mechanism and a data link manager mechanism.

Description

    TECHNICAL FIELD
  • The present invention relates generally to telecommunications networks and, more particularly, to an interface for interfacing client programs with network devices in a telecommunications network. [0001]
  • BACKGROUND OF THE INVENTION
  • Telecommunication networks, such as telephone networks, include a number of different components. Typically, telecommunication networks include network devices that are interconnected by links that facilitate communications. Examples of network devices are digital cross-connects (DXCs), multiplexing equipment, line termination equipment, computer systems, and fiber transmission systems. A “link,” as used herein, is a physical connection between network devices that carry network traffic. A single link may include multiple trunks where a “trunk” is a logical channel of communication with capacity that traverses one or more network devices and/or one or more links between network devices. [0002]
  • As was mentioned above, network devices may be of many different types. Consider a DXC that switches communication trunks based on external commands. There are many different types of DXCs and there are many different vendors who sell DXCs. Typically, each vendor's device has its own command set and its own format for data messages that contain commands. [0003]
  • Most telecommunication networks utilize a variety of network devices and managing such devices with common control systems is difficult. For example, a restoration system that restores traffic within a telecommunications network after a failure must be able to communicate with each of the different types of devices that are used to realize restoration. These devices include DXCs. The central control system must be able to send commands to and receive messages from each DXC within the affected area of the network. The central control system must be able to identify the type of device and the format of commands for that device. In addition, the central control system must be able to receive messages in different formats from different types of devices and interpret these messages in a common generic manner. These difficulties are complicated by many of the network devices being programmable devices that execute a given version of software. Identical devices may execute different versions of software and, hence, give rise to additional compatibility issues. [0004]
  • SUMMARY OF THE INVENTION
  • The present invention overcomes the difficulties of the prior art by providing a common interface that may interface multiple client programs with multiple network devices. The interface communicates with the client programs in a common format and communicates with the network devices in device-specific formats. The interface is able to convert communications from the device-specific formats of the network device into the common format of the client programs. Likewise, the interface is able to convert communications from the client programs in the common format into communications in the device-specific formats of the network devices. The interface may also include additional functionality, such as automatic auditing and monitoring of data links to utilize optimal data links. [0005]
  • In accordance with a first aspect of the present invention, a method of interfacing a program with network devices is performed by a computer system in a telecommunications network. An interface is provided for interfacing the program with the network devices, where each network devices has a device-specific communication format. A first communication, that is destined to selected network device, is received at the interface from the program in a first format. The interface converts the first communication from the first format to a second format that is the device-specific communication format of the selected network device to which the communication is destined. The converted communication is then forwarded in the second format from the interface to the selected network device. [0006]
  • In accordance with another aspect of the present invention, a telecommunication network includes a program that is run on a processor. The program adopts a communication format for communications. The telecommunications network also includes a number of network devices, where each network device has a device-specific communication format. An interface is provided in the telecommunications network for interfacing the program with the network devices to facilitate communications between the program and the network devices. The interface includes a converter for converting communications from the program that are destined to network devices into the device-specific communication formats of the network devices. [0007]
  • In accordance with a further aspect of the present invention, a computer-implemented method is practiced in a telecommunications network that has a network device, a processor that runs a program, and data links that lead to the network device. An interface is provided that interfaces the program with the network device. The interface determines which of the data links is most reliable and determines the data link to be the primary link that is to be used for communications with the network device. Another one of the data links is designated as a secondary link to be used for communications with the network device when the primary link fails.[0008]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • An exemplary embodiment to the present invention will be described in more detail below relative to the following figures. [0009]
  • FIG. 1 is a block diagram illustrating a portion of the telecommunications network that is suitable for practicing a first option in accordance with the present invention. [0010]
  • FIG. 2 is a block diagram illustrating the computer system of FIG. 1 in more detail. [0011]
  • FIG. 3 is a block diagram of a portion of a telecommunications network that is suitable for practicing a second option in accordance with the present invention. [0012]
  • FIG. 4 illustrates the major components of the NIFTE of the exemplary embodiment of the present invention. [0013]
  • FIG. 5 is a data flow diagram for the common interface module of FIG. 4. [0014]
  • FIG. 6 is a flow chart illustrating the steps that are performed by the Queue_Input_Cmds object of FIG. 5. [0015]
  • FIG. 7 is a flow chart illustrating the steps performed by the Parse_Input_Cmds object of FIG. 5. [0016]
  • FIG. 8 is a flow chart illustrating the steps that are performed by the NIFTE_Data_Manager object of FIG. 5. [0017]
  • FIG. 9 is a flow chart illustrating the steps that are performed by the Administer_Alarm_Subscriber_List object of FIG. 5. [0018]
  • FIG. 10 is a flow chart illustrating the steps that are performed by the NIFTE_Shutdown object of FIG. 5. [0019]
  • FIG. 11A is a flow chart illustrating the steps that are performed by the Process_State_Changes object of FIG. 5 when it receives a Change_Readiness_Mode_Cmd command. [0020]
  • FIG. 11B is a flow chart illustrating the steps that are performed by the Process_State_Changes object of FIG. 5 when it receives a Change_Ex_State_Cmd command. [0021]
  • FIG. 12 is a flow chart illustrating the steps that are performed by the Verify_Device_Cmds object of FIG. 5. [0022]
  • FIG. 13 is a data flow diagram for the components of the device-specific interface module of FIG. 4. [0023]
  • FIGS. 14A and 14B depict a flow chart of the steps performed by the device-specific interface when an audit command is received. [0024]
  • FIGS. 15A, 15B, and [0025] 15C show a flow chart of the steps performed by the device-specific interface module when a port connect or port disconnect command is received.
  • FIG. 16 is a flow chart illustrating the steps that are performed when an unsolicited alarm is received by the NIFTE. [0026]
  • FIG. 17 is a data flow diagram for the components of the initialization module of FIG. 4. [0027]
  • FIG. 18 is a flow chart illustrating the steps performed by the initialization module.[0028]
  • DETAILED DESCRIPTION OF THE INVENTION
  • The exemplary embodiment of the present invention described herein provides a generic interface that interfaces client application programs with multiple network devices. The client application programs may perform different functionality including restoration, maintenance, and administration of a telecommunications network. The interface is especially well adapted for use in a telephone network, and for purposes of discussion below, it is assumed that the interface is utilized in a telephone network. The interface converts communications originating in a common format shared by the client application programs into device-specific formats of the network devices. Conversely, the interface converts communications from the network devices in the device-specific format into communications in the common format of the client application programs. As a result, the interface enables free communication between the client application programs and the network devices. The client application program need not have code and configuration information for communicating with each of the various network devices. Similarly, the network devices need not have added components for communicating directly with the client application programs. The interface, thus, greatly simplifies the ability of the client application programs to communicate with the network devices. [0029]
  • The interface may be implemented in computer-executable instructions. The interface may be implemented in software, hardware, firmware, or a combination thereof. As will be described in more detail below, multiple instances of the interface may be present within a given telecommunications network. The interface may include additional functionality, such as an automatic auditing functionality that generates audit requests at periodic intervals without external prompting. The audit request audits the network devices to retrieve information regarding status and configuration of the network devices. The interface may also include functionality for managing data links that connect the interface with the network devices. This functionality enables the interface to determine which of the data links leading to a given network device is most reliable. This most reliable data link is designated as a primary link for carrying communications to and from the network device. A secondary link is also designated to serve as a backup link that becomes operational when the primary link fails. The interface includes intelligence for changing what links are designated as the primary link and the secondary link in response to changing events and conditions within the telecommunications network. [0030]
  • FIG. 1 depicts a portion of a telecommunications network that represents a first option under the present invention. A second option will be discussed in more detail below. A [0031] computer system 10 is interfaced with network resources 12. The computer system 10 executes a number of client application programs 14A-14N, which may include an application program 14A for performing dynamic network restoration of the telecommunications system. The restoration application program 14A receives alarms from network devices and sends commands to the devices to restore traffic on the telecommunications network after a failure. The client application programs may also include a maintenance application program 14B that sends maintenance commands to network devices within the telecommunications system. Those skilled in the art will appreciate that different client application programs may be run on the computer system 10 and that additional client application programs may also be run on the computer system. Moreover, the application programs need not be run on a single computer system, but rather may be run on multiple computer systems that are in communication with each other.
  • The computer system stores real-time network device data that reflects the current configuration and topology in the network. This data may be organized in a [0032] separate database 16. The computer system 10 also executes an interface known as the network item front end (NIFTE). The NIFTE 18 serves as the common interface between the application programs and network devices. The details of the NIFTE 18 will be described below.
  • The [0033] network resources 12 communicate with the computer system 10 via the NIFTE 18. The network resources 12 includes a number of network devices 20A-20N. Those skilled in the art will appreciate that the network devices may be any of a number of different types of telecommunication devices, including digital cross connects (DXC). As discussed above, DXCs are devices that switch trunks among various ports in order to route traffic. DXCs play a critical function in network restoration. They are able to monitor traffic on their ports and generate alarms when an outage is detected. In addition, DXCs may receive and process commands from the restoration client application program 14A to restore network traffic. For purposes of the discussion below, it is assumed that the network devices 20A-20N are DXCs.
  • The [0034] NIFTE 18 has a backup communication path to each network device via communication gateway 24. The gateway 24 serves as a network concentrator interface between the NIFTE 18 and the network resources 12. Communication links 21 and 23 provide connectivity between the communication gateway 24 and the NIFTE 18 and the site controllers 22A-22N and the NIFTE, respectively. The communication links 21 and 23 may be standard X.25 connections. The site controllers 22A-22N provide access to the network devices 20A-20N. A separate site controller is located at each site.
  • FIG. 2 shows a computer system configuration that is suitable for the [0035] computer system 10 of FIG. 1. The computer system includes a central processing unit (CPU) 26 that communicates with a number of peripheral devices, including a video display 28, a mouse 30, and a keyboard 32. The CPU 26 also has access to a memory 34 and a secondary storage 36. Objects for implementing the NIFTE 18 are stored in the memory 34 along with the client application programs 14A-14N. The real-time network device data 16 may be stored within a secondary storage 36 or resident within the primary memory 34. The computer system 10 may further include a modem 38 for enabling the computer system to send communications and receive communications over a telephone line. The computer system 10 may also include a network adapter 40 for interfacing with a network having computing resources.
  • Those skilled in the art will appreciate that the computer system configuration depicted in FIG. 2 is intended to be merely illustrative and not limiting of the present invention. The present invention may be practiced with other computer system configurations. As was discussed above, the [0036] client programs 14A-14N and the NIFTE 18 may reside on different machines. Moreover, the computer system 10 may be implemented as a distributed computing system rather than a single processor or personal computer system.
  • FIG. 3 depicts a second option under the present invention wherein multiple instances of the NIFTE are provided. In the embodiment depicted in FIG. 3, [0037] NIFTEs 18A-18N are provided such that each network device 20A-20N has its own corresponding NIFTE. Each instance of the NIFTE includes the same code but is implemented as a separate process by the computer system 10. Each client application program 14A-14N may communicate with a given network device 20A-20N via the NIFTE that is associated with the network device. As shown in FIG. 3, each client application program has a connection with each NIFTE. Moreover, each NIFTE has access to the real-time network device data database 16.
  • Each [0038] NIFTE 18A-18N is connected to its corresponding network device 20A-20N via two redundant data links 42A-42N and 44A-44N, which may be, for example, X.25 data links. Each such data link 42A-42N and 44A-44N is designated as being a primary link or a secondary link for the associated network device 20A-20N. Communications between the NIFTE 18A-18N and the network device 20A-20N are performed over one link at a time where the link that is not being used serves as a backup secondary link. For each link pair, the NIFTE designates one of the links as a primary link and the other link as a secondary link. Preferably, the NIFTE designates the more reliable link as the primary link. In general, when the NIFTE establishes communication with a network device 20A-20N, the connection request is sent over both links in the pair of links leading to a particular network device, and the first link to respond with a connection is designated as the primary link wherein the other link is designated as a secondary link. If a primary link fails, the NIFTE automatically shifts its communication to the designated secondary link and changes the designation of the link so that the secondary link is a new primary link.
  • It should be appreciated that each of the [0039] binary data links 42A-42N and 44A-44N may include multiple logical channels of communications. For instance, an Alcatel DXC device supports four logical channels per link. The number of logical channels may depend upon the type of network device.
  • As was mentioned above, the [0040] communication gateway 24 serves as a backup communication path in the event that the data links 42A-42N and 44A-44N for a particular network device 20A-20N fail.
  • Each [0041] NIFTE 18A-18N is capable of providing administrative and maintenance functions to the network devices 18A-18N. The maintenance system 14B generates commands to perform maintenance functions such as the enablement and disablement of binary links, the dynamic configuration of binary links, and the changing of internal configuration parameters. Each NIFTE may also generate automatic audits of network devices at periodic intervals.
  • FIG. 4 depicts a high-level internal architectural diagram of the [0042] NIFTE 18. Each instance of a NIFTE 18 is comprised of three main software modules: a common interface module 50, a device-specific interface module 52, and an initialization module 54. The common interface module 50 is responsible for receiving commands from client application programs 14A-14N in a common format syntax. It communicates with the device-specific interface module 52 to forward commands to the network devices 20A-20N. In addition, the common interface module 50 receives responses to the commands from the network devices 20A-20N via the device-specific interface module 52 and forwards the responses in a converted format to the client application programs 14A-14N. The common interface module 50 performs automated auditing and administration by generating its own commands. The device-specific interface module 52 converts commands from the common format to a device-specific format that is required by the destination network device 20A-20N. The device-specific interface module 52 also receives responses from the network devices 20A-20N and converts the responses into the common format so that the responses may be forwarded to the appropriate client application programs 14A-14N via the common interface module 50. The initialization module 54 performs initialization upon the startup of the NIFTE 18. These functions include the initialization of binary data links 42A-42N and 44A-44N in determining network device configuration information.
  • In the preferred embodiment, the [0043] common interface module 50 is implemented as a number of different objects. FIG. 5 is a data flow diagram that shows data flow among the respective objects of the common interface module 50. The discussion below details the functions performed by these objects. The Queue_Input_Cmds object 62 is responsible for receiving commands from the client application programs 14A-14N and queuing these commands for distribution to other objects within the common interface module 50. As can be seen in FIG. 5, the commands 60 received by the Queue_Input_Cmds object 62 are placed in the Input_Cmd_Queue 64. The following commands may be received at the Queue_Input_Cmds object 62.
  • Change_Ex_State_Cmd [0044]
  • Change_Readiness_Mode_Cmd [0045]
  • NIFTE_Force_Audit_Cmd [0046]
  • NIFTE_Alarm_Registration_Cmd [0047]
  • NIFTE_Port_Connect_Cmd [0048]
  • NIFTE_Port_Disconnect_Cmd [0049]
  • NIFTE_Data_Update_Cmd [0050]
  • NIFTE_Stop_NIFTE_Cmd [0051]
  • The Change_Ex_State_Cmd command is responsible for changing the execution state of the [0052] NIFTE 18. The execution state will be described in more detail below. The Change_Readiness_Mode_Cmd command changes the readiness mode of the NIFTE 18. The readiness mode will also be described in more detail below. The NIFTE_Force_Audit_Cmd command causes an audit of a network device to be initiated. The NIFTE_Alarm_Registration_Cmd command requests that certain unsolicited alarms originating from the network devices 20A-20N be sent to a client application program. The NIFTE_Port_Connect_Cmd command instructs a network device 20A-20N to connect a port. Conversely, the NIFTE_Port_Disconnect_Cmd command instructs the network device to disconnect a port. The NIFTE_Data_Update_Cmd command updates data within the NIFTE's internal configuration or within the real-time network device data. The NIFTE_Data_Request_Cmd command requests that data be retrieved either from the NIFTE's internal configuration or from the real-time network device data. Lastly, the NIFTE_Stop_NIFTE_Cmd command causes the NIFTE 18 to shut down.
  • FIG. 6 is a flowchart illustrating the steps that are performed when one of the above-described commands is received by the Queue_Input_Cmds object [0053] 62. Initially, the command is received from one of the client application programs 14A- 1 4N (step 140 in FIG. 6). The Queue_Input_Cmds object 62 then adds the received command to the Input_Cmd_(Queue 64 (step 142 in FIG. 6). Upon receipt of the command, the Queue_Input_Cmds object 62 also dispatches a Set_Event message 66 to wake up 68 the Parse Input_Cmds object 70 (step 144 in FIG. 6). The dispatching of the Set_Event message 66 causes a wake up 68 of the Parse_Input_Cmds object 70 (step 146 in FIG. 6).
  • The Parse_input_Cmds object [0054] 70 is responsible for distributing commands that are stored in the Input_Cmd_Queue 64 to the appropriate destination objects. FIG. 7 is a flowchart of the steps performed for a single retrieve command by the Parse_Input_Cmds object 70. Initially, the Parse_Input_Cmds object 70 retrieves a command from Input_Cmd_Queue 64 (step 148 in FIG. 7). The Parse_Input_Cmds object 70 then identifies the type of the command (step 150 in FIG. 7). Based upon the type of command, the Parse_Input_Cmds object 70 determines where to distribute the command for proper processing. If the command is a NIFTE_Data_Update_Cmd command or a NIFTE_Data_Request_Cmd command (see step 152 in FIG. 7), the Parse_Input_Cmds object sends the command to the NIFTE_Data_Manager object 72 (step 154 in FIG. 7). If the command is the NIFTE_Alarm_Registration_Cmd command (see step 156 in FIG. 7), the Parse_Input_Cmds object 70 sends the command NIFTE_Alarm_Registration_Cmd to the Administer_Alarm_Subscriber_List object 82 (step 158 in FIG. 7). If the command is a NIFTE_Stop_NIFTE_Cmd command (see step 160 in FIG. 7), the Parse_Input_Cmds object 70 sends the command to the NIFTE_Shutdown object 92 (step 162 in FIG. 7). If the command is a Change_Ex_State_Cmd command or a Change_Readiness_Mode_Cmd command (see step 164 in FIG. 7), then the command is sent to the Process_State_Changes object 96 (step 166 in FIG. 7). If the command is a NIFTE_Force_Audit_Cmd command, a NIFTE_Port_Connect_Cmd command or a NIFTE_Port_Disconnect_Cmd command, the command is sent to the Verify_Device_Cmds object 120 (step 168 in FIG. 7).
  • As was discussed above, NIFTE_Data_Update_Cmd commands and NIFTE_Data_Request_Cmd commands get sent to the NIFTE_Data_Manager object [0055] 72. FIG. 8 is a flowchart of the steps performed by this object. Initially, the NIFTE_Data_Manager object 72 receives the command from the Parse_Input_Cmds object 70 (step 170 in FIG. 8). The NIFTE_Data_Manager object 72 then accesses the data to update or retrieve the data, depending upon the command (step 172 in FIG. 8). If the data update or request is for internal NIFTE configuration information, the NIFTE_Data_Manager object 72 will access the NIFTE's internal data tables to make the update. If the request or update is not for internal NIFTE configuration information, the RealTime_Network_Device_Data 126 is accessed from the real-time network device data database 16 (FIG. 1) to gain access to the appropriate data. The NIFTE_Data_Manager object 72 then sends a response to the client application program 14A-14N that sent the command (step 174 in FIG. 8). A NIFTE_Data_Update_Resp response 74 is sent for each NIFTE_Data_Update_Cmd command that is received, and a NIFTE_Data_Request_Resp response 75 is sent for each NIFTE_Data_Request_Cmd command that is received. In addition, data is returned in response to the NIFTE_Data_Request_Cmd. The responses 74 and 75 confirm that the corresponding command was received and processed. In generating these responses 74 and 75, the NIFTE_Data_Manager object 72 uses a Respondent_List 90 that holds a list of all client application programs 14A-14N and the logical addresses for such client application programs.
  • The NIFTE_Data_Manager object [0056] 72 may generate a status message (Status_Msg) 78 from time to time when certain qualifying events are performed or detected. Examples of qualifying events include detection of an error or completion of a task that a user wishes to know about. Such status messages are kept in an internal log for the NIFTE 18 and are available to users to view a report. Other objects within the common interface module 50 (FIG. 4) also generate such status messages. For example, the Parse_Input_Cmds object 70 generates a Status_Msg message 80 when qualifying events occur.
  • FIG. 9 depicts the steps that are performed by the Administer_Alarm_Subscriber_List. FIG. 9 is a flowchart illustrating the steps performed by the Administer_Alarm_Subscriber_List object [0057] 82 when it receives a NIFTE_Alarm_Registration_Cmd command from the Parse_Input_Cmds object 70. Initially, the command is received (step 176 in FIG. 9). The Administer_Alarm_Subscriber_List object 82 then registers the alarm request with the Alarm_Subscriber_List 84 (step 178 in FIG. 9). The NIFTE_Alarm_Registration_Cmd commands are sent to the Administer_Alarm Subscriber_List object 82 for a client application program to register unsolicited alarms such that the client application program receives alarms from the network devices 20A-20N that would not usually be forwarded to the client application programs. The Alarm_Subscriber_List 84 is a list of client application programs that are registered by request to receive unsolicited alarms, and the list is updated and maintained by the Administer_Alarm_Subscriber_List object 82. The Administer_Alarm_Subscriber_List object 82 generates a response, NIFTE_Alarm_Registration Resp 86 to the registered client application programs 14A-14N (step 180 in FIG. 9). The response confirms that the alarm registration command was received and processed. The Administer_Alarm_Subscriber_List object 82 uses the Respondent_List 90 to locate the name and address of the client application program to which the response is sent.
  • Like other objects in the [0058] common interface module 50, the Administer_Alarm_Subscriber_List object 82 will generate a Status_Message 88 when certain triggering events occur.
  • The NIFTE_Shutdown object [0059] 92 may receive NIFTE_Stop_NIFTE_Cmd commands from the Parse_Input_Cmds object 70. FIG. 10 is a flowchart illustrating the steps that are performed in such an instance. Initially, the NIFTE_Shutdown object 97 receives the NIFTE_Stop_NIFTE_Cmd command (step 182 in FIG. 10). The NIFTE_Shutdown object 92 generates a response (i.e., NIFTE_Stop_NIFTE_Resp 94) that it sends to the client application program 14A-14N that initiated the command (step 184 in FIG. 10). The NIFTE_Shutdown object 92 then proceeds to shutdown the NIFTE (step 186 in FIG. 10).
  • Each NIFTE operates in one of two execution states: primary or backup. To enhance fault tolerance, the preferred embodiment provides two instances of the NIFTE; one that serves as the active or primary NIFTE and one that serves as backup NIFTE. Preferably, these instances of the NIFTE are run on separate computer systems. When a NIFTE transitions from the primary execution state to the backup execution state, the NIFTE closes its communications with the rest of the network and brings down its [0060] binary links 42A-42N and 44A-44N. While the NIFTE transitions from the backup execution state to the primary execution state, the NIFTE opens its binary links 42A-42N and 44A-44N and begins communications. Such transitions in execution state are triggered by a Change_Ex_State_Cmd command.
  • The [0061] primary NIFTE 18 may also operate in one of two readiness modes: normal and alert. The normal mode is the nominal mode of operation in which the NIFTE performs route auditing, administration, and other functions. When unsolicited alarms are received that indicate a network outage, the restoration system application program 14A sends a Change_Readiness_Mode_Cmd command to the NIFTE. This command triggers a change in the readiness mode such that the NIFTE transitions to the alert readiness mode. In the alert readiness mode, all auditing and background processing ceases, and the NIFTE 18 stands ready to receive and process NIFTE_Port_Connect_Cmd and NIFTE_Port_Disconnect_Cmd commands from the restoration 14A.
  • FIG. 11A illustrates the steps that are performed by the Process_State_Changes object [0062] 96 when it receives a Change_Readiness_Mode_Cmd command. Initially, the command is received at the Process_State_Changes object 96 (step 190 in FIG. 11A). The Process_State_Changes object 96 then updates the state that is held in the Current_NIFTE_State 98 to reflect the change in readiness mode state. If the readiness mode state is changing from normal to alert (see step 194 in FIG. 11A), the Process_State_Changes object 96 sends an Audit_Interval message 100 to the Audit_Interval_Timer 102 to cease all automatic auditing operations, which are described in more detail below (step 196 in FIG. 11A). When the change is from the normal state to the alert state or vice versa, the Process_State_Changes object 96 proceeds to suspend all audits that are currently in progress (step 198 in FIG. 11A). Incomplete initial device audits that are performed during initialization, however, are not suspended. The Process_State_Changes object 96 then sends a Change_Readiness_Mode_Resp response 106 to the client application program that sent the initial command (step 200 in FIG. 11A).
  • FIG. 11B shows the steps that are performed by the Process_State_Changes object [0063] 96 when a Change_Ex_State_Cmd command is received. Initially, the object receives the Change_Ex_State_Cmd command (step 202 in FIG. 11B). The Process_State_Changes object 96 then checks the System_Logicals 108, which constitutes data from the operating system of the computer that indicates status and performance conditions of the computer, to ensure that the state change may be executed (step 204 in FIG. 11B). The state held in Current_NIFTE_State 98 is then modified to note the change in execution state (step 206 in FIG. 11B). If the command is for a change in execution state from primary to backup (see step 208 in FIG. 11B), commands 112 are sent to the binary links to close the binary links (step 210 in FIG. 11B). In addition, an Audit_Interval message 100 is sent to the Audit_Interval_Timer 102 to stop automated auditing (step 212 in FIG. 11B). In this case, the Process_State_Changes object 96 then sends a Change_Ex_State_Resp response 108 to the client application program that sent the initial command (step 218 in FIG. 11B).
  • If the command for a change from backup to primary (see [0064] step 208 in FIG. 11B), the Process_State_Changes object 96 reads in the Realtime_Network_Device_Data 110 to obtain information that will be needed to open the binary links 42A-42N and 44A-44N (step 214 in FIG. 11B). A command 112 is then sent to open the binary links and an Audit_Interval message 100 is sent to the Audit_Interval_Timer 102 to initiate automatic auditing (step 216 in FIG. 11B). A Change_Ex_State_Resp response 108 is sent to the client application program that sent the initial command (step 218 in FIG. 11B).
  • The Process_State_Changes object [0065] 96 generates a Status_Msg message 114 when certain events are triggered.
  • The Auto_Audit object [0066] 105 performs an automated auditing process for the NIFTE 18. The auditing process automatically generates NIFTE_Force_Audit_Cmd commands 116 at specified time intervals. These commands are sent to various ones of the network devices 20A-20N. The commands trigger response from the network devices 20A-20N such that the devices specify their internal configuration.
  • The [0067] Audit_Interval_Timer 102 triggers execution of the sending of such NIFTE_Force_Audit_Cmd commands 116. The timer 102 sends Audit_Interrupt messages 104 to the Auto_Audit object 105 to cause the Auto_Audit object to generate the NIFTE_Force_Audit_Cmd commands. Such commands are forwarded to the Queue_Input_Cmds object 62. After generating such a command, the Auto_Audit object 105 resets the Audit_Interval_Timer 102 by sending an Audit_Interval message.
  • The Verify_Device_Cmds object [0068] 120 receives and processes commands to connect ports, disconnect ports, and force audits from the Parse_Input_Cmds object 70. Specifically, the Verify_Device_Cmds object 120 receives NIFTE_Port_Connect_Cmd, NIFTE_Port_Disconnect_Cmd, and NIFTE_Force_Audit_Cmd commands from the Parse_Input_Cmds object 70. The Verify_Device_Cmds object 120 verifies that commands of the type it receives include the proper arguments and can be currently processed by device-specific interfaces.
  • FIG. 12 is a flow chart of the steps performed by the Verify_Device_Cmds object [0069] 120 in processing received commands. Initially, the Verify_Device_Cmds object 120 receives a port connect, port disconnect, or force audit command (step 220 in FIG. 12). The Verify_Device_Cmds object 120 then accesses the Current_NIFTE_State to ensure that the current operational mode 122 and execution state 124 are proper for processing of the command (step 222 in FIG. 12). For example, for the port connect and port disconnect commands, the appropriate execution state is the primary execution state and either readiness mode is acceptable. However, with the force audit command, the proper execution state is the primary execution state and the proper readiness mode is the normal mode. If the proper mode and state cannot be verified, the command is not further processed. If the proper operational mode 122 and execution state 124 have been verified in step 222 in FIG. 12, the Realtime_Network_Device_Data 126 is read in to verify arguments of the command (step 224 in FIG. 12). For example, for the port connect and port disconnect commands, the port range specified in the commands must be valid. The data is also used to obtain a network address for the network device 20A-20N to which the command is destined. If the arguments are verified, the command 128 is sent to the Queue_Device_Cmds object (which will be discussed in more detail below) for processing by the device-specific interface module (step 226 in FIG. 12). The Verify_Device_Cmds object 120 then sends an appropriate response 130, 132, or 134 to the client application program that initiated the command (step 228 in FIG. 12). If the command cannot be sent to the device-specific interface module for some reason, the Verify_Device_Cmds object 120 sends a response message indicating the inability to send the command. If the command is successfully sent; however, a response is sent to the client application program 14A-14N when the response is received from the network device 20A-20N.
  • FIG. 13 illustrates the architecture of the device-specific interface module [0070] 52 (FIG. 4) in more detail. In particular, FIG. 13 depicts a data flow diagram showing the data flow among the objects that comprise-specific interface module 52. As was discussed above, the device-specific interface module 52 receives client commands from the common interface module 50 in the common format and converts the commands into formats that are specific to destination network devices 20A-20N. The converted commands are forwarded to the destination network devices 20A-20N using the data links 42A-42N or 44A-44N. The device-specific interface module 52 receives responses and unsolicited messages from the network devices 20A-20N and converts the responses and messages into a common format. The device-specific interface module 52 is additionally responsible for managing the binary data links 42A-42N and 44A-44N.
  • Among the objects in the device-[0071] specific interface module 52 is the Queue_Device_Cmds object 230. This object is responsible for enqueing the device commands into appropriate queues. The discussion below will focus on the steps that are performed when different types of commands are received by the Queue_Device_Cmds object 230. FIGS. 14A and 14B illustrates the steps that are performed when an audit command is received by the Queue_Device_Cmds object 230. Initially, the Queue_Device_Cmds object 230 assigns a sequence number to the audit command that uniquely identifies the instance of the command (step 330 in FIG. 14A). The sequence numbers are obtained from the Next_Sequence_Number server 234, which is maintained internally by the NIFTE 18. Since the command is an audit command, the Queue_Device_Cmds object 230 places the audit command in the Audit_Cmd_Queue 236 (step 332 in FIG. 14A). Subsequently, the Format_And_Submit_Cmds object 252 retrieves the audit command from Audit_Cmd_Queue 236 (step 334 in FIG. 14A). The Format_And_Submit_Cmds object 52 retrieves commands from various queues and converts the commands from the common format used by the client application programs 14A-14N to the device-specific formats used by the network devices 20A-20N.
  • The Format_And_Submit_Cmds object [0072] 252 then retrieves specific device-type information about the destination device and version information from the Device Status file 254 (step 336 in FIG. 14A). The Device_Status file 254 holds information regarding device type and version information for each of the network devices 20A-20N. The Format_And_Submit_Cmds object 252 retrieves device configuration information about the destination network device from the Realtime_Network_Device_Data 256 that is stored in the real-time network device data database 16 (FIG. 1) to verify that the destination network device is properly configured and can receive the command (step 338 in FIG. 14A). The Format_And_Submit_Cmds object 252 proceeds to create an audit command in the device-specific format (step 340 in FIG. 14A). A copy of the device-specific command is then placed in the Audit_Cmd_Queue 236 (step 342 in FIG. 14A).
  • The Format_And_Submit_Cmds object [0073] 252 sends a request for status regarding an audit channel 260 to the Manage_Binary_Links object 258 (step 344 in FIG. 14A). It is worth noting that there may be, for example, multiple channels for binary link to most of the network devices 20A-20N. In such a case, one channel is used for audit commands and is designated as the audit_channel 260. Another channel is used for administration commands and is designated as admin_channel 261. An additional channel used is used for connect/disconnect commands and is designated as the connect_channel 282. A normalization_channel 271 may also be provided. The Message_Binary_Links object 258 then checks the status of the Audit_Channel 261 (step 346 in FIG. 14A). The Manage_Binary_Links object 258 then sends a Binary_Link_Status message 262 to the Format_And_Submit_Cmds object 252 that specifies if the audit_channel 260 is available or not (step 348 in FIG. 14A). If the audit_channel 281 is not available for either of the binary links (see step 350 in FIG. 14B). The Format_And_Submit_Cmds object 252 rejects the command and sends a response to the client application program indicating that the command cannot be processed (step 352 in FIG. 14B). If, however, the audit_channel on the binary link is available (see step 350 in FIG. 14B), the Format_And_Submit_Cmds object 252 sends the formatted audit command to the Manage_Binary_Links object 258 (step 354 in FIG. 14B). The Manage_Binary_Links object 258 then sends the audit command as a Binary_Device_Cmd command 264 to the destination network device (step 256 in FIG. 14B).
  • The destination network device receives the formatted audit command and generates configuration information in the form of Binary_Device_Data [0074] 266 that is received by the Queue_Binary_Device_Data object 268 (step 358 in FIG. 14B). The Queue_Binary_Device_Data object 268 places the response in the Binary_Device_Data_Queue 270 (step 360 in FIG. 14B). The Parse_Binary_Device_Data object 272 retrieves and parses the data stored in the Binary_Device_Data_Queue 270 (step 362 in FIG. 14B). The data is sent to the Process_Audit_Response object 274 by the Parse_Binary_Device_Data object 272 (step 364 in FIG. 14B). The Process_Audit_Response object 274 places a copy of the retrieved data in the Audit_Cmd_Queue 236 and matches the data with the original audit command (step 366 in FIG. 14B). The Audit_Cmd_Queue 236 is the same queue in which audit commands are placed by the Queue_Device_Cmds object 230. The matching of the response with the original command is achieved by matching sequence numbers. In particular, the response includes the same sequence number that was added by the Queue_Device_Cmds object 230. The Process_Audit_Response object 234 controls the submission of audit commands by ensuring that a command to a particular network device is not submitted until response to the last audit command is received. The Process_Audit_Response object 274 has access to the Realtime_Network_Device_Data 256 and updates this data in response to the received response data. The Process_Audit_Response object 274 sends the response, NIFTE_Force_Audit_Resp 278 to the client application program that sent the original command. The Respondent_Mailbox_List 308 is used to determine where to send the response (step 368 in FIG. 14B).
  • The Queue_Device_Cmds object [0075] 230 may also receive port connect and port disconnect commands from the Verify_Device_Cmds object 120 (FIG. 5). FIGS. 15A-15C provide a flowchart of the steps that are performed in processing such port connect and port disconnect commands within the device-specific interface module 52 (FIG. 4). Initially, the Queue_Device_Cmds object 230 assigns a sequence number to the received port connect or port disconnect command (step 370 in FIG. 15A). The sequence numbers are obtained from the Next_Sequence_Number server 234, which was discussed above. The Queue_Device_Cmds object 230 then places the connect or disconnect command in the Connect_Disconnect_Cmd_Queue 238 (step 372 in FIG. 15A). This queue is dedicated to the destination network device to which the command is destined. For purposes of efficiency, multiple connect/disconnect commands are bundled together and received and forwarded to network devices 20A-20N in bundles. The maximum bundle size is the maximum number of commands that a particular network device 20A-20N can handle. The maximum bundle interval is the time that the Queue_Device_Cmds object 230 is instructed to wait prior to submitting a next bundle of commands for processing. This prevents excess waiting to collect a sufficient number of connect/disconnect commands to realize the maximum bundle size.
  • In [0076] step 374 of FIG. 15A, the Queue_Device_Cmds object 230 retrieves the maximum bundle size (i.e., max_batch_size), maximum bundle interval (i.e., max_batch_interval) 280, and the number of unsubmitted commands in the Connect_Disconnect_Cmd_Queue 238, which is designated as Num_Unsubmitted_Cmds 242. The Queue_Device_Cmds object 230 determines whether the maximum bundle size has been reached by comparing the Num_Unsubmitted_Cmds 242 with the retrieved maximum bundle size and also determines whether the maximum bundle interval has been reached (step 376 in FIG. 15A). If the maximum bundle size has not been reached or the maximum bundle interval has not been reached, the object must wait for the next connect/disconnect command (step 378 in FIG. 15A). However, if the maximum bundle size has been reached or if the maximum bundle interval has been reached (as checked in step 376 of FIG. 15A), the Queue_Device_Cmds object 230 submits the bundle of commands to the Format_And_Submit_Cmds object 252 for future processing (step 380 in FIG. 15A). The Format_And_Submit_Cmds object 252 sends the max_batch_interval to an interrupt generator 273 that generates a wakeup_interrupt 275 when the maximum interval has been reached.
  • The Format_And_Submit_Cmds object [0077] 252 also looks at some additional values 277 in determining whether to send a command or not. The Max_Cmd_Age_Before_Resending specifies the maximum amount of time that may be waited after a command is initially sent out before resending due to the lack of a response. The Max_Resend_Retries value specifies how many times a command may be resent before efforts are exhausted. The Cmd_Metering value specifies a maximum number of commands that may be concurrently outstanding.
  • The Format_And_Submit_Cmds object [0078] 252 retrieves device-type and version information for the destination device from the Device_Status file 254 (step 382 in FIG. 15A). This information is used to determine the device type and current version information for the destination network device 20A-20N. The Format_And_Submit_Cmds object 252 subsequently retrieves device configuration information from the Realtime_Network_Device_Data 256 (step 384 in FIG. 15A) to determine if the network device is properly configured and can receive the connect/disconnect command. The Format_And_Submit_Cmds object 252 creates a connect/disconnect command in the device-specific format of the destination network device 20A-20N (step 386 in FIG. 15A).
  • A copy of the device-specific command is placed in the Connect_Disconnect_Cmd_Queue [0079] 238 (step 388 in FIG. 15A). The Format_And_Submit_Cmds object 252 sends a request to the Manage_Binary_Links object 258 to examine connect channel status for the binary links 42A-42N and 44A-44A (step 390 in FIG. 15A). The Manage_Binary_Links object 258 checks the status of the connect channels 282 of the binary links (step 392 in FIG. 15A) and sends this information in a Binary_Link_Status message 262 that is sent to the Format_And_Submit_Cmds object 252 (step 394 in FIG. 15A).
  • Connect/disconnect commands can be sent over the primary communication pathway or the backup communication pathway that passes through communication gateway [0080] 24 (FIGS. 1 and 3). If the connect channels on both the primary links are unavailable, the backup link may be utilized.
  • In [0081] step 396 of FIG. 15B, the Format_And_Submit_Cmds object 252 determines whether the connect channel on the binary links is available or not. If the connect channel on the primary or backup binary link is available, the Format_And_Submit_Cmds object 252 sends the formatted connect/disconnect command to the Manage_Binary_Links object 258 (step 398 in FIG. 15B). The Manage_Binary_Links object 258 sends the command as a Binary_Device_Cmd command 264 to the destination network device (step 400 in FIG. 15B).
  • The destination network device receives the connect/disconnect command and generates a response. This response is forwarded to the Queue_Binary_Device_Data object [0082] 268 (step 402 in FIG. 15B). The Queue_Binary_Device_Data object 268 places the response in the Binary_Device_Data_Queue 270 (step 404 in FIG. 15B). The Parse_Binary_Device_Data object 272 retrieves the response from the Binary_Device_Data_Queue 270 and parses the response (step 406 in FIG. 15B). The Parse_Binary_Device_Data object 272 sends a response command to the Process_Connection_Response object 304 (step 408 in FIG. 15B). The Process_Connection_Response object 304 places a copy of the response in the Connect_Disconnect_Cmd_Queue 238, where the response is matched with the original command on the basis of the sequence number (step 410 in FIG. 15B). The Process_Connection_Response object 304 updates the Realtime_Network_Device_Data 256 in view of the response. The Process_Connection_Response object then generates a response 310 or 312 that is sent to the client application program that sent the initial command (step 412 in FIG. 15B).
  • If in [0083] step 396 of FIG. 15B it is determined that the connection channel on either of the binary links is not available, the Format_And_Submit_Cmds object 252 sends a request for the status of the connection channel to the Send_Cmd_IDCS_Link object 284 (step 414 in FIG. 15B). In response, the Send_Cmd_IDCS_Link object 284 checks the status of the connect channel 283 on the backup link (step 416 in FIG. 15B), and it sends an IDCS message 286 that contains information regarding the status of the connect channel 283 on the backup link to the Format_And_Submit_Cmds object 252 (step 418 in FIG. 15B). Thus, in step 420 of FIG. 15B, the Format_And_Submit_Cmds object 252 makes a determination of whether the connect channel on the backup link is available.
  • If the [0084] connect channel 283 on the backup link is available, the Format_And_Submit_Cmds object 252 sends a formatted connect/disconnect command to the Send_Cmd _IDCS_Link object 284 (step 422 in FIG. 15B). The Send_Cmd_IDCS_Link object 284 sends the connect/disconnect command as an IDCS_Gateway_Cmd command 290 to the destination network device (step 424 in FIG. 15B). The destination network device receives the command and attempts to connect or disconnect the port depending on the nature of the command.
  • A response is sent from the destination network device. This response, IDCS_Gateway_RESP [0085] 294, is received by the Queue_IDCS_GW_Responses object 292 (step 426 in FIG. 15B). This object 292 places the response in the IDCS_GW_Data_Queue 296 (step 428 in FIG. 15B). The Parse_IDCS_GW_Responses object 300 retrieves and parses the response that was placed in the IDCS_GW_Data_Queue 296 (step 430 in FIG. 15B). The Parse_IDCS_GW_Responses object 300 sends the command to the Process_Connection_Response object 304 (step 432 in FIG. 15B) where it is processed as discussed above beginning at step 410.
  • It should be noted that if the response that was retrieved from the queue [0086] 296 were instead a response to an administrative command, the response would be forwarded to the Process_IDCS_GW_Admin_Responses object 302, which would process the response.
  • If it is determined in [0087] step 420 of FIG. 15B that the connect channel 283 in the backup link is not available, the Format_And_Submit_Cmds object 252 rejects the connect/disconnect command (step 434 in FIG. 15C). The Format_And_Submit_Cmds object 252 then sends a response to the client application program indicating the rejection (step 436 in FIG. 15C).
  • Commands that are received by the Queue_Device_Cmds object may be administrative commands as well. These commands are immediately placed in the [0088] Administration_Cmd_Queue 240 where they are immediately submitted by the Format_And_Submit_Cmds object 252. The administration commands are generated by the NIFTE at startup to configure the binary links 42A-42N, 44A-44N, network device identifiers, and alarm filter tables. Such administrative commands may be sent over the admin_channel 261 to the Manage_Binary_Links object 258, that sends the commands to the appropriate destination.
  • The Manage_Binary_Links object [0089] 258 manages the binary links 42A-42N and 44A-44N by monitoring such links and determining the most reliable link of each pair which it designates as the primary link. The Manage_Binary_Links object 258 is also responsible for switching communications from one link to another when one fails, dynamically configuring links, and providing maintenance.
  • The Manage_Binary_Links object [0090] 258 ensures that links are available by sending keepalive commands to network devices 20A-20N at regular intervals. The keepalive commands cause the network devices to perform no action, but solicit responses from the network devices and the corresponding link if both are still properly functioning. A Keepalive_Timer 263 triggers the Manage_Binary_Links object 258 to send a keepalive command at specified time intervals. The Manage_Binary_Links object 258 requeues the Keepalive-Timer 263 after the sending of a keepalive command by sending a Keepalive_Timer_Interval message 265 to the Keepalive_Timer 263. If a response to a keepalive command is not received after a certain interval of time, the Manage_Binary_Links object 258 will disconnect and reconnect the link. The responses to keepalive commands are sent via the Queue_Binary_Device_Data object 268, which sends a Keepalive_Timer_Interval message 265 to the Keepalive_Timer 263 to confirm the availability of the associated link.
  • As mentioned above, the Manage_Binary_Links object [0091] 258 determines the most reliable link of a binary link pair and designates the most reliable link as the primary link. The other pair is designated as the secondary link. If the primary link fails, the Manage_Binary_Links object 258 switches communications to the secondary link.
  • As was also mentioned above, the Manage_Binary_Links object [0092] 258 is able to dynamically configure a binary link. If configuration or maintenance of a primary link is required, this object switches communications to the secondary link, designates a secondary link to be the new primary link, and brings down the old primary link. When this configuration is complete, the newly designated secondary link is brought back up, but communications remain with the newly designated primary link. This approach ensures availability of communications even during configuration and maintenance activities.
  • The discussion above has talked about instances where the [0093] Queue_Binary_Device_Data object 268 has received either a response to a connect/disconnect message, a response to a keepalive command, or a response to an audit command. If the message is an unsolicited message indicating that disconnection of a binary link, a Binary_Link_Status message 267 indicating the receipt of such a response is sent to the Manage_Binary_Links object 258.
  • The Queue_Binary_Device_Data object [0094] 268 may also receive unsolicited alarms from network devices 20A-20N. FIG. 16 is a flowchart illustrating the steps that are performed in such instances. Initially, the Queue_Binary_Device_Data object 268 receives a unsolicited alarm from a network device 20A-20N (step 440 in FIG. 16). The Queue_Binary_Device_Data object 268 places the unsolicited alarm in the Binary_Device_Data_Queue 270 (step 442 in FIG. 16). The Parse_Binary_Device_Data object 272 retrieves the unsolicited alarm from the queue and parses the alarm (step 444 in FIG. 16). The Parse_Binary_Device_Data object 272 sends the parsed alarm to the Process_Unsolicited_Alarms object 318 (step 446 in FIG. 16). This object 318 queries the Alarm_Subscriber_List 320 to identify any client application programs that have registered to receive such an unsolicited alarm (step 448 in FIG. 16). The Process_Unsolicited_Alarms object 318 then formats the unsolicited alarm and sends the unsolicited alarm to the client application programs by sending a NIFTE_Alarm_Notification message 322 (step 450 in FIG. 16). The Process_Unsolicited_Alarms object 318 updates the Realtime_Network_Device_Data 256 with the alarm status information (step 452 in FIG. 16).
  • FIG. 17 shows the architecture of the initialization module [0095] 54 (FIG. 4). Specifically, FIG. 17 shows a data flow diagram of the objects that make up the initialization component. As can be seen in FIG. 17, the initialization module includes the Initialize_NIFTE object 460. This object 460 is responsible for starting the initialization process. As shown in FIG. 18, the Initialize_NIFTE object 460 receives a start message to start initialization with a specified device number, Device_Num, 462 (step 500 in FIG. 18). The Device_Num in the start message identifies a particular network device 20A-20N with which the current instance of the NIFTE is to establish communications. The Initialize_NIFTE object 460 begins initialization and reads the Realtime_Network_Device_Data 256 to obtain configuration information that is needed to open the binary links 42A-42N and 44A-44N (step 502 in FIG. 18). The Initialize_NIFTE object 460 also reads in the System_Logicals 108 from the operating system for later use (step 504 in FIG. 18). The Current_NIFTE_State 98 is established and sent out by the Initialize_NIFTE object 460 (step 506 in FIG. 18). In addition, the Initialize_NIFTE object 460 sends an Audit_Interval message 464 to the Audit_Interval_Timer 102 (FIG. 5) to establish the audit interval (step 508 in FIG. 18). Lastly, the Initialize_NIFTE object 460 triggers the execution of the Initialize_Binary_Links object 466, the Initialize_IDCS_Link object 468, and the Configure_Device object 470 (step 510 in FIG. 18).
  • The Initialize_Binary_Links object [0096] 466 retrieves information that is needed to open the binary links 42A-42N and 44A-44N from the Initialize_NIFTE object 460. This is the information that was retrieved from the Realtime_Network_Device_Data 256 by the Initialize_NIFTE object 460. The Initialize_Binary_Links object 466 sends a message with the configuration data to the Manage_Binary_Links object 258 (FIG. 13) to open the binary links (step 512 in FIG. 18).
  • The Initialize_IDCS_Link object [0097] 468 receives data from the Initialize_NIFTE object 460 to open backup link. The Initialize_IDCS_Link object 468 then sends a message with this data to the Send_Cmd_IDCS_Link object 284 (FIG. 13) to open the backup link (step 514 in FIG. 18).
  • The Configure_Device object [0098] 470 initiates administrative processing. This object 470 sends administrative commands 474 to the network devices 20A-20N to solicit information from such devices (step 516 in FIG. 18). The commands include the Set_Node_ID command, the Retrieve_Software_Version command, and the Configure_Alarm_Filters command. Responses 472 to these commands are subsequently received by the Configure_Device object.
  • From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims. [0099]

Claims (30)

1. In a telecommunications network having network devices and a processor, wherein the processor runs at least one program for communicating with the network devices and each network device has a device-specific communication format, a method of interfacing the program with network devices, comprising the computer-implemented steps of:
providing an interface for interfacing the program with the network devices;
receiving a first communication destined to a selected one of the network devices from the program of the interface in a first format;
with the interface, converting the first communication from the first format to a second format that is the device-specific communication format of the selected network device; and
forwarding the converted first communication in the second format from the interface to the selected network device.
2. The method of claim 1, comprising the steps of:
receiving a second communication from the program at the interface, said second communication being destined to a given one of the network devices that is a different one of the network devices than the first communication, and said second communication being in the first format;
with the interface, converting the second communication from the first format to a third format that is the device-specific communication format of the given network device; and
forwarding the converted second communication in the third format from the interface to the given network device.
3. The method of claim 2 wherein the selected network device and the given network device are different types of network devices.
4. The method of claim 2 wherein the selected network device and the given network device are a same type of network device that executes programmable instructions but the selected network device and the given network device execute different versions of the programmable instructions.
5. The method of claim 1, further comprising the steps of:
receiving a second communication that is destined to the program from a given one of the network devices at the interface, said second communication being in a device-specific communication format of the given network device;
with the interface, converting the second communication from the device-specific communication format of the given network device to a format that is compatible with the program; and
forwarding the converted second communication to the program from the interface.
6. The method of claim 5 wherein the second communication is a response from the given network device to a communication sent from the program.
7. The method of claim 5 wherein the second communication is an unsolicited alarm indicating a problem in the telecommunications network.
8. The method of claim 1 wherein the telecommunications network is a telephone network.
9. The method of claim 1 wherein the processor runs multiple programs and the interface interfaces the multiple programs with the network devices.
10. The method of claim 1 wherein multiple instances of the interface are provided such that a separate instance of the interface is provided for each network device.
11. The method of claim 1 wherein the first communication is a command to request the selected network device to perform an action for the program.
12. The method of claim 11 wherein the command is an audit command asking the selected network device to provide information about status of the selected network device.
13. The method of claim 1 wherein the selected network device is a digital cross connect (DXC).
14. The method of claim 1 wherein the program is a restoration program for restoring the network from a failure.
15. In a telecommunications network having network devices and a processor, wherein the processor runs at least one program for communicating with the network devices and each network device has a device-specific communication format, a computer-readable medium holding computer-executable instructions for performing a method of interfacing the program with network devices, comprising the computer-implemented steps of:
providing an interface for interfacing the program with the network devices;
receiving a first communication destined to a selected one of the network devices from the program of the interface in a first format;
with the interface, converting the first communication from the first format to a second format that is the device-specific communication format of the selected network device; and
forwarding the converted first communication in the second format from the interface to the selected network device.
16. The computer-readable medium of claim 15 wherein the method further comprises the steps of:
receiving a second communication from the program at the interface, said second communication being destined to a given one of the network devices that is a different one of the network devices than the first communication, and said second communication being in the first format;
with the interface, converting the second communication from the first format to a third format that is the device-specific communication format of the given network device; and
forwarding the converted second communication in the third format from the interface to the given network device.
17. The computer-readable medium of claim 15 wherein the method further comprises the steps of:
receiving a second communication that is destined to the program from a given one of the network devices at the interface, said second communication being in a device-specific communication format of the given network device;
with the interface, converting the second communication from the device-specific communication format of the given network device to a format that is compatible with the program; and
forwarding the converted second communication to the program from the interface.
18. The computer-readable medium of claim 15 wherein the telecommunications network is a telephone network.
19. The computer-readable medium of claim 15 wherein the processor runs multiple programs and the interface interfaces the multiple programs with the network devices.
20. The computer-readable medium of claim 15 wherein multiple instances of the interface are provided such that a separate instance of the interface is provided for each network device.
21. A telecommunications network, comprising:
a program run on a processor, said program having a communication format for communications;
network devices, each network device having a device-specific communication format for communications; and
an interface for interfacing the program with the network devices to facilitate communications between the program and the network devices, said interface including:
a first converter for converting communications from the program that are destined to network devices into the device-specific communication formats of the network devices.
22. The telecommunications network of claim 21 wherein the interface further includes a second converter for converting communications from the network devices into the communication format of the program.
23. The telecommunications network of claim 21 wherein the network is a telephone network.
24. The telecommunications network of claim 21, further comprising at least one additional program run on the processor that communicates with the network devices and wherein the interface interfaces the programs with the network devices.
25. The telecommunications network of claim 21 wherein the program is a restoration program for restoring the network from a failure.
26. The telecommunications network of claim 21 wherein the interface includes an audit mechanism for automatically auditing at least one of the network devices to obtain information regarding the status of the network device without a request originating outside of the interface for the auditing.
27. The telecommunications network of claim 21 wherein at least one of the network devices is a digital cross-connect.
28. The telecommunications network of claim 21 wherein the network devices include devices of different types.
29. In a telecommunications network having a network device, a processor that runs a program, and data links that lead to the network device, a method comprising the computer-implemented steps of:
providing an interface that interfaces the program with the network device;
with the interface, determining which of the data links is most reliable;
designating the link that was determined to be most reliable as a primary link to be used for communications with the network device; and
designating another of the data links as a secondary link to be used for communications with the network device when the primary link fails.
30. The method of claim 29, further comprising the step of changing designation of links to designate another of the data links as the primary link in response to a change in conditions in the network.
US08/824,648 1997-03-24 1997-03-24 Interface for interfacing client programs with network devices in a telecommunications network Expired - Lifetime US6389129B1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US08/824,648 US6389129B1 (en) 1997-03-24 1997-03-24 Interface for interfacing client programs with network devices in a telecommunications network
EP98910482A EP0972385A2 (en) 1997-03-24 1998-03-17 Interface for interfacing client programs with network devices in a telecommunications network
PCT/US1998/005313 WO1998043390A2 (en) 1997-03-24 1998-03-17 Interface for interfacing client programs with network devices in a telecommunications network
JP54578998A JP2001520777A (en) 1997-03-24 1998-03-17 Interface for interfacing a client program to a network device in a telecommunications network
CA002285484A CA2285484A1 (en) 1997-03-24 1998-03-17 Interface for interfacing client programs with network devices in a telecommunications network
AU64715/98A AU6471598A (en) 1997-03-24 1998-03-17 Interface for interfacing client programs with network devices in a telecommunications network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/824,648 US6389129B1 (en) 1997-03-24 1997-03-24 Interface for interfacing client programs with network devices in a telecommunications network

Publications (2)

Publication Number Publication Date
US20020031214A1 true US20020031214A1 (en) 2002-03-14
US6389129B1 US6389129B1 (en) 2002-05-14

Family

ID=25241963

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/824,648 Expired - Lifetime US6389129B1 (en) 1997-03-24 1997-03-24 Interface for interfacing client programs with network devices in a telecommunications network

Country Status (6)

Country Link
US (1) US6389129B1 (en)
EP (1) EP0972385A2 (en)
JP (1) JP2001520777A (en)
AU (1) AU6471598A (en)
CA (1) CA2285484A1 (en)
WO (1) WO1998043390A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019830A1 (en) * 1998-12-09 2002-02-14 Max Hamberg System and method for the optimization of data collection
US20040049609A1 (en) * 2002-08-29 2004-03-11 Peter Simonson Mechanism for integrating programmable devices into software based frameworks for distributed computing
US20060048159A1 (en) * 2004-08-30 2006-03-02 Fujitsu Limited Resource management method, device and program thereof
US20100199274A1 (en) * 2002-08-30 2010-08-05 Boland Robert P Object oriented component and framework architecture for signal processing
US20140082140A1 (en) * 2012-09-17 2014-03-20 Alex Toussaint Cross domain in-browser proxy
US20170116049A1 (en) * 2004-12-29 2017-04-27 Micron Technology, Inc. Efficient operations of components in a wireless communications device

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212175B1 (en) * 1997-04-22 2001-04-03 Telxon Corporation Method to sustain TCP connection
JP3184169B2 (en) * 1999-01-14 2001-07-09 エヌイーシーソフト株式会社 Network device setting management system, network device setting management method, and recording medium recording network device setting management program
JP4521943B2 (en) * 2000-07-24 2010-08-11 キヤノン株式会社 Information providing apparatus, information providing method, and computer-readable storage medium
JP2002041404A (en) * 2000-07-24 2002-02-08 Canon Inc System, device and method for presenting information
US7051101B1 (en) 2000-09-13 2006-05-23 Emc Corporation Methods and apparatus for controlling devices within storage network
US7143155B1 (en) * 2001-06-29 2006-11-28 Cisco Technology, Inc. Standardized method and apparatus for gathering device identification and/or configuration information via a physical interface
JP2003271429A (en) * 2002-03-15 2003-09-26 Hitachi Ltd Storage device resource managing method, storage resource managing program, recording medium recording the program, and storage resource managing device
US7003527B1 (en) * 2002-06-27 2006-02-21 Emc Corporation Methods and apparatus for managing devices within storage area networks
US7953899B1 (en) * 2002-08-21 2011-05-31 3Par Inc. Universal diagnostic hardware space access system for firmware
US7376732B2 (en) * 2002-11-08 2008-05-20 Federal Network Systems, Llc Systems and methods for preventing intrusion at a web host
US7353538B2 (en) 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
US7386609B2 (en) * 2003-02-20 2008-06-10 International Business Machines Corporation Method, system, and program for managing devices in a network
US7523200B2 (en) * 2003-07-02 2009-04-21 International Business Machines Corporation Dynamic access decision information module
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US7587421B2 (en) * 2004-01-30 2009-09-08 International Business Machines Corporation Method, system, and article of manufacture for generating device specific requests
CN1869932A (en) * 2005-05-24 2006-11-29 中国银联股份有限公司 Computer processing system for implementing data update and data update method
US8997091B1 (en) * 2007-01-31 2015-03-31 Emc Corporation Techniques for compliance testing
US9178842B2 (en) * 2008-11-05 2015-11-03 Commvault Systems, Inc. Systems and methods for monitoring messaging applications for compliance with a policy

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084816A (en) * 1987-11-25 1992-01-28 Bell Communications Research, Inc. Real time fault tolerant transaction processing system
US5065393A (en) * 1990-04-10 1991-11-12 Dsc Communications Corporation Network controller billing system and method of operation
JPH05236138A (en) * 1992-02-20 1993-09-10 Nec Corp Electronic exchange
US5495470A (en) * 1992-04-02 1996-02-27 Applied Digital Access, Inc. Alarm correlation system for a telephone network
US5384840A (en) * 1992-10-09 1995-01-24 At&T Corp. Telecommunications system SS7 signaling interface with signal transfer capability
US5490134A (en) 1993-06-29 1996-02-06 Southern California Edison Company Versatile communications controller
US5469503A (en) * 1993-07-27 1995-11-21 Aspect Telecommunications Corporation Method for resynchronizing secondary database and primary database with preservation of functionality of an automatic call distribution system
NL9400682A (en) 1994-04-28 1995-12-01 Nederland Ptt Methods for exchanging a message between systems comprising at least one information element, device for exchanging a message between systems comprising at least one information element, and system comprising this device.
US5572530A (en) 1994-10-07 1996-11-05 Comsat Corporation Technique for efficient integration of integrated services digital network (ISDN) into satellite system
US5640446A (en) * 1995-05-01 1997-06-17 Mci Corporation System and method of validating special service calls having different signaling protocols
US5692030A (en) * 1995-05-31 1997-11-25 Mci Communications Corporation Electronic interface for exchange of trouble administration information in telecommunications
US5546450A (en) * 1995-06-21 1996-08-13 Bell Atlantic Network Services, Inc. System and method for providing switch translations
US5740368A (en) 1995-06-30 1998-04-14 Canon Kabushiki Kaisha Method and apparatus for providing information on a managed peripheral device to plural agents
US5937042A (en) * 1996-03-19 1999-08-10 Mci Communications Corporation Method and system for rehome optimization
US6118936A (en) * 1996-04-18 2000-09-12 Mci Communications Corporation Signaling network management system for converting network events into standard form and then correlating the standard form events with topology and maintenance information
US5867689A (en) * 1996-05-01 1999-02-02 Mci Communications Corporation Method and apparatus for emulating a digital cross-connect switch network using a flexible topology to test MCS network management
US5796723A (en) * 1996-06-28 1998-08-18 Mci Communications Corporation System and method for end-to-end threshold setting
US5778184A (en) * 1996-06-28 1998-07-07 Mci Communications Corporation System method and computer program product for processing faults in a hierarchial network
US5854930A (en) * 1996-12-30 1998-12-29 Mci Communications Corporations System, method, and computer program product for script processing

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019830A1 (en) * 1998-12-09 2002-02-14 Max Hamberg System and method for the optimization of data collection
US20040049609A1 (en) * 2002-08-29 2004-03-11 Peter Simonson Mechanism for integrating programmable devices into software based frameworks for distributed computing
US20100199274A1 (en) * 2002-08-30 2010-08-05 Boland Robert P Object oriented component and framework architecture for signal processing
US8095927B2 (en) 2002-08-30 2012-01-10 Wisterium Development Llc Object oriented component and framework architecture for signal processing
US20060048159A1 (en) * 2004-08-30 2006-03-02 Fujitsu Limited Resource management method, device and program thereof
US8732715B2 (en) * 2004-08-30 2014-05-20 Fujitsu Limited Resource management method, device and program thereof
US20170116049A1 (en) * 2004-12-29 2017-04-27 Micron Technology, Inc. Efficient operations of components in a wireless communications device
US11294738B2 (en) * 2004-12-29 2022-04-05 Micron Technology, Inc. Efficient operations of components in a wireless communications device
US11836539B2 (en) 2004-12-29 2023-12-05 Lodestar Licensing Group, Llc Efficient operations of components in a wireless communications device
US20140082140A1 (en) * 2012-09-17 2014-03-20 Alex Toussaint Cross domain in-browser proxy
US9503501B2 (en) * 2012-09-17 2016-11-22 Salesforce.Com, Inc. Cross domain in-browser proxy

Also Published As

Publication number Publication date
JP2001520777A (en) 2001-10-30
CA2285484A1 (en) 1998-10-01
EP0972385A2 (en) 2000-01-19
WO1998043390A3 (en) 1998-12-23
US6389129B1 (en) 2002-05-14
AU6471598A (en) 1998-10-20
WO1998043390A2 (en) 1998-10-01

Similar Documents

Publication Publication Date Title
US6389129B1 (en) Interface for interfacing client programs with network devices in a telecommunications network
JP3388512B2 (en) Managing routing in packet communication networks
US5414762A (en) Telephony controller with functionality command converter
US6457050B1 (en) System and method for dynamically restoring communications within a network
US8145789B1 (en) Method providing a single console control point for a network device cluster
US5920257A (en) System and method for isolating an outage within a communications network
US8582568B2 (en) Method and apparatus for implementing a high-reliability load balanced easily upgradeable packet technology
US7450568B2 (en) System and method for managing a VolP network
CN110445697B (en) Video big data cloud platform equipment access service method
CN100479380C (en) Network device managing method, network device and network managing system
EP0953258A1 (en) Intelligent network with distributed service control function
US7281027B2 (en) Distributed processing system and network monitoring system
US6535991B1 (en) Method and apparatus for providing reliable communications in an intelligent network
US20020087693A1 (en) Method and system for distributing service functionality
US6137774A (en) System and method for dispatching commands to switching elements within a communications network
JP4729174B2 (en) Programming call processing applications in switching systems
US7143313B2 (en) Support interface module bug submitter
US6137801A (en) Telecommunication switching system administrative and management tools
Sundstrom et al. SNA: Current requirements and direction
MXPA99008797A (en) Interface for interfacing client programs with network devices in a telecommunications network
KR100224312B1 (en) Service Processing Method in Subscriber Network Access Subsystem of ACPS
KR20040004827A (en) Apparatus and method for integrally managing subscriber for CO-LAN
KR100236924B1 (en) Method for sending paging packet ips to mcs
KR20080098743A (en) Method and system for initial connecting between media server and application server for call process service
JPH02268534A (en) Network data managing system for distributed mail system

Legal Events

Date Code Title Description
AS Assignment

Owner name: MCI COMMUNICATIONS CORPORATION, DISTRICT OF COLUMB

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COWAN, DAN;REEL/FRAME:008484/0485

Effective date: 19970313

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: VERIZON PATENT AND LICENSING INC., NEW JERSEY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MCI COMMUNICATIONS CORPORATION;REEL/FRAME:032725/0001

Effective date: 20140409

AS Assignment

Owner name: VERIZON PATENT AND LICENSING INC., NEW JERSEY

Free format text: CORRECTIVE ASSIGNMENT TO REMOVE THE PATENT NUMBER 5,835,907 PREVIOUSLY RECORDED ON REEL 032725 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:MCI COMMUNICATIONS CORPORATION;REEL/FRAME:033408/0235

Effective date: 20140409