摘要:
A method for processing packets in a router includes specifying operations on packets as chains of processing elements. Each chain is uniquely associated with one interface/protocol pair, and each processing element performs at least one function on a packet. An incoming packet is received, and processed, first by a demultiplexor element which determines the protocol of the next higher level used by the packet. Then, the packet is processed by the elements of a decapsulation chain associated with the interface on which the packet was received, and by the elements of an encapsulation chain associated with the interface on which the packet is to be transmitted. The demultiplexor element or operation passes the packet on to a decapsulation chain associated with the protocol and with the incoming interface, depending on protocol information contained in the incoming packet. Decapsulation and encapsulation chains can be built dynamically, by inserting new and removing old elements as necessary as new protocols are developed and new features added. A chain walker walks through the chains, passing the processed packet to each element in a chain, until either the end of the chain is reached and processing is complete, or until the packet is dropped because no function can process it, or because a packet is processed by an outside process or by hardware, which may optionally stop the chain walk. A chain walk may be temporarily halted, or may be terminated. If temporarily halted, the chain walk can be resumed at any element in the chain, depending on the packet's requirements. A chain walk can also begin at any element in a chain. Alternate branches within the chain can be provided, where each branch can comprise zero or more elements. A classifier determines which branch to take, based on at least one characteristic of the packet being processed, and executes the elements of the selected branch.
摘要:
Critical code routines are identified, separated from other routines, and compiled into a set of one or more critical dynamic link libraries (“DLLs”). These are then recognized by a DLL loader and loaded at a reserved address space in the DLL memory space. Once all of the critical DLLs have been loaded, cache locking may be enabled for the reserved address space. Robust fault containment is facilitated through the use of code modules implemented as shared libraries that can be loaded and unloaded in a running system by individual processes. These code modules can be replaced individually as defects are found and fixed without requiring replacement of the entire system image or application image. What would normally be a monolithic application is modularized, and the sharing of common code among multiple applications is facilitated.
摘要:
The present invention relates to providing processor redundancy in a system such as a router. According to an embodiment of the present invention, when a primary processor is about to crash in a system having two or more processors, the imminent crash is identified prior to the occurrence of the actual crash. The primary processor sends a message to the secondary processor to indicate that it is crashing. The primary also sets a timer to determine a period of time to wait prior to crashing. When the secondary processor receives the message from the primary processor, the secondary processor becomes the new primary processor. The new primary processor then sends an acknowledgement to the old primary processor. The old primary processor crashes and reboots as the new secondary processor.
摘要:
Systems and methods for replacing software controlling active routers while minimizing impact on network operation are provided by virtue of one embodiment of the present invention. The software replacement process takes advantage of packet processor redundancy. An active packet switching device to be reprogrammed is de-activated and a redundant packet switching device takes over. The no longer active packet switching device is reprogrammed before being reactivated.
摘要:
A method for processing packets includes specifying a primary chain of function elements on a primary processor and specifying a secondary chain of function elements on a secondary processor. Each element is operable to perform an operation on a packet. The method further includes selecting one of the primary processor, secondary processor, and combination of the primary and secondary processors to perform a packet-processing function of each element. The packets are processed by walking through the elements on at least one of the primary and secondary chains. A router having a primary and secondary processor is also disclosed. The primary and secondary processors each include a chain generator for generating primary and secondary chains of function elements. Each of the function elements of the primary chain corresponds to one of the function elements of the secondary chain to form a pair of function elements. At least one function element of each pair is configured to perform a packet-processing function.
摘要:
Systems and methods for replacing software controlling active routers while minimizing impact on network operation are provided by virtue of one embodiment of the present invention. The software replacement process takes advantage of packet processor redundancy. An active packet switching device to be reprogrammed is de-activated and a redundant packet switching device takes over. The no longer active packet switching device is reprogrammed before being reactivated.
摘要:
Portions of code containing critical code routines are identified and labeled, then compiled into Dynamic Link Libraries (“DLLs”) and linked such that the critical code routines are optimally loaded into a reserved address space in the DLL memory space. If supported, cache locking may be enabled for the reserved address space. The portions of source code containing portions of critical code for which execution performance is to be improved are labeled, and the source code is scanned prior to compilation to locate the labeled portions of critical code. A linker is configured to store all the labeled portions of critical code into an Executable and Linking Format (“ELF”) section header, which is relocated at run-time into a memory space reserved for the portions of critical code. Alternatively, the critical code is compiled and linked into an executable file containing the critical code, and the executable file is optimized by scanning the instruction stream and in-lining the critical code. A prolog and an epilog that accommodates this in-lined critical code is generated, and a single optimized DLL containing the critical code is generated, which is then loaded into a reserved memory space. Robust fault containment is facilitated through the use of code modules implemented as shared libraries that can be loaded and unloaded in a running system by individual processes. These code modules can be replaced individually as defects are found and fixed without requiring replacement of the entire system image or application image. What would normally be a monolithic application is modularized, and the sharing of common code among multiple applications is facilitated.
摘要:
A method of monitoring congestion within a data path having a queuing node located therein and a plurality of downstream nodes positioned downstream of the queuing node. The method includes monitoring congestion at the plurality of downstream nodes and setting a congestion notification flag by one of the downstream nodes when the node is congested. The transmission of data packets from the queuing node is stopped and packets received at the queuing node are queued when the flag is set. The method further includes transmitting packets from the queuing node when the congestion notification flag is cleared. A system for monitoring congestion on a data path is also disclosed.
摘要:
The present invention relates to providing processor redundancy in a system such as a router. According to an embodiment of the present invention, in a system having two or more processors, initialization sequence is started. During the initialization sequence, a redundancy subsystem is initialized. The redundancy subsystem identifies the projects or assignments that are to be off loaded from the primary processor to the secondary processor. According to an embodiment of the present invention, the initialization sequence is then suspended and a discovery process is performed. During the discovery process, it is determined whether the processor running the initialization sequence is a primary or a secondary processor. If it is a secondary processor, then the initialization sequence remains suspended and the secondary processor monitors the health of the primary processor until a failure of the primary processor occurs. If a primary processor failure occurs, then the initialization process is resumed for the secondary processor, hence establishing the secondary processor as the new primary processor.
摘要:
According to an embodiment of the present invention, two routers coupled through a network, such as a local access network (LAN), may be used to serve the function of redundancy to avoid the failure of a connection. The LAN may be used as a backplane to substitute for a bus between two processors. According to an embodiment of the present invention, the two routers may send their medium access control (MAC) addresses to each other and compare these MAC addresses. The router associated with the MAC address that meets a predetermined criteria may be deemed as a primary router and the other router can be deemed as a secondary router. An example of meeting the predetermined criteria is the router associated with the lower MAC address. Once processor states, such as stand alone, primary, and secondary, are established for the two routers, the primary router may serve the function of a standard router, while the secondary router monitors the health of the primary router and becomes a primary router should the original primary router have a failure.