Invented by Sreedhar Yengalasetti, Raghav Somanahalli Narayana, Citrix Systems Inc
The Citrix Systems Inc invention works as followsThe present application relates to systems and methods that handle real-time streaming protocols sessions by a multi-core intermediary system. The multi-core intermediate receives an setup request for real-time streaming protocols sessions. It processes the request and sends it to the server that provides the streaming media. The server creates an RTSP and sends a session identifier to the multicore intermediary. The core of an intermediary core receives the session identification transmitted and, using a hashing of the identification, determines who is the owner of the session. The core sends the session data to the owner core which then selects two ports to listen on. The owner core notifies other cores that they should establish listening services using the same consecutive port.
Background for Systems and Methods for Managing Ports for RTSP Across Cores in a Multi-Core System
The popularity of streaming media is evident by the rapid increase in commercial products that allow for the playback of audio and video files over Internet, and server sites which support audio and video. Real-Time Streaming Protocol is a common way to deliver streaming media. It was defined by Rao et. al. in IETF’s RFC 2326. Apple Computer, Inc., Cupertino, Calif., has implemented the Darwin Streaming Server, QuickTime Streaming Server, and Windows Media Services, as well as Microsoft, Inc., Redmond, Wash., and RealNetworks, Inc., Seattle, Wash. RTSP is a stateful protocol, which uses a session identifier for tracking sessions. This differs from the Hypertext Transfer Protocol. The server doesn’t need to maintain a transport layer TCP session for each control sessions, allowing it to serve more requests simultaneously by using multicasting and broadcasting streaming.
In a multicore intermediary, a core could receive a message of control from a client to maintain a session maintained by another core. This can lead to confusion or unpredictable behavior.
The present application is aimed at systems and methods that are used to configure and handle real-time streaming protocols sessions by a multi-core intermediary system. The multi-core intermediate receives an setup request for real-time streaming protocols sessions. It processes the request and sends it to the server that provides the streaming media. The server creates an RTSP and sends a session identifier to the multicore intermediary. The core of an intermediary core receives the session identification transmitted and, using a hashing of the identification, determines who is the owner of the session. The core sends the session data to the owner core which then selects two ports to listen on. The owner core notifies other cores that they should establish listening services using the same consecutive port.
The present disclosure is concerned with a method of allocating ports to a number of cores in a multi-core system to support multi-port protocols. A device with a number of cores that acts as an intermediary between a group of clients and servers and a group of servers can allocate to each of those cores a range of port numbers from a port space, which includes a variety of port numbers. A core from the plurality cores can receive a request for a session to be established with a server using a multiple port protocol. The core can select two ports from its predetermined port range. The core can establish a listening service for a port on the first of two ports, and another listening service for the second of two ports. The core can transmit to the client an answer identifying the device’s first and second ports.
In some embodiments, a core broadcasts a message to the other cores in the plurality identifying the ports. Each core may set up a listening service for each of the ports. In some embodiments the device can establish the plurality port numbers for the port space by establishing a range from a fixed port number up to a maximum number. In other embodiments, the device can allocate the predetermined port range to each core based on the number of cores in the plurality. In other embodiments, a core receives a request to establish a session of real-time protocol, using one port as if it were data, and another port as if it was control information. In other embodiments, the core chooses the next port available from its predetermined port range as the first one and the port immediately adjacent to it as the second. In certain embodiments, the core registers a first listening service to the first port, and a second listening service to the second port. In still other embodiments, the core modifies response numbers from the server by replacing them with the port numbers selected by the core. According to other embodiments, in response to a hashing of a session ID, a second of the plurality cores determines that the core is the owner of the particular session.
The present disclosure is concerned with a system that allocates ports to a number of cores in a multi-core processor to support multi-port protocols. The system can comprise a device with a plurality cores that acts as an intermediary between a plurality clients and servers. The device can assign a range of port numbers to each core in the plurality. A core from the plurality may receive from a client from the plurality a request to establish a connection with a server using a multi-port protocol. The core can then select two ports from its predetermined range. The core can establish a listening service on one of the ports, and another listening service on the other port. The core can send a response to the client that identifies the first and second ports of the device.
In some embodiments the core broadcasts a message to the other cores in the plurality, identifying the ports. In some embodiments, the cores of each other establish a listening service for each of the ports. In other embodiments, the device defines the plurality port numbers as a range from a fixed port number up to a maximum number. In yet further embodiments, based on the number of cores in the plurality, the device assigns the predetermined port range to each core. In still further embodiments, a core receives a request to establish a session of real-time protocol, using one port as if it were data, and another port as if it was control information. In yet another embodiment, the core selects the next port available from its predetermined range and the port immediately adjacent to it as the second port. In some embodiments, in order to register the first listening service at the first port and a second listening service at the second port, the core will use the predetermined range of ports allocated by the core. In some embodiments, the core modifies a response from the server by replacing port numbers with the port numbers of the selected two ports. A second core from the plurality determines that the core owns the session by analyzing a hash value of the session identifier.
The description and accompanying drawings show the details of different embodiments of the invention.
The following sections of the specification with their respective contents can be useful for reading the descriptions of various embodiments:
Before discussing the details of particular embodiments of systems and methods for clients and appliances, it might be useful to discuss the computing and network environments in which these embodiments could be deployed. Referring to FIG. FIG. 1A shows an example of a network environment. The network environment consists of one or several clients 102a-102n (also known as client(s), 102) in communication to one or two servers 106a-106n (also known as remote machine(s), 106) via one or multiple networks 104,104? (generally known as network 104). A client 102 can communicate with a server (106) via an appliance 200 in some embodiments.
Although FIG. “Although FIG. The clients 102, 106 and servers 106 could be on the same network. What are the networks 104-104? It can be one type of network, or several types of networks. The network 104 or the network 104? It can be a local area network (LAN), like a company Intranet or a metropolitan area network, or a wide-area network(WAN), like the Internet or the World Wide Web. Network 104 is one example. Network 104 could be a private network, while network 104 might be a public one. Network 104 and network 104 can be considered private networks in some instances. A public network. Networks 104 and104 may be used in another way. Both networks may be private. Clients 102 could be at a branch office or corporate enterprise and communicate via a WAN connection through the network 104 to the corporate data center servers 106.
The network 104 or 104?” Any type or form of network may be used. It can include any number of the following: a network 104 and/or 104, a broadcast network network, large area network network networks, a wide-area network network network, and a telecommunications network. The network 104 can include a wireless link such as an infrared channel, satellite band, or a wireline network. What is the topology of network 104 or 104? It could be a bus, star or ring network topology. What is the network 104 or 104? The network 104 and/or 104 may have any network or network topology that is known to those who are skilled in the art of the art.
As shown at FIG. “As shown in FIG. 1A, the appliance 200 is shown between networks 104 and104?. The appliance 200 can be found on network 104 in some instances. An appliance 200 may be deployed at a branch office within a corporate entity, for example. The appliance 200 could also be found on network 104?. An appliance 200, for example, could be found at a corporate data centre. A plurality of appliances 200 can be deployed on network 1004. A plurality of appliances 200 can be deployed on network 104.1?. One embodiment shows a first appliance 200 communicating with a second appliance 200. Other embodiments allow the appliance 200 to be part of any client 102, server 106, or other network 104.104. as the client 102. An appliance 200 or more may be found at any point on the network or in the communications path between a client and server 102.
In some embodiments, an appliance 200 includes any network device manufactured by Citrix Systems, Inc., Ft. Lauderdale Fla., also known as Citrix netScaler devices. Other embodiments include any product embodiments known as WebAccelerator or BigIP made by F5 Networks, Inc., Seattle, Wash. Another embodiment of the appliance 205 is any one of the DX acceleration platform platforms and/or SSL VPN series devices, such as SA 700, SA 2000, SA 4000, SA 6000, and SA 4000 devices manufactured by Juniper Networks, Inc., Sunnyvale, Calif. Another embodiment of the appliance 200 includes all application acceleration and/or security-related appliances and/or software manufactured or distributed by Cisco Systems, Inc., San Jose, Calif., including the Cisco AVS Series Application Velocity Systems and Cisco ACE Application Control Engine Modular service software.
In one embodiment, multiple servers may be logically grouped 106. These embodiments may also include a server farm 38. The serves 106 in some embodiments may be geographically dispersed. A farm 38 can be administered as one entity in some cases. Other embodiments of the server farm 38 include a plurality server farms 38. One embodiment of the server farm executes one to several applications for one or more clients 102.
The servers 106 in each farm 38 may be heterogeneous. One or more servers 106 may operate under one operating system platform, such as WINDOWS, which is manufactured by Microsoft Corp. of Redmond. Wash., while the other servers (106 and 106) can operate on another operating system platform, such as Unix or Linux. Servers 106 and 106 from each farm 38 don’t need to be physically close to other servers 106 in the farm 38. The servers 106 that are logically connected to form a farm 38 can be interconnected via a wide-area or medium-area connection (WAN) or MAN connections. A farm 38 could include servers 106 located on different continents, in different areas of a country, state, city or campus. The data transmission speeds between servers 38 and 106 can be improved if servers 106 are connected via a local-area networking (LAN) connection, or another type of direct connection.
Servers 106 can be called a file server or application server, a web server, proxy server or gateway server. A server 106 can be configured to serve as an application server, or master application server in some cases. A server 106 could include an Active Directory in one embodiment. Client nodes and endpoints may also be used to refer to clients 102. A client 102 can be used as both a client server that provides access to the applications of a server or as a client node to access them.
In some embodiments, the client 102 can communicate with a server 106 in a farm 38. One embodiment shows the client 102 communicating directly with one the servers 106 within a farm 38. Another embodiment sees the client 102 running a program neighbor application to communicate with server 106 in farm 38. Another embodiment provides functionality as a master node. The client 102 can communicate with the server 38 via a network 104. The client 102 can request execution of different applications from servers 106a-106n in farm 38 over the network 104 and receive the output of application execution for display. In certain embodiments, the master node is the only one that can identify and provide address information for a server 106. hosting the requested application.
The server 106 is a web server in one embodiment. Another embodiment is that the server106a receives client requests 102 and forwards them to a second server106b. The server106b then responds to client 102’s request with a response from server106b. Another embodiment is that the server 106 obtains information about the address of a server hosting the application. Another embodiment presents the client 102 with the response via a web interface. The client 102 can communicate directly with the server106 in order to access the identified app. Another embodiment allows the client 102 to receive application output data (such as display data) generated by the execution of the identified app on the server.
Referring to FIG. In Figure 1B is shown an embodiment of a networking environment that deploys multiple appliances 200. On a first network, 104, a first appliance 200 can be deployed and on a second network 200? On a second network? A corporate enterprise, for example, may deploy a 200-watt first appliance at a branch and 200-watt second appliance in a data center. at a data center. In another embodiment, first appliance 200 and the second appliance 200 are deployed on the same network 104 or network 104. The same network 104, or the network 104? A first appliance 200, for example, may be deployed to a server farm 38 and a secondary appliance 200, for a server farm 38. A second example is that a first appliance may be installed at a branch office, while the second device 200? In another example, a first appliance 200 may be deployed at a first branch office while the second appliance 200? In some embodiments the first appliance and second appliance? They can work together or in tandem to speed up network traffic, or data and application delivery between a client or a server.
Referring to FIG. 1C is another example of a network environment that deploys the appliance 200 with one, or more, other types of appliances such as WAN optimization appliance (205, 205). is depicted. A first WAN optimization appliance 205, for example, is shown between networks 104-104. a second WAN Optimization Appliance 205? The appliance 200 may be connected to one or more servers (106). A corporate enterprise might deploy a first WAN Optimization appliance 205 in a branch office, and another WAN Optimization appliance 205 in a second office. at a data center. The appliance 205 can be found on network 104 in some embodiments. The appliance 205 may be located on network 104? in other embodiments. The appliance 205? may be found on network 104. In some embodiments, appliance 205? The appliance 205? may be found on network 104? Or network 104? The appliance 205 and the 205? are both in one embodiment. They are connected to the same network. Another embodiment is the appliance 205 and the appliance 205? They are connected to different networks. Another example is that a first WAN Optimization Appliance 205 could be deployed to a server farm 38, and a second WAN Optimization Appliance 205 for a second farm 38. for a second server farms 38?
Click here to view the patent on Google Patents.