1. Field of the Disclosure
The disclosure relates to mobile ad hoc communication networks.
2. Introduction
Various network services such as domain name service and directory services employ a classic client server architecture in which each client selects a server either by static configuration or by dynamic selection at startup, and attempts to maintain the relationship with that server until at least a complete failure to obtain network services exists. However, in dynamic networks with mobility, network dynamics can change rapidly and therefore the efficiency and economy of the initially chosen server relationship for one or more clients can change substantially during a session. In deployment topologies such as military (tactical) networks, there may be multiple nodes that are able to provide the server capability for one or more network services. However, particularly in military networks and other networks with similar characteristics, conventional technologies lack the ability to dynamically and continually select the most efficient server for a given client as the network dynamics change due to reasons including mobility and server availability.
A method and apparatus for server election, discovery and selection in mobile ad hoc communication networks is disclosed. The server election method may include a server node that may elect itself as a server in network if the received server capabilities, network server lists and network specific parameters allow its election as a server in the network. A client node may discover and select a server in the network by transmitting a server discovery request to a plurality of nodes in the network, receiving advertisements from one or more servers in the network in response to the server discovery request, and selecting a server based on the received stability and connectivity information for each server from which advertisements are received.
In order to describe the manner in which the above-recited and other advantages and features of the disclosure can be obtained, a more particular description of the disclosure briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the disclosure and are not therefore to be considered to be limiting of its scope, the disclosure will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
Additional features and advantages of the disclosure will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the disclosure. The features and advantages of the disclosure may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present disclosure will become more fully apparent from the following description and appended claims, or may be learned by the practice of the disclosure as set forth herein.
Various embodiments of the disclosure are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the disclosure.
The disclosure comprises a variety of embodiments, such as a method and apparatus and other embodiments that relate to the basic concepts of the disclosure. This disclosure concerns a method and apparatus for server discovery and selection in mobile ad hoc communication networks. In particular, the disclosure may concern a dynamic server election and selection process within a general framework of network services including networks with the characteristics of tactical network topologies. The disclosed server election process may define a method of selecting a set of nodes that can provide a particular network service for a given network. The disclosed server selection process may define a method to be employed by each client node to dynamically select a server for a network service. Each client may continuously monitor the efficiency of its server choice as the network dynamics change, and may select a new server when the efficiency of the existing server relationship dips below a predetermined threshold. The apparatus of the disclosure may concern at least a memory, a communication interface, and a processor (or modules) that perform the server election, discovery, selection and re-selection processes discussed herein and in the attached materials.
Networks such as military tactical networks (and other similar networks), although including mobile nodes, typically involve a substantial degree of planning and provisioning before deployment. These networks may include many nodes that are capable of performing as a server (server capable nodes) for one or more network services. The process discussed in this disclosure takes advantage of such network characteristics, such as multiple nodes capable of providing network services and particular network topologies and mobility patterns, in order to establish and maintain an optimal server relationship for each client. The process may elect (server election) an optimal set of server nodes from between the nodes capable of providing such services, and then, on a client by client basis, may allow each client to select and continually reselect a server that is most efficient for its own circumstances. The process may recognize and account for the tradeoff between the desire to have multiple servers for a network service and the cost of maintaining multiple servers, such as maintaining server data synchronization, for example.
In the process of the disclosure, an optimal set of nodes may be selected from the network nodes to provide a particular network service. (e.g., Domain Name Service (DNS)). The clients may discover these server nodes and select a server node based on one of route triggers or application triggers. The client may reselect the server if the parameters change due to a change in network dynamics, for example.
With regard to the process for electing a set of servers, server capable nodes may be configured with a set of parameters (e.g., server capability, types of services, expected mobility, node priority number, etc.). The server capable nodes may also be configured with network specific parameters, including the desired/maximum number of servers allowed in the network. At start-up and/or network entry, each server capable node may broadcast or multicast its server capability parameters and may initially treat itself as a server for the network. Each node, including server capable nodes, may periodically broadcast or multicast the current network server list as seen by that node. Within a bounded time duration, each server capable node may be expected to receive communications from the majority of other server capable node. A server capable node may elect itself a server for the network depending on factors such as if the number of desired servers for network is not reached, the content of the broadcast announcements(e.g., server capability parameters, network server list as seen by each node), and a node priority order, for example.
With respect to the process for selecting a server, periodic server advertisements may be issued and/or a client may send server discovery requests. All servers may respond to the client (which may be multicast or broadcast) if the requested service profile is matched. The server response may contain a mobility pattern and/or connectivity information. The client may receive the information and select the server based on stability and/or connectivity, for example.
With respect to the method for maintaining optimal connectivity to server, the performance of the link to the server may be monitored. This process may concern measuring the response time to service messages, regular ping messages, etc., for example. When the performance dips below a predetermined threshold, the server selection may be re-initiated.
A further description of the above processes is provided below:
Server Election
Server Discovery
Server Selection
Server Re-Selection
The mobile ad hoc communications network 100 may represent any possible communications network, for example, an Internet Protocol (IP) based network that may handle voice, data or video communications including computer networks, wireless telephone networks, other wireless device networks. etc., for example.
The server node 110, and client node 130 may represent any communication network device capable of voice, data, or video communications, including a computer, a server, a portable computer, a wireless radio, a wireless telephone, a portable digital video recorder, a cellular telephone, a mobile telephone, a personal digital assistant (PDA), a portable music player, or combinations of the above, for example. Although only a small number of nodes are shown in
Nodes, such as the server and client nodes 110 and 130 may be co-located. A network may communicate packets of information among the nodes. For example, a server node 110, as well as other nodes, can produce packets which are destined for other nodes, such as client node 130. The packets of information which are transmitted over the network may carry data, Voice over Internet Protocol (VoIP), streaming audio, video telephone conference data, video information, such as Moving Picture Experts Group (MPEG) video, and other information.
When a packet of data is produced by the server node 110, it can carry an address tag identifying the destination node, such as client node 130. A packet leaving the server node 110 can traverse a path routed by one or more other nodes 120. Each successive node may move the packet toward the client node 130. Each movement of a packet from one node 120 to the next node 120 may be termed a “hop”.
Processor 220 may include at least one conventional processor or microprocessor that interprets and executes instructions. Memory 230 may be a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor 220. Memory 230 may also store temporary variables or other intermediate information used during execution of instructions by processor 220. Memory 230 may also include any type of media, such as, for example, magnetic or optical recording media and its corresponding drive. ROM 240 may include a conventional ROM device or another type of static storage device that stores static information and instructions for processor 220.
User interface 270 may include one or more conventional input mechanisms that permit a user to input information, communicate with the server node 110, and/or present information to the user, such as a an electronic display, microphone, touchpad, keypad, keyboard, mouse, pen, stylus, voice recognition device, buttons, one or more speakers, etc. Output devices 260 may include one or more conventional mechanisms that output information to the user, including a printer, one or more speakers, or a medium, such as a memory, or a magnetic or optical disk and a corresponding disk drive.
Communication interface 280 may include any transceiver-like mechanism that enables the server node 110 to communicate via a network. For example, communication interface 280 may include a wireless network interface, an optical network interface, or an Ethernet interface. Alternatively, communication interface 280 may include other mechanisms for communicating with other devices and/or systems via wired, wireless or optical connections.
The server node 110 may perform such functions in response to processor 220 by executing sequences of instructions contained in a computer-readable medium, such as, for example, memory 230, a magnetic disk, or an optical disk. Such instructions may be read into memory 230 from another computer-readable medium, or from a separate device via communication interface 280.
The operations and functions of the server election module 250 and server election process will be discussed in relation to the flowchart in
At step 3300, the server election module 250 may enable the server node to assume the role of a server in the network 100. At step 3400, the server election module 250 may receive transmissions from other servers in the network 100 that include other server's capabilities and network server lists through the communication interface 280.
At step 3500, the server election module 250 may determine if the received server capabilities, network server lists and network specific parameters allow the server node's election as a server in the network 100. The network specific parameters may include the preferred number of servers in the network and the maximum number of servers in the network, for example. If the server election module 250 determines that the received server capabilities, network server lists, and network specific parameters allow its election as server in the network 100, at step 3700, the server election module 250 may enable the server node 110 to be elected as a server in the network 100. The process may then go to step 3800 and end.
If at step 3500, the server election module 250 determines that the received server capabilities, network server lists, and network specific parameters do not allow the server node's election as a server in the network 100, at step 3600, the server election module 250 may enable the server node 110 to assume the role of a client in the network 100. The process may then go to step 3800 and end.
The server election module 250 may set a timer to a predetermined time limit to receive responses from other servers. The timer may be incremented or decremented in any manner known to one of skill in the art. If the server election module determines that the timer has expired, then the server election module may determine if the one or more of received server capabilities, network server lists and network specific parameters allow its election as a server in the network.
The server node 110 illustrated in
Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
The operations and functions of the server discovery and selection module 450 and server election process will be discussed in relation to the flowchart in
At step 5300, the server discovery and selection module 450 may receive advertisements from one or more servers 110 in the network 100 in response to the server discovery request through the communication interface280. The one or more servers 110 may match the type of server requested and the advertisements may contain at least stability and connectivity information, for example. The stability information may include a measurement of a server's relative mobility in the network. The relative mobility may include the level of mobility of the server relative to its neighbors within a predetermined number of hops. As such, relative mobility may be a measure of how fast a node is moving within its network. A very stable node means that its relative mobility is low (infrequent change in neighbors), and a very unstable node means that its relative mobility is high (frequent change in neighbors).
The connectivity information may include at least one of strength of a server's connectivity, robustness of a server's connectivity, and load capacity information. The connectivity of a server, in one aspect, may be a measure of how reliable the server is expected to be. For example, having a higher number of one hop neighbors, in general, increases the strength or level of connectivity of that server because the server can be reached by routing packets through any one of the one hop neighbors.
At step 5400, the server discovery and selection module 450 may select a server based on the received stability and connectivity information for each server 110 from which advertisements are received. For example, the server reporting the highest weighted average of stability and connectivity may be selected. Some embodiments may consider additional factors such as, for example, reported server capabilities, reported server load, and the mobility of the client node. The process may then go to step 5500 and end.
After server selection, the server discovery and selection module 450 may monitor the performance of the selected server 110 and determine if the selected server's performance exceeds a predetermined threshold. If the server discovery and selection module 450 determines that the selected server's performance does not exceed a predetermined threshold, the server discovery and selection module may reselect another server 110 in the network 100.
Reselection may be based on route triggers or application layer policy triggers. With regard to route triggers, the server's performance may be one of reachability to the selected server and route cost (number of hops) between the selected server 110 and the client node 130. For example, a route trigger may be activated to select a new server if the route cost (e.g., hop count) exceeds a predetermined threshold at any time. With regard to application layer policy triggers, the server's performance may be an evaluation of one or more metrics that may include at least one of packet round trip time, stability of the server 110, and connectivity of the server 110. For example, a client node may monitor a packet round trip time to the server at intervals and activate the reselection process if the round trip time exceeds a predetermined threshold. Connectivity refers to the number of one hop neighbors that the server has. Performance may be monitored, for example, by determining if a server has a minimum level of connectivity in each time interval.
The stability of the server 110 may be defined based on how many neighbors of a server remains the same over a time period.
where the stability of node x is based on its set of neighbors N (taken to be one hop neighbors) at two consecutive points in time. This may be referred to as the stability metric. Performance may be monitored by, for example, comparing the stability metric of a server at each time interval against a predetermined threshold.
Embodiments within the scope of the present disclosure may also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection 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 the computer-readable media.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, objects, components, and data structures, etc. that 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 steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
Although the above description may contain specific details, they should not be construed as limiting the claims in any way. Other configurations of the described embodiments of the disclosure are part of the scope of this disclosure. For example, the principles of the disclosure may be applied to each individual user where each user may individually deploy such a system. This enables each user to utilize the benefits of the disclosure even if any one of the large number of possible applications do not need the functionality described herein. In other words, there may be multiple instances of the components in the disclosed embodiments each processing the content in various possible ways. It does not necessarily need to be one system used by all end users. Accordingly, the appended claims and their legal equivalents should only define the disclosure, rather than any specific examples given.
This application claims priority from U.S. Provisional Patent Application Ser. No. 61/050,381, filed May 5, 2008, the contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61050381 | May 2008 | US |