Registration and discovery of resources

By using Bloom filters (BFs) in IoT systems to manage and query resources hosted by IoT devices, the problem of inefficient discovery and registration of resources in the prior art is solved, and efficient resource management and query is achieved.

CN120548701APending Publication Date: 2025-08-26TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380091812.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-01-19
Publication Date
2025-08-26

AI Technical Summary

Technical Problem

In IoT systems, it is difficult for the prior art to efficiently discover and register resources hosted by IoT devices, especially due to the inefficiency of sleep nodes and multicast services.

Method used

A Bloom filter (BF) is used to indicate the resources hosted by the first communication device, and to register and discover resources by calculating the BF, and to use a database to manage and query resources.

Benefits of technology

Reduces the amount of data when registering and discovering resources, achieves fast and efficient resource management, and reduces the space requirements for storage and query.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120548701A_ABST
    Figure CN120548701A_ABST
Patent Text Reader

Abstract

Methods and devices are provided for registering one or more resources hosted by a first communication device (101, 103, 105) and discovering resources hosted by the one or more first communication devices (101, 103, 105). A first communication device (101) computes a Bloom Filter (BF) indicating one or more resources hosted by the first communication device (101, 103, 105) and sends a request to a database (107) for registering the one or more resources, where the request comprises the BF. The second communication device (109) sends a request to a database (107) for discovering resources and receives a response from the database (107) comprising one or more BFs, where each of the one or more BFs indicates a resource hosted by a respective one of the one or more first communication devices (101, 103, 105).
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The invention relates to a method for registering one or more resources hosted by a first communication device, a method for discovering resources hosted by one or more first communication devices, a first communication device for registering one or more resources hosted by a first communication device, a second communication device for discovering resources hosted by one or more first communication devices, a corresponding computer program, a corresponding computer-readable data carrier, and a corresponding data carrier signal. Background Art

[0002] IoT devices in an Internet of Things (IoT) system can host a large number of resources. Discovery of such resources by entities such as client devices can be challenging, as direct discovery of resources is impractical due to sleeper nodes (such as IoT devices) or networks with inefficient multicast traffic. These issues can be addressed by employing an entity called a resource directory (RD), which contains information about resources hosted by IoT devices, allowing resource discovery. The RD allows queries to be performed and retrieved for the entire set of resources of the IoT system, without having to query each individual resource and each individual IoT device.

[0003] The Constrained Application Protocol (CoAP) or the Hypertext Transfer Protocol (HTTP) can be used as the communication protocol between the IoT device, the RD, and the client device. The message for registering a resource may include the following attributes: an identifier of the IoT device hosting the resource to be registered (e.g., ep=node1), an identifier of the resource (rt=temperature or light), an indication of the format of the content (ct=40 or 41, where 40 indicates application / link format and 41 indicates application / xml), and an indication of the interface used to send the resource information (if=sensor). The message may also include a series of links to the resource. The registration message for registering the resources temperature and light sent by the IoT device with the identifier "node1" to the RD may be, for example, as follows:

[0004] POST coap: / / company.com / rd? ep=node1

[0005] ct:40

[0006] ;ct=41;rt=temperature-c;if=sensor;

[0007] ;ct=41;rt=light;if=sensor

[0008] The message sent by the CoAP client device to the RD to discover all resources of type temperature may be, for example:

[0009] coaps: / / company.com / rd-lookup? rt=temperature

[0010] in

[0011] - "rd-lookup" indicates the type of operation, namely, discovery of a resource in rd;

[0012] - "rt" indicates the type of resource the CoAP client device wants to discover.

[0013] Additional filter parameters can be added after the "?" symbol.

[0014] Further information on RD can be found in Internet Engineering Task Force (IETF) RFC 9176 (2022). Summary of the Invention

[0015] An object of the present invention is to provide an improved alternative to the above-described techniques and prior art. More specifically, an object of the present invention is to provide improved registration and discovery of resources hosted by one or more first communication devices. This and other objects of the present invention are achieved by the various aspects of the present invention as defined in the independent claims. Embodiments of the invention are characterized by the dependent claims.

[0016] According to a first aspect of the present invention, a method for registering one or more resources hosted by a first communications device is provided. The method is performed by the first communications device. The method includes calculating a Bloom filter (BF). The BF indicates one or more resources hosted by the first communications device. The method also includes sending a request to a database to register the one or more resources. The request includes the BF.

[0017] According to a second aspect of the present invention, a method for discovering resources hosted by one or more first communications devices is provided. The method is performed by a second communications device. The method includes sending a request to a database for resource discovery. The method also includes receiving a response from the database. The response includes one or more BFs. Each of the one or more BFs indicates a resource hosted by a corresponding first communications device from the one or more first communications devices.

[0018] According to a third aspect of the present invention, a first communication device is provided for registering one or more resources hosted by the first communication device. The first communication device includes a processor and a memory. The memory stores instructions executable by the processor. When executed by the processor, the instructions cause the first communication device to calculate a BF. The BF indicates one or more resources hosted by the first communication device. When executed by the processor, the instructions cause the first communication device to send a request to a database to register the one or more resources. The request includes the BF.

[0019] According to a fourth aspect of the present invention, a second communication device is provided for discovering resources hosted by one or more first communication devices. The second communication device includes a processor and a memory. The memory stores instructions executable by the processor. When executed by the processor, the instructions cause the second communication device to send a request to a database for resource discovery. When executed by the processor, the instructions cause the second communication device to receive a response from the database including one or more BFs. Each of the one or more BFs indicates a resource hosted by a corresponding first communication device among the one or more first communication devices.

[0020] According to a fifth aspect of the present invention, a computer program is provided. The computer program includes instructions that, when executed in a processing unit of a first communication device, cause the first communication device to calculate a BF. The BF indicates one or more resources hosted by the first communication device. The instructions further cause the first communication device to send a request to a database to register the one or more resources. The request includes the BF.

[0021] According to a sixth aspect of the present invention, there is provided a computer-readable data carrier on which a computer program according to an embodiment of the fifth aspect of the present invention is stored.

[0022] According to a seventh aspect of the present invention, there is provided a data carrier signal carrying a computer program according to the fifth aspect of the present invention.

[0023] According to an eighth aspect of the present invention, a computer program is provided. The computer program includes instructions that, when executed in a processing unit of a second communication device, cause the second communication device to send a request to a database to discover resources hosted by one or more first communication devices. The instructions also cause the second communication device to receive a response from the database including one or more BFs. Each of the one or more BFs indicates a resource hosted by a corresponding first communication device from the one or more first communication devices.

[0024] According to a ninth aspect of the present invention, there is provided a computer-readable data carrier on which a computer program according to an embodiment of the eighth aspect of the present invention is stored.

[0025] According to a tenth aspect of the present invention, there is provided a data carrier signal carrying a computer program according to the eighth aspect of the present invention.

[0026] Certain embodiments may provide one or more of the following technical advantages:

[0027] - Reduce the amount of data sent for registration and discovery of resources, since BF has a smaller size than a message including a list of identifiers of all resources;

[0028] - Allows fast registration and discovery of resources hosted by one or more first communication devices (e.g., IoT devices) because the time required to add a resource or check if a resource is in the BF is a fixed constant O(k), independent of the number of items already in the BF, if k is the number of hash functions applied to the names associated with the resources. Furthermore, in a hardware implementation, the k lookups are independent and can be parallelized. BRIEF DESCRIPTION OF THE DRAWINGS

[0029] For a better understanding of the present disclosure and to more readily show how the invention may be implemented, reference will now be made, by way of example, to the following drawings, in which:

[0030] Figure 1 An example scenario including three first communication devices, a database, and a second communication device according to an embodiment of the present invention is shown;

[0031] Figure 2 A flow chart illustrating a method performed by a first communication device for registering one or more resources hosted by the first communication device according to an embodiment of the present invention is shown;

[0032] Figure 3 A flow chart illustrating a method performed by a second communication device for discovering resources hosted by one or more first communication devices according to an embodiment of the present invention is shown;

[0033] Figure 4 shows a message exchange between a first communication device, a database, and a second communication device according to an embodiment of the present invention;

[0034] Figure 5 showing a block diagram depicting a first communication device according to an embodiment of the present invention; and

[0035] Figure 6 Shown is a block diagram depicting a second communication device according to an embodiment of the present invention. DETAILED DESCRIPTION

[0036] The embodiments will be described herein with reference to the accompanying drawings. These embodiments are provided by way of example so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concept to those skilled in the art.

[0037] The registration and discovery of resources hosted by Internet of Things (IoT) devices can be managed by an entity such as a resource directory (RD), which stores information about the resources hosted by the IoT devices. On the one hand, due to the number of resources hosted by IoT devices, the amount of memory required to store this information in this entity may be high. On the other hand, a resource lookup may return an extensive list of resources, i.e., a query from a client device to the RD may generate a response that includes information about the resources in a text format that requires a significant amount of space to be stored on the client device side. In addition, the response may include information about resources that the client device does not need when the response is received, resulting in the response taking up more space than necessary.

[0038] The invention disclosed herein makes it possible to improve the registration of one or more resources hosted by a first communication device and the discovery of resources hosted by one or more first communication devices. Registration can be achieved by calculating a Bloom filter (BF) indicating one or more resources hosted by the first communication device and sending a request to a database for registering the one or more resources, wherein the request includes the BF. Discovery can be achieved by sending a request to a database for discovering resources and receiving a response from the database including one or more BFs, wherein each of the one or more BFs indicates a resource hosted by a corresponding first communication device in the one or more first communication devices.

[0039] Figure 1 An example of a system 100 is schematically shown in which a solution according to an embodiment of the invention may be implemented. Figure 1 The system 100 includes three first communication devices 101 , 103 and 105 , a database 107 , and a second communication device 109 .

[0040] The first communication devices 101, 103, and 105 may be constrained devices, such as IoT devices. Examples of IoT devices 101, 103, and 105 include household appliances or vehicles that include one or more sensors, such as temperature, humidity, pressure, and proximity sensors. In this context, a constrained device is a device that has limited characteristics (such as memory, processing power, available power, and energy) due to cost and / or physical constraints. The definition of a constrained device can be found in IETF RFC 7228 (2014).

[0041] The database 107 is an entity that stores information about resources hosted by one or more first communication devices 101, 103, 105 and allows for the search of resources hosted by the first communication devices 101, 103, 105. The database 107 can be any device with computing, storage, and network connectivity. The database 107 can be hosted by a mobile operator or in a cloud system. The database can be a RD that allows for the discovery, creation, maintenance, and removal of registrations, as well as the search of registered resources. Further information on RDs can be found in IETF RFC 9176 (2022).

[0042] The second communication device 109 may be a client device, ie any device with computing, storage and network connectivity that can discover resources hosted by the first communication devices 101, 103, 105. The second communication device 109 may be a constrained device such as an IoT device.

[0043] The first communication devices 101, 103, 105 and the second communication device 109 may communicate with the database 107 using a Representational State Transfer (REST) ​​based protocol such as CoAP or HTTP. The first communication devices 101, 103, 105 may be lightweight M2M (LwM2M) clients or CoAP clients.

[0044] Figure 2 A method 200 is shown for registering one or more resources hosted by a first communication device 101, 103, 105. The method 200 may be performed by the first communication device 101, 103, 105. The first communication device 101, 103, 105 may be an IoT device. According to one embodiment, the first communication device 101, 103, 105 may be a LwM2M device.

[0045] Method 200 includes calculating 201 a BF. The BF indicates one or more resources hosted by the first communication device. In other words, each of the first communication devices 101, 103, 105 calculates a BF, where the BF indicates one or more resources hosted by the first communication device. The BF can be represented by a bit array or bit string of length m. The one or more resources can be any resource hosted by the first communication device 101, 103, 105, such as temperature, pressure, or humidity. The one or more resources can be resources according to the LwM2M resource model, where each piece of information provided by the LwM2M client (e.g., the first communication device 101, 103, 105) is a resource. Further information about the LwM2M resource model can be found in "OMA Lightweight M2M Resource Model" by Joaquin Prado (IAB IoT Semantic Interoperability Workshop, 2016). The one or more resources can be HTTP network resources.

[0046] The BF may be calculated and configured during the manufacturing phase of the first communication device 101, 103, 105, or during operation, ie while in use, of the first communication device 101, 103, 105. The BF may be refreshed periodically and / or when resources are updated.

[0047] The method 200 further comprises sending 203 a request for registering one or more resources. The request is sent to the database 107 and includes the calculated BF. According to one embodiment, the database 107 may be a RD. The request may be a CoAP or HTTP POST message.

[0048] According to one embodiment, each of one or more resources may have a unique name. The unique name may be included in a namespace. A namespace is a collection of names used to identify and refer to one or more resources. A name may be a string of alphanumeric characters. Examples of names associated with a resource are "Water Meter Customer Leak Alert," "Water Meter Backflow Alert," and "Water Meter Empty Pipe Alert."

[0049] According to one embodiment, one or more resources may be represented by an Internet Protocol for Smart Objects (IPSO) object. The Internet Protocol for Smart Objects (IPSO) defines an object model based on the Open Mobile Alliance LwM2M to enable interoperability of data sent between devices and application software. A universal set of object definitions enables software to interact with any device. An IPSO object is represented by three unsigned 16-bit integers separated by the character " / " in the form of object ID / instance ID / resource ID, where the object ID, instance ID, and resource ID are integers. For example, an object temperature sensor that measures a temperature value may be represented by 3303 / 0 / 5700, where 3303 is the object ID of the temperature sensor, 0 is the instance ID, and 5700 is the last value or current value measured from the sensor.

[0050] Further information on IPSO objects can be found in “IPSO smart objects” by Jaime Jimenez, Michael Koster and Hannes Tschofenig, a position paper for the IoT Semantic Interoperability Workshop (IPSO Alliance, 2016).

[0051] According to alternative embodiments, the one or more resources may be represented by an LwM2M object, an Open Connectivity Foundation (OCF) object, or a thread object and use a corresponding namespace. According to one embodiment, the request to register the one or more resources includes an indication of the namespace and a name of each of the one or more resources.

[0052] According to one embodiment, the BF can be calculated by applying 205 one or more hash functions to the name associated with each resource to obtain one or more corresponding hash values. A hash value is a value contained between 0 and the length of the BF minus 1. In other words, if the length of the BF is m, each hash function takes the name of the resource as input and generates a fixed-size output, called a hash value contained in the range [0, m-1]. For example, two hash functions h1 and h2 can be applied to the name "temp" associated with the resource temperature. The hash function h1 can generate a hash value of 5 (i.e., h1(temp)=5), and the hash function h2 can generate a hash value of 12 (i.e., h2(temp)=12). The number of hash functions (k) applied to the name of each resource can depend on the length of the BF (m) and the number of resources to be inserted into the BF (n). Further information on how m, n, and k can be selected is provided below. Examples of hash functions include the Secure Hash Algorithm x (SHAx), which converts an input of arbitrary length into an output of length x bits, the Message Digest Algorithm 5 (MD5), and the Hash-based Message Authentication Code (HMAC).

[0053] According to one embodiment, each name may be associated with a bit string. A bit string is a sequence of bits (binary digits). The bit string may be an identifier of a resource associated with the name. According to one embodiment, the length of the bit string may be equal to the length of the BF. For example, a resource such as temperature may be associated with a 16-bit bit string, such as ID_temp=[0000 0100 00001000]. The bit string associated with a name may be obtained by encoding 207 one or more hash values ​​into the bit string, the one or more hash values ​​being obtained by applying one or more hash functions to each name. For example, if two hash functions h1 and h2 are applied to the name "temp" associated with resource temperature, where hash function h1 generates a hash value of 5 (i.e., h1(temp)=5) and hash function h2 generates a hash value of 12 (i.e., h2(temp)=12), then the bit string ID_temp associated with resource temperature is ID_temp=[0000 0100 0000 1000], which is obtained by setting the fifth and twelfth bits to 1 (note that the first bit of the bit string has an index of 0). If the hash function generates a value v higher than m-1, a modulo operation should be applied to v, i.e., v mod m, so that the obtained result corresponds to the index of the BF within the BF boundary.

[0054] According to one embodiment, the BF may also be obtained by encoding 207, for each bit string associated with a name, one or more hash values ​​obtained by applying one or more hash functions to each name into a bit string, and performing 209 a bitwise logical OR operation between all the bit strings to obtain a bit string representing the BF.

[0055] According to one embodiment, one or more corresponding hash values ​​are encoded 207 in the bit string and, for each hash value, the corresponding bit of the bit string associated with the name is set to 1. For example, consider that the first communication device 101 attempts to register the resource temperature and the resource humidity associated with the names "temp" and "hum" respectively and hosted by the first communication devices 101, 103, 105, then

[0056] For resource temperature, the first communication device 101 applies the first hash function h1 to the name "temp" to generate a hash value 5, and applies the second hash function h2 to the name "temp" to generate a hash value 12. The bit string ID_temp can be obtained by setting the fifth and twelfth bits of the bit string to 1, i.e., ID_temp = [0000 0100 0000 1000].

[0057] For the resource humidity, the first communication device 101 applies the first hash function h1 to the name "hum" to generate a hash value of 9, and applies the second hash function h2 to the name "hum" to generate a hash value of 15. The bit string ID_hum can be obtained by setting the ninth and fifteenth bits of the bit string to 1, i.e., ID_hum = [0000 0000 0100 0001].

[0058] The bit string of BF can be obtained by performing a bitwise logical OR operation between ID_temp and ID_hum, that is, BF=ID_temp OR ID_hum=[0000 0100 0100 1001].

[0059] According to an alternative embodiment, BF is obtained by setting 211 a bit of the bit string representing BF to 1, where the bit set to 1 corresponds to each hash value of each name. Referring to the previous example, the bit string representing BF can be obtained by setting the fifth, ninth, twelfth, and fifteenth bits of the bit string to 1, that is, BF = [0000 0100 0100 1001].

[0060] It will be understood that method 200 may include additional, alternative, or modified steps in accordance with those described throughout this disclosure.

[0061] Figure 3 A method 300 is shown for discovering resources hosted by one or more first communication devices 101, 103, 105. The method 300 may be performed by a second communication device 109. According to one embodiment, the second communication device 109 may be a client device.

[0062] Method 300 includes sending 301 a request to discover resources to database 107. Database 107 may be a RD. The request may be a CoAP or HTTP GET message. The resources may be, for example, temperature, pressure, or humidity measurements obtained by the first communication device 101, 103, or 105. The request may include an indication to discover all resources. For example, the indication may be the string "all."

[0063] The method 300 also includes receiving 303 a response from the database 107 that includes one or more BFs. Each of the one or more BFs indicates a resource hosted by a corresponding first communication device in the one or more first communication devices 101, 103, 105. The response can be a CoAP or HTTP message. In the case of a successful request, the response message can include a status response code, such as 2.05 (Content) or 200 (OK). The BF can be represented by a bit array or bit string of length m. If the resource does not exist at the time of the request, the response message can include a status response code, such as 2.02 (Deleted) or 4.00 (Bad Request). Additional CoAP status response codes can be found in IETF RFC 7252 (2014).

[0064] According to one embodiment, each of the resources hosted by one or more first communication devices 101, 103, 105 has a unique name in a namespace. A namespace is a collection of names used to identify and refer to resources. A name can be a string of alphanumeric characters. According to one embodiment, the response can include an indication of the namespace.

[0065] According to one embodiment, resources can be represented by LwM2M objects. If one or more resources are represented by LwM2M objects, each object can be associated with a number, called an object ID, that identifies the resource. Thus, a resource such as a high pressure alarm for a water meter can be associated with the object ID " / 4321," for example. According to alternative embodiments, one or more resources can be represented by OCF objects or thread objects, using corresponding namespaces.

[0066] According to one embodiment, each name, and therefore each resource, can be associated with a bit string. The bit string associated with the name can be obtained by applying 307 one or more hash functions to the name to obtain one or more corresponding hash values. One or more first communication devices apply the same one or more hash functions. Each of the one or more hash values ​​can be a value between 0 and the length of the BF minus 1. In other words, if the length of the BF is m, the hash function takes the name as input and generates a fixed-size output, referred to as a hash value, in the range [0, m-1]. Examples of hash functions include SHAx, MD5, and HMAC.

[0067] The bit string associated with the name may also be obtained by encoding 309 one or more corresponding hash values ​​in the bit string associated with the name. The length of the bit string associated with the name is equal to the length of BF (m).

[0068] According to one embodiment, encoding 309 one or more corresponding hash values ​​is included in a bit string, with a corresponding bit of the bit string being set to 1 for each hash value.

[0069] The method 300 may further include determining 305 the first communication device 101, 103, 105 to host one of the resources based on the one or more BFs. According to one embodiment, determining 305 the first communication device 101, 103, 105 to host one of the resources based on the one or more BFs includes calculating 311 another bit string for each bit string associated with the corresponding name. The another bit string is obtained by performing a bit-by-bit logical operation between each of the one or more BFs associated with the corresponding first communication device 101, 103, 105 and the bit string. The first communication device 101, 103, 105 determining 305 to host one of the resources based on the one or more BFs also includes determining 313 whether the one of the resources is hosted by the one or more first communication devices 101, 103, 105 if each bit of the corresponding obtained another bit string is equal to 0.

[0070] According to one embodiment, calculating another bit string by performing a bitwise logical operation between each of the one or more BFs associated with the respective first communication devices 101, 103, 105 and the bit string includes performing a bitwise logical AND (AND) operation between each of the one or more BFs and the bit string. Calculating another bit string also includes, for each result of the bitwise logical AND operation, performing 317 a bitwise logical exclusive OR (XOR) operation between the result and the bit string.

[0071] For example, if a resource such as temperature is associated with a 16-bit bit string ID_temp=[0000 0100 0000 1000], and the BF associated with the first communication device 101 is [0000 0100 0100 1010], the second communication device 109 can verify whether the resource temperature is hosted by the first communication device 101 by performing the following operations:

[0072] BF AND ID_temp XOR ID_temp=

[0073] =[0000 0100 0100 1010]AND[0000 0100 0000 1000]

[0074] XOR[0000 0100 0000 1000]

[0075] =[0000 0000 0000 0000]

[0076] On the one hand, a result bit string with all bits equal to 0 (as in this example) indicates that the resource is in the BF and, therefore, that the resource is hosted by the first communication device 101, 103, 105 associated with the BF. However, the result bit string may have all bits equal to 0 even if the resource is not in the BF. In this case, the lookup for the resource returns a false positive. If the result bit string has all bits equal to 0, but the resource is not hosted by the first communication device 101, 103, 105, then when the second communication device 109 queries the first communication device 101, 103, 105 for the resource, the first communication device 101, 103, 105 will send a response indicating that the requested resource does not exist. Further information on false positives is provided below.

[0077] On the other hand, a resulting bit string having one or more bits equal to 1 indicates that the resource is not in the BF and, therefore, the resource is not hosted by the first communication device 101 , 103 , 105 associated with the BF.

[0078] Alternatively, determining 305 that the first communication device 101, 103, 105 hosts one of the resources based on one or more BFs includes performing a logical exclusive OR (XOR) operation between the BF and a bit string associated with the resource, and verifying whether the result of the logical XOR operation is the same as the bit string. For example, if a resource (such as temperature) is associated with a 16-bit bit string ID_temp=[00000100 0000 1000], and the BF associated with the first communication device 101 is [0000 0100 01001010], the second communication device 109 can verify whether the resource temperature is hosted by the first communication device 103, 105 by performing the following operations:

[0079] BF XORID_temp=

[0080] =[0000 0100 0100 1010]XOR[0000 0100 0000 1000]

[0081] =[0000 0100 0000 1000]=ID_temp

[0082] Also in this case, a positive result of the lookup (i.e., the result of the XOR operation is the same as the bit string of the resource) can indicate that the resource is hosted by the first communication device 101, 103, 105 associated with the BF, or it can be a false positive result. A negative result (i.e., the result of the XOR operation is different from the bit string of the resource) always indicates that the resource is not hosted by the first communication device 101, 103, 105 associated with the BF.

[0083] The advantage of using BF to represent the resources hosted by the first communication device 101, 103, 105 is a fast resource discovery process, since verifying whether a resource is included in the BF requires

[0084] - a logical AND operation between the BF and a bit string associated with the resource, a logical exclusive OR (XOR) operation between the result of the AND operation and the bit string associated with the resource, and verifying whether the result of the logical XOR operation is an empty bit string; or

[0085] - A logical XOR operation between the BF and the bit string associated with the resource, and verifying that the result of the logical XOR operation is the same as the bit string.

[0086] According to one embodiment, the method 300 further includes storing 319 the one or more BFs. Storing a local copy of the one or more BFs by the second communication device 109 allows the second communication device 109 to maintain search results from the RD with a smaller memory print.

[0087] It will be understood that method 300 may include additional, alternative, or modified steps in accordance with those described throughout this disclosure.

[0088] A lookup for a resource in the BF may return a positive answer even if the resource is not in the BF, i.e., the lookup returns a false positive. A false positive may be returned if the bits in the BF corresponding to the hash value applied to the name associated with the resource are set to 1, but those bits are set to 1 by inserting a different resource in the BF. Thus, a positive BF lookup means that the resource can be hosted by the first communication device 101 associated with the BF with a certain probability (also referred to as the false positive probability). On the other hand, if the BF lookup returns a negative answer, this means that the resource is not in the BF, since a false negative answer never occurs. The false positive probability can be estimated using the following equation:

[0089]

[0090] Where k is the number of hash functions, m is the BF length, and n is the number of resources in the BF. The design choice of k, m, and n can be performed during the implementation phase.

[0091] Tables 1, 2, and 3 show the false positive probabilities calculated using the above equation for a single first communication device 101 (such as an IoT device) using the following parameters:

[0092] -Number of resources (n): 10, 20, and 30;

[0093] - Number of hash functions (k): 3, 4, and 5; and

[0094] -BF size (m): 64, 128 and 256 bits.

[0095] k=3 k=4 k=5 n=10,m / n=6.4 0.0524 0.0466 0.0468 n=20,m / n=3.2 0.225 0.259 0.308 n=30,m / n=2.1 0.430 0.514 0.604

[0096] Table 1 False positive probability; m = 64 bits

[0097] k=3 k=4 k=5 n=10;m / n=12.8 0.00912 0.00519 0.00354 n=20;m / n=6.4 0.0524 0.0466 0.0468 n=30;m / n=4.3 0.129 0.137 0.157

[0098] Table 2 False positive probability; m = 128 bits

[0099] k=3 k=4 k=5 n=10;m / n=25.6 0.00135 0.000438 0.000176 n=20;m / n=12.8 0.00912 0.00519 0.00353 n=30;m / n=8.5 0.0260 0.0196 0.0171

[0100] Table 3 False positive probability; m = 256 bits

[0101] For example, referring to Table 2, if the number of resources n added to the BF is 20, the BF length m is 128 bits, and the number of hash functions k is 4, the false positive probability is approximately 4.7%. A false positive probability of approximately 4.7% means that if, for example, the second communication device 109 searches for a resource in the BF and the result is positive, there is an approximately 4.7% probability that the resource is not in the BF. There is a 4.7% probability that the second communication device sending a request for a resource to the first communication device associated with the BF will result in the first communication device not returning the resource, resulting in the second communication device making an unnecessary request to the first communication device.

[0102] An example scenario in which the present invention may be practiced relates to a factory environment, where a set of first communication devices 101, 103, 105 may measure properties of the environment, such as a water meter. The first communication devices 101, 103, 105 according to an embodiment of the present invention may be IoT devices that register resources related to water meters in a database 107 (such as an RD). For example, Figure 4 Message exchanges between a first communication device 101 (e.g., an IoT device), a database 107, and a second communication device 109 (e.g., a client device) are shown. The first communication device may have an IP address [f9dc:1ed7:8685:7f2e:95a9:3988:db5f:6fec] and an identity "node1," and registers resources related to water meter alarms by calculating a BF "1suaf3h" (where "1suaf3h" is a binary to ascii conversion) and sending the following registration message 401 (illustrated here as a CoAP POST registration message):

[0103] POST coap: / / rd.example.com / rd? ep=node1&et=bf.1suaf3h

[0104] Content-Format: 40

[0105] Payload:

[0106] < / Water Meter Customer Leakage Alarm>;

[0107] < / Water Meter Reverse Flow Alarm>;

[0108] < / Water Meter Empty Pipe Alarm>;

[0109] < / Water Meter Tamper Alarm>;

[0110] < / Water Meter High Pressure Alarm>;

[0111] < / Water Meter Low Pressure Alarm>

[0112] More specifically, the registration message may include

[0113] - An endpoint identifier (ep = node1), which indicates the name of the first communication device that wants to register a resource,

[0114] - An endpoint type (et = bf.1suaf3h), which indicates BF;

[0115] - A content format; and

[0116] - A list including the names of the resources.

[0117] After receiving the registration message, the RD may respond with a response message including the location path of the entry in the RD with 2.01 (Created) or 201 (Created) and BF. For example, the RD may send the following response message:

[0118] 2.01 Created

[0119] Location-Path: / rd / 18534

[0120] The registration message may also include an indication of the namespace. This indication may be added to the "et" field between the indication of the presence of the BF ("bf") and the BF ("1suaf3h"). For example, if one or more resources are represented by LwM2M objects, the "et" field may be et=bf.lwm2m.1suaf3h. In this case, an example of the registration message 403 may be

[0121] POST coap: / / rd.example.com / rd? ep=node1&et=bf.lwm2m.1suaf3h

[0122] Content-Format: 40

[0123] Payload:

[0124] <!--4251--> ;<!--4265--> ;<!--4279--> ;<!--4293--> ;<!--4307--> ;<!--4321-->

[0125] in<!--4251--> ;<!--4265--> ;<!--4279--> ;<!--4293--> ;<!--4307--> ;<!--4321--> is a list of resource names obtained using object IDs.

[0126] The second communication device may perform a search for all resources of all first communication devices of the factory environment by sending a GET message 405 including an indication of BF and "all". An example of a discovery message may be

[0127] GET / rd-lookup / ep? et=bf.all

[0128] If the factory environment includes the following three first communication devices, such as three IoT devices:

[0129] - The first IoT device has the name "node1", the IP address [f9dc:1ed7:8685:7f2e:95a9:3988:db5f:6fec], uses the namespace "lwm2m", and is associated with the BF "1suaf3h";

[0130] The second IoT device has the name "7376hdj", the IP address [c169:a65c:41e2:cdf2:b413:1d00:8631:a73d], uses the namespace "ocf", and is associated with the BF "1suaf3h";

[0131] - The third IoT device has name "00009", IP address [6a2e:50d3:d6bc:1f7f:0d72:446c:0b80:c84a], uses namespace "thread", and is associated with BF "8sjhfdy",

[0132] Then a possible response message 401 from the database 107 to the second communication device may be:

[0133] 2.05Content(content)

[0134] Payload:

[0135] <coap: / / [f9dc:1ed7:8685:7f2e:95a9:3988:db5f:6fec]> ;ep=node1&et=bf.lwm2m.1suaf3h;

[0136] <coap: / / [c169:a65c:41e2:cdf2:b413:1d00:8631:a73d]> ;ep=7376hdj&et=bf.ocf.1suaf3h;

[0137] <coap: / / [6a2e:50d3:d6bc:1f7f:0d72:446c:0b80:c84a];ep=00009&et=bf.thread.8sjhfdy

[0138] The second communication device can verify that the resource is included in the BF by extracting the BF from the response received from the RD and verifying whether the resource is included in the BF.<!--4251--> Whether the associated resource is in BF.

[0139] Figure 5 Shown is a block diagram illustrating an embodiment of a first communication device 101 , 103 , 105 comprising a processor circuit 501 , a computer readable data carrier such as a memory 502 and a network interface circuit 503 .

[0140] The processing circuit 501 may include one or more processors (such as a central processing unit (CPU), a microprocessor, an application processor, a special-purpose processor, a graphics processing unit (GPU), and a digital signal processor (DSP) including an image processor, or a combination thereof), and a memory 502 (which includes a computer program 504, which includes instructions). When executed by the (one or more) processors, the instructions enable the first communication device 101 to become operable according to the present invention (particularly with reference to Figure 2 ) is operated according to the embodiment of the present invention described in detail. More specifically, the first communication device 101, 103, 105 becomes operable to calculate a BF indicating one or more resources hosted by the first communication device 101, 103, 105. The first communication device 101, 103, 105 becomes further operable to send 203 a request to the database 107 for registering the one or more resources. According to one embodiment, the request includes the BF.

[0141] According to one embodiment, each resource of the one or more resources may have a unique name in the namespace.

[0142] According to another embodiment, the request may include an indication of a namespace and a name of each of the one or more resources.

[0143] According to another embodiment, the first communication device 101, 103, 105 may be operable to calculate the BF by applying 205 one or more hash functions to each name to obtain one or more corresponding hash values. According to one embodiment, the hash value may be a value between 0 and the length of the BF minus 1. According to one embodiment, each name may be associated with a bit string.

[0144] According to one embodiment, the first communication device 101, 103, 105 may be operable to encode 207 one or more corresponding hash values ​​in each bit string. The length of the bit string is equal to the length of the BF. The first communication device 101, 103, 105 may also be operable to perform 209 a bitwise logical OR operation between all bit strings to obtain a bit string representing the BF.

[0145] According to one embodiment, the first communication device 101 , 103 , 105 may be operable to encode one or more respective hash values ​​in the bit string by setting a corresponding bit of the bit string associated with the name to 1 for each hash value.

[0146] According to one embodiment, the first communication device 101 , 103 , 105 may be operable to set 211 to 1 a corresponding bit of the bit string representing BF for each hash value of each name.

[0147] According to one embodiment, the database 107 may be a RD. According to another embodiment, one or more resources are represented by LwM2M objects. According to another embodiment, the first communication devices 101, 103, 105 may be IoT devices. According to another embodiment, the first communication devices 101, 103, 105 may be LwM2M devices.

[0148] The computer program 504 may be stored in a computer-readable data carrier, such as the memory 502. Alternatively, the computer program 504 may be carried by a data carrier signal, for example, downloaded to the memory 502 via the network interface circuit 503. The memory 502 may be, for example, a random access memory (RAM), a read-only memory (ROM), a flash memory, etc. The computer program 504 may be downloaded to the memory 502 via the network interface circuit 503 as a data carrier signal carrying the computer program 504. The network interface circuit 503 may include one or more of a cellular modem (e.g., GSM, UMTS, LTE, 5G or higher generation), a WLAN / Wi-Fi modem, a Bluetooth modem, an Ethernet interface, an optical interface, etc., for exchanging data between the first communication device 101, 103, 105 and other computing devices, communication devices, radio access networks, and / or the Internet. The processing circuit 501 may alternatively or additionally include one or more application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc., which are operable to enable the first communication device 101, 103, 105 to operate according to the embodiments of the present invention described herein.

[0149] Figure 6 is a block diagram illustrating an embodiment of the second communication device 109 comprising a processor circuit 601 , a computer-readable data carrier such as a memory 602 , and a network interface circuit 603 .

[0150] The processing circuit 601 may include one or more processors (such as a CPU, a microprocessor, an application processor, a special purpose processor, a GPU, and a DSP including an image processor, or a combination thereof), and a memory 602 (which includes a computer program 604, which includes instructions). When executed by the processor(s), the instructions enable the second communication device 109 to become operable in accordance with the present disclosure (particularly with reference to Figure 3) is operated according to the embodiment of the present invention described herein. More specifically, the second communication device 109 becomes operable to send 301 a request to the database 107 for discovering resources hosted by one or more first communication devices 101, 103, 105. The second communication device 109 is further operable to receive 303 a response from the database 107 including one or more BFs. Each of the one or more BFs indicates a resource hosted by a corresponding first communication device 101, 103, 105 of the one or more first communication devices 101, 103, 105.

[0151] According to one embodiment, the second communication device 109 may be operable to determine 305 a first communication device 101, 103, 105 hosting one of the resources based on one or more BFs. Each of the resources hosted by the one or more first communication devices 101, 103, 105 may have a unique name in the namespace.

[0152] According to another embodiment, the second communication device 109 may be further operable to obtain the bit string by applying 307 one or more hash functions to the name to obtain one or more corresponding hash values. According to one embodiment, the hash value is a value between 0 and the length of the BF minus 1. The second communication device 109 may be further operable to obtain the bit string by encoding 309 the one or more corresponding hash values ​​in the bit string. According to one embodiment, the length of the bit string is equal to the length of the BF.

[0153] According to another embodiment, the second communication device 109 may be operable to encode 309 one or more respective hash values ​​in the bit string by setting a corresponding bit of the bit string to 1 for each hash value.

[0154] According to another embodiment, the second communication device 109 may be operable to determine 305 the first communication device hosting one of the resources based on the one or more BFs by calculating 311 another bit string for each bit string, wherein calculating 311 another bit string for each bit string is performed by performing a bit-by-bit logical operation between the bit string and each of the one or more BFs associated with the respective first communication device 101, 103, 105. The second communication device 109 may be further operable to determine 305 the first communication device hosting one of the resources based on the one or more BFs by determining 313 whether the one of the resources is hosted by the one or more first communication devices if each bit of the corresponding another bit string is equal to 0.

[0155] According to one embodiment, the second communication device 109 may be operable to calculate another bit string by performing 315 a bitwise logical AND operation between each of the one or more BFs associated with the respective first communication device 101, 103, 105 and the bit string.

[0156] The second communication device 109 may also be operable to calculate another bit string by performing 317 a bitwise logical XOR operation for each result of the bitwise logical AND operation between that result and the bit string.

[0157] According to one embodiment, the second communication device 109 may be operable to store 319 one or more BFs.

[0158] According to one embodiment, the response includes an indication of a namespace. According to another embodiment, the database 107 may be a RD. According to another embodiment, one or more resources may be represented by an LwM2M object. According to another embodiment, the second communication device 109 may be a client device.

[0159] The computer program 604 may be stored in a computer-readable data carrier, such as the memory 602. Alternatively, the computer program 604 may be carried by a data carrier signal, for example, downloaded to the memory 602 via the network interface circuit 603. The memory 602 may be, for example, RAM, ROM, flash memory, etc. The computer program 604 may be downloaded to the memory 602 via the network interface circuit 603 as a data carrier signal carrying the computer program 604. The network interface circuit 603 may include one or more of a cellular modem (e.g., GSM, UMTS, LTE, 5G or higher generation), a WLAN / Wi-Fi modem, a Bluetooth modem, an Ethernet interface, an optical interface, etc., for exchanging data between the second communication device 203 and other computing devices, communication devices, radio access networks, and / or the Internet. The processing circuit 601 may alternatively or additionally include one or more ASICs, FPGAs, etc., which are operable to enable the second communication device 203 to operate according to the embodiments of the present invention described herein.

Claims

1. A method (200) for registering one or more resources hosted by a first communication device (101, 103, 105), the method being performed by the first communication device (101, 103, 105) and comprising: - calculating (201) a Bloom filter BF indicative of said one or more resources hosted by said first communication device (101, 103, 105); as well as - sending (203) a request to a database (107) for registering said one or more resources, wherein said request comprises said BF.

2. The method (200) according to claim 1, wherein: Each of the one or more resources has a unique name in the namespace.

3. The method (200) according to claim 2, wherein: The request includes an indication of the namespace and a name of each of the one or more resources.

4. The method (200) according to any one of claims 2 or 3, wherein: Calculating the BF includes: - For each name, applying (205) one or more hash functions to the name to obtain one or more corresponding hash values, wherein a hash value is a value between 0 and the length of the BF minus 1.

5. The method (200) according to any one of claims 2 to 4, wherein: Each name is associated with a bit string.

6. The method (200) of claim 5, further comprising: - for each bit string, encoding (207) the one or more corresponding hash values ​​in the bit string, wherein the length of the bit string is equal to the length of the BF; and - Performing (209) a bitwise logical OR operation between all bit strings to obtain a bit string representing the BF.

7. The method (200) of claim 6, wherein: Encoding the one or more corresponding hash values ​​in the bit string includes, for each hash value, setting a corresponding bit of the bit string associated with the name to 1.

8. The method (200) of claim 5, further comprising: - For each hash value of each name, set (211) to 1 the corresponding bit of the bit string representing the BF.

9. The method (200) according to any one of claims 1 to 8, wherein: The database (107) is a resource directory RD.

10. The method (200) according to any one of claims 1 to 9, wherein: The one or more resources are represented by an Internet Protocol for Smart Objects (IPSO) object.

11. The method (200) according to any one of claims 1 to 10, wherein: The first communication device is an Internet of Things (IoT) device.

12. A method (300) for discovering resources hosted by one or more first communication devices (101, 103, 105), the method being performed by a second communication device (109) and comprising: - sending (301) a request to a database (107) for discovering said resource; as well as - receiving (303) a response from the database (107) comprising one or more Bloom filters BF, wherein each of the one or more BFs indicates a resource hosted by a corresponding first communication device (101, 103, 105) of the one or more first communication devices (101, 103, 105).

13. The method (300) of claim 12, further comprising: - determining (305) said first communication device (101, 103, 105) hosting one of said resources based on said one or more BFs.

14. The method (300) according to any one of claims 12 or 13, wherein: Each of the resources hosted by the one or more first communication devices (103, 105) has a unique name in a namespace.

15. The method (300) of claim 14, wherein: Each name is associated with a bit string, where the bit string is obtained by the following operation: - applying (307) one or more hash functions to the name to obtain one or more corresponding hash values, wherein a hash value is a value between 0 and the length of the BF minus 1; and - encoding (309) the one or more corresponding hash values ​​in the bit string, wherein the length of the bit string is equal to the length of the BF.

16. The method (300) of claim 15, wherein: Encoding (309) the one or more corresponding hash values ​​in the bit string includes, for each hash value, setting a corresponding bit of the bit string to 1.

17. The method (300) according to any one of claims 15 or 16, wherein: Determining (305) the first communication device hosting one of the resources based on the one or more BFs comprises: - for each bit string, calculating (311) another bit string by performing a bitwise logical operation between each of the one or more BFs associated with the respective first communication device (103, 105) and the bit string; and - If each bit of the corresponding further bit string is equal to 0, determining (313) whether said one of said resources is hosted by said one or more first communication devices.

18. The method (300) of claim 17, wherein: Computing the further bit string by performing a bitwise logical operation between each of the one or more BFs associated with the respective first communication device (101, 103, 105) and the bit string comprises: - performing (315) a bitwise logical AND operation between each of the one or more BFs and the bit string; and - For each result of said bitwise logical AND operation, performing (317) a bitwise logical XOR operation between the result and said bit string.

19. The method (300) according to any one of claims 14 to 18, wherein: The response includes an indication of the namespace.

20. The method (300) according to any one of claims 12 to 19, further comprising: - Storing (319) said one or more BFs.

21. The method (300) according to any one of claims 12 to 20, wherein: The database (107) is a resource directory RD.

22. The method (300) according to any one of claims 12 to 21, wherein: The one or more resources are represented by an Internet Protocol for Smart Objects (IPSO) object.

23. The method (300) according to any one of claims 12 to 22, wherein: The first communication device is an Internet of Things (IoT) device, and the second communication device is a client device.

24. A first communication device (101, 103, 105) for registering one or more resources hosted by the first communication device (101, 103, 105), the first communication device (101, 103, 105) comprising a processor and a memory, the memory having stored thereon instructions executable by the processor, wherein: The instructions, when executed by the processor, cause the first communication device (101, 103, 105): - calculating (201) a Bloom filter BF indicative of said one or more resources hosted by said first communication device (101, 103, 105); as well as - sending (203) a request to a database (107) for registering said one or more resources, wherein said request comprises said BF.

25. The first communication device (101, 103, 105) according to claim 24, wherein Each of the one or more resources has a unique name in the namespace.

26. The first communication device (101, 103, 105) according to claim 25, wherein The request includes an indication of the namespace and a name of each of the one or more resources.

27. The first communication device (101, 103, 105) according to any one of claims 25 or 26, wherein: The instructions cause the first communication device (101, 103, 105) to calculate the BF by: - For each name, applying (205) one or more hash functions to the name to obtain one or more corresponding hash values, wherein a hash value is a value between 0 and the length of the BF minus 1.

28. The first communication device (101, 103, 105) according to any one of claims 25 to 27, wherein: Each name is associated with a bit string.

29. The first communication device (101, 103, 105) according to claim 28, wherein The instruction causes the first communication device (101, 103, 105): - for each bit string, encoding (207) the one or more corresponding hash values ​​in the bit string, wherein the length of the bit string is equal to the length of the BF; and - Performing (209) a bitwise logical OR operation between all bit strings to obtain a bit string representing the BF.

30. The first communication device (101, 103, 105) according to claim 29, wherein The instructions cause the first communication device (101) to encode the one or more corresponding hash values ​​in the bit string by setting a corresponding bit of the bit string associated with the name to 1 for each hash value.

31. The first communication device (101, 103, 105) according to claim 28, wherein The instructions cause the first communication device (101): - For each hash value of each name, set (211) to 1 the corresponding bit of the bit string representing the BF.

32. The first communication device (101, 103, 105) according to any one of claims 24 to 31, wherein: The database (107) is a resource directory RD.

33. The first communication device (101, 103, 105) according to any one of claims 24 to 32, wherein: The one or more resources are represented by an Internet Protocol for Smart Objects (IPSO) object.

34. The first communication device (101, 103, 105) according to any one of claims 24 to 33, wherein: The first communication device (101, 103, 105) is an Internet of Things (IoT) device (103, 105).

35. A second communication device (109) for discovering resources hosted by one or more first communication devices (101, 103, 105), the second communication device (109) comprising a processor and a memory having instructions executable by the processor stored thereon, wherein: The instructions, when executed by the processor, cause the second communication device (109): - sending (301) a request to a database (107) for discovering said resource; and - receiving (303) a response from the database (107) comprising one or more Bloom filters BF, wherein each of the one or more BFs indicates a resource hosted by a corresponding first communication device (101, 103, 105) of the one or more first communication devices (101, 103, 105).

36. The second communication device (109) according to claim 36, wherein The instructions cause the second communication device (109): - determining (305) said first communication device (101, 103, 105) hosting one of said resources based on said one or more BFs.

37. The second communication device (109) according to any one of claims 36 or 37, wherein: Each of the resources hosted by the one or more first communication devices (101, 103, 105) has a unique name in a namespace.

38. The second communication device (109) according to claim 38, wherein Each name is associated with a bit string, wherein the instructions cause the second communication device (109) to obtain the bit string by: - applying (307) one or more hash functions to the name to obtain one or more corresponding hash values, wherein a hash value is a value between 0 and the length of the BF minus 1; and - encoding (309) the one or more corresponding hash values ​​in the bit string, wherein the length of the bit string is equal to the length of the BF.

39. The second communication device (109) according to claim 39, wherein The instructions cause the second communication device (109) to encode (309) the one or more corresponding hash values ​​in the bit string by setting a corresponding bit of the bit string to 1 for each hash value.

40. The second communication device (109) according to any one of claims 39 or 40, wherein The instructions cause the second communication device (209) to determine (305) the first communication device hosting one of the resources based on the one or more BFs by: - for each bit string, calculating (311) another bit string by performing a bitwise logical operation between each of the one or more BFs associated with the corresponding first communication device (101, 103, 105) and the bit string; as well as - If each bit of the corresponding further bit string is equal to 0, determining (313) whether said one of said resources is hosted by said one or more first communication devices.

41. The second communication device (109) according to claim 41, wherein The instructions cause the second communication device (109) to calculate the other bit string by performing a bit-by-bit logical operation between each of the one or more BFs associated with the corresponding first communication device (101, 103, 105) and the bit string by: - performing (315) a bitwise logical AND operation between each of the one or more BFs and the bit string; as well as - For each result of said bitwise logical AND operation, performing (317) a bitwise logical XOR operation between the result and said bit string.

42. The second communication device (109) according to any one of claims 38 to 42, wherein: The response includes an indication of the namespace.

43. The second communication device (109) according to any one of claims 36 to 43, wherein: The instructions cause the second communication device (109): - Storing (319) said one or more BFs.

44. The second communication device (109) according to any one of claims 36 to 44, wherein The database (107) is a resource directory RD.

45. The second communication device (109) according to any one of claims 36 to 45, wherein The one or more resources are represented by an Internet Protocol for Smart Objects (IPSO) object.

46. ​​The second communication device (109) according to any one of claims 36 to 46, wherein: The second communication device (109) is a client device.

47. A computer program (504) comprising instructions which, when executed in a processing unit of a first communication device (101), cause the first communication device (101) to: - calculating (201) a Bloom filter BF indicative of said one or more resources hosted by said first communication device (101, 103, 105); and - sending (203) a request to a database (107) for registering said one or more resources, wherein, The request includes the BF.

48. The computer program (504) of claim 48, wherein: The instructions cause the first communication device (101) to perform the method (200) according to any one of claims 2 to 11.

49. A computer-readable data carrier (502) on which a computer program (504) according to claim 48 or 49 is stored.

50. A data carrier signal carrying a computer program (504) according to claim 49 or 50.

51. A computer program (604) comprising instructions which, when executed in a processing unit of a second communication device (109), cause the second communication device (109) to: - sending (301) a request to a database (107) for discovering resources hosted by one or more first communication devices (101, 103, 105); and - receiving (303) a response from said database (107) comprising one or more Bloom filters BF, wherein Each of the one or more BFs indicates resources hosted by a corresponding first communication device (101, 103, 105) of the one or more first communication devices (101, 103, 105).

52. The computer program (604) of claim 52, wherein: The instructions cause the second communication device (101) to perform the method (300) according to any one of claims 13 to 23.

53. A computer-readable data carrier (602) on which a computer program (604) according to claim 52 or 53 is stored.

54. A data carrier signal carrying a computer program (604) according to claim 52 or 53.