In an example embodiment, a method is provided that assigns a sequence value to a host. The host is identified by a host network layer address. After the assignment, the host network layer address and the sequence value are included in an advertisement for transmission. In another example embodiment, another method is provided. Here, a first sequence value associated with the host network layer address is received from a network device. In addition, a second sequence value associated with the same host network layer address is received from a different network device. The first sequence value is ranked relative to the second sequence value and data is transmitted to the network device based on the ranking.
|
1. A method at a network device, the method comprising:
at a network switch:
receiving a previous advertisement including a host network layer address of a host and an existing sequence value associated with the host network layer address;
after the receiving, detecting that the host is associated with the network switch, the host being a device or a program application that provides a service;
generating a sequence value at the network switch based on the detecting, the generating including changing the received existing sequence value to a next sequential value that represents the sequence value;
associating the sequence value with the host network layer address of the host; and
transmitting an advertisement to a different network switch, the advertisement including the host network layer address and the sequence value.
12. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a network switch, cause the network switch to perform operations comprising:
receiving a previous advertisement including a host network layer address of a host and an existing sequence value associated with the host network layer address;
after the receiving, detecting that the host is associated with the network switch, the host being a device or a program application that provides a service;
generating a sequence value at the network switch based on the detecting, the generating including changing the received existing sequence value to a next sequential value that represents the sequence value;
associating the sequence value with the host network layer address of the host; and
transmitting an advertisement to a different network switch, the advertisement including the host network layer address and the sequence value.
8. An apparatus comprising:
a network switch including:
a processor; and
a memory in communication with the processor, the memory comprising instructions executable by the processor, when the instructions are executed the processor being operable to:
receive a previous advertisement including a host network layer address of a host and an existing sequence value associated with the host network layer address;
after the previous advertisement is received, generate, based on detecting that the host is associated with the network switch, a sequence value at the network switch, wherein the processor is configured to generate by changing the received existing sequence value to a next sequential value that represents the sequence value, the host being a device or a program application that provides a service;
associate the sequence value with the host network layer address of the host; and
transmit an advertisement to a different network switch, the advertisement including the host network layer address and the sequence value.
2. The method of
3. The method of
incrementing the received existing sequence value to the next sequential value.
4. The method of
decreasing the received existing sequence value to the next sequential value.
5. The method of
6. The method of
7. The method of
9. The apparatus of
10. The apparatus of
increment the received existing sequence value to the next sequential value.
11. The apparatus of
decrease the received existing sequence value to the next sequential value.
13. The storage medium of
14. The storage medium of
incrementing the received existing sequence value to the next sequential value.
15. The storage medium of
decreasing the received existing sequence value to the next sequential value.
|
This application is a continuation of and claims priority to U.S. application Ser. No. 12/013,176, filed on Jan. 11, 2008, which is incorporated herein by reference in its entirety.
The present disclosure relates generally to computer networks. In an example embodiment, the disclosure relates to host route convergence based on sequence values.
When a host moves from one network device to another network device, other network devices within a computer network need to update their routing information such that the routes converge on the new location of the host. Such routing information is needed to keep host connections and to minimize loss of network traffic. When a host moves from one network device to another network device, current routing protocols require the old network device (without the host) to transmit a withdraw message and the new network device (with the host) to advertise the new route. The other network devices will transmit data to the new network device only after they have received the withdraw message.
However, the transmission and receipt of withdraw messages can take time, which delays host route convergence. The network traffic associated with the transmission of withdraw messages can seize a large amount of network bandwidth. Furthermore, the delays associated with waiting for withdraw messages can cause packet loss.
The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of an example embodiment of the present disclosure. It will be evident, however, to one skilled in the art that the present disclosure may be practiced without these specific details.
In an example embodiment, a method is provided that assigns a sequence value to a host. The host is identified by a host network layer address. After the assignment, the host network layer address and the sequence value are included in an advertisement for transmission. In another example embodiment, another method is provided. Here, a first sequence value associated with the host network layer address is received from a network device. In addition, a second sequence value associated with the same host network layer address is received from a different network device. The first sequence value is ranked relative to the second sequence value and data is transmitted to one network device or the other network device based on the ranking.
One or more nodes may be in communication with a host, such as hosts 150 or 151. Hosts 150 and 151 are devices or program applications that can provide services to other devices or programs. As shown in
It should be appreciated that groups of computer networks may be maintained as routing domains. A domain is a collection of nodes (e.g., switches and/or routers) under the control of one or more entities that present a common routing policy. Core domain 121 (or backbone domain) is an example of a domain. To improve routing scalability, a service provider (e.g., an Internet service provider) may divide a domain into multiple sub-domains 102 and 103. It should be noted that a number of nodes, routers, links, etc. may be used in computer network 100, and that the computer network of
In brief, sequence value assignment module 204 can assign a sequence value to a host. As explained in more detail below, the sequence value, a network layer address associated with the host (or host network layer address), and a network layer address associated with apparatus 200 are included in an advertisement, which is transmitted to other network devices. Sequence value assignment module 204 may also be configured to receive various advertisements from other network devices and to extract sequence values from the advertisements. As described in more detail below, sequence value assignment module 204 ranks the sequence values and converges on a particular host based on the ranking.
It should be appreciated that in other example embodiments, apparatus 200 may include fewer or more modules apart from those shown in
A host and a network device can be identified by a network layer address. In general, a network layer address is an address used by network devices to identify and communicate with each other on a computer network. An example of a network layer address is the Internet Protocol (IP) address. Route information is exchanged between network devices in advertisements to facilitate the routing of network traffic. In general, a route is a unit of information that pairs a destination with the attributes of a path to that destination. An example of an advertisement is an UPDATE message. It should be noted that network layer addresses and sequence values may be included in a variety of different forms of advertisements. For example, a single message may include a single advertisement. Alternatively, a single message may include multiple advertisements that include multiple network layer addresses and associated sequence values. In another example, a single advertisement may be separated into several portions and portions of the advertisement may span across multiple messages.
After the sequence value is assigned, the network device transmits an advertisement at 304 into a computer network to notify other network devices that the host is associated with this particular network device. Such an advertisement may include a host network layer address, sequence value assigned to the host (or associated with the host network layer address), and a network layer address that identifies the network device that transmitted the advertisement.
In another example embodiment, the generation of the new sequence value may be based on time. Here, the new sequence value can be derived from a system clock. All the network devices within a computer network are synchronized to the system clock. The new sequence value can be the time (e.g., hour, minutes, seconds, milliseconds, and other time) from the system clock or a value derived from the system clock.
After the sequence value is assigned, switch 551 transmits advertisement 502 to routers 552 and 554 of the association with host 501. Advertisement 502 includes the IP address of host 501, the sequence value “30” associated with the host, and an IP address of switch 551. As a result of receiving advertisement 502, switches 552 and 554 transmit data 504 to host 501. It should be appreciated that, depending on the network configuration and network protocol used, advertisement 502 may be transmitted to a variety of network devices and transmitted by a variety of different methods. For example, advertisement 502 may be transmitted to all routers within a sub-domain using multicast broadcast where the advertisement is transmitted as native packets. In still another example, advertisement 502 is transmitted only to a home anchor router using unicast broadcast where the advertisement 502 is tunneled between home anchor border routers and foreign sub-domain border routers. Here, advertisement 502 is tunneled between sub-domain border routers and foreign sub-domain border routers.
After the sequence value of “35” is assigned, switch 552 transmits advertisement 602 to switches 551 and 553 of the association with host 501. Here, advertisement 602 includes the IP address of host 501, the sequence value “35” associated with the host, and the IP address of switch 552 that transmitted the advertisement. As a result of receiving advertisement 602, switch 551 transmits data 504 to host 501. However, as explained below, depending on the sequence values received, switch 553 may or may not transmit data to host 501 that is in communication with switch 552.
With the first and second sequence values, the first sequence value is ranked relative to the second sequence value at 706. In an example embodiment, the first and second sequence values may be ranked by comparing the first and second sequence values. After the ranking, routes are converged onto one or more hosts based on the ranking. For example, as explained in more detail below, data is transmitted to one of the network devices at 708 based on the ranking.
In an example embodiment, the advertisement with a lower sequence value ranking is rejected. Instead, routes converge on the host with the higher sequence value ranking. For example, a determination is made at 808 as to whether the first sequence value is greater than the second sequence value. A sequence value of “324,” for instance, is ranked higher than a sequence value of “322.” In another example, a sequence value of “AA” is ranked higher than “A.” In still another example, a sequence value of “−1” is ranked higher than a sequence value of “−10.”
If the first sequence value is greater than the second sequence value, then routes to the host converge based on the first advertisement with the first sequence value. Here, for example, one or more paths are computed to the network device that is located at the first network layer address. Thereafter, data for the host is transmitted to the first network layer address associated with the network device at 810 because the first sequence value is ranked higher than the second sequence value. On the other hand, if first sequence value is less than second sequence value, then the routes to the host converge based on the second advertisement with the second sequence value. Here, for example, one or more paths are computed to the other network device that is located at the second network layer address. In this example, data for the host then is transmitted to the second network layer address associated with the other network device at 812.
It should be noted that routes may also converge on the host with the lower ranked sequence value. In this other embodiment, the first sequence value is compared with the second sequence value. If the first sequence value is less than or ranked lower than the second sequence value, then data is transmitted to the first network layer address. On the other hand, if the first sequence value is greater than the second sequence value, then data is transmitted to the second network layer address.
Switch 553 receives advertisement 602 with sequence value “35” associated with host network layer address. However, switch 553 also receives advertisement 502 with sequence value “30” associated with the same host network layer address. Switch 551 did not originally transmit advertisement 502 directly to switch 553. Instead, switch 554, which received advertisement 502, relays or forwards the advertisement to switch 553. This relay results in a delay of transmission of advertisement 502 to switch 553, and therefore switch 553 receives both advertisements 502 and 602 at about the same time.
In this example embodiment, computer network 500 is configured to converge on a host, such as host 501, with the highest ranked sequence value. Switch 553 therefore is configured to rank the sequence value “35” associated with advertisement 602 relative to sequence value “30” associated with advertisement 502. In an example embodiment, switch 553 compares sequence value “35” with sequence value “30.” Sequence value “35” is greater or ranked higher than sequence value “30.” As a result, routes in computer network 500 converge on host 501 associated with switch 552 instead of switch 551. Switch 553 therefore transmits data 504 to switch 552 associated with host 501 and not to switch 551. The use of sequence values may therefore result in fast host route convergence because computer network 500 does not have to wait for withdraw of the route from a disassociated network device, such as switch 551.
The example computing system 1000 includes processor 1002 (e.g., a central processing unit (CPU)), main memory 1004 and static memory 1006, which communicate with each other via bus 1008. Computing system 1000 may also include disk drive unit 1016 and network interface device 1020.
Disk drive unit 1016 includes machine-readable medium 1022 on which is stored one or more sets of instructions and data structures (e.g., software 1024) embodying or utilized by any one or more of the methodologies or functions described herein. Software 1024 may also reside, completely or at least partially, within main memory 1004 and/or within processor 1002 during execution thereof by computing system 1000, with main memory 1004 and processor 1002 also constituting machine-readable, tangible media. Software 1024 may further be transmitted or received over network 1026 via network interface device 1020 utilizing any one of a number of well-known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)).
While machine-readable medium 1022 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding or carrying data structures utilized by or associated with such a set of instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals.
Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Roy, Abhay, Yadav, Navindra, Katukam, Suresh, Tanikella, Venkata
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
7155518, | Jan 08 2001 | NYTELL SOFTWARE LLC | Extranet workgroup formation across multiple mobile virtual private networks |
7239618, | Dec 11 1998 | Lucent Technologies Inc | Single phase local mobility scheme for wireless access to packet-based networks |
7421693, | Apr 04 2002 | RPX Corporation | Logic for synchronizing multiple tasks at multiple locations in an instruction stream |
7552430, | Aug 31 2004 | Microsoft Technology Licensing, LLC | Patch sequencing |
7720008, | Sep 27 2004 | UNIFY GMBH & CO KG | Method for determining a leading subscriber in a network |
8711729, | Jan 11 2008 | Cisco Technology, Inc. | Host route convergence based on sequence values |
20020057657, | |||
20030193890, | |||
20040127242, | |||
20060080460, | |||
20060206634, | |||
20060209720, | |||
20060209737, | |||
20060232589, | |||
20060291404, | |||
20070008974, | |||
20070104106, | |||
20070177594, | |||
20080089231, | |||
20080089348, | |||
20080161007, | |||
20080244739, | |||
20090180383, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 17 2014 | Cisco Technology, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 23 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Aug 21 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 23 2019 | 4 years fee payment window open |
Aug 23 2019 | 6 months grace period start (w surcharge) |
Feb 23 2020 | patent expiry (for year 4) |
Feb 23 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 23 2023 | 8 years fee payment window open |
Aug 23 2023 | 6 months grace period start (w surcharge) |
Feb 23 2024 | patent expiry (for year 8) |
Feb 23 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 23 2027 | 12 years fee payment window open |
Aug 23 2027 | 6 months grace period start (w surcharge) |
Feb 23 2028 | patent expiry (for year 12) |
Feb 23 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |