Efficient service advertisement and discovery in a peer-to-peer networking environment.
Abstract
A local device broadcasts a service advertisement in a wireless network, where the service advertisement includes one or more service identifiers (IDs) identifying one or more services being advertised and an availability schedule of the local device. Optionally, the local device reduces power to at least a portion of the local device and wakes up at a time according to the availability schedule. The local device listens in the wireless network according to the availability schedule of the local device. In response to a service request received from a remote device during the availability window, the local device transmits a service response to the remote device. The service request includes one or more service IDs identifying one or more services being inquired by the remote device and the service response includes detailed information associated with one or more services identified by the one or more service IDs.

Term
4.2 yearsleft in the term
Expires 8 December 2030.
- Priority
- Filed
- Today
- Expires
12 claims: 5 independent, 7 dependent
- 1CLAIMS REIVINDICACIONES 1. - Un método implementado por una máquina para anunciar un servicio en un ambiente de servicio de red de similar a similar, el método comprende:one. - A method implemented by a machine to advertise a service in a similar to similar network service environment, the method comprises: 5 transmitting, via a local device, a service announcement on a wireless network, the service announcement including one or more service identifiers (IDs) that identify one or more services being advertised and a local device availability schedule;5 transmitir, mediante un dispositivo local, un anuncio de servicio en una red inalámbrica, el anuncio de servicio que incluye uno o más identificadores de servicio (IDs) que identifican uno o más servicios que están siendo anunciados y un programa de disponibilidad del dispositivo local;escuchar, mediante el dispositivo local, en la red inalámbrica de listen, through the local device, in the wireless network of 10 according to the availability program of the local device;and in response to a requested service received from a remote device during the availability window, transmit a service response to the remote device, the service response that has the detailed information with one or more services identified by one or more service IDs. 10 acuerdo con el programa de disponibilidad del dispositivo local;y en respuesta a un servicio solicitado recibido desde un dispositivo remoto durante la ventana de disponibilidad, transmitir una respuesta de servicio al dispositivo remoto, la respuesta de servicio que tiene la información detallada con uno o más servicios identificados por uno o más IDs de servicio 15 en la solicitud de servicio. fifteen in the service request.
- 67.- A portable device, comprising:a wireless transceiver;and a service announcement unit coupled to the Wireless transceiver to transmit a service announcement on a Wireless network by means of the Wireless transceiver, the service announcement includes one or more service identifiers (IDs) that identify one or more services that are 7.- Un dispositivo portátil, que comprende: un transceptor inalámbrico;y una unidad de anuncio de servicio acoplada al transceptor Inalámbrico para transmitir un anuncio de servicio en una red Inalámbrica por medio del transceptor Inalámbrico, el anuncio de servicio incluye uno o más identificadores de servicio (IDs) que identifican uno o más servicios que están 5 being announced and a handset availability program, where the service announcement unit is configured to listen on the wireless network according to the availability program, and where in response to a service request received from a remote device During the availability window, the service announcement unit is 5 siendo anunciados y un programa de disponibilidad del dispositivo portátil, en donde la unidad de anuncio de servicio está configurada para escuchar en la red inalámbrica de acuerdo con el programa de disponibilidad, y en donde en respuesta a una solicitud de servicio recibida desde un dispositivo remoto durante la ventana de disponibilidad, la unidad de anuncio de servicio está 10 configured to transmit a service response to the remote device, the service response has Detailed Information associated with one or more services identified by one or more service IDs in the service request. 10 configurada para transmitir una respuesta de servicio al dispositivo remoto, la respuesta de servicio tiene Información detallada asociada con uno o más servicios identificados por uno o más IDs de servicio en la solicitud de servicio.
- 89. - A method implemented by a machine to discover a service in a network service environment similar to assimilate, the method comprises:9. - Un método implementado por una máquina para descubrir un servicio en un ambiente de servicio de red de similar a asimilar, el método comprende: receiving on a local device, a service announcement from a remote device on a Wireless network;the service announcement includes one or more Service Identifiers (IDs) that Identify one or more of the services advertised by the remote device, wherein the service announcement additionally includes a remote device availability program, and in response to the announcement service, transmit, through the local device according to the availability program of the remote device, a service request to the remote device to request one or more services in the advertisement, the service request includes one or more service IDs associated with the one or more services that are being required. recibir en un dispositivo local, un anuncio de servicio desde un dispositivo remoto sobre una red Inalámbrica;el anuncio de servicio incluye uno o más Identificadores de servicio (IDs) que Identifican a uno o más de los servicios anunciados por el dispositivo remoto, en donde el anuncio de servicio incluye adiclonalmente un programa de disponibilidad del dispositivo remoto, y en respuesta al anuncio de servicio, transmitir, mediante el dispositivo local de acuerdo con el programa de disponibilidad del dispositivo remoto, una solicitud de servicio al dispositivo remoto para requerir uno o más servicios en el anuncio, la solicitud de servicio Incluye uno o más IDs de servicio asociadas con el uno o más servicios que están siendo requeridos.
- 1115 14.- Un dispositivo portátil, que comprende:fifteen 14.- A portable device, comprising: a wireless transceiver;and a service discovery unit coupled to the Wireless transceiver to receive, by means of the wireless transceiver, a service announcement from a remote device on a wireless network, the announcement un transceptor inalámbrico;y una unidad de descubrimiento de servicio acoplada al transceptor Inalámbrico para recibir, por medio del transceptor inalámbrico, un anuncio de servicio desde un dispositivo remoto sobre una red inalámbrica, el anuncio
- 1220 incluye uno o más ¡dentlficadores de servicio (IDs) que Identifican uno o más servicios anunciados por el dispositivo remoto, en donde el anuncio de servicio incluye adiclonalmente un programa de disponibilidad del dispositivo remoto, en donde, en respuesta al anuncio de servicio, la unidad de descubrimiento de servicio está configurada, de acuerdo con el programa de disponibilidad del dispositivo remoto, para transmitir una solicitud de servicio al dispositivo remoto para requerir uno o más servicios anunciados en el anuncio de servicio, la solicitud de servicio Incluyendo uno o más IDs de servicio twenty includes one or more service identifiers (IDs) that Identify one or more services advertised by the remote device, where the service announcement additionally includes a remote device availability program, where, in response to the service announcement, the service discovery unit is configured according to the remote device availability schedule, to transmit a service request to the remote device to require one or more services advertised in the service announcement, the service request Including one or more service IDs 5 associated with the one or more services that are being required 5 asociados con el uno o más servicios que están siendo requeridos 15,- El dispositivo portátil de conformidad con la reivindicación 14, caracterizado además porque comprende adicionalmente:una unidad de manejo de energía configurada para reducir la energía a por lo menos una porción del dispositivo 10 local después de recibir el anuncio de servicio y antes de una ventana de disponibilidad especificada por el programa de disponibilidad del dispositivo remoto;y restaurar la energía a la por lo menos una porción del dispositivo local durante la ventana de disponibilidad del dispositivo remoto durante la 15. The portable device according to claim 14, further characterized in that it further comprises: an energy management unit configured to reduce energy to at least a portion of the local device 10 after receiving the service announcement and before an availability window specified by the remote device availability program;and restore power to at least a portion of the local device during the availability window of the remote device during the 15 cual, la solicitud de servicio es transmitida al dispositivo remoto. fifteen which, the service request is transmitted to the remote device.
Independent claims5
173 paragraphs in 7 sections, as filed
(54) Title: ANNOUNCEMENT AND DISCOVERY OF EFFICIENCY SERVICE IN A NETWORK ENVIRONMENT OF EQUAL TO EQUAL. (54) Title: EFFICIENT SERVICE ADVERTISEMENT AND DISCOVERY IN A PEER-TO-PEER NETWORKING ENVIRONMENT.
(57) Summary
A local device broadcasts a service announcement on a wireless network, wherein the service announcement includes one or more service identifiers (IDs) that identify one or more services that are being advertised and a local device availability schedule; optionally, the local device reduces power to at least a portion of the local device and wakes up in a moment according to the availability schedule; the local device listens on the wireless network according to the availability program of the local device; In response to a service request received from a remote device during the availability window, the local device transmits a service response to the remote device; the service request includes one or more service IDs that identify one or more services that are being requested by the remote device and the service response includes detailed information associated with one or more of the services identified by the one or more service IDs .
(57) Abstract
A local device broadcasts a Service advertisement in a wireless network, where the Service advertisement ineludes one or more Service identifiers (IDs) identifying one or more Services being advertised and an availability schedule of the local device. Optionally, the local device reduces power to at least a portion of the local device and wakes up at a time according to the availability schedule. The local device listens in the wireless network according to the availability schedule of the local device. In response to a Service request received from a remote device during the availability window, the local device transmits a Service response to the remote device. The Service request ineludes one or more Service IDs identifying one or more Services being inquired by the remóte device and the Service response ineludes detailed Information associated with one or more Services identified by the one or more Service IDs.
ANNOUNCEMENT AND DISCOVERY OF EFFICIENT SERVICE IN A
EQUAL-TO-EQUAL NETWORK ENVIRONMENT
RELATED REQUESTS
This application claims the priority of the Patent Application
US Provisional No. 61 / 289,689, filed on December 23, 2009, which is incorporated by reference herein in its entirety.
FIELD OF THE INVENTION
The embodiments of the present invention refer generally to the field of peer-to-peer network systems; and more particularly, to service announcement and service discovery in a peer-to-peer network systems environment.
BACKGROUND OF THE INVENTION Devices, such as electronic devices, computer systems, portable devices, and handheld devices, have software applications, such as gaming applications. Some of these apps are shared - for example, multiple devices can participate in a gaming app in a collaborative way. The shared features of an application can be called services. Before a device can use a service offered by another device, the participating device (the discoverer) must discover that service available on a network. The services are advertised by a remote device (that is, the advertiser) on the network.
Various discovery techniques are available for electronic devices connected to, or attempting to connect to, a network. These discovery techniques normally involve the use of a network protocol to determine that the devices and / or services are available through a network connection. These discovery techniques are useful for many situations. However, in certain situations, these discovery techniques are not optimal.
Typically, each device on a network is configured to periodically scan digitally and / or advertise a service on the network in accordance with commonly known advertising and digital scan schedules, such as, for example, a 100 millisecond interval ( ms) to 800 ms. When there are many closely located devices on the network, such as a digital and / or advertising scanning strategy, it may not be efficient as it may be a heavy communication channel congestion, which results in the devices taking up too much time to discover a service or other device and / or to advertise a service. In such a scenario, the additional time may require using digital scanning to ensure reliable service discovery. Using additional digital scanning time consumes a greater amount of energy, which is a critical resource in a portable electronic device. Also, frequent discovery digital scanning and ad streaming can themselves consume more power, which is important for a portable device. There is a lack of an efficient way to optimize service discovery and / or advertisement for portable devices.
BRIEF DESCRIPTION OF THE INVENTION
According to some modalities, a service announcement and discovery mechanism is used to enable a device (for example, an electronic portable device, such as a laptop, cell / smart phone, media player, personal digital assistant ( PDA), or a combination thereof) to efficiently discover and / or advertise one or more services on a wireless network (for example, IEEE 802.11 or WIFI, local area network, such as a Bluetooth compatible network).
In one embodiment, when a first device advertises one or more services on a wireless network, a first device transmits or multiple broadcasts of an advertisement message (also referred to simply as an advertisement) on the network, wherein the advertisement includes one or plus service identifiers (eg small snippets), each identifying a particular service potentially available from the first device. The advertisement also includes information regarding the availability, such as availability schedule, of the first device on which the first device in the network will listen for any service request about the advertisement. After which, the first device can turn off or reduce power for at least a portion, such as a radio frequency (RF) portion (eg, a transceiver, antenna), of the first device for a specified period of time subsequent according to availability information (eg availability schedule). Alternatively, the first device may perform some other tasks during that time period.
When a second device on the network receives the advertisement, the second device can determine if it is interested in purchasing one or more of the advertised services from the first device based on the service identifiers in the advertisement. IF Interested, the second device may transmit a service request to the first device using the availability information of the first device, where the service request includes the service identifier of one or more selected services. For example, the second device may transmit the service request according to the availability schedule of the first device (for example, during the availability window of the first device when the first device is listening). In response to the service request, the first device may transmit more detailed information about the requested services to the second device.
According to another embodiment, each device on the network is configured to monitor the operating environment of the respective device, as well as network traffic on the network. Based on the monitoring result, a device can dynamically adjust its announcement period and / or service discovery period. For example, if a device is short on small battery life, the device may reduce the frequency of service announcements and service discovery (for example, increase service announcement and / or discovery periods). As another example, if the communication channel congestion was determined to be relatively high, for example due to a large number of devices on the network, a device may also adjust the service announcement and / or discovery periods accordingly (For example, increase service announcement and / or discovery periods to avoid collapse due to network congestion).
In one embodiment, the service announcement period and / or the service discovery period are calculated based on multiples of a predetermined base value. However, the service discovery period is configured not to be multiples of the service announcement period, or vice versa. As a result, an advertiser and / or discoverer can calculate their own service announcement period and / or service discovery period independently; but an advert from an advertiser will still be captured by a discoverer over a period of time depending on the specific calculation of the service announcement period and / or the service discovery period.
In accordance with a further embodiment, multiple devices that have the ability to advertise one or more services can coordinate with each other to select one or more devices to advertise services on behalf of the other devices. That device acts as a group advertiser. A device can be selected as a group advertiser according to a variety of parameters (for example, a battery condition, etc.) which are monitored by the monitoring logic of the respective device. A device can operate as an advertiser that advertises its own services and / or a group advertiser that advertises services from other devices on the network. A device may also operate as an advertiser to advertise its own services, as well as being an ad issuer that has one or more of its own services to be advertised by another device. A device can also operate as an ad issuer that only relies on another device to advertise its services.
Other features of the present invention will become apparent from the accompanying drawings and from the detailed description below.
BRIEF DESCRIPTION OF THE DRAWINGS
The embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings in which, similar references indicate similar elements.
Figure 1 is a network configuration that can be implemented with an embodiment of the present invention.
Fig. 2 is a block diagram illustrating an example of an electronic device in accordance with an embodiment of the present invention.
Fig. 3 is a flowchart illustrating an example of a service announcement transaction flow according to one embodiment.
Fig. 4 is a timeline diagram of a service announcement according to one embodiment.
Fig. 5 is a block diagram illustrating an example of an announcement message according to one embodiment.
Fig. 6 is a flowchart illustrating an example of a method for advertising a service according to one embodiment.
Figure 7 is a flowchart illustrating an example of a method of discovering a service according to one embodiment.
Figure 8 is a block diagram illustrating an electronic device in accordance with another embodiment of the present invention.
Fig. 9 is a timeline diagram illustrating an announcement period and a discovery period according to one embodiment.
Fig. 10 is a flowchart illustrating a method of advertising a service in accordance with another embodiment of the present invention.
Figure 11 is a flowchart illustrating a method for discovering a service in accordance with another embodiment of the present invention.
Fig. 12 is a block diagram illustrating an electronic device in accordance with another embodiment of the present invention.
Figures 13A to 13C are transition diagrams illustrating examples of device transitions between announcement operating states according to some embodiments herein.
Invention.
FIG. 14 is a block diagram illustrating a group announcement message in accordance with an embodiment of the present invention.
FIG. 15 is a flowchart illustrating a method for one device to request that another device act as a group advertiser and advertise services on its behalf.
Figure 16 is a flowchart illustrating a method for one device to become a group advertiser and start advertisement services on behalf of another device.
FIG. 17 is a flow chart illustrating a method for selecting a group advertiser in accordance with another embodiment of the present invention.
Figure 18 shows an example of a data processing system, which can be used with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
The various embodiments and aspects of the present invention will be described with reference to the details set forth below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the present invention and are not to be construed as limiting the present invention. The numerous specific details are described to provide a complete understanding of the various embodiments of the present invention. However, in some cases, the conventional or well-known details are not described in order to provide a concise approach to the embodiments of the present invention.
References in the specification to an embodiment or embodiment means that a particular feature, structure, or aspect described in conjunction with the embodiment may be included in at least one embodiment of the present invention. The appearance of the phrase in a modality in various parts of the specification does not necessarily refer to the same modality. The procedures depicted in the figures below are performed using processing logic comprising hardware (eg, a circuit system, dedicated logic, etc.), software, or a combination of both.
Although the procedures are described below in terms of some sequential operations, it should be appreciated that some of the operations described can be performed in a different order. Also, some operations can be performed in parallel, rather than sequentially.
Definitions
Advertiser - a device that advertises one or more of its own services.
Group Advertiser - A device that advertises one or more services on behalf of one or more different devices. Group advertisers also advertise their own services, if they have them.
Advertiser - a device whose services are being advertised by another device on the network (ie, by a group advertiser, which does not include itself).
Discoverer - a device that is trying to discover one or more services on the network.
Availability window - a period of time that a device is available and listening on the network, and they have the ability to respond to service discovery requests, advertisement requests, and other requests.
Availability schedule - the times a device will be available to respond to service requests.
Included in announcement messages, it indicates the times and widths of a device availability window (s).
Announcement / Announcement Message - a multiple broadcast / broadcast box sent periodically by an advertiser containing information about the services that is available
Group Announcement / Group Announcement Message - a multiple broadcast / broadcast box sent by a group advertiser that contains information about their own services (if any), as well as services available on other devices on the network.
Announcement Request / Announcement Request Message - a message sent by one device to another device requesting that the recipient act as a group advertiser and advertising services on behalf of the sender.
Announcement Response / Announcement Response Message - A message sent by one device to another device in response to an announcement request message, indicating whether the sender will honor the initial request message and act as a group advertiser.
Service Request / Service Request Message - a message sent by the discoverer to an advertiser requesting detailed information about the service match to the supplied ID.
Service response / service response message - a message sent by an advertiser / group advertiser to a discoverer that provides detailed information about one or more services.
Ad Period - the time interval between successive transmissions of an ad box by an advertiser.
Discovery Period - the time interval between successive discovery attempts by a discoverer.
Figure 1 is a network configuration that can be implemented with an embodiment of the present invention. Referring to Figure 1, network configuration 100 includes multiple electronic devices 101-103 coupled in communication with network 104, which may be a wireless network, such as an IEEE 802.11 (eg, WiFi) or a Personal Area Network (PAN) supported by the network (for example, Bluetooth). Any of the devices 101 to 103, can be any of the portable devices, such as, for example, a portable computing device (for example, a laptop / computer such as MacBook ™ from Apple Inc. of Cupertino, California) , a tablet PC (for example, an Apple Inc. iPad ™), a cell / smart phone (for example, Apple Inc.'s Phone ™), a media player (for example, Apple Inc.'s Pod ™ .), a PDA, a copy / print / scan / fax / digital device, or a combination thereof. Alternatively, any of the devices 101 to 103 may be a laptop or other non-portable devices that have a wireless communications interface (for example, a built-in or connected transceiver or front-processor RF) that has the ability to communicate. wirelessly with another device on a wireless network. Each of the devices 101 to 103 includes service announcement logic (for example, logic 105 to 107, respectively) and service discovery logic (for example, logic 108 to 110, respectively), which can be implemented in hardware, firmware, software or a combination thereof. Service announcement logic is responsible for announcing one or more services from a local device on network 104, while service discovery logic is responsible for discovering one or more services available from one or more remote devices on the network 104. Devices 101-103 can advertise and / or discover one or more services on network 104 using a variety of wireless communication protocols, such as, for example, WIFi, or protocols compatible with Bluetooth. Additional detailed information regarding service discovery using a personal area network protocol can be found in the US Co-pending Patent Application. 12 / 405,130, entitled Service discovery functionality utilizing personal area network protocols, filed March 16, 2009, which is incorporated herein by reference in its entirety.
The purpose of a service advertisement for a device (also referred to as an advertiser) is to inform other devices on a network, or enable other devices (also called discoverers) on the network to discover that particular device is potentially available from that particular device. It should also be noted that throughout this application, the modalities of this application will be described in a wireless network systems environment;
however, it will be appreciated that such modalities can also be applied to a wired network systems environment.
In one embodiment, when a first device, in this example device 101, advertises one or more services on a wireless network, service announcement logic 105 of device 101 transmits or multiple-broadcasts an announcement message (also simply called such as an advertisement, or a service advertisement) on network 104, wherein the advertisement includes one or more service identifiers (IDs), each identifying a particular service potentially available from device 101. A Service Identifier can be represented by a hash value constructed using a variety of hashing algorithms (eg SHA-1 or MD5). A hash value can be generated based on data that represents a signature or certain characteristics of a particular service. The ad additionally includes availability information, such as the availability schedule for device 101, that device
101 it will use it to configure its availability window, when it will listen on network 104 for any Service Interrogations for the announcement of other devices (for example, devices 102-103). After which, device 101 can be turned off or reduce power for a given portion of device 101, such as, for example, at least the radio frequency (RF) portion (eg, transceiver, antenna) of device 101 up to a specified period of time in accordance with the availability information associated with device 101. Alternatively, device 101 may, in turn, perform other tasks without transmitting or listening on network 104.
When a second device, in this example the device
102 In the network it receives the advertisement transmission from the device 101 based on the service identifiers in the advertisement, the device 102 can determine if it is interested in acquiring additional detailed information of the advertised service from the device 101. If so, according to one embodiment, device 102 may transmit a service request to device 101 according to device 101 availability scheduling (for example, during one of device 101 availability windows when device 101 is listening), where the service request includes one or more service identifiers of one or more selected services. In response to the service request, the device 101 can transmit more detailed information of the requested services (for example, the device 102). In other words, a service ID can only indicate a potentially available service from an advertiser. In order to confirm such service, a discoverer has to acquire additional detailed information from the advertiser through a service request and response protocol.
In accordance with another embodiment, each of the devices 101 to 103 in network 104 is configured to monitor the operating environment of the respective device, as well as network traffic in the network. Based on the monitoring result, a device can adjust its service announcement period (also simply referred to as an announcement period) and / or a service discovery period (also simply referred to as a discovery period) dynamically. . For example, if the battery in device 101 is running low, device 101 may reduce the service announcement and service discovery transmission and listening frequency (eg, Increase service announcement and / or discovery periods) . Another example, if the communication channel congestion was determined to be relatively high, for example due to a large number of devices on the network, a device 101 may also adjust the service announcement and / or discovery periods accordingly (eg Increase ad and / or discovery periods).
In one embodiment, a service announcement period and / or the service discovery period are calculated based on one or more multiples of a predetermined base value. However, a service discovery period may not be configured as a multiple of the service announcement period, or vice versa. As a result, an advertiser and a discoverer can calculate their own service announcement period and / or service discovery period independently; although an advert from an advertiser (eg, device 101) will still have the ability to be captured by a discoverer (eg, device 102) over a period of time. Furthermore, due to the fact that a service announcement period is not a multiple of a service discovery period or vice versa, each of the devices in the network can adapt its own period before establishing any communication between them, based on in their own perception of the network conditions established above.
According to a further embodiment, devices 101 a
103 they can coordinate with each other to select one or more devices to advertise services on behalf of the other devices. For example, device 101 can be selected as a group advertiser according to a variety of parameters (eg, a battery condition, etc.) which are monitored by device monitoring logic, for the services of advertising for device 102 and / or device 103. Device 101 may operate as a group advertiser that advertises its own services and the services of devices 102-103 on the network. Device 101 may also operate as an advertiser to advertise its own services, as well as an ad issuer that has one or more of its own services to be advertised by another device (eg, devices 102-103). Device 101 may also operate as an ad issuer that relies only on another device (eg, devices 102-103) to advertise its services.
It should be noted that throughout this application, the term of service can be a wide range of services that include, without limitation, Print services, local area network (LAN) access services, network access services from wide area (WAN), cell phone service, data storage services, and / or application services (for example, media streaming, games, collaborative document creation services, recording services, etc.).
Efficient service announcement and / or discovery mechanisms
Fig. 2 is a block diagram illustrating an example of an electronic device according to an embodiment of the present invention. For example, electronic device 200 can be implemented as part of any of devices 101-103 of FIG. 1. Referring to FIG. 2, device 200 includes, without limitation, a service announcement unit 201, a service discovery unit 202, a user interface unit 203, a service management unit 204, a storage 205, one or more processors or processor cores 206, a network interface unit 207 and memory 208 coupled to each other by means of a data bus, interconnect or fabric 209.
Processor 206 can be any kind of microprocessor, which can be a single processor, multiple processors, or multiple processor cores. The network interface unit 207 may be part of a front processor RF, although it is not limited to a wireless transceiver and an antenna or a modem, etc. Alternatively, network interface unit 207 may also include a wired communications interface, such as an Ethernet port, a universal serial data collector (USB) bus, or Firewire ™ port. Memory 208 can be any kind of random access memory (RAM), which is normally implemented as volatile memory. The user interface unit 203 may include a display device, an input device (eg, a keyboard, a touch pad, a touch screen, a stylus device, or a combination thereof), and a user interface. audio and / or video, etc.
Service announcement unit 201 is responsible for announcing one or more services available or provided by device 200. For example, electronic device 201 may be implemented as part of any of devices 105-107 of FIG. 1. In one embodiment, service announcement unit 201 is configured to announce, via network interface unit 207, one or more services by multiple transmission or broadcast of an announcement on the network (eg, network 104 of FIG. 1) according to an announcement schedule (eg, announcement period) An announcement may include one or more service identifiers (IDs) that identify a service that is potentially provided by device 200. A service identifier can be generated by service manager 204 and stored in storage device 205 as part of service identifiers 210. In one embodiment, a service identifier includes a hash value generated by the service manager. 204 service according to a variety of hashing algorithms, such as SHA-1 algorithms or
MD5.
Alternatively, a service identifier can be represented by a particular bit in a bit pattern, where the bit pattern includes one or more bits that have a predetermined logical value, each representing a particular service. For example, the location of a particular bit in a bit pattern is used to indicate a particular service that is potentially available from an advertiser, where the bit pattern is transmitted over the network through an advertisement, similar to the techniques described in copending US Patent Application No. 12 / 687,814, entitled Efflcient Service discovery for peer-to-peer networklng device, filed on January 14, 2010, which is incorporated herein by reference in its entirety.
Again, a service ID can only indicate a potentially available service from an advertiser. Also, a hash (service ID) can possibly represent multiple services since these can be a collision where multiple services hashed for the same value. In order to confirm such service, a discoverer has to acquire additional detailed information from the advertiser through a service request and response protocol. Advertising a potential service by transmitting or multiple issuing a hash value representing that potential service, and providing detailed information about the service only in response to a specific request for that service, greatly reduces the network traffic involved in the advertisement and service discovery.
Service administrator 204 is also responsible for maintaining or managing service information 211 associated with available services of device 200, which can be stored in storage device 205. Storage device 205 can be implemented in any class. of memory devices or disks and be accessed through any kind of file systems. Service manager 204 may also generate and maintain a list of services available on the network, including services advertised by device 200 and by other devices on the network. The service list may be periodically updated in response to a result of the service discovery operation performed by service discovery unit 202.
Similarly, service discovery unit 202 is responsible for discovering one or more available services on the network, which may be advertised by one or more different devices on the network. For example, service discovery unit 202 can be implemented as part of any of service discovery logic 108-110 of FIG. 1. In response to an announcement from a remote device, service discovery unit 202 is configured to communicate, via network interface unit 207 with the remote device, to acquire additional detailed information about services and can generate or update a list of services that are available from the network, which can be stored as part of the service information 211.
Fig. 3 is a flowchart illustrating an example of a service announcement transaction flow according to one embodiment. For the purpose of illustration, it was assumed that both the local device 301 (as an advertiser) and the remote device 302 (as a discoverer) have a similar or identical infrastructure as the device 200 in Figure 2. Referring to FIG. 2 and FIG. 3, in accordance with one embodiment, after receiving an announcement from a service announcement unit of device 301, via transaction 303, a service discovery unit of device 302 compares the service IDs in the ad request with those generated locally through operation 304. If device 302 is interested in the advertised service or services, the service discovery unit of device 302 transmits a service request to device 301 via transaction 305 which includes one or more service identifiers that identify one or more service. the device 302 is interested in. In response to the service request, the service announcement unit of device 301 transmits a service response to device 302 that includes detailed information of one or more services requested by transaction 306. It should be noted that a service identifier it can only indicate that a service is potentially available from device 301. In order to obtain detailed information of the potential service, the discoverer has to acquire detailed information by transmitting a service request based on the service identifier. Device 302 then compares the service information it returns against the local list of desired services by means of transaction 307. If any of the services match, devices 301-302 can participate in the services (for example, playing games in a collaborative way) via transaction 308.
In accordance with one embodiment, referring again to FIG. 2, when a service is advertised, an advertisement generated by the service advertisement unit 201 further includes an advertiser availability schedule, in this example, of the device 200. In one mode, the availability schedule includes the start of the next availability window from the time the ad was broadcast and the length of the window (for example, the duration of the availability window). In other words, an advertiser can only listen on the network for a specific period of time. When a discoverer receives an advertisement, the discoverer can schedule a broadcast time slot according to the advertiser's availability schedule, during which the discoverer transmits a service request to the advertiser during one of the advertiser's availability windows. Otherwise, either or both of the advertiser and discoverer can turn off or reduce power to at least a portion (eg, wireless transceiver or front processor RF) of the respective device, eg, via a management unit power of the respective device (not shown). It should be noted that some or all of the components shown in Figure 2 can be implemented in hardware, firmware, software, or a combination thereof.
Fig. 4 is a timeline diagram of a service announcement according to one embodiment. Referring to FIG. 4, when the advertiser (eg, device 200) advertises a service, in one embodiment, the advertiser can transmit an announcement at time 401, where the advertisement includes an availability schedule having an interval until the next availability window 402 begins and the duration of the next availability window 403. That is, after transmitting the advertisement at 401, the advertiser can turn off or reduce power to at least a portion of the device, such as, for example, a front processor RF of the device. The advertiser can then turn the power back on in the next availability window for the duration 403 during which a discoverer may contact the advertiser to acquire additional Detailed Information for a particular service or services. As a result, the advertiser's power consumption can be reduced. During the availability window, the advertiser can receive a service request from a discoverer and respond with a service response that has detailed information of the requested service or services.
Similarly, after the discoverer receives an advertisement, the discoverer can also turn off or reduce power to at least a portion of the device and wake up according to the advertiser's availability window below to transmit a service request to the advertiser. . As a result, the power consumption of the discoverer can be reduced.
Fig. 5 is a block diagram illustrating an example of an advertisement message according to one embodiment. Referring to FIG. 5, advertisement 500 includes, without limitation, a header 501, an availability window start 502, an availability window length 503, a number of service IDs 504, and one or more service IDs 505. In one embodiment, the service ID is represented by a hash value, which represents a possible service to be advertised. Generally speaking, a hash (service ID) can possibly represent multiple services since these can be a collision where multiple services hashed for the same value. It should be noted that the ad format and field layout 500 is shown for illustration purposes only; Other formats and field arrangement can also be implemented.
Fig. 6 is a flowchart illustrating an example of a method for advertising a service according to one embodiment. It should be noted that method 600 can be performed using processing logic, which may include hardware, firmware, software, or a combination thereof. For example, method 600 may be performed by service announcement unit 201 of FIG. 2. Referring to Figure 6, at block 601, an advertisement is constructed within a local device (eg, an advertiser), which includes a next availability window start period, availability window length, a number of Service IDs (for example, hashes), and the actual service IDs.
Each ID represents a service potentially offered by the local device. At block 602, the advertisement is broadcast or multicast through a local device on a wireless network.
In block 603, the local device can optionally turn off or reduce power to at least a portion of the device and wake up on time according to the following availability window specified in the announcement request in block 604. In block 605, during the availability window, the local device listens for and receives a service request from a remote device over the network in response to the announcement. The service request includes one or more service IDs representing one or more services requested by the remote device. The one or more service IDs can be selected from those presented in the previously broadcast or multiple broadcast advertisement from the local device. In response to the service request, in block 6 local device transmits a service response to the remote device, which includes the detailed information of the services requested in the service request.
Figure 7 is a flowchart illustrating an example of a method for discovering a service according to one modality. It should be noted that method 700 can be performed using processing logic, which may include hardware, firmware, software, or a combination thereof. For example, method 700 may be performed by service announcement unit 202 of FIG. 2. Referring to Fig. 7, at block 701, a local device (eg, a discoverer) receives an advertisement from a remote device over a network. In response to the advertisement, in block 702, the local device extracts from the advertisement a next availability window 'start, availability window length, and one or more service IDs (for example, hashes) that identify one or more services advertised by the remote device. At block 703, the local device can optionally turn off or reduce power to at least a portion of the device and wake up at any given time in accordance with the following availability window specified in the announcement. At block 704, the local device transmits a service request to the remote device, where the service request includes one or more service IDs (eg, hashes) that identify one or more services to be searched. In block 705, a service response is received from the remote device during the availability window of the remote device, where the service response includes more detailed information of the services sought.
Discovery / Service Announcement with Dynamic / Discovery Announcement Periods
According to some modalities, the announcement period and the discovery period can be dynamically adjusted based on the user's operating conditions and / or behaviors at the point in time. According to one embodiment, each device on the network is configured to monitor the operating environment of the respective device, as well as network traffic on the network. Based on the monitoring result, a device can dynamically adjust its announcement period and / or service discovery period. For example, if a device's battery is running low, the device may reduce the frequency of service announcement and service discovery (eg, increase service announcement and / or discovery periods). Another example, if the communication channel congestion was determined to be relatively high, for example due to a large number of devices on the network, a device may also adjust the service announcement and / or discovery periods accordingly ( for example, increasing service announcement and / or discovery periods to avoid collapse due to network congestion).
In one embodiment, a service announcement period and / or the service discovery period are calculated based on multiples of a predetermined base value. However, a service discovery period may not be multiples of the service announcement period, or vice versa. As a result, an advertiser and a discoverer can calculate their own service announcement period and / or service discovery period independently; however an advert request from an advertiser still has the ability to be captured by a discoverer over a period of time depending on the specific calculation of the service announcement period and / or the service discovery period.
Figure 8 is a block diagram illustrating an electronic device in accordance with another embodiment of the present invention. For example, device 800 may be implemented as any of devices 101-103 of Figure 1. Referring to Figure 8, similar to Device 200 of Figure 2, Device 800 includes, without limitation, an announcement unit. Service 201, a service discovery unit
202, a user interface unit 203, a service management unit 204, a storage device 205, for storing service identifiers 210 and service information 211, one or more processors or processor cores 206, a network interface unit 207 a memory 208 and a user interface unit 203 coupled to each other by means of a data bus bar, interconnect or fabric 209. These components have identical or similar functionalities as those shown in figure 2 and therefore certain reference numbers of figure 2 are retained.
Furthermore, in accordance with one embodiment, device 800 includes an operating environment monitoring unit 801 and a period calculator or announcement and / or discovery program 802. In one embodiment, operating environment monitoring unit 801 is configured to monitor the operating environment of the 800 device, as well as network traffic on the network. Based on the monitoring result, the 802 announcement and / or discovery period is configured to dynamically adjust the announcement period and / or the service discovery period. For example, if device 800 has a lower remaining battery life (monitored by monitoring unit 801), the 802 discovery period or program calculator or program may reduce the frequency of service announcement and service discovery ( for example, increasing service announcement and / or discovery periods). Another example, if the communication channel congestion was determined to be relatively high, for example due to a large number of devices on the network, or within a predetermined proximity, the 802 advertisement and / or discovery period calculator You can also adjust the service announcement and / or discovery periods accordingly. Additionally, the announcement and / or discovery periods can also be adjusted based on the types of requests to be shared and the behavior of the user (for example, active users), etc.
In one embodiment, a service announcement period and / or the service discovery period are calculated based on one or more multiples of a predetermined base value. However, a service discovery period may not be one or more multiples of the service announcement period, or vice versa. As a result, an advertiser and a discoverer can independently calculate and / or adjust the announcement period and / or the discovery period based on the local environment. Furthermore, due to the fact that a service announcement period is not a multiple of a service discovery period or vice versa, each of the devices in the network can adapt its own period without establishing any communication between them, based on your own perception of the network conditions set out above.
Fig. 9 is a timeline diagram illustrating an announcement period and a discovery period according to one embodiment. Referring to Figure 9, timeline 900 represents an announcement period and timeline 950 represents a discovery period. For the purpose of illustration, the advertisement period is calculated based on 3 times a previously determined base value while the discovery period is calculated based on 4 times the previously determined base value. As shown in Figure 9, although announcement messages are transmitted at a different time and a different rate of the discovery period, because both the announcement period and the discovery period are calculated based on a multiple of one Base value previously determined by agreement, the announcement stream and discovery listener eventually overlap in time slots 901 to 903.
As a result, an advertiser and / or discoverer can independently adjust an adjustment factor based on the operating conditions of the individual devices. For example, if the device battery was determined to be low, the adjustment factor (N) can be increased to decrease announcement and / or discovery activities, which in turn further reduces power consumption. and channel usage. However, by increasing an announcement period and / or a discovery period, you can also increase the detection time to catch a particular announcement message, which leads to lower performance.
According to another embodiment, a discovery period is calculated as a multiple of a dwell time (for example, the period of time during which the device is listening for an announcement message), but not a multiple of a announcement period. In a particular mode, an announcement period is configured to be a multiple of a predetermined base value (for example, 100 ms) * 2<sup>Λ</sup>Ν, where N could be any integer; a discovery period is configured to be the previously determined base value * 3<sup>Λ</sup>Μ or 5<sup>Λ</sup>Μ, where M could be any integer, and a dwell time is configured to be the previously determined base value (for example, 100 ms) * (1 + 10%). Adding 10% to the dwell time account for neflciencla ensures that the dwell time is strictly greater than the previously determined base value.
In the chart below, the percentage numbers in parentheses represent the percentage of time that at least the front processor RF of a device has to be up for these specific advertisement / discovery periods. The number of announcements is based on an approximate calculation of 2 ms for the transmission of the announcement message: wake up the radio, which competes for the channel and transmit a few hundred frames. The discovery number is based on a discovery listener dwell time of 100 ms. The numbers in the main part of the table indicate how long it will take to discover a device in the worst case if the advertiser is using the announcement period in the relevant column header and the discoverer is using the discovery period in the header relevant row.
All times are in seconds.
<td>Period of Ad Period of Discovery</td><td> 0.1 (2%)</td><td> 0.2 (1%)</td><td> 0.4 (5%)</td><td> 0.8 (25%)</td>
<td> 0.1 (100%)</td><td> 0.1</td><td> 0.2</td><td> 0.4</td><td> 0.8</td>
<td> 0.3 (33.3%)</td><td> 0.3</td><td> 0.6</td><td> 1.2</td><td> 2.4</td>
<td> 0.9(11.1%)</td><td> 0.9</td><td> 1.8</td><td> 3.6</td><td> 7.2</td>
<td> 2.5 (4%)</td><td> 2.5</td><td> 5</td><td> 10</td><td> 20</td>
<td> 2.7 (3.7%)</td><td> 2.7</td><td> 5.4</td><td> 10.4</td><td> 20.8</td>
<td> 8.1 (1.24%)</td><td> 8.1</td><td> 16.2</td><td> 32.4</td><td> 64.8</td>
<td> 12.5(8%)</td><td> 12.5</td><td> 25</td><td> 50</td><td> 100</td>
<td> 24.3(41%)</td><td> 24.3</td><td> 48.6</td><td> 97.2</td><td> 194.4</td>
<td> 62.5(0.0016%)</td><td> 62.5</td><td> 125</td><td> 250</td><td> 500</td>
A device that is in a static environment or that wants to dramatically reduce battery usage can dramatically increase
Regardless of your discovery period and your announcement period, for example 24.3 seconds and 200 ms, respectively. In this example, based on the previous table, it is ensured that the airtime (for example, during which the radio is listening and at full power) for said device is below 1.5% at the cost of the time of detection
Incremented (48.6 seconds in order to detect another device that optionally implements the same value). Static environment refers to, for example, the case of a user who remains at home for a long period of time, and therefore will not find changes in the wireless operating environment. Similarly, a device with a large battery or which is in a dynamic environment (or which detects that it is in motion) can also independently decrease its discovery period, for example to 2.5 seconds, which can lead to a time of rapid discovery. This could be the case for a device connected to AC power. Devices that detect that they are in a crowded environment, for example, if they detect more than 15 different advertisers or access points (APs), can Increase their advert periods independently, which increases the detection time although it reduces network congestion. Increasing the announcement period, for example, to 400 ms, could cause the detection time to be within the 50-second Interval for a device that is under discovery with a period of 12.5 seconds, and the airtime in this case is 1.3%. This could be the case in which a user may be sitting in a conference room or an open space work environment with many cubicles.
Detection of the fact that a user is on the move can be done by registering the presence of a few access points with a reasonably high received signal strength indicator (RSSI) according to multiple discovery periods. This requires a device to store the basic service group identifiers (BSSIDs) of the determined highest RSSI APs that are detected over a period of time. IF there is no high RSSI AP detected, this means the user is moving fast or in a free WIFI environment. The announcement period and the discovery period could be adjusted lower, in order to decrease the detection time. IF one or more of those high RSSI APs are consistently detected through various discovery periods (for example, associated or not associated, and not transiting), then the user may be sitting in a room or at a workplace . The discovery period can be set to 200 ms and the announcement period can be Increased to a large value (For example, 24.3 seconds or 62.5 seconds). This user will soon discover other devices, although they will be less easily detected by moving devices. If the environment is crowded, then adjustments have to be made in order to reduce potential congestion, and the announcement period needs to be Increased. As a result, devices can detect each other by discovering more frequently (for example, consuming more power) or waiting more time.
Fig. 10 is a flowchart illustrating a method of advertising a service in accordance with another embodiment of the present invention. It should be noted that method 1000 can be performed using processing logic, which may include hardware, flrmware, software, or a combination thereof. For example, method 1000 may be performed by service announcement unit 201 of FIG. 8. Referring to Figure 10, at block 1001, current operating conditions are monitored by a local device (eg, advertiser) including battery status, network traffic congestion, user behaviors, and types of services to be announced, etc. Based on the operating conditions, in block 1002, an announcement period is dynamically adjusted accordingly. In one embodiment, the advertisement period is configured as a multiple of a predetermined base value such as that previously established. At block 1003, an advertisement is broadcast or multiple-broadcast on a network according to the adjusted advertisement period, which includes one or more services that are being advertised using the service advertisement and discovery techniques set forth above. At block 1004, a service request is received from a remote device in response to an announcement request, which includes a service dial or indicator identifying a service to be requested. In response to the service request, at block 1005, the detailed information of the requested service is provided by means of a service response to the remote device over the network.
Figure 11 is a flowchart illustrating a method for discovering a service in accordance with another embodiment of the present invention. It should be noted that method 1100 can be performed using processing logic, which may include hardware, flrmware, software, or a combination thereof. For example, method 1100 may be performed by service announcement unit 202 of FIG. 8. Referring to Fig. 11, at block 1101, current operating conditions are monitored by a local device (eg, discoverer) including battery status, network traffic congestion, user behaviors, and types of services to be announced, etc. Based on the operating conditions, in block 1102, a discovery period is dynamically adjusted accordingly. In one mode, the discovery period is configured as a multiple of a previously determined base value such as the one previously established. At block 1103, the processing logic periodically listens on the network, according to the adjusted discovery period in an attempt to discover a service available on the network. In response to an advertisement received from a remote device during discovery, at block 1104, a service request is transmitted to the remote device to request a service advertised in the advertisement. At block 1105, a service response is received from the remote device in response to the service request that includes certain detailed information of the requested service or services.
Coordinated Service Announcement Modalities
In accordance with some embodiments, multiple devices that have the ability to advertise one or more services can coordinate with each other to select one or more devices to advertise services on behalf of the other devices. A device can be selected as a group advertiser according to a variety of parameters (for example, a battery condition, etc.) which is monitored by the device's monitoring logic. A device can operate as a group advertiser that advertises its own services and the services of other advertisers on the network. A device may also operate as an advertiser to advertise its own services, as well as being an ad issuer that has one or more of its services advertised by another device. A device can operate as an ad issuer that only relies on another device to advertise its services.
Fig. 12 is a block diagram illustrating an electronic device in accordance with another embodiment of the present invention. For example, device 1200 can be implemented like any of devices 101-103 in Figure 1. Referring to FIG. 12, similar to device 200 of FIG. 2, device 800 of FIG. 8, device 1200 includes, without limitation, a service announcement unit 201, a service discovery unit 202, a unit user interface 203, a service management unit 204, a storage device 205, for storing service identifiers 210 and service information 211, one or more processors or processor cores 206, a network interface unit 207 a memory 208 and a user interface unit 203 coupled to each other by means of a data busbar, interconnect or fabric 209 and a monitoring unit operating environment 801. These components may have identical or similar functionalities as those shown in the figure and therefore certain reference numbers of Figures 2 and 8 are retained for the purpose of illustration.
In addition, in accordance with one embodiment, device 1200 additionally includes an advertiser selection unit 1201, configured to coordinate with other devices within a network proximity to select one or more devices as group advertisers advertising services on behalf of others. For example, advertiser selection unit 1201 communicates with advertiser selection units of other devices within a predetermined proximity of the network to select or negotiate one or more devices with each other to be the advertiser group. The one or more device can be determined and selected based on one or more parameters or attributes, such as, for example, operating conditions and / or user behaviors, which can be monitored or collected by the monitoring unit 801 .
For example, when advertiser selection unit 1201 determines that a remote device is to be selected as a group advertiser, advertiser selection unit 1201 may instruct service announcement unit 201 to transmit a request for message. service announcement (also referred to simply as an announcement request) to the selected remote device, so that the remote device can advertise services for device 1200. Unlike an advertisement, which is broadcast or multi-broadcast on the network, an advertisement request may be a single broadcast message (eg, peer-to-peer) requesting that a specific remote device be advertised. Alternatively, an advertisement request may be multi-broadcast or broadcast on the network requesting one or more remote advertisers. In the embodiment, the service announcement request sent to the remote advertiser includes a device 1200 address (for example, media access address or device 1200 MAC), a number of service identifiers, actual service identifiers (for example , hashes), and availability information, such as the 1200 device availability schedule. As a result, when services are advertised by the remote group advertiser, a remote discoverer can communicate directly with device 1200 to request one or more services that are advertised by a remote group advertiser, without having to contact the advertiser. remote group. Device 1200 may continue to advertise its own services while a remote group advertiser advertises at least some of the services on behalf of device 1200.
Alternatively, once the remote advertiser is selected to advertise services for device 1200, advertisement selection unit 1201 may instruct service advertisement unit 201 to stop advertising its own services and the 1200 transition device in an Announcer Emitter. Additionally, advertiser selection unit 1201 may simply receive a service announcement request from a remote device and instruct service announcement unit 201 to perform the announcement on behalf of the remote device, as well as its own services. In this situation, an ad request is a single or multiple broadcast message (for example, directed specifically to one or more specific devices), rather than a broadcast message (for example, sent to all devices in the net).
The modalities of the present application can be applied in a situation where many devices are within range of each other and participate in proximity detection (eg in a crowded conference room). In this situation, the ability to scale is achieved by having devices that share your ads, in which only a few devices advertise to all others. When two devices see each other (via the proximity detection established above), and regardless of the fact that they can share a common service identifier (for example, hashes), one of the devices can request that the other carry its own ad payload, for example by transmitting an ad request box addressed to the other devices. The ad request box does not need to be answered; as long as the requested device is observed to carry the request payload of the requesting device, the requested device is considered to be a group advertiser for the requesting device, and the requesting devices are then considered to be an Ad Sender.
In one mode, a device can operate in one of four states:
State 0: advertiser (for example, only advertises for itself).
State 1: group advertiser (for example, advertise for yourself and advertise for some others like you).
State 2: Advertiser and Advertiser (for example, advertised through at least one other, advertises for itself, and does not advertise for other peers).
Status 3: ad issuer (for example, advertised by peers).
The devices initially start in state 0, in which they are advertising their own services. This state is the default state, and it shares the same basic behavior that was described in the previous sections. By participating in the cooperative announcement algorithm, devices in state 0 can be promoted to one of the additional cooperative announcement states 1 to 3.
The algorithm uses only one frame (i.e. the advertisement request), which is a directed frame and can be sent by a device in state 0, state 2 or state 3 to a device in state 0, state 1 or status 2. As long as multiple devices are in range of a high number of other devices participating in proximity detection, they can enter the cooperative advertisement. In one embodiment, each device that implements the cooperative ad attempts to find a specified number of advertisers that have the ability to carry their own ad payloads, such as two to three advertisers, for example. When an ad issuer is advertised by enough peers, it can stop broadcasting its own ad boxes and can then only be discovered through its remote group of advertisers. An ad request can be valid for a fixed period of time (for example, several minutes) and then renewal may be required.
According to one modality, cooperative announcement occurs only when two devices have the ability to see each other, that is, they are both operating in state 0, state 1, or state 2. In one mode, one device can be chosen as a group advertiser for another device based on at least some of the following considerations.
one. A device can be selected as a group advertiser if the device is not advertising to more than a predetermined number of peers (eg, 16 peers);
2. A device can be selected as a group advertiser if the device is currently advertising the highest number of similar ones;
3. A device can be selected as a group advertiser if the device is currently advertised by the smallest number of peers;
4a. A device can be selected as a group advertiser if the device advertises to the highest number of services in total; me
4b. A device can be selected as a group advertiser if the device has the longest battery life remaining;
5. A device can be selected as a group advertiser if the device has the highest number of service IDs; and
6. A device can be selected as a group advertiser if the device has the highest MAC address.
In order to choose a device, the above clauses are evaluated in sequential and / or parallel order. For example, clauses 4a and 4b, can be evaluated simultaneously. That is, a device that has an abnormally high number of service IDs would more likely be selected as a group advertiser. If the number of service IDs is approximately the same, then battery usage becomes a major factor. If, on the other hand, a device has infinite battery life (for example, connected to an AC outlet), then it could probably also be chosen as a group advertiser. In one embodiment, battery usage can be coded with two numbers representing the class of device and the amount of time remaining on the battery. Optimizing the topological distribution of cooperative ads is one of the algorithm's goals. This goal is to merge into a situation where a small number of group advertisers are carrying the extra ad payloads for other ad senders, which will then stop advertising itself (i.e. entering state 3). Advertisers of an Advertiser may be spatially distributed around and / or close to the Advertiser (eg, a uniform spatial distribution of advertisers).
Uniformity of spatial distribution is achieved because a group of multiple advertisers comprising a common Ad Sender may not be able to see each other, or they can see each other with very low RSSI, i.e., no they are close to each other. As long as they have the ability to see each other with a certain level of RSSI (for example, more than one mid-range RSSI) and share a common Advertiser, according to a modality, one of the advertisers in the group they may shed additional payload for that common Ad Sender and cease to be an advertiser for that Ad Emitter. Also, among its surrounding peers, the coincidence of clauses 1 to 6 above, a device is free to choose the closest (eg RSSI-based) as its potential group advertiser.
According to some modalities, the announcements are finite in time and need to be renewed periodically, for example, once every few minutes or something like that. These are renewed when the Ad Issuer transmits a new request to a group advertiser. Requests cannot be relayed to a given peer within a minimum amount of time, for example, within a period of less than a few minutes. A device can request (for example, send an advertisement request) to be advertised by a similar one, provided that the RSSI of frames it receives from a similar one is between a medium path and a maximum interval, that is, the advertiser and the Ad emitter are relatively close to each other. This helps avoid situations where third-party devices are within the advertiser range, but not within the Ad Issuer range.
In one embodiment, a device can ask multiple peers to act as group advertisers, as long as those peers comply with clauses 1 through 6 above. Clauses 1 through 6 are designed so that within any pair of devices in range of each other, only one of the like can potentially be chosen as a group advertiser for the pair. Group advertisers in state 3 in a middle RSSI range of each other can compare their additional payloads and drop the redundant additional ad payloads. That is, if two groups of advertisers in a middle RSSI range of each other share a common Ad Sender, then one of the advertisers must unsubscribe from the ad for the Ad Sender. The choice of a device that unsubscribes as an advertiser can also follow clauses 1 to 6 above. That is, a group advertiser that carries the highest number of peers (for example, up to 16) will keep the common Advertiser, while the group advertiser that carries the lowest number of peers will unsubscribe from the Advertiser. . It should be noted that this does not require the exchange of tables. That is, the chosen group advertiser will keep the Ad Issuer shared and do nothing; the other will silently unsubscribe from the Advertiser. Both advertisers remain in state 3.
In one embodiment, group advertisers in state 1 in a half RSSI range of each other, who do not share a common Advertiser, can also choose to cooperate, i.e. one of the group advertisers is chosen as an advertiser group and the other is chosen as an ad Issuer for the pair. The Ad Issuer enters state 2 (for example, deregistering its own ad emitters) and if the Ad Issuer reaches three similar ones, then it will deregister its own payload and Enters status 3 (eg, leaves to announce completely). The advertiser of the pair can start by carrying the ad payload of the ad sender, but not the additional payload of the ad sender. This requirement ensures that additional payload from the ad issuer is not transferred from a group advertiser originally located near it to a group advertiser that may be located far from it. Unsubscribed third-party peers now need to find a new advertiser or become advertisers on their own. It should be noted that this does not require the exchange of tables.
The peers unsubscribed in state 2 can find another group advertiser and remain in their current state, or they can transmit to state 0 and operate if a group advertiser. A device in state 3 that finds itself in the situation where it cannot find at least group advertisers carrying its ad payload can enter state 2 and resume broadcasting its own ads. A device in state 3 that cannot find group advertisers carrying its ad payload can enter state 0 and resume streaming its own ads. These two transitions can occur when a group advertiser exits the Interval, is disabled and / or when an ad request expires, and all the group advertisers around it are at full capacity and / or when there are not many advertisers surrounding it. Alternatively, a device in state 3 that cannot find enough group advertisers to carry its ad payload can select a new group of advertisers using the above rules, and if successful it can remain in state 3.
For example, a good situation is when a group advertiser carries up to 16 additional payloads and an Ad Issuer payload is carried by two surrounding group advertisers. The number of advertisement frames transmitted on the channel is then divided globally by 16; therefore, there will be a much smaller probability of collisions. The total transmitted payload (i.e. byte per second) is divided by 8.
Figures 13A to 13C are transition diagrams illustrating examples of device transitions between operating states according to some embodiments of the present invention. Referring to Figure 13A, it was assumed that devices 1301 to
1308 they are operating within a predetermined proximity, which is detected using certain techniques described above. In this example, devices 1301 to 1302 are operating as group advertisers in state 1; devices 1303 to 1307 are operating as announcement emitters in state 3; and device 1308 is operating as an advertiser and Advertiser in state 2. As can be seen in Figure 13A, device 1301 is selected as a group advertiser for device 1308, as well as devices 1303 and 1305. Device 1302 is selected as a group advertiser for devices 1304 and 1305 through 1307. It was also assumed that the devices
1301 to 1302, which are operating in state 1, are close to each other and have the ability to see each other (for example, over a given RSSI level).
Based on the above advertiser choice algorithm, because device 1302 has a higher number of ad emitters (for example, devices 1304 and 1305 to 1307) than device 1301 (for example, devices 1303, 1305 and 1308), among devices 1301 to 1302, device 1302 is the one selected as a group advertiser for device 1301. As a result, as shown in FIG.
13Β, device 1301 transitions from state 1 to state 2 and no longer operates as an advertiser for device 1308. Subsequently, in Figure 13C, device 1308 becomes a group advertiser in state 1 and the Device 1301 becomes an Announcer Emitter advertised by devices 1302 and 1308 due to clause 3 above (eg, the smallest number of ad emitters).
When an advertiser carries an advertisement for an Ad Issuer, an advertisement message group is created that includes an advertisement for its own services and the services of the Ad Issuer. FIG. 14 is a block diagram illustrating a group announcement message in accordance with one embodiment of the present invention. Referring to FIG. 14, group announcement message 1400 includes announcement message 1401 for the advertiser itself (eg, announcement message for its own services) which is identical or similar to announcement message 500 of the Figure 5. In addition, the composite announcement message 1400 includes additional announcement messages 1402 to 1404, each corresponding to an announcement Emitter. In one embodiment, the announcement message 1410 for an announcement Emitter (for example, messages 1402 to 14040) includes an address (for example, the MAC address) of the announcement Emitter 1411, number of service identifiers 1412 and service identifiers. actual service (for example, hashes) 1413, and the ad issuer 1414 availability schedule. As a result, although advertisement message 1410 is advertised by an advertiser, another device may respond to the advertisement by communicating directly with the Advertiser. It should be noted that the formats of the announcement messages, such as those shown in Figure 14 are described for the purposes of illustration only; Other formats can also be applied.
It should also be noted that although a local device may select a remote device to be its group advertiser based on the operating condition of the local device in view of the operating condition of the remote device, according to one mode, the remote device You can reject or Ignore the announcement request based on your own determination or evaluation of the operating condition of the remote device. In this situation, unless an acknowledgment is received from the remote device, the local device may have to monitor traffic (for example, service announcements) on the network to determine if the selected remote device is actually performing the advertisement representing the local device. The local device may have to select another remote device if the remote device rejects or Ignores the ad request.
Fig. 15 is a flowchart illustrating a method of advertising a service in accordance with another embodiment of the present invention.
It should be noted that method 1500 can be performed using processing logic, which may include hardware, flrmware, software, or a combination thereof. For example, method 1500 may be performed by advertisement unit 201 and / or advertiser selection unit 1201 of FIG. 12. Referring to Figure 15, at block 1501, a local device listens on a wireless network to determine one or more remote devices that have the ability to advertise one or more services on the network. At block 1502, the local device compares certain predetermined operation statistics and / or configurations of the local and remote devices. At block 1503, the local device selects one or more remote devices based on comparison to advertise one or more services on the local device. At block 1504, the local device transmits an advertisement request to selected remote devices that request advertisements on behalf of the local device, including identifiers (eg, hashes) of one or more services to be advertised. The device then waits to see if the request was accepted by listening to its services in the next group announcement message from the remote device, or waiting for a successful announcement response at block 1505. If the request fails, the local device checks to see if they exist. other remote devices that could serve as a group advertiser. If so, go to block 1501 and try the procedure again with a different device. If not, stop the procedure. If the request is successful, it proceeds to block 1505. In block 1505, optionally, the local device ends advertising its own services and relies on the selected remote devices to advertise its services.
Fig. 16 is a flowchart illustrating a method of advertising a service in accordance with another embodiment of the present invention. It should be noted that method 1600 can be performed using processing logic, which can include hardware, firmware, software, or a combination thereof. For example, method 1600 may be performed by advertisement unit 201 and / or advertiser selection unit 1201 of FIG. 12. Referring to Figure 16, at block 1601, an advertisement request is received from a remote device, which includes the service IDs for one or more services to be advertised. At block 1602, the device compares certain previously determined operation statistics and / or configurations of the current and requesting device to see if the request was valid. If not, it may transmit an announcement response indicating failure in block 1606 and then proceed to block 1602. If so, it may transmit an announcement response indicating success and then continue in block 1604. At block 1604, the processing logic constructs a group announcement message that has announcement of a local service and announcement of one or more requested services from the remote device. At block 1605, the local device periodically transmits the composite announcement box on the network.
FIG. 17 is a flowchart illustrating a method of selecting a device as a group advertiser in accordance with an embodiment of the present invention. Referring to FIG. 17, at block 1701, a device can be selected as a group advertiser if the device is not currently advertising more than a predetermined number of similar ones. In block 1702, a device can be selected as a group advertiser if the device is currently advertising the highest number of similar ones; At block 1703, a device can be selected as a group advertiser if the device is currently being advertised (eg, as an Advertiser) by the lowest number of other similar ones; At block 1704, a device can be selected as a group advertiser if the device currently advertises the highest number of services in total, or alternatively, if the device has the longest remaining battery life. At block 1705, a device can be selected as a group advertiser if the device currently has the highest number of service IDs; At block 1706, a device can be selected as a group advertiser if the device currently has the MAC (media access control) address;
It should be noted that the operations Involved in blocks 1701 to 1706, can be performed in sequence and / or in parallel, in no particular order. Other factors may also be considered herein.
The techniques described through this application can be applied to various scenarios or situations. Services can be advertised and / or discovered based on proximity detection of portable devices using some of the techniques described above. This feature allows users of portable devices to advertise one or more services permanently through a Wireless network protocol and detect if the portable devices move within a range of another portable device that is advertising one of those services. The term "permanently" refers to the fact that the advertisement may be open or available for a period of time without further interaction from the local user of the device (eg the advertiser).
For example, a player (for example, a chess or poker player, etc.) can easily connect to any site on the Internet or social network games and play against any available opponent. Such user may never know the opponent in person, although he knows (discovers) him through the network. In this scenario, a user of a portable device looking for opponents could issue an advertisement for a specific game on the network. The ad may be generated by a game application and may include additional information, such as user ratings as a player, desired rating of an opponent, type of game desired, etc. As soon as users enter an interval of another person who is announcing the same game, both users can be alerted (for example, by an alarm, vibration, etc.) and can connect with each other to play. Proximity also means that users play with other users who really have the ability to meet in person against playing against random opponents across the network.
The techniques described above can also be applied to share content or files permanently (for example, being available for a period of time). This is similar to exporting certain content (for example, photos) from a portable device, although it is done in an ad-hoc way over a similar-to-similar link. For example, a user who participates in a conference (or a party or is present on a university campus) can share an image or a document, and can keep their participation open for a period of time (for example, a day or the duration of the conference or party). Any colleague or friend who can be authenticated / connected with the user's device can walk (eg within proximity) and have access (eg download) the image or document.
If the owner of the shared content allows it, and depending on the specific configuration of the corresponding device (for example, advertiser), the content can be shared without requiring the interaction of the owner (for example, alerting or requesting a permission, etc.) to create a similar-to-similar connection. From the user's point of view, this means that you can take a picture of an event and walk all day transmitting the picture continuously.
When two or more devices are coupled to each other via a network and within a predetermined proximity, the devices can discover each other over the network, as well as the services available to each other. IF devices can determine that they support a common multi-device capability application (for example, by matching the corresponding service ID), such as a multiplayer game, each device can be configured to perform one or more of the distributed functionalities of the application with the capacity of multiple devices. A distributed functionality is an application functionality with multi-device capability that is assigned to one or more different devices, which can perform the distributed functionality substantially simultaneously. Distributed functionalities can include input, output and calculation, etc. Each device can collaborate with other devices to carry out its distributed functionalities. In addition, some of the devices may collaborate with each other to perform the same distributed functionalities. In other words, each device may occupy a specific role in making the application multi-device capable, and has a relationship with other devices based on its paper. Additionally, these roles and relationships can be dynamically modified in response to the addition of a device to the network, the removal of devices from the network, current state of application execution and / or user input, etc. .
In this example, at least part of an application with the capability of multiple devices is shared among multiple devices on a network. To share the application with the capacity of multiple devices, all or part of the application with the capacity of multiple devices can be installed in advance on some or all devices on the network, where the application with the capacity of multiple devices can be identified by the service ID set above. Alternatively, one or more devices may transmit all or part of the application with the capacity of multiple devices to other devices on the network in order to share the application with the capacity of multiple devices. As a result, distributed functionalities are performed in a collaborative way. Additional detailed information pertaining to techniques for collaboratively distributed functionalities across multiple devices can be found in co-pending US Patent Application No. 12 / 479,586, entitled Multifunctional devices as virtual accessories filed June 5, 2009, the which is incorporated by reference herein in its entirety.
Example of the data processing system
Figure 18 shows an example of a data processing system, which can be used with an embodiment of the present invention. For example, system 1800 can be implemented as any of devices 101-103 as shown in Figure 1. The data processing system 1800 shown in FIG. 18 includes a processing system 1811, which may be one or more microprocessors, or which may be a system in an integrated circuit microprocessor, and the system also includes memory 1801 for storing data and programs for execution by the processing system. The 1800 system also includes a 1805 audio input / speaker sub-system, which may include a microphone and speaker, for example, for playing music or providing telephone functionality through the speaker and microphone.
A display controller and display device 1807 provides a visual user interface for the user; This digital interface may include a graphical user interface, which is similar to that displayed on a ¡Phone® telephone device, ¡Pad device, or Macintosh computer when operating operating system software. System 1800 also includes one or more 1803 wireless transceivers for communicating with another data processing system. A wireless transceiver can be a WiF transceiver, an infrared transceiver, a Bluetooth transceiver, and / or a wireless cell phone transceiver. It will be appreciated that additional components, not shown, may also be part of system 1800 in certain embodiments, and in certain embodiments fewer components than those shown in FIG. 18 may also be used in a data processing system.
The data processing system 1800 also includes one or more input devices 1813, which are provided to allow a user to provide input to the system. These input devices can be a keyboard, a numeric keypad, a touchpad, or a multi-touchpad. The 1800 data processing system also includes an optional 1815 input / output device, which may be a platform connector. It will be appreciated that one or more data bus bars, not shown, can be used to interconnect the various components, such as those well known in the art. The data processing system shown in Figure 18 can be a laptop, personal digital assistant (PDA), or a cell phone with PDA-like functionality, or a laptop, which includes a cell phone, or a media player, such as an iPod, or devices that combine aspects or functions of these devices, such as a media player combined with a PDA and a cell phone in one device. In other embodiments, the data processing system 1800 may be a networked computer or a processing device embedded within another device, or other types of data processing systems, which have fewer components or possibly more components than those shown. in figure 18.
At least some embodiments of the invention may be part of a digital media player, such as a portable music player and / or video media, which may include a media processing system for displaying the media, a recording device, storage to store the media and may additionally include a radio frequency (RF) transceiver (eg an RF transceiver for a cell phone) coupled with an antenna system and a media processing system. In certain embodiments, the media stored on a remote storage device can be transmitted to the media player through an RF transceiver. The medium may be, for example, one or more of music or other audio, still photographs, or moving photographs.
The portable media player may include a media selection device, such as a touch wheel input device on an iPod®, or ¡Pod Nano® media player from Apple Inc. of Cupertino, CA, a touch screen or a multi-touch input device, button device, mobile pointing input device or other input device. The media selection device can be used to select the media stored in the storage device and / or a remote storage device. The portable media player may, in at least some embodiments, include a display device, which is coupled to the media processing system to display titles or other media indicators that are being selected through the input device and being presented either through a horn or headphones, or on the display device, or both on the display device and on the horn or headphones.
Portions of the preceding detailed descriptions have been presented in terms of algorithms and symbolic representations of operations on data bits within a computation memory. These algorithm descriptions and representations are the ways used by those skilled in the art of data processing to more effectively convey the substance of their work to other experts in the field. An algorithm is there, and is generally intended to be an automatic consistency sequence of operations that lead to a desired result. Operations are those that require physical manipulations of physical quantities. Normally, although not necessarily, these quantities take the form of electrical or magnetic signals with the ability to be stored, transferred, combined, compared, or otherwise manipulated. Convenience has been demonstrated at times, primarily for reasons of common use, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
However, it should be kept in mind that all of these terms and similar terms will be associated with the appropriate physical quantities and are only convenient labels applied to these quantities. Unless specifically stated otherwise, as is evident from the above approach, it is appreciated that throughout the description, the. approaches that use terms such as those set forth in the claims that follow, refer to the action and procedures of a computer system, or similar electronic computing device, that manipulates and transforms the data represented as physical (electronic) quantities within the registers and memories of the computer system into other data similarly represented as physical quantities within the memories or registers of the computer system or other such storage devices , transmission or display of information.
The embodiments of the present invention also relate to an apparatus for performing the operations of the present. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Said computer program can be stored in a computer readable medium. A machine-readable medium includes any mechanism for storing information in a machine-readable form (eg, a computer). For example, a machine-readable medium (for example, computer-readable) includes a machine-readable storage medium (for example, a computer), for example, read-only memory (ROM), random access memory (RAM). ), magnetic disk storage medium, typical storage medium, buffer devices, etc.), etc.
The algorithms and displays presented herein are not inherently related to a particular computer or other device. The various general-purpose systems may be used with the programs, in accordance with the teachings herein, or may prove suitable for building more specialized apparatus for performing the required method operations. The structure required for a variety of these systems will be apparent from the description above. Furthermore, the embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages can be used to implement the teachings of the embodiments of the present invention as described herein.
In the above specification, the embodiments of the present invention have been described with reference to the specific example embodiments thereof. It will be apparent that various modifications may be made thereto without departing from the broader spirit and scope of the present invention set forth in the following claims. The specification and drawings will therefore be interpreted in an illustrative system rather than in a restrictive sense.
Contents7
18 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18
42 members in 9 offices
Priority claims3
| Document | Office | Kind | Date |
|---|---|---|---|
| 28968909 | United States of America | P | |
| 79651310 | United States of America | A | |
| 2010059589 | United States of America | W |
Members42
| Document | Office | Kind | |
|---|---|---|---|
| US2011153773A1 | United States of America | A1 | |
| US2011153789A1 | United States of America | A1 | |
| US2011153818A1 | United States of America | A1 | |
| US2011154084A1 | United States of America | A1 | |
| WO2011087638A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2011087639A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2011087640A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2010341704A1 | Australia | A1 | |
| US2012117400A1 | United States of America | A1 | |
| AU2010341705A1 | Australia | A1 | |
| MX2012007342AThis record | Mexico | A | |
| MX2012007344A | Mexico | A | |
| KR20120094946A | Republic of Korea | A | |
| KR20120094947A | Republic of Korea | A | |
| CN102652424A | China | A | |
| CN102668510A | China | A | |
| EP2517440A1 | European Patent Office (EPO) | A1 | |
| EP2517441A1 | European Patent Office (EPO) | A1 | |
| US8327178B2 | United States of America | B2 | |
| JP2013514738A | Japan | A | |
| JP2013515443A | Japan | A | |
| US8533507B2 | United States of America | B2 | |
| US2014059369A1 | United States of America | A1 | |
| KR101393988B1 | Republic of Korea | B1 | |
| AU2010341705B2 | Australia | B2 | |
| US8819219B2 | United States of America | B2 | |
| AU2010341704B2 | Australia | B2 | |
| KR101462322B1 | Republic of Korea | B1 | |
| JP5638624B2 | Japan | B2 | |
| JP5782455B2 | Japan | B2 | |
| CN102668510B | China | B | |
| CN102652424B | China | B | |
| US9306813B2 | United States of America | B2 | |
| US2016198511A1 | United States of America | A1 | |
| US9391853B2 | United States of America | B2 | |
| BR112012017735A2 | Brazil | A2 | |
| EP2517440B1 | European Patent Office (EPO) | B1 | |
| US10230596B2 | United States of America | B2 | |
| EP2517441B1 | European Patent Office (EPO) | B1 | |
| BR112012018380A2 | Brazil | A2 | |
| BR112012017735B1 | Brazil | B1 | |
| BR112012018380B1 | Brazil | B1 |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Grant or registrationFG | FG |
Numbers
- Application
- 2012007342
Titles2
- English
- EFFICIENT SERVICE ADVERTISEMENT AND DISCOVERY IN A PEER-TO-PEER NETWORKING ENVIRONMENT.
- Spanish
- ANUNCIO Y DESCUBRIMIENTO DE SERVICIO EFICIENCIA EN UN AMBIENTE DE RED DE IGUAL A IGUAL.
Classification
- CPC, 16
- H04W48/08
- H04L67/51
- H04W4/06
- H04L43/04
- H04W8/005
- H04W52/0216
- H04W76/14
- H04L67/59
- H04L67/62
- H04W4/00
- H04W52/02
- H04W84/18
- H04W92/18
- Y02D30/70
- H04B7/24
- G06F1/32
- IPC, 3
- H04L29 08
- H04W4 00
- H04W8 00