IP Library Granted Patent US 8,635,344
Granted Patent B2
US 8,635,344 · App. 12/976,706 · Granted Jan 21, 2014

Systems and methods for managing ports for RTSP across cores in a multi-core system

Inventors: Sreedhar Yengalasetti (Bangalore, IN); Raghav Somanahalli Narayana (Bangalore, IN)
Assignee: Citrix Systems, Inc.
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 8,635,344
App. No.
12/976,706
Granted
Jan 21, 2014
Kind
B2
Abstract

The present application is directed towards systems and methods for systems and methods for handling real-time streaming protocol sessions by an intermediary multi-core system. When a multi-core intermediary receives a setup request for a real-time streaming protocol session, the intermediary processes and forwards the request to a server providing the streaming media. The server sets up an RTSP session and transmits a session identification to the multi-core intermediary. A core of the intermediary receives the transmitted session identification and determines an owner core of the session, based on a hash of the session identification. The core transmits the session information to the determined owner core, which selects two consecutive ports on which to establish listening services. The owner core then notifies all other cores to establish listening services on the same consecutive ports, such that any core that receives an RTSP control message from a client can handle it properly.

Claims (28)

1. A method for allocating ports among a plurality of cores of a multi-core device to handle multi-port protocols, the method comprising:

(a) allocating, by a device comprising a plurality of cores and intermediary to a plurality of a clients and a plurality of servers, a predetermined range of port numbers of a port space to each core of the plurality of cores, the port space comprising a plurality of port numbers of the device;

(b) receiving, by a core of the plurality of cores, a request from a client of the plurality of clients to establish a session with a server via a multiple port protocol;

(c) selecting, by the core, two ports available from the core's allocated predetermined range of port numbers;

(d) establishing, by the core, a first listening service on a first port of the two ports and a second listening service on a second port of the two ports; and

(e) transmitting, by the core, to the client a response identifying the first port and the second port of the device, the response modified from a response of the server to replace port numbers in the response of the server with port numbers of the two ports selected by the core.

2. The method of claim 1 , further comprising broadcasting, by the core, to other cores of the plurality of cores, a message identifying the two ports.

3. The method of claim 2 , further comprising establishing, by each of the others cores, a listening service on each of the two ports.

4. The method of claim 1 , wherein step (a) further comprises establishing, by the device, the plurality of port numbers of the port space as a range of port numbers of the device from a predetermined port number to a maximum port number.

5. The method of claim 1 , wherein step (a) further comprises allocating, by the device, to each core, the predetermined range of port numbers based on a number of cores of the plurality of cores.

6. The method of claim 1 , wherein step (b) further comprises receiving, by the core, the request to establish a real-time protocol session, the session using one port for data and another port for control information.

7. The method of claim 1 , wherein step (c) further comprises selecting, by the core, as the first port a next available port from the core's allocated predetermined range of ports and a consecutive port to the first port as the second port.

8. The method of claim 1 , wherein step (d) further comprises registering, by the core, the first listening service on the first port and the second listening service on the second port.

9. The method of claim 1 , further comprising determining, by a second core of the plurality of cores responsive to a hash of a session identifier, the core is an owner of the session.

10. A system for allocating ports among a plurality of cores of a multi-core device to handle multi-port protocols, the system comprising:

a device comprising a plurality of cores and intermediary to a plurality of a clients and a plurality of servers, the device having a port space comprising a plurality of port numbers of the device;

wherein the device allocates to each core of the plurality of cores a predetermined range of port numbers of the port space;

a core of the plurality of cores receiving a request from a client of the plurality of clients to establish a session with a server via a multiple port protocol and selecting two ports available from the core's allocated predetermined range of port numbers;

a first listening service established by the core on a first port of the two ports and a second listening service established by the core on a second port of the two ports; and

wherein the core transmits to the client a response identifying the first port and the second port of the device, the response modified from a response of the server to replace port numbers in the response of the server with port numbers of the two ports selected by the core.

11. The system of claim 10 , wherein the core broadcasts to other cores of the plurality of cores, a message identifying the two ports.

12. The system of claim 11 , wherein each of the others cores establishes a listening service on each of the two ports.

13. The system of claim 10 , wherein the device establishes the plurality of port numbers of the port space as a range of port numbers of the device from a predetermined port number to a maximum port number.

14. The system of claim 10 , wherein the device allocates to each core, the predetermined range of port numbers based on a number of cores of the plurality of cores.

15. The system of claim 10 , wherein the core receives the request to establish a real-time protocol session, the session using one port for data and another port for control information.

16. The system of claim 10 , wherein the core selects as the first port a next available port from the core's allocated predetermined range of ports and a consecutive port to the first port as the second port.

17. The system of claim 10 , wherein the core registers the first listening service on the first port and the second listening service on the second port.

18. The system of claim 10 , wherein a second core of the plurality of cores, responsive to a hash of a session identifier, determines the core is an owner of the session.

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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
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 →
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 Mar 17, 2011
From: YENGALASETTI, SREDHAR; NARAYANA, RAGHAV SOMANAHALLI
To: CITRIX SYSTEMS, INC.
Reel/Frame 025975/0665 →
Continuity (2)
Provisional Application 61289540 · Dec 23, 2009
Related Publication 20110161500A1 · Jun 30, 2011