Abstract:
A user interface enables the input of text and other complicated inputs by identifying entities having an increased likelihood of being selected and decreasing the precision needed to select these entities. The user interface displays a set of entities in a radial pattern. The user manipulates a pointer with a joystick or other input device to select entities. The entities having a higher selection probabilities are allocated more space in the pattern than the other entities. The entities having a higher selection probabilities may also be emphasized with visual cues. Selection probabilities may be determined by comparing a sequence of entities previously selected, such as a partially input word, with a set of commonly selected sequences of entities, such as a set of words commonly used by users. The user interface can display a list of words corresponding with a sequence of selected entities, including characters from different writing systems.
Abstract:
An overlay network uses flexible neighbor selection based on network address translation (NAT) to define routing between nodes. The NAT type is used as a flexible neighbor selection criteria, either alone or in conjunction with other criteria. A method of selecting a neighboring node for a first node in a distributed hash table network includes determining a desired key value for a node finger table entry and requesting a set of candidate neighboring nodes near this desired key value. The method determines a network address translation type of each of the set of candidate neighboring nodes and ranks the set of candidate neighboring nodes accordingly. The method selects one of the set of candidate neighboring nodes based on the ranking. The NAT types of candidate neighboring nodes are determined by sending probe messages or from data received from a central overlay network server.
Abstract:
A host running an HTTP server behind a Network Address Translator (NAT) connected to an IP network uses a NAT-discovery process, e.g., a STUN test to determine the presence of the NAT. The host updates information in a redirect server based on the response of a relay server. An HTTP client host initiates a DNS query which connects it to the redirect server. The HTTP client host sends a HTTP request to the redirect server, which in turn redirects the HTTP request to a port on the packet relay server. The packet relay server relays the HTTP request to the HTTP server behind the NAT, which generates an HTTP response that is relayed back to the HTTP client. Seamless communication in an IP network is made possible by using a DDNS server that is updated using a user registration database. The IP network may have hosts located behind the NATs and hosts that are directly connected to the IP network.
Abstract:
Handling of multiple connections during NAT traversal for a node behind a symmetric NAT is disclosed. The likelihood of connection failure during symmetric NAT traversal may be reduced by serializing critical time windows after port prediction. Once port prediction has begun for a first connection, port prediction for a subsequent connection may be delayed until a connectivity check has begun for the first connection. This process may be repeated to handle NAT traversal for multiple simultaneous connections to different nodes.
Abstract:
Network bandwidth detection and distribution and prioritizing network traffic among two or more distinct channels of communication within a single application in a node configured to communicate with one or more other nodes over a network is disclosed. An available bandwidth may be detected for communication between the first node and a second node. A distribution may be determined for the available bandwidth among the two or more communication channels. A sending rate may be adjusted for data sent from the first node to the second node over one or more of the two or more communication channels in response to a detected change in the available bandwidth. For a particular time quantum, a bandwidth quantum may be distributed amongst two or more communication channels according to priorities associated with those channels.
Abstract:
Broadcast messages are efficiently directed to nodes of an overlay network. Broadcast messages include an End ID parameter specifying the range of key values for nodes that should receive the broadcast message. Each node of an overlay network maintains a list of finger nodes and their respective key values. Upon receiving a broadcast message, a node assigns a finger node a new End ID value based upon the End ID value of the broadcast message or the key value of an adjacent finger node. The node compares a finger node's new End ID value with the finger node's key value to determine whether to forward the broadcast message to that finger node. A broadcast message forwarded to a finger node includes an End ID parameter equal to the new End ID value determined for the finger node. Nodes can aggregate response messages from its finger nodes.
Abstract:
Methods of operating a first endpoint device (ED) facilitate the making of a peer-to-peer (P2P) connection between the first ED and a second ED despite intervening network address translators (NATs) at both ends. The P2P connection extends across a system compliant with the internet protocol (IP) whose architecture that includes a first network (having at least the first ED and a first NAT), a second network (having at least the second ED and a second NAT) and a third network. The first ED connects to the third network via the first NAT while the second ED connects to the third network via the second NAT. A first such method includes: providing the second ED with the first IP-address/port pair; and providing the second ED with first type-information regarding the type of the first NAT.
Abstract:
The distribution of content over a peer to peer (P2P) network can be improved by utilizing at least one broadcast of the content in order to quickly seed the P2P network. When content is first to be distributed across the network, a broadcast can be scheduled that each peer device with broadcast receiving capability and within range of the broadcast is able to receive. As soon as a peer device receives at least a portion of the broadcast content, that peer can begin redistributing the content across the P2P network. Any errors or missing portions of the received broadcast content can be corrected by requesting a copy of the missing or incorrect portion from another peer on the P2P network.
Abstract:
Network bandwidth detection and distribution and prioritizing network traffic among two or more distinct channels of communication within a single application in a node configured to communicate with one or more other nodes over a network is disclosed. An available bandwidth may be detected for communication between the first node and a second node. A distribution may be determined for the available bandwidth among the two or more communication channels. For a particular time quantum, a bandwidth quantum may be distributed amongst two or more communication channels according to priorities associated with those channels.
Abstract:
Broadcast messages are efficiently directed to nodes of an overlay network. Broadcast messages include an End ID parameter specifying the range of key values for nodes that should receive the broadcast message. Each node of an overlay network maintains a list of finger nodes and their respective key values. Upon receiving a broadcast message, a node assigns a finger node a new End ID value based upon the End ID value of the broadcast message or the key value of an adjacent finger node. The node compares a finger node's new End ID value with the finger node's key value to determine whether to forward the broadcast message to that finger node. A broadcast message forwarded to a finger node includes an End ID parameter equal to the new End ID value determined for the finger node. Nodes can aggregate response messages from its finger nodes.