The invention relates generally to communication networks and, more specifically but not exclusively, forwarding of packets within communication networks.
Many types of schemes exist for performing packet forwarding within overlay networks. A first type of scheme includes performing packet forwarding using Dynamic Hash Tables (DHTs). A second type of scheme includes performing packet forwarding using Greedy Forwarding processes. While many such schemes may have associated advantages, the maximum latency of packet forwarding in such schemes typically is unbounded.
Various deficiencies in the prior art are addressed by embodiments for improving packet forwarding in communication networks.
In one embodiment, an apparatus is provided for determining packet routing at a current node having a plurality of neighbor nodes associated therewith. The apparatus includes a processor and a memory communicatively coupled to the processor. The processor is configured to determine a set of candidate neighbor nodes of the current node from a representation of respective locations of the neighbor nodes, where the set of candidate neighbor nodes includes each of the neighbor nodes located at least within a circle defined within the representation and having a diameter defined by a line between the current node and a destination node of the packet. The processor also is configured to determine packet routing at the current node using the set of candidate neighbor nodes.
In one embodiment, a computer-readable storage medium stores instructions which, when executed by a computer, cause the computer to perform a method for determining packet routing at a current node having a plurality of neighbor nodes associated therewith. The method includes determining a set of candidate neighbor nodes of the current node from a representation of respective locations of the neighbor nodes, where the set of candidate neighbor nodes includes each of the neighbor nodes located at least within a circle defined within the representation and having a diameter defined by a line between the current node and a destination node of the packet. The method also includes determining packet routing at the current node using the set of candidate neighbor nodes.
In one embodiment, a method is provided for determining packet routing at a current node having a plurality of neighbor nodes associated therewith. The method includes determining a set of candidate neighbor nodes of the current node from a representation of respective locations of the neighbor nodes, where the set of candidate neighbor nodes includes each of the neighbor nodes located at least within a circle defined within the representation and having a diameter defined by a line between the current node and a destination node of the packet. The method also includes determining packet routing at the current node using the set of candidate neighbor nodes.
The teachings herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.
In general, a Reduced Greedy Forwarding (RGF) capability, which also may be referred to herein as a packet forwarding determination capability, is depicted and described herein, although various other capabilities also may be presented herein.
In at least some embodiments, the RGF capability provides a process that, given any source-destination pair in a network, tends to reduce or even minimize maximum delivery latency associated with packet forwarding between the source-destination pair.
In at least some embodiments, the RGF capability provides a process that, given any source-destination pair (s,t) in a network, reduces the maximum delivery latency associated with forwarding of packets between s and t to be less than 2.4 times Euclidean distance between s and t in the worst case, thereby providing significant improvement over existing packet forwarding solutions which have a maximum delivery latency of N time Euclidean distance in the worst case (where N is the total number of nodes in the network).
In at least some embodiments, the process reduces or minimizes maximum delivery latency associated with packet forwarding between a given source-destination pair in a network without a global view of network conditions in the network and, further, without wasting network resources of the network for computation.
Although primarily depicted and described herein with the context of using the RGF capability within a triangulated overlay network satisfying the properties of a Delaunay Triangulation (DT), it is noted that the RGF capability may be utilized in more general networks which do not satisfy the properties of a DT.
As depicted in
The triangulated overlay network 100 may be any suitable type of overlay network. In general, an overlay network is typically a computer network which is built over an underlying network. For example, distributed networks, such as client-server applications, peer-to-peer systems, cloud computing, and the like, are often considered to be overlay networks.
The nodes 110 may include any types of nodes which may participate in a triangulated overlay network, which may depend on the type of triangulated overlay network being implemented. For example, the nodes 110 may include end user devices (e.g., desktop computers, laptop computers, tablet computers, smart phones, and the like), network devices (e.g., servers and the like), monitoring devices, sensors, and the like, as well as various combinations thereof.
The communication paths 120 are logical paths via which nodes 110 may communicate. The communication paths 120 may be established via any suitable type(s) of underlying communication networks (e.g., public IP-based networks such as the Internet, private IP-based networks, and the like). Similarly, the communication paths 120 between nodes 110 may traverse any suitable type(s) and number(s) of underlying communications devices (e.g., routers, switches, and the like) and any suitable type(s) and number(s) of underlying physical links.
In one embodiment, a node 110 is configured to perform various functions of the RGF capability.
In one embodiment, for a given current node 110, the current node 110 is configured to determine routing of packets for a given destination node, which may include (1) identifying a next-hop node for the given destination node 110 for packets to be transmitted from the current node 110 toward the given destination node 110 or (2) identifying itself as being the given destination node 110 for packets intended for the given destination node 110.
In one embodiment, a current node 110 determines routing of packets for a given destination node 110 as depicted and described with respect to method 200 of
In one embodiment, a current node 110 has information regarding a given coordinate space and, within the context of the given coordinate space, knows its own location within the given coordinate space and knows the respective locations of other nodes of the triangulated overlay network within the given coordinate space.
The given coordinate space may be any suitable type of coordinate space (e.g., a two-dimensional coordinate space, a three-dimensional Euclidean coordinate space, a spherical coordinate space, and the like).
The current node 110 may discover its own location within the given coordinate space (e.g., using GPS or any other suitable location determination capability) or may be configured with its location within the given coordinate space (e.g., when it is deployed, by a management system, and the like).
The current node 110 may discover the locations of its neighbor nodes 110 in triangulated overlay network 100 and/or may be configured with the locations of its neighbor nodes 110 in triangulated overlay network 100. It is noted that the set of neighbor nodes 110 of a given current node 110 may depend on one or more factors, such as the type of triangulated overlay network 100, the type of nodes 110 of triangulated overlay network 100, the types of communication paths 120 used to facilitate communications between nodes 110, and the like, as well as various combinations thereof. For example, for wireline nodes 110, the neighbor nodes 110 of a given node 110 may include each of the nodes 110 with x hops of the given node 110. For example, for wireless nodes 110, the neighbor nodes of a given node 110 may include each of the nodes 110 within a particular wireless range associated with the given node 110.
The current node 110 is configured to construct a graph from the perspective of the current node 110, where the graph represents the layout of at least a portion of the triangulated overlay network 100 from the perspective of the current node 110. The graph is constructed by the current node 110 using the location information. The current node 110 is configured to determine routing of packets for a given destination node 110 (e.g., which, as noted above, may include identifying a next-hop node for the packet for the given destination node 110 or identifying itself as being the given destination node 110) using the constructed graph. It is noted that the graph is one example of a type of representation which may be used to represent the layout of at least a portion of triangulated overlay network 100 and that any other suitable type of representation may be used to represent the layout of at least a portion of triangulated overlay network 100 (and, therefore, that the references herein to the “graph” may be read more generally as references to a “representation”).
As depicted in
Although primarily depicted and described herein with respect to embodiments in which a current node constructs a graph for use in providing functions of the RGF capability, it is noted that in one or more other embodiments the graph may be constructed by another device (e.g., a central controller, management, system, and the like) and provided to the current node 110 for use by the current node in providing various functions of the RGF capability.
The RGF capability may be better understood by first describing various properties of embodiments of the RGF capability.
The RGF capability, in at least some embodiments, relies upon an assumption that a Delaunay Triangulation (DT), for a given set V of overlay nodes 110 in triangulated overlay network 100, can be built in either a distributed or centralized manner. A DT is a triangulation DT(V) such that no node in V is inside the circumcircle of any triangle in DT(V). It is a maximal planar graph where no edge crosses another edge in DT and, also, adding any edge (on the given node set) would destroy planarity. The use of a DT substrate to provide the RGF capability within triangulated overlay network 100 may have a number of advantages as follows: (1) sparse-degree network graphs are known to have efficient forwarding schemes for small-size look-up memory, short path-length, and small number of path hops (e.g., the average degree of DT is less than six, as provably shown in Corollary 1) (2) interesting graph asses (e.g., minimum spanning tree, nearest neighbor graph, and the like) having some desirable properties are sub-graphs of DT (e.g., DT can be built in a distributed and incremental manner since, for a newly given node, finding the closest neighbor already placed in DT may be performed by simply embedding the nearest neighbor graph into DT); and (3) DT can be extended to a multi-dimensional. As noted above, corollary 1 is that, in DT, average node degree (the average number of neighbor nodes) is less than six, which may be proven as follows: from the fact that DT is maximal planar, and from DT's triangulated property, it follows that if DT has v vertices with v>2, then it has precisely 3v-6 undirected edges, which further indicates that the number of directed edges in DT is 6v-12, thereby indicating that the average node degree in DT is [(6v-12)/v<6].
The RGF capability may be better understood by defining terminology to be used in conjunction with the description of the various embodiments of the RGF mechanism. First, v0 is denoted as the source node, t is denoted as the destination node, and vi is denoted as the ith node visited during forwarding (and also is referred to herein as current node vi). Second, d(x, y) is defined as the Euclidean distance between two nodes x and y. Third, p(v0, t) is defined as the summation of Euclidean distances of all edges constituting forwarding path (v0,t). Finally, αi and βi denote angle vi+1vit and vi+1tvi, respectively.
At step 210, method 200 begins.
At step 220, a set of candidate neighbor nodes (denoted herein as C(vi)) of the current node (denoted herein as vi) is determined. The set of candidate neighbor nodes may be determined from a graph representative of respective locations of the neighbor nodes of the current node. In one embodiment, the set of candidate neighbor nodes C(vi)) of current node vi includes all neighbor nodes of current node vi that are at least within (and, optionally, also on) a circle, defined within the graph, having a diameter defined by a line between the current node and a destination node of the packet (i.e., by the line d(vi, t)). This type of circle is depicted and described herein with respect to
At step 230, routing of packets at the current node is determined using the set of candidate neighbor nodes C(vi). In one embodiment, determining routing of packets at the current node using the set of candidate neighbor nodes C(vi) is performed using a process such as method 400 depicted and described with respect to
At step 240, method 200 ends.
Although depicted and described herein as ending (for purposes of clarity), it is noted that one or more additional steps may be performed following determination of the routing of the packet at the current node. For example, the current node v, may store the result in a routing table for use in determining routing of packets intended for destination node t (e.g., routing packets toward the next-hop node determined for the destination node t or identifying the current node vi as being the destination node t). For example, where the current node vi has a packet intended for delivery to destination node t, the current node vi may propagate the packet toward the next-hop node determined for the destination node t. It is noted that various other suitable steps may be performed.
As depicted in
It is noted that various embodiments of the RGF capability depicted and described herein are in contrast to Greedy Forwarding (GF) algorithms in which, for each forwarding step i, among neighbor nodes within the circle whose radius is the line (vi, t), the next-hop node is always the node closest to destination node t. An exemplary circle is depicted in
As indicated with respect to
At step 410, method 400 begins.
At step 420, the candidate neighbor nodes of the set of candidate neighbor nodes C(vi) are classified into disjoint subsets of candidate neighbor nodes. In one embodiment, the candidate neighbor nodes of the set of candidate neighbor nodes C(vi) are classified into three disjoint subsets of candidate neighbor nodes (denoted as first subset N1(vi), second subset N2(vi), and third subset N3(vi), respectively) using a process such as method 500 depicted and described with respect to
At step 430, routing of packets at the current node is determined using the determined subsets of candidate neighbor nodes. In one embodiment, in which the candidate neighbor nodes of the set of candidate neighbor nodes C(vi) are classified into three disjoint subsets of candidate neighbor nodes, routing of packets at the current node using the three subsets of candidate neighbor nodes is determined using a process such as method 700 depicted and described with respect to
At step 440, method 400 ends.
Although depicted and described herein as ending (for purposes of clarity), it is noted that one or more additional steps may be performed following determining of packet routing at the current node (e.g., additional steps such as those depicted and described as being performed following method 200 of
At step 510, method 500 begins.
At step 520, a (next) candidate neighbor node x is selected from the set of candidate neighbor nodes C(vi).
At step 530, a determination is made as to whether [[(cos(βi/2))/(cos(αi+βi/2))≦tan(45°+(Λ/2))].
If [[cos(βi/2))/(cos(αi+βi/2))≦tan(45°+(Λ/2))] is true, method 500 proceeds to step 540, at which point candidate neighbor node x is classified as being part of the first subset N1(vi) of candidate neighbor nodes of current node vi. From step 540, method 500 proceeds to step 580.
If [[(cos(βi/2))/(cos(αi+βi/2))≦tan(45°+(Λ/2))] is false, method 500 proceeds to step 550.
At step 550, a determination is made as to whether [d(vi,t)2≧d(vi,x)2+d(x,t)2].
If [d(vi,t)2≧d(vi,x)2+d(x,t)2] is true, method 500 proceeds to step 560 at which point candidate neighbor node x is classified as being part of the second subset N2(vi) of candidate neighbor nodes of current node vi. From step 560, method 500 proceeds to step 580.
If [d(vi,t)2≧d(vi,x)2+d(x,t)2] is false, method 500 proceeds to step 570 at which point candidate neighbor node x is classified as being part of the third subset N3(vi) of candidate neighbor nodes of current node vi. From step 570, method 500 proceeds to step 580.
At step 580, a determination is made as to whether the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has been classified.
If the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has not been classified, method 500 returns to step 520, at which point a next candidate neighbor node x is selected from the set of candidate neighbor nodes C(vi).
If the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has been classified, method 500 proceeds to step 590, at which point method 500 ends.
In general, use of method 500 of
As depicted in
As noted above, the geometry of
For this lemma, it is noted node vi+can be angularly projected to a point zi on line (vi,z) and also perpendicularly projected to a point qi on line (vi,t).
For this lemma, it also is noted that αi≦Λ=∠zvit, βi≦Λ′=∠zitvi, and Λ′≦90°−Λ.
For this lemma, it also is noted that αi+βi≦90°,
and d(vi,pi)=xi.
By the law of sines:
By right angle trigonometry:
Using the procedure to drive
From the fact that
By cosine addition formula:
Additionally,
Additionally,
Thus
Thus,
As noted above, a result from the proof of this lemma is that d(vi,vi+1)=xi cos(βi/2)/cos(αi+βi/2)≦tan(45°+(Λ/2)). In one embodiment, as noted hereinabove, this result is used in defining method 500 of
As also noted above, the geometry of
At step 710, method 700 begins.
At step 720, a determination is made as to whether the first subset of candidate neighbor nodes Ni(vi) is null.
If the first subset of candidate neighbor nodes N1(vi) is not null, method 700 proceeds to step 730, at which point one of the candidate neighbor nodes in the first subset of candidate neighbor nodes N1(vi) is selected as the next-hop node. From step 730, method 700 proceeds to step 790, where method 700 ends.
If the first subset of candidate neighbor nodes N1(vi) is null, method 700 proceeds to step 740.
At step 740, a determination is made as to whether the second subset of candidate neighbor nodes N2(vi) is null.
If the second subset of candidate neighbor nodes N2(vi) is not null, method 700 proceeds to step 750, at which point one of the candidate neighbor nodes in the second subset of candidate neighbor nodes N2 (vi) is selected as the next-hop node. From step 750, method 700 proceeds to step 790, where method 700 ends.
If the second subset of candidate neighbor nodes N2(vi) is null, method 700 proceeds to step 760.
At step 760, a determination is made as to whether the third subset of candidate neighbor nodes N3(vi) is null.
If the third subset of candidate neighbor nodes N3(vi) is not null, method 700 proceeds to step 770, at which point one of the candidate neighbor nodes in the third subset of candidate neighbor nodes N3(vi) is selected as the next-hop node. From step 770, method 700 proceeds to step 790, where method 700 ends.
If the third subset of candidate neighbor nodes N3(vi) is null, method 700 proceeds to step 780.
At step 780, the current node identifies itself as the destination node, such that no additional forwarding of packets is required. From step 780, method 700 proceeds to step 790, where method 700 ends.
At step 790, method 700 ends.
Although depicted and described as ending for purposes of clarity, it is noted that the current node may forward one or more packets based on the result of execution of method 700. For example, where the current node is not the destination node, the current node may forward one or more packets to the selected next-hop node. Similarly, for example, where the forwarding node is identified as being the destination node, the current node may provide one or more packets within the current node (e.g., to an upper layer for local processing of the packet(s)).
Although depicted and described with respect to an embodiment in which the subsets of candidate neighbor nodes are used to determine whether or not the current node is the destination node, it is noted that this determination also may be made without using the subsets of candidate neighbor nodes. For example, a current node may check address information of received packets and determine identify itself as the intended destination node prior to execution of one or more of the methods associated with the RGF capability.
In general, use of method 700 of
A result from the proof of this theorem is that at least one neighbor node of current node vi is in first subset of candidate neighbor nodes N1(vi) or second subset of candidate neighbor nodes N2(vi). In one embodiment, as noted hereinabove, this result is used in defining method 700 of
It is noted that, in any given graph, RGF provably shows the worst-case bound in term of path length even though the bound is not competitive. This may be better understood by considering a lemma in which, in any graph G, if there is a successful RGF path p(v0, t) between two nodes v0 and t, p(v0, t) in RGF is at most [d(v0,t)·(d(v0,t)+√{square root over (2)}−1)/√{square root over (2)}]. A proof of this lemma follows.
For this lemma, node vi+1 can be angularly projected to a point pi on line (vi,t), and xi and ri+1 denote d(vi, pi) and d(vi+1,t) respectively.
By triangle inequality, d(vi,vi+1)<xi+d(vi+1, pi).
By the law of cosines and half-angle formulas:
which is <2ri+1√{square root over (2)}/2 due to
As a result, d(vi, pi)<xi+ri+1√{square root over (2)}.
By assuming that RGF traversal stops at the k-th node that is visited, it may be determined that p(s,t)=Σi=0n−1d(vi, vi+1)<Σi=0n−1xi+√{square root over (2)}Σi=0n−1ri+1=d(s,t)+√{square root over (2)}Σi=0n−1(n−1−i)xi+1. From this result, it may be determined that Σi=0n−1(n−1−i)xi+1=(d(s,t))/2. From this result, it may be determined that p(s,t)<d(s,t)+√{square root over (2)}(d(s,t)2−d(s,t))/2=d(s,t)(d(s,t)+√{square root over (2)}−1)/√{square root over (2)}.
As indicated above, in any given graph, RGF provably shows the worst-case bound in term of path length even though the bound is not competitive. It is noted that, from evaluations of the RGF using Λ=45°, ∀vi: Ni(vi)≠0, RGF path length as compared to the Euclidean distance between the source-destination pairs is less than 2.03 (≦tan(45°+(Λ/2))≈2.414) in at least some graphs.
At step 805, method 800 begins.
At step 810, a (next) candidate neighbor node x is selected from the set of candidate neighbor nodes C(vi).
At step 815, a determination is made as to whether [[(cos(βi/2))/(cos(αi+βi/2))≦tan(45°+(Λ/2))].
If [[cos(βi/2))/(cos(αi+/2))≦tan(45°+(Λ/2))] is true, method 800 proceeds to step 820, at which point candidate neighbor node x is classified as being part of the first subset C1(vi) of candidate neighbor nodes of current node vi. From step 820, method 800 proceeds to step 840.
If [[(βi/2))/(cos(αi+/2))≦tan(45°+(Λ/2))] is false, method 800 proceeds to step 825.
At step 825, a determination is made as to whether [d(vi,t)2≧d(vi,x)2+d(x,t)2].
If [d(vi,t)2≧d(vi,x)2+d(x,t)2] is true, method 800 proceeds to step 830 at which point candidate neighbor node x is classified as being part of the third subset C3(vi) of candidate neighbor nodes of current node vi. From step 830, method 800 proceeds to step 840.
If [d(vi,t)2≧d(vi,x)2+d(x,t)2] is false, method 800 proceeds to step 835 at which point candidate neighbor node x is classified as being part of the fourth subset C4(vi) of candidate neighbor nodes of current node vi. From step 835, method 800 proceeds to step 840.
At step 840, a determination is made as to whether the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has been classified.
If the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has not been classified, method 800 returns to step 810, at which point a next candidate neighbor node x is selected from the set of candidate neighbor nodes C(vi).
If the final candidate neighbor node of the set of candidate neighbor nodes C(vi) has been classified, method 800 proceeds to step 845.
At step 845, a determination is made as to whether a triangle walk needs to be performed (e.g., denoted by checking whether the value of an exemplary variable “triangle_walking” is set to TRUE or FALSE). If a triangle walk needs to be performed, method 800 proceeds to step 850. If a triangle walk does not need to be performed, method 800 proceeds to step 855. A triangle walk may be better understood by way of reference to
At step 850, the second subset C2(vi) of candidate neighbor nodes of current node viis determined. In one embodiment, the third subset C3(vi) of candidate neighbor nodes of current node vi is determined using method 900 depicted and described with respect to
At step 855, a determination is made as to whether or not the first subset C1(vi) of candidate neighbor nodes of current node vi is null. If the first subset C1(vi) of candidate neighbor nodes of current node vi is not null, method 800 proceeds to step 865, at which point method 800 ends. If the first subset C1(vi) of candidate neighbor nodes of current node vi is null, method 800 proceeds to step 860.
At step 860, a determination is made that a triangle walk needs to be performed (e.g., denoted by setting an exemplary variable “triangle_walking” to TRUE), the starting node for the triangle walk is changed from node vi to node vk, and method 800 proceeds to step 850 where the second subset C2(vi) of candidate neighbor nodes of current node vi is determined (e.g., using method 900 depicted and described with respect to
It is noted that method 900, which enables use of a triangle walk over a portion of a triangulated overlay network, is performed for the current node viand a starting node vk for the triangle walk (denoted as triangle_walk_start_node vk). It is further noted that: (a) Ti is the closest triangle to destination t among triangles which are crossed by
At step 910, method 900 begins.
At step 920, a candidate neighbor node Y is selected from the third subset C3(vi) of candidate neighbor nodes of current node vi.
At step 930, a determination is made as to whether candidate neighbor node Y is on triangle Ti. If candidate neighbor node Y is not on triangle Ti. method 900 proceeds to step 960, at which point a determination is made as to whether candidate neighbor node Y is the final candidate neighbor node in the third subset C3(vi) of candidate neighbor nodes. If candidate neighbor node Y is on triangle Ti, method 900 proceeds to step 940.
At step 940, a determination is made as to whether candidate neighbor node Y is on triangle Ti−1. candidate neighbor node Y is on triangle method 900 proceeds to step 960, at which point a determination is made as to whether candidate neighbor node Y is the final candidate neighbor node in the third subset C3(vi) of candidate neighbor nodes. If candidate neighbor node Y is not on triangle Ti, method 900 proceeds to step 950,
At step 950, candidate neighbor node Y is classified as part of the second subset C2(vi) of candidate neighbor nodes of current node vi. From step 950, method 900 proceeds to step 960.
At step 960, a determination is made as to whether the final candidate neighbor node of the third set of candidate neighbor nodes C3(vi) has been selected for processing.
If the final candidate neighbor node of the third set of candidate neighbor nodes C3(vi) has not been selected for processing, method 900 returns to step 920, at which point a next candidate neighbor node Y is selected from the third set of candidate neighbor nodes C3(vi).
If the final candidate neighbor node of the third set of candidate neighbor nodes C3(vi) has not been selected for processing, method 900 proceeds to step 970.
At step 970, method 900 ends.
At step 1105, method 1100 begins.
At step 1110, a determination is made as to whether the first subset of candidate neighbor nodes C1(vi) is null.
If the first subset of candidate neighbor nodes C1(vi) is not null, method 1100 proceeds to step 1115, at which point one of the candidate neighbor nodes in the first subset of candidate neighbor nodes C1(vi) is selected as the next-hop node. From step 1115, method 1100 proceeds to step 1155, where method 1100 ends.
If the first subset of candidate neighbor nodes C1(vi) is null, method 1100 proceeds to step 1120.
At step 1120, a determination is made as to whether the second subset of candidate neighbor nodes C2(vi) is null.
If the second subset of candidate neighbor nodes C2(vi) is not null, method 1100 proceeds to step 1125, at which point one of the candidate neighbor nodes in the second subset of candidate neighbor nodes C2(vi) is selected as the next-hop node. From step 1125, method 1100 proceeds to step 1155, where method 1100 ends.
If the second subset of candidate neighbor nodes C2(vi) is null, method 1100 proceeds to step 1130.
At step 1130, a determination is made as to whether the third subset of candidate neighbor nodes C3(vi) is null.
If the third subset of candidate neighbor nodes C3(vi) is not null, method 1100 proceeds to step 1135, at which point one of the candidate neighbor nodes in the third subset of candidate neighbor nodes C3(vi) is selected as the next-hop node. From step 1135, method 1100 proceeds to step 1155, where method 1100 ends.
If the third subset of candidate neighbor nodes C3(vi) is null, method 1100 proceeds to step 1140.
At step 1140, a determination is made as to whether the fourth subset of candidate neighbor nodes C4(vi) is null.
If the fourth subset of candidate neighbor nodes C4(vi) is not null, method 1100 proceeds to step 1145, at which point one of the candidate neighbor nodes in the fourth subset of candidate neighbor nodes C4(vi) is selected as the next-hop node. From step 1145, method 1100 proceeds to step 1155, where method 1100 ends.
If the fourth subset of candidate neighbor nodes C4(vi) is null, method 1100 proceeds to step 1150.
At step 1150, the current node identifies itself as the destination node, such that no additional forwarding of packets is required. From step 1150, method 1100 proceeds to step 1155, where method 1100 ends.
At step 1155, method 1100 ends.
Although primarily depicted and described herein with respect to embodiments in which processing (e.g., various methods depicted and described herein) is performed by the current node vi, in one embodiment some or all of the processing may be performed by one or more nodes other than the current node vi. For example, some or all of the processing may be performed by one or more of one or more other nodes 110 of triangulated overlay network 100, one or more management systems associated with triangulated overlay network 100, any other suitable node or nodes, and the like, as well as various combinations thereof. In such embodiments, the node or nodes which perform the processing provide the results of the processing to current node vi for use in determining routing of packets at current node vi.
Although primarily depicted and described herein with respect to embodiments in which the RGF capability is provided for a specific type of communication network (namely, a triangulated overlay network), it is noted that various embodiments of the RGF capability may be provided within any other suitable type(s) of communication networks.
Although primarily depicted and described herein with respect to embodiments in which the RGF capability is provided using a graph-based representation of the layout of the network, it is noted that that various embodiments of the RGF capability may be provided using other suitable types of representations to represent the layout of the network.
As depicted in
It will be appreciated that the functions depicted and described herein may be implemented in software (e.g., via implementation of software on one or more processors) and/or hardware (e.g., using a general purpose computer, one or more application specific integrated circuits (ASIC), and/or any other hardware equivalents).
It will be appreciated that the functions depicted and described herein may be implemented in software for executing on a general purpose computer (e.g., via execution by one or more processors) so as to implement a special purpose computer, and/or may be implemented in hardware (e.g., using one or more application specific integrated circuits (ASIC) and/or one or more other hardware equivalents).
In one embodiment, the cooperating process 12 can be loaded into memory 1204 and executed by processor 1202 to implement functions as discussed herein. Thus, cooperating process 1205 (including associated data structures) can be stored on a computer readable storage medium, e.g., RAM memory, magnetic or optical drive or diskette, and the like.
It will be appreciated that computer 1200 depicted in
It is contemplated that some of the steps discussed herein as software methods may be implemented within hardware, for example, as circuitry that cooperates with the processor to perform various method steps. Portions of the functions/elements described herein may be implemented as a computer program product wherein computer instructions, when processed by a computer, adapt the operation of the computer such that the methods and/or techniques described herein are invoked or otherwise provided. Instructions for invoking the inventive methods may be stored in fixed or removable media, transmitted via a data stream in a broadcast or other signal bearing medium, and/or stored within a memory within a computing device operating according
Although various embodiments which incorporate the teachings of the present invention have been shown and described in detail herein, those skilled in the art can readily devise many other varied embodiments that still incorporate these teachings.
This application aims the benefit of U.S. Provisional Patent Application Ser. No. 61/547,708, filed Oct. 15, 2011, and U.S. Provisional Patent Application Ser. No. 61/562,339, filed Nov. 21, 2011, each of which is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61547708 | Oct 2011 | US | |
61562339 | Nov 2011 | US |