IP Library › Granted Patent US 10,742,760
Granted Patent B2
US 10,742,760 · App. 16/347,737 · Granted Aug 11, 2020

Neworking internet of things (IoT) devices

Inventors: Gregory Burns (Seattle, WA); Todd Malsbary (Seattle, WA)
Assignee: Intel Corporation
H04L67/26H04L67/12H04L67/125H04L67/2809H04L67/2828
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,742,760
App. No.
16/347,737
Granted
Aug 11, 2020
Kind
B2
Abstract

Techniques for implementing a publish-subscribe messaging system are disclosed. An example device generates a topic string comprising a string of characters that represent a subscription to a requested publication. A subscription filter is computed based on the topic string. The device is configured to receive a publication, which includes a data payload and a publication filter. The device performs a bitwise comparison of the subscription filter and the publication filter to determine whether the publication is a destination match for the subscription. If the publication is a destination match for the subscription, the device consumes the data payload of the publication.

Claims (92)

1. An electronic device for use in a publish-subscribe messaging system, the electronic device comprising:

a storage device; and

a processor to:

generate a topic string comprising a string of characters that represent a subscription to a requested publication;

generate a subscription filter based on the topic string;

receive a publication comprising a data payload and a publication filter;

perform a bitwise comparison of the subscription filter and the publication filter to determine whether the publication is a destination match for the subscription; and

if the publication is a destination match for the subscription, consume the data payload of the publication.

2. The electronic device of claim 1 , wherein the processor is to generate a routing vector based on the subscription filter and send the routing vector to a downstream subscriber node.

3. The electronic device of claim 1 , wherein the subscription filter and the publication filter are Bloom filters.

4. The electronic device of claim 1 , wherein the processor is to:

generate a first routing vector based on the subscription filter;

receive a second routing vector from an upstream subscriber node;

combine the first routing vector and second routing vector to generate a combined routing vector; and

send the combined routing vector to a downstream subscriber node.

5. The electronic device of claim 1 , wherein the processor is to generate an interests vector based on the subscription filter, wherein the interests vector is equal to the subscription filter.

6. The electronic device of claim 1 , wherein the processor is to:

generate a first interests vector based on the subscription filter;

receive a second interests vector from an upstream subscriber node;

combine the first interests vector and second interests vector via a bitwise AND operation to generate a combined interests vector; and

send the combined interests vector to a downstream subscriber node.

7. The electronic device of claim 1 , wherein the processor is to generate a needs vector based on the subscription filter, wherein the needs vector is a locality sensitive hash of the subscription filter and includes a unary encoding of a number of bits set in the subscription filter.

8. The electronic device of claim 1 , wherein the processor is to:

generate a first needs vector based on the subscription filter;

receive a second needs vector from an upstream subscriber node;

combine the first needs vector and second needs vector via a bitwise OR operation to generate a combined needs vector; and

send the combined needs vector to a downstream subscriber node.

9. The electronic device of claim 1 , wherein the processor is to:

receive an interests vector from an upstream subscriber node;

compare the interests vector to the publication filter; and

if any bit set in the interests vector is also set in the publication filter, forward the publication to the upstream subscriber node.

10. The electronic device of claim 1 , wherein the processor is to:

receive an interests vector and a needs vector from an upstream subscriber node;

compute an intersection of the publication filter and the interests vector and compute a locality sensitive hash of the intersection; and

if the locality sensitive hash is a superset or equal to the needs vector, forward the publication to the upstream subscriber node.

11. A method of operating a subscriber node in a publish-subscribe messaging system, the method comprising:

generating a topic string comprising a string of characters that represent a subscription to a requested publication;

generating a subscription filter based on the topic string;

receiving a publication comprising a data payload and a publication filter;

performing a bitwise comparison of the subscription filter and the publication filter to determine whether the publication is a destination match for the subscription; and

if the publication is a destination match for the subscription, consuming the data payload of the publication.

12. The method of claim 11 , comprising:

generating a first routing vector based on the subscription filter;

receiving a second routing vector from an upstream subscriber node;

combining the first routing vector and second routing vector to generate a combined routing vector; and

sending the combined routing vector to a downstream subscriber node.

13. The method of claim 11 , comprising:

generating a first interests vector based on the subscription filter;

receiving a second interests vector from an upstream subscriber node;

combining the first interests vector and second interests vector via a bitwise AND operation to generate a combined interests vector; and

sending the combined interests vector to a downstream subscriber node.

14. The method of claim 11 , comprising generating a needs vector based on the subscription filter, wherein the needs vector is a locality sensitive hash of the subscription filter and includes a unary encoding of a number of bits set in the subscription filter.

15. The method of claim 11 , comprising:

generating a first needs vector based on the subscription filter;

receiving a second needs vector from an upstream subscriber node;

combining the first needs vector and second needs vector via a bitwise OR operation to generate a combined needs vector; and

sending the combined needs vector to a downstream subscriber node.

16. The method of claim 11 , comprising:

receiving an interests vector from an upstream subscriber node;

comparing the interests vector to the publication filter; and

if any bit set in the interests vector is also set in the publication filter, forwarding the publication to the upstream subscriber node.

17. The method of claim 11 , comprising:

receiving an interests vector and a needs vector from an upstream subscriber node;

computing an intersection of the publication filter and the interests vector and computing a locality sensitive hash of the intersection; and

if the locality sensitive hash is a superset or equal to the needs vector, forwarding the publication to the upstream subscriber node.

18. The method of claim 11 , comprising generating a routing vector based on the subscription filter and sending the routing vector to a downstream subscriber node.

19. The method of claim 11 , wherein the subscription filter and the publication filter are Bloom filters.

20. The method of claim 11 , comprising generating an interests vector based on the subscription filter, wherein the interests vector is equal to the subscription filter.

21. A tangible, non-transitory, computer-readable medium comprising instructions that, when executed by a processor, direct the processor to operate a subscriber node in a publish-subscribe messaging system, the instructions to direct the processor to:

generate a topic string comprising a string of characters that represent a subscription to a requested publication;

generate a subscription filter based on the topic string;

receive a publication comprising a data payload and a publication filter;

perform a bitwise comparison of the subscription filter and the publication filter to determine whether the publication is a destination match for the subscription; and

if the publication is a destination match for the subscription, consume the data payload of the publication.

22. The computer-readable medium of claim 21 , comprising instructions to direct the processor to:

generate a first interests vector based on the subscription filter;

receive a second interests vector from an upstream subscriber node;

combine the first interests vector and second interests vector via a bitwise AND operation to generate a combined interests vector; and

send the combined interests vector to a downstream subscriber node.

23. The computer-readable medium of claim 21 , comprising instructions to direct the processor to:

generate a first needs vector based on the subscription filter;

receive a second needs vector from an upstream subscriber node;

combine the first needs vector and second needs vector via a bitwise OR operation to generate a combined needs vector; and

send the combined needs vector to a downstream subscriber node.

24. The computer-readable medium of claim 21 , comprising instructions to direct the processor to:

receive an interests vector from an upstream subscriber node;

compare the interests vector to the publication filter; and

if any bit set in the interests vector is also set in the publication filter, forward the publication to the upstream subscriber node.

25. The computer-readable medium of claim 21 , comprising instructions to direct the processor to:

receive an interests vector and a needs vector from an upstream subscriber node;

compute an intersection of the publication filter and the interests vector and compute a locality sensitive hash of the intersection; and

if the locality sensitive hash is a superset or equal to the needs vector, forward the publication to the upstream subscriber node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2019
From: BURNS, GREGORY; MALSBARY, TODD
To: INTEL CORPORATION
Reel/Frame 049097/0258 →
Continuity (1)
Related Publication 20190289091A1 · Sep 19, 2019