Not applicable.
Not applicable.
Typically, routing and switching platforms comprise about one or about two control plane processors, e.g., route processor (RP) cards. In today's modern hardware, more processors are being added to “scale up” a router or switch to handle more networking traffic. For example, more than about three processors may be used in network components by adding or plugging additional line processor (LP) cards. The quantity of processors used in the network components may further increase as the cost of processors (e.g. LP cards) decreases. Typically, adding an additional processor to network components requires manually configuring and setting up the processes and services that run on each new processor. This may also require reconfiguring existing processors and sometimes removing some processes that were previously running on the existing processors. This methodology requires human intervention, e.g., to perform manual configuration, which can be prone to error, is not dynamic or flexible, and causes the configuration of network components and processes to be substantially fixed or static.
In one embodiment, the disclosure includes an apparatus. The apparatus comprises a processor configured to discover one or more peer processors associated with a network component in a dynamic manner by detecting an announcement message from a peer processor, wherein the announcement message is multicast from the peer processor when the peer processor is added or activated on the network component.
In another embodiment, the disclosure includes a network component. The network component comprises a processor configured to multicast an announcement of its presence and properties to at least one peer processor associated with the network component, wherein the announcement is multicast from the processor automatically when the processor is added or activated on the network component.
In a third aspect, the disclosure includes a method. The method comprises receiving an announcement message from a peer processor; sending a service request message to the peer processor; recording a list of services for the peer processor if the peer processor returns a service reply message that comprises the list of services; marking the peer processor as active if the peer processor returns a service reply message and marking the peer processor as inactive if the peer processor does not return a service reply message.
These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.
Disclosed herein is a system and method for supporting the dynamic configuration of processes on a plurality of processors. The processors may be control plane processors, such as RP cards and/or LP cards, of which at least some may be added (or plugged), removed, or replaced in a network component. The method may support the dynamic configuration of one or more processes on one or more processors, e.g., when adding, removing, and/or changing one or more processors in the system. The processes may comprise a process manager (PM) that may be located in a processor and configured to start or initiate one or more services or processes on the processor. The PM may also be configured to dynamically discover other processors in the system, which may be added or reconfigured, and any processes, services, and/or resources running on the processors. The PM may determine which processors are available, what processes/services are running on which processors, including what duplicate services/processes are running on multiple processors, such as shared or distributed services. The PM may also determine and detect dynamically the aggregate load of the system, e.g., for a plurality of available processors, and if any of the processors are under utilized.
The PM 112 may manage initial system startup of other processes and monitor the other running processes 114, 116, 118, 120, 122, 124, 126, and 128 on the processor 110. The PM 112 may monitor the other running processes 114, 116, 118, 120, 122, 124, 126, and 128 to verify that the processes are not failing, e.g., due to lack of resources, and are running appropriately. The PM 112 may also restart any failed process or kill any process, such as a run-away process, e.g., to save resources. Additionally, the PM 112 may be configured to communicate with other processes, e.g., other PMs, that run on other processors (not shown) using an Internal Router Capability Protocol (IRCP). IRCP allows existing software to automatically find new hardware elements and discover their capabilities. Furthermore IRCP allows older entities to migrate load to new entities thereby automatically using the new processing capacity which simplifies both deployment and administration while providing a high degree of scalability and availability. The other processors may be similar to the processor 110 and may be located on the same network component of the processor 110, e.g., on the same switch or router.
The IRCP may be configured to allow the dynamic configuration of processes, including PMs, on one or more processors in a network component, e.g., for routing and/or switching operations. The IRCP may allow a network administrator to add a new CE or multiple CEs to a network component, e.g., to expand routing and switching capabilities. The IRCP may allow the software existing on the network component to automatically find new hardware elements and discover their capabilities. Further, the IRCP may allow older CEs to migrate load (e.g., processes and/or services) to the new CEs, e.g., in a dynamic or automatic manner, to make use of the new processing capacity due to adding the new CEs. As such, the IRCP may simplify network deployment and/or administration while providing an improved degree of scalability and availability, e.g., in comparison to current static configuration schemes.
The processors 200 may use the IRCP to dynamically learn about one another, request start services from one another, migrate services or part of services between one another, and/or distribute load information between them. The IRCP may be implemented on a separate process in each of the processors 200 or as part of other services. In an embodiment, the IRCP may be implemented by the first PM 212, the second PM 222, and the third PM 232. The first PM 212, the second PM 222, and the third PM 232 may use the IRCP to dynamically discover one another, any processes of the processors 200, and their capabilities. The first PM 212, the second PM 222, and the third PM 232 may also use the IRCP to exchange services, change loads between the processors 200, and migrate processes/services between the processors 200.
The IRCP may allow any of the first PM 212, the second PM 222, and the third PM 232 to announce its presence to other PMs using User Datagram Protocol (UDP) signaling over a multicast channel. The announcement may enable the processors 200 to dynamically discover each other and any additionally added processors, e.g., over time. For instance, the announcement may be signaled or sent automatically when the first PM 212, the second PM 222, or the third PM 232 is added or activated. The first PM 212, the second PM 222, and the third PM 232 may also use the IRCP to send and/or receive other information or messages, for instance using a Stream Control Transmission Protocol (SCTP). The messages may comprise a Payload Protocol Identifier of about 28, which may be assigned by the Internet Assigned Numbers Authority (IANA).
Any one of the first PM 212, the second PM 222, and the third PM 232 may be an IRCP sender or speaker that implements an announcement procedure. Accordingly, the IRCP sender or speaker may send an announcement message within a time window equal to a sum of a determined announcement period and an additional random jitter from about zero to about four seconds. The IRCP may send the announcement message to announce its presence to one or more IRCP receivers, e.g., one or more other PMs on the processors 200. The IRCP speaker may send a plurality of announcement messages within a plurality of corresponding subsequent time windows to one or more IRCP receivers. The announcement period may be determined by an IRCP.ANNOUNCEMENT timer that may be set by a network administrator or management system. The announcement message may comprise information that indicates the IRCP speaker, the load of the IRCP speaker, the processes on the IRCP speaker, and/or the availability of the IRCP speaker to participate in process migration.
Each announcement period, the IRCP speaker or sender may determine if it is able to receive some load from its peers (e.g., any other PM on the processors 200). To determine whether the IRCP speaker is able to receive a load from its peers, the IRCP speaker or another process may maintain a plurality of history fields for time usages of load samples on the processor of the IRCP speaker. A load sample may correspond to a process/service or a part of a process/service. The history fields may be stored in a plurality of IRCP.HISTORY.SIZE records or files. Initially, the history fields may be set to about zero. For each load sample, a central processing unit (CPU) time usage may be recorded in a corresponding history field, e.g., both in terms of idle time and busy time. The values of the idle time and busy time may be combined to form a percentage of idle time versus total time.
The percentage of idle time may be compared against a low water mark value for CPU utilization. The low water mark may correspond to a value IRCP.CPU-LOW-WATER that may be set by the network administrator or the management system. If the percentage of idle time is greater than or equal to about the low water mark, then the corresponding CPU interval may indicate that the processor may accept a new load sample. However, a new load sample may be accepted if the IRCP.HISTORY.SIZE records for all the load samples on the processor indicate that the processor is available to receive or take on a new load sample. If a new load may be accepted, the IRCP sender may check the memory utilization of the processor. The memory utilization may correspond to a percentage of free memory available versus the total amount of memory. The memory utilization may be compared against a low water mark value for memory utilization. The low water mark may correspond to a value IRCP.MEM-LOW-WATER that may be set by the network administrator or the management system. If the percentage of memory available is greater than or about equal to the low water mark, then the processor may be available to take on more load samples, which may be indicated in the outgoing announcement message from the IRCP speaker.
An IRCP receiver, e.g., a PM on one of the processors 200, may receive the announcement message from the IRCP sender and perform a plurality of steps depending on whether the IRCP sender is a new added processor or an existing processor. The IRCP receiver may maintain a mapping of host identity fields in a received announcement message to peer control blocks for peer processors. When an announcement message is received, the IRCP receiver may search in the mapping to determine whether the announcement message corresponds to an existing or new peer, e.g., based on a host identity indicated in the message.
If the announcement message corresponds to a new peer processor, the IRCP receiver may not find a match in the mapping. In this case, the IRCP receiver may use a shared secret and a first about 36 bytes in the announcement message to generate a signature (SHA-1 signature) for the IRCP sender. The first about 36 bytes may be subsequent to the shared secret in the announcement message. The generated signature may comprise about 20 bytes. The generated signature may then be compared to a signature indicated in the announcement message. The two signatures may be compared, e.g., byte by byte, and if the two signatures do not match, then the announcement message may be discarded and the processing may be stopped.
If the two signatures match, then a new peer control block (PCB) may be created at the IRCP receiver. The PCB may comprise a plurality of relevant fields from the announcement message, which may be used to track the peer's capabilities and its availability. The PCB may also comprise the time of last update of the PCB, which may be set to the current time of updating. The PCB may also comprise the sequence number and the signature (SHA-1 signature) indicated in the announcement message. The signature may be added to the PCB to avoid recalculating the signature for future announcement messages for the same peer. The new PCB may then be entered into a host identification to peer PCB mapping table, which may be kept in a HASH table that is hashed on an about 64 bit host identification. Subsequently, the sequence number in the PCB may be updated to be about one less than the sequence number in the announcement message. The peer may also be marked as being active and needing a service update. Next, the sequence number stored in the PCB may be compared to the sequence number in the announcement message. If the sequence number in the announcement message is less than the sequence number in the PCB, then the message may be an old or outdated message and hence discarded. Otherwise, the sequence number in the PCB may be updated or replaced with the sequence number in the message and the processing proceeds.
Alternatively, if the announcement message corresponds to an existing peer processor that is marked as active, then the hash inside the PCB of the processor may be compared to the hash in the announcement message. If the two hash values do not match, then the message may be ignored without further processing. If the two hash values match, then the sequence number stored in the PCB may be compared to the sequence number in the announcement message. If the sequence number in the announcement message is less than the sequence number in the PCB, then the message may be an old or outdated message and hence discarded. Otherwise, the sequence number in the PCB may be updated or replaced with the sequence number in the message and the processing proceeds.
If the announcement message corresponds to an existing peer processor that is marked as inactive, then a new signature may be calculated using the shared secret. The new signature may be compared to the signature in the announcement message. If the two signatures do not match, then the message may be discarded without further processing. Otherwise, the signature may be updated in the PCB of the peer processor. The sequence number may also be set to about one minus the sequence number in the announcement message. The peer may also be marked as being active and needing a service list update. Next, the sequence number stored in the PCB may be compared to the sequence number in the announcement message. If the sequence number in the announcement message is less than the sequence number in the PCB, then the message may be an old or outdated message and hence discarded. Otherwise, the sequence number in the PCB may be updated or replaced with the sequence number in the message and the processing proceeds. If the peer is marked as needing a service list update or exchange, then a service exchange procedure may be started, as described below. The relevant information about the peer may then be updated in the PCB, including availability, its CPU and memory characteristics, and last statistics. The peer's last announcement timestamp may then be updated.
When one or more new peer processors discover each other or when a peer has been inactive for some time, a service exchange procedure may be needed. The service exchange may be started when a peer receives an announcement message. A first peer (e.g., PM, process, or processor) may send or multicast a service list request message, which may comprise an embedded IRCP announcement message. The embedded IRCP announcement message may allow a second peer (e.g., PM, process, or processor) that receives the announcement to build a PCB for the first peer before responding to the service list request message. After sending the request message, the first peer may not start a timer or other mechanism to track the peer. Instead, the peer may rely on a SCTP layer and watch for a notification of failure. The SCTP layer may be monitored by an IRCP agent, which may be a process running on the peer. For instance, the IRCP agent may be the PM or a separate process on the peer. If an SCTP message is not received or provides a SCTP notification that indicates a failed association or setup, then the second peer may be marked as inactive, e.g., by the IRCP agent. A plurality of exchanges, except the announcement message, may be sent via SCTP to the same port number used for the UDP announcement messages, which may be assigned the port number 5050 or any other port number. The SCTP messages may use the Per Protocol Identification field, which may be set to the IANA assigned value for IRCP at about 28. The IRCP agent may monitor failure notifications on the SCTP layer. When a detected SCTP failure notification indicates that the underlying SCTP association has failed, the receiver of the notification, e.g., the IRCP agent, may mark the second peer as inactive.
Upon receiving a service list request, the second peer may process the embedded announcement message in the request as if it had just arrived via the multicast channel. The processing may comprise creating the first peer PCB and/or updating its current load statistics. When processing the announcement message as a normal announcement, if the second peer does not have a service list from the first peer, a new request for a service list may be sent to the first peer during the processing. The second peer may then look up the first peer PCB and if the first peer PCB is not found, then the second peer may stop processing the message. This scenario may occur if the signature in the service list request announcement portion does not match the calculated signature. The second peer may respond to the first peer service list request with a service list response message. The message may comprise the number of services and a set of American Standard Code for Information Interchange (ASCII) services each separated by a set of NULL (e.g., zero) characters.
Upon receiving the service list response message, the first peer may look up the second peer PCB. If the second peer PCB does not exist, the first peer may discard the message and stop the processing. If a list of services is sent with the second peer PCB, the first peer may discard the old list. The first peer may then parse the list of services and record the services and the total count within the second peer PCB. After the service list exchange procedure above is completed, both peers may have a complete map of the services that may be run or implemented by each other.
The message type field 302 may comprise about 32 bits and have a value of about one that indicates the type of the announcement message 300. The flags field 304 may comprise about 16 bits, set to a value of about zero by the sender, and ignored by the receiver. The length field 306 may comprise about 16 bits and indicate the length of the announcement message 300, e.g., in bytes, which may be equal to about 120 bytes. The host identity field 308 may comprise about 64 bits and represent the identity of the sending host or peer. The host identity field 308 may have a value that is generated by selecting the lowest machine address of a plurality of sender's Ethernet interfaces. The release field 310 may comprise about 32 bits and indicate the release number of the sender's IRCP system, which may be equal to about one.
The version field 312 may comprise about 32 bits and represent the version number of the sender's IRCP system, which may be equal to about one. The number of CPUs field 314 may comprise about 32 bits and indicate the quantity of CPUs that the sender CE has in its CPU complex, such as in a multiple core processor. This value may be equal to about one for single core systems. The hertz field 316 may comprise about 32 bits and indicate the hertz value used by the sending CPU complex. The hertz value may be configurable based on the system. For example, the hertz value may be equal to about 1000 for some current systems. The CPU frequency field 318 may comprise about 32 bits and indicate the frequency of the sending CPU complex. The value in the CPU frequency field 318 may be divided by about 1,000,000. For example, the value may be equal to about 3,013 for an about 3,013,726,115 hertz CPU frequency. The stat Hz clock field 320 may comprise about 32 bits and indicate the statistical clock frequency associated with the sending CPU complex. This value may indicate how many CPU ticks are present in each of the idle and CPU statistical samplings.
The CPU stat use field 322 may comprise about 32 bits and indicate the amount of CPU that was used in stat Hz ticks during the sampling period between the last two announcements. The ann sequence number 324 may comprise about 32 bits and indicate the sequence number of the announcement message 300. The sequence number may be monotonically increased, e.g., incremented by about one, for each subsequently transmitted announcement message. The total system memory field 326 may comprise about 32 bits and indicate the amount of memory the sender CPU complex has in total. The amount of memory may be indicated in multiples of about 1,024 bytes. For example, an about one Gigabyte may be indicated by a value of about 1,048,576. The idle stat use field 328 may comprise about 32 bits and indicate the amount of stat Hz ticks during the sampling period for which the CPU was idle. The millisec-passed field 330 may comprise about 32 bits and indicate the number of milliseconds that passed since the last announcement was sent.
The available memory field 332 may comprise about 32 bits and indicate the amount of memory that is currently available in about 1,024 byte increments. For example, an about one Gigabyte may be indicated by a value of about 1,048,576. The can take more load field 334 may comprise about 32 bits and comprise a Boolean value that may be set to a non-zero value to indicate that the sender may be available to take on more workload. If the value is equal to about zero, then the sender may not be able to take on more workload. The local software version number field 336 may comprise about 32 bytes and comprise an ASCII string that indicates the local system's software version number (e.g., ‘release1-1.1’). Any unused bytes in this filed may be set to about zero. The SHA-1 digest field 338 may comprise about 20 bytes and comprise the SHA-1 signature digest of the sender.
During an announcement procedure, the IRCP sender or speaker (e.g., peer processor or corresponding PM) may configure the first three fields of the announcement message 300 (e.g., the message type field 302, the flags field 304, and the length field 306) that may represent the message header. The three fields may be configured to allow a receiver of the message to identify the incoming message. The message type in the message type field 302 may be set to about one. The flags in the flags field 304 may not be used and may be set to about zero. The length field 306 may be set to indicate a length value of about 120 bytes for the announcement message 300.
The host identity field 308 may be filled in with a unique host identity. This unique host identity may be a constant 64 bit value that does not change from the time the CE first comes online until it is shutdown. This number or value may be unique with respect to other CE's in the system. In most cases, the CE's Ethernet network interface cards may be examined and the lowest Media Access Control (MAC) address assigned to the CE may be used, e.g., prefixing the upper about two bytes with about zero. This may assure the CE of holding a unique and permanent identity (unless an interface card is removed). Other mechanisms, such as manual configuration or internal CPU unique identity may be used, as long as the generated host identity is unique.
The release field 310 may be filled in with a version number of about one. The version field 312 may be filled in with the same version number of about one. The number of CPUs field 314 may be filled with values from about one to about 128 for current processor technology, but may also comprise larger values for future systems. The hertz field 316 may be filled in with the system's hertz value, such as about 1,000 for current operating systems, which may be used to control the granularity of timers that the sending system generates. The CPU frequency field 318 may be filled in with a frequency value of each running CPU (in a CPU complex) in millions of hertz, e.g., in Megahertz. For example, the CPU frequency field 318 may be assigned a value of about 2,791 to indicate about 2.791 Gigahertz.
Typically, operating systems may not keep track of statistics on processes in terms of hertz. Instead, a sampling interval may be indicated in the stat Hz clock field 320. The stat Hz clock field 320 may be used to report CPU and idle usage. For example, if the stat Hz clock is about 127 and the value in the hertz field 316 is about 1000, then in a period of about 60,000 milliseconds, about 7,620 stat Hz clocks may be accounted for in the announcement for each CPU. The CPU stat use field 322 may be filled in with the total stat Hz intervals during which the CPUs were busy since the last announcement. The value in the CPU stat field 322 may be the combined value of a plurality of CPUs or core processors in a CE.
The ann sequence number field 324 may be filled in with a unique 32 bit sequence number, which may be incremented after each announcement is generated. The 32 bit sequence number may be a 32 bit unsigned arithmetic. A receiver may examine each arriving announcement message 300 and compare the last sequence number in the last message. Since the announcement data may be multicast, the receiver may detect the same announcement on multiple interfaces, and thus process only one announcement. The total system memory field 326 may be filled in with the value of the total CE system memory in about one kilobyte increments.
The idle stat use field 328 may be filled in with the number of stat Hz ticks of which the CPU were idle since the last announcement. The millisec-passed field 330 may be filled in with the total number of milliseconds that have passed since the last announcement was sent. The can take more load field 334 may be filled in with a value that indicates to the receiver whether the sender is capable of accepting migration load to its CE. A non-zero value may indicate that the sender is willing to accept load. A zero value may indicate that the sender is not willing to accept load. The local software version number field 336 may be filled in with a local software version number, which may be an ASCII string.
Each IRCP participant (e.g., peer processor or PM) may hold a shared secret that other peer IRCP senders may know. This shared secret is used to create a SHA-1 signature for the first about 36 bytes of the IRCP announcement message. The shared secret may be used by a sender to create a static signature that may be placed in the SHA-1 digest field 338 in its outgoing message. A receiver may also be able to store this signature and perform initial computation when a new peer announcement arrives. An announcement from a peer with an invalid SHA-1 signature may be ignored and any subsequent messages from such a peer sent using SCTP may be also ignored, until a valid SHA-1 signature is detected in a subsequent peer's announcement message.
The method 600 may start at block 610, where a multicast group may be joined. For instance, a new CE (e.g., LP card) may be added to a network component (e.g., router) and hence may start up and join a multicast group of a plurality of CEs on the network component. The PM of the new CE may be initiated and may join the group using Internet Protocol (IP) multicast or other multicast protocols, e.g., at the second network layer (Layer 2). At block 612, announcements on the multicast channel may be listened to. The PM of the new CE may listen on the multicast channel (e.g., IP multicast channel) to any announcements sent from any of the other CEs in the group.
At block 614, an announcement may be sent on the multicast channel. The PM may send an announcement message, such as the announcement message 300, on the multicast channel to the CEs in the group to announce its presence. The PM may send the announcement a plurality of times, e.g., periodically, on the multicast channel. The announcement may comprise information and various properties about the CE, including load, capabilities, CPU capacity, memory usage, availability to take on processes, and/or other information indicated in the announcement message 300.
At block 616, the method 600 may determine whether an announcement is received. If an announcement is received or detected, the method 600 may proceed to block 618. Otherwise, the method 600 may proceed to block 630. At block 618, a peer that sent the announcement may be marked as active. The peer may be a new peer or an activated peer that corresponds to one of the other CEs in the group. At block 620, information about the peer may be recorded and/or updated. The information may be received in an announcement message, such as the announcement message 300, from a peer CE. The information may comprise various properties about the peer CE, including load, capabilities, CPU capacity, memory usage, availability to take on processes, and/or other information indicated in the announcement message 300.
At block 622, a service request may be sent to the peer. A service request message, such as the service request message 400, may be sent to the peer CE that announced itself. The service request may be sent, e.g., to the PM of the peer CE, to request a list of available or running processes/services on the peer CE. At step 624, the method 600 may determine whether a service reply is received. If a service reply is received from the peer CE, then the method 600 may proceed to block 626. Otherwise, the method may proceed to block 640. At block 626, services and statistics of the peer may be recorded. The peer CE may send a reply in a service reply message, such as the service reply message 500, which may comprise a list of services running on the peer CE. The services indicated in the service reply may include duplicate services/processes that are running on multiple processors, such as shared or distributed services. The receiving peer may then record the list of services in the service reply with the statistics of the peer CE indicated in the received announcement message. Thus, the receiving peer may have knowledge about services that run or may run on the peer CE. The exchange of service request and service reply between the peers may be implemented using SCTP or any other reliable transport protocol, such as Transmission Control Protocol (TCP). The method may then return to block 612.
At block 630, the method 600 may determine whether the number of announcements sent to a peer exceeded a limit. If the number of announcements sent to the peer has reached a limit or threshold, e.g., about two or about three repeated announcements, without receiving a response in return, the method 600 may proceed to block 640. Otherwise, the method may return to block 612. At block 640, the peer may be marked as inactive, for instance if the peer does not respond to a repeated announcement message or a service request message. The method 600 may also comprise additional steps (not shown) to declare its running processes/services. For instance, the PM may receive a service request from a peer, and may send a service reply to the peer that comprises a list of running services/processes. These steps may comprise similar details as described for blocks 622 and 626.
The network components and/or methods described above may be implemented on any general-purpose network component, such as a computer or network component with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it.
The second storage 804 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM 808 is not large enough to hold all working data. Second storage 804 may be used to store programs that are loaded into RAM 808 when such programs are selected for execution. The ROM 806 is used to store instructions and perhaps data that are read during program execution. ROM 806 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of second storage 804. The RAM 808 is used to store volatile data and perhaps to store instructions. Access to both ROM 806 and RAM 808 is typically faster than to second storage 804.
At least one embodiment is disclosed and variations, combinations, and/or modifications of the embodiment(s) and/or features of the embodiment(s) made by a person having ordinary skill in the art are within the scope of the disclosure. Alternative embodiments that result from combining, integrating, and/or omitting features of the embodiment(s) are also within the scope of the disclosure. Where numerical ranges or limitations are expressly stated, such express ranges or limitations should be understood to include iterative ranges or limitations of like magnitude falling within the expressly stated ranges or limitations (e.g., from about 1 to about 10 includes, 2, 3, 4, etc.; greater than 0.10 includes 0.11, 0.12, 0.13, etc.). For example, whenever a numerical range with a lower limit, R1, and an upper limit, Ru, is disclosed, any number falling within the range is specifically disclosed. In particular, the following numbers within the range are specifically disclosed: R=R1+k*(Ku−R1), wherein k is a variable ranging from 1 percent to 100 percent with a 1 percent increment, i.e., k is 1 percent, 2 percent, 3 percent, 4 percent, 7 percent, . . . , 70 percent, 71 percent, 72 percent, . . . , 97 percent, 96 percent, 97 percent, 98 percent, 99 percent, or 100 percent. Moreover, any numerical range defined by two R numbers as defined in the above is also specifically disclosed. Use of the term “optionally” with respect to any element of a claim means that the element is required, or alternatively, the element is not required, both alternatives being within the scope of the claim. Use of broader terms such as comprises, includes, and having should be understood to provide support for narrower terms such as consisting of, consisting essentially of, and comprised substantially of. Accordingly, the scope of protection is not limited by the description set out above but is defined by the claims that follow, that scope including all equivalents of the subject matter of the claims. Each and every claim is incorporated as further disclosure into the specification and the claims are embodiment(s) of the present disclosure. The discussion of a reference in the disclosure is not an admission that it is prior art, especially any reference that has a publication date after the priority date of this application. The disclosure of all patents, patent applications, and publications cited in the disclosure are hereby incorporated by reference, to the extent that they provide exemplary, procedural, or other details supplementary to the disclosure.
While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.
The present application claims the benefit of U.S. Provisional Patent Application No. 61/321,066 filed Apr. 5, 2010 by Renwei Li, et al. and entitled “In-service Process Migration and Virtual Router Migration,” and U.S. Provisional Patent Application No. 61/324,610 filed Apr. 15, 2010 by Renwei Li, et al. and entitled “In-service Process Migration and Virtual Router Migration,” both of which are incorporated herein by reference as if reproduced in their entirety. The present application is related to commonly assigned U.S. patent application Ser. No. ______ (Atty. Docket No. 4194-38700) filed even date herewith by Randall Stewart, et al. and entitled “Method for Dynamic Migration of Process or Service from One Control Plane Processor to Another” and to commonly assigned U.S. patent application Ser. No. ______ (Atty. Docket No. 4194-38800) filed even date herewith by Randall Stewart, et al. and entitled “Method for Dynamic On Demand Startup of a Process or Resource,” both of which are incorporated herein by reference as if reproduced in their entirety.
Number | Date | Country | |
---|---|---|---|
61321066 | Apr 2010 | US | |
61324610 | Apr 2010 | US |