US20100046399A1 - Rendezvousing resource requests with corresponding resources - Google Patents
Rendezvousing resource requests with corresponding resources Download PDFInfo
- Publication number
- US20100046399A1 US20100046399A1 US12/611,825 US61182509A US2010046399A1 US 20100046399 A1 US20100046399 A1 US 20100046399A1 US 61182509 A US61182509 A US 61182509A US 2010046399 A1 US2010046399 A1 US 2010046399A1
- Authority
- US
- United States
- Prior art keywords
- node
- nodes
- routing
- message
- ring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- 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/42—Loop networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4541—Directories for service discovery
-
- 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
- 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
- H04L67/1044—Group management mechanisms
- H04L67/1046—Joining mechanisms
-
- 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
- H04L67/1044—Group management mechanisms
- H04L67/1048—Departure or maintenance mechanisms
Definitions
- the present invention relates to accessing resources and, more particularly, to rendezvousing resource requests with corresponding resources.
- Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include electronic communication between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
- tasks performed at a computer system e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents
- resources are typically assigned unique identifiers, for example, network addresses, that uniquely identify resources and can be used to distinguish one resource from other resources.
- a computer system that desires to utilize a resource can connect to the resource using the network address that corresponds to the resource.
- accessing a network resource can be difficult if a computer system has no prior knowledge of a network address for a network resource. For example, a computer system can not print a document at a network printer unless the computer system (or another networked computer system) knows the network address of the network printer.
- DNS Domain Name System
- AD Active Directory
- DFS Distributed File Systems
- DNS has a distributed administration architecture (i.e., centralized management is not required)
- DNS is not sufficiently dynamic, not self-organizing, supports a weak data and query model, and has a fixed set of roots.
- AD is sufficiently dynamic but requires centralized administration.
- aspects of different mechanisms may not be compatible with one another. For example, a resource identified using DNS may not be compatible with DFS routing protocols. Thus, a developer may be forced to choose the most suitable mechanism and forgo the advantages of other mechanisms.
- DNS provides a lookup service, with host names as keys and IP addresses as values, that relies on a set of special root servers to implement lookup requests.
- DNS requires management of information (NS records) for allowing clients to navigate the name server hierarchy.
- NS records information
- a resource must be entered into DNS before the resource can be identified on a network.
- DNS is specialized to the task of find hosts or services and is not generally applicable to other types of resources.
- a number of mechanisms include distributed lookup protocols that are more scalable than DNS. These mechanisms use various node arrangements and routing algorithms to route requests to corresponding resources and to store information for lookup.
- the routing efficiency of these types of mechanisms is O (log N) routing hops and require nodes to maintain a routing table of O (log N) size.
- At least one other of these mechanisms assigns nodes a unique ID that is taken from a linear ring of numbers.
- Nodes maintain routing tables that contain pointers to their immediate successor node (according to ID value) and to those nodes whose ID values are the closest successor of the value ID+2 L .
- the routing efficiency of these types of mechanisms is also O (log N) routing hops and require nodes to maintain a routing table of O (log N) size.
- At least one further mechanisms requires O (log N 1/d ) routing hops and requires nodes to maintain a routing table of O (D) size.
- O (log N 1/d ) routing hops and requires nodes to maintain a routing table of O (D) size.
- D routing table of O (D) size.
- IDs for at least some of the mechanisms
- IDs can be uniformly distributed around a ring, there is always some possibility that routing between nodes on the ring will result in some inefficiency. For example, routing hops can cross vast geographic distances, cross more expensive links, or pass through insecure domains, etc. Additionally, when message routing involves multiple hops, there is some chance that such events will occur multiple times. Unfortunately, these mechanisms do not take into account the proximity of nodes (physical or otherwise) with respect one another. For example, depending on node distribution on a ring, routing a message from New York to Boston could involve routing the message from New York, to London, to Atlanta, to Tokyo, and then to Boston.
- At least one other more recent mechanism takes proximity into account by defining proximity as a single scalar proximity metric (e.g., IP routing hops or geographic distance).
- proximity e.g., IP routing hops or geographic distance.
- These mechanisms use the notion of proximity-based choice of routing table entries. Since there are many “correct” node candidates for each routing table entry, these mechanisms attempt to select a proximally close node from among the candidate nodes. For these mechanisms can provide a function that allows each node to determine the “distance” of a node with a given IP address to itself. Messages are routed between nodes in closer proximity to make progress towards a destination before routing to a node that is further away. Thus, some resources can be conserved and routing is more efficient.
- the nodes of a federation infrastructure are partitioned.
- a sorted linked list containing node IDs that have been assigned to nodes in the federation infrastructure is accessed.
- Proximity categories that represent a plurality of different proximity criterion for partitioning the sorted link list are accessed.
- the sorted linked list is partitioned into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list.
- a first sub list, selected from among the one or more first sub lists, is partitioned in to one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list.
- a node routing table is populated.
- An immediate predecessor node is inserted into the routing table.
- An immediate successor node is inserted into the routing table.
- Appropriate neighborhood node identifiers are inserted into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a predetermined or estimated neighborhood range and neighborhood size.
- routing nodes identifiers are inserted into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions.
- a node routing table can be populated taking proximity criteria in to account.
- a predecessor node for each hierarchically partitioned routing ring the current node participates in is inserted into a routing table, each hierarchically partitioned routing ring being partitioned in accordance with corresponding proximity criteria and containing at least subsets of the bi-directional linked list of a parent ring.
- a successor node for each hierarchically partitioned routing ring the current node participates is inserted into the routing table.
- Appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- Appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- a message is routed, potentially based on one or more proximity criteria defining a corresponding one or more classes of nodes, towards a destination node.
- a receiving node receives a message along with a destination number indicating a destination node and optionally one or more proximity criteria.
- the receiving node potentially among nodes in a current class of nodes, determines it is at least one of numerically further from the destination number than a corresponding predecessor node and numerically further from the destination number than a corresponding successor node. It is determined that the destination is not in a neighborhood set of nodes, potentially among nodes in the current class of nodes, corresponding to the receiving node.
- An intermediate node from a routing table corresponding to the receiving node is identified, the intermediate node being numerically closer to the destination number than other routing nodes in the corresponding routing table.
- the message is sent to the intermediate node.
- the intermediate node can continue routing the message.
- the message eventually reaches the destination node when a node that receives the message is numerically closer to the destination number than either its successor or predecessor nodes. In embodiments that route based on one or more proximity criteria, this numerical closeness may be with respect to nodes in a selected class of nodes.
- routing a message based on proximity criteria includes routing to a destination node (ID) by progressively moving closer to the destination node within a given proximal ring (class of nodes) until no further progress can be made by routing within that ring. Determining that no further progress can be made occurs when the destination number lies between the current node's ID and its successor or predecessor nodes' IDs. At this point, the current node starts routing via its partner nodes in the next larger proximal ring in which it participates. This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the destination node is reached.
- FIG. 1 illustrates an example of a federation infrastructure.
- FIG. 2 illustrates an example of a computer architecture that facilitates routing request indirectly to partners.
- FIG. 3 illustrates an example binary relationship between nodes in a federation infrastructure in the form of a sorted list and corresponding ring.
- FIG. 4 illustrates an example ring of rings that facilitates proximal routing.
- FIG. 5 illustrates an example proximity induced partition tree of rings that facilitates proximal routing.
- FIG. 6 illustrates a suitable operating environment for the principles of the present invention.
- FIG. 7 illustrates an example flow chart of a method for populating a node routing table that takes proximity criteria into account
- FIG. 8 illustrates an example flow chart of a method for partitioning the nodes of a federation infrastructure.
- FIG. 9 illustrates an example flow chart of a method for populating a node routing table.
- FIG. 10 illustrates an example flow chart of a method for numerically routing a message towards a destination node.
- FIG. 11 illustrates an example flow chart of a method for proximally routing a message towards a destination node.
- the nodes of a federation infrastructure are partitioned.
- a sorted linked list containing node IDs that have been assigned to nodes in the federation infrastructure is accessed.
- Proximity categories that represent a plurality of different proximity criterion for partitioning the sorted link list are accessed.
- the sorted linked list is partitioned into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list.
- a first sub list, selected from among the one or more first sub lists, is partitioned in to one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list.
- a node routing table is populated.
- An immediate predecessor node is inserted into the routing table.
- An immediate successor node is inserted into the routing table.
- Appropriate neighborhood node identifiers are inserted into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a predetermined or estimated neighborhood range and neighborhood size.
- routing nodes identifiers are inserted into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions.
- a node routing table can be populated taking proximity criteria in to account.
- a predecessor node for each hierarchically partitioned routing ring the current node participates in is inserted into a routing table, each hierarchically partitioned routing ring being partitioned in accordance with corresponding proximity criteria and containing at least subsets of the bi-directional linked list of a parent ring.
- a successor node for each hierarchically partitioned routing ring the current node participates is inserted into the routing table.
- Appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- Appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- a message is routed, potentially based on one or more proximity criteria defining a corresponding one or more classes of nodes, towards a destination node.
- a receiving node receives a message along with a destination number indicating a destination node and optionally one or more proximity criteria.
- the receiving node potentially among nodes in a current class of nodes, determines it is numerically further from the destination number than a corresponding predecessor node and numerically further from the destination number than a corresponding successor node. It is determined that the destination is not in a neighborhood set of nodes, potentially among nodes in the current class of nodes, corresponding to the receiving node.
- An intermediate node from a routing table corresponding to the receiving node is identified, the intermediate node being numerically closer to the destination number than other routing nodes in the corresponding routing table.
- the message is sent to the intermediate node.
- the intermediate node can continue routing the message.
- the message eventually reaches the destination node when a node that receives the message is numerically closer to the destination number than either its successor or predecessor nodes. In embodiments that route based on one or more proximity criteria this numerical closeness may be with respect to nodes in a selected class of nodes.
- routing a message based on proximity criteria includes routing to a destination node (ID) by progressively moving closer to the destination node within a given proximal ring (class of nodes) until no further progress can be made by routing within that ring. Determining that no further progress can be made occurs when the destination number lies between the current node's ID and its successor or predecessor nodes' IDs. At this point, the current node starts routing via its partner nodes in the next larger proximal ring in which it participates. This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the destination node is reached.
- Embodiments within the scope of the present invention include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon.
- Such computer-readable media may be any available media, which is accessible by a general-purpose or special-purpose computer system.
- Such computer-readable media can comprise physical storage media such as RAM, ROM, EPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other media which can be used to carry or store desired program code means in the form of computer-executable instructions, computer-readable instructions, or data structures and which may be accessed by a general-purpose or special-purpose computer system.
- a “network” is defined as one or more data links (of possibly different speeds) that enable the transport of electronic data between computer systems and/or modules (e.g., hardware and/or software modules).
- a network or another communications connection either hardwired, wireless, or a combination of hardwired or wireless
- the connection is properly viewed as a computer-readable medium.
- any such connection is properly termed a computer-readable medium.
- Computer-executable instructions comprise, for example, instructions and data which cause a general-purpose computer system or special-purpose computer system to perform a certain function or group of functions.
- the computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code.
- hardware modules such as, for example, special purpose integrated circuits or Gate-arrays are optimized to implement the principles of the present invention.
- a “node” is defined as one or more software modules, one or more hardware modules, or combinations thereof, that work together to perform operations on electronic data.
- the definition of a node includes the hardware components of a personal computer, as well as software modules, such as the operating system of the personal computer. The physical layout of the modules is not important.
- a node can include one or more computers coupled via a network.
- a node can include a single physical device (such as a mobile phone or Personal Digital Assistant “PDA”) where internal modules (such as a memory and processor) work together to perform operations on electronic data.
- a node can include special purpose hardware, such as, for example, a router that includes special purpose integrated circuits.
- the invention may be practiced in network computing environments with many types of node configurations, including, personal computers, laptop computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, gateways, brokers, proxies, firewalls, redirectors, network address translators, and the like.
- the invention may also be practiced in distributed system environments where local and remote nodes, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks.
- program modules may be located in both local and remote memory storage devices.
- FIG. 1 illustrates an example of a federation infrastructure 100 .
- the federation infrastructure 100 includes nodes 101 , 102 , 103 , that can form different types of federating partnerships.
- nodes 101 , 102 , 103 can be federated among one another as peers without a root node.
- Each of nodes 101 , 102 , and 103 has a corresponding ID 171 , 182 , and 193 respectively.
- the nodes 101 , 102 , 103 can utilize federation protocols to form partnerships and exchange information (e.g., state information related to interactions with other nodes). The formation of partnerships and exchange of information facilitates more efficient and reliable access to resources.
- Other intermediary nodes can exist between nodes 101 , 102 , and 103 (e.g., nodes having IDs between 171 and 193 ).
- a message routed, for example, between node 101 and node 103 can be pass through one or more of the other intermediary nodes.
- Nodes in federation infrastructure 100 can include corresponding rendezvous protocol stacks.
- nodes 101 , 102 , and 103 include corresponding rendezvous protocol stacks 141 , 142 , and 143 respectively.
- Each of the protocols stacks 141 , 142 , and 143 includes an application layer (e.g., application layers 121 , 122 , and 123 ) and other lower layers (e.g., corresponding other lower layers 131 , 132 , and 133 ).
- Each layer in a rendezvous protocol stack is responsible for different functionality related to rendezvousing a resource request with a corresponding resource.
- other lower layers can include a channel layer, a routing layer, and a function layer.
- a channel layer is responsible for reliably transporting a message (e.g., using WS-ReliableMessaging and Simple Object Access Protocol (“SOAP”)) from one endpoint to another (e.g., from node 101 to node 103 ).
- SOAP Simple Object Access Protocol
- the channel layer is also responsible for processing incoming and outgoing reliable messaging headers and maintaining state related to reliable messaging sessions.
- a routing layer is responsible for computing the next hop towards a destination.
- the routing layer is also responsible for processing incoming and outgoing addressing and routing message headers and maintaining routing state.
- a function layer is responsible for issuing and processing rendezvous protocol messages such as join and depart requests, pings, updates, and other messages, as well as generation of responses to these messages.
- the function layer processes request messages from the routing layer and sends back corresponding response messages, if any, to the originating node using the routing layer.
- the function layer also initiates request messages and utilizes the routing layer to have the requests messages delivered.
- an application layer processes non-rendezvous protocol specific data delivered from the function layer (i.e., application messages).
- the function layer can access application data from the application layer and get and put application data in rendezvous protocol messages (e.g., pings and updates). That is, the function layer can cause application data to be piggybacked on rendezvous protocol messages and can cause the application data to be passed back to the application layer in receiving rendezvous protocol nodes.
- application data is used to identify resources and resource interests.
- an application layer can include application specific logic and state that processes data received from and sent to the other lower layers for purposes of identifying resources and resource interests.
- Nodes can federate using a variety of different mechanisms.
- a first federating mechanism includes peer nodes forwarding information to all other peer nodes.
- the node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a broadcast/multicast find to detect other nodes.
- the node then establishes a simple forwarding partnership with other nodes already present on the network and accepts new partnerships with newly joining nodes. Thereafter, the node simply forwards all application specific messages to all of its partner nodes.
- a second federating mechanism includes peer nodes that most efficiently transmit application specific messages to their destination(s).
- the new node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a broadcast/multicast find to detect other nodes that are part of the federation infrastructure.
- a broadcast/multicast discovery protocol such as, for example, WS-Discovery to announce its presence and issues a broadcast/multicast find to detect other nodes that are part of the federation infrastructure.
- the new node Upon detecting another node, the new node establishes a partnership with the other node. From the established partnership, the new node learns about the presence of other nodes already participating in federation infrastructure. It then establishes partnerships with these newly-learned nodes and accepts any new incoming partnership requests.
- a third federating mechanism includes peer nodes indirectly forwarding all application specific messages to their destination/s.
- nodes are assigned identifiers (ID's), such as, for example, a 128-bit or 160-bit ID.
- ID's such as, for example, a 128-bit or 160-bit ID.
- the node responsible for a maintaining registration of interest in a given application specific message can be determined to be the one whose ID is closest to the one obtained by mapping (e.g., hashing) the destination identity (e.g. URI) of the application specific message to this 128-bit or 160-bit ID-space.
- node arrivals and departures are flooded over the entire fabric.
- registrations of interest in certain application specific messages are forwarded to the nodes determined to be responsible for maintaining such registration information.
- the node receiving registration of interest in certain application specific messages can reliably flood that registration information within its neighborhood set.
- the neighborhood set for a specified node can be determined to be the set of nodes having IDs within a predefined range on either side of the ID of specified node.
- a newly-joining node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a local broadcast/multi-cast find to detect a node that is already part of the federation infrastructure.
- the new node establishes a partnership with the discovered node and uses that partnership to learn about the presence of other new nodes participating in the federation infrastructure.
- the new node then establishes further partnerships with the newly discovered nodes and accepts any new incoming partnership requests.
- the new node accepts incoming registrations of interest in certain application layer specific resources from its partners for which it is responsible and may flood them over its neighborhood set.
- messages can generally be forwarded to their final destination via intermediary routing nodes (e.g., that a newly joining node has partnered with or that a partner node is aware of).
- the new node In response to receiving an incoming application specific message, the new node forwards the message to the partner node that may be responsible for maintaining the registration information for the destination specified in the message.
- the partner node that may be responsible for maintaining the registration information for the destination specified in the message.
- every node in the federation infrastructure has global knowledge of all other nodes but the registration information is efficiently partitioned among the nodes.
- Application specific messages are transmitted to their final destination via only the partner's nodes that may have the responsibility for maintaining registration information of interest in those application specific messages.
- indirection is accomplished by forwarding only to the partner node that has global knowledge of the registration information of interest for the message being processed. This is in contrast to the first mechanism where the indirection is accomplished by forwarding to all the partner nodes.
- a fourth federating mechanism includes peer nodes that route messages to other peer nodes. This fourth mechanism differs from the third mechanism at least in that both node arrivals/departures and registrations of interest in certain application specific messages are all routed instead being flooded. Routing protocols are designed to guarantee rendezvous between application specific messages and the registration messages that express interest in those application specific messages.
- FIG. 2 illustrates an example of a computer architecture 200 that facilitates routing requests indirectly to partners.
- Computer architecture 200 depicts different types of computer systems and devices potentially spread across multiple local discovery scopes participating in a federation infrastructure.
- Workstation 233 can include a registered PnP provider instance. To inform its partners of the presence of this PnP provider instance, workstation 233 routes registration request 201 over the federation infrastructure. Registration request 201 is initially forwarded to laptop 231 , which in turn forwards registration request 201 to message broker 237 , which in turn forwards registration request 201 to message gateway 241 . Message gateway 241 saves the registration information registration request 201 in its database and returns success message 204 to workstation 233 .
- the printer 236 (e.g., a UPnP printer) is powered on and sends announcement 207 .
- Server 234 detects announcement 207 and routes registration request 208 to message broker 237 .
- Message broker 237 forwards registration request 208 to message gateway 241 .
- Message gateway 241 saves the registration information registration request 208 in its database and returns success message 210 to server 234 .
- personal computer 242 issues lookup request 211 to discover all devices. Since personal computer 242 doesn't know where to forward lookup request 211 , it routes lookup request 211 through workstation 243 . As registration and lookup requests are routed to the same destination, the routing protocol essentially guarantees rendezvous between the two requests resulting in workstation 243 forwards find request 211 to message gateway 241 . Message gateway 241 looks up the registration information maintained by it and forwards find request 211 to both the workstation 233 and server 234 . Workstation 233 and server 234 send response messages 214 and 216 respectively to personal computer 242 .
- This fourth mechanism works by routing (instead of flooding) a request to the node (message gateway 241 ) that has global knowledge of the registrations specified in a request.
- This fourth mechanism essentially guarantees that routing can be accomplished in O (log N) hops, where N is the number of nodes participating in the federation infrastructure. Since this fourth mechanism efficiently partitions both node partnership and registration information, it scales to very large networks, even the Internet.
- a federation consists of a set of nodes that cooperate among themselves to form a dynamic and scalable network in which information can be systematically and efficiently disseminated and located.
- Nodes are organized to participate in a federation as a sorted list using a binary relation that is reflexive, anti-symmetric, transitive, total, and defined over the domain of node identities. Both ends of the sorted list are joined, thereby forming a ring.
- each node in the list can view itself as being at the middle of the sorted list (as a result of using modulo arithmetic). Further, the list is doubly linked so that any node can traverse the list in either direction.
- Each federating node can be assigned an ID (e.g., by a random number generator with duplicate detection) from a fixed set of IDs between 0 and some fixed upper bound.
- adding 1 to an ID of the fixed upper bound results in an ID of zero (i.e., moving from the end of the linked list back to the beginning of the linked listed .
- a 1:1 mapping function from the value domain of the node identities to the nodes themselves is defined.
- FIG. 3 depicts an example linked list 304 and corresponding ring 306 . Given such a ring, the following functions can be defined:
- RouteNumerically (V, Msg) is implemented by directly sending Msg to the node X, whose identity is obtained by applying the mapping function to V.
- RouteNumerically (V, Msg) is implemented by forwarding the message to consecutive nodes along the ring until it reaches the destination node X.
- nodes can store enough knowledge about the ring to perform a distributed binary search (without having to have global knowledge or implement routing between immediately adjacent nodes).
- the amount of ring knowledge is configurable such that maintaining the ring knowledge has a sufficiently small impact on each node but allows increased routing performance from the reduction in the number of routing hops.
- IDs can be assigned using the “ ⁇ ” (less than) relation defined over a sufficiently large, bounded set of natural numbers, meaning its range is over a finite set of numbers between 0 and some fixed value, inclusive.
- every node participating in the federation is assigned a natural number that lies between 0 and some appropriately-chosen upper bound, inclusive.
- the range does not have to be tight and there can be gaps between numbers assigned to nodes.
- the number assigned to a node serves as its identity in the ring.
- the mapping function accounts for gaps in the number space by mapping a number falling in between two node identities to the node whose identity is numerically closest to the number.
- This approach has a number of advantages. By assigning each node a uniformly-distributed number, there is an increased likelihood that all segments of the ring are uniformly populated. Further, successor, predecessor, and neighborhood computations can be done efficiently using modulo arithmetic.
- federating nodes are assigned an ID from within an ID space so large that the chances of two nodes being assigned the same ID are highly unlikely (e.g., when random number generation is used).
- a node can be assigned an ID in the range of 0 to b n ⁇ 1, where b equals, for example, 8 or 16 and n equals, for example, 128-bit or 160-bit equivalent digits.
- a node can be assigned an ID, for example, from a range of 0 to 16 40 ⁇ 1 (or approximately 1.461502E48). The range of 0 to 16 40 ⁇ 1 would provide, for example, a sufficient number of IDs to assign every node on the Internet a unique ID.
- each node in a federation can have:
- routing nodes can form a logarithmic index spanning a ring.
- a node closest to id ⁇ b i can be selected as a routing node.
- the resulting logarithmic index is not precise and may even lack unique routing nodes for some numbers in the set.
- FIG. 3 illustrates an example of a binary relation between nodes in a federation infrastructure in the form of sorted list 304 and corresponding ring 306 .
- nodes depicted in FIG. 3 are assigned IDs in a range from 0 to 255.
- Sorted list 304 utilizes a binary relation that is reflexive, anti-symmetric, transitive, total, and defined over the domain of node identities. Both ends of sorted list 304 are joined, thereby forming ring 306 . This makes it possible for each node in FIG.
- the sorted list 304 is doubly linked so that any node can traverse the sorted list 304 in either direction.
- the routing table indicates that the successor to ID 64 is ID 76 (the ID immediately clockwise from ID 64 ).
- the successor can change, for example, when a new node (e.g., with an ID of 71 ) joins or an existing node (e.g., ID 76 ) leaves the federation infrastructure.
- the routing table indicates that the predecessor to ID 64 is ID 50 (the ID immediately counters clockwise from ID 64 ).
- the predecessor can change, for example, when a new node (e.g., with an ID of 59 ) joins or an existing node (e.g., ID 50 ) leaves the federation infrastructure.
- the routing table further indicates that a set of neighborhood nodes to ID 64 have IDs 83 , 76 , 50 and 46 .
- a set of neighbor nodes can be a specified number of nodes (i.e., neighborhood size v) that are within a specified range (i.e., neighbor range u) of ID 64 .
- a neighborhood set can change, for example, when nodes join or leave the federation infrastructure or when the specified number of nodes or specified range is changed.
- the routing table further indicates that ID 64 can route to nodes having IDs 200 , 2 , 30 , 46 , 50 , 64 , 64 , 64 , 64 , 76 , 83 , 98 , 135 , and 200 .
- the node having ID 76 can be identified from calculating the closest node to 64+2 3 , or 72.
- a node can route messages (e.g., requests for access to resources) directly to a predecessor node, a successor node, any node in a set of neighborhood nodes, or any routing node.
- nodes implement a numeric routing function to route messages.
- RouteNumerically (V, Msg) can be implemented at node X to deliver Msg to the node Y in the federation whose ID is numerically closest to V, and return node Y's ID to node X.
- the node having ID 64 can implement RouteNumerically (243, Msg) to cause a message to be routed to the node having ID 250 .
- ID 250 is not a routing node for ID 64
- ID 64 can route the message to ID 2 (the closest routing node to 243).
- the node having ID 2 can in turn implement RouteNumerically (243, Msg) to cause the message to be routed (directly or through further intermediary nodes) to the node having ID 250 .
- RouteNumerically 243, Msg
- Msg RouteNumerically
- a ring facilitate partitioning a ring into a ring of rings or tree of rings based on a plurality of proximity criteria of one or more proximity categories (e.g., geographical boundaries, routing characteristics (e.g., IP routing hops), administrative domains, organizational boundaries, etc.).
- proximity categories e.g., geographical boundaries, routing characteristics (e.g., IP routing hops), administrative domains, organizational boundaries, etc.
- a ring can be partitioned more than once using the same type of proximity criteria.
- a ring can be partition based on a continent proximity criteria and a country proximity criteria (both of a geographical boundaries proximity category).
- IDs can be uniformly distributed across an ID space (a result of random number generation) there is a high probability that any given segment of a circular ID space contains nodes that belong to different proximity classes provided those classes have approximately the same cardinality. The probability increases further when there are a sufficient number of nodes to obtain meaningful statistical behavior.
- neighborhood nodes of any given node are typically well dispersed from the proximality point of view. Since published application state can be replicated among neighborhood nodes, the published information can be well dispersed as well from the proximality point of view.
- FIG. 4 illustrates a ring of rings 400 that facilitates proximal routing.
- Ring 401 can be viewed as a master or root ring, and contains all the nodes in each of the rings 402 , 403 , and 404 .
- Each of the rings 402 , 403 , and 404 contain a subset of nodes from ring 401 that are partitioned based on a specified proximity criterion. For example, ring 401 may be partitioned based on geographic location, where ring 402 contains nodes in North America, ring 403 contains nodes in Europe, and ring 404 contains nodes in Asia.
- routing a message from a North American node having an ID 5 , 345 to an Asian node having an ID 23 , 345 can include routing the message within ring 402 until a neighbor node of the Asian node is identified. The neighbor node can then route the message to the Asian node. Thus, a single hop (as opposed to multiple hops) is made between a North American node and an Asian node. Accordingly, routing is performed in a resource efficient manner.
- FIG. 5 illustrates an example proximity induced partition tree of rings 500 that facilitates proximal routing.
- partition tree of rings 500 includes a number of rings.
- Each of the rings represents a partition of a sorted linked list.
- Each ring including a plurality a nodes having IDs in the sorted linked list.
- root ring 501 is partitioned into a plurality of sub-rings, including sub-rings 511 , 512 , 513 , and 514 , based on criterion 571 (a first administrative domain boundary criterion).
- criterion 571 a first administrative domain boundary criterion
- each component of a DNS name can be considered a proximity criterion with the partial order among them induced per their order of appearance in the DNS name read right to left.
- sub-ring 511 can be further partitioned into a plurality of sub-rings, including sub-rings 521 , 522 , and 523 , based on criterion 581 (a second administrative domain boundary criterion).
- Sub-ring 522 can be further partitioned into a plurality of sub-rings, including sub-rings 531 , 532 , and 533 , based on criterion 572 (a geographic boundary criterion).
- Location based proximity criterion can be partially ordered along the lines of continents, countries, postal zip codes, and so on. Postal zip codes are themselves hierarchically organized meaning that they can be seen as further inducing a partially ordered sub-list of proximity criteria.
- Sub-ring 531 can be further partitioned into a plurality of sub-rings, including sub-rings 541 , 542 , 543 , and 544 , based on criterion 573 (a first organizational boundary criterion).
- criterion 573 a first organizational boundary criterion
- a partially ordered list of proximity criterion can be induced along the lines of how a given company is organizationally structured such as divisions, departments, and product groups.
- sub-ring 543 can be further partitioned into a plurality of sub-rings, including sub-rings 551 and 552 , based on criterion 583 (a second organizational boundary criterion).
- each node has a single ID and participates in rings along a corresponding partition path starting from the root to a leaf. For example, each node participating in sub-ring 552 would also participate in sub-rings 543 , 531 , 522 , 511 and in root 501 . Routing to a destination node (ID) can be accomplished by implementing a RouteProximally function, as follows:
- routing can be accomplished by progressively moving closer to the destination node within a given ring until no further progress can be made by routing within that ring as determined from the condition that the destination node lies between the current node and its successor or predecessor node.
- the current node starts routing via its partner nodes in the next larger ring in which it participates.
- This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the closest node to the destination node is reached within the requested proximal context, as originally specified in the RouteProximally invocation.
- Routing hops can remain in the proximal neighborhood of the node that originated the request until no further progress can be made within that neighborhood because the destination node exists outside it.
- the proximity criterion is relaxed to increase the size of the proximal neighborhood to make further progress. This process is repeated until the proximal neighborhood is sufficiently expanded to include the destination node (ID).
- the routing hop made after each successive relaxation of proximal neighborhood criterion can be a potentially larger jump in proximal space while making a correspondingly smaller jump in the numerical space compared to the previous hop. Thus, only the absolutely required number of such (inter-ring) hops is made before the destination is reached.
- each federation node maintains references to its successor and predecessor nodes in all the rings it participates as a member (similar to successor and predecessor for a single ring)—the proximal predecessor, proximal successor, and proximal neighborhood.
- the nodes can also maintain reference to other nodes closest to an exponentially increasing distance on its either half of the ring as routing partners (similar to routing nodes for a single ring).
- routing partner nodes that lie between a pair of consecutive successor or predecessor nodes participate in the same lowest ring shared by the current node and the node numerically closest to it among the successor or predecessor node pairs respectively.
- routing hops towards a destination node transition into using a relaxed proximity criterion (i.e., transitioning to a higher ring) only when absolutely needed to make further progress. Accordingly, messages can be efficiently rendezvoused with a corresponding federation node.
- nodes implement a proximal routing function to route messages based on equivalence criteria relations.
- a node can implement RouteProximally (V, Msg, P) to deliver the message to the node Y whose identify can be mapped to V among the nodes considered equivalent by proximity criterion P.
- the proximity criterion P identifies the lowest ring in the partition tree that is the common ancestor to all the nodes considered proximally equivalent by it. It can be represented as a string obtained by concatenating the proximity criterion found along the path from the root ring to the ring identified by it separated by the path separator character ‘/’.
- the proximity criterion identifying sub-ring 542 can be represented as “Proximity:/.COM/Corp2/LocationA/Div2”.
- Each ring in the partition tree 500 can be assigned a unique number, for example, by hashing its representational string with a SHA based algorithm. If the number 0 is reserved for the root ring, it can be inferred that RouteNumerically (V, Msg) ⁇ RouteProximally (V, Msg, 0).
- a node in sub-ring 544 can implement RouteProximally to identify a closer node in sub-ring 531 (e.g., to a node in sub-ring 513 ).
- sub-ring 531 can implement RouteProximally to identify a closer node in sub-ring 522 .
- sub-ring 522 can implement RouteProximally to identify a closer node in sub-ring 511 .
- sub-ring 511 can implement RouteProximally to identify a closer node in ring 501 .
- a RouteProximally function is recursively invoked with each invocation routing a message closer to the destination.
- proximity criterion when proximity criterion is taken into account, routing hops on a path to a final destination can remain within the proximity of a node that originates a request, while making significant progress between the originating node and the destination node in a numerical space, until either the destination node is reached or no further progress can be made under the chosen proximity criterion at which point it is relaxed just enough to make further progress towards the destination. For example, proximity criterion can be relaxed enough for a message to be routed from ring 531 up to ring 522 , etc.
- an entity publishes references to seed nodes in the root ring.
- Seed nodes can be published at the unique number (such as the one obtained by hashing its representational string) associated with the ring (as a target ID).
- Seed node information can further be on-demand cached by the nodes in various rings that are on the path to the corresponding target IDs in the root ring. Such on-demand caching provides for improved performance and reduction in hotspots that might occur when semi-static information is looked up quite frequently. Seed node information can also be obtained via other means such as DNS
- each node can maintain a set of neighborhood nodes in all of the rings it participates in. Given the above, the state maintained by a node can be summarized as follows:
- aliasing can be implemented to associate different state, for example, from different sub-rings, with the specified node.
- aliases for a given node have the same ID, each alias can have distinct state associated with them.
- Aliasing allows the specified node to participate in multiple rings having distinct proximity criteria that are not necessarily common ancestors of more specific proximity criteria. That is, the specified node can participate in multiple branches of the proximity tree.
- a dual NIC (wired and wireless) laptop can be considered to be proximally equivalent to both other wireless and wired nodes sharing the same LAN segments as the laptop.
- these two distinct proximity criteria can be modeled as sub-criteria that are applicable only after application of a different higher priority proximity criterion, such as, for example, one based on organizational membership.
- a different higher priority proximity criterion such as, for example, one based on organizational membership.
- the aliased nodes in the two sub-rings representing 1) membership in the wired and 2) membership in the wireless LAN segments merge into a single node in the ring representing the organization to which the laptop belongs. It should be understand that the RouteProximally works as expected without any modifications in the presence of aliasing.
- Each proximal ring can be configured in accordance with (potentially different) ring parameters.
- Ring parameters can be used to define a neighborhood (e.g., ring parameters can represent a neighborhood range, a neighborhood size, ping message and depart message timing and distribution patterns for ping and depart messages), indicate a particular federating mechanisms (e.g., from among the above-described first through fourth federating mechanisms previously described or from among other federating mechanisms), or define communication specifics between routing partners in the same proximal ring.
- Some ring parameters may be more general, applying to a plurality of different federating mechanisms, while other ring parameters are more specific and apply to specific type of federating mechanism.
- Ring parameters used to configure a higher level proximal ring can be inherited in some embodiments by lower level proximal rings. For example, it may be that ring 543 inherits some of the ring parameters of ring 531 (which in turn inherited from ring 522 , etc.). Thus, a neighborhood size and neighborhood range associated with ring 531 is also associated with ring 541 .
- inherited ring parameters can be altered and/or proximal rings can be individually configured in accordance with different ring parameters.
- ring 511 is for an administrative domain that contains a large number of nodes and thus the above-described fourth federating mechanism is more appropriate for ring 511 .
- ring 521 is for a small business with a relatively smaller number of nodes and thus the above-described second federating mechanism is more appropriate for ring 521 .
- the ring parameters associated with ring 521 can be set to (or inherited parameters changed to) different values than the ring parameters associated with ring 511 .
- a ring parameter indicating a particular type of federating mechanisms can be different between rings 511 and 521 .
- parameters defining a neighborhood can be different between rings 511 and 521 .
- ring 521 can be configured in accordance with specific parameters that are specific to the above-described second federating mechanism, while ring 511 is configured in accordance additional with specific parameters that are specific to the above-described fourth federating mechanism.
- proximal rings can be flexibly configured based on the characteristics (e.g., number, included resources, etc.) of nodes in the proximal rings. For example, an administrator can select ring parameters for proximal rings using a configuration procedure (e.g., through a user-interface).
- a configuration procedure can facilitate the configuration of inheritance relationships between proximal rings as well as the configuration of individual proximal rings, such as, for example, to override otherwise inherited ring parameters.
- FIG. 8 illustrates an example flow chart of a method 800 for partitioning the nodes of a federation infrastructure.
- the method 800 will be described with respect to the rings of partition a tree 500 in FIG. 5 .
- Method 800 includes an act of accessing a sorted linked list containing node IDs that have been assigned to nodes in a federation infrastructure (act 801 ).
- the sorted linked list represented by ring 501 can be accessed.
- the node IDs of the sorted linked list (the nodes depicted on ring 501 ) can represent nodes in a federation infrastructure (e.g., federation infrastructure 100 ).
- Method 800 includes an act of accessing proximity categories that represent a plurality of different proximity criteria for partitioning the sorted linked list (act 802 ). For example, proximity criterion representing domain boundaries 561 , geographical boundaries 562 , and organizational boundaries 563 can be accessed. However, other proximity criteria, such as, trust domain boundaries, can also be represented in accessed proximity criterion. Proximity categories can include previously created partially ordered lists of proximity criteria. A ring can be partitioned based on partially ordered lists of proximity criteria.
- Method 800 includes an act of partitioning the sorted link list into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list (act 803 ).
- ring 501 can be partitioned into sub-rings 511 , 512 , 513 , and 514 based on criterion 571 .
- Each of sub-rings 511 , 512 , 513 , and 514 can contain a different sub-set of node IDs from ring 501 .
- Method 800 includes an act of partitioning a first sub list, selected from among the one or more first sub lists, into one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list (act 804 ).
- sub-ring 511 can be partitioned into sub-rings 521 , 522 , and 523 based on criterion 581 .
- Each of the sub-rings 521 , 522 , and 523 can contain a different sub-set of node IDs from sub-ring 511 .
- FIG. 9 illustrates an example flow chart of a method 900 for populating a node's routing table.
- the method 900 will be described with respect to the sorted linked list 304 and ring 306 in FIG. 3 .
- Method 900 includes an act of inserting a predecessor node into a routing table, the predecessor node preceding a current node relative to the current node in a first direction of a sorted linked list (act 901 ).
- the node having ID 50 can be inserted into the routing table as a predecessor for the node having ID 64 (the current node). Moving in a clockwise direction 321 (from end A of sorted linked list 304 towards end B of sorted linked list 304 ), the node having ID 50 precedes the node having ID 64 .
- Inserting a predecessor node can establish a symmetric partnership between the current node and the predecessor node such that current node is a partner of predecessor node and the predecessor node is a partner of the current node
- Method 900 includes an act of inserting a successor node into the routing table, the successor node succeeding the current node relative to the current node in the first direction in the sorted linked list (act 902 ).
- the node having ID 76 can be inserted into the routing table as a successor for the node having ID 64 (the current node). Moving in a counter-clockwise direction 322 , the node having ID 76 succeeds the node having ID 64 .
- Inserting a successor node can establish a symmetric partnership between the current node and the successor node such that current node is a partner of the successor node and the successor node is a partner of the current node.
- Method 900 includes an act of inserting appropriate neighborhood nodes into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a neighborhood range and neighborhood size (act 903 ).
- the nodes having IDs 83 , 76 , 50 , and 46 can be inserted into the routing table as neighborhood nodes for the node having ID 64 (the current node).
- the nodes having IDs 83 and 76 can be identified in clockwise direction 321 and the nodes having IDs 50 and 46 can be identified in counter-clockwise direction 322 (moving from end B of sorted linked list 304 towards end A of sorted linked list 304 ).
- Inserting a neighborhood node can establish a symmetric partnership between the current node and the neighborhood node such that current node is a partner of the neighborhood node and the neighborhood node is a partner of the current node.
- Method 900 includes an act of inserting appropriate routing nodes into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the a number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions (act 904 ).
- the nodes having IDs 200 , 2 , 30 , 46 , 50 , 64 , 64 , 64 , 64 , 64 , 64 76 , 83 , 98 , 135 and 200 can be inserted into the routing table as routing nodes for the node having ID 64 .
- the nodes having IDs 64 , 64 , 76 , 83 , 98 , 135 and 200 can be identified in direction 321 and the nodes having IDs 64 , 64 , 50 , 46 , 30 , 2 , and 200 can be identified in direction 322 .
- the routing nodes represent a logarithmic index of the sorted link list 304 in both clockwise direction 321 and counter-clockwise direction 322 . Inserting a routing node can establish a symmetric partnership between the current node and the routing node such that current node is a partner of the routing node and the routing node is a partner of the current node.
- FIG. 7 illustrates an example flow chart of a method 700 for populating a node routing table that takes proximity criteria into account.
- the method 700 will be described with respect to the rings in FIG. 5 .
- Method 700 includes an act of inserting a predecessor node for each hierarchically partitioned routing ring the current node participates in into a routing table (act 701 ).
- Each predecessor node precedes the current node in a first direction (e.g., clockwise) within each hierarchically partitioned routing ring the current node participates in.
- the hierarchically partitioned routing rings are partitioned in accordance with corresponding proximity criteria and contain at least subsets of a bi-directionally linked list (and possibly the whole bi-directionally linked list).
- a specified node participates in root ring 501 and sub-rings 511 , 522 , 523 , 531 , and 542 .
- a predecessor node is selected for the specified node from within each of the rings 501 and sub-rings 511 , 522 , 523 , 531 , and 542 .
- Method 700 includes an act of inserting a successor node for each hierarchically partitioned routing ring the current node participates in into the routing table (act 702 ).
- a successor node is selected for the specified node from within each of the rings 501 and sub-rings 511 , 522 , 523 , 531 , and 542 .
- Method 700 includes an act of inserting appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in into the routing table (act 703 ).
- the neighborhood nodes can be identified in both the first direction (e.g., clockwise) and in a second opposite direction (e.g., counter clockwise) based on a neighborhood range and neighborhood size from the hierarchically partitioned routing rings the current node participates in.
- neighborhood nodes can be identified for the specified node from within each of the rings 501 and sub-rings 511 , 522 , 523 , 531 , and 542 .
- Method 700 includes an act of inserting appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in into the routing table (act 704 ).
- routing nodes can be identified for the specified node from within each of the rings 501 and sub-rings 511 , 522 , 523 , 531 , and 542 .
- appropriate routing nodes are inserted for each proximity ring d except the leaf ring (or leaf rings in embodiments that utilize aliasing), in which the node Y participates.
- Appropriate routing nodes can be inserted based on the following expression(s):
- ring d is the proximity ring in which node Y should look for the routing partner closest to z.
- FIG. 10 illustrates an example flow chart of a 1000 method for routing a message towards a destination node.
- the method 1000 will be described with respect to the sorted linked list 304 and ring 306 in FIG. 3 .
- Method 1000 includes an act of a receiving node receiving a message along with a number indicating a destination (act 1001 ).
- the node having ID 64 can receive a message indicating a destination of 212 .
- Method 1000 includes an act of determining that the receiving node is at least one of numerically further from the destination than a corresponding predecessor node and numerically further from the destination than a corresponding successor node (act 1002 ). For example, in direction 322 , ID 64 is further from destination 212 than ID 50 and, in direction 321 , ID 64 is further from destination 212 than ID 76 .
- Method 1000 includes an act of determining that the destination is not within a neighborhood set of nodes corresponding to the receiving node (act 1003 ). For example, the node with ID 64 can determine that destination 212 is not within the neighborhood set of 83 , 76 , 50 , and 46 .
- the method 1000 includes an act of identifying an intermediate node from a routing table corresponding to the receiving node, the intermediate node being numerically closer to the destination than other routing nodes in the corresponding routing table (act 1004 ).
- the node having ID 64 can identify the routing node having ID 200 as being numerically closer to destination 212 that other routing nodes.
- the method 1000 includes an act of sending the message to the intermediate node (act 1005 ).
- the node having ID 64 can send the message to the node having ID 200 .
- FIG. 11 illustrates an example flow chart of a method 1100 for routing a message towards a destination node based on proximity criteria.
- the method 1100 will be described with respect to the rings in FIG. 4 and FIG. 5 .
- Method 1100 includes an act of a receiving node receiving a message along with a number indicating a destination and a proximity criterion (act 1101 ).
- the proximity criterion defines one or more classes of nodes.
- the receiving node receives the message as part of a current class of nodes selected from among the one or more classes of nodes based on the proximity criterion.
- the node having ID 172 can receive a message indicating a destination of 201 and proximity criterion indicating that the destination node be part of classes represented by ring 401 .
- the node having ID 172 can receive the message as part of ring 404 .
- Method 1100 includes an act of determining that the receiving node is at least one of, numerically further from the destination than a corresponding predecessor node and numerically further from the destination than a corresponding successor node, among nodes in a selected class of nodes (act 1102 ). For example, within ring 404 , the node with ID 172 is further from destination 201 than the node having ID 174 in the clockwise direction and is further from destination 201 than the node having ID 153 in the counterclockwise direction.
- Method 1100 includes an act of determining that the destination is not within the receiving node's neighborhood set of nodes for any of the one or more classes of nodes defined by the proximity criterion (act 1103 ). For example, the node having ID 172 can determine that destination 201 is not in a corresponding neighborhood set in ring 404 or in ring 401 .
- Method 1100 includes an act of identifying an intermediate node from the receiving node's routing table, the intermediate node being numerically closer to the destination than other routing nodes in the routing table (act 1104 ).
- the node having ID 172 can identify the node having ID 194 as being numerically closer to destination 201 than other routing nodes in ring 404 .
- the method 1100 includes an act of sending the message to the intermediate node (act 1105 ).
- the node having ID 172 can send the received message to the node having ID 194 .
- the node having ID 172 can send the received message to the node having ID 194 to honor a previously defined partially ordered list of proximity criterion
- Node 194 may be as close to destination 201 as is possible within ring 404 .
- proximity can be relaxed just enough to enable further routing towards the destination to be made in ring 401 in the next leg. That is, routing is transitioned from ring 404 to ring 401 since no further progress towards the destination can be made on ring 404 .
- it may be that the node having ID 201 is within the neighborhood of the node having ID 194 in ring 401 resulting in no further routing.
- relaxing proximity criteria to get to the next higher ring is enough to cause further routing.
- FIG. 6 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented.
- the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by computer systems.
- program modules include routines, programs, objects, components, data structures, and the like, which perform particular tasks or implement particular abstract data types.
- Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing acts of the methods disclosed herein.
- an example system for implementing the invention includes a general-purpose computing device in the form of computer system 620 , including a processing unit 621 , a system memory 622 , and a system bus 623 that couples various system components including the system memory 622 to the processing unit 621 .
- Processing unit 621 can execute computer-executable instructions designed to implement features of computer system 620 , including features of the present invention.
- the system bus 623 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- the system memory includes read only memory (“ROM”) 624 and random access memory (“RAM”) 625 .
- a basic input/output system (“BIOS”) 626 containing the basic routines that help transfer information between elements within computer system 620 , such as during start-up, may be stored in ROM 624 .
- the computer system 620 may also include magnetic hard disk drive 627 for reading from and writing to magnetic hard disk 639 , magnetic disk drive 628 for reading from or writing to removable magnetic disk 629 , and optical disk drive 630 for reading from or writing to removable optical disk 631 , such as, or example, a CD-ROM or other optical media.
- the magnetic hard disk drive 627 , magnetic disk drive 628 , and optical disk drive 630 are connected to the system bus 623 by hard disk drive interface 632 , magnetic disk drive-interface 633 , and optical drive interface 634 , respectively.
- the drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules, and other data for the computer system 620 .
- magnetic hard disk 639 removable magnetic disk 629 and removable optical disk 631
- other types of computer readable media for storing data can be used, including magnetic cassettes, flash memory cards, digital versatile disks, Bernoulli cartridges, RAMs, ROMs, and the like.
- Program code means comprising one or more program modules may be stored on hard disk 639 , magnetic disk 629 , optical disk 631 , ROM 624 or RAM 625 , including an operating system 635 , one or more application programs 636 , other program modules 637 , and program data 638 .
- a user may enter commands and information into computer system 620 through keyboard 640 , pointing device 642 , or other input devices (not shown), such as, for example, a microphone, joy stick, game pad, scanner, or the like. These and other input devices can be connected to the processing unit 621 through input/output interface 646 coupled to system bus 623 .
- Input/output interface 646 logically represents any of a wide variety of different interfaces, such as, for example, a serial port interface, a PS/2 interface, a parallel port interface, a Universal Serial Bus (“USB”) interface, or an Institute of Electrical and Electronics Engineers (“IEEE”) 1394 interface (i.e., a FireWire interface), or may even logically represent a combination of different interfaces.
- a monitor 647 or other display device is also connected to system bus 623 via video interface 648 .
- Speakers 669 or other audio output device is also connected to system bus 623 via audio interface 649 .
- Other peripheral output devices (not shown), such as, for example, printers, can also be connected to computer system 620 .
- Computer system 620 is connectable to networks, such as, for example, an office-wide or enterprise-wide computer network, a home network, an intranet, and/or the Internet.
- Computer system 620 can exchange data with external sources, such as, for example, remote computer systems, remote applications, and/or remote databases over such networks.
- Computer system 620 includes network interface 653 , through which computer system 620 receives data from external sources and/or transmits data to external sources. As depicted in FIG. 6 , network interface 653 facilitates the exchange of data with remote computer system 683 via link 651 .
- Network interface 653 can logically represent one or more software and/or hardware modules, such as, for example, a network interface card and corresponding Network Driver Interface Specification (“NDIS”) stack.
- Link 651 represents a portion of a network (e.g., an Ethernet segment), and remote computer system 683 represents a node of the network.
- computer system 620 includes input/output interface 646 , through which computer system 620 receives data from external sources and/or transmits data to external sources.
- Input/output interface 646 is coupled to modem 654 (e.g., a standard modem, a cable modem, or digital subscriber line (“DSL”) modem) via link 659 , through which computer system 620 receives data from and/or transmits data to external sources.
- modem 654 e.g., a standard modem, a cable modem, or digital subscriber line (“DSL”) modem
- DSL digital subscriber line
- input/output interface 646 and modem 654 facilitate the exchange of data with remote computer system 693 via link 652 .
- Link 652 represents a portion of a network and remote computer system 693 represents a node of the network.
- FIG. 6 represents a suitable operating environment for the present invention
- the principles of the present invention may be employed in any system that is capable of, with suitable modification if necessary, implementing the principles of the present invention.
- the environment illustrated in FIG. 6 is illustrative only and by no means represents even a small portion of the wide variety of environments in which the principles of the present invention may be implemented.
- nodes, application layers, and other lower layers, as well as associated data, including routing tables and node IDs may be stored and accessed from any of the computer-readable media associated with computer system 620 .
- portions of such modules and portions of associated program data may be included in operating system 635 , application programs 636 , program modules 637 and/or program data 638 , for storage in system memory 622 .
- a mass storage device such as, for example, magnetic hard disk 639
- modules and associated program data may also be stored in the mass storage device.
- program modules depicted relative to computer system 620 can be stored in remote memory storage devices, such as, system memory and/or mass storage devices associated with remote computer system 683 and/or remote computer system 693 . Execution of such modules may be performed in a distributed environment as previously described.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
The present invention extends to methods, systems, and computer program products for rendezvousing resource requests with corresponding resources. Doubly linked sorted lists are traversed using modulo arithmetic in both directions. Sorted lists can be partitioned based on a multiple proximity metrics. Node routing tables provide a logarithmic index to nodes within the ID space of the federation infrastructure to facilitate more efficient routing. Messages can be routed to nodes within a ring and proximally routed to nodes in other partitioned rings.
Description
- This application is a continuation of U.S. patent application Ser. No. 10/971,451, filed Oct. 22, 2004, and entitled “Rendezvousing Resource Requests with Corresponding Resources,” which is herein incorporated by reference in its entirety.
- 1. The Field of the Invention
- The present invention relates to accessing resources and, more particularly, to rendezvousing resource requests with corresponding resources.
- 2. Background and Relevant Art
- Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include electronic communication between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
- However, to utilize a network resource to perform a computerized task, a computer system must have some way to identify and access the network resource. Accordingly, resources are typically assigned unique identifiers, for example, network addresses, that uniquely identify resources and can be used to distinguish one resource from other resources. Thus, a computer system that desires to utilize a resource can connect to the resource using the network address that corresponds to the resource. However, accessing a network resource can be difficult if a computer system has no prior knowledge of a network address for a network resource. For example, a computer system can not print a document at a network printer unless the computer system (or another networked computer system) knows the network address of the network printer.
- Accordingly, various mechanisms (e.g., Domain Name System (“DNS”), Active Directory (“AD”), Distributed File Systems (“DFS”)) have been developed for computer systems to identify (and access) previous unknown resources. However, due to the quantity and diversity of resources (e.g., devices and services) that are accessible via different computer networks, developers are often required to develop applications that implement a variety of different resource identification and access mechanisms. Each different mechanism may have different coding requirements and may not provide a developer with all the functionality that is needed in an application.
- For example, although DNS has a distributed administration architecture (i.e., centralized management is not required), DNS is not sufficiently dynamic, not self-organizing, supports a weak data and query model, and has a fixed set of roots. On the other hand, AD is sufficiently dynamic but requires centralized administration. Further, aspects of different mechanisms may not be compatible with one another. For example, a resource identified using DNS may not be compatible with DFS routing protocols. Thus, a developer may be forced to choose the most suitable mechanism and forgo the advantages of other mechanisms.
- Mechanisms for identifying resources can be particularly problematic in peer-to-peer networks. DNS provides a lookup service, with host names as keys and IP addresses as values, that relies on a set of special root servers to implement lookup requests. Further, DNS requires management of information (NS records) for allowing clients to navigate the name server hierarchy. Thus, a resource must be entered into DNS before the resource can be identified on a network. On larger scale networks where nodes frequently connect and disconnect form the network relying on entry of information is not always practical. Additionally, DNS is specialized to the task of find hosts or services and is not generally applicable to other types of resources.
- Accordingly, other mechanisms for resource identification and access have been developed to attempt to address these shortcomings. A number of mechanisms include distributed lookup protocols that are more scalable than DNS. These mechanisms use various node arrangements and routing algorithms to route requests to corresponding resources and to store information for lookup.
- At least one of these mechanisms utilizes local multi-level neighbor maps at each node in a network to route messages to a destination node. This essentially results in an architecture where each node is a “root node” of a corresponding tree of nodes (the nodes in its neighbor map). Messages are incrementally routed to a destination ID digit by digit (e.g., ***6=>**46=>, *346=>2346, where *s represent wildcards). The routing efficiency of these types of mechanisms is O (log N) routing hops and require nodes to maintain a routing table of O (log N) size.
- At least one other of these mechanisms assigns nodes a unique ID that is taken from a linear ring of numbers. Nodes maintain routing tables that contain pointers to their immediate successor node (according to ID value) and to those nodes whose ID values are the closest successor of the value ID+2L. The routing efficiency of these types of mechanisms is also O (log N) routing hops and require nodes to maintain a routing table of O (log N) size.
- At least one further mechanisms requires O (log N1/d) routing hops and requires nodes to maintain a routing table of O (D) size. Thus, the routing efficiency of all of these mechanisms depends, at least in part, on the number of nodes in the system.
- Further, since IDs (for at least some of the mechanisms) can be uniformly distributed around a ring, there is always some possibility that routing between nodes on the ring will result in some inefficiency. For example, routing hops can cross vast geographic distances, cross more expensive links, or pass through insecure domains, etc. Additionally, when message routing involves multiple hops, there is some chance that such events will occur multiple times. Unfortunately, these mechanisms do not take into account the proximity of nodes (physical or otherwise) with respect one another. For example, depending on node distribution on a ring, routing a message from New York to Boston could involve routing the message from New York, to London, to Atlanta, to Tokyo, and then to Boston.
- Accordingly, at least one other more recent mechanism takes proximity into account by defining proximity as a single scalar proximity metric (e.g., IP routing hops or geographic distance). These mechanisms use the notion of proximity-based choice of routing table entries. Since there are many “correct” node candidates for each routing table entry, these mechanisms attempt to select a proximally close node from among the candidate nodes. For these mechanisms can provide a function that allows each node to determine the “distance” of a node with a given IP address to itself. Messages are routed between nodes in closer proximity to make progress towards a destination before routing to a node that is further away. Thus, some resources can be conserved and routing is more efficient.
- Unfortunately, these existing mechanisms typically do not provide for, among other things, symmetric relationships between nodes (i.e., if a first node considers a second node to be its partner, the second node considers the first node as a partner as well), routing messages in both directions (clockwise and counterclockwise) on a ring, partitioning linked lists of nodes based on a plurality of proximity metrics, and routing messages based on a plurality of proximity metrics proximity. Therefore systems, methods, computer program products that utilize these mechanisms to rendezvous resource requests with a corresponding resource would be advantageous.
- The foregoing problems with the prior state of the art are overcome by the principles of the present invention, which are directed towards methods, systems, and computer program products for rendezvousing resource requests with corresponding resources. In some embodiments, the nodes of a federation infrastructure are partitioned. A sorted linked list containing node IDs that have been assigned to nodes in the federation infrastructure is accessed. Proximity categories that represent a plurality of different proximity criterion for partitioning the sorted link list are accessed. The sorted linked list is partitioned into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list. A first sub list, selected from among the one or more first sub lists, is partitioned in to one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list.
- In other embodiments, for example as depicted in
FIG. 3 , a node routing table is populated. An immediate predecessor node is inserted into the routing table. An immediate successor node is inserted into the routing table. Appropriate neighborhood node identifiers are inserted into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a predetermined or estimated neighborhood range and neighborhood size. Appropriate routing nodes identifiers are inserted into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions. - In yet other embodiments, a node routing table can be populated taking proximity criteria in to account. A predecessor node for each hierarchically partitioned routing ring the current node participates in is inserted into a routing table, each hierarchically partitioned routing ring being partitioned in accordance with corresponding proximity criteria and containing at least subsets of the bi-directional linked list of a parent ring. A successor node for each hierarchically partitioned routing ring the current node participates is inserted into the routing table. Appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table. Appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- In further other embodiments, a message is routed, potentially based on one or more proximity criteria defining a corresponding one or more classes of nodes, towards a destination node. A receiving node receives a message along with a destination number indicating a destination node and optionally one or more proximity criteria. The receiving node, potentially among nodes in a current class of nodes, determines it is at least one of numerically further from the destination number than a corresponding predecessor node and numerically further from the destination number than a corresponding successor node. It is determined that the destination is not in a neighborhood set of nodes, potentially among nodes in the current class of nodes, corresponding to the receiving node.
- An intermediate node from a routing table corresponding to the receiving node is identified, the intermediate node being numerically closer to the destination number than other routing nodes in the corresponding routing table. The message is sent to the intermediate node. The intermediate node can continue routing the message. The message eventually reaches the destination node when a node that receives the message is numerically closer to the destination number than either its successor or predecessor nodes. In embodiments that route based on one or more proximity criteria, this numerical closeness may be with respect to nodes in a selected class of nodes.
- Thus, routing a message based on proximity criteria includes routing to a destination node (ID) by progressively moving closer to the destination node within a given proximal ring (class of nodes) until no further progress can be made by routing within that ring. Determining that no further progress can be made occurs when the destination number lies between the current node's ID and its successor or predecessor nodes' IDs. At this point, the current node starts routing via its partner nodes in the next larger proximal ring in which it participates. This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the destination node is reached.
- These and other objects and features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
- To further clarify the above and other advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
-
FIG. 1 illustrates an example of a federation infrastructure. -
FIG. 2 illustrates an example of a computer architecture that facilitates routing request indirectly to partners. -
FIG. 3 illustrates an example binary relationship between nodes in a federation infrastructure in the form of a sorted list and corresponding ring. -
FIG. 4 illustrates an example ring of rings that facilitates proximal routing. -
FIG. 5 illustrates an example proximity induced partition tree of rings that facilitates proximal routing. -
FIG. 6 illustrates a suitable operating environment for the principles of the present invention. -
FIG. 7 illustrates an example flow chart of a method for populating a node routing table that takes proximity criteria into account -
FIG. 8 illustrates an example flow chart of a method for partitioning the nodes of a federation infrastructure. -
FIG. 9 illustrates an example flow chart of a method for populating a node routing table. -
FIG. 10 illustrates an example flow chart of a method for numerically routing a message towards a destination node. -
FIG. 11 illustrates an example flow chart of a method for proximally routing a message towards a destination node. - The foregoing problems with the prior state of the art are overcome by the principles of the present invention, which are directed towards methods, systems, and computer program products for rendezvousing resource requests with corresponding resources. In some embodiments, the nodes of a federation infrastructure are partitioned. A sorted linked list containing node IDs that have been assigned to nodes in the federation infrastructure is accessed. Proximity categories that represent a plurality of different proximity criterion for partitioning the sorted link list are accessed. The sorted linked list is partitioned into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list. A first sub list, selected from among the one or more first sub lists, is partitioned in to one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list.
- In other embodiments, for example as depicted in
FIG. 3 , a node routing table is populated. An immediate predecessor node is inserted into the routing table. An immediate successor node is inserted into the routing table. Appropriate neighborhood node identifiers are inserted into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a predetermined or estimated neighborhood range and neighborhood size. Appropriate routing nodes identifiers are inserted into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions. - In yet other embodiments, a node routing table can be populated taking proximity criteria in to account. A predecessor node for each hierarchically partitioned routing ring the current node participates in is inserted into a routing table, each hierarchically partitioned routing ring being partitioned in accordance with corresponding proximity criteria and containing at least subsets of the bi-directional linked list of a parent ring. A successor node for each hierarchically partitioned routing ring the current node participates is inserted into the routing table. Appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table. Appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in are inserted into the routing table.
- In further other embodiments, a message is routed, potentially based on one or more proximity criteria defining a corresponding one or more classes of nodes, towards a destination node. A receiving node receives a message along with a destination number indicating a destination node and optionally one or more proximity criteria. The receiving node, potentially among nodes in a current class of nodes, determines it is numerically further from the destination number than a corresponding predecessor node and numerically further from the destination number than a corresponding successor node. It is determined that the destination is not in a neighborhood set of nodes, potentially among nodes in the current class of nodes, corresponding to the receiving node.
- An intermediate node from a routing table corresponding to the receiving node is identified, the intermediate node being numerically closer to the destination number than other routing nodes in the corresponding routing table. The message is sent to the intermediate node. The intermediate node can continue routing the message. The message eventually reaches the destination node when a node that receives the message is numerically closer to the destination number than either its successor or predecessor nodes. In embodiments that route based on one or more proximity criteria this numerical closeness may be with respect to nodes in a selected class of nodes.
- Thus, routing a message based on proximity criteria includes routing to a destination node (ID) by progressively moving closer to the destination node within a given proximal ring (class of nodes) until no further progress can be made by routing within that ring. Determining that no further progress can be made occurs when the destination number lies between the current node's ID and its successor or predecessor nodes' IDs. At this point, the current node starts routing via its partner nodes in the next larger proximal ring in which it participates. This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the destination node is reached.
- Embodiments within the scope of the present invention include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media may be any available media, which is accessible by a general-purpose or special-purpose computer system. By way of example, and not limitation, such computer-readable media can comprise physical storage media such as RAM, ROM, EPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other media which can be used to carry or store desired program code means in the form of computer-executable instructions, computer-readable instructions, or data structures and which may be accessed by a general-purpose or special-purpose computer system.
- In this description and in the following claims, a “network” is defined as one or more data links (of possibly different speeds) that enable the transport of electronic data between computer systems and/or modules (e.g., hardware and/or software modules). When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer system, the connection is properly viewed as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a general-purpose computer system or special-purpose computer system to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. In some embodiments, hardware modules, such as, for example, special purpose integrated circuits or Gate-arrays are optimized to implement the principles of the present invention.
- In this description and in the following claims, a “node” is defined as one or more software modules, one or more hardware modules, or combinations thereof, that work together to perform operations on electronic data. For example, the definition of a node includes the hardware components of a personal computer, as well as software modules, such as the operating system of the personal computer. The physical layout of the modules is not important. A node can include one or more computers coupled via a network. Likewise, a node can include a single physical device (such as a mobile phone or Personal Digital Assistant “PDA”) where internal modules (such as a memory and processor) work together to perform operations on electronic data. Further, a node can include special purpose hardware, such as, for example, a router that includes special purpose integrated circuits.
- Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of node configurations, including, personal computers, laptop computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, gateways, brokers, proxies, firewalls, redirectors, network address translators, and the like. The invention may also be practiced in distributed system environments where local and remote nodes, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
- Federation Architecture
-
FIG. 1 illustrates an example of afederation infrastructure 100. Thefederation infrastructure 100 includesnodes nodes nodes corresponding ID - Generally, the
nodes nodes node 101 andnode 103, can be pass through one or more of the other intermediary nodes. - Nodes in federation infrastructure 100 (including other intermediary nodes) can include corresponding rendezvous protocol stacks. For example,
nodes lower layers - For example, other lower layers can include a channel layer, a routing layer, and a function layer. Generally, a channel layer is responsible for reliably transporting a message (e.g., using WS-ReliableMessaging and Simple Object Access Protocol (“SOAP”)) from one endpoint to another (e.g., from
node 101 to node 103). The channel layer is also responsible for processing incoming and outgoing reliable messaging headers and maintaining state related to reliable messaging sessions. - Generally, a routing layer is responsible for computing the next hop towards a destination. The routing layer is also responsible for processing incoming and outgoing addressing and routing message headers and maintaining routing state. Generally, a function layer is responsible for issuing and processing rendezvous protocol messages such as join and depart requests, pings, updates, and other messages, as well as generation of responses to these messages. The function layer processes request messages from the routing layer and sends back corresponding response messages, if any, to the originating node using the routing layer. The function layer also initiates request messages and utilizes the routing layer to have the requests messages delivered.
- Generally, an application layer processes non-rendezvous protocol specific data delivered from the function layer (i.e., application messages). The function layer can access application data from the application layer and get and put application data in rendezvous protocol messages (e.g., pings and updates). That is, the function layer can cause application data to be piggybacked on rendezvous protocol messages and can cause the application data to be passed back to the application layer in receiving rendezvous protocol nodes. In some embodiments, application data is used to identify resources and resource interests. Thus, an application layer can include application specific logic and state that processes data received from and sent to the other lower layers for purposes of identifying resources and resource interests.
- Federating Mechanisms
- Nodes can federate using a variety of different mechanisms. A first federating mechanism includes peer nodes forwarding information to all other peer nodes. When a node is to join a federation infrastructure, the node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a broadcast/multicast find to detect other nodes. The node then establishes a simple forwarding partnership with other nodes already present on the network and accepts new partnerships with newly joining nodes. Thereafter, the node simply forwards all application specific messages to all of its partner nodes.
- A second federating mechanism includes peer nodes that most efficiently transmit application specific messages to their destination(s). When a new node is to join a federation infrastructure, the new node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a broadcast/multicast find to detect other nodes that are part of the federation infrastructure. Upon detecting another node, the new node establishes a partnership with the other node. From the established partnership, the new node learns about the presence of other nodes already participating in federation infrastructure. It then establishes partnerships with these newly-learned nodes and accepts any new incoming partnership requests.
- Both node arrivals/departures and registrations of interest in certain application specific messages are flooded through the federation infrastructure resulting in every node having global knowledge of other partner nodes and registrations of interest in application specific messages. With such global knowledge, any node can send application specific messages directly to the nodes that have expressed interest in the application specific message.
- A third federating mechanism includes peer nodes indirectly forwarding all application specific messages to their destination/s. In this third mechanism, nodes are assigned identifiers (ID's), such as, for example, a 128-bit or 160-bit ID. The node responsible for a maintaining registration of interest in a given application specific message can be determined to be the one whose ID is closest to the one obtained by mapping (e.g., hashing) the destination identity (e.g. URI) of the application specific message to this 128-bit or 160-bit ID-space.
- In this third mechanism, node arrivals and departures are flooded over the entire fabric. On the other hand, registrations of interest in certain application specific messages are forwarded to the nodes determined to be responsible for maintaining such registration information. For scalability, load balancing, and fault-tolerance, the node receiving registration of interest in certain application specific messages can reliably flood that registration information within its neighborhood set. The neighborhood set for a specified node can be determined to be the set of nodes having IDs within a predefined range on either side of the ID of specified node.
- Similar to the second mechanism, a newly-joining node utilizes a broadcast/multicast discovery protocol, such as, for example, WS-Discovery to announce its presence and issues a local broadcast/multi-cast find to detect a node that is already part of the federation infrastructure. The new node establishes a partnership with the discovered node and uses that partnership to learn about the presence of other new nodes participating in the federation infrastructure. The new node then establishes further partnerships with the newly discovered nodes and accepts any new incoming partnership requests. The new node accepts incoming registrations of interest in certain application layer specific resources from its partners for which it is responsible and may flood them over its neighborhood set. Thus, messages can generally be forwarded to their final destination via intermediary routing nodes (e.g., that a newly joining node has partnered with or that a partner node is aware of).
- In response to receiving an incoming application specific message, the new node forwards the message to the partner node that may be responsible for maintaining the registration information for the destination specified in the message. Thus, when using this third mechanism, every node in the federation infrastructure has global knowledge of all other nodes but the registration information is efficiently partitioned among the nodes. Application specific messages are transmitted to their final destination via only the partner's nodes that may have the responsibility for maintaining registration information of interest in those application specific messages. Thus, indirection is accomplished by forwarding only to the partner node that has global knowledge of the registration information of interest for the message being processed. This is in contrast to the first mechanism where the indirection is accomplished by forwarding to all the partner nodes.
- A fourth federating mechanism includes peer nodes that route messages to other peer nodes. This fourth mechanism differs from the third mechanism at least in that both node arrivals/departures and registrations of interest in certain application specific messages are all routed instead being flooded. Routing protocols are designed to guarantee rendezvous between application specific messages and the registration messages that express interest in those application specific messages.
-
FIG. 2 illustrates an example of acomputer architecture 200 that facilitates routing requests indirectly to partners.Computer architecture 200 depicts different types of computer systems and devices potentially spread across multiple local discovery scopes participating in a federation infrastructure. -
Workstation 233 can include a registered PnP provider instance. To inform its partners of the presence of this PnP provider instance,workstation 233routes registration request 201 over the federation infrastructure.Registration request 201 is initially forwarded tolaptop 231, which in turnforwards registration request 201 tomessage broker 237, which in turnforwards registration request 201 tomessage gateway 241.Message gateway 241 saves the registrationinformation registration request 201 in its database and returns success message 204 toworkstation 233. - Subsequently, another registered provider instance, this time that of running services, comes alive within the
workstation 233. This time the node is aware thatmessage gateway 241 is responsible for registrations andforwards registration request 205 tomessage gateway 241 directly.Message gateway 241 saves the registrationinformation registration request 205 in its database and returnssuccess message 206 toworkstation 233. - Subsequently, the printer 236 (e.g., a UPnP printer) is powered on and sends
announcement 207.Server 234 detectsannouncement 207 androutes registration request 208 tomessage broker 237.Message broker 237forwards registration request 208 tomessage gateway 241.Message gateway 241 saves the registrationinformation registration request 208 in its database and returnssuccess message 210 toserver 234. - Subsequently,
personal computer 242issues lookup request 211 to discover all devices. Sincepersonal computer 242 doesn't know where to forwardlookup request 211, itroutes lookup request 211 throughworkstation 243. As registration and lookup requests are routed to the same destination, the routing protocol essentially guarantees rendezvous between the two requests resulting inworkstation 243 forwards findrequest 211 tomessage gateway 241.Message gateway 241 looks up the registration information maintained by it and forwards findrequest 211 to both theworkstation 233 andserver 234.Workstation 233 andserver 234send response messages personal computer 242. - This fourth mechanism works by routing (instead of flooding) a request to the node (message gateway 241) that has global knowledge of the registrations specified in a request. This fourth mechanism, as will be described in further detail below, essentially guarantees that routing can be accomplished in O (log N) hops, where N is the number of nodes participating in the federation infrastructure. Since this fourth mechanism efficiently partitions both node partnership and registration information, it scales to very large networks, even the Internet.
- Although a number of federating mechanisms have been described, it would be apparent to one skilled in the art, after having reviewed this description, that other federation mechanisms are possible.
- Relationship Between Nodes in a Federation
- Accordingly, a federation consists of a set of nodes that cooperate among themselves to form a dynamic and scalable network in which information can be systematically and efficiently disseminated and located. Nodes are organized to participate in a federation as a sorted list using a binary relation that is reflexive, anti-symmetric, transitive, total, and defined over the domain of node identities. Both ends of the sorted list are joined, thereby forming a ring. Thus, each node in the list can view itself as being at the middle of the sorted list (as a result of using modulo arithmetic). Further, the list is doubly linked so that any node can traverse the list in either direction.
- Each federating node can be assigned an ID (e.g., by a random number generator with duplicate detection) from a fixed set of IDs between 0 and some fixed upper bound. Thus, adding 1 to an ID of the fixed upper bound results in an ID of zero (i.e., moving from the end of the linked list back to the beginning of the linked listed . In addition, a 1:1 mapping function from the value domain of the node identities to the nodes themselves is defined.
-
FIG. 3 depicts an example linkedlist 304 andcorresponding ring 306. Given such a ring, the following functions can be defined: - RouteNumerically (V, Msg): Given a value V from the value domain of node identities and a message “Msg,” deliver the message to node X whose identity can be mapped to V using the mapping function.
- Neighborhood (X, S): Neighborhood is the set of nodes on the either side of node X with cardinality equal to S.
- When every node in the federation has global knowledge of the ring, RouteNumerically (V, Msg) is implemented by directly sending Msg to the node X, whose identity is obtained by applying the mapping function to V. Alternately, when nodes have limited knowledge of other nodes (e.g., only of immediately adjacent nodes), RouteNumerically (V, Msg) is implemented by forwarding the message to consecutive nodes along the ring until it reaches the destination node X.
- Alternately (and advantageously), nodes can store enough knowledge about the ring to perform a distributed binary search (without having to have global knowledge or implement routing between immediately adjacent nodes). The amount of ring knowledge is configurable such that maintaining the ring knowledge has a sufficiently small impact on each node but allows increased routing performance from the reduction in the number of routing hops.
- As previously described, IDs can be assigned using the “<” (less than) relation defined over a sufficiently large, bounded set of natural numbers, meaning its range is over a finite set of numbers between 0 and some fixed value, inclusive. Thus, every node participating in the federation is assigned a natural number that lies between 0 and some appropriately-chosen upper bound, inclusive. The range does not have to be tight and there can be gaps between numbers assigned to nodes. The number assigned to a node serves as its identity in the ring. The mapping function accounts for gaps in the number space by mapping a number falling in between two node identities to the node whose identity is numerically closest to the number.
- This approach has a number of advantages. By assigning each node a uniformly-distributed number, there is an increased likelihood that all segments of the ring are uniformly populated. Further, successor, predecessor, and neighborhood computations can be done efficiently using modulo arithmetic.
- In some embodiments, federating nodes are assigned an ID from within an ID space so large that the chances of two nodes being assigned the same ID are highly unlikely (e.g., when random number generation is used). For example, a node can be assigned an ID in the range of 0 to bn−1, where b equals, for example, 8 or 16 and n equals, for example, 128-bit or 160-bit equivalent digits. Accordingly, a node can be assigned an ID, for example, from a range of 0 to 1640−1 (or approximately 1.461502E48). The range of 0 to 1640−1 would provide, for example, a sufficient number of IDs to assign every node on the Internet a unique ID.
- Thus, each node in a federation can have:
- An ID which is a numerical value uniformly distributed in the range of 0 to bn−1; and
- A routing table consisting of (all arithmetic is done modulo bn):
- Successor node (s);
- Predecessor node (p);
- Neighborhood nodes (pk, . . . , p1, p, s, s1, . . . , sj) such that sj.s.id>(id+u/2), j≧v/2−1, and pk.p.id<(id−u/2), and k≧v/2−1; and
- Routing nodes (r-(n−1), . . . , r−1, r1, . . . , rn−1) such that r±i=RouteNumerically (id±bi, Msg).
where b is the number base, n is the field size in number of digits, u is the neighborhood range, v is the neighborhood size, and the arithmetic is performed modulo bn. For good routing efficiency and fault tolerance, values for u and v can be u=b and v≧max(log2(N), 4), where N is the total number of nodes physically participating in the federation. N can be estimated from the number of nodes present on a ring segment whose length is greater than or equal to b, for example, when there is a uniform distribution of IDs. Typical values for b and n are b=8 or 16 and n=128-bit or 160-bit equivalent digits.
- Accordingly, routing nodes can form a logarithmic index spanning a ring. Depending on the locations of nodes on a ring, a precise logarithmic index is possible, for example, when there is an existing node at each number in the set of id±bi where i=(1, 2, . . . (n−1)). However, it may be that there are not existing nodes at each number in the set. IN those cases, a node closest to id±bi can be selected as a routing node. The resulting logarithmic index is not precise and may even lack unique routing nodes for some numbers in the set.
- Referring again to
FIG. 3 ,FIG. 3 illustrates an example of a binary relation between nodes in a federation infrastructure in the form of sortedlist 304 andcorresponding ring 306. The ID space of sortedlist 304 is in therange 0 to 28−1 (or 255). That is, b=2 and n=8. Thus, nodes depicted inFIG. 3 are assigned IDs in a range from 0 to 255.Sorted list 304 utilizes a binary relation that is reflexive, anti-symmetric, transitive, total, and defined over the domain of node identities. Both ends of sortedlist 304 are joined, thereby formingring 306. This makes it possible for each node inFIG. 3 to view itself as being at the middle ofsorted list 304. The sortedlist 304 is doubly linked so that any node can traverse the sortedlist 304 in either direction. Arithmetic for traversing sorted list 304 (or ring 306) is performed modulo 28. Thus, 255 (or the end of sorted list 304)+1=0 (or the beginning of sorted list 304). - The routing table indicates that the successor to
ID 64 is ID 76 (the ID immediately clockwise from ID 64). The successor can change, for example, when a new node (e.g., with an ID of 71) joins or an existing node (e.g., ID 76) leaves the federation infrastructure. Likewise, the routing table indicates that the predecessor toID 64 is ID 50 (the ID immediately counters clockwise from ID 64). The predecessor can change, for example, when a new node (e.g., with an ID of 59) joins or an existing node (e.g., ID 50) leaves the federation infrastructure. - The routing table further indicates that a set of neighborhood nodes to
ID 64 haveIDs ID 64. A variety of different neighborhood sizes and neighbor ranges, such as, for example, V=4 and U=10, can potentially be used to identify the set of neighborhood nodes. A neighborhood set can change, for example, when nodes join or leave the federation infrastructure or when the specified number of nodes or specified range is changed. - The routing table further indicates that
ID 64 can route tonodes having IDs node having ID 76 can be identified from calculating the closest node to 64+23, or 72. - A node can route messages (e.g., requests for access to resources) directly to a predecessor node, a successor node, any node in a set of neighborhood nodes, or any routing node. In some embodiments, nodes implement a numeric routing function to route messages. Thus, RouteNumerically (V, Msg) can be implemented at node X to deliver Msg to the node Y in the federation whose ID is numerically closest to V, and return node Y's ID to node X. For example, the
node having ID 64 can implement RouteNumerically (243, Msg) to cause a message to be routed to thenode having ID 250. However, sinceID 250 is not a routing node forID 64,ID 64 can route the message to ID 2 (the closest routing node to 243). Thenode having ID 2 can in turn implement RouteNumerically (243, Msg) to cause the message to be routed (directly or through further intermediary nodes) to thenode having ID 250. Thus, it may be that a RouteNumerically function is recursively invoked with each invocation routing a message closer to the destination. - Advantageously, other embodiments of the present invention facilitate partitioning a ring into a ring of rings or tree of rings based on a plurality of proximity criteria of one or more proximity categories (e.g., geographical boundaries, routing characteristics (e.g., IP routing hops), administrative domains, organizational boundaries, etc.). It should be understood a ring can be partitioned more than once using the same type of proximity criteria. For example, a ring can be partition based on a continent proximity criteria and a country proximity criteria (both of a geographical boundaries proximity category).
- Since IDs can be uniformly distributed across an ID space (a result of random number generation) there is a high probability that any given segment of a circular ID space contains nodes that belong to different proximity classes provided those classes have approximately the same cardinality. The probability increases further when there are a sufficient number of nodes to obtain meaningful statistical behavior.
- Thus, neighborhood nodes of any given node are typically well dispersed from the proximality point of view. Since published application state can be replicated among neighborhood nodes, the published information can be well dispersed as well from the proximality point of view.
-
FIG. 4 illustrates a ring ofrings 400 that facilitates proximal routing.Ring 401 can be viewed as a master or root ring, and contains all the nodes in each of therings rings ring 401 that are partitioned based on a specified proximity criterion. For example,ring 401 may be partitioned based on geographic location, wherering 402 contains nodes in North America,ring 403 contains nodes in Europe, andring 404 contains nodes in Asia. - In a numerical space containing 65,536 (216) IDs, routing a message from a North American node having an
ID 5,345 to an Asian node having an ID 23,345 can include routing the message withinring 402 until a neighbor node of the Asian node is identified. The neighbor node can then route the message to the Asian node. Thus, a single hop (as opposed to multiple hops) is made between a North American node and an Asian node. Accordingly, routing is performed in a resource efficient manner. -
FIG. 5 illustrates an example proximity induced partition tree ofrings 500 that facilitates proximal routing. As depicted, partition tree ofrings 500 includes a number of rings. Each of the rings represents a partition of a sorted linked list. Each ring including a plurality a nodes having IDs in the sorted linked list. However for clarity due to the number of potential nodes, the nodes are not expressly depicted on the rings (e.g., the ID space ofpartition tree 500 may be b=16 and n=40). - Within
partition tree 500,root ring 501 is partitioned into a plurality of sub-rings, including sub-rings 511, 512, 513, and 514, based on criterion 571 (a first administrative domain boundary criterion). For example, each component of a DNS name can be considered a proximity criterion with the partial order among them induced per their order of appearance in the DNS name read right to left. Accordingly, sub-ring 511 can be further partitioned into a plurality of sub-rings, including sub-rings 521, 522, and 523, based on criterion 581 (a second administrative domain boundary criterion). - Sub-ring 522 can be further partitioned into a plurality of sub-rings, including sub-rings 531, 532, and 533, based on criterion 572 (a geographic boundary criterion). Location based proximity criterion can be partially ordered along the lines of continents, countries, postal zip codes, and so on. Postal zip codes are themselves hierarchically organized meaning that they can be seen as further inducing a partially ordered sub-list of proximity criteria.
- Sub-ring 531 can be further partitioned into a plurality of sub-rings, including sub-rings 541, 542, 543, and 544, based on criterion 573 (a first organizational boundary criterion). A partially ordered list of proximity criterion can be induced along the lines of how a given company is organizationally structured such as divisions, departments, and product groups. Accordingly, sub-ring 543 can be further partitioned into a plurality of sub-rings, including
sub-rings - Within
partition tree 500, each node has a single ID and participates in rings along a corresponding partition path starting from the root to a leaf. For example, each node participating insub-ring 552 would also participate insub-rings root 501. Routing to a destination node (ID) can be accomplished by implementing a RouteProximally function, as follows: - RouteProximally (V, Msg, P): Given a value V from the domain of node identities and a message “Msg,” deliver the message to the node Y whose identity can be mapped to V among the nodes considered equivalent by the proximity criteria P.
- Thus, routing can be accomplished by progressively moving closer to the destination node within a given ring until no further progress can be made by routing within that ring as determined from the condition that the destination node lies between the current node and its successor or predecessor node. At this point, the current node starts routing via its partner nodes in the next larger ring in which it participates. This process of progressively moving towards the destination node by climbing along the partitioning path towards the root ring terminates when the closest node to the destination node is reached within the requested proximal context, as originally specified in the RouteProximally invocation.
- Routing hops can remain in the proximal neighborhood of the node that originated the request until no further progress can be made within that neighborhood because the destination node exists outside it. At this point, the proximity criterion is relaxed to increase the size of the proximal neighborhood to make further progress. This process is repeated until the proximal neighborhood is sufficiently expanded to include the destination node (ID). The routing hop made after each successive relaxation of proximal neighborhood criterion can be a potentially larger jump in proximal space while making a correspondingly smaller jump in the numerical space compared to the previous hop. Thus, only the absolutely required number of such (inter-ring) hops is made before the destination is reached.
- It may be the case that some hops are avoided for lookup messages since published application data gets replicated down the partition tree when it is replicated among the neighborhood nodes of the destination node.
- To accomplish proximal routing, each federation node maintains references to its successor and predecessor nodes in all the rings it participates as a member (similar to successor and predecessor for a single ring)—the proximal predecessor, proximal successor, and proximal neighborhood. In order to make the routing efficient, the nodes can also maintain reference to other nodes closest to an exponentially increasing distance on its either half of the ring as routing partners (similar to routing nodes for a single ring). In some embodiments, routing partner nodes that lie between a pair of consecutive successor or predecessor nodes participate in the same lowest ring shared by the current node and the node numerically closest to it among the successor or predecessor node pairs respectively. Thus, routing hops towards a destination node transition into using a relaxed proximity criterion (i.e., transitioning to a higher ring) only when absolutely needed to make further progress. Accordingly, messages can be efficiently rendezvoused with a corresponding federation node.
- In some embodiments, nodes implement a proximal routing function to route messages based on equivalence criteria relations. Thus, given a number V and a message “Msg”, a node can implement RouteProximally (V, Msg, P) to deliver the message to the node Y whose identify can be mapped to V among the nodes considered equivalent by proximity criterion P. The proximity criterion P identifies the lowest ring in the partition tree that is the common ancestor to all the nodes considered proximally equivalent by it. It can be represented as a string obtained by concatenating the proximity criterion found along the path from the root ring to the ring identified by it separated by the path separator character ‘/’. For example, the proximity criterion identifying sub-ring 542 can be represented as “Proximity:/.COM/Corp2/LocationA/Div2”. Each ring in the
partition tree 500 can be assigned a unique number, for example, by hashing its representational string with a SHA based algorithm. If thenumber 0 is reserved for the root ring, it can be inferred that RouteNumerically (V, Msg)≡RouteProximally (V, Msg, 0). - For example, a node in
sub-ring 544 can implement RouteProximally to identify a closer node in sub-ring 531 (e.g., to a node in sub-ring 513). In turn, sub-ring 531 can implement RouteProximally to identify a closer node insub-ring 522. Likewise, sub-ring 522 can implement RouteProximally to identify a closer node insub-ring 511. Similarly, sub-ring 511 can implement RouteProximally to identify a closer node inring 501. Thus, it may be that a RouteProximally function is recursively invoked with each invocation routing a message closer to the destination. - Thus, when proximity criterion is taken into account, routing hops on a path to a final destination can remain within the proximity of a node that originates a request, while making significant progress between the originating node and the destination node in a numerical space, until either the destination node is reached or no further progress can be made under the chosen proximity criterion at which point it is relaxed just enough to make further progress towards the destination. For example, proximity criterion can be relaxed enough for a message to be routed from
ring 531 up toring 522, etc. - Utilizing the above approach to proximity, it is possible to confine published information to a given ring. For example, organizations may like to ensure that organization specific information is not available to entities outside of their trust domains either (1) implicitly in the form of neighborhood replication to nodes outside of their domains or (2) explicitly in the form of servicing lookup requests for such information. The first aspect is satisfied by replicating published information only among the nodes neighboring the target ID within the specified ring. Because all messages originated by a node are routed by successively climbing the rings to which it belongs towards the root ring, there is a high likelihood that all lookup requests originated within an organization will be able to locate the published information confined to it thereby implicitly satisfying the second aspect.
- Also, organizations dislike nodes automatically federating with nodes outside of their trust domain. This can happen, for example, when a visiting sales person connects his/her laptop computer to the network in the customer premises. Ideally, the laptop computer belonging to the sales person wishes to locate information published in its home domain and/or federate with the nodes in its home domain starting at its lowest preferred proximity ring. It will typically not be permitted to federate with the nodes in the customer's domain. Supporting this scenario requires ability to locate seed nodes in the home domain. Such seed nodes can be used for locating information published in the home domain, to join the home federation, and selectively import and export published information across domains. Seed nodes are also sometimes referred as message gateways.
- In other embodiments, an entity publishes references to seed nodes in the root ring. Seed nodes can be published at the unique number (such as the one obtained by hashing its representational string) associated with the ring (as a target ID). Seed node information can further be on-demand cached by the nodes in various rings that are on the path to the corresponding target IDs in the root ring. Such on-demand caching provides for improved performance and reduction in hotspots that might occur when semi-static information is looked up quite frequently. Seed node information can also be obtained via other means such as DNS
- To provide fault tolerance for confined published information, each node can maintain a set of neighborhood nodes in all of the rings it participates in. Given the above, the state maintained by a node can be summarized as follows:
- An ID which is a numerical value uniformly distributed in the range of 0 to bn−1.
- A routing table consisting of (all arithmetic is done modulo bn):
- For each ring, say ring d, in which the node participates
- Successor node (sd)
- Predecessor node (pd)
- Neighborhood nodes (pkd, . . . , p1d, pd, sd, s1d, . . . , sjd) such that sjd.sd.id>(id+u/2), j≧v/2−1, pkd.pd.id<(id−u/2), and k≧v/2−1.
- Routing nodes (r−(n−1), . . . , r−1, r1, . . . , rn−1) such that r±i=RouteProximally (id±bi, updateMsg, d) such that sd≦id+bi≦sd+1 or pd+1≦id−bi≦pd as appropriate.
where b is the number base, n is the field size in number of digits, u is the neighborhood range, and v is the neighborhood size.
- For each ring, say ring d, in which the node participates
- Note that a subset of the neighborhood nodes maintained by a given node in ring “d” can appear again as neighborhood nodes in the child ring “d+1” in which the given node participates as well. As such one can derive the upper bound on the total number of neighborhood nodes maintained by a given node across all the D rings it participates as D*max(u,v)/2. This considers that only one reference to a given node is kept and the worst case upper bound is for a balanced tree.
- It should be noted that when a ring is partitioned into a plurality of corresponding sibling sub-rings, it is permitted for a specified node to simultaneously participate in more than one of the plurality of corresponding sibling sub-rings, for example, through aliasing. Aliasing can be implemented to associate different state, for example, from different sub-rings, with the specified node. Thus, although aliases for a given node have the same ID, each alias can have distinct state associated with them. Aliasing allows the specified node to participate in multiple rings having distinct proximity criteria that are not necessarily common ancestors of more specific proximity criteria. That is, the specified node can participate in multiple branches of the proximity tree.
- For example, a dual NIC (wired and wireless) laptop can be considered to be proximally equivalent to both other wireless and wired nodes sharing the same LAN segments as the laptop. But, these two distinct proximity criteria can be modeled as sub-criteria that are applicable only after application of a different higher priority proximity criterion, such as, for example, one based on organizational membership. As the laptop belongs to the same organization, the aliased nodes in the two sub-rings representing 1) membership in the wired and 2) membership in the wireless LAN segments merge into a single node in the ring representing the organization to which the laptop belongs. It should be understand that the RouteProximally works as expected without any modifications in the presence of aliasing.
- Each proximal ring can be configured in accordance with (potentially different) ring parameters. Ring parameters can be used to define a neighborhood (e.g., ring parameters can represent a neighborhood range, a neighborhood size, ping message and depart message timing and distribution patterns for ping and depart messages), indicate a particular federating mechanisms (e.g., from among the above-described first through fourth federating mechanisms previously described or from among other federating mechanisms), or define communication specifics between routing partners in the same proximal ring. Some ring parameters may be more general, applying to a plurality of different federating mechanisms, while other ring parameters are more specific and apply to specific type of federating mechanism.
- Ring parameters used to configure a higher level proximal ring can be inherited in some embodiments by lower level proximal rings. For example, it may be that
ring 543 inherits some of the ring parameters of ring 531 (which in turn inherited fromring 522, etc.). Thus, a neighborhood size and neighborhood range associated withring 531 is also associated withring 541. - However, inherited ring parameters can be altered and/or proximal rings can be individually configured in accordance with different ring parameters. For example, it may be that
ring 511 is for an administrative domain that contains a large number of nodes and thus the above-described fourth federating mechanism is more appropriate forring 511. On the other hand, it may be thatring 521 is for a small business with a relatively smaller number of nodes and thus the above-described second federating mechanism is more appropriate forring 521. Thus, the ring parameters associated withring 521 can be set to (or inherited parameters changed to) different values than the ring parameters associated withring 511. For example, a ring parameter indicating a particular type of federating mechanisms can be different betweenrings rings ring 521 can be configured in accordance with specific parameters that are specific to the above-described second federating mechanism, whilering 511 is configured in accordance additional with specific parameters that are specific to the above-described fourth federating mechanism. - Accordingly, proximal rings can be flexibly configured based on the characteristics (e.g., number, included resources, etc.) of nodes in the proximal rings. For example, an administrator can select ring parameters for proximal rings using a configuration procedure (e.g., through a user-interface). A configuration procedure can facilitate the configuration of inheritance relationships between proximal rings as well as the configuration of individual proximal rings, such as, for example, to override otherwise inherited ring parameters.
-
FIG. 8 illustrates an example flow chart of amethod 800 for partitioning the nodes of a federation infrastructure. Themethod 800 will be described with respect to the rings of partition atree 500 inFIG. 5 .Method 800 includes an act of accessing a sorted linked list containing node IDs that have been assigned to nodes in a federation infrastructure (act 801). For example, the sorted linked list represented byring 501 can be accessed. The node IDs of the sorted linked list (the nodes depicted on ring 501) can represent nodes in a federation infrastructure (e.g., federation infrastructure 100). -
Method 800 includes an act of accessing proximity categories that represent a plurality of different proximity criteria for partitioning the sorted linked list (act 802). For example, proximity criterion representing domain boundaries 561, geographical boundaries 562, and organizational boundaries 563 can be accessed. However, other proximity criteria, such as, trust domain boundaries, can also be represented in accessed proximity criterion. Proximity categories can include previously created partially ordered lists of proximity criteria. A ring can be partitioned based on partially ordered lists of proximity criteria. -
Method 800 includes an act of partitioning the sorted link list into one or more first sub lists based on a first proximity criterion, each of the one or more first sub lists containing at least a subset of the node IDs from the sorted linked list (act 803). For example,ring 501 can be partitioned intosub-rings criterion 571. Each ofsub-rings ring 501. -
Method 800 includes an act of partitioning a first sub list, selected from among the one or more first sub lists, into one or more second sub lists based on a second proximity criterion, each of the one or more second sub lists containing at least a subset of node IDs contained in the first sub list (act 804). For example, sub-ring 511 can be partitioned intosub-rings criterion 581. Each of the sub-rings 521, 522, and 523 can contain a different sub-set of node IDs fromsub-ring 511. -
FIG. 9 illustrates an example flow chart of amethod 900 for populating a node's routing table. Themethod 900 will be described with respect to the sorted linkedlist 304 andring 306 inFIG. 3 .Method 900 includes an act of inserting a predecessor node into a routing table, the predecessor node preceding a current node relative to the current node in a first direction of a sorted linked list (act 901). For example, thenode having ID 50 can be inserted into the routing table as a predecessor for the node having ID 64 (the current node). Moving in a clockwise direction 321 (from end A of sorted linkedlist 304 towards end B of sorted linked list 304), thenode having ID 50 precedes thenode having ID 64. Inserting a predecessor node can establish a symmetric partnership between the current node and the predecessor node such that current node is a partner of predecessor node and the predecessor node is a partner of the current node -
Method 900 includes an act of inserting a successor node into the routing table, the successor node succeeding the current node relative to the current node in the first direction in the sorted linked list (act 902). For example, thenode having ID 76 can be inserted into the routing table as a successor for the node having ID 64 (the current node). Moving in acounter-clockwise direction 322, thenode having ID 76 succeeds thenode having ID 64. Inserting a successor node can establish a symmetric partnership between the current node and the successor node such that current node is a partner of the successor node and the successor node is a partner of the current node. -
Method 900 includes an act of inserting appropriate neighborhood nodes into the routing table, the neighborhood nodes identified from the sorted linked list in both the first direction and in a second opposite direction based on a neighborhood range and neighborhood size (act 903). For example, thenodes having IDs neighborhood size 4, thenodes having IDs clockwise direction 321 and thenodes having IDs list 304 towards end A of sorted linked list 304). It may be that in some environments no appropriate neighborhood nodes are identified. Inserting a neighborhood node can establish a symmetric partnership between the current node and the neighborhood node such that current node is a partner of the neighborhood node and the neighborhood node is a partner of the current node. -
Method 900 includes an act of inserting appropriate routing nodes into the routing table, the routing nodes identified from the sorted linked list in both the first and second directions based on the a number base and field size of the ID space for the federation infrastructure, the routing nodes representing a logarithmic index of the sorted link list in both the first and second directions (act 904). For example, thenodes having IDs node having ID 64. Based on thenumber base 2 and field size of 8 thenodes having IDs direction 321 and thenodes having IDs direction 322. As depicted insidering 306, the routing nodes represent a logarithmic index of thesorted link list 304 in bothclockwise direction 321 andcounter-clockwise direction 322. Inserting a routing node can establish a symmetric partnership between the current node and the routing node such that current node is a partner of the routing node and the routing node is a partner of the current node. -
FIG. 7 illustrates an example flow chart of amethod 700 for populating a node routing table that takes proximity criteria into account. Themethod 700 will be described with respect to the rings inFIG. 5 .Method 700 includes an act of inserting a predecessor node for each hierarchically partitioned routing ring the current node participates in into a routing table (act 701). Each predecessor node precedes the current node in a first direction (e.g., clockwise) within each hierarchically partitioned routing ring the current node participates in. The hierarchically partitioned routing rings are partitioned in accordance with corresponding proximity criteria and contain at least subsets of a bi-directionally linked list (and possibly the whole bi-directionally linked list). For example, it may be that a specified node participates inroot ring 501 andsub-rings rings 501 andsub-rings -
Method 700 includes an act of inserting a successor node for each hierarchically partitioned routing ring the current node participates in into the routing table (act 702). Each successor node succeeding the current node in the first direction within each hierarchically partitioned routing ring the current node participates in. For example, a successor node is selected for the specified node from within each of therings 501 andsub-rings -
Method 700 includes an act of inserting appropriate neighborhood nodes for each hierarchically partitioned routing ring the current node participates in into the routing table (act 703). The neighborhood nodes can be identified in both the first direction (e.g., clockwise) and in a second opposite direction (e.g., counter clockwise) based on a neighborhood range and neighborhood size from the hierarchically partitioned routing rings the current node participates in. For example, neighborhood nodes can be identified for the specified node from within each of therings 501 andsub-rings -
Method 700 includes an act of inserting appropriate routing nodes for each hierarchically partitioned routing ring the current node participates in into the routing table (act 704). For example, routing nodes can be identified for the specified node from within each of therings 501 andsub-rings - In some embodiments, appropriate routing nodes are inserted for each proximity ring d except the leaf ring (or leaf rings in embodiments that utilize aliasing), in which the node Y participates. Appropriate routing nodes can be inserted based on the following expression(s):
-
if Y.s d .id<Y.id+b i <Y.s d+1 .id is true, then use ring d; or -
if Y.p d .id<Y.id−b i <Y.p d+1 .id is true, then use ring d. - If a ring has not been identified in the previous step, use the lead (e.g., ring 501) ring as ring d. Now, ring d is the proximity ring in which node Y should look for the routing partner closest to z.
-
FIG. 10 illustrates an example flow chart of a 1000 method for routing a message towards a destination node. Themethod 1000 will be described with respect to the sorted linkedlist 304 andring 306 inFIG. 3 .Method 1000 includes an act of a receiving node receiving a message along with a number indicating a destination (act 1001). For example, thenode having ID 64 can receive a message indicating a destination of 212. -
Method 1000 includes an act of determining that the receiving node is at least one of numerically further from the destination than a corresponding predecessor node and numerically further from the destination than a corresponding successor node (act 1002). For example, indirection 322,ID 64 is further from destination 212 thanID 50 and, indirection 321,ID 64 is further from destination 212 thanID 76.Method 1000 includes an act of determining that the destination is not within a neighborhood set of nodes corresponding to the receiving node (act 1003). For example, the node withID 64 can determine that destination 212 is not within the neighborhood set of 83, 76, 50, and 46. - The
method 1000 includes an act of identifying an intermediate node from a routing table corresponding to the receiving node, the intermediate node being numerically closer to the destination than other routing nodes in the corresponding routing table (act 1004). For example, thenode having ID 64 can identify the routingnode having ID 200 as being numerically closer to destination 212 that other routing nodes. Themethod 1000 includes an act of sending the message to the intermediate node (act 1005). For example, thenode having ID 64 can send the message to thenode having ID 200. -
FIG. 11 illustrates an example flow chart of amethod 1100 for routing a message towards a destination node based on proximity criteria. Themethod 1100 will be described with respect to the rings inFIG. 4 andFIG. 5 .Method 1100 includes an act of a receiving node receiving a message along with a number indicating a destination and a proximity criterion (act 1101). The proximity criterion defines one or more classes of nodes. The receiving node receives the message as part of a current class of nodes selected from among the one or more classes of nodes based on the proximity criterion. For example, thenode having ID 172 can receive a message indicating a destination of 201 and proximity criterion indicating that the destination node be part of classes represented byring 401. Thenode having ID 172 can receive the message as part ofring 404. -
Method 1100 includes an act of determining that the receiving node is at least one of, numerically further from the destination than a corresponding predecessor node and numerically further from the destination than a corresponding successor node, among nodes in a selected class of nodes (act 1102). For example, withinring 404, the node withID 172 is further fromdestination 201 than thenode having ID 174 in the clockwise direction and is further fromdestination 201 than thenode having ID 153 in the counterclockwise direction. -
Method 1100 includes an act of determining that the destination is not within the receiving node's neighborhood set of nodes for any of the one or more classes of nodes defined by the proximity criterion (act 1103). For example, thenode having ID 172 can determine thatdestination 201 is not in a corresponding neighborhood set inring 404 or inring 401. -
Method 1100 includes an act of identifying an intermediate node from the receiving node's routing table, the intermediate node being numerically closer to the destination than other routing nodes in the routing table (act 1104). For example, thenode having ID 172 can identify thenode having ID 194 as being numerically closer todestination 201 than other routing nodes inring 404. Themethod 1100 includes an act of sending the message to the intermediate node (act 1105). For example, thenode having ID 172 can send the received message to thenode having ID 194. Thenode having ID 172 can send the received message to thenode having ID 194 to honor a previously defined partially ordered list of proximity criterion -
Node 194 may be as close todestination 201 as is possible withinring 404. Thus, proximity can be relaxed just enough to enable further routing towards the destination to be made inring 401 in the next leg. That is, routing is transitioned fromring 404 to ring 401 since no further progress towards the destination can be made onring 404. Alternately, it may be that thenode having ID 201 is within the neighborhood of thenode having ID 194 inring 401 resulting in no further routing. Thus, in some embodiments, relaxing proximity criteria to get to the next higher ring is enough to cause further routing. - However, in other embodiments, incremental relaxation of proximity criteria causing transition to the next higher ring continues until further routing can occur (or until the root ring is encountered). That is, a plurality of transitions to higher rings occurs before further routing progress can be made. For example, referring now to
FIG. 5 , when no further routing progress can be made onring 531, proximity criteria may be relaxed enough to transition to ring 511 or even to rootring 501. -
FIG. 6 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by computer systems. Generally, program modules include routines, programs, objects, components, data structures, and the like, which perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing acts of the methods disclosed herein. - With reference to
FIG. 6 , an example system for implementing the invention includes a general-purpose computing device in the form ofcomputer system 620, including aprocessing unit 621, asystem memory 622, and asystem bus 623 that couples various system components including thesystem memory 622 to theprocessing unit 621.Processing unit 621 can execute computer-executable instructions designed to implement features ofcomputer system 620, including features of the present invention. Thesystem bus 623 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read only memory (“ROM”) 624 and random access memory (“RAM”) 625. A basic input/output system (“BIOS”) 626, containing the basic routines that help transfer information between elements withincomputer system 620, such as during start-up, may be stored inROM 624. - The
computer system 620 may also include magnetichard disk drive 627 for reading from and writing to magnetichard disk 639,magnetic disk drive 628 for reading from or writing to removablemagnetic disk 629, andoptical disk drive 630 for reading from or writing to removableoptical disk 631, such as, or example, a CD-ROM or other optical media. The magnetichard disk drive 627,magnetic disk drive 628, andoptical disk drive 630 are connected to thesystem bus 623 by harddisk drive interface 632, magnetic disk drive-interface 633, andoptical drive interface 634, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules, and other data for thecomputer system 620. Although the example environment described herein employs magnetichard disk 639, removablemagnetic disk 629 and removableoptical disk 631, other types of computer readable media for storing data can be used, including magnetic cassettes, flash memory cards, digital versatile disks, Bernoulli cartridges, RAMs, ROMs, and the like. - Program code means comprising one or more program modules may be stored on
hard disk 639,magnetic disk 629,optical disk 631,ROM 624 orRAM 625, including anoperating system 635, one ormore application programs 636,other program modules 637, andprogram data 638. A user may enter commands and information intocomputer system 620 throughkeyboard 640, pointingdevice 642, or other input devices (not shown), such as, for example, a microphone, joy stick, game pad, scanner, or the like. These and other input devices can be connected to theprocessing unit 621 through input/output interface 646 coupled tosystem bus 623. Input/output interface 646 logically represents any of a wide variety of different interfaces, such as, for example, a serial port interface, a PS/2 interface, a parallel port interface, a Universal Serial Bus (“USB”) interface, or an Institute of Electrical and Electronics Engineers (“IEEE”) 1394 interface (i.e., a FireWire interface), or may even logically represent a combination of different interfaces. - A
monitor 647 or other display device is also connected tosystem bus 623 viavideo interface 648. Speakers 669 or other audio output device is also connected tosystem bus 623 via audio interface 649. Other peripheral output devices (not shown), such as, for example, printers, can also be connected tocomputer system 620. -
Computer system 620 is connectable to networks, such as, for example, an office-wide or enterprise-wide computer network, a home network, an intranet, and/or the Internet.Computer system 620 can exchange data with external sources, such as, for example, remote computer systems, remote applications, and/or remote databases over such networks. -
Computer system 620 includesnetwork interface 653, through whichcomputer system 620 receives data from external sources and/or transmits data to external sources. As depicted inFIG. 6 ,network interface 653 facilitates the exchange of data withremote computer system 683 vialink 651.Network interface 653 can logically represent one or more software and/or hardware modules, such as, for example, a network interface card and corresponding Network Driver Interface Specification (“NDIS”) stack.Link 651 represents a portion of a network (e.g., an Ethernet segment), andremote computer system 683 represents a node of the network. - Likewise,
computer system 620 includes input/output interface 646, through whichcomputer system 620 receives data from external sources and/or transmits data to external sources. Input/output interface 646 is coupled to modem 654 (e.g., a standard modem, a cable modem, or digital subscriber line (“DSL”) modem) vialink 659, through whichcomputer system 620 receives data from and/or transmits data to external sources. As depicted inFIG. 6 , input/output interface 646 andmodem 654 facilitate the exchange of data withremote computer system 693 vialink 652.Link 652 represents a portion of a network andremote computer system 693 represents a node of the network. - While
FIG. 6 represents a suitable operating environment for the present invention, the principles of the present invention may be employed in any system that is capable of, with suitable modification if necessary, implementing the principles of the present invention. The environment illustrated inFIG. 6 is illustrative only and by no means represents even a small portion of the wide variety of environments in which the principles of the present invention may be implemented. - In accordance with the present invention, nodes, application layers, and other lower layers, as well as associated data, including routing tables and node IDs may be stored and accessed from any of the computer-readable media associated with
computer system 620. For example, portions of such modules and portions of associated program data may be included inoperating system 635,application programs 636,program modules 637 and/orprogram data 638, for storage insystem memory 622. - When a mass storage device, such as, for example, magnetic
hard disk 639, is coupled tocomputer system 620, such modules and associated program data may also be stored in the mass storage device. In a networked environment, program modules depicted relative tocomputer system 620, or portions thereof, can be stored in remote memory storage devices, such as, system memory and/or mass storage devices associated withremote computer system 683 and/orremote computer system 693. Execution of such modules may be performed in a distributed environment as previously described. - The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes, which come within the meaning and range of equivalency of the claims, are to be embraced within their scope.
Claims (20)
1. In a federation infrastructure, a method for creating and maintaining a node distribution data structure, the method comprising:
an act of accessing from a current node at least one routing table in the federation infrastructure to determine identification information for each node in the federation infrastructure of which the routing table has knowledge, wherein one or more of the nodes in the routing table references at least one other node in the federation infrastructure;
an act of subsequently accessing the other nodes in the federation infrastructure by following the nodes pointed to by each node; and
based on the accessed nodes, an act of forming a node distribution data structure that points to every node in the federation infrastructure.
2. The method as recited in claim 1 , wherein the nodes and routing tables are members of the same proximal ring.
3. The method as recited in claim 2 , wherein at least the node identification information and any node references maintained in the routing table are used to address a message to at least one other node in the federation infrastructure.
4. The method as recited in claim 2 , wherein at least the node identification information and any node references maintained in the routing table are used to determine at least one node from a set of nodes to address a message to.
5. The method as recited in claim 3 , further comprising sending a plurality of messages instead of a single message.
6. The method as recited in claim 1 , wherein the nodes and routing tables are members of different proximal rings.
7. The method as recited in claim 6 , wherein at least the node identification information and any node references maintained in the routing table are used to address a message to at least one other node in the federation infrastructure.
8. The method as recited in claim 6 , wherein at least the node identification information and any node references maintained in the routing table are used to determine at least one node from a set of nodes to address a message to.
9. The method as recited in claim 1 , wherein the node distribution data structure comprises a connectivity graph.
10. In a federation infrastructure, a system configured to create and maintain a node distribution data structure, the system comprising:
an accessing module configured to access from a current node at least one routing table in the federation infrastructure to determine identification information for each node in the federation infrastructure of which the routing table has knowledge, wherein one or more of the nodes in the routing table points to at least one other node in the federation infrastructure;
a second accessing module configured to subsequently access the other nodes in the federation infrastructure by following the nodes pointed to by each node; and
a distributed forming module configured to form, based on the accessed nodes, a node distribution data structure that points to every node in the federation infrastructure.
11. The system as recited in claim 10 , wherein the nodes and routing tables are members of the same proximal ring.
12. The system as recited in claim 11 , wherein at least the node identification information and any node references maintained in the routing table are used to address a message to at least one other node in the federation infrastructure.
13. The system as recited in claim 11 , wherein at least the node identification information and any node references maintained in the routing table are used to determine at least one node from a set of nodes to address a message to.
14. The system as recited in claim 12 , further comprising sending a plurality of messages instead of a single message.
15. The system as recited in claim 10 , wherein the nodes and routing tables are members of different proximal rings.
16. The system as recited in claim 15 , wherein at least the node identification information and any node references maintained in the routing table are used to address a message to at least one other node in the federation infrastructure.
17. The system as recited in claim 15 , wherein at least the node identification information and any node references maintained in the routing table are used to determine at least one node from a set of nodes to address a message to.
18. The system as recited in claim 10 , wherein the node distribution data structure comprises a connectivity graph.
19. In a federation infrastructure, a system including a fully connected node distribution data structure, the system comprising:
a receiving module for receiving at a current node an indication that a message is to be sent to from the current node to each of the nodes of the federation infrastructure; and
a sending module for sending the message to at least one other node in the federation infrastructure, whereupon each receiving node accesses stored state information to send the message to at least one other node until all nodes have received the message at least once.
20. The system as recited in claim 19 , wherein the message is addressed to a particular identified node among the plurality of nodes in the federation infrastructure.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/611,825 US20100046399A1 (en) | 2004-10-22 | 2009-11-03 | Rendezvousing resource requests with corresponding resources |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/971,451 US20060090003A1 (en) | 2004-10-22 | 2004-10-22 | Rendezvousing resource requests with corresponding resources |
US12/611,825 US20100046399A1 (en) | 2004-10-22 | 2009-11-03 | Rendezvousing resource requests with corresponding resources |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/971,451 Continuation US20060090003A1 (en) | 2004-10-22 | 2004-10-22 | Rendezvousing resource requests with corresponding resources |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100046399A1 true US20100046399A1 (en) | 2010-02-25 |
Family
ID=36206079
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/971,451 Abandoned US20060090003A1 (en) | 2004-10-22 | 2004-10-22 | Rendezvousing resource requests with corresponding resources |
US11/016,446 Expired - Fee Related US7362718B2 (en) | 2004-10-22 | 2004-12-17 | Maintaining membership within a federation infrastructure |
US11/015,460 Expired - Fee Related US7624194B2 (en) | 2004-10-22 | 2004-12-17 | Establishing membership within a federation infrastructure |
US11/016,422 Expired - Fee Related US7466662B2 (en) | 2004-10-22 | 2004-12-17 | Discovering liveness information within a federation infrastructure |
US12/611,825 Abandoned US20100046399A1 (en) | 2004-10-22 | 2009-11-03 | Rendezvousing resource requests with corresponding resources |
Family Applications Before (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/971,451 Abandoned US20060090003A1 (en) | 2004-10-22 | 2004-10-22 | Rendezvousing resource requests with corresponding resources |
US11/016,446 Expired - Fee Related US7362718B2 (en) | 2004-10-22 | 2004-12-17 | Maintaining membership within a federation infrastructure |
US11/015,460 Expired - Fee Related US7624194B2 (en) | 2004-10-22 | 2004-12-17 | Establishing membership within a federation infrastructure |
US11/016,422 Expired - Fee Related US7466662B2 (en) | 2004-10-22 | 2004-12-17 | Discovering liveness information within a federation infrastructure |
Country Status (2)
Country | Link |
---|---|
US (5) | US20060090003A1 (en) |
CN (1) | CN1764171B (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060282547A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20060282505A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20080031246A1 (en) * | 2004-10-22 | 2008-02-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US20100262717A1 (en) * | 2004-10-22 | 2010-10-14 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US20110235551A1 (en) * | 2004-10-22 | 2011-09-29 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US8392515B2 (en) | 2004-10-22 | 2013-03-05 | Microsoft Corporation | Subfederation creation and maintenance in a federation infrastructure |
US8990434B2 (en) | 2006-11-09 | 2015-03-24 | Microsoft Technology Licensing, Llc | Data consistency within a federation infrastructure |
US9647917B2 (en) | 2004-10-22 | 2017-05-09 | Microsoft Technology Licensing, Llc | Maintaining consistency within a federation infrastructure |
US11909716B1 (en) * | 2022-12-08 | 2024-02-20 | Nokia Solutions And Networks Oy | Locator lookup-based, low-latency, multi-access IP mobility |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9124584B2 (en) * | 2003-05-09 | 2015-09-01 | Arvato Digital Services Llc | Location-specific or range-based licensing system |
WO2005089240A2 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method for providing multi-resource management support in a compute environment |
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
US7730220B2 (en) | 2004-10-22 | 2010-06-01 | Microsoft Corporation | Broadcasting communication within a rendezvous federation |
US7694167B2 (en) * | 2004-10-22 | 2010-04-06 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US20060090003A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
CA2586763C (en) | 2004-11-08 | 2013-12-17 | Cluster Resources, Inc. | System and method of providing system jobs within a compute environment |
US7562382B2 (en) * | 2004-12-16 | 2009-07-14 | International Business Machines Corporation | Specializing support for a federation relationship |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
ES2666563T3 (en) | 2005-03-16 | 2018-05-07 | Iii Holdings 12, Llc | Automatic transfer of cargo to a center on demand |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
ES2614751T3 (en) | 2005-04-07 | 2017-06-01 | Iii Holdings 12, Llc | Access on demand to computer resources |
GB2428828A (en) * | 2005-07-30 | 2007-02-07 | Ibm | Publish/subscribe messaging system |
US7672289B2 (en) * | 2005-08-09 | 2010-03-02 | Mitsubishi Electric Research Laboratories, Inc. | Method for defining, allocating and assigning addresses in ad hoc wireless networks |
US7715330B2 (en) * | 2005-10-06 | 2010-05-11 | International Business Machines Corporation | System and method for optimizing the topology of a virtual ring based upon a TCP/IP network |
US7881223B2 (en) * | 2006-03-31 | 2011-02-01 | Panasonic Corporation | Method for on demand distributed hash table update |
US7860883B2 (en) * | 2006-07-08 | 2010-12-28 | International Business Machines Corporation | Method and system for distributed retrieval of data objects within multi-protocol profiles in federated environments |
US7860882B2 (en) * | 2006-07-08 | 2010-12-28 | International Business Machines Corporation | Method and system for distributed retrieval of data objects using tagged artifacts within federated protocol operations |
US8345683B1 (en) * | 2006-07-31 | 2013-01-01 | Alcatel Lucent | Data plane independent assert election |
US7589671B2 (en) * | 2006-08-25 | 2009-09-15 | Trimble Navigation Limited | GPS node locator using an intermediate node location for determining location of a remote node |
US20080068262A1 (en) * | 2006-08-25 | 2008-03-20 | Peter Van Wyck Loomis | Remote node providing GPS signal samples for GPS positioning over a communication network |
CN100466624C (en) * | 2006-08-28 | 2009-03-04 | 华为技术有限公司 | Routing method and device |
US7719467B2 (en) | 2007-03-08 | 2010-05-18 | Trimble Navigation Limited | Digital camera with GNSS picture location determination |
US7551126B2 (en) * | 2007-03-08 | 2009-06-23 | Trimble Navigation Limited | GNSS sample processor for determining the location of an event |
US8386614B2 (en) * | 2007-05-25 | 2013-02-26 | Microsoft Corporation | Network connection manager |
US8381181B2 (en) | 2007-08-31 | 2013-02-19 | International Business Machines Corporation | Updating a workflow when a user reaches an impasse in the workflow |
US8407712B2 (en) * | 2007-08-31 | 2013-03-26 | International Business Machines Corporation | Updating workflow nodes in a workflow |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US20100228848A1 (en) * | 2007-10-18 | 2010-09-09 | Zoltan Lajos Kis | Merging of overlay networks in distributed data structures |
US7934117B2 (en) * | 2008-01-25 | 2011-04-26 | Microsoft Corporation | Routing token transfer and recovery protocol in rendezvous federation |
US8417775B2 (en) * | 2008-02-27 | 2013-04-09 | Microsoft Corporation | Neighborhood maintenance in the federation |
US8023498B2 (en) * | 2008-05-20 | 2011-09-20 | International Business Machines Corporation | Controlling access to a destination in a data processing network |
US7934118B2 (en) * | 2008-10-24 | 2011-04-26 | Microsoft Corporation | Failure notification in rendezvous federation |
US8477638B2 (en) * | 2008-12-02 | 2013-07-02 | Cisco Technology, Inc. | Latency enhancements for multicast traffic over spatial reuse protocol (SRP) |
US10929401B2 (en) | 2009-04-16 | 2021-02-23 | Tibco Software Inc. | Policy-based storage structure distribution |
US9235623B2 (en) | 2009-04-16 | 2016-01-12 | Tibco Software, Inc. | Policy-based storage structure distribution |
US8307085B2 (en) * | 2010-03-16 | 2012-11-06 | Microsoft Corporation | Storing state of distributed architecture in external store |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
CN102064992B (en) * | 2009-11-13 | 2012-11-28 | 中兴通讯股份有限公司 | Relay node, and relay node distributed network and networking method thereof |
US8706822B2 (en) | 2010-06-23 | 2014-04-22 | Microsoft Corporation | Delivering messages from message sources to subscribing recipients |
US8433760B2 (en) | 2010-12-03 | 2013-04-30 | International Business Machines Corporation | Inter-node communication scheme for node status sharing |
US8667126B2 (en) | 2010-12-03 | 2014-03-04 | International Business Machines Corporation | Dynamic rate heartbeating for inter-node status updating |
US8634328B2 (en) | 2010-12-03 | 2014-01-21 | International Business Machines Corporation | Endpoint-to-endpoint communications status monitoring |
US8712975B2 (en) | 2011-03-08 | 2014-04-29 | Rackspace Us, Inc. | Modification of an object replica |
US8554951B2 (en) | 2011-03-08 | 2013-10-08 | Rackspace Us, Inc. | Synchronization and ordering of multiple accessess in a distributed system |
US8510267B2 (en) * | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
US8538926B2 (en) | 2011-03-08 | 2013-09-17 | Rackspace Us, Inc. | Massively scalable object storage system for storing object replicas |
US20120243420A1 (en) * | 2011-03-21 | 2012-09-27 | International Business Machines Corporation | Efficient Remote Call Diagnostics |
US9083718B1 (en) * | 2011-03-28 | 2015-07-14 | Brian Bosak | Global grid protocal, a system and method for establishing and simplifying peer-to-peer networking connections among a plurality of computers and divices by dynamically generating identifiers and performing routing and traversal processes |
US8635411B2 (en) | 2011-07-18 | 2014-01-21 | Arm Limited | Data processing apparatus and method for managing coherency of cached data |
US10270755B2 (en) | 2011-10-03 | 2019-04-23 | Verisign, Inc. | Authenticated name resolution |
US8850065B2 (en) * | 2012-01-04 | 2014-09-30 | Alcatel Lucent | Diameter route learning |
US9806951B2 (en) * | 2013-01-18 | 2017-10-31 | Microsoft Technology Licensing, Llc | Cluster voter model |
US10310904B2 (en) * | 2014-11-26 | 2019-06-04 | Dropbox, Inc. | Distributed technique for allocating long-lived jobs among worker processes |
US10530734B2 (en) | 2014-12-16 | 2020-01-07 | Verisign, Inc. | Balancing visibility in the domain name system |
US10382566B2 (en) * | 2015-04-16 | 2019-08-13 | Entit Software Llc | Business service discovery |
US10791085B2 (en) | 2015-11-12 | 2020-09-29 | Verisign, Inc. | Techniques for directing a domain name service (DNS) resolution process |
US10506038B1 (en) * | 2015-12-24 | 2019-12-10 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a global node architecture |
US10320626B1 (en) | 2016-04-07 | 2019-06-11 | Wells Fargo Bank, N.A. | Application discovery and dependency mapping |
US10110614B2 (en) | 2016-07-28 | 2018-10-23 | Verisign, Inc. | Strengthening integrity assurances for DNS data |
US10999240B1 (en) | 2016-08-31 | 2021-05-04 | Verisign, Inc. | Client controlled domain name service (DNS) resolution |
US11853529B2 (en) * | 2016-11-07 | 2023-12-26 | Tableau Software, Inc. | User interface to prepare and curate data for subsequent analysis |
US10885057B2 (en) | 2016-11-07 | 2021-01-05 | Tableau Software, Inc. | Correlated incremental loading of multiple data sets for an interactive data prep application |
US10606863B2 (en) * | 2017-03-15 | 2020-03-31 | International Business Machines Corporation | Monotonic transactions in a multi-master database with loosely coupled nodes |
EP3454511A1 (en) * | 2017-09-11 | 2019-03-13 | R3 - Reliable Realtime Radio Communications GmbH | Communication node for a sequence-based communication network |
US10394691B1 (en) | 2017-10-05 | 2019-08-27 | Tableau Software, Inc. | Resolution of data flow errors using the lineage of detected error conditions |
US11250032B1 (en) | 2018-10-22 | 2022-02-15 | Tableau Software, Inc. | Data preparation user interface with conditional remapping of data values |
US10691304B1 (en) | 2018-10-22 | 2020-06-23 | Tableau Software, Inc. | Data preparation user interface with conglomerate heterogeneous process flow elements |
US11100097B1 (en) | 2019-11-12 | 2021-08-24 | Tableau Software, Inc. | Visually defining multi-row table calculations in a data preparation application |
US12032994B1 (en) | 2021-10-18 | 2024-07-09 | Tableau Software, LLC | Linking outputs for automatic execution of tasks |
Citations (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689701A (en) * | 1994-12-14 | 1997-11-18 | International Business Machines Corporation | System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax |
US5745683A (en) * | 1995-07-05 | 1998-04-28 | Sun Microsystems, Inc. | System and method for allowing disparate naming service providers to dynamically join a naming federation |
US5831975A (en) * | 1996-04-04 | 1998-11-03 | Lucent Technologies Inc. | System and method for hierarchical multicast routing in ATM networks |
US6115804A (en) * | 1999-02-10 | 2000-09-05 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention |
US6243814B1 (en) * | 1995-11-02 | 2001-06-05 | Sun Microsystem, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US6253292B1 (en) * | 1997-08-22 | 2001-06-26 | Seong Tae Jhang | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme |
US6269085B1 (en) * | 2000-02-03 | 2001-07-31 | Sun Microsystems, Inc. | Method and apparatus for hierarchical discovery and pruning of slow members of a multicast group |
US6279034B1 (en) * | 1998-06-03 | 2001-08-21 | International Business Machines Corporation | Distributed monitor timer service for use in a distributed computing environment |
US6304556B1 (en) * | 1998-08-24 | 2001-10-16 | Cornell Research Foundation, Inc. | Routing and mobility management protocols for ad-hoc networks |
US20020059425A1 (en) * | 2000-06-22 | 2002-05-16 | Microsoft Corporation | Distributed computing services platform |
US6411967B1 (en) * | 1999-06-18 | 2002-06-25 | Reliable Network Solutions | Distributed processing system with replicated management information base |
US6449641B1 (en) * | 1997-10-21 | 2002-09-10 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US20020129086A1 (en) * | 2000-08-31 | 2002-09-12 | The Regents Of The University Of California | Cluster-based aggregated switching technique (CAST) for routing data packets and information objects in computer networks |
US20020128995A1 (en) * | 2001-03-09 | 2002-09-12 | Muntz Daniel A. | Namespace service in a distributed file system using a database management system |
US6456597B1 (en) * | 1998-05-04 | 2002-09-24 | Hewlett Packard Co. | Discovery of unknown MAC addresses using load balancing switch protocols |
US20020150145A1 (en) * | 2001-04-16 | 2002-10-17 | Fredrik Alriksson | Rendezvous point interpiconet scheduling |
US20020150094A1 (en) * | 2000-10-27 | 2002-10-17 | Matthew Cheng | Hierarchical level-based internet protocol multicasting |
US6480473B1 (en) * | 1998-12-29 | 2002-11-12 | Koninklijke Philips Electronics N.V. | Verification of active nodes in an open network |
US20020184357A1 (en) * | 2001-01-22 | 2002-12-05 | Traversat Bernard A. | Rendezvous for locating peer-to-peer resources |
US20030009754A1 (en) * | 2001-06-22 | 2003-01-09 | Wonderware Corporation | Installing supervisory process control and manufacturing softwar from a remote location and maintaining configuration data links in a run-time enviroment |
US20030055892A1 (en) * | 2001-09-19 | 2003-03-20 | Microsoft Corporation | Peer-to-peer group management and method for maintaining peer-to-peer graphs |
US6542513B1 (en) * | 1997-08-26 | 2003-04-01 | International Business Machines Corporation | Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems |
US6546415B1 (en) * | 1999-05-14 | 2003-04-08 | Lucent Technologies Inc. | Network management system using a distributed namespace |
US20030067871A1 (en) * | 2001-10-10 | 2003-04-10 | Alcatel | Method for propagating the fault information in a RPR network and corresponding RPR packet |
US6553377B1 (en) * | 2000-03-31 | 2003-04-22 | Network Associates, Inc. | System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment |
US20030110408A1 (en) * | 2001-12-12 | 2003-06-12 | Wells Donald J. | System and method for providing service availability data for a communication network |
US20030145086A1 (en) * | 2002-01-29 | 2003-07-31 | O'reilly James | Scalable network-attached storage system |
US20030152098A1 (en) * | 2002-02-09 | 2003-08-14 | Fenqin Zhu | Method for managing multicast subscribers in mobile network |
US6615362B1 (en) * | 1998-04-27 | 2003-09-02 | Cisco Technology, Inc. | System and method for fault recovery for two line bi-directional ring network |
US20030165140A1 (en) * | 1999-04-30 | 2003-09-04 | Cheng Tang | System and method for distributing multicasts in virtual local area networks |
US20030182444A1 (en) * | 2002-03-21 | 2003-09-25 | Fernando Pedone | Distributed system with an efficient atomic broadcast mechanism |
US20030220993A1 (en) * | 2002-05-21 | 2003-11-27 | Blizniak Paul K. | Method and apparatus for dynamically determining information for deploying a web service |
US6708198B1 (en) * | 1996-06-24 | 2004-03-16 | Oracle International Corporation | Efficiently initiating lock state transitions for distributed resource objects that participate in a distributed lock management system |
US20040054807A1 (en) * | 2002-09-11 | 2004-03-18 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
US20040064511A1 (en) * | 2002-08-29 | 2004-04-01 | Abdel-Aziz Mohamed M. | Peer-to-peer email messaging |
US20040064548A1 (en) * | 2002-10-01 | 2004-04-01 | Interantional Business Machines Corporation | Autonomic provisioning of netowrk-accessible service behaviors within a federted grid infrastructure |
US20040066741A1 (en) * | 2002-09-23 | 2004-04-08 | Darpan Dinker | System and method for performing a cluster topology self-healing process in a distributed data system cluster |
US20040098502A1 (en) * | 2002-11-20 | 2004-05-20 | Zhichen Xu | Method, apparatus, and system for expressway routing among peers |
US20040111651A1 (en) * | 2002-12-05 | 2004-06-10 | Biswanath Mukherjee | Method and apparatus for guaranteeing a failure-recovery time in a wavelength-division multiplexing network |
US20040139150A1 (en) * | 1999-06-01 | 2004-07-15 | Fastforward Networks, Inc. | System for multipoint infrastructure transport in a computer network |
US6775703B1 (en) * | 2000-05-01 | 2004-08-10 | International Business Machines Corporation | Lease based safety protocol for distributed system with multiple networks |
US20040218536A1 (en) * | 2002-12-11 | 2004-11-04 | Nippon Telegraph And Telephone Corp. | Multicast communication path calculation method and multicast communication path calculation apparatus |
US6836756B1 (en) * | 2000-11-13 | 2004-12-28 | Nortel Networks Limited | Time simulation techniques to determine network availability |
US20050021725A1 (en) * | 2003-06-30 | 2005-01-27 | Johannes Lobbert | Distance-aware service discovery mechanism for determining the availability of remote services in wireless personal area networks |
US20050031119A1 (en) * | 2003-08-04 | 2005-02-10 | Yuying Ding | Method and communications device for secure group communication |
US20050050320A1 (en) * | 2003-09-02 | 2005-03-03 | Microsoft Corporation | Branding framework |
US20050091399A1 (en) * | 2003-09-30 | 2005-04-28 | Candan Kasim S. | Resource-aware adaptive multicasting in a shared proxy overlay network |
US20050100036A1 (en) * | 2003-11-06 | 2005-05-12 | Davis Lawrence D. | Method and apparatus for bandwidth-efficient multicast in ethernet passive optical networks |
US20050114291A1 (en) * | 2003-11-25 | 2005-05-26 | International Business Machines Corporation | System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data |
US20050111352A1 (en) * | 2003-11-21 | 2005-05-26 | Boon Ho | Method and system for monitoring a network containing routers using a backup routing protocol |
US6909721B2 (en) * | 2002-10-31 | 2005-06-21 | Nokia Corporation | Device detection and service discovery system and method for a mobile ad hoc communications network |
US20050138173A1 (en) * | 2003-12-22 | 2005-06-23 | Ha Young G. | Ontology-based service discovery system and method for ad hoc networks |
US6917985B2 (en) * | 2000-03-10 | 2005-07-12 | The Regents Of The University Of California | Core assisted mesh protocol for multicast routing in ad-hoc Networks |
US20050152318A1 (en) * | 2004-01-13 | 2005-07-14 | General Motors Corporation. | Efficient lightweight information dissemination algorithm for mobile wireless Ad Hoc networks |
US20050187946A1 (en) * | 2004-02-19 | 2005-08-25 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and associated methods |
US6947963B1 (en) * | 2000-06-28 | 2005-09-20 | Pluris, Inc | Methods and apparatus for synchronizing and propagating distributed routing databases |
US20050220106A1 (en) * | 2004-03-31 | 2005-10-06 | Pierre Guillaume Raverdy | Inter-wireless interactions using user discovery for ad-hoc environments |
US20050276216A1 (en) * | 2004-06-15 | 2005-12-15 | Jean-Philippe Vasseur | Avoiding micro-loop upon failure of fast reroute protected links |
US6980555B2 (en) * | 2000-11-24 | 2005-12-27 | Redback Networks Inc. | Policy change characterization method and apparatus |
US6983397B2 (en) * | 2001-11-29 | 2006-01-03 | International Business Machines Corporation | Method, system, and program for error handling in a dual adaptor system where one adaptor is a master |
US6988173B2 (en) * | 2003-05-12 | 2006-01-17 | International Business Machines Corporation | Bus protocol for a switchless distributed shared memory computer system |
US20060088015A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Establishing membership within a federation infrastructure |
US20060087990A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US7043550B2 (en) * | 2002-02-15 | 2006-05-09 | International Business Machines Corporation | Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications |
US7062563B1 (en) * | 2001-02-28 | 2006-06-13 | Oracle International Corporation | Method and system for implementing current user links |
US20060155781A1 (en) * | 2005-01-10 | 2006-07-13 | Microsoft Corporation | Systems and methods for structuring distributed fault-tolerant systems |
US7117273B1 (en) * | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US7137018B2 (en) * | 2002-12-31 | 2006-11-14 | Intel Corporation | Active state link power management |
US7139270B1 (en) * | 2000-08-22 | 2006-11-21 | Lucent Technologies Inc. | Systems and method for transporting multiple protocol formats in a lightwave communication network |
US7139930B2 (en) * | 2001-08-09 | 2006-11-21 | Dell Products L.P. | Failover system and method for cluster environment |
US20060282547A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20060282505A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20070002774A1 (en) * | 2004-10-22 | 2007-01-04 | Microsoft Corporation | Broadcasting communication within a rendezvous federation |
US7177646B2 (en) * | 2000-10-26 | 2007-02-13 | British Telecommunications Public Limited Company | Telecommunication routing using multiple routing protocols in a single domain |
US7181547B1 (en) * | 2001-06-28 | 2007-02-20 | Fortinet, Inc. | Identifying nodes in a ring network |
US20070053285A1 (en) * | 2001-06-29 | 2007-03-08 | Reginald Beer | Method And Apparatus For Recovery From Faults In A Loop Network |
US7231463B2 (en) * | 2002-01-04 | 2007-06-12 | Intel Corporation | Multi-level ring peer-to-peer network structure for peer and object discovery |
US20070183460A1 (en) * | 2003-08-07 | 2007-08-09 | Thorsten Enders | Method for establishing a user of a data network as a pilot master |
US20080005624A1 (en) * | 2004-10-22 | 2008-01-03 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US7324440B2 (en) * | 2002-02-06 | 2008-01-29 | Nec Corporation | Multiring control method, node using the method, and control program |
US20080031246A1 (en) * | 2004-10-22 | 2008-02-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US20080069124A1 (en) * | 2006-09-19 | 2008-03-20 | Bea Systems, Inc. | System and method for supporting service networks in a service-oriented architecture environment |
US7379994B2 (en) * | 2000-10-26 | 2008-05-27 | Metilinx | Aggregate system resource analysis including correlation matrix and metric-based analysis |
US7404006B1 (en) * | 2002-12-20 | 2008-07-22 | Symantec Operating Corporation | Publishing a network address in a computer network |
US7453884B2 (en) * | 2000-04-25 | 2008-11-18 | Cisco Technology, Inc. | Apparatus and method for scalable and dynamic traffic engineering in a data communication network |
US7463648B1 (en) * | 1999-08-23 | 2008-12-09 | Sun Microsystems, Inc. | Approach for allocating resources to an apparatus based on optional resource requirements |
US20090268677A1 (en) * | 2008-04-24 | 2009-10-29 | National Taiwan University | network resource allocation system and method of the same |
US7613703B2 (en) * | 2004-09-30 | 2009-11-03 | Microsoft Corporation | Organizing resources into collections to facilitate more efficient and reliable resource access |
US20100262717A1 (en) * | 2004-10-22 | 2010-10-14 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430171B2 (en) * | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
EP1139602A1 (en) | 2000-03-31 | 2001-10-04 | Lucent Technologies Inc. | Method and device for multicasting |
US7085825B1 (en) * | 2001-03-26 | 2006-08-01 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US6928578B2 (en) * | 2001-05-10 | 2005-08-09 | International Business Machines Corporation | System, method, and computer program for selectable or programmable data consistency checking methodology |
US6779093B1 (en) * | 2002-02-15 | 2004-08-17 | Veritas Operating Corporation | Control facility for processing in-band control messages during data replication |
US7512649B2 (en) * | 2002-03-22 | 2009-03-31 | Sun Microsytems, Inc. | Distributed identities |
US7103884B2 (en) * | 2002-03-27 | 2006-09-05 | Lucent Technologies Inc. | Method for maintaining consistency and performing recovery in a replicated data storage system |
EP1394999A1 (en) * | 2002-08-07 | 2004-03-03 | Infineon Technologies AG | Method for routing of data packets and routing apparatus |
US7350077B2 (en) * | 2002-11-26 | 2008-03-25 | Cisco Technology, Inc. | 802.11 using a compressed reassociation exchange to facilitate fast handoff |
WO2004056047A1 (en) * | 2002-12-13 | 2004-07-01 | Internap Network Services Corporation | Topology aware route control |
US7480708B2 (en) * | 2002-12-23 | 2009-01-20 | Sap Ag | Method and computer program product for managing data consistency |
US7747731B2 (en) * | 2003-03-27 | 2010-06-29 | Nokia Corporation | Minimizing message processing latency in a communication network |
US7120824B2 (en) * | 2003-05-09 | 2006-10-10 | International Business Machines Corporation | Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair |
US7275157B2 (en) * | 2003-05-27 | 2007-09-25 | Cisco Technology, Inc. | Facilitating 802.11 roaming by pre-establishing session keys |
US7334062B1 (en) * | 2003-07-22 | 2008-02-19 | Symantec Operating Corporation | Technique to monitor application behavior and tune replication performance |
US20050108481A1 (en) * | 2003-11-17 | 2005-05-19 | Iyengar Arun K. | System and method for achieving strong data consistency |
US7478263B1 (en) * | 2004-06-01 | 2009-01-13 | Network Appliance, Inc. | System and method for establishing bi-directional failover in a two node cluster |
GB0416074D0 (en) * | 2004-07-17 | 2004-08-18 | Ibm | Controlling data consistency guarantees in storage apparatus |
US7715396B2 (en) * | 2004-08-19 | 2010-05-11 | Microsoft Corporation | Network routing |
US8068408B2 (en) * | 2004-11-01 | 2011-11-29 | Alcatel Lucent | Softrouter protocol disaggregation |
US7827262B2 (en) * | 2005-07-14 | 2010-11-02 | Cisco Technology, Inc. | Approach for managing state information by a group of servers that services a group of clients |
US7739239B1 (en) * | 2005-12-29 | 2010-06-15 | Amazon Technologies, Inc. | Distributed storage system with support for distinct storage classes |
US7673069B2 (en) * | 2006-02-24 | 2010-03-02 | Microsoft Corporation | Strong routing consistency protocol in structured peer-to-peer overlays |
US20070214194A1 (en) * | 2006-03-07 | 2007-09-13 | James Reuter | Consistency methods and systems |
-
2004
- 2004-10-22 US US10/971,451 patent/US20060090003A1/en not_active Abandoned
- 2004-12-17 US US11/016,446 patent/US7362718B2/en not_active Expired - Fee Related
- 2004-12-17 US US11/015,460 patent/US7624194B2/en not_active Expired - Fee Related
- 2004-12-17 US US11/016,422 patent/US7466662B2/en not_active Expired - Fee Related
-
2005
- 2005-10-21 CN CN200510116209.5A patent/CN1764171B/en not_active Expired - Fee Related
-
2009
- 2009-11-03 US US12/611,825 patent/US20100046399A1/en not_active Abandoned
Patent Citations (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689701A (en) * | 1994-12-14 | 1997-11-18 | International Business Machines Corporation | System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax |
US5745683A (en) * | 1995-07-05 | 1998-04-28 | Sun Microsystems, Inc. | System and method for allowing disparate naming service providers to dynamically join a naming federation |
US6243814B1 (en) * | 1995-11-02 | 2001-06-05 | Sun Microsystem, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US5831975A (en) * | 1996-04-04 | 1998-11-03 | Lucent Technologies Inc. | System and method for hierarchical multicast routing in ATM networks |
US6708198B1 (en) * | 1996-06-24 | 2004-03-16 | Oracle International Corporation | Efficiently initiating lock state transitions for distributed resource objects that participate in a distributed lock management system |
US6253292B1 (en) * | 1997-08-22 | 2001-06-26 | Seong Tae Jhang | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme |
US6542513B1 (en) * | 1997-08-26 | 2003-04-01 | International Business Machines Corporation | Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems |
US6449641B1 (en) * | 1997-10-21 | 2002-09-10 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US6615362B1 (en) * | 1998-04-27 | 2003-09-02 | Cisco Technology, Inc. | System and method for fault recovery for two line bi-directional ring network |
US6456597B1 (en) * | 1998-05-04 | 2002-09-24 | Hewlett Packard Co. | Discovery of unknown MAC addresses using load balancing switch protocols |
US6279034B1 (en) * | 1998-06-03 | 2001-08-21 | International Business Machines Corporation | Distributed monitor timer service for use in a distributed computing environment |
US6304556B1 (en) * | 1998-08-24 | 2001-10-16 | Cornell Research Foundation, Inc. | Routing and mobility management protocols for ad-hoc networks |
US6480473B1 (en) * | 1998-12-29 | 2002-11-12 | Koninklijke Philips Electronics N.V. | Verification of active nodes in an open network |
US6115804A (en) * | 1999-02-10 | 2000-09-05 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention |
US20030165140A1 (en) * | 1999-04-30 | 2003-09-04 | Cheng Tang | System and method for distributing multicasts in virtual local area networks |
US6546415B1 (en) * | 1999-05-14 | 2003-04-08 | Lucent Technologies Inc. | Network management system using a distributed namespace |
US20040139150A1 (en) * | 1999-06-01 | 2004-07-15 | Fastforward Networks, Inc. | System for multipoint infrastructure transport in a computer network |
US6850987B1 (en) * | 1999-06-01 | 2005-02-01 | Fastforward Networks, Inc. | System for multipoint infrastructure transport in a computer network |
US6411967B1 (en) * | 1999-06-18 | 2002-06-25 | Reliable Network Solutions | Distributed processing system with replicated management information base |
US7463648B1 (en) * | 1999-08-23 | 2008-12-09 | Sun Microsystems, Inc. | Approach for allocating resources to an apparatus based on optional resource requirements |
US7117273B1 (en) * | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US6269085B1 (en) * | 2000-02-03 | 2001-07-31 | Sun Microsystems, Inc. | Method and apparatus for hierarchical discovery and pruning of slow members of a multicast group |
US6917985B2 (en) * | 2000-03-10 | 2005-07-12 | The Regents Of The University Of California | Core assisted mesh protocol for multicast routing in ad-hoc Networks |
US6553377B1 (en) * | 2000-03-31 | 2003-04-22 | Network Associates, Inc. | System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment |
US7453884B2 (en) * | 2000-04-25 | 2008-11-18 | Cisco Technology, Inc. | Apparatus and method for scalable and dynamic traffic engineering in a data communication network |
US6775703B1 (en) * | 2000-05-01 | 2004-08-10 | International Business Machines Corporation | Lease based safety protocol for distributed system with multiple networks |
US20020059425A1 (en) * | 2000-06-22 | 2002-05-16 | Microsoft Corporation | Distributed computing services platform |
US6947963B1 (en) * | 2000-06-28 | 2005-09-20 | Pluris, Inc | Methods and apparatus for synchronizing and propagating distributed routing databases |
US7139270B1 (en) * | 2000-08-22 | 2006-11-21 | Lucent Technologies Inc. | Systems and method for transporting multiple protocol formats in a lightwave communication network |
US20020129086A1 (en) * | 2000-08-31 | 2002-09-12 | The Regents Of The University Of California | Cluster-based aggregated switching technique (CAST) for routing data packets and information objects in computer networks |
US7177646B2 (en) * | 2000-10-26 | 2007-02-13 | British Telecommunications Public Limited Company | Telecommunication routing using multiple routing protocols in a single domain |
US7379994B2 (en) * | 2000-10-26 | 2008-05-27 | Metilinx | Aggregate system resource analysis including correlation matrix and metric-based analysis |
US20020150094A1 (en) * | 2000-10-27 | 2002-10-17 | Matthew Cheng | Hierarchical level-based internet protocol multicasting |
US6836756B1 (en) * | 2000-11-13 | 2004-12-28 | Nortel Networks Limited | Time simulation techniques to determine network availability |
US6980555B2 (en) * | 2000-11-24 | 2005-12-27 | Redback Networks Inc. | Policy change characterization method and apparatus |
US20020184357A1 (en) * | 2001-01-22 | 2002-12-05 | Traversat Bernard A. | Rendezvous for locating peer-to-peer resources |
US7062563B1 (en) * | 2001-02-28 | 2006-06-13 | Oracle International Corporation | Method and system for implementing current user links |
US20020128995A1 (en) * | 2001-03-09 | 2002-09-12 | Muntz Daniel A. | Namespace service in a distributed file system using a database management system |
US20020150145A1 (en) * | 2001-04-16 | 2002-10-17 | Fredrik Alriksson | Rendezvous point interpiconet scheduling |
US20030009754A1 (en) * | 2001-06-22 | 2003-01-09 | Wonderware Corporation | Installing supervisory process control and manufacturing softwar from a remote location and maintaining configuration data links in a run-time enviroment |
US7181547B1 (en) * | 2001-06-28 | 2007-02-20 | Fortinet, Inc. | Identifying nodes in a ring network |
US20070053285A1 (en) * | 2001-06-29 | 2007-03-08 | Reginald Beer | Method And Apparatus For Recovery From Faults In A Loop Network |
US7139930B2 (en) * | 2001-08-09 | 2006-11-21 | Dell Products L.P. | Failover system and method for cluster environment |
US20030055892A1 (en) * | 2001-09-19 | 2003-03-20 | Microsoft Corporation | Peer-to-peer group management and method for maintaining peer-to-peer graphs |
US20030067871A1 (en) * | 2001-10-10 | 2003-04-10 | Alcatel | Method for propagating the fault information in a RPR network and corresponding RPR packet |
US6983397B2 (en) * | 2001-11-29 | 2006-01-03 | International Business Machines Corporation | Method, system, and program for error handling in a dual adaptor system where one adaptor is a master |
US20030110408A1 (en) * | 2001-12-12 | 2003-06-12 | Wells Donald J. | System and method for providing service availability data for a communication network |
US7231463B2 (en) * | 2002-01-04 | 2007-06-12 | Intel Corporation | Multi-level ring peer-to-peer network structure for peer and object discovery |
US20030145086A1 (en) * | 2002-01-29 | 2003-07-31 | O'reilly James | Scalable network-attached storage system |
US7324440B2 (en) * | 2002-02-06 | 2008-01-29 | Nec Corporation | Multiring control method, node using the method, and control program |
US20030152098A1 (en) * | 2002-02-09 | 2003-08-14 | Fenqin Zhu | Method for managing multicast subscribers in mobile network |
US7043550B2 (en) * | 2002-02-15 | 2006-05-09 | International Business Machines Corporation | Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications |
US20030182444A1 (en) * | 2002-03-21 | 2003-09-25 | Fernando Pedone | Distributed system with an efficient atomic broadcast mechanism |
US20030220993A1 (en) * | 2002-05-21 | 2003-11-27 | Blizniak Paul K. | Method and apparatus for dynamically determining information for deploying a web service |
US20040064511A1 (en) * | 2002-08-29 | 2004-04-01 | Abdel-Aziz Mohamed M. | Peer-to-peer email messaging |
US20040054807A1 (en) * | 2002-09-11 | 2004-03-18 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
US20040066741A1 (en) * | 2002-09-23 | 2004-04-08 | Darpan Dinker | System and method for performing a cluster topology self-healing process in a distributed data system cluster |
US20040064548A1 (en) * | 2002-10-01 | 2004-04-01 | Interantional Business Machines Corporation | Autonomic provisioning of netowrk-accessible service behaviors within a federted grid infrastructure |
US6909721B2 (en) * | 2002-10-31 | 2005-06-21 | Nokia Corporation | Device detection and service discovery system and method for a mobile ad hoc communications network |
US20040098502A1 (en) * | 2002-11-20 | 2004-05-20 | Zhichen Xu | Method, apparatus, and system for expressway routing among peers |
US20040111651A1 (en) * | 2002-12-05 | 2004-06-10 | Biswanath Mukherjee | Method and apparatus for guaranteeing a failure-recovery time in a wavelength-division multiplexing network |
US20040218536A1 (en) * | 2002-12-11 | 2004-11-04 | Nippon Telegraph And Telephone Corp. | Multicast communication path calculation method and multicast communication path calculation apparatus |
US7404006B1 (en) * | 2002-12-20 | 2008-07-22 | Symantec Operating Corporation | Publishing a network address in a computer network |
US7137018B2 (en) * | 2002-12-31 | 2006-11-14 | Intel Corporation | Active state link power management |
US6988173B2 (en) * | 2003-05-12 | 2006-01-17 | International Business Machines Corporation | Bus protocol for a switchless distributed shared memory computer system |
US20050021725A1 (en) * | 2003-06-30 | 2005-01-27 | Johannes Lobbert | Distance-aware service discovery mechanism for determining the availability of remote services in wireless personal area networks |
US20050031119A1 (en) * | 2003-08-04 | 2005-02-10 | Yuying Ding | Method and communications device for secure group communication |
US20070183460A1 (en) * | 2003-08-07 | 2007-08-09 | Thorsten Enders | Method for establishing a user of a data network as a pilot master |
US20050050320A1 (en) * | 2003-09-02 | 2005-03-03 | Microsoft Corporation | Branding framework |
US20050091399A1 (en) * | 2003-09-30 | 2005-04-28 | Candan Kasim S. | Resource-aware adaptive multicasting in a shared proxy overlay network |
US20050100036A1 (en) * | 2003-11-06 | 2005-05-12 | Davis Lawrence D. | Method and apparatus for bandwidth-efficient multicast in ethernet passive optical networks |
US20050111352A1 (en) * | 2003-11-21 | 2005-05-26 | Boon Ho | Method and system for monitoring a network containing routers using a backup routing protocol |
US20050114291A1 (en) * | 2003-11-25 | 2005-05-26 | International Business Machines Corporation | System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data |
US20050138173A1 (en) * | 2003-12-22 | 2005-06-23 | Ha Young G. | Ontology-based service discovery system and method for ad hoc networks |
US20050152318A1 (en) * | 2004-01-13 | 2005-07-14 | General Motors Corporation. | Efficient lightweight information dissemination algorithm for mobile wireless Ad Hoc networks |
US20050187946A1 (en) * | 2004-02-19 | 2005-08-25 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and associated methods |
US20050220106A1 (en) * | 2004-03-31 | 2005-10-06 | Pierre Guillaume Raverdy | Inter-wireless interactions using user discovery for ad-hoc environments |
US20050276216A1 (en) * | 2004-06-15 | 2005-12-15 | Jean-Philippe Vasseur | Avoiding micro-loop upon failure of fast reroute protected links |
US7613703B2 (en) * | 2004-09-30 | 2009-11-03 | Microsoft Corporation | Organizing resources into collections to facilitate more efficient and reliable resource access |
US7466662B2 (en) * | 2004-10-22 | 2008-12-16 | Microsoft Corporation | Discovering liveness information within a federation infrastructure |
US20080031246A1 (en) * | 2004-10-22 | 2008-02-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US7362718B2 (en) * | 2004-10-22 | 2008-04-22 | Microsoft Corporation | Maintaining membership within a federation infrastructure |
US20060087990A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US20060088015A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Establishing membership within a federation infrastructure |
US20080005624A1 (en) * | 2004-10-22 | 2008-01-03 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US20060282547A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20070002774A1 (en) * | 2004-10-22 | 2007-01-04 | Microsoft Corporation | Broadcasting communication within a rendezvous federation |
US20060282505A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20100262717A1 (en) * | 2004-10-22 | 2010-10-14 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US20060155781A1 (en) * | 2005-01-10 | 2006-07-13 | Microsoft Corporation | Systems and methods for structuring distributed fault-tolerant systems |
US20080069124A1 (en) * | 2006-09-19 | 2008-03-20 | Bea Systems, Inc. | System and method for supporting service networks in a service-oriented architecture environment |
US20090268677A1 (en) * | 2008-04-24 | 2009-10-29 | National Taiwan University | network resource allocation system and method of the same |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095600B2 (en) | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US20060282547A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US20080031246A1 (en) * | 2004-10-22 | 2008-02-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US20100262717A1 (en) * | 2004-10-22 | 2010-10-14 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US7958262B2 (en) | 2004-10-22 | 2011-06-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US20110235551A1 (en) * | 2004-10-22 | 2011-09-29 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US20060282505A1 (en) * | 2004-10-22 | 2006-12-14 | Hasha Richard L | Inter-proximity communication within a rendezvous federation |
US8095601B2 (en) | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US8549180B2 (en) | 2004-10-22 | 2013-10-01 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US8417813B2 (en) | 2004-10-22 | 2013-04-09 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US8392515B2 (en) | 2004-10-22 | 2013-03-05 | Microsoft Corporation | Subfederation creation and maintenance in a federation infrastructure |
US9647917B2 (en) | 2004-10-22 | 2017-05-09 | Microsoft Technology Licensing, Llc | Maintaining consistency within a federation infrastructure |
US8990434B2 (en) | 2006-11-09 | 2015-03-24 | Microsoft Technology Licensing, Llc | Data consistency within a federation infrastructure |
US11909716B1 (en) * | 2022-12-08 | 2024-02-20 | Nokia Solutions And Networks Oy | Locator lookup-based, low-latency, multi-access IP mobility |
Also Published As
Publication number | Publication date |
---|---|
CN1764171B (en) | 2011-09-14 |
US20060088039A1 (en) | 2006-04-27 |
US20060090003A1 (en) | 2006-04-27 |
US20060088015A1 (en) | 2006-04-27 |
CN1764171A (en) | 2006-04-26 |
US7466662B2 (en) | 2008-12-16 |
US7362718B2 (en) | 2008-04-22 |
US20060087985A1 (en) | 2006-04-27 |
US7624194B2 (en) | 2009-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8417813B2 (en) | Rendezvousing resource requests with corresponding resources | |
US20100046399A1 (en) | Rendezvousing resource requests with corresponding resources | |
US8095601B2 (en) | Inter-proximity communication within a rendezvous federation | |
US8095600B2 (en) | Inter-proximity communication within a rendezvous federation | |
US7730220B2 (en) | Broadcasting communication within a rendezvous federation | |
US7694167B2 (en) | Maintaining routing consistency within a rendezvous federation | |
US7958262B2 (en) | Allocating and reclaiming resources within a rendezvous federation | |
US8392515B2 (en) | Subfederation creation and maintenance in a federation infrastructure | |
US20150244602A1 (en) | Maintaining Consistency within a Federation Infrastructure | |
US20080288659A1 (en) | Maintaining consistency within a federation infrastructure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION,WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KAKIVAYA, GOPALA KRISHNA R.;HASHA, RICHARD L.;RODEHEFFER, THOMAS LEE;SIGNING DATES FROM 20041020 TO 20041022;REEL/FRAME:023465/0023 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |