WO2005032069A1 - Virtual networks - Google Patents
Virtual networks Download PDFInfo
- Publication number
- WO2005032069A1 WO2005032069A1 PCT/GB2004/004003 GB2004004003W WO2005032069A1 WO 2005032069 A1 WO2005032069 A1 WO 2005032069A1 GB 2004004003 W GB2004004003 W GB 2004004003W WO 2005032069 A1 WO2005032069 A1 WO 2005032069A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- node
- address
- list
- message
- link
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
Definitions
- the present invention relates to virtual networks, and particularly, though not exclusively in the context of distributed systems such as peer-to-peer systems, especially those with no centralised storage or control.
- a method of operating a virtual network having a plurality of nodes, in which each node has a list for storing up to a predetermined number of addresses of other such nodes comprising: (i) receiving a message requesting a link between a first node and a second node; (ii) determining whether both the first node and second node has in each case a number of addresses in its list which is less than the predetermined number; (iii) in the event that this condition is satisfied, inserting the address of the first node into the list of the second node and inserting the address of the second node into the list of the first node (iv) in the event that this condition is not satisfied, determining whether the first node has a number of addresses in its list which is at least two less than the predetermined number, and
- the invention provides a node of a virtual network, said node being defined by storage means containing a list for storing up to a predetermined number of addresses of other such nodes and processing means programmed to perform the following operations: receiving messages; ⁇ responding to messages requesting information about the contents of the list; complying with received requests to remove an address from the list; complying with message requesting insertion of an address into the list; and in response to receipt of a message requesting a link between the node and a second node: (A) generating a message to the second node requesting information about the contents of its list; (B) determining whether both the first node and second node has in each case a number of addresses in its list which is less than the predetermined number;
- Figure 1 is a block diagram of a computer used in one embodiment of the invention.
- Figure 1A is a flowchart showing a data retrieval operation using primary and secondary virtual networks
- Figure 2 is a schematic diagram illustration the management of links between nodes of a computer network
- Figures 3 to 10 are flowcharts showing aspects of the operation of a node of the secondary virtual network
- Figures 11 to 14 and 16 are flowcharts showing aspects of the operation of a node of the primary virtual network
- Figure 15 is a schematic diagram illustrating the flow of messages during the process depicted in
- a computing node can be a computer or other device, or - noting that a single computer may have a number of independent programs or processes running on it - may be a such a program or process.
- An item of stored data may also be regarded as a distinct node, even though a number of such items may be serviced by a single program or process.
- each computing node is connected to some communication infrastructure which could for example be a telecommunications network such as an IP (internet protocol) network, so that messages can be sent to it.
- IP internet protocol
- a computing node is able to have two or more virtual nodes (possibly belonging to different virtual networks) associated with it.
- a virtual node does not exist in any physical sense: rather, as will become clear presently, its existence is established by stored data which define links between virtual nodes and, hence, also define the virtual network to which it belongs.
- references to the sending, receiving and processing of messages by a virtual node refer to such sending receiving or processing by the computing node on behalf of the virtual node. An example is shown in Figure 1.
- a computer has the usual components, namely a processor 1, memory 2, display 3, keyboard 4 and a communications interface 5 for communication via a network 10.
- the memory 2 contains operating system and other programs (not shown), and data files such as the text file 20 shown. It also has storage 21 containing a label 21a corresponding to the text file 20 and its own address 21b.
- it has an address list 22 and a supporting program 23 which together define the existence, on the computer, of a node of a virtual network. This node has an address 24.
- an address list 25 and a supporting program 26 which together define the existence, on the computer, of a node of another virtual network. This node has an address 27.
- the addresses stored in the lists 22, 25 are the addresses of other nodes in the same virtual network.
- This system allows users to associate comments with a web page. Whenever a user visits this page, he has the opportunity also to view the comments that other users have made.
- the comment is stored on the computer of the user that contributed the comment (e.g. as a text file).
- the user viewing the web page (or rather, his computer) has the universal resource locator (URL) of the web page, and what is required is a mechanism whereby he can retrieve the comments.
- the mechanism is as follows:
- the text file is stored on the computer of the user that contributed the comment and is associated with a node of a virtual network of the type described in our international patent application no.
- WO 03/034669 [Agent's ref. A30044], as too may be other text files containing comments about other web pages, and possibly other unrelated files too.
- This virtual network (referred to in the context of the present description as the primary virtual network, or simply the primary network) serves to allow one to send a message to a node without knowing its address provided one has a label which identifies it. Although that type of network can function with unique labels (one per node), in this example the labels are not unique: rather, all nodes associated with text files containing comments about a particular web page have the same label. This label is a hash function of the URL of the web page. This virtual network offers a retrieval mechanism which reaches only one node.
- the text file is also associated with a node of a second virtual network.
- This (the secondary virtual network) contains only nodes associated with text files containing comments about the one particular web page.
- a primary network in accordance with our aforementioned international patent application is preferred, it is not essential. Indeed, it is not essential to use a virtual network at all; another primary retrieval mechanism which receives a label and returns the address of one node corresponding to it could be used instead.
- the computer posting a comment is as shown in Figure 1 and must »create a node in the primary network.
- This node has a label 21a and a network address
- each node has an address consisting of three parts: • • An internet address, which "locates" the computing node. E.g. 130.146.209.15 • A port number, which locates a particular communication port at the computing node.
- Ports are a standard part of Internet addresses. They for instance allow different independent application programs to independently send and receive messages. I.e. each would receive messages at its own port, and would not receive or be "confused" by messages intended for other application programs.
- the Internet address together with the port number can be considered to be the network address (as it is part of the communication protocols, such as TCP/IP, that are used).
- the network address for all primary and secondary nodes can be the same, however, not necessarily so. For instance, all messages for primary nodes may be received at a different port from that at which secondary messages are received (which is one way to distinguish between such messages).
- a node identifier an integer value
- node identifier is an application-specific address extension (it's not part of the standard Internet protocol). It is simply included in the message that is sent. The process that receives it "knows" this and will examine this node identifier to determine to which node the message should be forwarded. It is possible that both nodes have the same network address, but not necessarily so.
- node will have a port of its own (partly because the number of available ports is somewhat limited), but one may well have two ports (and thus two different network addresses): one for the primary network and one for the secondary network. Typically, there will be a number of secondary networks, which could all use the same port. It should be stressed that, in the following, references to the address of a node refer to the complete address of that node. A particularly attractive approach is to provide that a text file and the primary and secondary nodes all have the same node identifier (and IP address), only the port numbers being different.
- Such an addressing protocol may provide an opportunity for simplifying some of the processing in that, where one has the address of one node and requires the address of another node associated with it, the address of the latter node might be deduced from that of the former, rather than have to be looked up. In the following description, however, no such simplification has been made, so that these processes will work with any address protocol.
- the computer viewing a web page retrieves the associated comments by • applying the same hash function to the URL to obtain the label • sending a query (containing the label) on the primary virtual network, to obtain the address of one node •using the address found, sending a query on the second virtual network to obtain the addresses of more (or even all) all other nodes on the second virtual network. •using these addresses to retrieve the comments for display.
- the retrieving computer does not necessarily have to contain nodes of the virtual networks; it can be a conventional computer loaded with software for implementing the retrieval process, and with a communication interface so that it can communicate with the computers on which the nodes of the virtual networks reside. This process is shown in the flowchart of Figure
- Step 30 following the user inputting a URL (or invoking a hyperlink) the computer retrieves the corresponding web page. This step is entirely conventional.
- Step 31 a hash function is applied to the URL to obtain a label. As discussed in our earlier international patent application, this could use the SHA-1 algorithm.
- Step 32 a 'Find' message, containing this label and the network address of the retrieving computer, is sent to a node of the primary network. Manifestly it is necessary for the computer to be in possession of at least one such address.
- Step 33 the retrieving computer receives a 'Found' message from the primary network.
- This message contains the label and address of a node that has been found as well as the addresses of the associated node of the secondary network, and of the comment.
- a timeout mechanism could be included to abort the process if a Found message is not received in a reasonable time.
- Step 34 in this example, the primary network is arranged so that it always returns the label and address of the node having a label closest to the label contained in the Find message. So a check is performed to see if the label that is returned is the same as that asked for, and if not, the process is terminated. See below for an explanation of the meaning of "nearest”.
- Step 35 assuming that the labels match, the retrieving computer executes a process (to be described in detail below) whereby it uses the address returned by the Found message to retrieve further addresses using the secondary network.
- Step 36 These addresses are then uses to retrieve from the "posting" computers the text files containing the comments.
- the aim of this network is to self-organise a group of nodes into a single virtual network, which can subsequently be used to discover all nodes that are part of the group.
- the main requirement is that the resulting network contains all nodes.
- Another requirement is that the system load that is needed to create and maintain the network is spread equally across all nodes. Not only is this the most "fair", which is important when different users contribute their resources to a distributed application, it also helps to protect the system against overload.
- the network therefore, has the following properties: •
- the number of links maintained by each node is preferably the same.
- All links are bi-directional. As a result, the number of links to a node are also the same for each node. This is important, as this affects the number of a messages that a node receives and must handle. • It has a "flat" structure.
- the nodes do not arrange themselves hierarchically. As a result, the system load is spread equally across all nodes.
- Each node has the following data associated with it: • Several links to other nodes. Each link is simply the address of another node. Associated with each link is a status, which can be "confirmed” or "unconfirmed”. Each node can only maintain a maximum number of links, which is given by the system wide parameter L. A typical value for L is for instance 6. It is not essential that this parameter be the same for all nodes; but there is no advantage to be gained by making them different. • A list of spare links, or spares in short. Each spare is simply the address of another node. The spares are used by the self-organisation process to build the virtual network.
- a node adds other nodes as spares when it is notified about a node that it cannot add as a link, either because it already links to the node, or because it has the maximum number of links already.
- the number of spares that a node can maintain is also limited, and given by the system wide parameter S.
- a typical value for S is for instance 3.
- the list of spare links is not essential in general, but is very valuable in providing an additional mechanism whereby a link that cannot be accommodated locally can be propagated to some other point in the virtual network.
- spare links or a similar propagation mechanism
- the incoming Notify messages always arrive at the same node (or one of a very small number of nodes) of the secondary network.
- nodes send messages to one another:
- the following types of messages are used by the secondary network: • AddLink message with: • address of sender • address of receiver It is sent by a node (sender) to another node (receiver) to request a mutual link.
- • ChangeLink message with: • address of sender • address of receiver • address of subject It is sent by a node (X) to another node (Y) to request that it changes one of its links (Z) to a link to itself (X).
- the protocol is such that X will send a similar message to Z requesting it to change its link to Y with a link to itself (X).
- • LinksQuery message with: • address of sender • address of receiver • reference value It is used to request a node to send a Links message in reply (containing its current links).
- • Notify message with: • address of sender • address of receiver • address of subject • notify level It is used to notify a node of another node in the network. The notify level is used to control and limit the propagation of Notify messages. As described here, sender address is not used, but is useful for debugging or if it is desired to send acknowledgements.
- the system lets a group nodes self-organise into a single, virtual network, so that if one has the address of one node one can find the addresses of others in the group.
- This section describes how new links are created when nodes that should belong to the same secondary network are discovered.
- Two parts can be distinguished here: Discovery of pairs of nodes that should belong in the same secondary network. What the criterion is for grouping nodes into the same network is application specific. In the web page annotation example, all nodes that represent comments about the same URL should be grouped together in a secondary network. How nodes are discovered that should be grouped together is also application-specific. An example is given shortly. Updating/extending the secondary network as a result of node discovery.
- the system may build one or more new links as a result.
- the new link is not necessarily between the pair of nodes, but may for instance be between nodes that these two nodes link to. How new links are created is described in detail later .
- each comment also has a node of the secondary network associated with it. Nodes that correspond to comments about the same URL self-organise into a secondary network specific to that URL. This way, once the primary network is used to find a single comment about a URL, the secondary network can be used to find other comments about the same URL. So in this case, nodes of the secondary network that should be grouped together are each published under tr e same label in the primary network.
- a mechanism whereby in the primary network, nodes periodically execute a 'Push' update to build and maintain links will be described below, including a modification so that whenever a node becomes aware of another node published under the same label, the needed Notify message is generated.
- FIG. 3 shows how a node handles incoming Notify messages.
- a new link should be created, and if so how (by adding a new link or by changing an existing link into two links). If no new links are created, the set of spares may be updated and another Notify message may be sent.
- a Notify message is received, containing the address of the node that sent it (sender), the address of the subject node, and a propagation limit value, notifylevel.
- the receiving node firstly checks (301) whether it has space to set up a new link and if so, whether (302) it already has a link to the subject node. If not, it attempts to set up a link with subject. In Step 303 it sends a LinksQuery message to the subject node, and at 304, awaits a reply.
- the reply - a Links message - it again checks (305) whether it still has space to set up a new link (in case it has received and handled any other messages in the meantime and created links as a result). If so, it then (306) examines the received Links message to check whether the subject node has the space to set up a new link. If it has then at Step 307 and 308 the receiving node adds the address of the subject node to its list of links (but marked "unconfirmed") and sends an AddLink message to the subject node. If however at Step 306 it is determined that the subject node cannot accept further links, the receiving node then attempts to insert itself into an existing link as mentioned earlier with reference to Figure 2.
- the first step (309) is to check whether the receiving node has space for two links; if not, the process is terminated. If however it has, then the receiving node selects a link at random from the list of links in the received Links message (but not a node to which the receiving node already has a link), that is, a link between the subject node and another node referred to here as other. The receiving node then attempts to insert itself into this link by: 311 adding the address of the subject node (unconfirmed) to its list of links; 312 adding the address of the other node (unconfirmed) to its list of links;
- Step 314 sending to the other node a ChangeLink message containing the address of subject. Supposing however that at Step 301 it is determined that the receiving node has no space to add a link, or that at Step 302 it already has a link to the subject node, then the process examines whether the receiving node should add a link to its list of spare links. In Step 315 the process terminates if it is found that the subject node is already in the spares list. At 316 it is checked whether there is space to add a link to the spares list and if so this is duly added at 317. If not, then an existing one of the spare links is selected at random at 318, and removed at Step 319 so that it may be replaced by a link to subject at Step 317.
- variable notifylevel is decremented at 320 and if (Step 321) it remains nonzero the original Notify message - with this new value of notifylevel - is forwarded at Step 322 to the node (referenced as replace) pointed to by the randomly selected existing link.
- the effect of this process is that when a node A that already has a full set of links receives a Notify message asking it to link to a subject node B, B's address is recorded as a spare link. This link remains dormant until A's list of spare links is full.
- the new Notify message generated at Step 322 is in effect a request to node B to create a link from itself to node C.
- a mechanism is also provided - but not shown on the flowchart - whereby when a link is unconfirmed and the receiving node does not receive confirmation (by way of a LinkAdded message as described below with reference to Figure 6) within a give period of time, the unconfirmed link is deleted Note that when the receiving node has links that still have an "unconfirmed" status, it returns these unconfirmed links (as well as, of course, the confirmed ones) in response to LinksQuery messages, allowing other nodes to confirm that it is attempting to set up the link.
- Steps 305 and 309 lead to termination of the process: however if desired they could be routed to the "spare link" process commencing at Step 315, with a slight improvement in efficiency.
- Steps 309 to 314 the node effectively breaks one of subject's links and inserts itself in between.
- Another possible option, not shown in the flowchart, would be for the node to break one of its own links (assuming of course that it already has at least one link) and insert subject in between. This option, if implemented, would be tried immediately after the 'no' exit from Step 301.
- the receiving node would need to check whether subject had fewer than L-1 links, select at random one of its own links (to a node other), replace this with an unconfirmed link to subject, and send an AddLink messages to subject.
- the receiving node would then (a) send to subject a special AddLink message requiring subject to add, unconditionally, other as an unconfirmed link to its list of links and (b) send to other a special ChangeLink message with the receiving node as the old link to be removed and naming subject as the new link to be added.
- This option could be included as well as, or instead of, Steps 309 to 314.
- FIG. 4 shows how a node handles incoming ChangeLink messages. These messages are sent when a node X that received a Notify message wants to change an existing link into two new ones (see Figure 2).
- the receiving node Y receives at 400 a Notify message with node Z as subject, i.e. asking node Y to replace its existing link to node Z with one to node X.
- FIG. 5 shows how a node handles incoming AddLink messages. These messages are sent when a node wants to create a new link with a node (see Figure 1). The message having been received at 501, the node checks at Step 502 whether it has space for another link and if not, returns an error message at 503. Otherwise, it sends (504) a LinksQuery message to the sender and awaits (505) a Links message in reply from the sending node, so that it may check at 506 that the latter has indeed created a links to the receiving node.
- FIG. 6 shows how a node handles incoming LinkAdded messages. These messages are sent when another node has accepted a link to the receiving node, either in response to a ChangeLink or a AddLink message. When the LinkAdded message is received at 600 indicating that a link has been accepted, its status is changed to "confirmed" at Step 601. The link will then be maintained until either it is changed for a new link (in response to a ChangeLink message), or the link is broken.
- Figure 7 shows how a node handles incoming LinkError messages.
- the receiving node sends (704) a LinksQuery message to the subject, awaits (705) a Links message in reply, checks the reply at 706 to check whether the subject has a link to itself, and if not then in Step 703 removes its link to the subject node.
- Figure 8 shows how a node handles incoming LinksQuery messages. These messages are sent when another node wants to know the links of the receiving node, and the latter upon receipt thereof at 800 therefore responds at 801 with a Links message.
- Figure 9 shows how a node handles incoming Links messages. How it is handled depends entirely on why the corresponding LinksQuery message was sent.
- the addresses of all known nodes that have successfully been contacted are put in the "confirmed” list. Data may be retrieved at the same time. In the case of the "web page comment” example, the relevant item of data is the address of the comment, and this too is entered into the confirmed list alongside the node address.
- the confirmed list then provides the addresses needed for the "Retrieve” comments step (36) in Figure 1 A.
- the "unconfirmed” list contains the addresses of known nodes that have not yet been contacted.
- the "known” list contains the addresses of all known nodes. It includes all addresses in the "confirmed” and “unconfirmed” list, but also the addresses of nodes that have been contacted and that have not responded.
- the known list also has, for each address entered into it, an additional field for containing a source address - that is, the address of the node from whose list the address to which the current pointer points was obtained, for error reporting purposes. It is not material where the retrieval process occurs: it may be at a node, or somewhere else.
- a request to retrieve node addresses is received along with a start address, that is, the address of one node that had been determined to belong to the virtual network in question.
- an address pointer, current is initially set to this address whilst a second address pointer, source is initially null (1003).
- a LinksQuery message is sent to the address given by current, and a reply awaited.
- Step 1006 When a Links message is received, current is added to the confirmed list (Step 1006), with the comment address from the Links message alongside it.
- step 1007 a sub-process is entered, which is performed for each of the addresses contained in the Links message. If (1008) the address is already in the known list, the process steps on to the next address. Otherwise the address is added to the known list and to the unconfirmed list (Steps 1009, 1010). Also (1011), the address in current is entered into the known list as being the source of the address added.
- the next step (1014) is to look up current in the known list to retrieve the source address associated with it, and enter this in the source pointer.
- the random selection is not mandatory. E.g. current could be chosen to be the "oldest" node in the unconfirmed list, or the list could be sorted by another criterion (e.g. node's addresses) and current could always be the "first" node in this list.
- random choice of current has its advantages. It spreads the load in the system (in particular if not all nodes are always retrieved), and also spreads the testing of the links of the network so that broken links are discovered more quickly.
- Step 1004 The process then continues again from Step 1004 and iterates until the unconfirmed list is empty - i.e. no further new addresses can be found.
- a side effect of the retrieval process is that it discovers broken links. For instance, it may happen that a node is not responding, or that a link is not mutual. The latter is the case when a node A links to node B, but node B does not have node A in its link table.
- the node that is the "source" of the link is notified by way of a LinkError message. As Figure 7 already showed, the source node can then check the link itself (to confirm the accuracy of the error report) and may remove the link as a result.
- a node that is not responding is recognised by the failure at Step 1005 to receive a Links message within a set time-out period and at Step 1015 an error message, containing the address of current and a "no reply" error code, is sent to source, whereupon control returns to Step 1012.
- the non-mutuality of a link is recognised by testing at Step 1016 to determine whether the Links message received for current contains the address of source: if not, an error message, containing the address of current and a "not mutual" error code, is sent (Step 1017) to source, but the retrieval process continues as before, as it is the responsibility of the source node to take remedial action (in accordance with the process of Figure 7).
- the test at Step 1016 is skipped if source is null.
- the node retrieval does not stop until all known nodes have been contacted. In practice, one may wish to terminate the process earlier. For instance, if a user is looking for a location from which to download a file, it may be sufficient to offer him or her the choice of ten potential download addresses instead of, say, all thousand.
- the algorithm in Figure 10 is shown as entirely serial. Only one node is contacted at a time. Another LinksQuery message is sent only after a reply has been received to the previous one (or it has been timed out). In practice, however we prefer to speed up the retrieval by issuing multiple LinksQuery messages in parallel. It may also be the case that at box 1000 multiple retrieval requests are simultaneously handled by multiple instances of the process of Figure 10.
- the aim of the secondary virtual network is to self-organise all nodes that should be grouped together into a single network, as opposed to several unconnected networks. Whether or not this is the case depends largely on how the initial Notify message is generated. For instance, if there is a group of twelve nodes that should all be grouped together, but of this group five nodes only receive notifications about other nodes in this group of five, and none of the other seven nodes are notified about any of these five nodes, it is impossible for the nodes to self-organise into a single network. Instead, they arrange into two separate networks, one of five nodes, and one of seven nodes.
- the receiving node can reply with a faked Links message modified such that it always contains the sender of the Links message as a link.
- This enables a node to have much more than the allowed number of L nodes linking to it. This would, consequently, reduce the overall number of "good" links in the system.
- proxies are randomly chosen each time a node want to send a query. Each node can for instance use the nodes it currently links to as proxies.
- the preferred method is that the label, considered as a string of bits, is partitioned into two or more equal groups, each group, considered as a binary number, forming one of the coordinates.
- Each coordinate (or the coordinate, in a one-dimensional space) is scaled to lie in the range [0,1].
- the distance between two labels in this virtual space is the Euclidean distance between the two coordinate sets (though other distances such as the city block distance (often called the Manhattan distance) could be used if desired.
- Each entry consists of the label and address of such another node. Initially this list is empty and therefore the node has a second, similar, list of bootstrap links - that is, a few links (typically four) so that it is initially able to contact other nodes of the network. As well as the links in the list 22 (referred to as short-range links), the node may also have additional such lists arranged hierarchically, and/or a list of long-range links. These are described in our earlier international patent application, but, as they are optional, are not described here. Messages Firstly, the following messages are used (note that the messages used in the primary virtual network are different from, and completely independent of, the messages used in the secondary virtual network):
- FIND messages are used to initiate and fulfil node look-ups and to support "PULL" updates. They contain: • the label of a target node • the address of the node that initiated the query
- FOUND messages are used to return the results of queries. They contain: • the label of the target node • the label of the node that was found • the address of the node that was found • the address of the node of the secondary network that is associated with the node that was found • application-specific data - in this case the address of the comment node that is associated with the node that was found
- PUSH messages advertise a node's label to other nodes. They contain: • the label of a subject node • the address of the subject node • the number of hops to go to reach a target node
- NOTIFY messages are used to propagate push-updates. They contain: • the label of a subject node • the address of the subject node
- Figure 11 shows how each node handles incoming Find messages.
- the receiving node looks for a node which is closer than itself to the target node identified in the Find message and, if successful, passes on the Find message. If not successful, it returns its own address and label. It does this by carrying out the following steps:
- Step 1100 the node receives a Find message which contains the label of a target node and the address of an initiating node;
- Step 1105 the node translates the label of the target node into co-ordinates in label space and calculates which, of all the links (nodes) it has recorded is closest to the target node in label space.
- the relevant node is designated nearest node;
- Step 1110 the node compares the distance between its own co-ordinates and those of the target node with the distance between the co-ordinates of nearest node and those of the target node;
- Step 1115 if the distance between its own co-ordinates and those of the target node is less (or equal), the node sends to the initiating node, via the network 10, a Found message containing its own label and address;
- Step 1120 if the distance between the co-ordinates of nearest node and those of the target node is less, the node forwards the Find message to nearest node.
- the address of the node returned in Step 1115 is either that of one with the target label, or one close to it in label space. When the returned label does not match the target label, it may mean either that the target node does not exist or that the virtual network is not sufficiently self- organised
- Push Each node spontaneously initiates Push updates. For instance, each node might start a Push update process periodically.
- a node sends out a Push message with its own label and address through a random series of nodes, setting a limit on the length of the series. The last node in the series sends a Notify message back towards the initiating node.
- Step 1200 the node selects a link randomly from amongst its bootstrap links and enters the address of the node identified by the selected link as & forward address for a next message;
- Step 1205 the node enters a small positive random number for the field hops to go in the Push message
- Step 1210 the node enters its own label and address as those of the subject node in the Push message and sends the Push message to the node at the forward address, using the network 10.
- Figures 13 and 14 show how short range links are updated. Push messages are used together with Notify messages to update short range links. There are two phases in this updating. In a first phase, each node randomly forwards the Push message until the value in hops to go in the message as received is "0". If the value in hops to go is "0", the receiving node will start the second phase of the Push update by sending a Notify message. In the second phase, the Notify message is successively forwarded to nodes whose labels are progressively closer to the subject node's in the virtual space.
- the first phase of a Push update dealing with incoming Push messages, involves the following steps:
- Step 1300 a node receives a Push message.
- the Push message will contain the label and address of an initiating node as the subject node and will have a value in the field hops to go;
- Step 1305 the receiving node selects a link randomly from amongst its bootstrap links and enters the address of the node identified by the selected link as a. forward address for a next message;
- Steps 1310 and 1315 the receiving node decreases the value in the field hops to go by 1 and checks whether the decreased value for hops to go is still greater than zero; Step 1320: if the decreased value is still greater than zero, the node forwards the Push message to the forward address which it has entered;
- Step 1325 if the value is zero, the node instead enters the label and address of the initiating node (given in the received Push message) as the subject node in a Notify message and sends the Notify message to he forward address which it has entered.
- the second phase of dealing with Push updates, dealing with Notify messages involves the following steps:
- Step 1400 a node receives a Notify message containing the label and address of a node as the subject node;
- Step 1401 the receiving node checks whether the subject of the Notify message has the same label as the receiving node;
- Step 1402 if so, the receiving node checks whether the subject of the Notify message has the same address as the receiving node. In that case it takes no further action; If however the subject of the Notify message is a node with the same label as, but an address different from, the receiving node, then two events occur. Firstly (Step 1403) the receiving node sends to the subject node of the incoming Notify message a Notify message naming as subject a randomly-chosen node from the receiving node's own list of short-range links. Secondly, Step 1404 causes the generation of a Notify message for action by the secondary network. However, the receiving node cannot generate such a message directly.
- the receiving node In general we prefer to avoid sending, over the communication network, messages between different virtual networks, but the main problem is that the receiving node would need not only the address of its own node of the secondary network, but also the address of the node of the secondary node that is associated with the subject node. The receiving node does not have this address. Therefore, a two-stage process is used. First, the receiving node sends a special CrossNotify message to the node of the primary network specified as the subject in the incoming Notify message. This message contains: • a sender address, set to the address of the receiving node (i.e.
- the node that received the incoming (primary network) message • a receiver (or destination) address, set to the address contained in the incoming Notify message; • a subject address, set to the address of the node of the secondary network associated with the receiving node .
- the first two addresses are the addresses of nodes on the primary network and the third address is the address of a node on the secondary network.
- the node of the primary network that receives the CrossNotify message in effect, forwards it to the associated node of the secondary network. If necessary, the forwarding node could reformat the message into the format in use on the secondary network and replace the (primary network) receiver address with the address of the associated node of the secondary network. The message would then be handled just as shown in Figure 3.
- the node PI knows the address As ! of its secondary network node SI, and generates (at Step 1404 in Figure 14) a CrossNotify message with sender address A P1 , receiver address A P2 and subject address A S ⁇ . This message is received at node P2 of the primary network and this sends a local notify message, with the address A S ⁇ , to the associated node S2 of the secondary network.
- the node S2 of the secondary network upon receipt of the
- Step 1405 the receiving node translates the label of the subject node into co-ordinates and calculates which of the short range links it has recorded leads to a node label whose co-ordinates are closest to those of the subject node in virtual space.
- the relevant node is designated nearest node;
- Step 1415 the receiving node compares the distance between its own co-ordinates and the coordinates for the subject node with the distance between the co-ordinates for the nearest node and the coordinates for the subject node. If, at Step 1415, the distance between the receiving node and the subject node is found to be the same or less, the receiving node adds the label and address of the subject node as a link in its own short range link set ((step 1420): this process is further discussed below with reference to Figure 16), sends to the subject node a Notify message which contains the label and address of the receiving node (step 1430) and sends to the nearest node a Notify message which contains the label and address of the subject node (Step 1435);
- Step 1415 the receiving node reverts to Step 1435 in that it sends to the nearest node a Notify message which contains the label and address of the subject node.
- Figure 16 shows in detail how a node behaves when it updates its short-range links. It adds the new link to its short-range links and removes all short-range links that are superseded by this link. Referring to Figure 16, a node may need to add a new link to its list of short range links, for instance as a result of Step 1420 in Figure 14.
- Step 1600 the updating node (that is, a node which is carrying out an update to its short range link set) has the label and address of a node for a new link.
- Step 1605 the updating node identifies all existing links which are in respect of nodes which are closer to the new node than to the updating node. These identified links are to be superseded. To identify these links, the updating node calculates, for each existing link, the distances between the co-ordinates for the new node and the co-ordinates for the nodes specified in its existing links .
- Step 1610 all links where the distance in relation to the new node is less than the distance in relation to the updating node are removed from the short range links;
- Step 1620 the updating node adds a link for the new node to its short range links.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Gyroscopes (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
Abstract
Description
Claims
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA002517272A CA2517272A1 (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
KR1020057018851A KR101081203B1 (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
US10/558,882 US7787395B2 (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
EP04768549A EP1665678B1 (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
JP2006527462A JP4481988B2 (en) | 2003-09-25 | 2004-09-17 | Virtual network |
CN2004800076490A CN1762135B (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
DE602004013169T DE602004013169T2 (en) | 2003-09-25 | 2004-09-17 | VIRTUAL NETWORKS |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0322491.2A GB0322491D0 (en) | 2003-09-25 | 2003-09-25 | Virtual networks |
GB0322491.2 | 2003-09-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2005032069A1 true WO2005032069A1 (en) | 2005-04-07 |
Family
ID=29286839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/GB2004/004003 WO2005032069A1 (en) | 2003-09-25 | 2004-09-17 | Virtual networks |
Country Status (10)
Country | Link |
---|---|
US (1) | US7787395B2 (en) |
EP (1) | EP1665678B1 (en) |
JP (1) | JP4481988B2 (en) |
KR (1) | KR101081203B1 (en) |
CN (1) | CN1762135B (en) |
AT (1) | ATE392761T1 (en) |
CA (1) | CA2517272A1 (en) |
DE (1) | DE602004013169T2 (en) |
GB (1) | GB0322491D0 (en) |
WO (1) | WO2005032069A1 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0322494D0 (en) * | 2003-09-25 | 2003-10-29 | British Telecomm | Computer networks |
US8103870B2 (en) * | 2006-09-12 | 2012-01-24 | Foleeo, Inc. | Hive-based peer-to-peer network |
ES2434168T3 (en) * | 2007-12-17 | 2013-12-13 | Telefonaktiebolaget L M Ericsson (Publ) | Mobile Trunk Network Node Redundancy |
US10831466B2 (en) | 2017-03-29 | 2020-11-10 | International Business Machines Corporation | Automatic patch management |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1134940A1 (en) * | 2000-03-14 | 2001-09-19 | Lucent Technologies Inc. | Location based routing for mobile ad-hoc networks |
US20020145978A1 (en) * | 2001-04-05 | 2002-10-10 | Batsell Stephen G. | Mrp-based hybrid routing for mobile ad hoc networks |
US20020163889A1 (en) * | 2000-02-02 | 2002-11-07 | Yechiam Yemini | Method and apparatus for providing services on a dynamically addressed network |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317757A (en) * | 1992-02-06 | 1994-05-31 | International Business Machines Corporation | System and method for finite state machine processing using action vectors |
AU6721096A (en) * | 1995-08-14 | 1997-03-19 | Ericsson Inc. | Method and apparatus for modifying a standard internetwork protocol layer header |
US6266322B1 (en) * | 1998-02-12 | 2001-07-24 | At&T Corp. | Dimensioning bandwidth and connection admission control for elastic traffic in high-speed communication networks |
US6115394A (en) * | 1998-03-04 | 2000-09-05 | Ericsson Inc. | Methods, apparatus and computer program products for packet transport over wireless communication links |
US6625156B2 (en) * | 1998-06-29 | 2003-09-23 | Nortel Networks Limited | Method of implementing quality-of-service data communications over a short-cut path through a routed network |
US6856627B2 (en) * | 1999-01-15 | 2005-02-15 | Cisco Technology, Inc. | Method for routing information over a network |
US6754231B1 (en) * | 1999-06-18 | 2004-06-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Robust header compression in packet communications |
US6836463B2 (en) * | 1999-10-15 | 2004-12-28 | Nokia Corporation | System for communicating labeled routing trees to establish preferred paths and source routes with local identifiers in wireless computer networks |
WO2001041380A2 (en) | 1999-11-30 | 2001-06-07 | Siemens Technology-To-Business Center, Llc | Characteristic routing |
JP2001251351A (en) * | 2000-03-02 | 2001-09-14 | Nec Corp | Input packet processing system for packet switch |
US6757242B1 (en) * | 2000-03-30 | 2004-06-29 | Intel Corporation | System and multi-thread method to manage a fault tolerant computer switching cluster using a spanning tree |
JP4170566B2 (en) * | 2000-07-06 | 2008-10-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Communication method, wireless ad hoc network, communication terminal, and Bluetooth terminal |
EP1176780A1 (en) * | 2000-07-24 | 2002-01-30 | Lucent Technologies Inc. | Method, device and network for reducing the size of data packet headers |
US6944681B1 (en) * | 2000-09-08 | 2005-09-13 | Fisher-Rosemount Systems, Inc. | Probing algorithm for foundation fieldbus protocol |
EP1338128B1 (en) * | 2000-10-11 | 2006-06-07 | Broadcom Corporation | Efficiently transmitting RTP packets in a network |
US7069495B2 (en) * | 2000-10-30 | 2006-06-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Bit error resilience for an internet protocol stack |
JP3584873B2 (en) | 2000-10-31 | 2004-11-04 | ヤマハ株式会社 | Communication control device and communication system |
US7072982B2 (en) * | 2000-11-22 | 2006-07-04 | Microsoft Corporation | Universal naming scheme for peer to peer resources |
JP2002277326A (en) * | 2001-03-19 | 2002-09-25 | Nireco Corp | Spectrophotometric device |
JP2003092586A (en) * | 2001-09-18 | 2003-03-28 | Fujitsu Ltd | Layer 2-vpn relaying system |
US7269663B2 (en) * | 2001-09-28 | 2007-09-11 | Intel Corporation | Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache |
WO2003034669A1 (en) * | 2001-10-17 | 2003-04-24 | British Telecommunications Public Limited Company | Network location management system |
US7181214B1 (en) * | 2001-11-13 | 2007-02-20 | Meshnetworks, Inc. | System and method for determining the measure of mobility of a subscriber device in an ad-hoc wireless network with fixed wireless routers and wide area network (WAN) access points |
KR100429292B1 (en) * | 2001-12-12 | 2004-04-29 | 주식회사 케이티프리텔 | Method and apparatus for tunneling service of explicit multicast in mobile ip network |
US7184421B1 (en) * | 2001-12-21 | 2007-02-27 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for on demand multicast and unicast using controlled flood multicast communications |
US7231463B2 (en) | 2002-01-04 | 2007-06-12 | Intel Corporation | Multi-level ring peer-to-peer network structure for peer and object discovery |
US7764617B2 (en) * | 2002-04-29 | 2010-07-27 | Harris Corporation | Mobile ad-hoc network and methods for performing functions therein based upon weighted quality of service metrics |
US7027426B2 (en) * | 2002-08-05 | 2006-04-11 | Harris Corporation | Multi-channel mobile ad hoc network |
JP4041492B2 (en) * | 2002-08-22 | 2008-01-30 | 株式会社エヌ・ティ・ティ・ドコモ | Reconfiguration of network nodes in ad hoc networks |
US6763013B2 (en) * | 2002-09-04 | 2004-07-13 | Harris Corporation | Intelligent communication node object beacon framework including neighbor discovery in a mobile ad hoc network |
US7657597B2 (en) * | 2002-09-26 | 2010-02-02 | Sun Microsystems, Inc. | Instant messaging using distributed indexes |
US20040136476A1 (en) * | 2003-01-10 | 2004-07-15 | Rosen Eric C. | Method and apparatus for compressing header information for short data burst messaging |
US7386881B2 (en) * | 2003-01-21 | 2008-06-10 | Swander Brian D | Method for mapping security associations to clients operating behind a network address translation device |
US20040249973A1 (en) * | 2003-03-31 | 2004-12-09 | Alkhatib Hasan S. | Group agent |
US20040221312A1 (en) * | 2003-05-01 | 2004-11-04 | Genesis Microchip Inc. | Techniques for reducing multimedia data packet overhead |
US7400627B2 (en) * | 2003-06-05 | 2008-07-15 | Brooktree Broadband Holding, Inc. | ATM header compression using hash tables |
US20050063319A1 (en) * | 2003-09-24 | 2005-03-24 | Spyros Kyperountas | Channel assignment for scalable ad hoc network |
GB0322494D0 (en) * | 2003-09-25 | 2003-10-29 | British Telecomm | Computer networks |
GB0328888D0 (en) * | 2003-12-12 | 2004-01-14 | British Telecomm | Distributed computer system |
US7430617B2 (en) * | 2003-12-19 | 2008-09-30 | Nokia Corporation | Method and system for header compression |
US7360083B1 (en) * | 2004-02-26 | 2008-04-15 | Krishna Ragireddy | Method and system for providing end-to-end security solutions to aid protocol acceleration over networks using selective layer encryption |
GB2415319B (en) * | 2004-06-19 | 2006-11-29 | Agilent Technologies Inc | Method of generating a monitoring datagram |
US8189530B2 (en) * | 2004-08-13 | 2012-05-29 | Qualcomm Incorporated | Methods and apparatus for VPN support in mobility management |
US7356628B2 (en) * | 2005-05-13 | 2008-04-08 | Freescale Semiconductor, Inc. | Packet switch with multiple addressable components |
US20070140145A1 (en) * | 2005-12-21 | 2007-06-21 | Surender Kumar | System, method and apparatus for authentication of nodes in an Ad Hoc network |
US7599341B2 (en) * | 2006-02-28 | 2009-10-06 | Motorola, Inc. | System and method for managing communication routing within a wireless multi-hop network |
US8966270B2 (en) * | 2006-12-29 | 2015-02-24 | Alcatel Lucent | Methods and systems for providing controlled access to the internet |
US8140651B2 (en) * | 2008-05-06 | 2012-03-20 | International Business Machines Corporation | Method and system for self-organizing computer systems |
-
2003
- 2003-09-25 GB GBGB0322491.2A patent/GB0322491D0/en not_active Ceased
-
2004
- 2004-09-17 US US10/558,882 patent/US7787395B2/en active Active
- 2004-09-17 EP EP04768549A patent/EP1665678B1/en not_active Expired - Lifetime
- 2004-09-17 CN CN2004800076490A patent/CN1762135B/en not_active Expired - Fee Related
- 2004-09-17 WO PCT/GB2004/004003 patent/WO2005032069A1/en active IP Right Grant
- 2004-09-17 CA CA002517272A patent/CA2517272A1/en not_active Abandoned
- 2004-09-17 DE DE602004013169T patent/DE602004013169T2/en not_active Expired - Lifetime
- 2004-09-17 KR KR1020057018851A patent/KR101081203B1/en active IP Right Grant
- 2004-09-17 JP JP2006527462A patent/JP4481988B2/en not_active Expired - Fee Related
- 2004-09-17 AT AT04768549T patent/ATE392761T1/en not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020163889A1 (en) * | 2000-02-02 | 2002-11-07 | Yechiam Yemini | Method and apparatus for providing services on a dynamically addressed network |
EP1134940A1 (en) * | 2000-03-14 | 2001-09-19 | Lucent Technologies Inc. | Location based routing for mobile ad-hoc networks |
US20020145978A1 (en) * | 2001-04-05 | 2002-10-10 | Batsell Stephen G. | Mrp-based hybrid routing for mobile ad hoc networks |
Also Published As
Publication number | Publication date |
---|---|
DE602004013169T2 (en) | 2009-05-07 |
CN1762135A (en) | 2006-04-19 |
JP2007507142A (en) | 2007-03-22 |
ATE392761T1 (en) | 2008-05-15 |
GB0322491D0 (en) | 2003-10-29 |
EP1665678A1 (en) | 2006-06-07 |
US20060280172A1 (en) | 2006-12-14 |
JP4481988B2 (en) | 2010-06-16 |
DE602004013169D1 (en) | 2008-05-29 |
CA2517272A1 (en) | 2005-04-07 |
EP1665678B1 (en) | 2008-04-16 |
KR20060057526A (en) | 2006-05-26 |
US7787395B2 (en) | 2010-08-31 |
KR101081203B1 (en) | 2011-11-07 |
CN1762135B (en) | 2012-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4317522B2 (en) | Network traffic control in a peer-to-peer environment | |
EP1695241B1 (en) | Distributed computer system | |
EP1436957B1 (en) | Network location management system | |
EP0295461B1 (en) | A method for locating resources in computer networks | |
US7568049B2 (en) | Computer networks | |
EP1565839B1 (en) | Index server support to file sharing applications | |
EP2348686B1 (en) | Information processing device, method and computer program for decide an address | |
US7787395B2 (en) | Virtual networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2004768549 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2517272 Country of ref document: CA |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2094/CHENP/2005 Country of ref document: IN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 20048076490 Country of ref document: CN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006527462 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020057018851 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006280172 Country of ref document: US Ref document number: 10558882 Country of ref document: US |
|
WWP | Wipo information: published in national office |
Ref document number: 1020057018851 Country of ref document: KR |
|
WWP | Wipo information: published in national office |
Ref document number: 2004768549 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 10558882 Country of ref document: US |
|
WWG | Wipo information: grant in national office |
Ref document number: 2004768549 Country of ref document: EP |