IP Library Granted Patent US 12,598,137
Granted Patent B2
US 12,598,137 · App. 18/220,880 · Granted Apr 7, 2026

Connectivity candidate filtering

Inventors: Bojan Rajkovic (Salem, MA); Chin Siong Ong (Dorchester, MA)
Assignee: SimpliSafe, Inc.
H04L45/70H04L45/74
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 12,598,137
App. No.
18/220,880
Granted
Apr 7, 2026
Kind
B2
Abstract

In accordance with one disclosed method, a first application may receive a first connectivity candidate from a second application, the first connectivity candidate identifying at least a first internet protocol (IP) address that a remote application can potentially use to send data over a network to the second application for use by the first application. The first application may determine that the first connectivity candidate satisfies at least one criterion and, based at least in part on the first connectivity candidate satisfying the at least one criterion, may cause the first connectivity candidate to be sent to the remote application via a signaling channel to cause the remote application to attempt to use the first connectivity candidate to send data to the second application via the network.

Claims (75)

1 . A system, comprising:

at least one processor; and

at least one non-transitory computer-readable medium encoded with instruction which, when executed by the at least one processor, cause the system to:

receive, by a first application executable on the system, a first interactive connectivity establishment (ICE) candidate from a second application hosted on the system;

determine, by the first application, that a first value of a first attribute of a first ICE candidate does not match a predetermined value, wherein the first attribute is an internet protocol address type or a transport protocol type;

based at least in part on the first value not matching the predetermined value, cause, by the first application, the first ICE candidate to be sent to a remote application via a signaling channel to cause the remote application to attempt to use the first ICE candidate to send data to the second application via a network;

receive, by the first application, a second ICE candidate from the second application;

determine, by the first application, that a second value of the first attribute of the second ICE candidate matches the predetermined value; and

based at least in part on the second value matching the predetermined value, refrain from causing the second ICE candidate to be sent to the remote application via the signaling channel.

2 . The system of claim 1 , wherein the at least one non-transitory computer-readable medium is further encoded with additional instruction which, when executed by the at least one processor, further cause the system to:

instruct, by the first application, a third application executing on the system to create a signaling client to exchange signaling information with the remote application via the signaling channel, wherein:

the first application causes the first ICE candidate to be sent to the remote application at least in part by providing the first ICE candidate to the signaling client; and

the first application refrains from causing the second ICE candidate to be sent to the remote application at least in part by refraining from providing the second ICE candidate to signaling client.

3 . The system of claim 1 , wherein the first attribute is an internet protocol address type.

4 . The system of claim 3 , wherein the predetermined value is internet protocol version 6 (IPv6).

5 . The system of claim 1 , wherein the first attribute is a transport protocol type.

6 . The system of claim 5 , wherein the predetermined value is transmission control protocol (TCP).

7 . A system, comprising:

at least one processor; and

at least one non-transitory computer-readable medium encoded with instruction which, when executed by the at least one processor, cause the system to:

receive, by a first application executable on the system, a first connectivity candidate from a remote application via a signaling channel, the first connectivity candidate including at least a first internet protocol (IP) address;

determine, by the first application, that a first value of a first attribute of a first connectivity candidate does not match a predetermined value;

based at least in part on the first value not matching the predetermined value, provide, by the first application, the first connectivity candidate to a second application to cause the second application to attempt to use the first connectivity candidate to send data to the remote application via a network;

receive, by the first application, a second connectivity candidate from the remote application via the signaling channel, the second connectivity candidate including at least a second IP address;

determine, by the first application, that a second value of the first attribute of the second connectivity candidate matches the predetermined value; and

based at least in part on the second value matching the predetermined value, refrain from providing the second connectivity candidate to the second application.

8 . The system of claim 7 , wherein the at least one non-transitory computer-readable medium is further encoded with additional instruction which, when executed by the at least one processor, further cause the system to:

instruct, by the first application, a third application executing on the system to create a signaling client to exchange signaling information with the remote application via the signaling channel, wherein:

the first application receives the first connectivity candidate from the remote application at least in part by receiving the first connectivity candidate from the signaling client; and

the first application receives the second connectivity candidate from the remote application at least in part by receiving the second connectivity candidate from the signaling client.

9 . The system of claim 7 , wherein the second application comprises a Web real-time communication (WebRTC) enabled component.

10 . The system of claim 7 , wherein:

the first and second connectivity candidates are interactive connectivity establishment (ICE) candidates; and

the first attribute is an internet protocol address type or a transport protocol type.

11 . The system of claim 10 , wherein the first attribute is an internet protocol address type.

12 . The system of claim 11 , wherein the predetermined value is internet protocol version 6 (IPv6).

13 . The system of claim 10 , wherein the first attribute is a transport protocol type.

14 . The system of claim 13 , wherein the predetermined value is transmission control protocol (TCP).

15 . A system, comprising:

at least one processor; and

at least one non-transitory computer-readable medium encoded with instruction which, when executed by the at least one processor, cause the system to:

receive, by a first application executable on the system, a first interactive connectivity establishment (ICE) candidate from a second application hosted on the system;

determine, by the first application, that a first value of a first attribute of the first ICE candidate matches a predetermined value, wherein the first attribute is an internet protocol address type or a transport protocol type;

based at least in part on the first value matching the predetermined value, cause, by the first application, the first ICE candidate to be sent to a remote application via a signaling channel to cause the remote application to attempt to use the first ICE candidate to send data to the second application via a network;

receive, by the first application, a second ICE candidate from the second application;

determine, by the first application, that a second value of the first attribute of the second ICE candidate does not match the predetermined value; and

based at least in part on the second value not matching the predetermined value, refrain from causing the second ICE candidate to be sent to the remote application via the signaling channel.

16 . The system of claim 15 , wherein the at least one non-transitory computer-readable medium is further encoded with additional instruction which, when executed by the at least one processor, further cause the system to:

instruct, by the first application, a third application executing on the system to create a signaling client to exchange signaling information with the remote application via the signaling channel, wherein:

the first application causes the first ICE candidate to be sent to the remote application at least in part by providing the first ICE candidate to the signaling client; and

the first application refrains from causing the second ICE candidate to be sent to the remote application at least in part by refraining from providing the second ICE candidate to signaling client.

17 . The system of claim 15 , wherein the first attribute is an internet protocol address type.

18 . The system of claim 17 , wherein the predetermined value is internet protocol version 6 (IPv4).

19 . The system of claim 15 , wherein the first attribute is a transport protocol type.

20 . The system of claim 19 , wherein the predetermined value is user datagram protocol (UDP).

21 . A system, comprising:

at least one processor; and

at least one non-transitory computer-readable medium encoded with instruction which, when executed by the at least one processor, cause the system to:

receive, by a first application executable on the system, a first connectivity candidate from a remote application via a signaling channel, the first connectivity candidate including at least a first internet protocol (IP) address;

determine, by the first application, that a first value of a first attribute of a first connectivity candidate matches a predetermined value;

based at least in part on the first value matching the predetermined value, provide, by the first application, the first connectivity candidate to a second application to cause the second application to attempt to use the first connectivity candidate to send data to the remote application via a network;

receive, by the first application, a second connectivity candidate from the remote application via the signaling channel, the second connectivity candidate including at least a second IP address;

determine, by the first application, that a second value of the first attribute of the second connectivity candidate does not match the predetermined value; and

based at least in part on the second value not matching the predetermined value, refrain from providing the second connectivity candidate to the second application.

22 . The system of claim 21 , wherein the at least one non-transitory computer-readable medium is further encoded with additional instruction which, when executed by the at least one processor, further cause the system to:

instruct, by the first application, a third application executing on the system to create a signaling client to exchange signaling information with the remote application via the signaling channel, wherein:

the first application receives the first connectivity candidate from the remote application at least in part by receiving the first connectivity candidate from the signaling client; and

the first application receives the second connectivity candidate from the remote application at least in part by receiving the second connectivity candidate from the signaling client.

23 . The system of claim 21 , wherein:

the first and second connectivity candidates are interactive connectivity establishment (ICE) candidates; and

the first attribute is an internet protocol address type or a transport protocol type.

24 . The system of claim 23 , wherein the first attribute is an internet protocol address type.

25 . The system of claim 24 , wherein the predetermined value is internet protocol version 4 (IPv4).

26 . The system of claim 23 , wherein the first attribute is a transport protocol type.

27 . The system of claim 26 , wherein the predetermined value is user datagram protocol (UDP).

Assignments (2)
SECURITY INTEREST Recorded Nov 12, 2025
From: SIMPLISAFE, INC.
To: CAPITAL ONE, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 073579/0854 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2023
From: RAJKOVIC, BOJAN; ONG, CHIN SIONG
To: SIMPLISAFE, INC.
Reel/Frame 064220/0921 →
Continuity (2)
Continuation 18113888 · Feb 24, 2023
Related Publication 20240291754A1 · Aug 29, 2024
References Cited (19)
US 8601144B1 · Ryner · 2013 [cited by examiner]
US 11012864B2 · Cheng · 2021 [cited by applicant]
US 11323376B2 · Chatterjee · 2022 [cited by examiner]
US 11750514B1 · Rajkovic · 2023 [cited by examiner]
US 20060274730A1 · Medlock · 2006 [cited by examiner]
US 20150036690A1 · Pastro · 2015 [cited by examiner]
US 20150304364A1 · Wang et al. · 2015 [cited by applicant]
US 20160294913A1 · Jansson · 2016 [cited by examiner]
US 20180205720A1 · Westerlund · 2018 [cited by examiner]
US 20180234550A1 · Lifson et al. · 2018 [cited by applicant]
US 20200228493A1 · Auge Pujadas et al. · 2020 [cited by applicant]
WO 2023019167A1 · 2023 [cited by applicant]
U.S. Appl. No. 63/441,960, filed Jan. 30, 2023. [cited by applicant]
U.S. Appl. No. 63/441,593, filed Jan. 27, 2023. [cited by applicant]
U.S. Appl. No. 17/529,332, filed Nov. 18, 2021, [cited by applicant]
“Kinesis Video Streams: Amazon Kinesis Video Streams WebRTC Developer Gulde”, Amazon Web SelVices, Inc., 2023, p. 1-61. [cited by applicant]
J. Rosenberg, “Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols”, Internet Engineering Task Force (IETF), Apr. 2010, p. 1-117. [cited by applicant]
“Firebase + WebRTC Codelab”, WebRTC, Google Developers, https:/lwebrtc.org/getting-started/firebase-rt<reodalab, retrieved from the Internet on Mar. 9, 2023. [cited by applicant]
International Search Report and Written Opinion issued Apr. 30, 2024 for international Patent Application No. PCT/US2023/085447. [cited by applicant]