IP Library Granted Patent US 10,958,721
Granted Patent B2
US 10,958,721 · App. 16/402,847 · Granted Mar 23, 2021

WebRTC API redirection with intelligent network connectivity steering

Inventors: Vladimir Vysotsky (Fremont, CA); Todd Giebler (Pompano Beach, FL); Georgy Momchilov (Parkland, FL); James Page (Pompano Beach, FL)
Assignee: CITRIX SYSTEMS, INC.
H04L67/104G06F3/0481G06F3/1454G06F9/452G06F9/455G06F9/45529G06F9/45533G06F9/45545G06F9/547G06K19/06028G06T7/90H04L43/12H04L61/256H04L61/2575H04L63/20H04L65/1059H04L65/1069H04L65/4015H04L65/4069H04L65/60H04L65/601H04L65/608H04L65/80H04L67/02H04L67/08H04L67/1091H04L67/2804H04L67/2814H04L67/2819H04L67/2861H04L67/34H04L67/42H04N5/272H04N7/147G06F9/45558G06F2009/45562G06F2009/45595G06F2203/04804H04L65/1063
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,958,721
App. No.
16/402,847
Granted
Mar 23, 2021
Kind
B2
Abstract

A computing system includes a virtual desktop server and a client computing device. The virtual desktop server includes a real-time media application to provide real-time communications (RTC) for peer-to-peer networking, and a native RTC engine to execute a portion of the real-time media application when received by the native RTC engine. An API code redirection module redirects intercepted APIs of the real-time media application so that the portion of the real-time media application is redirected away from the native RTC engine to a client RTC engine in the client computing device. The portion of the real-time media application being redirected includes provisioning information directed to a remote media server. A network location service provides provisioning information directed to a nearby media server. The client RTC engine executes the redirected portion of the real-time media application, and selects the remote media server or the nearby media server based on network proximity to the client computing device.

Claims (48)

1. A computing system comprising:

a virtual desktop server comprising:

an application framework comprising a real-time media application to provide real-time communications (RTC) for peer-to-peer networking, and a native RTC engine to execute a portion of the real-time media application when received by the native RTC engine, and

an application programming interface (API) code redirection module to redirect intercepted APIs of the real-time media application intended for the native RTC engine so that the portion of the real-time media application is redirected away from the native RTC engine, with the portion of the real-time media application being redirected including provisioning information directed to a remote media server;

a network location service to provide provisioning information directed to a local media server; and

a client computing appliance comprising a client RTC API engine communicating with the API code redirection module and said network location service to:

execute the redirected portion of the real-time media application,

select the remote media server or the local media server based on network proximity to said client computing device,

perform network connectivity probing with the selected media server to determine reachability to a peer computing device, and

establish at least one media stream with the peer computing device based on the network connectivity probing.

2. The computing system according to claim 1 wherein the local media server is selected when the remote media server is in close network proximity to said virtual desktop server, and the local media server is in close network proximity to said client computing device.

3. The computing system according to claim 1 wherein said client computing device operates within a local network, and wherein said network location service comprises a network edge appliance operating within the local network.

4. The computing system according to claim 1 wherein said client computing device operates within a local network, and wherein said network location service operates in a remote network.

5. The computing system according to claim 1 wherein the provisioning information directed to the remote media server includes at least one of a session traversal utilities for NAT (STUN) server, a traversal using relay NAT (TURN) server, and a combination of a STUN and TURN server in close network proximity to said virtual desktop server; and wherein the provisioning information directed to the local media server includes at least one of a STUN server, a TURN server, and a combination of a STUN and TURN server in close network proximity to said client computing device.

6. The computing system according to claim 1 wherein the network connectivity probing is based on interactive connectivity establishment (ICE).

7. The computing system according to claim 1 wherein the network connectivity probing is based on communications with at least one session traversal utilities for NAT (STUN) server implementing a STUN protocol.

8. The computing system according to claim 7 wherein the network connectivity probing is further based on communications with at least one traversal using relay NAT (TURN) server implementing a TURN protocol.

9. The computing system according to claim 1 wherein the API code redirection module redirects the intercepted APIs based on redirection code injected into the real-time media application.

10. The computing system according to claim 1 wherein the redirected APIs correspond to real-time media processing.

11. The computing system according to claim 1 wherein the peer computing device is configured as another client computing device.

12. The computing system according to claim 1 wherein the peer computing device is configured as a conference bridge.

13. A method for providing real-time communications (RTC) for peer-to-peer networking comprising:

receiving, by a virtual desktop server, a portion of a real-time media application to be executed by a native RTC engine of the virtual desktop server;

intercepting and redirecting, by an application programming interface (API) code redirection module of the virtual desktop server, APIs of the real-time media application intended for the native RTC engine so that the portion of the real-time media application is redirected away from the native RTC engine, with the portion of the real-time media application being redirected including provisioning information directed to a remote media server;

receiving from a network location service provisioning information directed to a local media server; and

instructing, by the virtual desktop server, a client computing device comprising a client RTC API engine communicating with the API code redirection module and the network location service to:

execute the redirected portion of the real-time media application,

select the remote media server or the local media server based on network proximity to said client computing device,

perform network connectivity probing with the selected media server to determine reachability to a peer computing device, and

establish at least one media stream with the peer computing device based on the network connectivity probing.

14. The method according to claim 13 wherein the local media server is selected when the remote media server is in close network proximity to the virtual desktop server, and the local media server is in close network proximity to the client computing device.

15. The method according to claim 13 wherein the client computing device operates within a local network, and wherein the network location service comprises a network edge appliance operating within the local network.

16. The method according to claim 13 wherein the client computing device operates within a local network, and wherein the network location service operates in a remote network.

17. The method according to claim 13 wherein the provisioning information directed to the remote media server includes at least one of a session traversal utilities for NAT (STUN) server, a traversal using relay NAT (TURN) server, and a combination of a STUN and TURN server in close network proximity to the virtual desktop server; and wherein the provisioning information directed to the local media server includes at least one of a STUN server, a TURN server, and a combination of a STUN and TURN server in close network proximity to the client computing device.

18. The method according to claim 13 wherein the network connectivity probing is based on interactive connectivity establishment (ICE).

19. The method according to claim 13 wherein the network connectivity probing is based on communications with at least one session traversal utilities for NAT (STUN) server implementing a STUN protocol, and based on communications with at least one traversal using relay NAT (TURN) server implementing a TURN protocol.

20. A non-transitory computer readable medium for operating a client computing device within a computing system comprising a virtual desktop server, and a network location service to provide provisioning information directed to a local media server, with the virtual desktop server comprising an application framework comprising a real-time media application to provide real-time communications (RTC) for the peer-to-peer networking, and a native RTC engine to execute a portion of the real-time media application when received by the native RTC engine, and an application programming interface (API) code redirection module to redirect intercepted APIs of the real-time media application intended for the native RTC engine so that the portion of the real-time media application is redirected away from the native RTC engine, with the portion of the real-time media application being redirected including provisioning information directed to a remote media server, and with the non-transitory computer readable medium having a plurality of computer executable instructions for causing the client computing device to perform steps comprising:

executing the redirected portion of the real-time media application;

selecting the remote media server or the local media server based on network proximity to the client computing device;

performing network connectivity probing with the selected media server to determine reachability to a peer computing device; and

establishing at least one media stream with the peer computing device based on the network connectivity probing.

21. A method for providing real-time communications (RTC) for peer-to-peer networking comprising:

receiving, by a client computing device in communication with a virtual desktop server, intercepted and redirected application programming interface (API) from the virtual desktop server, the API related to a portion of a real-time media application to be executed by the virtual desktop server, wherein the portion of the real-time media application is redirected to the client computing device and includes provisioning information directed to a remote media server;

receiving, from a network location service, provisioning information directed to a local media server;

executing, by the client computing device, the redirected portion of the real-time media application;

selecting, by the client computing device, the remote media server or the local server based on network proximity to the client computing device;

performing, by the client computing device, network connectivity probing with the selected media server to determine reachability to a peer computing device; and

establishing, by the client computing device, at least one media stream with the peer computing device based on the network connectivity probing.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2019
From: VYSOTSKY, VLADIMIR; GIEBLER, TODD; MOMCHILOV, GEORGY; PAGE, JAMES
To: CITRIX SYSTEMS, INC.
Reel/Frame 049091/0060 →
Continuity (2)
Provisional Application 62667013 · May 4, 2018
Related Publication 20190342362A1 · Nov 7, 2019