WO2008048650A2 - Method for enabling a wireless client to locate other wireless clients - Google Patents

Method for enabling a wireless client to locate other wireless clients Download PDF

Info

Publication number
WO2008048650A2
WO2008048650A2 PCT/US2007/022188 US2007022188W WO2008048650A2 WO 2008048650 A2 WO2008048650 A2 WO 2008048650A2 US 2007022188 W US2007022188 W US 2007022188W WO 2008048650 A2 WO2008048650 A2 WO 2008048650A2
Authority
WO
WIPO (PCT)
Prior art keywords
wireless
client
clients
network
detected
Prior art date
Application number
PCT/US2007/022188
Other languages
French (fr)
Other versions
WO2008048650A3 (en
Inventor
Andrea G. Forte
Vishal Singh
Henning Peters
Henning Schulzrinne
Original Assignee
The Trustees Of Columbia University In The City Of New York
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by The Trustees Of Columbia University In The City Of New York filed Critical The Trustees Of Columbia University In The City Of New York
Publication of WO2008048650A2 publication Critical patent/WO2008048650A2/en
Publication of WO2008048650A3 publication Critical patent/WO2008048650A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery

Definitions

  • the disclosed subject matter relates to systems and methods for enabling a wireless client to locate other wireless clients that are proximate to it.
  • GSM Global System for Mobile communications
  • UMTS Universal Mobile Telecommunications System
  • WiFi wireless fidelity
  • Bluetooth Bluetooth
  • IM instant messenger
  • Another existing application is a collaboration tool that allows clients (e.g. electronic wireless devices communicating wirelessly with a network) to create an ad-hoc network and collaborate with each other.
  • clients e.g. electronic wireless devices communicating wirelessly with a network
  • this application works in ad-hoc mode only and it does not introduce any social aspects.
  • Information about users, such as profiles or web pages, is not available at all. Only presence information is available (e.g., online, offline, or busy).
  • Yet another application uses Bluetooth to send out a short-range beacon.
  • a server looks for their profiles.
  • the profiles are stored on the server. If there is a match, each user gets the other user's name, thumbnail photo, and common interests on his or her cell phone.
  • the server scans for user identifiers every sixty seconds and takes about five seconds to find a match.
  • the application depends on profiles that users write about themselves.
  • the application allows a user to "weight" his or her profile to emphasize interests that are important for the user's current social situation. This application works only at close range, and cannot go past one single hop in an ad hoc network scheme. Further, this application needs network access at all times, because it cannot function without a centralized server. This application is only used to exchange profile information, and nothing more.
  • Another application allows users to detect other users to play games and share applications. However, this application only allows discovery on a user's subnet and does not provide a way to fine-tune the discovery process.
  • Still another application allows users that are connected to a network or within close range of each other via WiFi to browse each other' s IPodTM music library.
  • a method is disclosed of enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points.
  • the method comprises: the steps of detecting wireless access ' points to the network within range of the particular wireless client; establishing communication between the network and the particular wireless client via one of the detected wireless access points; providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and establishing direct communication between the particular wireless client and at least one of the other wireless clients.
  • a system for enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points.
  • the system comprises: means for detecting wireless access points to the network within range of the particular wireless client; means for establishing communication between the network and the particular wireless client via one of the detected wireless access points; means for providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and means for establishing direct communication between the particular wireless client and at least one of the other wireless clients.
  • a method is disclosed of enabling a particular wireless client to locate ad hoc networks that are proximate to the particular wireless client and beyond the range of the particular wireless client.
  • the method comprises the steps of: detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and receiving by the particular wireless client a list of the networks that are in the subset.
  • a system is disclosed of enabling a particular wireless client to locate wireless networks that are proximate to the particular wireless client and beyond a range of the wireless client.
  • the system comprises: means for detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; means for establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; means for providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; means for instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and means for receiving by the particular wireless client a list of the networks that are in the subset.
  • Fig. 1 is an illustrative block diagram of a social networking system in infrastructure mode, according to one embodiment of the disclosed subject matter.
  • Figs . 2A-2B are illustrative flow diagrams of the operation of a social networking system in infrastructure mode, according to one embodiment of the disclosed subject matter.
  • Fig. 2C is an illustrative flow diagram showing details of box 210 of Fig. 2A.
  • Fig. 2D is an illustrative flow diagram showing details of box 216 of Fig. 2B.
  • Fig. 3A is an illustrative schematic diagram of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter.
  • Fig. 3B is another illustrative schematic diagram of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter.
  • Fig. 4 is an illustrative flow diagram of the operation of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter.
  • the disclosed subject matter provides, among other things, a social networking system and method that enable users, using wireless devices (i.e., clients), to discover other users (also using wireless devices) that are located physically close to them (e.g., within a few city blocks, within the same neighborhood, or within the same town or city, referred to below as "users proximate to each other" or a similar expression) and establish a social activity with them.
  • wireless devices i.e., clients
  • users also using wireless devices
  • the system and method help users to discover other users around them at any point in time and enable them to communicate with each other for both work and leisure.
  • the system and method also enable users proximate to each other to share resources and collaborate with each other.
  • the social networking system and method enable proximate users to engage, for example, in instant messaging (IM), chat conferences, file and folder sharing, streaming audio and video sharing, multiplayer games, screen sharing, and shared editing.
  • IM instant messaging
  • chat conferences conferencing conferences
  • file and folder sharing streaming audio and video sharing
  • multiplayer games multiplayer games
  • screen sharing and shared editing
  • services based on a user' s location such as receiving advertisements for a store when the user is physically located near the store, for example.
  • the social networking system and method help users to dynamically find and create local communities of users regardless of wireless Internet connectivity.
  • the system and method enable service discovery and on- demand services by finding information about people in their own surroundings. For example, a user asks for players to join his online game rather than locating running instances of the game.
  • the disclosed subject matter provides for two distinct modes of operation of the social networking system. The two modes of operation are an "infrastructure mode" and an “ad-hoc mode.”
  • clients initially communicate with a central server for registering onto the server and to discover proximate clients, and then the proximate clients by-pass the central server for communication with each other.
  • the ad-hoc mode there is no central server and discovery of proximate clients (also sometimes referred to below as neighbors) is performed in a peer-to-peer manner.
  • the social networking system includes a centralized server 110, a network 150, access points (sometimes referred to below as APs) 130a, 130b, 130c, and wireless devices (i.e., clients) 120a, 120b, 120c, 12Od.
  • the access points 130a, 130b, 130c provide clients with wireless connectivity to the network 150.
  • the centralized server 110 is in communication (wireless or wired) with the network 150.
  • the clients 120a, 120b, 120c, 12Od are capable of establishing wireless communication with the network 110 via the APs 130a, 130b, 130c.
  • the network 150 can be a local area network (wired or wireless), a wide area network, the Internet, or the World Wide Web, for example. In other embodiments, more or fewer clients and APs can be included.
  • the clients 120a, 120b, 120c, 12Od can be mobile phones, smart phones, personal data assistants, notebook or laptop computers, or any other wireless communication device that includes networking functionality . Referring to Figs. 2A-2B, in one embodiment, an illustrative flow diagram of the operation of the social networking system in the infrastructure mode is shown.
  • software residing on the client executes the various client-side functions described below. Further, various functions executing on the client are user-configurable via a graphical user interface (GUI - not shown) . Moreover, software residing on the server 110 executes the various server- side functions described below.
  • GUI graphical user interface
  • a user with a particular client 120a scans all channels of the wireless medium to locate any wireless access points (e.g., 130a, 130b, 130c) within the client's reception range (see box 202) . The scanning of the wireless medium is achieved via methods and technologies known to those ordinarily skilled in the art.
  • the client 120a After the client 120a scans the wireless medium, the client 120a builds a list of all APs 130a, 130b, 130c within the client's range (see box 204). Each AP 130a, 130b, 130c is uniquely identified by its basic service set identifier (BSSID) , which in some embodiments is the media access control (MAC) address.
  • BSSID basic service set identifier
  • MAC media access control
  • the client 120a connects to a particular AP, which likely is the closest AP 130a (see box 206) using methods known to those ordinarily skilled in the art. Whether or not a client successfully connects to a particular AP is determined by each AP' s signal to noise ratio (SNR), and/or other metrics, such as the AP' s available bandwidth, available throughput, and packet loss, for example.
  • SNR signal to noise ratio
  • the client 120a registers itself with the server 110 (see box 208) by transmitting its own Internet Protocol (IP) address and port number.
  • IP Internet Protocol
  • Client registration also includes the client 120a transmitting to the server 110 all (or a subset, as explained below) of the BSSIDs associated with the APs 130a, 130b, 130c that it detected during the scanning represented in box 202, including the BSSID of the particular AP 130a that the client 120a is connected to.
  • the client 120a also transmits the signal strength values associated with each BSSID.
  • Other kinds of information such as geographic location information, also can be transmitted to the server 110 at this time.
  • the client's location can be determined from an extended service set identifier that is uniquely associated with a single access point or a group of access points.
  • the operations depicted in boxes 202-208 occur when a user is initially connecting to the social networking system, or when the user is moving such that the user moves away from a first AP and closer to a second AP. As the client moves farther away from the first AP and closer to the second AP, the client will break its connection with the first AP and establish a connection with the second AP. This operation can be accomplished automatically and is transparent to the user, or it can be selectively executed by the user. The client follows the same operations as depicted in boxes 202-208 to establish a connection with the second AP. In one embodiment, once the client 120a has registered with the server 110, a registration timer is started.
  • the client 120a must periodically execute some action that will inform the server 110 that the client 120a is still connected.
  • the action must be executed within the time interval (e.g., every 3 minutes) of the registration timer.
  • Such actions can include querying the server (discussed in detail below) , retransmitting its own IP address to inform the server 110 that it is still connected, or any action that involves the client 120a interacting with the server 110.
  • Such a mechanism can also be used to refresh information on the server 110 (e.g., updating current SNR values) .
  • the registration timer is refreshed and the process repeats. If there is no client-to-server interaction by the time the registration timer expires, then the server 110 assumes that the client 120a is no longer connected.
  • boxes 202-208 occur passively, and are transparent to the user. They only require that the client 120a (i.e., the wireless device) be activated, within range of an AP, and configured (via software residing on the client) to execute such operations.
  • the client 120a i.e., the wireless device
  • the client 120a then queries the server 110 to identify other clients (e.g., 120b, 120c, 12Od) connected to any of the APs 130a, 130b, 130c that are within the range of the client 120a.
  • the server 110 maintains a database including a list of the connected clients (e.g., 120a, 120b, 120c, 12Od), each connected client's IP address and port number, and to which AP (e.g., 130a, 120b, 130c) each client 120a, 120b, 120c, 12Od is connected.
  • the database also stores received AP information (e.g., BSSID, signal strength, etc.).
  • FIG. 2C an illustrative flow diagram providing details of box 210 is shown.
  • the user has the option of filtering the results (i.e., the list of other clients proximate to the user) returned by the server 110.
  • the filtering criteria can be inputted via the GUI executing on the client 120a.
  • the filtering is achieved by the client transmitting a subset of BSSIDs, rather than all the- BSSIDs obtained from initially scanning the wireless medium.
  • the BSSIDs can be filtered according to one or more criteria, such as a desired maximum number of returned proximate users, signal to noise ratio (i.e., other user's relative distance from the user employing client 120a) , location (ESSID) , or other information.
  • Different values of signal strength (i.e., signal to noise ratio) for different APs can provide a first order approximation of the relative distance between the client (e.g., 120a) requesting such information and other clients (e.g., 120b, 120c, 12Od) .
  • each AP 130a, 130b, 130c has a certain range and covers a certain area.
  • the client can query the server 110 for other clients (e.g., 120b, 120c, 12Od) in communication with one or more BSSIDs.
  • Information about relative distances of the other clients can represent a first order metric for creating groups, for example.
  • the client 120a checks whether the query is to be filtered (see box 210b) . If the query is to be filtered, the client 120a filters the list of BSSIDs according to the filter requirements (see box 210c) , and transmits only the resulting BSSIDs to the server 110 (see box 21Oe) . If the query is not to be filtered, the client 120a transmits all of the BSSIDs to the server 110 (see box 21Id) .
  • the server 110 transmits a list of IP addresses or IP addresses and port numbers of the clients (e.g., 120b, 120c, 12Od) (or any other information associated with the clients) currently connected to the APs (e.g., 130a, 130b, 130c) with the BSSIDs transmitted (per box 21Od or 21Oe) to the server 110 by the client 120a (see box 212) .
  • the clients e.g., 120b, 120c, 12Od
  • the APs e.g., 130a, 130b, 130c
  • the client 120a After the client 120a receives the list of IP addresses or IP addresses and port numbers (or other information) from the server 110, the client 120a contacts each of the other clients (e.g., 120b, 120c, 12Od) (using the received IP addresses or IP addresses and port numbers) to request the associated user's profile (see box 213). Each of the other clients (e.g., 120b, 120c, 12Od) transmits the associated user' s profile directly to the requesting client 120a.
  • each of the other clients e.g., 120b, 120c, 12Od
  • a user profile can include a user's web page, web log, interests, list of preferred games, and list of preferred applications. Moreover, each user can have more than one profile and decide which one to make available according to the particular social situation
  • the centralized server 110 is only used for discovering other proximate clients and community service, such as advertisements, for example. User's personal information is exchanged only directly between clients (i.e., end to end).
  • the user has the option of further filtering the list of proximate clients (e.g., 120b, 120c, 12Od) based on aspects of the associated user's profile (see box 214). For example, a user can configure the client 120a, via the GUI, to list only users that list basketball as a hobby in their profile. When the client 120a receives the profiles for each of the IP addresses returned from the server 110, the client 120a then further filters the profiles according to the user's requirements.
  • proximate clients e.g., 120b, 120c, 12Od
  • client 120a directly contacts one or more of the listed clients 120b, 120c, 12Od (see box 216) .
  • client 120a connects to the network 110 via AP 130a and sends data packets that are transmitted to a router (not shown) .
  • the router routes the data packets from the client 120a to AP 130c, which is the connection point for client 12Od.
  • the server 110 is completely bypassed.
  • FIG. 2D an illustrative flow diagram providing details of box 216 is shown.
  • the client 120a determines if the particular client (e.g., 12Od) for which contact is desired, is directly reachable (See box 217a) . If the particular client 12Od is directly reachable (i.e., connected to the network 150 via a public network or sub-network) , the client 120a and the client 12Od can then communicate with each other directly, and bypass the server 110 (see box 217b) .
  • the particular client e.g., 12Od
  • the client 120a and the client 12Od can then communicate with each other directly, and bypass the server 110 (see box 217b) .
  • the client 120a and the client 12Od must communicate with each other via one or more proxies (see box 217c) .
  • the client 120a can either query the server 110 periodically for a current list of connected proximate clients (e.g., 120b, 120c, 12Od), or the client 120a can employ a session initiating protocol (SIP) presence-like mechanism.
  • SIP session initiating protocol
  • the client 120a has subscribed to a presence service offered by the server 110.
  • the server 110 sends the client 120a a list of the clients that have had a change in status (i.e., a client has disconnected from, or connected to, the network), as shown in box 218 of Fig. 2B.
  • a change in status i.e., a client has disconnected from, or connected to, the network.
  • no explicit polling of information on the server 110 is required of the client 120a.
  • a client e.g., 120a
  • an AP e.g., 130a
  • the client sends its IP address and other information to the server 110.
  • the new user receives a list of proximate users (i.e., clients 120b, 120c, 12Od).
  • the proximate users i.e., clients 120b, 120c, 12Od
  • Any user (client) may disconnect from the network 110 by one of two methods.
  • the first method simply involves the user intentionally logging off (i.e., the client disconnects from the network 150) .
  • the disconnecting user (client) sends a message to the server 150 that he is disconnecting.
  • the server 150 sends a message (i.e., an update) to the other users (clients) informing them that the particular user (client) has logged off or disconnected from the network.
  • the second method involves the registration timer maintained by the server 110 for each connected client (previously discussed above) .
  • the server 110 If the server 110 has not received an update from a particular client (i.e., retransmission of the particular client's IP address or some other client-server interaction) within a predetermined time interval (i.e., the registration timer expires), the server 110 removes the record of that particular client and transmits an update to all of the remaining clients .
  • a predetermined time interval i.e., the registration timer expires
  • the server 110 removes the record of that particular client and transmits an update to all of the remaining clients .
  • Figs. 3A and 3B illustrative schematic diagrams of a social networking system in ad hoc mode are shown. In ad hoc mode, there is no infrastructure support (i.e., no APs and no server to query) .
  • the network is made up of one or more clients (e.g., wireless devices such as cell phones, personal data assistants, or notebook computers) . If there are two or more clients, the clients are wirelessly connected to each other.
  • An ad hoc network dynamically varies as clients connect and disconnect .
  • the social networking system includes networks 300, 302, 304, 306, and 308.
  • the social networking system is a larger system and includes networks 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, and 330.
  • networks e.g., networks 300, 302, 304, 306, and 308 can detect each other by advertising themselves as an ad-hoc network with a certain extended service set identifier (ESSID) and BSSID.
  • ESSID extended service set identifier
  • BSSID basic service set identifier
  • the number of networks that a client can directly detect is limited by the reception range of the wireless card used in the wireless device.
  • a client can use multi-hop routing, which is discussed in detail below.
  • a client 301 scans passively (i.e., scans for periodic broadcasts of network beacons) or actively (i.e., transmits a request for any available networks to transmit their ESSID/BSSIDs and other security information) all channels of the wireless medium to locate any wireless access points or ad hoc networks within the client's transmission range (shown by the dashed line 309 in Fig. 3A) (see box 402) .
  • the client 301 detects any APs (see box 404), the client 301 attempts to connect to a detected AP with the best network conditions (e.g., SNR, congestion level, bit error ratio, etc.) using the above-described infrastructure mode (see box 406) . If the connection attempt was successful (see box 408), the client is connected to the network in infrastructure mode (see box 410) .
  • the best network conditions e.g., SNR, congestion level, bit error ratio, etc.
  • the client 301 did not detect any APs (or detected APs whose network conditions would prevent the client 301 from connecting to it and/or experiencing a minimum level of connection quality) but detected a network that is in ad hoc mode (e.g. network 302) (see box 412), the client 301 switches to ad hoc mode and establishes communication with the detected ad hoc network (e.g., network 302) (see box 414) .
  • ad hoc mode e.g. network 302
  • the client 301 If the client 301 did not detect any networks in ad hoc mode, the client 301 starts a timer (see box 416) and transmits its own beacon (see box 418) . The client 301 then checks to see if the timer has lapsed (see box 420) . If the timer has not elapsed, the client 301 continues to transmit its own beacon (see box 418) . If the timer has lapsed, the client 301 again scans all channels of the wireless medium for APs and ad hoc networks (see box 402). This process continues until the client 301 detects and establishes communication with an AP or a network in ad hoc mode. Further, it should be noted that the BSSID that is transmitted by the client 301 is unique. Each of the networks within range of the client 301 will transmit to it a unique BSSID. Once the client has connected to the ad hoc network, the client can request the IP addresses of all the other clients to determine who is part of the same network .
  • a particular client wishes to disconnect from an ad hoc network
  • the particular client broadcasts a message to the other clients in the ad hoc network indicating that the particular client is leaving.
  • the clients in the network can each have timers that are reset each time the other clients in the ad hoc network transmit their respective IP addresses to indicate that they are still connected to the ad hoc network. If a particular timer times out (i.e., is not reset by a received IP address), the client associated with the particular timer is assumed to have disconnected from the network and is deleted from the list of clients connected to the network.
  • a client in order to discover other networks beyond the range of its wireless card, a client (e.g., client in network 300) can use multi-hop discovery.
  • the client in network 300 can discover proximate networks (e.g., networks 304, 306, 308) beyond its wireless range (shown by dashed line 309) by having another client (e.g., a client in network 302) relay discovery packets (i.e., tells other clients to send their scan results and their IP addresses) from the client in network 300 to other clients within the range of the relay client in network 302.
  • proximate networks e.g., networks 304, 306, 308
  • another client e.g., a client in network 302
  • relay discovery packets i.e., tells other clients to send their scan results and their IP addresses
  • the client in network 300 could request that a client in network 302 transmit the BSSIDs of all the networks within its range (shown by dashed line 307), such as networks 304, 306, and 308 (i.e., first hop). Further, the client in network 300 could also request that a client in network 302 forward a request for BSSIDs to a client in network 304 (i.e. second hop) to discover the networks that are within the range of the client in network 304.
  • This neighbor discovery process i.e., multi-hop discovery
  • discovering networks beyond a certain number of hops is impractical because, after a few hops, the networks are not considered proximate to the client originating the search.
  • a method of limiting neighbor discovery (in an ad hoc network) to a certain distance (i.e., limiting the number of discovery hops) from the client initiating discovery involves programming relay clients to follow a certain discovery policy.
  • relay clients are instructed to forward discovery packets to other clients to determine if the receiving client can detect at least a subset of the BSSIDs detected by the client making the initial discovery request (i.e., transmitting the discovery packets) .
  • the client that receives the discovery packets must have within its range at least one (or two, or three, etc) network that is also within the range of the client originally transmitting the discovery packets in order for it to be considered a proximate neighbor.
  • This policy is described in further detail below and can be either enforced or user configurable.
  • a client in network 310 has a range shown by the dashed line 332, which includes networks 312, 314, 316, 318; a client in network 316 has a range shown by dashed line 338 which includes networks 310, 318, 320; a client in network 320 has a range shown by dashed line 334, which includes networks 316, 318, 322, 324; a client in network 324 has a range shown by dashed line 340, which includes networks 320, 322, 326; and a client in network 326 has a range shown by dashed line 336, which includes networks 322, 324, 328, 330.
  • the client in network 310 can establish direct communication with a client in any of the proximate networks (i.e. networks 312, 314, 316, 318), and can also discover networks beyond its range (e.g., networks 320, 322, 324, etc) by transmitting discovery packets to a client in network 316, for example.
  • discovery packets i.e., a request to other clients in the same or different networks to transmit information regarding the networks that the other clients see
  • the client in network 316 returns to the client in network client 310 a list of BSSIDs of the networks within its range (shown by dashed line 338), which includes networks 310, 318, and 320.
  • the client in network 310 could then request that the client in network 316 relay the discovery packets to a client in network 320. In this manner, the client in network 310 can discover the networks that are within the range of the client in network 320 (shown by dashed line 334) .
  • a client in network 310 and a client in network 320 share a subset of networks within their respective ranges, namely network 316 and network 318, which is why network 320 is considered a proximate neighbor of network 310 even though network 320 is not within the range of network 310. Further, a client in network 310 can send discovery packets to a client in network 320 to discover all the networks within its range, namely networks 316, 318, 322, 324.
  • the networks 322, 324 are not considered proximate neighbors of network 310, and neighbor discovery stops with network 320. Further, the list of networks within the range of network 320 that is transmitted by a client in network 320 to a client in network 310 will only include networks 316, 318. Further, a client can also discover the particular clients in the same network by receiving the IP addresses of the clients in the same network using the discovery method described above.
  • a user can choose to filter the list of proximate clients returned by the server according to relative distance. For example, assuming a typical AP has a range of 400 feet in diameter, a user can instruct the client to filter the returned list to show only other clients within 400 feet. This filter would result in a list including only clients in communication with the same AP as the user. Similarly, the user can instruct the client to filter the returned list to show only other clients within 800 feet. This filter would result in a list including clients in communication with the same AP as the user and clients in communication with a neighboring AP.
  • a user can instruct client to filter the returned list to show only clients within a shorter distance (e.g., 50 feet). This is accomplished by the client transmitting a signal via infrastructure mode to all the other detected clients requesting that all the other clients in infrastructure mode temporarily switch to ad hoc mode, which typically has a shorter range than infrastructure mode, and broadcast their beacon. In response to the signal, the other clients switch to ad hoc mode and transmit their respective beacons. Likewise, the requesting client also switches to ad hoc mode and executes a scan (actively or passively) for the transmitted beacons of all or some of the clients that switched from infrastructure mode.
  • a shorter distance e.g. 50 feet
  • the client collects the BSSIDs of the transmitting clients and, based on the signal strength of the BSSIDs, signal to noise ration (SNR), or other parameters, determines the approximate distance of each of the transmitting clients, and produces a list of clients within 50 feet. Thereafter, all the clients switch back to infrastructure mode and resume normal operation. This process is typically transparent to the user.
  • SNR signal to noise ration
  • Whether the client in infrastructure mode is idle and, therefore, available for relaying data can be determined by various means, such as monitoring the client's keyboard activity, for example.
  • the client that is capable of relaying data for clients in ad hock mode can share its Internet connection with other clients in ad hoc mode without any noticeable degradation in functionality or performance.
  • a client connected to the Internet via an AP i.e., connected using infrastructure mode
  • the client in ad hoc mode direct Internet connectivity.
  • the client in infrastructure mode does not have to switch back and forth between infrastructure mode and ad hoc mode and relay information for the client ad hoc mode.
  • the client in ad hoc mode accesses the Internet directly through the client in infrastructure mode. In one embodiment, this is achieved by the client acting as the proxy having two wireless cards, one for connecting to the AP and one for connecting to the client needing the proxy.
  • the client acting as the proxy includes a wired Internet connection and a single wireless card for communication with the client needing the proxy.
  • the social networking system can provide a community rating platform.
  • the server maintains a list of ESSID or BSSID-to-web page associations, which allows the server to map a web page to a particular location.
  • Each web page could be a community-maintained web page located on the server. For example, a web page could be provided summarizing users' opinions on services provided at that particular location.
  • the social networking system provides a distributed computing environment.
  • a client can make use of idle processing resources that are provided by other proximate clients.
  • local computational resources might not be sufficient to run an application in an expected manner.
  • Devices, such as PDAs or Smart Phones that have low computational resources may need, in addition, to use the computational power of neighboring devices .
  • a phone that is able to display real time video but is not able to decode compressed video in real time could use a proximate client's computational power to decode such video.
  • links can be dynamically generated according to keywords typed by users during a chat, for example. These links can either be pointers to web pages containing particular documents or the links can be pointers to web sites of companies that paid for advertising bandwidth. Advertisements could be tailored according to the specific interests of a user. For example, a user could be instant messaging another user regarding meeting for coffee. The term "coffee" could be used to direct the users to a website of coffee shop in their local neighborhood, or the term coffee could trigger an advertisement for a local coffee shop.

Abstract

A system and method of enabling a particular wireless client to locate other proximate wireless clients are presented. The other clients are in communication with a network and a central server via wireless access points. The particular wireless client scans communication channels of a wireless medium to detect wireless access points to the network, and establishes communication with the network and the server via a selected one of the detected wireless access points. The particular wireless client obtains from the server identities of other wireless clients in communication with the server via at least one of the detected wireless access points, these being considered proximate clients, and establishes direct communication with at least one of the proximate clients. A system and method of enabling a particular wireless client to locate ad hoc networks that are proximate to the particular wireless client and beyond a range of the wireless client is also presented.

Description

Attorney Docket No. : 5654-11
SYSTEMS AND METHODS FOR ENABLING A WIRELESS CLIENT TO LOCATE OTHER WIRELESS CLIENTS THAT ARE PROXIMATE TO IT Cross Reference to Related Cases
This application claims priority to, and the benefit of, U.S. Patent Application Serial No. 60/852,449, filed October 17, 2006, and U.S. Patent Application Serial No. 60/903,197, filed February 22, 2007 the entirety of which is hereby incorporated herein by reference.
Field
The disclosed subject matter relates to systems and methods for enabling a wireless client to locate other wireless clients that are proximate to it.
Background
Current mobile devices and services are capable of establishing communication wirelessly using different access technologies, such as Global System for Mobile communications (GSM) , Universal Mobile Telecommunications System (UMTS) , wireless fidelity (WiFi), and Bluetooth, for example. Many services and applications are based on a central entity and do not consider the presence of users in the same location.
Some attempts have been made to enable a user (i.e. a person utilizing such services and/or applications) to locate and contact other people in the same location and develop or increase their local social network.
One such application involves an instant messenger (IM) that makes users aware of how far or close they are from each other. This application does not offer anything more than IM and requires Internet connectivity .
Another existing application is a collaboration tool that allows clients (e.g. electronic wireless devices communicating wirelessly with a network) to create an ad-hoc network and collaborate with each other. However, this application works in ad-hoc mode only and it does not introduce any social aspects. Information about users, such as profiles or web pages, is not available at all. Only presence information is available (e.g., online, offline, or busy).
Yet another application uses Bluetooth to send out a short-range beacon. When two or more people running the application (i.e. users) come into each other's range, their unique identifiers are sent to a server, which looks for their profiles. The profiles are stored on the server. If there is a match, each user gets the other user's name, thumbnail photo, and common interests on his or her cell phone. The server scans for user identifiers every sixty seconds and takes about five seconds to find a match. The application depends on profiles that users write about themselves. The application allows a user to "weight" his or her profile to emphasize interests that are important for the user's current social situation. This application works only at close range, and cannot go past one single hop in an ad hoc network scheme. Further, this application needs network access at all times, because it cannot function without a centralized server. This application is only used to exchange profile information, and nothing more.
Another application allows users to detect other users to play games and share applications. However, this application only allows discovery on a user's subnet and does not provide a way to fine-tune the discovery process.
Still another application allows users that are connected to a network or within close range of each other via WiFi to browse each other' s IPod™ music library.
Summary A method is disclosed of enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points. The method comprises: the steps of detecting wireless access ' points to the network within range of the particular wireless client; establishing communication between the network and the particular wireless client via one of the detected wireless access points; providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and establishing direct communication between the particular wireless client and at least one of the other wireless clients.
A system is disclosed for enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points. The system comprises: means for detecting wireless access points to the network within range of the particular wireless client; means for establishing communication between the network and the particular wireless client via one of the detected wireless access points; means for providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and means for establishing direct communication between the particular wireless client and at least one of the other wireless clients.
A method is disclosed of enabling a particular wireless client to locate ad hoc networks that are proximate to the particular wireless client and beyond the range of the particular wireless client. The method comprises the steps of: detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and receiving by the particular wireless client a list of the networks that are in the subset.
A system is disclosed of enabling a particular wireless client to locate wireless networks that are proximate to the particular wireless client and beyond a range of the wireless client. The system comprises: means for detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; means for establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; means for providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; means for instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and means for receiving by the particular wireless client a list of the networks that are in the subset. Brief Description of the Drawings
Fig. 1 is an illustrative block diagram of a social networking system in infrastructure mode, according to one embodiment of the disclosed subject matter.
Figs . 2A-2B are illustrative flow diagrams of the operation of a social networking system in infrastructure mode, according to one embodiment of the disclosed subject matter. Fig. 2C is an illustrative flow diagram showing details of box 210 of Fig. 2A.
Fig. 2D is an illustrative flow diagram showing details of box 216 of Fig. 2B.
Fig. 3A is an illustrative schematic diagram of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter.
Fig. 3B is another illustrative schematic diagram of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter. Fig. 4 is an illustrative flow diagram of the operation of a social networking system in ad hoc mode, according to one embodiment of the disclosed subject matter.
Detailed Description
The disclosed subject matter provides, among other things, a social networking system and method that enable users, using wireless devices (i.e., clients), to discover other users (also using wireless devices) that are located physically close to them (e.g., within a few city blocks, within the same neighborhood, or within the same town or city, referred to below as "users proximate to each other" or a similar expression) and establish a social activity with them.
The system and method help users to discover other users around them at any point in time and enable them to communicate with each other for both work and leisure. The system and method also enable users proximate to each other to share resources and collaborate with each other. The social networking system and method enable proximate users to engage, for example, in instant messaging (IM), chat conferences, file and folder sharing, streaming audio and video sharing, multiplayer games, screen sharing, and shared editing. Further, the social networking system and method enable services based on a user' s location, such as receiving advertisements for a store when the user is physically located near the store, for example. The social networking system and method help users to dynamically find and create local communities of users regardless of wireless Internet connectivity. Moreover, the system and method enable service discovery and on- demand services by finding information about people in their own surroundings. For example, a user asks for players to join his online game rather than locating running instances of the game. The disclosed subject matter provides for two distinct modes of operation of the social networking system. The two modes of operation are an "infrastructure mode" and an "ad-hoc mode." In the infrastructure mode, clients initially communicate with a central server for registering onto the server and to discover proximate clients, and then the proximate clients by-pass the central server for communication with each other. In the ad-hoc mode, there is no central server and discovery of proximate clients (also sometimes referred to below as neighbors) is performed in a peer-to-peer manner. The discovery process for both the infrastructure mode and the ad hoc mode is explained in detail below. Referring to Fig. 1, in one embodiment, an illustrative block diagram of a social networking system in infrastructure mode is shown. The social networking system includes a centralized server 110, a network 150, access points (sometimes referred to below as APs) 130a, 130b, 130c, and wireless devices (i.e., clients) 120a, 120b, 120c, 12Od. The access points 130a, 130b, 130c provide clients with wireless connectivity to the network 150. The centralized server 110 is in communication (wireless or wired) with the network 150. The clients 120a, 120b, 120c, 12Od are capable of establishing wireless communication with the network 110 via the APs 130a, 130b, 130c. In various embodiments, the network 150 can be a local area network (wired or wireless), a wide area network, the Internet, or the World Wide Web, for example. In other embodiments, more or fewer clients and APs can be included. In various embodiments, the clients 120a, 120b, 120c, 12Od can be mobile phones, smart phones, personal data assistants, notebook or laptop computers, or any other wireless communication device that includes networking functionality . Referring to Figs. 2A-2B, in one embodiment, an illustrative flow diagram of the operation of the social networking system in the infrastructure mode is shown. In a preferred embodiment, software residing on the client executes the various client-side functions described below. Further, various functions executing on the client are user-configurable via a graphical user interface (GUI - not shown) . Moreover, software residing on the server 110 executes the various server- side functions described below. In operation, a user with a particular client 120a, for example, scans all channels of the wireless medium to locate any wireless access points (e.g., 130a, 130b, 130c) within the client's reception range (see box 202) . The scanning of the wireless medium is achieved via methods and technologies known to those ordinarily skilled in the art.
After the client 120a scans the wireless medium, the client 120a builds a list of all APs 130a, 130b, 130c within the client's range (see box 204). Each AP 130a, 130b, 130c is uniquely identified by its basic service set identifier (BSSID) , which in some embodiments is the media access control (MAC) address.
Next, the client 120a connects to a particular AP, which likely is the closest AP 130a (see box 206) using methods known to those ordinarily skilled in the art. Whether or not a client successfully connects to a particular AP is determined by each AP' s signal to noise ratio (SNR), and/or other metrics, such as the AP' s available bandwidth, available throughput, and packet loss, for example. The client 120a then registers itself with the server 110 (see box 208) by transmitting its own Internet Protocol (IP) address and port number. Client registration also includes the client 120a transmitting to the server 110 all (or a subset, as explained below) of the BSSIDs associated with the APs 130a, 130b, 130c that it detected during the scanning represented in box 202, including the BSSID of the particular AP 130a that the client 120a is connected to. The client 120a also transmits the signal strength values associated with each BSSID. Other kinds of information, such as geographic location information, also can be transmitted to the server 110 at this time. In some embodiments, the client's location can be determined from an extended service set identifier that is uniquely associated with a single access point or a group of access points. The operations depicted in boxes 202-208 occur when a user is initially connecting to the social networking system, or when the user is moving such that the user moves away from a first AP and closer to a second AP. As the client moves farther away from the first AP and closer to the second AP, the client will break its connection with the first AP and establish a connection with the second AP. This operation can be accomplished automatically and is transparent to the user, or it can be selectively executed by the user. The client follows the same operations as depicted in boxes 202-208 to establish a connection with the second AP. In one embodiment, once the client 120a has registered with the server 110, a registration timer is started. In this embodiment, the client 120a must periodically execute some action that will inform the server 110 that the client 120a is still connected. The action must be executed within the time interval (e.g., every 3 minutes) of the registration timer. Such actions can include querying the server (discussed in detail below) , retransmitting its own IP address to inform the server 110 that it is still connected, or any action that involves the client 120a interacting with the server 110. Such a mechanism can also be used to refresh information on the server 110 (e.g., updating current SNR values) . After the client 120a retransmits its own IP address and port number to the server 110 (or executes some action to inform the server 110 that the client 120a is still connected) , the registration timer is refreshed and the process repeats. If there is no client-to-server interaction by the time the registration timer expires, then the server 110 assumes that the client 120a is no longer connected.
The above-described operations associated with boxes 202-208 occur passively, and are transparent to the user. They only require that the client 120a (i.e., the wireless device) be activated, within range of an AP, and configured (via software residing on the client) to execute such operations.
Per box 210, the client 120a then queries the server 110 to identify other clients (e.g., 120b, 120c, 12Od) connected to any of the APs 130a, 130b, 130c that are within the range of the client 120a. The server 110 maintains a database including a list of the connected clients (e.g., 120a, 120b, 120c, 12Od), each connected client's IP address and port number, and to which AP (e.g., 130a, 120b, 130c) each client 120a, 120b, 120c, 12Od is connected. The database also stores received AP information (e.g., BSSID, signal strength, etc.).
Referring to Fig. 2C, an illustrative flow diagram providing details of box 210 is shown. Per box 210a, before a query is actually sent by the client 120a to the server 110, the user has the option of filtering the results (i.e., the list of other clients proximate to the user) returned by the server 110. The filtering criteria (or requirements) can be inputted via the GUI executing on the client 120a. The filtering is achieved by the client transmitting a subset of BSSIDs, rather than all the- BSSIDs obtained from initially scanning the wireless medium. The BSSIDs can be filtered according to one or more criteria, such as a desired maximum number of returned proximate users, signal to noise ratio (i.e., other user's relative distance from the user employing client 120a) , location (ESSID) , or other information.
Different values of signal strength (i.e., signal to noise ratio) for different APs (e.g., 130a, 130b, 130c) can provide a first order approximation of the relative distance between the client (e.g., 120a) requesting such information and other clients (e.g., 120b, 120c, 12Od) . In particular, each AP 130a, 130b, 130c has a certain range and covers a certain area. This means that, depending on how far a client (e.g., 120a) wants to look for neighboring clients (e.g., 120b, 120c, 12Od), the client (120a) can query the server 110 for other clients (e.g., 120b, 120c, 12Od) in communication with one or more BSSIDs. Information about relative distances of the other clients (120a, 120b, 120c, 12Od) can represent a first order metric for creating groups, for example. Thus, if a client wants to contact other clients located in the same room, then the list of received clients can be filtered according to the signal strength of each client's AP.
The client 120a checks whether the query is to be filtered (see box 210b) . If the query is to be filtered, the client 120a filters the list of BSSIDs according to the filter requirements (see box 210c) , and transmits only the resulting BSSIDs to the server 110 (see box 21Oe) . If the query is not to be filtered, the client 120a transmits all of the BSSIDs to the server 110 (see box 21Id) .
Referring now to Fig. 2B, after the client 120a sends a query to the server 110 per box 210, the server 110 transmits a list of IP addresses or IP addresses and port numbers of the clients (e.g., 120b, 120c, 12Od) (or any other information associated with the clients) currently connected to the APs (e.g., 130a, 130b, 130c) with the BSSIDs transmitted (per box 21Od or 21Oe) to the server 110 by the client 120a (see box 212) . After the client 120a receives the list of IP addresses or IP addresses and port numbers (or other information) from the server 110, the client 120a contacts each of the other clients (e.g., 120b, 120c, 12Od) (using the received IP addresses or IP addresses and port numbers) to request the associated user's profile (see box 213). Each of the other clients (e.g., 120b, 120c, 12Od) transmits the associated user' s profile directly to the requesting client 120a.
A user profile can include a user's web page, web log, interests, list of preferred games, and list of preferred applications. Moreover, each user can have more than one profile and decide which one to make available according to the particular social situation
(e.g., business profile or social profile) . It should be noted that user profiles (and other personal user information) are not stored on the server 110. The centralized server 110 is only used for discovering other proximate clients and community service, such as advertisements, for example. User's personal information is exchanged only directly between clients (i.e., end to end).
The user has the option of further filtering the list of proximate clients (e.g., 120b, 120c, 12Od) based on aspects of the associated user's profile (see box 214). For example, a user can configure the client 120a, via the GUI, to list only users that list basketball as a hobby in their profile. When the client 120a receives the profiles for each of the IP addresses returned from the server 110, the client 120a then further filters the profiles according to the user's requirements.
Next, the user, via client 120a, directly contacts one or more of the listed clients 120b, 120c, 12Od (see box 216) . For example, client 120a connects to the network 110 via AP 130a and sends data packets that are transmitted to a router (not shown) . The router routes the data packets from the client 120a to AP 130c, which is the connection point for client 12Od. The server 110 is completely bypassed.
Referring to Fig. 2D, an illustrative flow diagram providing details of box 216 is shown. Before the user actually contacts one of the other clients 120b, 120c, 12Od, via client 120a, the client 120a determines if the particular client (e.g., 12Od) for which contact is desired, is directly reachable (See box 217a) . If the particular client 12Od is directly reachable (i.e., connected to the network 150 via a public network or sub-network) , the client 120a and the client 12Od can then communicate with each other directly, and bypass the server 110 (see box 217b) . If the particular client 12Od is not directly reachable (i.e., it is connected to the network 150 via a private network or sub-network) , the client 120a and the client 12Od must communicate with each other via one or more proxies (see box 217c) .
In order to keep the list of neighboring clients (120b, 120c, 12Od) current, the client 120a can either query the server 110 periodically for a current list of connected proximate clients (e.g., 120b, 120c, 12Od), or the client 120a can employ a session initiating protocol (SIP) presence-like mechanism. In the SIP configuration, the client 120a has subscribed to a presence service offered by the server 110. In this configuration, when a new client (e.g., 120b, 120c, 12Od) arrives or an old client (e.g., 120b, 120c, 12Od) leaves, the server 110 sends the client 120a a list of the clients that have had a change in status (i.e., a client has disconnected from, or connected to, the network), as shown in box 218 of Fig. 2B. In the SIP configuration, no explicit polling of information on the server 110 is required of the client 120a.
As previously described, when a client (e.g., 120a) connects to an AP (e.g., 130a), the client sends its IP address and other information to the server 110. This involves an implicit or explicit subscription to a notification service regarding the status of all users (clients) connected to the detected APs (e.g., 130a, 130b, 130c) . Consequently, the new user (client 120a) receives a list of proximate users (i.e., clients 120b, 120c, 12Od). The proximate users (i.e., clients 120b, 120c, 12Od) also receive an update about the new user (client 120a) .
Any user (client) may disconnect from the network 110 by one of two methods. The first method simply involves the user intentionally logging off (i.e., the client disconnects from the network 150) . In this case, the disconnecting user (client) sends a message to the server 150 that he is disconnecting. The server 150, in turn sends a message (i.e., an update) to the other users (clients) informing them that the particular user (client) has logged off or disconnected from the network. The second method involves the registration timer maintained by the server 110 for each connected client (previously discussed above) . If the server 110 has not received an update from a particular client (i.e., retransmission of the particular client's IP address or some other client-server interaction) within a predetermined time interval (i.e., the registration timer expires), the server 110 removes the record of that particular client and transmits an update to all of the remaining clients . Referring to Figs. 3A and 3B, illustrative schematic diagrams of a social networking system in ad hoc mode are shown. In ad hoc mode, there is no infrastructure support (i.e., no APs and no server to query) . In ad hoc mode, the network is made up of one or more clients (e.g., wireless devices such as cell phones, personal data assistants, or notebook computers) . If there are two or more clients, the clients are wirelessly connected to each other. An ad hoc network dynamically varies as clients connect and disconnect .
In Fig. 3A the social networking system includes networks 300, 302, 304, 306, and 308. In Fig. 3B, the social networking system is a larger system and includes networks 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, and 330.
In ad hoc mode, networks (e.g., networks 300, 302, 304, 306, and 308) can detect each other by advertising themselves as an ad-hoc network with a certain extended service set identifier (ESSID) and BSSID. The number of networks that a client can directly detect is limited by the reception range of the wireless card used in the wireless device. Alternatively, in order to discover other ad hoc networks past the range of its wireless card, a client can use multi-hop routing, which is discussed in detail below.
Referring to Figs 3A and 4, in operation, in one embodiment, for example, a client 301 (see Fig. 3a) scans passively (i.e., scans for periodic broadcasts of network beacons) or actively (i.e., transmits a request for any available networks to transmit their ESSID/BSSIDs and other security information) all channels of the wireless medium to locate any wireless access points or ad hoc networks within the client's transmission range (shown by the dashed line 309 in Fig. 3A) (see box 402) . If the client 301 detects any APs (see box 404), the client 301 attempts to connect to a detected AP with the best network conditions (e.g., SNR, congestion level, bit error ratio, etc.) using the above-described infrastructure mode (see box 406) . If the connection attempt was successful (see box 408), the client is connected to the network in infrastructure mode (see box 410) .
If the client 301 did not detect any APs (or detected APs whose network conditions would prevent the client 301 from connecting to it and/or experiencing a minimum level of connection quality) but detected a network that is in ad hoc mode (e.g. network 302) (see box 412), the client 301 switches to ad hoc mode and establishes communication with the detected ad hoc network (e.g., network 302) (see box 414) .
If the client 301 did not detect any networks in ad hoc mode, the client 301 starts a timer (see box 416) and transmits its own beacon (see box 418) . The client 301 then checks to see if the timer has lapsed (see box 420) . If the timer has not elapsed, the client 301 continues to transmit its own beacon (see box 418) . If the timer has lapsed, the client 301 again scans all channels of the wireless medium for APs and ad hoc networks (see box 402). This process continues until the client 301 detects and establishes communication with an AP or a network in ad hoc mode. Further, it should be noted that the BSSID that is transmitted by the client 301 is unique. Each of the networks within range of the client 301 will transmit to it a unique BSSID. Once the client has connected to the ad hoc network, the client can request the IP addresses of all the other clients to determine who is part of the same network .
In one embodiment, if a particular client wishes to disconnect from an ad hoc network, the particular client broadcasts a message to the other clients in the ad hoc network indicating that the particular client is leaving. Alternatively, the clients in the network can each have timers that are reset each time the other clients in the ad hoc network transmit their respective IP addresses to indicate that they are still connected to the ad hoc network. If a particular timer times out (i.e., is not reset by a received IP address), the client associated with the particular timer is assumed to have disconnected from the network and is deleted from the list of clients connected to the network.
As previously mentioned, in order to discover other networks beyond the range of its wireless card, a client (e.g., client in network 300) can use multi-hop discovery. Referring again to Fig. 3A, in multi-hop discovery, the client in network 300 can discover proximate networks (e.g., networks 304, 306, 308) beyond its wireless range (shown by dashed line 309) by having another client (e.g., a client in network 302) relay discovery packets (i.e., tells other clients to send their scan results and their IP addresses) from the client in network 300 to other clients within the range of the relay client in network 302. In other words, the client in network 300 could request that a client in network 302 transmit the BSSIDs of all the networks within its range (shown by dashed line 307), such as networks 304, 306, and 308 (i.e., first hop). Further, the client in network 300 could also request that a client in network 302 forward a request for BSSIDs to a client in network 304 (i.e. second hop) to discover the networks that are within the range of the client in network 304. This neighbor discovery process (i.e., multi-hop discovery) can continue as far as there are relay clients. However, discovering networks beyond a certain number of hops is impractical because, after a few hops, the networks are not considered proximate to the client originating the search. In one embodiment, it is up to the user to decide how many discovery hops to make before the discovered networks are too far away to be useful. In another embodiment, the number of discovery hops is preset in the wireless device. In one embodiment, a method of limiting neighbor discovery (in an ad hoc network) to a certain distance (i.e., limiting the number of discovery hops) from the client initiating discovery involves programming relay clients to follow a certain discovery policy. In particular, relay clients are instructed to forward discovery packets to other clients to determine if the receiving client can detect at least a subset of the BSSIDs detected by the client making the initial discovery request (i.e., transmitting the discovery packets) . In other words, the client that receives the discovery packets must have within its range at least one (or two, or three, etc) network that is also within the range of the client originally transmitting the discovery packets in order for it to be considered a proximate neighbor. This policy is described in further detail below and can be either enforced or user configurable.
Referring again to Fig. 3B, a client in network 310 has a range shown by the dashed line 332, which includes networks 312, 314, 316, 318; a client in network 316 has a range shown by dashed line 338 which includes networks 310, 318, 320; a client in network 320 has a range shown by dashed line 334, which includes networks 316, 318, 322, 324; a client in network 324 has a range shown by dashed line 340, which includes networks 320, 322, 326; and a client in network 326 has a range shown by dashed line 336, which includes networks 322, 324, 328, 330.
The client in network 310 can establish direct communication with a client in any of the proximate networks (i.e. networks 312, 314, 316, 318), and can also discover networks beyond its range (e.g., networks 320, 322, 324, etc) by transmitting discovery packets to a client in network 316, for example. When the client in network 310 transmits discovery packets (i.e., a request to other clients in the same or different networks to transmit information regarding the networks that the other clients see) to a client in network 316, the client in network 316 returns to the client in network client 310 a list of BSSIDs of the networks within its range (shown by dashed line 338), which includes networks 310, 318, and 320. The client in network 310 could then request that the client in network 316 relay the discovery packets to a client in network 320. In this manner, the client in network 310 can discover the networks that are within the range of the client in network 320 (shown by dashed line 334) .
Still referring to Fig. 3B, a client in network 310 and a client in network 320 share a subset of networks within their respective ranges, namely network 316 and network 318, which is why network 320 is considered a proximate neighbor of network 310 even though network 320 is not within the range of network 310. Further, a client in network 310 can send discovery packets to a client in network 320 to discover all the networks within its range, namely networks 316, 318, 322, 324. However, because neither a client in network 322 nor a client in network 324 share any networks in common with a client in network 310 (i.e., networks within the ranges of both the client in network 310 and the client in network 322, or the client in network 310 and the client in network 324), the networks 322, 324 are not considered proximate neighbors of network 310, and neighbor discovery stops with network 320. Further, the list of networks within the range of network 320 that is transmitted by a client in network 320 to a client in network 310 will only include networks 316, 318. Further, a client can also discover the particular clients in the same network by receiving the IP addresses of the clients in the same network using the discovery method described above.
As previously described, a user can choose to filter the list of proximate clients returned by the server according to relative distance. For example, assuming a typical AP has a range of 400 feet in diameter, a user can instruct the client to filter the returned list to show only other clients within 400 feet. This filter would result in a list including only clients in communication with the same AP as the user. Similarly, the user can instruct the client to filter the returned list to show only other clients within 800 feet. This filter would result in a list including clients in communication with the same AP as the user and clients in communication with a neighboring AP.
In another embodiment, a user can instruct client to filter the returned list to show only clients within a shorter distance (e.g., 50 feet). This is accomplished by the client transmitting a signal via infrastructure mode to all the other detected clients requesting that all the other clients in infrastructure mode temporarily switch to ad hoc mode, which typically has a shorter range than infrastructure mode, and broadcast their beacon. In response to the signal, the other clients switch to ad hoc mode and transmit their respective beacons. Likewise, the requesting client also switches to ad hoc mode and executes a scan (actively or passively) for the transmitted beacons of all or some of the clients that switched from infrastructure mode.
The client collects the BSSIDs of the transmitting clients and, based on the signal strength of the BSSIDs, signal to noise ration (SNR), or other parameters, determines the approximate distance of each of the transmitting clients, and produces a list of clients within 50 feet. Thereafter, all the clients switch back to infrastructure mode and resume normal operation. This process is typically transparent to the user. In some embodiments, in ad hoc mode, although no Internet access is available, content delivery and sharing (between the neighboring clients) is still possible in a limited manner by caching content, such as web logs, web pages, etc. Cached content can then be shared among the clients in the ad hoc network.
The social networking system has a variety of applications beyond the examples of social networking previously described. The social networking system can provide Internet sharing using a virtual WiFi driver. This feature allows users without an Internet connection (i.e., clients in ad hoc mode) to acquire limited connectivity via a user that has Internet connectivity (i.e., client in infrastructure mode). Specifically, the client in infrastructure mode is capable of relaying data for clients in ad hoc mode. For example, the client in infrastructure mode briefly switches to ad hoc mode to receive data from, and/or transmit data to, the client in ad hoc mode. This client then switches back to infrastructure mode to transmit data to and/or receive data from, the Internet for the client in ad hoc mode. Whether the client in infrastructure mode is idle and, therefore, available for relaying data can be determined by various means, such as monitoring the client's keyboard activity, for example. The client that is capable of relaying data for clients in ad hock mode can share its Internet connection with other clients in ad hoc mode without any noticeable degradation in functionality or performance. In another embodiment, a client connected to the Internet via an AP (i.e., connected using infrastructure mode) can act as a proxy for a client in ad hoc mode and ,-^
provide the client in ad hoc mode direct Internet connectivity. In other words, the client in infrastructure mode does not have to switch back and forth between infrastructure mode and ad hoc mode and relay information for the client ad hoc mode. The client in ad hoc mode accesses the Internet directly through the client in infrastructure mode. In one embodiment, this is achieved by the client acting as the proxy having two wireless cards, one for connecting to the AP and one for connecting to the client needing the proxy. In another embodiment, the client acting as the proxy includes a wired Internet connection and a single wireless card for communication with the client needing the proxy. The social networking system can provide a community rating platform. The server maintains a list of ESSID or BSSID-to-web page associations, which allows the server to map a web page to a particular location. Each web page could be a community-maintained web page located on the server. For example, a web page could be provided summarizing users' opinions on services provided at that particular location.
In another embodiment, the social networking system provides a distributed computing environment. A client can make use of idle processing resources that are provided by other proximate clients. In certain situations, local computational resources might not be sufficient to run an application in an expected manner. Devices, such as PDAs or Smart Phones that have low computational resources may need, in addition, to use the computational power of neighboring devices . For example, a phone that is able to display real time video but is not able to decode compressed video in real time could use a proximate client's computational power to decode such video.
Another application of the social networking system involves hypertext links in instant messages used for searching and advertising. When using instant messages, links can be dynamically generated according to keywords typed by users during a chat, for example. These links can either be pointers to web pages containing particular documents or the links can be pointers to web sites of companies that paid for advertising bandwidth. Advertisements could be tailored according to the specific interests of a user. For example, a user could be instant messaging another user regarding meeting for coffee. The term "coffee" could be used to direct the users to a website of coffee shop in their local neighborhood, or the term coffee could trigger an advertisement for a local coffee shop.
Variations, modifications, and other implementations of what is described herein may occur to those of ordinary skill in the art without departing from the spirit and scope of the disclosed subject matter. Further, the various features of the embodiments described herein also can be combined, rearranged, or separated without departing from the spirit and scope of the disclosed subject matter as defined by the following claims .

Claims

ClaimsWe claim:
1. A method of enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points, wherein the method comprises the steps of: detecting wireless access points to the network within range of the particular wireless client; establishing communication between the network and the particular wireless client via one of the detected wireless access points; providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and establishing direct communication between the particular wireless client and at least one of the other wireless clients.
2. The method of claim 1, wherein the step of providing from the server the identities of other wireless clients in communication with the network via at least one of the detected wireless access points comprises obtaining a unique identifier associated with each of the detected wireless access points.
3. The method of claim 2, wherein the step of providing from the server the identities of other wireless clients in communication with the network via at least one of the detected wireless access points comprises registering the particular wireless client with the server by communicating to the server the unique identifier associated with each of the detected wireless access points and a unique Internet Protocol address and a port number associated with the particular wireless client.
4. The method of claim 1, wherein the step of providing from the server the identities of other wireless clients in communication with the network via at least one of the detected wireless access points comprises filtering the other wireless clients obtained from the server based on signal strength of the access point associated with each of the other wireless clients .
5. The method of claim 1, wherein the step of providing from the server the identities of other wireless clients in communication with the network via at least one of the detected wireless access points comprises obtaining a unique Internet Protocol address and a port number associated with each of the other wireless clients.
6. The method of claim 2, wherein the unique identifier associated with each detected wireless access point is a basic service set identifier.
7. The method of claim 1, further comprising periodically querying of the server by the particular wireless client for updates regarding the identities of the other wireless clients in communication with the server via the detected wireless access points.
8. The method of claim 1, further comprising updating by the server the list of the other wireless clients when one or more wireless clients establish or sever communication with the server via the detected wireless access points.
9. The method of claim 1, further comprising providing to the particular wireless client a user profile from at least one of the other wireless clients.
10. A system for enabling a particular wireless client to locate other wireless clients proximate to the particular wireless client and in communication with a network and a central server via wireless access points, wherein the system comprises: means for detecting wireless access points to the network within range of the particular wireless client; means for establishing communication between the network and the particular wireless client via one of the detected wireless access points; means for providing to the particular wireless client from the server via the network identities of other wireless clients in communication with the network via at least one of the detected wireless access points; and means for establishing direct communication between the particular wireless client and at least one of the other wireless clients.
11. The system of claim 10, wherein the means for providing identities of other wireless clients comprises a means for obtaining a unique identifier associated with each of the detected wireless access points.
12. The system of claim 11, wherein the means for providing identities of other wireless clients comprises means for registering by the particular wireless client with the server by communicating to the server the unique identifier associated with each of the detected wireless access points and a unique Internet Protocol address and a port number associated with the particular wireless client.
13. The system of claim 10, wherein the means for providing identities of other wireless clients comprises means for filtering the other wireless clients obtained from the server based on signal strength of the access point associated with each of the other wireless clients .
14. The system of claim 10, wherein the means for providing identities of other wireless clients comprises means for obtaining a unique Internet Protocol address and a port number associated with each of the other wireless clients.
15. The system of claim 11, wherein the unique identifier associated with each detected wireless access point is a basic service set identifier.
16. The system of claim 10, further comprising means for periodically querying of the server by the particular wireless client for updates regarding the identities of the other wireless clients in communication with the server via the detected wireless access points .
17. The system of claim 10, further comprising means for updating by the server the list of the other wireless clients when one or more wireless clients establish or sever communication with the server via the detected wireless access points.
18. A method of enabling a particular wireless client to locate ad hoc networks that are proximate to the particular wireless client and beyond the range of the particular wireless client, wherein the method comprises the steps of: detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and receiving by the particular wireless client a list of the networks that are in the subset.
19. The method of claim 18, wherein the unique identifier comprises a basic service set identifier.
20. The method of claim 18, wherein each of the wireless networks within the other detected wireless network's range has a basic service set identifier associated therewith.
21. The method of claim 18, wherein each of the wireless networks that are in the subset has a basic service set identifier associated therewith.
22. A system of enabling a particular wireless client to locate wireless networks that are proximate to the particular wireless client and beyond a range of the wireless client, wherein the system comprises: means for detecting wireless networks within range of the particular wireless client and that transmit a unique identifier related to the ad hoc network; means for establishing direct communication between the particular wireless client and a client of one of the detected wireless networks within the range of the particular wireless client and that transmitted the detected unique identifier; means for providing to the particular wireless client from a client of another detected wireless network within range of the particular wireless client identities of wireless networks within the range of the client of the other detected wireless network; means for instructing the client of the other detected wireless network to obtain identities of wireless networks from only clients in the wireless networks within the range of the client of the other detected wireless network that have within their range a subset of the detected wireless networks within range the particular client; and means for receiving by the particular wireless client a list of the networks that are in the subset.
23. The system of claim 22, wherein the unique identifier comprises a basic service set identifier.
24. The system of claim 22, wherein each of the wireless networks within the other detected wireless network' s range has a basic service set identifier associated therewith.
25. The system of claim 22, wherein each of the wireless networks that are in the subset has a basic service set identifier associated therewith.
PCT/US2007/022188 2006-10-17 2007-10-17 Method for enabling a wireless client to locate other wireless clients WO2008048650A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US85244906P 2006-10-17 2006-10-17
US60/852,449 2006-10-17
US90319707P 2007-02-22 2007-02-22
US60/903,197 2007-02-22

Publications (2)

Publication Number Publication Date
WO2008048650A2 true WO2008048650A2 (en) 2008-04-24
WO2008048650A3 WO2008048650A3 (en) 2008-08-14

Family

ID=39314663

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/022188 WO2008048650A2 (en) 2006-10-17 2007-10-17 Method for enabling a wireless client to locate other wireless clients

Country Status (1)

Country Link
WO (1) WO2008048650A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013158672A1 (en) * 2012-04-17 2013-10-24 Qualcomm Incorporated Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems
US8693451B2 (en) 2011-01-21 2014-04-08 Blackberry Limited Methods and apparatus for use in controlling an access point mode of operation for a mobile terminal

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218229A1 (en) * 2005-03-24 2006-09-28 Aparna Pandey Methods for performing client to client communication in a wlan
US20060229054A1 (en) * 2005-04-07 2006-10-12 Esa Erola Help desk connect
US20070233776A1 (en) * 2005-11-14 2007-10-04 Palm Stephen R System for transmitting high throughput data between multiple devices
US20080076409A1 (en) * 2006-08-31 2008-03-27 Skype Limited Wireless device for voice communication
US7373508B1 (en) * 2002-06-04 2008-05-13 Cisco Technology, Inc. Wireless security system and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373508B1 (en) * 2002-06-04 2008-05-13 Cisco Technology, Inc. Wireless security system and method
US20060218229A1 (en) * 2005-03-24 2006-09-28 Aparna Pandey Methods for performing client to client communication in a wlan
US20060229054A1 (en) * 2005-04-07 2006-10-12 Esa Erola Help desk connect
US20070233776A1 (en) * 2005-11-14 2007-10-04 Palm Stephen R System for transmitting high throughput data between multiple devices
US20080076409A1 (en) * 2006-08-31 2008-03-27 Skype Limited Wireless device for voice communication

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8693451B2 (en) 2011-01-21 2014-04-08 Blackberry Limited Methods and apparatus for use in controlling an access point mode of operation for a mobile terminal
WO2013158672A1 (en) * 2012-04-17 2013-10-24 Qualcomm Incorporated Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems
CN104247463A (en) * 2012-04-17 2014-12-24 高通股份有限公司 Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems
JP2015517282A (en) * 2012-04-17 2015-06-18 クゥアルコム・インコーポレイテッドQualcomm Incorporated Method and apparatus for multiplexed application identifiers for a peer-to-peer discovery system
US10123187B2 (en) 2012-04-17 2018-11-06 Qualcomm Incorporated Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems

Also Published As

Publication number Publication date
WO2008048650A3 (en) 2008-08-14

Similar Documents

Publication Publication Date Title
US8825767B2 (en) Scalable secure wireless interaction enabling methods, system and framework
US8060590B2 (en) Distance-aware service discovery mechanism for determining the availability of remote services in wireless personal area networks
EP2566137B1 (en) Methods and systems for peer-to-peer network discovery using multi-user diversity
US9319956B2 (en) Method and apparatus for maintaining communications connections over a distributed wireless network
RU2308812C2 (en) Communication in selected area
JP5948409B2 (en) Method and apparatus for content distribution
US20050037787A1 (en) Wireless intelligent portable-server system (WIPSS)
US20130039216A1 (en) Scalable wlan gateway
US20100115104A1 (en) Cooperative network for mobile internet access
EP1349322A1 (en) Method, apparatus, and medium for migration across link technologies
WO2012149031A2 (en) System and method for management of a dynamic network using wireless communication devices
TW201409978A (en) Context-aware peer-to-peer communication
JP2010526360A (en) Mobile device file sharing method and apparatus
JP2009508434A (en) Control temporary mobile network
WO2001082532A1 (en) A communication method and apparatus
Anastasiades et al. Information-centric content retrieval for delay-tolerant networks
US20090100137A1 (en) Method and apparatus for providing services in a peer-to-peer communications network
Papadopouli et al. Design and implementation of a peer-to-peer data dissemination and prefetching tool for mobile users
CN110430551A (en) A kind of automobile data transfer method and system based on QUIC technology
US20120020341A1 (en) Method for downloading predetermined entertainment content to customers
WO2008048650A2 (en) Method for enabling a wireless client to locate other wireless clients
US20120026995A1 (en) Mobile router with lan internet connectivity
Eriksson et al. Cabernet: A content delivery network for moving vehicles
Seada et al. Social networks: the killer app for wireless ad hoc networks?
KR20130059379A (en) Confidential or protected access to a network of nodes distributed over a communication architecture with the aid of a topology server

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07852821

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07852821

Country of ref document: EP

Kind code of ref document: A2