Abstract:
A device includes a master control card that performs control plane processing, a backup control card, where the backup control card takes over control plane processing if the master control card goes out of service, and a database card that connects to the master control card and the backup control card, where the database control card stores information relating to control plane processing. A method of achieving hitless failover in a network element includes detecting that a master control card of the network element has gone out of service, designating the backup control card as a new master control card of the network element, establishing communication with a database card of the network element, and retrieving protocol states information from the database card.

Description:
BACKGROUND 
       [0001]    Networks typically include elements, such as routers, switches, or gateways, which transfer or switch data from one or more sources to one or more destinations. A packet is one format of data in which encapsulated data can be transmitted through a network. A network element, such as a router or a switch, may process packets. When the network element receives a packet at an input port, the network element may determine a destination and/or output port for the packet and/or determining whether to drop the packet or send the original or modified packet to another network element through an output port. 
         [0002]    Components of the network element may malfunction or go out of service. In order to maintain functioning of the network element, the network element may contain a backup component, which may take over when a particular component of the network element malfunctions or goes out of service. However, particular components of the network element may process large amounts of data. For example, a network element may maintain a large list of destinations and may need to perform operations to periodically update a list of destinations. Therefore, if one of the particular components fails, a transition to a backup component may be complicated. Furthermore, assuring that the transition occurs without an interruption in the performance of the network element may tax the resources of the network element. 
       SUMMARY OF THE INVENTION 
       [0003]    According to one aspect, a network element device may include a master control card that performs control plane processing; a backup control card, where the backup control card takes over control plane processing if the master control card goes out of service; and a database card that connects to the master control card and the backup control card, where the database control card stores information relating to control plane processing. 
         [0004]    According to another aspect, a one rack unit network element may include a processor that performs control plane processing; a storage element that communicates with the processor, where the database control card stores information relating to control plane processing; and where the processor includes a reset line that, when the reset line is activated, the processor is reset and the storage element is not reset. 
         [0005]    According to yet another aspect, a method of achieving hitless failover in a network element, performed by the network element, may include detecting, using a processor associated with a backup control card, that a master control card of the network element has gone out of service; designating, using the processor, the backup control card as a new master control card of the network element; establishing, using a communication interface of the backup control card, communication with a communication interface of a database card of the network element, the database card connecting to the master control card and the backup control card; and retrieving, using the communication interface of the backup control card, protocol state information from the database card. 
         [0006]    According to yet another aspect, a network system may include first means for control plane processing; second means for control plane processing, where the second means for control plane processing is activated if the first means for control plane processing stops functioning; means for storing information associated with control plane processing, where the means for storing is remote from the first means and the second means; and where the first means and the second means communicate with the means for storing information to store information associated with control plane processing and retrieve information associated with control plane processing. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate the invention and, together with the description, explain the invention. In the drawings, 
           [0008]      FIG. 1  is a diagram illustrating an exemplary network according to the implementations described herein; 
           [0009]      FIG. 2  is a diagram illustrating a network element according to implementations described herein; 
           [0010]      FIG. 3A  is a diagram illustrating components of one of the control cards of the network element depicted in  FIG. 2 ; 
           [0011]      FIG. 3B  is a diagram illustrating components of a database card of the network element depicted in  FIG. 2 ; 
           [0012]      FIG. 4  is a diagram illustrating an exemplary database card according to implementations described herein; 
           [0013]      FIG. 5  is a flow chart illustrating a process of providing information to a database card; 
           [0014]      FIG. 6  is a flow chart illustrating a process of receiving information from a database card; 
           [0015]      FIG. 7  is a flow chart illustrating a process for transferring control from a master control card to a backup control card; 
           [0016]      FIG. 8  is a diagram of a database card implemented in an exemplary one rack unit network element; 
           [0017]      FIG. 9  is a diagram of a database card implemented in an exemplary stacked system network element; 
           [0018]      FIG. 10  is a diagram of a first exemplary implementation of a database card implemented in an exemplary chassis network element; and 
           [0019]      FIG. 11  is a diagram of a second exemplary implementation of a database card implemented in an exemplary chassis network element. 
       
    
    
     DETAILED DESCRIPTION 
       [0020]    The following detailed description of the invention refers to the accompanying drawings. The same reference numbers may be used in different drawings to identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents. 
         [0021]    A network element in a network may include multiple control cards. A control card may be chosen as a master control card of the system. The master control card may be responsible for processing information related to protocol state maintenance, timer maintenance, system health check, and/or other functions. A backup control card may be designated or elected using an algorithm in the network element to provide redundancy and hitless failover in case the master control card stops functioning. Hitless failover (also known as a graceful restart) may refer to continuous operation of the network element without significant loss of functionality or data. 
         [0022]    All database states, such as states pertaining to protocols and timers that may be required for hitless failover, may be stored locally at each control card. Therefore, information pertaining to all database states may need to be continuously synchronized between the master control card and a backup control card so that the backup control card may become the new master control card in case the master control card fails. This synchronization may need to be performed for every state change that happens in the master control card, and a message may need to be sent to the backup control card every time a state change occurs. This synchronization may involve large amounts of software that may need to be written. Furthermore, the synchronization may unnecessarily tie up resources of the network element. 
         [0023]    Implementations described herein may relate to separation of control plane processing and database maintenance processing in a control card of a network element. A database card may be provided that is separate (i.e. remote) from the master control card. The database card may maintain database data related to control plane processing performed by the master control card. The master control card may send messages to the database card to store updates to the database card, delete entries in the database card, and query the database card for required information. If the master control card fails, a backup control card may access the database information stored at the database card to maintain the function and assure hitless failover of the network element. 
         [0024]    A master control card may fail for many reasons. A common cause of control card failure may be a fault in the program being executed by the control card. Another common cause of control card failure may be corruption of data. When data is stored locally on a control card, the data may be corrupted easier than when the data is stored on a separate database card. Furthermore, a control card may maintain relationships between the front elements (e.g. ports) of the network element, while a database card may only store data objects and provide the stored data objects to the control card. Since maintaining relationships may be more prone to failures of different kinds compared to storage of data objects, a database card may be less likely to fail. 
       Exemplary Network 
       [0025]      FIG. 1  is a diagram illustrating an exemplary network system  100  according to implementations described herein. Network system  100  may be a packet-based network. The term “packet,” as used herein, may refer to a packet, datagram, cell; a fragment of a packet, datagram or cell; or other types of data. For example, a packet may refer to an Internet Protocol (IP) packet that has been pre-pended with additional header fields (e.g., packet classification information, addresses, etc.). Network system  100  may include a network element  110 , a source device  120 , a network  130 , and a destination device  140 . 
         [0026]    Network element  110  may include any device that receives and transmits packets within a network or between networks. Network element  110  may include, for example, a router, a switch, a bridge, a firewall, or a gateway. Network element  110  may include one or more ingress ports and one or more egress ports. Network element  110  may receive a packet at one of the ingress ports, determine a destination of the received packet, determine an egress port based on the determined destination, and forward the packet via the determined egress port. Additionally, network element  110  may determine whether to forward the received packet or whether to drop the received packet. 
         [0027]    Source device  120  and destination device  140  may be a same type of device or different types of devices. For example, source device  120  and destination device  140  may include any device with a communication function, such as a personal computer or workstation, a server device, a portable communication device (e.g. a mobile phone), an access point base station, a cellular base station, or any type of network element encompassed by network element  110 . 
         [0028]    Network  130  may include one or more of a same type of packet-switched networks, or one or more packet-switched networks of different types. For example, network  130  may include one or more of a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a wireless network, such as a general packet radio service (GPRS) network, an ad hoc network, a public switched telephone network (PSTN), a subset of the Internet, any other network, or any combination thereof. 
         [0029]    Although  FIG. 1  shows exemplary components of network system  100 , in other embodiments, network system  100  may include fewer, different, or additional components than depicted in  FIG. 1 . In still other embodiments, one or more components of network system  100  may perform the tasks described as being performed by one or more other components of network system  100 . 
       Exemplary Network Element 
       [0030]      FIG. 2  is a diagram illustrating exemplary components of network element  110  according to implementations described herein. Network element  110  may include a bus  201 , physical interface cards  210   a - 210   n , packet forwarding engines  220   a - 220   n , a master control card  230 , a backup control card  240 , and a database card  250 . 
         [0031]    Bus  201  may permit communication among the components of network element  110 . 
         [0032]    Physical interface cards (PICs)  210   a - 210   n  may include ports  205   a - 205   n . Ports  205   a - 205   n  may provide physical connections to other elements in a network and may receive and send packets. Each physical port may connect to one of many types of transport media, such as an optical fiber or Ethernet cable. A particular PIC and the associated port may be programmed and formatted according to one of several protocols, such as the synchronous optical network (SONET) standard, asynchronous transfer mode (ATM) technology, Ethernet, or Internet Protocol (IP). 
         [0033]    PICs  210   a - 210   n  may be modular and replaceable elements, and may be hot-swappable, meaning that a particular PIC may be pulled out of its slot and replaced with a different PIC while network element  110  is operating, without interruption in the operation of network element  110 . 
         [0034]    PICs  210   a - 210   n  may perform basic data link layer functions, including communicating with another device using a data link layer protocol, such as Point-to-Point Protocol (PPP). PICs  210   a - 210   n  may perform basic operations on a particular incoming (or outgoing) packet, such as decapsulation and encapsulation, classifying a packet based on service class, internal redirection of packets to other components of network element  110 , management of a flow table, and sampling of packets flows. PICs  210   a - 210   n  may be configured by a user for specific quality of service (QoS) requirements and may include a firewall. 
         [0035]    Packet forwarding engines (PFEs)  220   a - 220   n  may include flexible port concentrators that include physical slots to hold one or more of PICs  210   a - 210   n . Packet forwarding engines  220   a - 220   n  may implement forwarding plane processing. Forwarding plane processing may refer to processing of data packets on a per-packet basis. Packet forwarding engines  220   a - 220   n  may receive a data packet at a particular ingress port (via the associated PIC), look up the packet in a forwarding table to determine an egress port, and forward the packet to the determined egress port. Packet forwarding engines  220   a - 220   n  may also decrement a time-to-live (TTL) value of a packet when the packet is forwarded. If a packet forwarding engine cannot look up the destination of a particular packet in the forwarding table, if the packet has not been authenticated, if the packet is an exception packet (e.g. has a TTL of zero and has thus expired), or if the packet is a control packet, the packet forwarding engine will forward the packet to master control card  230  for processing. 
         [0036]    Packet forwarding engines  220   a - 220   n  may additionally perform functions related to metering, shaping of flows, firewalls, network address translation, encapsulation and decapsulation (i.e. tunneling of flows), encryption and decryption, packet statistics, and accounting. 
         [0037]    Master control card  230  may implement control plane processing. Control plane processing may relate to maintaining a routing table, manipulating forwarding tables, manipulating quality of service (QoS) tables, maintaining control protocols, keeping track of interface states, keeping track of types of cards present in network element  110 , and any other functions performed within network element  110 . The control plane (e.g., master control card  230 ) may maintain a shadow/cached copy of any tables that are stored in database card  250 . The shadow/cached copy of the tables may allow for faster information processing compared to an implementation where information would need to be retrieved from database card  250  for every operation on the control plane. 
         [0038]    Master control card  230  may determine a destination of any packet whose destination cannot be found in the forwarding table by consulting the routing table. Master control card  230  may determine whether to drop exception packets, such as packets with an expired TTL field. Additionally, master control  230  may send a message to source device  120 , informing source device  120  that the expired packet did not reach its destination. 
         [0039]    Master control card  230  may receive non-authenticated packets and attempt to authenticate the packets. For example, master control card  230  may receive a non-authenticated packet from one of packet forwarding engines  220   a - 220   n , obtain the location of an authentication server (e.g. a RADIUS server) from database card  250 , and contact the authentication server to authenticate the packet. If a non-authenticated packet is successfully authenticated, master control card  230  may provide the packet to one of packet forwarding engines  220   a - 220   n  for forwarding. 
         [0040]    Master control card  230  may receive control packets. A control packet may be a packet that relates to a particular protocol, such as a layer 3 routing protocol. For example, a control packet may include information about a router that has gone out of service or is no longer reachable. In response, master control card  230  may update the routing table based on the information obtained from the control packet. 
         [0041]    Master control card  230  may run multiple timers associated with control plane processing. For example, master control card  230  may receive a control packet associated with a particular protocol from a source device. The control packet may have an associated lifetime and master control card  230  may store the lifetime of the packet in database card  250  and initiate a timer to measure the lifetime of the packet. If master control card  230  does not receive another control packet from the source device, master control card  230  may designate the source device as being out of service. 
         [0042]    Master control card  230  may send messages to database card  250  to query for required information when carrying out any of these functions. Master control card  230  may update database card  250  whenever a change occurs in any of the objects that are stored in database card  250  to store or delete entries on databases stored on database card  250 . 
         [0043]    Master control card  230  may include a console port. The console port may be a dedicated port for a user to interact with network element  110  via a command line interface. A user may connect an input and output device to the console port or may communicate with network element  110  via the console port over a network. The console port may allow a user to configure network element  110  and query network element  110  for status and configuration information. 
         [0044]    Backup control card  240  may provide redundancy with respect to master control card  230 . Backup control card  240  may, thus, have functionality identical to master control card  230 , and if master control card  230  stops functioning, backup control card  240  may take over as the new master control card of network element  110 . Activation of a backup control card may be through the generation of an interrupt signal to the backup control card when the master control card fails. For example, if master control card  230  fails or malfunctions, a signal may be sent to backup control card  240 . Backup control card  240  may take over as the new master control card and may immediately establish communication with database card  250  and query database card  250  for information. 
         [0045]    Backup control card  240  may also include a console port, which may allow a user to configure network element  110  and query network element  110  for status and configuration information. 
         [0046]    Database card  250  may store information needed by master control card  230  to perform its functions, including all states pertaining to protocols, timers, and interfaces, information identifying the types of cards present in network element  110 , as well as system state information. Master control card  230  may communicate with database card  250  to store and/or update information stored in a database or database card  250 , and may read information from database card  250  when such information is required for control plane processing. If master control card  230  fails, backup control card  240  may read the stored information from database card  250 . 
         [0047]    Although  FIG. 2  shows exemplary components of network element  110 , in other embodiments, network element  110  may include fewer, different, or additional components than depicted in  FIG. 2 . In still other embodiments, one or more components of network element  110  may perform the tasks described as being performed by one or more other components of network element  110 . 
       Exemplary Card Components 
       [0048]      FIG. 3A  is a diagram illustrating components of master control card  230  or backup control card  240  of network element  110 . As illustrated, control card  230 / 240  may include a bus  310 , a processor  320 , a memory  330 , and a communication interface  340 . 
         [0049]    Bus  310  may permit communication among the components of control card  230 / 240 . 
         [0050]    Processor  320  may include one or more processors, microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or the like. Processor  320  may execute software instructions/programs or data structures to control operation of control card  230 / 240  and its components. 
         [0051]    Memory  330  may include a random access memory (RAM) or another type of dynamic storage device that may store information and/or instructions for execution by processor  320 ; a read only memory (ROM) or another type of static storage device that may store static information and/or instructions for use by processor  320 ; a flash memory (e.g., an electrically erasable programmable read only memory (EEPROM)) device for storing information and/or instructions; and/or some other type of magnetic or optical recording medium and its corresponding drive. Memory  330  may also be used to store temporary variables or other intermediate information during execution of instructions by processor  320 . Instructions used by processor  320  may also, or alternatively, be stored in another type of computer-readable medium accessible by processor  320 . A computer-readable medium may be defined as a physical or logical memory device. A logical memory device may include memory space within a single physical memory device or spread across multiple physical memory devices. 
         [0052]    Communication interface  340  may include any communication mechanism that allows card  300  to communicate with another card or another component of a network element or another element across a network. For example, communication interface  340  may include an Ethernet interface. 
         [0053]    Although  FIG. 3A  shows exemplary components of control card  230 / 240 , in other embodiments, control card  230 / 240  may include fewer, different, or additional components than depicted in  FIG. 3A . In still other embodiments, one or more components of control card  230 / 240  may perform the tasks described as being performed by one or more other components of control card  230 / 240 . 
         [0054]      FIG. 3B  is a diagram illustrating components of database card  250  of network element  110 . As illustrated, database card  250  may include a bus  315 , a processor  325 , a memory  335 , and a communication interface  345 . 
         [0055]    Bus  315  may permit communication among the components of database card  250 . 
         [0056]    Processor  325  may include one or more processors, microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or the like. Processor  325  may execute software instructions/programs or data structures to control operation of database card  250  and its components. 
         [0057]    Memory  335  may include a random access memory (RAM) or another type of dynamic storage device that may store information and/or instructions for execution by processor  325 ; a read only memory (ROM) or another type of static storage device that may store static information and/or instructions for use by processor  325 ; a flash memory (e.g., an electrically erasable programmable read only memory (EEPROM)) device for storing information and/or instructions; and/or some other type of magnetic or optical recording medium and its corresponding drive. Memory  335  may also be used to store temporary variables or other intermediate information during execution of instructions by processor  325 . Instructions used by processor  325  may also, or alternatively, be stored in another type of computer-readable medium accessible by processor  325 . A computer-readable medium may be defined as a physical or logical memory device. A logical memory device may include memory space within a single physical memory device or spread across multiple physical memory devices. 
         [0058]    Communication interface  345  may include any communication mechanism that allows database card  250  to communicate with another card or another component of a network element or another element across a network. For example, communication interface  345  may include an Ethernet interface. 
         [0059]    Although  FIG. 3B  shows exemplary components of database card  250 , in other embodiments, database card  250  may include fewer, different, or additional components than depicted in  FIG. 3B . In still other embodiments, one or more components of database card  250  may perform the tasks described as being performed by one or more other components of database card  250 . 
       Exemplary Database Card 
       [0060]      FIG. 4  is a diagram illustrating exemplary databases that may be stored on database card  250  according to implementations described herein. As illustrated, database card  250  may include a configuration database  410 , a protocol states database  420 , a card information database  430 , an interface states database  440 , and a system state database  450 . Databases  410 - 450  may be implemented, for example, in memory  335  of database card  250 . The databases illustrated in  FIG. 4  are exemplary. In practice, database card  250  may include fewer, additional, or other types of databases. Therefore,  FIG. 4  should not be construed as limiting the type of information that can be stored and/or managed by database card  250 . Database card  250  may store and/or manage any information required by master control card  230  or backup control card  240 . Databases  410 - 450  may, for example, take the form of multiple lookup tables. 
         [0061]    Configuration database  410  may store configuration parameters associated with network element  110  that may have been set by a user. Configuration database  410  may also store a default configuration for network element  110 . The configuration parameters may include, for example, the protocols that are enabled on ports  205   a - 205   n , virtual local area networks (VLANs) that may have been configured on particular ports, quality of service (QoS) parameters that may have been configured on particular ports, firewall filters that may have been configured on particular ports, layer 1, layer 2, or layer 3 configuration parameters associated with a particular port, and/or other types of parameters. 
         [0062]    In one implementation, configuration database  410  may also store the location of an authentication server. For example, configuration database  410  may store the IP address of a Remote Authentication Dial In User Service (RADIUS) server. 
         [0063]    Protocol states database  420  may store information related to protocols implemented by network element  110 . Examples of protocols implemented by network element  110  may include distance vector routing protocols, such as Routing Information Protocol (RIP); link-state routing protocols, such as Open Shortest Path First (OSPF) protocol or Intermediate System to Intermediate System (IS-IS) protocol; data carrying protocols, such as Multiprotocol Label Switching (MPLS); or multicast protocols, such as User Datagram Protocol (UDP), Pragmatic General Multicast (PGM), or Protocol Independent Multicast (PIM). Protocol state information may include network topology information about the network, including which network elements are neighbors of network element  110  as well as protocol states associated with the neighbors. Thus, protocol states database  420  may comprise routing tables used by network element  110 . 
         [0064]    Protocol states database  420  may also store information associated with various timers that are associated with various network protocols (e.g. layer 2 or layer 3 protocols) being run by master control card  420 . For example, protocol states database  420  may store information associated with a particular timer, such as the lifetime of a particular control packet. 
         [0065]    Card information database  430  may store information about PICs  210   a - 210   n  present in network element  110 , such as what kind of card a particular PIC is and what kind of interface a particular PIC terminates. A PIC may terminate, for example, a twisted pair copper line supporting voice Plain Old Telephone Service (POTS) service, an Integrated Services Digital Network (ISDN) service, a Digital Subscriber Loop (DSL) service, a Very High Bitrate DSL (VDSL) service, or Ethernet over twisted pair service; a coaxial line communicating with cable modems; a fiberoptic line operating according to the Synchronous Optical Networking (SONET) standard; or a wireless access point connected to a wireless network, such as a General Packet Radio Service (GPRS) network. 
         [0066]    Interface states database  440  may store information about the status of particular interfaces (i.e. a particular port and the associated PIC) of network element  110 . The information may include whether an interface is up or down (i.e. whether the interface is in operation). Interface states database  440  may also store statistics associated with ports  205   a - 205   n , such as the number and types of packets received during a particular period of time. 
         [0067]    System state database  450  may store information pertaining to the environment of network element  110 . Examples of system state information may include the temperature of network element  110 , as well as temperatures of particular cards present in network element  110 . For example, system state database  450  may store the temperatures of PICs  210   a - 210   n , packet forwarding engines  220   a - 220   n , master control card  230 , backup control card  240 , and database card  250 . System state database  450  may also store information about air flow within network element  110  and the status of cooling devices with network element  110 , such as fans or Peltier junctions. 
         [0068]    Although  FIG. 4  shows exemplary components of database card  250 , in other embodiments, database card  250  may include fewer, different, or additional components than depicted in  FIG. 4 . In still other embodiments, one or more components of database card  250  may store information described as being stored by one or more other components of database card  250 . 
       Exemplary Processes 
       [0069]    A control card may communicate with a database card using a set of commands. An exemplary set of commands may include a GET command to retrieve information from the database card, a DELETE command to delete information from the database card, an UPDATE command to update information in the database card, a COMMIT command to commit information that has been updated, and a ROLLBACK command to prevent information that has been updated from being committed to the database card. Thus, storing information in a database card may be a two step process, where the first step may be updating the information to a database, while the second step may be committing the information to the database. 
         [0070]    A control card, such as master control card  230 , may write information to configuration database  410 , for example, when a user changes the configuration of network element  110  via a console port. For example, a user may configure a new VLAN on one of ports  205   a - 205   n  of network element  110 . Master control card  230  may read information from configuration database  410 , for example, when master control card  230  receives a packet for a particular VLAN, to determine whether a given port belongs to the particular VLAN. 
         [0071]    A control card, such as master control card  230 , may write information to protocol states database  420 , for example, when master control card  230  receives a control packet with information about the topology of the network, such as that a neighbor network element went out of service or an advertisement packet that advertises a new route in the network. Master control card  230  may read information from protocol states database  420 , for example, when master control card  230  receives a control packet that includes new link-state information, such as an advertisement packet that advertises a new route. Master control card  230  may read information from protocol states database  420  so that master control card  230  may re-compute a shortest path tree to a particular destination based on the new information. Master control card  230  may then update forwarding tables stored in packet forwarding engines  220   a - 220   n.    
         [0072]    A control card, such as master control card  230 , may write information to card information database  430 , for example, when a user removes or replaces a card (e.g. one of PICs  210   a - 210   n ). Master control card  230  may read information from card information database  430 , for example, if a user enters a command to show the hardware present in network element  110 . For example, a user may enter such a command via a console port. 
         [0073]    A control card, such as master control card  230 , may write information to interface states database  440 , for example, when one of ports  205   a - 205   n  goes out of service. Master control card  230  may read information from card interface states database  440 , for example, if a user enters a command to show the status of the interfaces (i.e., ports  205   a - 205   n ) present in network element  110 . For example, a user may enter such a command via a console port. 
         [0074]    A control card, such as master control card  230 , may write information to system state database  450 , for example, if the temperature on a particular card rises. Master control card  230  may read information from system state database  450 , for example, if a user enters a command to show results of the latest system health check. For example, a user may enter such a command via a console port. 
         [0075]      FIG. 5  is a flow chart illustrating a process of providing information to a database card, such as database card  250 , by a control card, such as master control card  230 . In one implementation, the process illustrated in  FIG. 5  may be performed by one or more components of network element  110 . In other implementations, the process illustrated in  FIG. 5  may be performed by another device or group of devices. 
         [0076]    Processing may begin by detecting a change in a state of a network component, such as network component  110  (block  510 ). For example, master control card  230  may receive a command from a user to reconfigure a port; receive a control packet from another network element indicating that a particular network element is no longer available; detect a change in the topology of the network; detect that a particular PIC has been removed or replaced with a different PIC, or has gone out of service; detect that a particular interface (i.e. a port) has gone out of service or has gone back into service; or detect that the temperature of the environment has changed. A command to reconfigure a particular port may include a command to change at least one of a protocol enabled on the particular port, a VLAN associated with the particular port, a quality of service requirement associated with the particular port, or a firewall associated with the particular port. 
         [0077]    Information may be uploaded to a database in database card  250  (block  520 ). For example, processor  230  of master control card  230  may send an UPDATE signal to communication interface  345  of database card  250 . The UPDATE signal may include information about which database in database card  250  will be accessed, as well as which record in the particular database will be changed. In response, processor  325  of database card  250  may lock the particular record, to prevent another component of network element  110  from manipulating the particular record. 
         [0078]    Processor  230  of master control card  230  may then perform one or more of the following exemplary acts. Processor  230  may send a COMMIT command to configuration database  410  to update configuration information; send a COMMIT command to protocol states database  420  to remove a network element from a routing table or store a recomputed route; send a COMMIT command to card information database  430  to indicate a PIC has been replaced; send a COMMIT command to interface states database  440  to indicate a particular port has gone out of service; or send a COMMIT command to system state database  450  with a new temperature reading. 
         [0079]      FIG. 6  is a flow chart illustrating a process of receiving information from a database card, such as database card  250 . In one implementation, the process illustrated in  FIG. 6  may be performed by one or more components of network element  110 . In other implementations, the process illustrated in  FIG. 6  may be performed by another device or group of devices. 
         [0080]    Processing may begin by initiating a control processing function (block  610 ). For example, master control card  230  may receive a packet for a particular VLAN or with particular quality of service requirements; may be in the process of updating a routing table; may receive a packet from a packet forwarding engine when the packet forwarding engine could not determine the destination of the packet from the forwarding table; may receive a non-authenticated packet from a packet forwarding engine; may receive a command from a user via a console port querying for configuration, card, interface, or system health information; and/or may be performing another function that requires information from database card  250 . 
         [0081]    Information may be downloaded from a database in database card  250  (block  620 ). For example, communication interface  340  of master control card  230  may send a signal to communication interface  345  of database card  250 . The signal may include information about which database in database card  250  will be accessed, as well as which record in the particular database will be read. In response, processor  325  of database card  250  may lock the particular record, to prevent another component of network element  110  from manipulating the particular record. 
         [0082]    For example, processor  320  of master control card  230  may perform one or more of the following exemplary acts. Processor  320  may send a GET request to configuration database  410  to check whether a particular port belongs to a particular VLAN; may send a GET request to configuration database  410  for the IP address of the RADIUS server; may send a GET command to protocol states database during the process of computing a new route; or may send a GET command to any of configuration database  410 , card information database  430 , interface states database  440 , or system state database  450  for information to be provided to a user via a console port. In response to receiving the GET command, database card  250  may retrieve the appropriate information and send the information to master control card  230 . 
         [0083]      FIG. 7  is a flow chart illustrating a process of transferring control from a master control card, such as master control card  230 , to a backup control card, such as backup control card  240 . In one implementation, the process illustrated in  FIG. 6  may be performed by one or more components of network element  110 . In other implementations, the process illustrated in  FIG. 6  may be performed by another device or group of devices. 
         [0084]    Master control card  230  may stop functioning. Processing may begin by detecting that a master control card failed (block  710 ). For example, master control card  230  may generate an interrupt. In one implementation, master control card  230  may implement a dedicated interrupt line that may be activated by a software crash. In another implementation, master control card  230  may periodically send a heart-beat signal to an error detection routine, and if the heart-beat signal is not received within a particular time period, the error detection routine may generate the interrupt. In yet another implementation, the error detection routine may periodically poll a particular memory location. Programs running on master control card  230  may write to the particular memory location if a severe enough error occurs, and the error detection routine may generate the interrupt based on detecting that the particular memory location haw been overwritten. 
         [0085]    In one implementation, in response to the hardware interrupt, network element  110  may reset. When network element  110  is reset, database card  250  may not be reset along with the system. Therefore, database card  250  may not lose any data and thus network element  110  may achieve a hitless failover. In another implementation, the hardware interrupt may not cause network element  110  to reset. 
         [0086]    A backup control card may be activated (block  720 ). For example, backup control card  240  may become the new master control card of network element  110 . Both master control card  230  and backup control card  240  may include a boot monitor program that may initiate operation. The boot monitor program may include instructions to give preference to master control card  230 . After a reset, or after detecting an interrupt signal, if the boot monitor program of backup control card  240  does not detect master control card  230  coming into operation within a particular period of time (e.g. within 5 seconds), the boot monitor program of backup control card  240  may instruct backup control card  240  to become the master of the system and take over control plane processing of network element  110 . 
         [0087]    Once a backup control card becomes the new master control card of the system, the backup control card may need to access database card  250  to perform operations for network element  110 . For example, the new master control card may need information pertaining to various timers associated with layer 2 and layer 3 protocols running on network element  110 . 
         [0088]    Communication with a database card, such as database card  250 , may be established (block  730 ). For example, communication interface  340  of backup control card  240  may send a GET signal to communication interface  340  of database card  250 . The signal may include information about which database(s) in database card  250  will be accessed, as well as which record(s) in the particular database will be read. In response, processor  320  of database card  250  may lock the particular record(s), to prevent another component of network element  110  from manipulating the particular record. 
         [0089]    Information from database card  250  may be obtained (block  740 ). For example, backup control card  240  may download information associated with protocol states from protocol states database  250 , such as information associated with lifetimes of control packets. 
       Exemplary Implementations of Database Card 
       [0090]      FIG. 8  is a diagram of an exemplary one rack unit (1-RU) network element, also known as a pizza networking system. 1-RU network element  800  may include a single board  801 . Board  801  may include bus  801 , a control processor  830 , and a storage element  850 . Bus  801  may permit communication among the components of 1-RU network element  800 . Control processor  830  may perform functions similar to the functions performed by master control card  230 . For example, control processor  830  may perform functions related to control plane processing. Storage element  850  may perform functions similar to the functions performed by database card  250 . For example, storage element  850  may include databases  410 - 450 . Board  801  may include additional components, such as one or more packet forwarding engines that perform forward plane processing, and one or more physical interfaces and associated ports for receiving and sending packets (not shown). 
         [0091]    A 1-RU network element may not include any backup components to take over if control processor  830  fails. Therefore, if control processor  830  stops functioning, 1-RU network element  800  may need to be reset. 1-RU network element  800  may reset for other reasons, such due to a power outage, or when a user resets 1-RU network element  800 . If the system resets, the system may start back up with no prior knowledge about its past state. This may cause instability until protocols running on 1-RU network element  800  converge. To provide hitless failover, a 1-RU network element may be mirrored to another 1-RU network element, which may not be cost effective and may require continuous updating of the mirrored system. 
         [0092]    Control processor  830  may include a reset line that resets control processor  830 . The reset line of control processor  830  may drive other components of board  800  to reset as well. However, the reset line may not be connected to storage element  850 , and therefore storage element  850  may not be connected to the reset line. Therefore, when 1-RU network element  800  is reset, storage element  850  may not be restarted and may retain information pertaining to control plane processing of 1-RU network element  800 . When central processor  830  comes back online, central processor  830  may access storage element  850  and may download information required for control plane processing, without having to re-establish protocol states. Therefore, when storage element  850  is incorporated into 1-RU network element  800  and is not connected to a reset line, storage element  850  may provide hitless failover for 1-RU network element  800 . 
         [0093]    Although  FIG. 8  shows exemplary components of 1-RU network element  800 , in other embodiments, 1-RU network element  800  may include fewer, different, or additional components than depicted in  FIG. 8 . In still other embodiments, one or more components of 1-RU network element  800  may perform the tasks described as being performed by one or more other components of 1-RU network element  800 . 
         [0094]      FIG. 9  is a diagram of a database card implemented in an exemplary stacked system network element. A stacked system network element  900  may include stacked elements  910   a - 910   d  connected via cables  920 . Therefore, a stacked system may be one without a chassis and/or backplane. In a stacked system that does not include a database card, an element of the stack that includes a master control card, which stores state information locally, may need to continuously synchronize the stored state information with an element of the stack that includes a backup control card. This may increase the load on links that are already shared for inter-card communication and traffic redirection between elements of the stacked system. 
         [0095]    This may be avoided by including a database card as an element of the stack and connecting the database card to all the elements of the stack. Thus, stacked elements  910   a - 910   d  may include components of network element  110 . For example, stacked element  910   a  may include one or more packet forwarding engines and one or more physical interface cards, such as PFEs  220   a - 220   n  and PICs  210   a - 210   n ; stacked element  910   b  may include a master control card, such as master control card  230 ; stacked element  910   c  may include a backup control card, such as control card  240 ; and stacked element  910   d  may include a database card, such as database card  250 . 
         [0096]    Thus, stacked element  910   b  may act as a master of the system that populates databases of stacked element  910   d . If stacked element  910   b  fails, stacked element  910   c , which may include a backup control card, takes over control plane processing and may assure hitless recovery. This setup may require less software to implement than a stacked system without a database card, where state information is stored locally, and may eliminate the need for continuous updates between a master control card and a backup control card. 
         [0097]    Although  FIG. 9  shows exemplary components of stacked system network element  900 , in other embodiments, stacked system network element  900  may include fewer, different, or additional components than depicted in  FIG. 9 . In still other embodiments, one or more components of stacked system network element  900  may perform the tasks described as being performed by one or more other components of stacked system network element  900 . 
         [0098]      FIG. 10  is a diagram of a first exemplary implementation of a database card implemented in an exemplary chassis network element. In a chassis system, cards may be connected to a backplane via slots. In the first exemplary implementation illustrated in  FIG. 10 , a database card may be part of the backplane. 
         [0099]    A chassis network element  1000  may include a backplane  1010 . Backplane  1010  may include physical slots  1015   a - 1015   n , bus  201 , and database card  250 . Bus  201  may permit communication between cards connected to physical slots  1015   a - 1015   n  and database card  250 . Physical slots  1010   a - 1015   n  may hold cards  1020   a - 1020   n.    
         [0100]    Cards  1020   a - 1020   n  may include components of network element  110 . As an example, card  1020   a  may include PIC  210   a , card  1020   b  may include PIC  210   b , card  1020   c  may include packet forwarding engine  220   a , card  1020   d  may include master control card  230 , and card  1020   e  may include backup control card  240 . Cards  1020   a - 1020   n  may include any number of PICs and packet forwarding engines. Card  1020   d , which may include master control card  230 , may update database card  250  anytime a change occurs in a database associated with control plane processing. If card  1020   d  stops functioning, card  1020   e , which may include backup control card  240 , may take over as the master of the system and may initiate communication with database card  250  to maintain functioning of the system. 
         [0101]      FIG. 11  is a diagram of a second exemplary implementation of a database card implemented in an exemplary chassis network element. In the exemplary implementation of  FIG. 11 , instead of a database card being included in the backplane, a database card is provided as one of the cards. Thus, database card  250  may not be part of backplane  1010 . Rather, database card  250  may be one of cards  1020   a - 1020   n , such as card  1020   f . Card  1020   d , which may include master control card  230 , may update card  1020   f , which may include database card  250 , anytime a change occurs in a database associated with control plane processing. If card  1020   d  stops functioning, card  1020   e , which may include backup control card  240 , may take over as the master of the system and may initiate communication with card  1020   f  to maintain functioning of the system. 
         [0102]    Although  FIG. 10  and  FIG. 11  show exemplary components of chassis network element  1000 , in other embodiments, chassis network element  1000  may include fewer, different, or additional components than depicted in  FIG. 10  and  FIG. 11 . In still other embodiments, one or more components of chassis network element  1000  may perform the tasks described as being performed by one or more other components of chassis network element  1000 . 
       CONCLUSION 
       [0103]    Implementations described here may provide a network element with separate control plane processing and database maintenance. Each control card that may become a master control card of the network element has a processor and a memory for control plane processing. All control cards are connected to a database maintenance card, which has its own processor and memory. The master control card processes all control plane messages and the database maintenance card maintains all the databases associated with control plane processing. The processor of the master control card sends messages to the processor of the database maintenance card to query, store, or delete information in the databases of the database maintenance card, which are shared by all the control cards in the network element. 
         [0104]    The foregoing description provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. 
         [0105]    For example, while series of blocks have been described with respect to  FIGS. 5-7 , the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel. 
         [0106]    Still further, aspects have been mainly described in the context of a network element, such as a router, switch, gateway, or a firewall. As discussed above, the device and methods described herein may be used with any type of network device that communicates with other devices in a communications network. 
         [0107]    It will be apparent that aspects, as described above, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these aspects should not be construed as limiting. Thus, the operation and behavior of the aspects were described without reference to the specific software code—it being understood that software and control hardware could be designed to implement the aspects based on the description herein. 
         [0108]    It should be emphasized that the term “comprises/comprising” when used in this specification is taken to specify the presence of stated features, integers, steps, or components, but does not preclude the presence or addition of one or more other features, integers, steps, components, or groups thereof. 
         [0109]    Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the invention. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. 
         [0110]    No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on,” as used herein is intended to mean “based, at least in part, on” unless explicitly stated otherwise.