Abstract:
A method and apparatus for maintaining consistent data is described. A computer implemented method comprises generating a first command for a set of network data to be executed on a local memory, executing a second command for the set of network data on a remote memory in response to generation of the first command, determining whether the second command has been executed successfully on the remote memory, executing the first command on the local memory upon determining the second command is executed successfully, and generating an error upon determining the second command is not executed successfully.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    The invention relates to the field of communications. More specifically, the invention relates to communication networks.  
           [0003]    2. Background of the Invention  
           [0004]    Control card redundancy improves reliability of network elements. Having a secondary control card with the same information as the primary control cards enables a network element to withstand hardware and/or software failure on the primary card. In addition, the secondary control card enables maintenance of network elements. The primary control card can be pulled for repairs or testing because the secondary control card will take over operations.  
           [0005]    To avoid interruptions in service, consistency must be maintained between control cards. Information received by the primary control card is passed to the secondary control card. After the information is stored on the primary control card it is copied to the secondary control card.  
           [0006]    This prior art technique has the disadvantage of exposing the network element to disruption. A failure may occur before information is copied to the secondary control card. When the secondary control card takes over operation of the network element, the secondary control card will be lacking information. The network administrator will have to discover the inconsistencies and correct these inconsistencies. In addition, the inconsistencies may cause service to be disrupted to a customer.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0007]    The invention may best be understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention. In the drawings:  
         [0008]    [0008]FIG. 1 is a diagram of a network element according to one embodiment of the invention.  
         [0009]    [0009]FIG. 2 is a diagram of the memory  109  and the memory  107  of FIG. 1 according to one embodiment of the invention.  
         [0010]    [0010]FIG. 3 is a diagram of a configuration manager interacting with the memory  107  and  109  of FIG. 1 according to one embodiment of the invention.  
         [0011]    [0011]FIG. 4 is a flowchart for storing information to backup memory according to one embodiment of the invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0012]    In the following description, numerous specific details are set forth to provide a thorough understanding of the invention. However, it is understood that the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the invention.  
         [0013]    [0013]FIG. 1 is a diagram of a network element according to one embodiment of the invention. In FIG. 1, a network element  102  includes two control cards  103  and  105  and an interface  101 . Examples of a network element include routers, switches, bridges, edge devices, etc. The control card  103  is connected to the control card  105 . The control card  103  includes a processor  113  and a memory  109 . The control card  105  also includes a processor  111  and a memory  107 . During operation of the network element  102 , one of the control cards  103 ,  105  is designated as the primary control card while the other is the secondary control card. If the primary control card fails then the secondary control card operates in place of the primary control card. Both of the control cards  103 ,  105  are connected to an interface  101 .  
         [0014]    The interface receives input from a user. Although the interface is shown as part of the network element, the interface can be a remote terminal in another embodiment of the invention. This input is sent from the interface to the primary control card. If the control card  103  is the primary control card, then the interface  101  transmits configurations, data, etc. to the control card  103 . To maintain consistency between the control cards, information stored on the primary control card is duplicated on the secondary control card. Continuing the example of the control card  103  as the primary control card, the control card  103  transmits information received from the interface  101  to the control card  105  before storing the information in its memory  109 . The control card  105  receives information (configurations, network data, etc.) from the control card  103  and writes the information to its memory  107 . Before information is written to the memory  107 , the information is written to the memory  109 .  
         [0015]    In one embodiment of the invention, global mapping is implemented in the network element  102 . Global mapping provides a unique address for hardware throughout the network element. With global mapping, the control card  103  can modify the memory  109  directly. Likewise, the control card  105  can modify the memory  107  directly.  
         [0016]    [0016]FIG. 2 is a diagram of the memory  109  and the memory  107  of FIG. 1 according to one embodiment of the invention. In FIG. 2, a dashed line  205  indicates a region  201  of the memory  107  being mapped to a region  203  of the memory  109 . The memory management process will associate addresses of the region  201  to addresses of the region  203 . In another embodiment of the invention, all of the memory  107  is mapped to the memory  109 .  
         [0017]    [0017]FIG. 3 is a diagram of a configuration manager interacting with the memory  107  and  109  of FIG. 1 according to one embodiment of the invention. In FIG. 3, a configuration manager  301  receives configurations and processes the configurations. The configuration manager breaks down a configuration into a component or components and determines if a write, update or delete operation or operations is required. The configuration manager  301  then requests a write for write and update operations and a delete for delete operations. The request from the configuration manager  301  corresponds to an address in the memory  109 , assuming the memory  109  is being used by the primary control card. Before the request is carried out or executed, an exception causes the operation to be performed on a corresponding address in the memory  107  as indicated by the dashed line  303 .  
         [0018]    [0018]FIG. 4 is a flowchart for maintaining consistency of data between local and remote memory according to one embodiment of the invention. In FIG. 4 at block  401 , remote memory is mapped. It is assumed that local memory is on the primary control card and remote memory is on the secondary control card. At block  402 , local memory is marked with a flag that will cause an exception. In another embodiment of the invention, local memory has read-only permission until a command is successfully performed on remote memory. In such an embodiment, once local memory is modified, read-only permission is reinstated. At block  403 , configuration(s) are received from the interface  101  of FIG. 1. At block  405 , the configuration manager  301  of FIG. 3 processes the configurations. At block  407 , the configuration manager  301  submits modification requests (i.e., write or delete operations) corresponding to the processed configurations. At block  409 , the submitted modification request(s) for local memory trigger an exception(s). In an embodiment of the invention, this exception is spawned by the operating system when attempts are made to modify given areas of local memory. In one such embodiment, given locations of local memory are associated with given exceptions. For example, referring to FIG. 2, a write command is generated for the area  203  of the local memory  109 . The exception spawned by the request to write to the area  203  is associated to the area  201  of the remote memory  107 . In another embodiment of the invention, a write or delete is only allowed on local memory once remote memory is modified. Otherwise, read-only permission is enforced on local memory.  
         [0019]    At block  411 , the exception(s) modifies the remote memory in accordance with the requests (i.e., data is written or removed from the remote memory). At block  413 , it is determined if the exception request was executed successfully. If the exception request was executed successfully, then at block  415  the request is executed on the local memory. If the exception request was not executed successfully on the remote memory, then at block  417  an error is generated. The error can be transmitted to an error parser or directly to the user via the interface.  
         [0020]    In one embodiment of the invention, the exception are software interrupts. In another embodiment of the invention, these exceptions are hardware interrupts.  
         [0021]    Insuring data is written or deleted from a secondary memory of a secondary control card before being written or deleted from a primary memory of a primary control card avoids inconsistency of data between control cards. If an error occurs with the control card before the data is written to the primary memory, then the secondary control card has the most recent version of data or configurations. If the data is not written to the secondary memory, then the primary and secondary control cards still have the same information.  
         [0022]    Furthermore, implementing the embodiments herein of the invention at the lowest level, such as with kernel exceptions, provides a simple backup mechanism with high performance. The complications of higher level backup applications are avoided. In addition, the secondary control card can take control immediately.  
         [0023]    The network element  102  includes line cards in addition to the control cards  103  and  105 . Line cards in the network element  102  and the control cards  103  and  105  include memories, processors, and/or Application Specific Integrated Circuit (“ASICs”). Such memories and the memories  107  and  109  include a machine-readable medium on which is stored a set of instructions (i.e., software) embodying any one, or all, of the methodologies described herein. Software can reside, completely or at least partially, within this memory and/or within the processor and/or ASICs. For the purpose of this specification, the term “machine-readable medium” shall be taken to include any mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, electrical, optical, acoustical, or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.), etc.  
         [0024]    While the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The method and apparatus of the invention can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting on the invention.