Wireless communications systems include computing devices and/or computing appliances that communicate one with another via electro-magnetic signals transmitted wirelessly. Some wireless communications systems are organized according to an infrastructure including one or more communications access points (or access points) and a group of client devices (or clients) such as computing devices. Each client is associated with an access point and the clients communicate one with another via that access point. When a client is associated with an access point, the access point accepts data from and forwards (or relays) data to that client. That is, to send data to a destination client, a source client sends the data to the access point with which the source client and the destination client are associated, and that access point then forwards (or relays) the data to the destination client.
In some wireless communications systems, the destination client and source client are associated with different access points and the access points are in communication one with another. Thus, to send data to the destination client, the source client sends the data to the access point with which the source client is associated, that access point forwards the data to the access point with which the destination client is associated, and access point with which the destination client is associated then forwards the data to the destination client. Furthermore, an access point can send data to and receive data from wired clients (i.e., local area network (“LAN”) stations). Thus, an access point can function as an intermediary between a wired communications system and a wireless communications system.
Typically, clients associate with an access point based on a received signal strength indicator (i.e., a measure of the strength of electro-magnetic signals received from the access point) or according to an identifier of the access point. For example, some clients are configured to associate with the access point with the best (i.e., strongest) received signal strength indicator. Such association can be referred to as dynamic because the client dynamically determines with which access point to associate. Other clients are configured to associate with a particular access point based on an identifier of that access point. That is, the access point broadcasts its identifier and such clients associate with the access point after receiving the identifier. Such association can be referred to as static because the client has be preconfigured to associated with a particular access point (or access points) having a predetermined identifier.
Client devices (or clients) within wireless communications systems are typically configured statically to associate with communications access points (or access points) based on an identifier (e.g., a name, an address such as a Medium Access Control (“MAC”) address, or another identifier) provided by those access points, or dynamically based on a received signal strength indicator (“RSSI”) determined from electro-magnetic signals received from each access point. Such association methodologies can be useful within wireless communications systems including moderate numbers of clients, but are often ill-suited to wireless communications systems including large numbers of clients.
For example, preconfiguring each client device to associate with a particular access point (or one of a group of access points with a common identifier) can be a time-consuming process. Furthermore, an access point with a strong signal path (e.g., a clear line-of-sight) to a large number of clients can become oversubscribed and overloaded (or congested) by those clients. That is, those clients will request association with that access point because the RSSI determined at each of those clients for that access point is better than the RSSIs for other access points at those clients.
As an example, a large number of clients (e.g., tens of thousands) can each include sensors such as humidity sensors, accelerometers, temperature sensors, acoustic sensors, seismic sensors, oxygen sensors, photon detectors, and/or other sensors to monitor conditions within a geographic area. Additionally, each client can include a wireless communications interface via which that client can communicate with one or more access points distributed throughout that geographic area to report or transfer data acquired at the sensor(s) of that client.
If the clients dynamically associate with the access point based on RSSIs determined (or generated) based on the electro-magnetic signals received from each access point (e.g., beacons and/or management frames broadcast by that access point to announce or advertise the availability, existence, and/or capabilities of that access point), the topology of the communications system (i.e., which clients are associated with which access points) is not determined before the clients and access points are deployed. Thus, many clients requesting association with and/or transmitting data to a single access point (e.g., due to a clear signal path to that access point) can overload that access point.
Alternatively, if the clients are statically associated with access points, care must be taken when deploying the clients and access point within the geographic area to ensure that the clients statically associated with each access point are able to communicate with that access point. That is, those clients must be positioned to have a sufficiently clear signal path to that access point to allow electro-magnetic signals to propagate between those clients and that access point. Such requirements can complicate deployment of the clients and access points.
Implementations discussed herein include systems, methods, and apparatus for clients to associate with access points based on the location of the clients. For example, in the example discussed above, each access point can be assigned a different region of the geographic area (i.e., a portion of the geographic area) and provided with a region descriptor of that region. As a specific example, an electro-magnetic signal propagation survey can be performed at the geographic area and the regions assigned to access points based on the electro-magnetic signal propagation properties identified by that survey. That is, each access point is associated with a region and provided with a description (i.e., a region descriptor) of that region.
Each client includes (or can access) a location identification module such as, for example, a Global Positioning System (“GPS”) receiver, via which that client can access a location descriptor to determine its location (e.g., its geographic location). The access points each transmit (e.g., broadcast) management frames or beacons that include the region descriptor of that access point. Each client receives the management frames and determines whether it is located within the region described by each region descriptor based on that region descriptor and the location descriptor received from the location identification module. If the client is located (i.e., is at a location) within a region described by a region descriptor, the client associates with the access point responsible for (or associated with) or servicing that region (i.e., the access point that transmitted that region descriptor).
Because the clients associate with access points based on location, the clients and access points can be distributed within the geographic area to avoid overloading of the access points. Said differently, the number of clients that will associate with each access point can be controlled by defining the region for which each access point is responsible (or with which each access point is associated) and deploying within that region a number of clients that access point can adequately service (i.e., host or communicate with). Moreover, because the clients are not statically associated with a particular access point, the location of each client within the geographic area relative to a particular access point is not important. That is, each client need not have an electro-magnetic signal propagation path to a particular access point. In other words, each client can associate with the access point responsible for the region in which that client is located rather than with a particular or predetermined access point. Thus, deployment of the clients can be simplified.
Implementations discussed herein are applicable to various clients and wireless communications systems. For example, the implementations discussed herein can be useful in wireless communications systems including large numbers of clients. Specifically, for example, such implementations allow deployment of large numbers of clients without configuration of the clients. That is, such implementations can allow zero-configuration deployment of large numbers of clients. As another example, these implementations can be useful for clients that are not configurable. That is, clients that cannot be configured to associate with a particular access point based on, for example, an identifier or name of that access point. Such clients can be referred to as dumb or unintelligent clients that are simple devices including a sensor such as a humidity sensor, an accelerometer, a temperature sensor, an acoustic sensor, a seismic sensor, an oxygen sensor, a photon detector, and/or other sensor, a wireless communications interface, and a location identification module.
As used herein, the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, the term “client” is intended to mean one or more clients or a combination of clients. Additionally, as used herein, the term “module” refers to hardware, circuitry such as circuitry implementing computing logic, and/or software, firmware, programming, machine- or processor-readable instructions, commands, or code that are stored at a memory and executed or interpreted (or hosted) at a processor.
Access point 110 and 140 are computing devices or computing appliances. As an example of an access point,
In some implementations, processor 210 can include multiple processors. For example, processor 210 can be a microprocessor including multiple processing engines (e.g., computation, algorithmic or thread cores). As another example, processor 210 can be a computing device including multiple processors with a shared clock, memory bus, input/output bus, and/or other shared resources. Furthermore, processor 210 can be a distributed processor. For example, processor 210 can include multiple computing devices, each including a processor, in communication one with another via a communications link such as a computer network.
Memory 220 includes data and/or instructions or codes (e.g., computer codes or object codes) defining software modules (or software applications) that are executed by processor 210 during operation of access point 200. For example, memory 220 can include instructions that define an operating system, device drivers, a communications protocol stack, a database (i.e., a group of related data sets), and/or operational parameters such as an identifier of access point 200, and/or a region descriptor.
Similarly, non-volatile processor-readable medium 230 includes data and/or computer codes or instructions that are copied (or loaded) into memory 220 during a boot or initialization sequence of access point 200. That is, processor 210 (or another module such as a direct memory access module or basic input/output system (“BIOS”) module (not shown) of access point 200) can copy the data and/or instructions included at non-volatile processor-readable medium 230 to memory 220, and processor 210 can later access those data and/or instructions during operation of access point 200.
Examples of processor-readable media include, but are not limited to: magnetic storage media such as a hard disk, a floppy disk, and/or magnetic tape; optical storage media such as a compact disc (“CD”), a digital video disc (“DVDs”), a compact disc read-only memory (“CD-ROM”), and/or a holographic device; magneto-optical storage media; non-volatile memory such as read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), electronically erasable read-only memory (“EEPROM”), and/or FLASH memory; and random-access memory (“RAM”). Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, and files containing higher-level instructions that are executed by a computer using an interpreter. For example, an implementation may be realized or implemented using Java™, C++, or other object-oriented programming language and development tools. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
In some implementations, non-volatile processor-readable medium 230 can be external to or removable from access point 200. For example, non-volatile processor-readable medium 230 can include a Universal Serial Bus™ (“USB”) interface (or interface module) and non-volatile processor-readable medium 230 can be FLASH memory device with a USB interface. Alternatively, non-volatile processor-readable medium 230 can be, for example, a Secure Digital™ (“SD”) memory device. In other implementations, non-volatile processor-readable medium 230 can be remote from access point 200 and access point 200 can access non-volatile processor-readable medium 230 via a communications link (e.g., a computer network). As a specific example, non-volatile processor-readable medium 230 can be (or be at) a data store or data storage service accessible via a communications link operatively coupled to communications interface 250, and access point 200 can boot by accessing non-volatile processor-readable medium 230 via communications interface 250.
Communications interface 250 is an interface module accessible to processor 210 to communicate with (i.e., transmit symbols representing data to and receive such symbols from) other processors and/or computing devices via a communications link. Communications interface 250 can be, for example, a telephone network interface, a twisted-pair network interface, a coaxial network interface, a fiber-optic network interface, a wireless network interface such as a wireless local area network (“WLAN”) or a cellular network, and/or some other network or communications interface.
Communications interface 250 can receive symbols from other communications interfaces (e.g., communications interfaces at other access points) via a communications link and send data represented by those symbols to processor 210. Moreover, communications interface 250 can receive data from processor 210 and transmit symbols representing those data via a communications link. For example, processor 210 can provide data frames having a destination address of a client associated with an access point other than access point 200 to that access point via communications interface 250.
Wireless communications interface 240 is an interface module that sends symbols (e.g., modulated electro-magnetic signals) to and receives symbols from clients of access point 200. That is, access point 200 communicates with clients via wireless communications interface 240. Wireless communications interface 240 can be, for example, a WLAN interface such as an IEEE 802.11a, b, g, or n network interface, a cellular network interface, a Bluetooth™ network interface, a ZigBee™ network interface, and/or some other wireless network or communications interface. In some implementations, communications interface 250 and wireless communications interface 240 send and/or receive data using a common protocol, frequency band or channel, modulation methodology, and/or have other similar operational characteristics. In other implementations, communications interface 250 and wireless communications interface 240 send and/or receive data using different protocols, frequency bands or channels, modulation methodologies, and/or have other different operational characteristics.
In one implementation, access point 200 transmits (or sends or broadcasts) beacons or management frames via wireless communications interface that are received by clients. As discussed in more detail herein, each client determines whether to associate with access point 200 and, if that client determines that it should associate with access point 200, associates (e.g., requests association) with access point 200 by transmitting an association request to access point 200. Access point 200 receives the association requests at wireless communications interface 240 and processor 210 determines whether to allow each client to associate with access point 200.
After a client has associated with access point 200, access point 200 functions as an intermediary between that client and other clients. That is, to send data to another client associated with access point 200, a client associated with access point 200 transmits the data to access point 200. Access point 200 receives the data at wireless communications interface 240, determines at processor 210 (e.g., based on a destination address for the data) that the data should be transmitted to another client associated with access point 200, and forwards the data to the other client via wireless communications interface 240. To send data to another client associated with a different access point, a client associated with access point 200 transmits the data to access point 200. Access point 200 receives the data at wireless communications interface 240, determines at processor 210 that the data should be transmitted to a client associated with another access point, and forwards the data to the other access point via communications interface 250. The other access point receives the data and forwards (i.e., transmits) the data to the destination client. Additionally, access point 200 point can be operatively coupled to a wired communications system such as a LAN via communications interface 250. Thus, clients of access point 200 can send data to and receive data from wired clients via access point 200. That is, access point 200 can function as an intermediary or bridge between a wired clients and wireless clients.
Similarly, non-volatile processor-readable medium 330 includes data and/or instructions that are copied (or loaded) into memory 320 during a boot or initialization sequence of client 300. That is, processor 310 (or another module such as a direct memory access module (not shown) of client 300) can copy the data and/or instructions included at non-volatile processor-readable medium 330 to memory 320 and can later access those data and/or instructions during operation of client 300.
Wireless communications interface 340 is an interface module that sends symbols (e.g., modulated electro-magnetic signals) to and receives symbols from one or more access points. That is, client 300 communicates with one or more access points via wireless communications interface 340. Wireless communications interface 340 can be, for example, a WLAN interface such as an IEEE 802.11a, b, g, or n network interface, a cellular network interface, a Bluetooth™ network interface, a ZigBee™ network interface, and/or some other wireless network or communications interface.
Location identification module 350 accesses or generates location information related to client 300. As a specific example, location identification module 350 generates a location descriptor that identifies or describes a geographical location of client device 300. For example, location identification module 350 can be a GPS receiver and the location descriptor can be a latitude identifier, a longitude identifier, and/or an altitude identifier. Alternatively, the location descriptor can be based on a different coordinate system such as an Earth-Centered, Earth-Fixed (“ECEF”) coordinate system. As another example, location identification module 350 can be an Earth-based location identification module. That is, rather than receiving location signals based on which location identification module 350 generates a location descriptor from satellites, location identification module 350 can receive location signals from terrestrial transmitters.
As illustrated in
Referring to
A region descriptor is accessed at block 411. For example, the region descriptor can be received from an access point, stored at a memory, and accessed at the memory when block 411 is executed at a processor of a client. As a specific example, a region descriptor can be received within an information element of a management frame (e.g., an 802.11-compliant management frame such as a beacon or probe response) transmitted by an access point associated with a region defined (or described) by the region descriptor. In other implementations, an identifier of an access point can be received from that access point (e.g., within a management frame or beacon) at a client, and the client can access the region descriptor within a database based on the identifier of the access point. That is, the client can perform a lookup in the database using the access point identifier as the key and receive the region descriptor as a result. The database can be, for example, stored at a memory of the client or accessible to the client via an interface such as a communications interface or an input/output interface such as a USB interface.
As illustrated in
In some implementations, management frame 500 can include additional or fewer portions than illustrated in
As an example of such a database,
As a specific example, if a client provides access point identifier 621 to region descriptor database 600, region descriptor database 600 provides region descriptor 622. As another example, region descriptor database 600 can be a matrix (or table) within a memory. The matrix includes a column for access point identifiers and a column for region descriptors. The region descriptor associated (or related) with each access point identifier and that access point identifier are stored at a common row of the matrix. That is, the region descriptor is stored at the region descriptor column within the row and the access point identifier is stored at the access point identifier column within the row. In other implementations, region descriptor database can be another data store at which access point identifiers and related region descriptors are stored.
Referring to
The client then determines whether the client is within a region defined by the region descriptor at block 413. That is, the client determines whether the location described by the location descriptor is located within the region described by the region descriptor. For example, the client can calculate the perimeter of the region based on the region descriptor and determine whether the location of the client described in the location descriptor is within that perimeter. Referring to
Referring to
Referring again to
Referring to
If the location described by the location descriptor is not within the region described by the region descriptor at block 413, process 400 returns to block 411 to access another region descriptor. Thus, the client can access a group of region descriptor (e.g., received from a group of access points or from a database of region descriptors accessible to the client) and associated with an access point associated with a region within which the client is located. As illustrated in
Process 400 can include additional or fewer blocks than those illustrated in
Referring to
A region descriptor is accessed at block 711. For example, an access point implementing process 700 can access a region descriptor that describes a region associated with that access point. More specifically, in this example the access point can be preconfigured to include the region descriptor at a memory or within a file at the access point. That is, the region descriptor can be predetermined for the access point and the access point can be configured or programmed to include the region descriptor. In other implementations, the access point can access the region descriptor from a service via a communications interface. That is, the access point can request a region descriptor associated with the access point from a database or management (e.g., a communications system management) service.
In yet other implementations, the access point can generate the region descriptor. For example, the access point can include (or be in communication with) a location identification module at which the access point can access a location descriptor that describes a location of the access point. Additionally, the access point can access (e.g., at a memory or file of the access point or at a service) a region specification and generate the region descriptor based on the location descriptor and the region specification. More specifically, the region specification can specify the perimeter or shape of a region. For example, the region specification can specify a circle with a radius of 100 meters, a square with side lengths of 75 meters, or some other perimeter or shape. The access point can generate the region descriptor by modifying the region specification to be relative to the location of the access point (i.e., the location described by the location descriptor). For example, with reference to the region specification examples above, a region descriptor can describe a circle with a radius of 100 meters or a square with side lengths of 75 meters centered at the location.
The region descriptor is then transmitted by the access point at block 712. For example, the access point can include the region descriptor within a management frame of a beacon periodically broadcast by the access point. In some implementations, an identifier of the access point is also transmitted with the region descriptor. Typically, one or more clients receive the region descriptor and request association with the access point if those clients are located within the region described by the region descriptor.
An association request is received from the client at block 713 and the access point determines whether to associate with that client. For example, the access point and client can perform a handshake or other authentication protocol and the access point can determine whether to associate with the client based on the result of the handshake or other authentication protocol. In some implementations, the association is based on a specification or protocol such as IEEE 802.11a, b, g, or n. That is, the association can proceed according to a preexisting specification or protocol. Thus, process 700 can be an extension of a preexisting protocol or specification.
After the access point has associated with the client, the data frames (i.e., frames or data sets including data or data values) are accepted from the client at block 714. In other words, the client can communicate with other clients, computing devices, and/or services via the access point. Furthermore, the access point forwards data frames addressed or directed to the client (e.g., based on a destination address included within those data frames) to the client when such data frames are received at the access point from, for example, other clients, computing devices, and/or services.
Process 700 can include additional or fewer blocks than those illustrated in
As illustrated in
Client 870 is within region 880 and within region 890. Because client 870 is within both of regions 880 and 890, client 870 determines with which of access points 810 and 840 to associate. In some implementations, client 870 can associate (or request association) with the access point of access points 810 and 840 from which it first receives a region descriptor.
In other implementations, client 870 can select the access point with which client 870 will associate using other methodologies. As a specific example, client 870 can associate with the access point of access points 810 and 840 with which client 870 can establish a better or stronger wireless communications link. For example, client 870 can associate with the access point from access points 810 and 840 for which client 870 has calculated a stronger (or higher) RSSI. Such a methodology is illustrated in
A first region descriptor is accessed at block 911. For example, the region descriptor can be received from an access point and stored at a memory, and accessed at the memory when block 911 is executed at a processor of a client. As a specific example, a region descriptor can be received within an information element of a management frame transmitted by an access point associated with a region defined by the region descriptor. In other implementations, an identifier of an access point can be received from that access point at a client, and the client can access the region descriptor within a database based on the identifier of the access point. That is, the client can perform a lookup in the database using the access point identifier as the key and receive the region descriptor as a result. The database can be, for example, stored at a memory of the client or accessible to the client via an interface such as a communications interface or an input/output interface such as a USB interface.
A second region descriptor is then accessed at block 912. The first region descriptor is associated with a first access point and the second region descriptor is associated with a second access point. In other implementations, additional region descriptors are received from other access points. That is, a client implementing process 900 can receive additional region descriptors from other access points.
A location descriptor is then accessed at block 913. For example, the location descriptor can be accessed from a location identification module of the client. As another example, a memory location of a memory within the client can be updated periodically with a current location descriptor. For example, the processor can periodically access (e.g., asynchronously receive) location descriptors from the location identification module and store the current location descriptor at the memory location. At block 913, the current location descriptor is then accessed at the memory location.
The client then determines whether the client is within a region defined by the region descriptor at block 920. That is, the client determines whether the location described by the location descriptor is located within the region described by the first region descriptor or the region described by the second region descriptor. For example, the client can calculate the perimeter of the regions based on the first and second region descriptors, and determine whether the location of the client described in the location descriptor is within either perimeter (or region).
If the location of the client is within the region described by the first region descriptor, process 900 proceeds to block 941, at which the client requests association with the access point that provided the first region descriptor and communicates with other clients, computing devices, and/or services via that access point at block 942. If the location of the client is within the region described by the second region descriptor, process 900 proceeds to block 931, at which the client requests association with the access point that provided the second region descriptor and communicates with other clients, computing devices, and/or services via that access point at block 942.
If the location of the client is within the region described by the first region descriptor and within the region described by the second region descriptor, process 900 proceeds to block 951 at which the client accesses a first RSSI determined based on electro-magnetic signals received from the access point that provided the first region descriptor. A second RSSI determined based on electro-magnetic signals received from the access point that provided the second region descriptor is accessed at block 952.
A client implementing process 900 then determines which RSSI is stronger (or better or preferred) at block 960 and proceeds to one of blocks 931 and 941. If the first RSSI is stronger (the second RSSI is weaker), process 900 proceeds to block 941 to request association with the access point that provided the first region descriptor as discussed above. If the second RSSI is stronger (the first RSSI is weaker), process 900 proceeds to block 931 to request association with the access point that provided the second region descriptor as discussed above.
If the location described by the location descriptor is not within the region described by the first region descriptor or the region described by the second region descriptor at block 920, process 900 returns to block 911 to access or wait for another region descriptor. Process 900 can include additional or fewer blocks than those illustrated in
As an example of a system including one or more processors and processor-readable storage media,
For example, storage medium 1021 can be a hard disk drive including a magnetic storage medium, storage medium 1022 can be an optical drive such as a DVD drive and can accept DVD storage media on which processor-readable instructions such as processor-readable instructions that implement display control module or a display client module can be stored, and storage medium 1023 can be a FLASH memory drive with a USB interface. In some implementations, storage media 1021, 1022, and/or 1023 can be local to (e.g., coupled to a common computing device) one or more processors 1010. In some implementations, storage media 1021, 1022, and/or 1023 can be remote from (e.g., coupled to a separate computing device) one or more processors 1010 and in communication with one or more processors 1010 via a communications link. Furthermore, one or more of storage media 1021, 1022, and/or 1023 can be local to one or more processors 1010 and one or more of the remaining of storage media 1021, 1022, and/or 1023 can be remote from one or more processors 1010.
As a more specific example, one or more processors 1010 can be included within a computing device having an internal hard disk drive data store represented by storage medium 1021 and a removable solid-state data store such as a Secure Digital High-Capacity (“SDHC”) memory card represented by storage medium 1022. The computing device can also include a USB host controller to communicate with a USB FLASH memory drive represented by storage medium 1023. One or more processors 1010 can access processor-readable instructions such as processor-readable instructions that implement a display control module at any of storage media 1021, 1022, and/or 1023. Said differently, one or more processors 1010 can interpret or execute instructions at processor-readable media via storage medium 1021, storage medium 1022, and/or storage medium 1023. For example, a computing device can access and/or host a software application stored at one or more of storage medium 1021, storage medium 1022, and/or storage medium 1023 that includes codes that when executed implement, for example, process 700 discussed above in relation to
Alternatively, for example, storage media 1021 and 1022 can be remote from a computing device including one or more processors 1010 and storage medium 1023 can be local to that computing device. The computing device including one or more processors 1010 can access (e.g., download) a software application that includes codes that when executed implement process 900 discussed above in relation to
In some implementations, system 1000 can include one or more memories such as RAM that function as a cache between one or more of storage medium 1021, storage medium 1022, and/or storage medium 1023 and one or more processors 1010 for instructions or code stored (or accessible) at one or more of storage medium 1021, storage medium 1022, and/or storage medium 1023.
While certain implementations have been shown and described above, various changes in form and details may be made. For example, some features that have been described in relation to one implementation and/or process can be related to other implementations. As a specific example, implementations described in relation to communications systems including numerous clients with sensors can be applicable to other environments. In other words, processes, features, components, and/or properties described in relation to one implementation can be useful in other implementations. Furthermore, it should be understood that the systems and methods described herein can include various combinations and/or sub-combinations of the components and/or features of the different implementations described. Thus, features described with reference to one or more implementations can be combined with other implementations described herein.