Embodiments relate generally to network communications, and more particularly, but not exclusively, to managing server response based persistence in network protocol agnostic environment.
The enormous growth in network communications has been due at least in part to the wide variety of applications using the network, such as the Internet. For example, today's applications include web sites used by merchants to conduct business, web sites for education activities, and web sites for web logs or blogs. Other applications include text messaging, Voice over Internet Protocol (VoIP), video conferencing, streaming multimedia distributions, online games, and other types of multimedia communications.
Many of the network architectures used to support these applications, and others, are often designed with the intent of providing high availability. One such network architecture is known as IP multimedia subsystem (IMS) architecture. IMS traditionally is a configuration of networking components arranged to provide multimedia applications over IP. IMS as used herein refers to the configurations and specifications described by the wireless standards body 3rd Generation Partnership Project (3GPP), as well as the architectures described by 3rd Generation Partnership Project 2 (3GPP2), and Telecoms & Internet converged Services & Protocols for Advanced Networks (TISPAN). Examples of such architectures, standards and/or specifications may be found at European Telecommunications Standards Institute (ETSI) web site (for TISPAN related specifications), and/or 3GPP websites.
Typically, an IMS configuration might include a plurality of application servers that may reside behind a plurality of proxy servers, which are then configured to route incoming messages to one of a plurality of application servers.
In the typical IMS architecture, client devices may send messages over a network to be managed by one of the application servers configured to provide the multimedia services being requested. As part of such multimedia communications, the client devices might employ a networking protocol, such as Session Initiation Protocol (SIP). SIP is known as a signaling protocol, widely used for setting up and tearing down multimedia communication sessions such as voice and video calls over the network. While SIP messages may be initiated by a client device, SIP messages may also be initiated by one or more of the application servers. For example, as part of an invite for a multimedia conferencing session, an application server may send SIP invite messages to a plurality of client devices. Because the SIP messages may employ an underlying connectionless oriented network protocol, such as User Datagram Protocol (UDP), or the like, routing incoming SIP messages to the same application server has not always been successful using traditional implementations of proxy servers. Thus, allocating workload across the plurality of application servers has often been complicated, expensive, and ineffective.
Non-limiting and non-exhaustive embodiment are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified.
For a better understanding, reference will be made to the following Detailed Description, which is to be read in association with the accompanying drawings, wherein:
The invention now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific embodiments by which the invention may be practiced. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Among other things, the invention may be embodied as methods or devices. Accordingly, the invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
Throughout the specification and claims, the following terms take the meanings explicitly associated herein, unless the context clearly dictates otherwise. The phrase “in one embodiment” as used herein does not necessarily refer to the same embodiment, though it may. As used herein, the term “or” is an inclusive “or” operator, and is equivalent to the term “and/or,” unless the context clearly dictates otherwise. The term “based on” is not exclusive and allows for being based on additional factors not described, unless the context clearly dictates otherwise. In addition, throughout the specification, the meaning of “a,” “an,” and “the” include plural references. The meaning of “in” includes “in” and “on.”
As used herein an “application session” or “session” is a series of application interactions between two or more communication end points over a network that occur within a network connection. Several sessions can use the same network connection, and sessions may span multiple individual connections in parallel or in series.
In this specification, the term “client” refers to a computer's general role as a requester of data or services, and the term “server” refers to a computer's role as a provider of data or services. In general, it is possible that a computer can act as a client, requesting data or services in one transaction and act as a server, providing data or services in another transaction, thus changing its role from client to server or vice versa.
The following briefly describes the embodiments of the invention in order to provide a basic understanding of some aspects of the invention. This brief description is not intended as an extensive overview. It is not intended to identify key or critical elements, or to delineate or otherwise narrow the scope. Its purpose is merely to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Briefly stated, embodiments are directed towards managing persistence of network traffic using deep packet inspections of network response packets from an application server. In one embodiment, the network packets are associated with SIP messages. However, the invention is not so limited, and the network packets may also be associated with other networking protocols, including, but not limited to Hypertext Transfer Protocol (HTTP), Network News Transfer Protocol (NNTP), or the like. Moreover, the network packets may further employ UDP, TCP, Stream Control Transmission Protocol (SCTP), or the like. Thus, embodiments of the invention may be viewed as enabling server response based persistence that is network protocol agnostic.
In one embodiment, a traffic management device (TMD) is interposed between client devices and a plurality of application servers. Messages between the client devices and application servers are received through the TMD. When a message is received from a client device a deep packet inspection may be performed that is directed towards examining data within one or more of layers 4 or above within the Open Systems Interconnection (OSI)'s reference model (which is described in more detail in ISO 7498:1984 Open Systems Interconnection—Basic Reference Model, which is available through the International Organization for Standardization), and which is incorporated herein by reference.
If the deep packet inspection detects a defined key value pair that includes a session identifier, the session identifier is then employed to determine to which application server to send the message. If the defined key value pair is not detected then, the message is sent to one of the application servers using a load balancing mechanism to select the application server.
When a response is received from the application server, deep packet inspection is performed to extract the session identifier. In addition, an identifier of the application server is also obtained. The session identifier is then mapped to the application server identifier and saved in a TMD persist table to ensure that subsequent messages received with the same session identifier persists to the same application server.
Illustrative Operating Environment
As shown in the figure, system 100 includes client devices 102-104, network 105, proxy cluster 110, and SIP application service (SAS) cluster 120. Proxy cluster 110 further includes a plurality of proxy servers (PS) 111-113. SAS cluster 120 further includes a plurality of SAS servers 121-123. Client devices 102-104 are configured to communicate with proxy cluster 110 through network 105. Proxy cluster 110 is in communication with and enables client devices 102-104 to communicate with SAS cluster 120. Although not shown, a network similar to network 105 may be interposed between proxy cluster 110 and SAS cluster 120.
Generally, client devices 102-104 may include virtually any computing device capable of connecting to another computing device and receiving information. In one embodiment, client devices 102-104 may sometimes be called User Agent Clients (UAC). In any event, such devices may also include portable devices such as, cellular telephones, smart phones, display pagers, radio frequency (RF) devices, infrared (IR) devices, Personal Digital Assistants (PDAs), handheld computers, wearable computers, tablet computers, integrated devices combining one or more of the preceding devices, and the like. Client devices 102-104 may also include other computing devices, such as personal computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network devices, and the like. As such, client devices 102-104 may range widely in terms of capabilities and features. For example, a client device configured as a cell phone may have a numeric keypad and a few lines of monochrome LCD display on which only text may be displayed.
Client devices 102-104 also may include at least one client application that is configured to receive content from another computing device, such as from one or more of SAS servers 121-123. The client application may include a capability to provide and receive textual content, graphical content, audio content, alerts, messages, and the like. Moreover, client devices 102-104 may be further configured to communicate a message, such as through a Short Message Service (SMS), Multimedia Message Service (MMS), instant messaging (IM), internet relay chat (IRC), mIRC, Jabber, and the like, between another computing device, and the like.
In another example, a web-enabled client device may have a touch sensitive screen, a stylus, and several lines of color LCD display in which both text and graphics may be displayed. Moreover, the web-enabled client device may include a browser application enabled to receive and to send wireless application protocol messages (WAP), and/or wired application messages, and the like. In one embodiment, the browser application is enabled to employ HyperText Markup Language (HTML), Dynamic HTML, Handheld Device Markup Language (HDML), Wireless Markup Language (WML), WMLScript, JavaScript, EXtensible HTML (xHTML), Compact HTML (CHTML), and the like, to display and send a message.
In one embodiment, client devices 102-104 may request and/or receive multimedia communications, including, but not limited to voice, video calls, video conferencing, streaming of multimedia, online gaming, or the like, over network 105. In one embodiment, client devices 102-104 might employ a Session Initiation Protocol (SIP), or the like, to enable such communications to be set up and/or torn down. SIP is described in more detail in RFC 3261, which is available through the IETF's SIP Working Group, and is incorporated herein by reference. Briefly, SIP is a transport independent protocol that may employ UDP, TCP, SCTP, or the like, to enable a signaling portion of a multimedia communication session. SIP is typically employed in conjunction with other protocols that might provide the data content, including, but not limited to Real Time Protocol (RTP), or the like.
Network 105 is configured to couple one computing device with another computing device. Network 105 may be enabled to employ any form of computer readable media for communicating information from one electronic device to another. Also, network 105 can include the Internet in addition to local area networks (LANs), wide area networks (WANs), direct connections, such as through a universal serial bus (USB) port, other forms of computer-readable media, or any combination thereof. On an interconnected set of LANs, including those based on differing architectures and protocols, a router acts as a link between LANs, enabling messages to be sent from one to another. Also, communication links within LANs typically include twisted wire pair or coaxial cable, while communication links between networks may utilize analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communications links known to those skilled in the art. Furthermore, remote computers and other related electronic devices could be remotely connected to either LANs or WANs via a modem and temporary telephone link.
Network 105 may further include any of a variety of wireless sub-networks that may further overlay stand-alone ad-hoc networks, and the like, to provide an infrastructure-oriented connection. Such sub-networks may include mesh networks, Wireless LAN (WLAN) networks, cellular networks, and the like. Network 105 may also include an autonomous system of terminals, gateways, routers, and the like connected by wireless radio links, and the like. These connectors may be configured to move freely and randomly and organize themselves arbitrarily, such that the topology of network 105 may change rapidly.
Network 105 may further employ a plurality of access technologies including 2nd (2G), 2.5, 3rd (3G), 4th (4G) generation radio access for cellular systems, WLAN, Wireless Router (WR) mesh, and the like. Access technologies such as 2G, 3G, and future access networks may enable wide area coverage for mobile devices with various degrees of mobility. For example, network 105 may enable a radio connection through a radio network access such as Global System for Mobile communication (GSM), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (WCDMA), CDMA2000, Universal Mobile Telecommunications System (UMTS), and the like. In essence, network 105 may include virtually any wired and/or wireless communication mechanisms by which information may travel between one computing device and another computing device, network, and the like.
Additionally, communication media typically embodies computer-readable instructions, data structures, program modules, or other transport mechanism and includes any information delivery media. By way of example, communication media includes wired media such as twisted pair, coaxial cable, fiber optics, wave guides, and other wired media and wireless media such as acoustic, RF, infrared, and other wireless media.
As shown in
As such, proxy servers 111-113 may be configured to communicate with each other and/or to provide failover between each other. Moreover data stored by one of proxy servers 111-113 might be made available to the other proxy servers 111-113. For example, in one embodiment, data indicating to which one of SAS servers 121-123 a client message is sent, might be stored by one of proxy servers 111-113 and made available to the other proxy servers upon request.
Devices that may operate as proxy servers 111-113 include but are not limited to personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, or the like.
SAS servers 121-123 are configured and arranged to provide support to various IMS applications, including, but not limited to voice, video calls, video conferencing, streaming of multimedia, online gaming, or the like. In one embodiment, SAS servers 121-123 may be known as User Application Servers (UAS). In any event, SAS servers 121-123 may employ a variety of networking protocols to provide support for such applications including, but not limited to SIP, RTP, or the like.
Devices that may operate as SAS servers 121-123 include but are not limited to personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, or the like.
As shown, in one embodiment, SAS servers 121-123 may be configured to receive messages from one of proxy servers 111-113 that was received from one of client devices 102-104. Moreover, SAS servers 121-123 may provide a response to the received message through proxy servers 111-113. However, traditional SAS servers may also initiate messages. Such messages might, for example, be an invite to various client devices, such as client devices 102-104, to join a multimedia session, such as an IM session, a video conferencing session, or the like. In traditional implementations of SAS servers 121-123, such communications may be sent directly towards one or more of client devices 102-104, and thus, not be sent through proxy cluster 110. As such, proxy cluster 110 might be unable to manage such messages, including providing persistence of a session across SAS servers 121-123.
Moreover, typical proxy servers 111-113 are not configured to examine application layers of a message to determine information that may be useable to enable persistence of a session to a SAS server. While some implementations of proxy servers 111-113 attempt to employ headers to manage persistence, such network headers may not be available with some protocols, such as FTP, or the like. Other implementations of proxy servers 111-113 attempt to manage persistence using network addresses within a message. However, when failover of a network device occurs, whether it be a proxy server and/or a SAS server, such persistence information based on network addresses are often lost. Moreover, when a message is sent from a SAS server, the proxy servers 111-113 may be unable to obtain sufficient data to determine which incoming messages from client devices correspond to the outbound message.
Thus,
As shown in the figure, system 200 includes network 105 which is in communication with and enables communication between client devices 102-104 and Traffic Management Device (TMD) 222. TMD 222 is in further communication with Application Servers (AS) 221-223. In one embodiment, AS 221-223 might be configured and arranged within AS cluster 220.
Client devices 102-104 are configured and arranged to be substantially similar to client devices 102-104 of
AS servers 221-223 include virtually any network device that may be configured and arranged to provide a variety of application services for use by one or more of client devices 102-104. Such application services include but are not limited to multimedia applications, such as voice, video calls, video conferencing, streaming of multimedia, online gaming; as well as HTTP applications and/or other web based application, FTP applications, database applications, or the like. Devices that may operate as AS servers 221-223 include but are not limited to personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, or the like.
Moreover, at least one of AS servers 221-223 may provide at least one application service different from that provided by another of AS servers 221-223. That is, for example, AS 221 might provide a database service, while AS 222 might provide VOIP services, while AS 223 might provide text messaging services. However, the invention is not limited to this non-exhaustive example, and other configurations may be employed. Moreover, in one embodiment, each of AS servers 221-223 might still employ SIP to perform session initiations and tear-down activities.
In one embodiment, one or more of AS servers 221-223 might be configured and arranged to operate as a failover or back up network device to another one or more of AS servers 221-223. That is should one of AS servers 221-223 fail, another network device may be configured and arranged to take over the services of the failed device.
Each of AS servers 221-223 may be identified via any of a variety of identifiers, including, but not limited to an IP address, a port number, or other network address or combination of IP address and port number, or even via a unique name.
In one embodiment, AS servers 221-223 may be configured to track and/or otherwise manage communication sessions. In one embodiment, AS servers 221-223 may identify a particular session by inserting data within a communication that identifies a session. For example, in one embodiment, AS servers 221-223 using a SIP message might provide a session identifier that might take a form of a key value pair. One example of a key value pair useable for SIP messaging is described in more detail below in conjunction with
One embodiment, of TMD 222 is described in more detail below in conjunction with
TMD 222 may receive messages from one of client devices 102-104 that is to be directed to one of AS servers 221-223. TMD 222 may inspect the messages to detect whether there is any application layer data indicating that the messages are associated with a pre-existing session. In one embodiment, TMD 222 might use an inspection engine component to perform deep packet inspection of data at an OSI layer 4 and/or above to detect a unique identifier associated with the pre-existing session. If none is detected, TMD 222 may select one of AS servers 221-223 to which the messages are to be forwarded.
TMD 222 may also receive a message from one of AS servers 221-223 that is to be directed to one or more of client devices 102-104. TMD 222 may inspect the message to detect a unique identifier associated with a session. In one embodiment, TMD 222 might use the inspection engine component to perform deep packet inspection of data at an OSI layer 4 and/or above to detect the unique identifier associated with the pre-existing session. TMD 222 may further examine the message to obtain an identifier for the AS servers 221-223 sending the received message. TMD 222 may then map the unique identifier for the session to the AS server identifier. Such mapping may be saved in one or more TMD persist tables. Such TMD persist table, is not limited to a table format, however, and other formats, and/or mapping structures may also be used, including but not limited to a file, directory structure, a database, a spreadsheet, a script, a program, or the like. As mentioned earlier, system 200 of
In one embodiment, TMD 222 may also be configured to modify, rewrite, and/or otherwise transcode an identifier detected within a message. TMD 222 may further modify the TMD persist table to reflect such modification. Such modification of a detected identifier may be performed for example, based on a detected health monitoring condition, another rule, a communication from another network device, or the like. Such examples are non-exhaustive, however, and other reasons for modifying a detected identifier may also arise.
In one embodiment, if a failover of one of AS servers 221-223 is detected, TMD 222 or another network device may update the TMD persist table by replacing the identifier of the failed AS server with an identifier of a backup AS server. In this manner, the backup AS server using other session state information may transparently assume the role of the failed AS server.
Devices that may operate as TMD 222 include but are not limited to personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, network switches, routers, network appliances, or the like.
Illustrative Network Device
Network device 300 includes at least one central processing unit (cpu) 312, video display adapter 314, and a mass memory, all in communication with each other via buss 322. The mass memory generally includes RAM 316, ROM 332, and one or more permanent mass storage devices, such as hard disk drive 328, tape drive, optical drive, and/or floppy disk drive. The mass memory stores operating system 320 and bios 318 for controlling the operation of network device 300
As illustrated in
The mass memory 316, 326, 328, and 332 described herein and shown in
The mass memory may also store other types of program code and data as applications 350, which may be are loaded into mass memory and run on operating system 320. Examples of applications 350 may include email client/server programs, routing programs, schedulers, web servers, calendars, database programs, and any other type of application program. Applications 350 may also include traffic manager 356. In one embodiment, traffic manager 356 may include a persist manager 358. However, the invention is not so limited. For example, in another embodiment, persist manager 358 may be configured as a separate component from traffic manager 356.
In one embodiment, ram 316 may include data store 352; however, data store 352 may also reside completely, or in part, in another mass memory storage media, including, but not limited to a storage device readable by cd-rom/dvd-rom drive 326, on hard disk drive 328, or even on a computer readable storage medium on another network device and possibly accessible by network device 300 through such as network interface unit 310.
Data store 352 may include virtually any mechanism configured and arranged to store data and/or computer readable instructions. As such, data store 352 may be configured to store and/or otherwise manage a TMD persist table useable to manage mappings of session identifiers or the like, to an identifier of an application server to enable persistence of a session to a particular application server (that is until the application server is replaced by another application server for any of a variety of reasons, including, but not limited to a failover).
Traffic manager 356 is configured and arranged to include any component configured to manage network traffic between network devices. In one embodiment, traffic manager 356 may receive messages in the form of network packets. In one embodiment, the message may span multiple packets. In such instance, traffic manager 356 is configured to recognize packets that are associated with each other and to manage the packets as a flow of related packets.
In one embodiment, traffic manager 356 might determine that a message received from a network device is directed towards one application server within a plurality of application servers. Traffic manager 356 might determine if the message includes information that is useable to direct the message to an application server to ensure server persistence of messages associated with a same session, unique identifier, or the like. If traffic manager 356 determines that the message is currently unassociated with a session, traffic manager 356 may provide the message to an application server based on any of a plurality of load-balancing metrics, including network traffic, network topology, capacity of a server, characteristic of the request, a round-robin metric, or the like.
In one embodiment, traffic manager 356 might employ persist manager 358 to manage server response based persistence of messages. That is, persist manager 358 is configured to examine messages to detect application layer data useable to manage the TMD persist table. In one embodiment persist manager 358 may perform deep packet inspections using an inspection engine component, or the like.
Although persist manager 358 is illustrated as a component within traffic manager 356, the invention is not so limited. For example, persist manager 358 might be a distinct component from traffic manger 356 that is called by traffic manager 356 as appropriate to perform server response based persistence.
Network device 300 may also include an SMTP handler application for transmitting and receiving e-mail, an HTTP handler application for receiving and handing HTTP requests, a RTP handler application for receiving and handing RTP requests, an SIP requests and/or responses, and an HTTPS handler application for handling secure connections. The HTTPS handler application may initiate communication with an external application in a secure fashion. Moreover, network device 300 may further include applications that support virtually any secure connection, including TLS, TTLS, EAP, SSL, IPSec, and the like.
Network device 300 may also include input/output interface 324 for communicating with external devices, such as a mouse, keyboard, scanner, or other input/output devices not shown in
In one embodiment, the network device 300 may include at least one Application Specific Integrated Circuit (ASIC) chip (not shown). The ASIC chip can include logic that performs some or all of the actions of network device 300. For example, in one embodiment, the ASIC chip can perform a number of packet processing functions for incoming and/or outgoing packets. In one embodiment, the ASIC chip can perform at least a portion of the logic to enable the operation of traffic manager 356, persist manager 358, or any other component.
In one embodiment, network device 300 can further include one or more field-programmable gate arrays (FPGA) (not shown), instead of, or in addition to, the ASIC chip. A number of functions of network device 300 can be performed by the ASIC chip, the FPGA, by CPU 312 with instructions stored in memory, or by any combination of the ASIC chip, FPGA, and a CPU.
Generalized Operation
The operation of certain aspects of the invention will now be described with respect to
Process 400 begins, after a start block, at block 402, where a message is received from a client device that is to be directed to an application server (AS). Processing continues next to block 404, where the message is parsed using deep packet inspections. As noted, the deep packet inspection is performed to access data within one or more of layers 4 or above of the OSI reference model. Such deep packet inspection may be performed by inspecting data that may span more than one received network packet, or more reside completely within a single network packet. Moreover, such deep packet inspection may employ a variety of mechanisms for searching the received message for specific ‘application layer’ data. For example, one embodiment of a use of a universal inspection engine using a set of iRule syntax that may be useable with appropriate modifications is described in more detail F5, Networks, Inc.'s document entitled “BIG-IP Solutions Guide v4.6.2: Using the Universal Inspection Engine,” which is incorporated herein by reference. Such universal inspection engine might be a component, for example, within persist manager 358 of
In the above non-limiting example, the deep packet inspection rule might examine SIP data within the message for an existing session identifier indicating that the incoming message is associated with an existing application session. If the field includes a session identifier, a value for the session-identifier may then be extracted. That is, if the client message is associated with a session that is already balanced across the plurality of servers, then extract the session identifier that is useable to indicate which server to send the message, such that the session persists with the selected server. The invention is not limited to SIP data, however, and an appropriate implementation of the above non-exhaustive example, might enable examination of other types of application data, including, but not limited to HTTP data, TCP data, UDP data, or the like. For example, in another embodiment, a deep packet inspection at a transport layer might be performed using:
In any event, processing flows to decision block 406, where a determination is made whether the deep packet inspection determined that persistence across the plurality of servers is currently established. If so, then processing flows to block 408; otherwise, processing continues to block 412.
At block 408, the session-identifier that may be extracted at block 404 is used to determine which persistent application server (AS) the session identifier is mapped to. It should be noted at this juncture, that if an application server fails for any of a variety of reasons, the sessions managed by that application server may be failed over to another application server. By modifying a TMD persist table that maps the session identifiers to application servers, such fail overs may be managed transparently to process 400. That is, through another process, the TMD persist table might readily be revised to replace the failed application server's identifier with the replacement application server's identifier. Then at block 408, examining the same TMD persist table may be performed without a need to consult additional tables, or the like, due to failover situations.
In any event, using the session identifier, the TMD persist table may be examined to obtain an identifier of the application server for which to persist the session. Moving to block 410, the message may then be forwarded to the application server based on the obtained identifier. Processing then continues to block 416.
At block 412, it was determined that the message from the client device is not currently associated with an existing session. This may be determined, for example, because the message application data did not include a session identifier. As such, at block 412, any of a variety of load balancing mechanisms may be used to select an application server from among a plurality of application servers. Such load balancing mechanisms, include but are not limited to network traffic, network topology, capacity of a server, content requested, round robin, and/or a host of other traffic distribution mechanisms. Processing moves next to block 414, where the message is forwarded to the selected application server.
At block 416, a response is received from one of the application servers. A deep packet inspection is then performed on the received response. Similar to above, the response is parsed to examine and extract a session identifier from within layer 4 or above data within the response. Because the response is from an application server, it is expected that the response includes a session identifier. This is because the application servers are configured and arranged to construct a response that includes session identifiers. Thus, processing continues to decision block 420.
At decision block 420 a determination is made whether the response is associated with an established session that is currently mapped to persist with the sending application server. This may be readily determined by employing the extracted session identifier from block 418 to search the TMD persist table. If the session identifier is found in the TMD persist table then the session is determined to already for mapped. Otherwise, mapping is to be performed. Thus, if the session identifier is found in the TMD persist table, processing flows to block 424; otherwise, processing branches to block 422.
At block 422, an identifier for the sending application server is obtained from the response. Such identifier may include, but is not limited to an IP source address, port source number, some other network identifier, and/or combination of network identifiers, a server name, or the like. The obtained server identifier is then mapped to the extracted session identifier and placed into the TMD persist table. It may be noted at this point, that removal of server persist mappings from the TMD persist table may occur based on a variety of criteria, including, but not limited to a defined time period where the session identifier is not received from an application server or a client device, a message sent from another component that indicates that the session is no longer to persist, or the like. Processing then flows to block 424.
At block 424, the response is forwarded to the client. It is noted that, in one embodiment, the response may be forwarded without adding information to the response. By avoiding adding information to the response, the size of the response doesn't change. This may be relevant in at least some protocols. For example, if the application protocol is SIP, it may employ either TCP or UDP as its underlying transport layer protocol. When the application server sends the response it may examine a size of the response to determine whether to use TCP or UDP. If the size is below one value, the application server may employ UDP, and if it is above the value, then the application server employs TCP. Thus, should another component, such as the TMD, a proxy device, or the like, add information to the response, such as might be useable to track the response, then the size of the response could change sufficiently to force a switch in the underlying transport layer protocol. However, such as switch would be unknown by the application server, which may then result in problems for the application server. Thus, one embodiment is directed towards employing existing information within the response to manage persistence rather than attempting to add information. However, in another embodiment, an IP address, port number, or the like, may be modified at block 424, such as might arise during a network address and/or port translation, or the like.
In any event, processing then proceeds to decision block 426, where a determination is made whether there are more messages to be managed. If so, processing loops back to block 402 to continue process 400; otherwise, processing may return to a calling process to perform other actions.
Process 500 begins, after a start block, at block 502, where a message is received from an application server (AS) that is directed to a plurality of client devices. In one embodiment, the message might actually be a plurality of messages, one per client device. Thus, at block 502, a plurality of messages might actually be received, in one embodiment, where each message is directed to one of a plurality of different client devices. In another embodiment, the message might be sent using a broadcasting protocol. In any event, processing flows to block 504, where the message(s) are parsed using deep packet inspection as described above to extract a session identifier.
Referring to
Processing continues next to decision block 506, where a determination is made whether persistence to the application server is currently established. Such determination may be made by examining the TMD persist table using the session identifier to determine whether an entry exists. If so, then, processing flows to block 510; otherwise, processing flows to block 508.
At block 508, the TMD persist table is updated by adding an entry for the extracted session identifier, which is mapped to an identifier associated with the application server, such as a network address, a server name, or the like. Processing flows next to block 510.
At block 510, the message(s) are forwarded to the plurality of client devices. Processing then continues to decision block 512, where a determination is made whether a response from a client device is received. If so, processing continues to block 514; otherwise, processing loops to decision block 520.
At block 514, the client device's message is parsed using deep packet inspection to extract the session identifier within the application layer (e.g., per the TCP/IP reference model). Although not illustrated here, if the client message does not include a session identifier, it may be assumed that the message is new, or not part of the responses to the application server's message. In that instance, the message may be sent to a selected application server within the plurality of application servers based on any of a variety of possible load balancing mechanisms, such as described above in conjunction with process 400.
However, if at block 514, a session identifier is detected and extracted, then processing continues to block 516, where the TMD persist table is searched to find the mapping of the session identifier to a persistent application server. Processing continues to block 518, where the message is then forwarded to the identified persistent application server. Thus, the mapping enables actions to persistently refer each incoming message having the same session identifier or other unique identifier to the application server that is mapped to the session identifier.
Referring briefly, again to client response message 604 of
Processing flows next to decision block 520, where a determination is made whether there are to be expected more client responses. If so, processing may loop back to decision block 512; otherwise, processing may return to a calling process to perform other actions.
It will be understood that each block of the flowchart illustration, and combinations of blocks in the flowchart illustration, can be implemented by computer program instructions. These program instructions may be provided to a processor to produce a machine, such that the instructions, which execute on the processor, create means for implementing the actions specified in the flowchart block or blocks. The computer program instructions may be executed by a processor to cause a series of operational steps to be performed by the processor to produce a computer implemented process such that the instructions, which execute on the processor to provide steps for implementing the actions specified in the flowchart block or blocks.
Accordingly, blocks of the flowchart illustration support combinations of means for performing the specified actions, combinations of steps for performing the specified actions and program instruction means for performing the specified actions. It will also be understood that each block of the flowchart illustration, and combinations of blocks in the flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified actions or steps, or combinations of special purpose hardware and computer instructions.
The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
This application claims the benefit of U.S. Provisional Application Ser. No. 61/057,792 filed on May 30, 2008, entitled “Persistence Based On Server Response In An IP Multimedia Subsystem (IMS),” the benefit of the earlier filing date of which is hereby claimed under 35 U.S.C. §119 (e) and further incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
3689872 | Sieracki | Sep 1972 | A |
3768726 | Hale et al. | Oct 1973 | A |
4747050 | Brachtl | May 1988 | A |
5276444 | McNair | Jan 1994 | A |
5319638 | Lin | Jun 1994 | A |
5481720 | Loucks et al. | Jan 1996 | A |
5511122 | Atkinson | Apr 1996 | A |
5553242 | Russell et al. | Sep 1996 | A |
5610905 | Murthy et al. | Mar 1997 | A |
5749053 | Kusaki et al. | May 1998 | A |
5825890 | Elgamal et al. | Oct 1998 | A |
5898837 | Guttman et al. | Apr 1999 | A |
5941988 | Bhagwat et al. | Aug 1999 | A |
6023722 | Colyer | Feb 2000 | A |
6052785 | Lin et al. | Apr 2000 | A |
6061454 | Malik et al. | May 2000 | A |
6088451 | He et al. | Jul 2000 | A |
6105133 | Fielder et al. | Aug 2000 | A |
6170057 | Inoue et al. | Jan 2001 | B1 |
6182139 | Brendel | Jan 2001 | B1 |
6223287 | Douglas et al. | Apr 2001 | B1 |
6226687 | Harriman et al. | May 2001 | B1 |
6253226 | Chidambaran et al. | Jun 2001 | B1 |
6263447 | French et al. | Jul 2001 | B1 |
6298380 | Coile et al. | Oct 2001 | B1 |
6367009 | Davis et al. | Apr 2002 | B1 |
6370584 | Bestavros et al. | Apr 2002 | B1 |
6393465 | Leeds | May 2002 | B2 |
6411986 | Susai et al. | Jun 2002 | B1 |
6434618 | Cohen et al. | Aug 2002 | B1 |
6446204 | Pang et al. | Sep 2002 | B1 |
6463474 | Fuh et al. | Oct 2002 | B1 |
6584567 | Bellwood et al. | Jun 2003 | B1 |
6590588 | Lincke et al. | Jul 2003 | B2 |
6629163 | Balassanian | Sep 2003 | B1 |
6643701 | Aziz et al. | Nov 2003 | B1 |
6650640 | Muller et al. | Nov 2003 | B1 |
6654701 | Hatley | Nov 2003 | B2 |
6668327 | Prabandham et al. | Dec 2003 | B1 |
6674717 | Duong-van et al. | Jan 2004 | B1 |
6681327 | Jardin | Jan 2004 | B1 |
6691232 | Wood et al. | Feb 2004 | B1 |
6697363 | Carr | Feb 2004 | B1 |
6704789 | Ala-Laurila et al. | Mar 2004 | B1 |
6718388 | Yarborough et al. | Apr 2004 | B1 |
6754662 | Li | Jun 2004 | B1 |
6754831 | Brownell | Jun 2004 | B2 |
6760782 | Swales | Jul 2004 | B1 |
6763384 | Gupta et al. | Jul 2004 | B1 |
6766373 | Beadle et al. | Jul 2004 | B1 |
6768716 | Abel et al. | Jul 2004 | B1 |
6768726 | Dorenbosch et al. | Jul 2004 | B2 |
6789203 | Belissent | Sep 2004 | B1 |
6792461 | Hericourt | Sep 2004 | B1 |
6799276 | Belissent | Sep 2004 | B1 |
6829238 | Tokuyo et al. | Dec 2004 | B2 |
6831923 | Laor et al. | Dec 2004 | B1 |
6842462 | Ramjee et al. | Jan 2005 | B1 |
6842860 | Branstad et al. | Jan 2005 | B1 |
6845449 | Carman et al. | Jan 2005 | B1 |
6853988 | Dickinson et al. | Feb 2005 | B1 |
6854117 | Roberts | Feb 2005 | B1 |
6895443 | Aiken | May 2005 | B2 |
6915426 | Carman et al. | Jul 2005 | B1 |
6928082 | Liu et al. | Aug 2005 | B2 |
6934260 | Kanuri | Aug 2005 | B1 |
6934848 | King et al. | Aug 2005 | B1 |
6950434 | Viswanath et al. | Sep 2005 | B1 |
6954780 | Susai et al. | Oct 2005 | B2 |
6957272 | Tallegas et al. | Oct 2005 | B2 |
6976168 | Branstad et al. | Dec 2005 | B1 |
6990592 | Richmond et al. | Jan 2006 | B2 |
7010690 | Hanna et al. | Mar 2006 | B1 |
7010691 | Wheeler et al. | Mar 2006 | B2 |
7023804 | Younes et al. | Apr 2006 | B1 |
7047315 | Srivastava | May 2006 | B1 |
7051330 | Kaler et al. | May 2006 | B1 |
7068640 | Kakemizu et al. | Jun 2006 | B2 |
7069438 | Balabine et al. | Jun 2006 | B2 |
7092727 | Li et al. | Aug 2006 | B1 |
7103045 | Lavigne et al. | Sep 2006 | B2 |
7113993 | Cappiello et al. | Sep 2006 | B1 |
7116668 | Sivalingham | Oct 2006 | B2 |
7127524 | Renda et al. | Oct 2006 | B1 |
7139792 | Mishra et al. | Nov 2006 | B1 |
7139811 | Lev Ran et al. | Nov 2006 | B2 |
7181493 | English et al. | Feb 2007 | B2 |
7185360 | Anton, Jr. et al. | Feb 2007 | B1 |
7187771 | Dickinson et al. | Mar 2007 | B1 |
7215637 | Ferguson et al. | May 2007 | B1 |
7231445 | Aweya et al. | Jun 2007 | B1 |
7231657 | Honarvar et al. | Jun 2007 | B2 |
7254639 | Siegel et al. | Aug 2007 | B1 |
7260724 | Dickinson et al. | Aug 2007 | B1 |
7272651 | Bolding et al. | Sep 2007 | B1 |
7280471 | Rajagopal et al. | Oct 2007 | B2 |
7287077 | Haugh et al. | Oct 2007 | B2 |
7313627 | Noble | Dec 2007 | B1 |
7315513 | McCann et al. | Jan 2008 | B2 |
7321926 | Zhang et al. | Jan 2008 | B1 |
7350229 | Lander | Mar 2008 | B1 |
7362762 | Williams, Jr. et al. | Apr 2008 | B2 |
7366755 | Cuomo et al. | Apr 2008 | B1 |
7421515 | Marovich | Sep 2008 | B2 |
7428637 | Billman et al. | Sep 2008 | B1 |
7463637 | Bou-Diab et al. | Dec 2008 | B2 |
7484011 | Agasaveeran et al. | Jan 2009 | B1 |
7496750 | Kumar | Feb 2009 | B2 |
7571313 | Messerges et al. | Aug 2009 | B2 |
7586851 | Panigrahy et al. | Sep 2009 | B2 |
7596137 | Bennett | Sep 2009 | B2 |
7619983 | Panigrahy | Nov 2009 | B2 |
7623468 | Panigrahy et al. | Nov 2009 | B2 |
7624436 | Balakrishnan et al. | Nov 2009 | B2 |
7706778 | Lowe | Apr 2010 | B2 |
7711857 | Balassanian | May 2010 | B2 |
7876704 | Bims et al. | Jan 2011 | B1 |
7953974 | Yamamura et al. | May 2011 | B2 |
8009566 | Zuk et al. | Aug 2011 | B2 |
8027637 | Bims | Sep 2011 | B1 |
8412778 | Leeds | Apr 2013 | B2 |
8584131 | Wong et al. | Nov 2013 | B2 |
9294444 | O'Hare et al. | Mar 2016 | B2 |
20010001877 | French et al. | May 2001 | A1 |
20010032254 | Hawkins | Oct 2001 | A1 |
20010049741 | Skene et al. | Dec 2001 | A1 |
20010049785 | Kawan et al. | Dec 2001 | A1 |
20020016777 | Seamons et al. | Feb 2002 | A1 |
20020025036 | Sato | Feb 2002 | A1 |
20020055980 | Goddard | May 2002 | A1 |
20020057678 | Jiang et al. | May 2002 | A1 |
20020059428 | Susai et al. | May 2002 | A1 |
20020073223 | Darnell et al. | Jun 2002 | A1 |
20020076054 | Fukutomi et al. | Jun 2002 | A1 |
20020085587 | Mascolo | Jul 2002 | A1 |
20020091932 | Shimizu et al. | Jul 2002 | A1 |
20020107903 | Richter et al. | Aug 2002 | A1 |
20020116646 | Mont et al. | Aug 2002 | A1 |
20020116647 | Mont et al. | Aug 2002 | A1 |
20020126671 | Ellis et al. | Sep 2002 | A1 |
20020133586 | Shanklin et al. | Sep 2002 | A1 |
20020144149 | Hanna et al. | Oct 2002 | A1 |
20020147916 | Strongin et al. | Oct 2002 | A1 |
20020169980 | Brownell | Nov 2002 | A1 |
20030018827 | Guthrie et al. | Jan 2003 | A1 |
20030043755 | Mitchell | Mar 2003 | A1 |
20030050974 | Mani-Meitav et al. | Mar 2003 | A1 |
20030061256 | Mathews et al. | Mar 2003 | A1 |
20030084289 | Watanabe | May 2003 | A1 |
20030097484 | Bahl | May 2003 | A1 |
20030097559 | Shimizu et al. | May 2003 | A1 |
20030097593 | Sawa et al. | May 2003 | A1 |
20030105960 | Takatori et al. | Jun 2003 | A1 |
20030110230 | Holdsworth et al. | Jun 2003 | A1 |
20030115142 | Brickell et al. | Jun 2003 | A1 |
20030126029 | Dastidar et al. | Jul 2003 | A1 |
20030126437 | Wheeler et al. | Jul 2003 | A1 |
20030126439 | Wheeler et al. | Jul 2003 | A1 |
20030139183 | Rantalainen | Jul 2003 | A1 |
20030140230 | de Jong et al. | Jul 2003 | A1 |
20030154406 | Honarvar et al. | Aug 2003 | A1 |
20030163739 | Armington et al. | Aug 2003 | A1 |
20030169859 | Strathmeyer et al. | Sep 2003 | A1 |
20030172090 | Asunmaa et al. | Sep 2003 | A1 |
20030172164 | Coughlin | Sep 2003 | A1 |
20030177267 | Orava et al. | Sep 2003 | A1 |
20030200433 | Stirbu | Oct 2003 | A1 |
20030217171 | Von Stuermer et al. | Nov 2003 | A1 |
20030223413 | Guerrero | Dec 2003 | A1 |
20030226015 | Neufeld et al. | Dec 2003 | A1 |
20040006638 | Oberlander et al. | Jan 2004 | A1 |
20040008629 | Rajagopal et al. | Jan 2004 | A1 |
20040008664 | Takahashi et al. | Jan 2004 | A1 |
20040008728 | Lee | Jan 2004 | A1 |
20040010473 | Hsu et al. | Jan 2004 | A1 |
20040034773 | Balabine et al. | Feb 2004 | A1 |
20040037322 | Sukonik et al. | Feb 2004 | A1 |
20040039909 | Cheng | Feb 2004 | A1 |
20040049634 | Nomura et al. | Mar 2004 | A1 |
20040049687 | Orsini et al. | Mar 2004 | A1 |
20040052257 | Abdo et al. | Mar 2004 | A1 |
20040083394 | Brebner et al. | Apr 2004 | A1 |
20040088585 | Kaler et al. | May 2004 | A1 |
20040098619 | Shay | May 2004 | A1 |
20040098620 | Shay | May 2004 | A1 |
20040107360 | Herrmann et al. | Jun 2004 | A1 |
20040107364 | Shin | Jun 2004 | A1 |
20040148425 | Haumont et al. | Jul 2004 | A1 |
20040167984 | Herrmann | Aug 2004 | A1 |
20040177276 | MacKinnon et al. | Sep 2004 | A1 |
20040193513 | Pruss et al. | Sep 2004 | A1 |
20040213612 | Hanaoka | Oct 2004 | A1 |
20040225810 | Hiratsuka | Nov 2004 | A1 |
20040225880 | Mizrah | Nov 2004 | A1 |
20040228360 | Bae et al. | Nov 2004 | A1 |
20040255243 | Vincent | Dec 2004 | A1 |
20040260657 | Cockerham | Dec 2004 | A1 |
20040268152 | Xia et al. | Dec 2004 | A1 |
20050015594 | Ashley et al. | Jan 2005 | A1 |
20050021957 | Gu | Jan 2005 | A1 |
20050021982 | Popp et al. | Jan 2005 | A1 |
20050049934 | Nakayama et al. | Mar 2005 | A1 |
20050060295 | Gould et al. | Mar 2005 | A1 |
20050063303 | Samuels et al. | Mar 2005 | A1 |
20050063307 | Samuels et al. | Mar 2005 | A1 |
20050071643 | Moghe | Mar 2005 | A1 |
20050074007 | Samuels et al. | Apr 2005 | A1 |
20050086068 | Quigley et al. | Apr 2005 | A1 |
20050091513 | Mitomo et al. | Apr 2005 | A1 |
20050108420 | Brown et al. | May 2005 | A1 |
20050125692 | Cox et al. | Jun 2005 | A1 |
20050132060 | Mo et al. | Jun 2005 | A1 |
20050135436 | Nigam et al. | Jun 2005 | A1 |
20050144278 | Atamaniouk | Jun 2005 | A1 |
20050154914 | Eguchi et al. | Jul 2005 | A1 |
20050160289 | Shay | Jul 2005 | A1 |
20050177724 | Ali et al. | Aug 2005 | A1 |
20050187979 | Christensen et al. | Aug 2005 | A1 |
20050193208 | Charrette et al. | Sep 2005 | A1 |
20050193211 | Kurose | Sep 2005 | A1 |
20050216555 | English et al. | Sep 2005 | A1 |
20050238010 | Panigrahy et al. | Oct 2005 | A1 |
20050238011 | Panigrahy | Oct 2005 | A1 |
20050238012 | Panigrahy et al. | Oct 2005 | A1 |
20050238022 | Panigrahy | Oct 2005 | A1 |
20050265235 | Accapadi et al. | Dec 2005 | A1 |
20050271048 | Casey | Dec 2005 | A1 |
20050278775 | Ross | Dec 2005 | A1 |
20060005008 | Kao | Jan 2006 | A1 |
20060020598 | Shoolman et al. | Jan 2006 | A1 |
20060026290 | Pulito et al. | Feb 2006 | A1 |
20060029062 | Rao et al. | Feb 2006 | A1 |
20060029063 | Rao et al. | Feb 2006 | A1 |
20060029064 | Rao et al. | Feb 2006 | A1 |
20060036747 | Galvin et al. | Feb 2006 | A1 |
20060037071 | Rao et al. | Feb 2006 | A1 |
20060041507 | Novack et al. | Feb 2006 | A1 |
20060053285 | Kimmel et al. | Mar 2006 | A1 |
20060062228 | Ota et al. | Mar 2006 | A1 |
20060089994 | Hayes | Apr 2006 | A1 |
20060123226 | Kumar et al. | Jun 2006 | A1 |
20060153228 | Stahl et al. | Jul 2006 | A1 |
20060156385 | Chiviendacz et al. | Jul 2006 | A1 |
20060161667 | Umesawa et al. | Jul 2006 | A1 |
20060174037 | Bernardi et al. | Aug 2006 | A1 |
20060174332 | Bauban et al. | Aug 2006 | A1 |
20060177061 | Orsini et al. | Aug 2006 | A1 |
20060195692 | Kuhlman et al. | Aug 2006 | A1 |
20060200855 | Willis | Sep 2006 | A1 |
20060227802 | Du et al. | Oct 2006 | A1 |
20060233166 | Bou-Diab et al. | Oct 2006 | A1 |
20060235973 | McBride et al. | Oct 2006 | A1 |
20060239503 | Petrovic et al. | Oct 2006 | A1 |
20060242300 | Yumoto et al. | Oct 2006 | A1 |
20060242688 | Paramasivam et al. | Oct 2006 | A1 |
20060265689 | Kuznetsov et al. | Nov 2006 | A1 |
20060276196 | Jiang et al. | Dec 2006 | A1 |
20060288404 | Kirshnan et al. | Dec 2006 | A1 |
20060291402 | Yun et al. | Dec 2006 | A1 |
20060294366 | Nadalin et al. | Dec 2006 | A1 |
20070055878 | Sandhu et al. | Mar 2007 | A1 |
20070094336 | Pearson | Apr 2007 | A1 |
20070094714 | Bauban et al. | Apr 2007 | A1 |
20070101418 | Wood et al. | May 2007 | A1 |
20070121615 | Weill et al. | May 2007 | A1 |
20070153798 | Krstulich | Jul 2007 | A1 |
20070156919 | Potti et al. | Jul 2007 | A1 |
20070162394 | Zager et al. | Jul 2007 | A1 |
20070220302 | Cline et al. | Sep 2007 | A1 |
20070250924 | Ono et al. | Oct 2007 | A1 |
20080034127 | Nishio | Feb 2008 | A1 |
20080253366 | Zuk et al. | Oct 2008 | A1 |
20080270618 | Rosenberg | Oct 2008 | A1 |
20080320582 | Chen et al. | Dec 2008 | A1 |
20090063852 | Messerges et al. | Mar 2009 | A1 |
20090077618 | Pearce et al. | Mar 2009 | A1 |
20090106433 | Knouse et al. | Apr 2009 | A1 |
20090252148 | Dolganow et al. | Oct 2009 | A1 |
20100251343 | Barrett | Sep 2010 | A1 |
Entry |
---|
Oracle Communication and Mobility Server, Aug. 2007, http://www.oracle.com/technology/products/ocms/otn—front.html, accessed May 15, 2008, 108 pgs. |
Session Initiation Protocol, http://en.wikipedia.org/w/index.php?title=Session—Initiation—Protoc . . . , accessed May 14, 2008, 5 pgs. |
IP Multimedia Subsystem, http://en.wikipedia.org/w/index.php?title=IP—Multimedia—Subsyst . . . , accessed May 15, 2008, 8 pgs. |
F5 Networks Delivers Blistering Application Traffic Management Performance and Unmatched Intelligence Via New Packet Velocity ASIC and BIG-IP Platforms, F5 Networks, Inc. Press Release dated Oct. 21, 2002, 3 pgs. |
Secure and Optimize Oracle 11i E-Business Suite with F5 Solutions, F5 Application Ready Network Guide, Oracle E-Business Suite 11i, Aug. 2007, 2 pgs. |
Using the Universal Inspection Engine, Manual Chapter: BIG-IP Solutions Guide v4.6.2: Using the Universal Inspection Engine, 2002, 8 pgs. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Aug. 15, 2012. |
Official Communication for U.S. Appl. No. 12/199,768 mailed Dec. 16, 2013. |
About Computing & Technology, “Wireless/Networking, Nagle algorithm,” visited Dec. 6, 2005, 2 pages, <http://compnetworking.about.com/od/tcpip/l/bidef—nagle.htm>. |
Acharya et al., “Scalabe Web Request Routing with MPLS,” IBM Research Report, IBM Research Division, Dec. 5, 2001, 15 pages. |
Australia's Academic and Research Network, “Programs and large MTU, Nagle algorithm,” visited Dec. 9, 2005, 3 pages, <http://www.aamet.edu.au/engineering/networkdesign/mtu/programming.html>. |
Berners-Lee, T. et al., RFC 1945, “Hypertext Transfer Protocol—HTTP/1.0,” May 1996, 60 pages. |
Berners-Lee, T. et al., “Uniform Resource Identifiers (URI): Generic Syntax,” IETF RFC 2396, Aug. 1998. |
“BIG-IPs Controller with Exclusive OneConnects Content Switching Feature Provides a Breakthrough System for Maximizing Server and Network Performance,” F5 Networks, Inc., Press Release: May 8, 2001, accessed Jun. 4, 2002, 3 pages. |
Bryhni et al., “A Comparison of Load Balancing Techniques for Scalable Web Servers” IEEE Network, Jul./Aug. 2000, pp. 58-64. |
“Consistent Hashing,” Wikipedia—the free encyclopedia, http://en.wikipedia.org/w/index.php?title=Consistent—hashing&print . . . , accessed Jul. 25, 2008, 1 page. |
“Control Plane,” Wikipedia—the free encyclopedia, http://en.wikipedia.org/w/index.php?title=Control—plane&printable=yes, accessed Jul. 31, 2008, 4 pages. |
“Editcap—Edit and/or translate the format of capture files,” ethereal.com, www.ethereal.com/docs/man-pages/editcap.1.html, accessed Apr. 15, 2004, 3 pages. |
“Ethereal—Interactively browse network traffic,” ethereal.com, www.ethereal.com/docs/man-pages/ethereal.1.html, accessed Apr. 15, 2004, 29 pages. |
“FAQ: Network Intrusion Detection Systems,” robertgraham.com, Mar. 21, 2000, www.robertgraham.com/pubs/network-intrusion-detection.html, accessed Apr. 15, 2004. |
Fielding, R. et al., “Hypertext Transfer Protocol—HTTP/1.1,” Network Working Group, RFC 2068, Jan. 1997, 152 pages. |
Fielding, R. et al., “Hypertext Transfer Protocol—HTTP/1.1,” W3 Consortium, Jun. 1999, pp. 1-176, http://www.w3.org/Protocols/rfc2616/rfc2616.html. |
Fielding, R. et al., RFC 2616, “Hypertext Transfer Protocol—HTTP/1.1,” Jun. 1999, 114 pages. |
fifi.org, “Manpage of TCP.” visited Dec. 9, 2005, 6 pages, <http://www.fifi.org/cgi-bin/man2html/usr/share/man/man7/tcp.7.gz>. |
“Forwarding Plane,” Wikipedia—the free encyclopedia, http://en.wikipedia.org/w/index.php?title=Forwarding—plane&printa . . . , accessed Jul. 31, 2008. |
Freier, A. et al., Netscape Communications Corporation, “The SSL Protocol, Version 3.0,” Mar. 1996, 60 pages. |
Hinden, R. et al., “Format for Literal IPv6 Addresses in URL's” IETF RFC 2732, Dec. 1999. |
Hochmuth, P. “F5 CacheFlow Pump Up Content-Delivery Lines,” NetworkWorld, May 4, 2001, http://www.network.com/news/2001/0507cachingonline.html, accessed Jun. 1, 2005, 3 pages. |
Jacobson, V. et al., “TCP Extensions for High Performance,” May 1992, http://www.faqs.com/rfcs/rfc1323.html. |
Kessler, G. et al., RFC 1739, “A Primer on Internet and TCP/IP Tools,” Dec. 1994, 46 pages. |
Mapp, G., “Transport Protocols—What's Wrong with TCP,” Jan. 28, 2004, LCE Lecture at http://www.ice.eng.cam.ac.uk/˜gem11,4F5-Lecture4.pdf, pp. 1-60. |
Nagle, J., RFC 896, “Congestion control in IP/TCP internetworks,” Jan. 6, 1984, 13 pages. |
“Network Management,” Wikipedia—the free encyclopedia, http://en.wikipedia.org/w/index/php?title=Network—management&pr . . . , accessed Jul. 31, 2008, 3 pages. |
“Network Sniffer,” linuxmigration.com, www.linuxmigration.com/quickref/admin/ethereal.html, accessed Apr. 15, 2004, 4 pages. |
Nielsen, H. F. et al., “Network Performance Effects of HTTP/1.1, CSS1, and PNG,” Jun. 24, 1997, W3 Consortium, http://www.w3.org/TR/NOTE-pipelining-970624$Id:pipeline.html, v 1.48 100/10/18 19:38:45 root Exp $, pp. 1-19. |
OpenSSL, visited Apr. 12, 2006, 1 pg., <www.openssl.org>. |
Paxson, V., RFC 2525, “Known TCP Implementation Problems,” Mar. 1999, 61 pages. |
Postel, J., “Transmission Control Protocol,” Sep. 1981, Information Sciences Institute. University of Southern California, Marina del Rey, California, http://www.faqs.org/rfcs/rfc793.html, pp. 1-21. |
Rescorla, E. “SSL and TLS, Designing and Building Secure Systems”, 2001, Addison-Wesley, 46 pages. |
RSA Laboratories, “PKCS #1 v2.0: RSA Cryoptography Standard,” Oct. 1, 1998, 35 pages. |
Schroeder et al., “Scalable Web ServerClustering Technologies,” IEEE Network May/Jun. 2000, pp. 38-45. |
SearchNetworking.com, “Nagle's algorithm,” visited Dec. 6, 2005, 3 pages, <http://searchnetworking.techtarget.com/sDefinition/0,,sid7—gci754347,00.html>. |
!Session Initiation Protocol, http://en.wikipedia.org/w/index.php?title=Session—Initiation—Protoc . . . , accessed May 14, 2008, 5 pages. |
Stevens, W. R., “TCP/IP Illustrated,” vol. 1: The Protocols, Addison-Wesley Professional, Dec. 31, 1993, pp. 1-17. |
Stevens, W. “TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms,” Jan. 1997, Sunsite.dk, http://rfc.sunsite.dk/rfc/rfc2001.html, pp. 1-6. |
“Telecommunications Network,” Wikipedia—the free encyclopedia, http://en.wikipedia.org/w/index.php?title=Telecommunications—net . . . , accessed Jul. 31, 2008, 2 pages. |
“Tethereal—Dump and analyze network traffic,” ethereal.com, www.ethereal.com/docs/man-pages/tethereal.1.html, accessed Apr. 15, 2004, 11 pages. |
Tormasov, A. et al., “TCP/IP options for high-performance data transmission,” visited Dec. 9, 2005, 4 pages, <http://bulider.com.com/5100-6732-1050878.html>. |
Valloppillil, V. et al., “Cache Array Routing Protocol v1.0,” Feb. 1998, http://icp.ircache.net/carp.txt, accessed Jul. 25, 2008, 7 pages. |
W3C, “HTTP/1.1 and Nagle's Algorithm,” visited Dec. 6, 2006, 3 pages http://www.w3.org/Protocols/HTTP/Performance/Nagle/. |
Dierks, T. et al., “The TLS Protocol Version 1.0,” RFC 2246, 32 pages Jan. 1999. |
Housley, R. et al., “Internet X.509 Public Key Infrastructure Certificate and CRL Profile.” RFC 2459, 121 pages, Jan. 1999. |
Enger, R. et al., “FYI on a Network management Tool Catalog: Tools for Monitoring and Debugging TCP/IP Internets and Interconnected Devices,” RFC 1470, 52 pages, Jun. 1993. |
Reardon, M., “A Smarter Session Switch: Arrowpoint's CS Session Switches Boast the Brains Needed for E-Commerce,” Data Communications, Jan. 1999, title page, pp. 3, 5, 18. |
Hewitt, J. R. et al., “Securities Practice and Electronic Technology,” Corporate Securities Series, New York: Law Journal Seminars—Press, 1998, title page, bibliography page, pp. 4.29-4.30. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Mar. 3, 2009. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Jan. 4, 2010. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Aug. 3, 2010. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Mar. 31, 2011. |
Official Communication for U.S. Appl. No. 12/199,768 mailed Jun. 18, 2010. |
Official Communication for U.S. Appl. No. 12/199,768 mailed Nov. 22, 2010. |
Official Communication for U.S. Appl. No. 12/199,768 mailed Feb. 1, 2011. |
Freier, A. et al., “The SSL Protocol Version 3.0,” IETF, Internet Draft, 62 pages, Nov. 18, 1996. |
Official Communication for U.S. Appl. No. 11/258,551 mailed Dec. 6, 2012. |
Official Communication for U.S. Appl. No. 11/199,768 mailed Jun. 18, 2010. |
Official Communication for U.S. Appl. No. 11/199,768 mailed Nov. 22, 2010. |
Official Communication for U.S. Appl. No. 11/199,768 mailed Feb. 1, 2011. |
Official Communication for U.S. Appl. No. 13/174,237 mailed Mar. 21, 2014. |
Official Communication for U.S. Appl. No. 13/174,237 mailed Apr. 6, 2015. |
Office Communication for U.S. Appl. No. 13/174,237 mailed on Sep. 25, 2014. |
Office Communication for U.S. Appl. No. 13/174,237 mailed on Dec. 8, 2014. |
Office Communication for U.S. Appl. No. 12/199,768 mailed on Apr. 23, 2014. |
Office Communication for U.S. Appl. No. 12/199,768 mailed on Sep. 24, 2014. |
Office Communication for U.S. Appl. No. 12/199,768 mailed on Jan. 15, 2015. |
Office Communication for U.S. Appl. No. 12/199,768 mailed on Apr. 29, 2015. |
Official Communication for U.S. Appl. No. 13/174,237 mailed on Aug. 12, 2015, 14 pages. |
Official Communication for U.S. Appl. No. 14/935,231 mailed on Mar. 10, 2016, 7 pages. |
Official Communication for U.S. Appl. No. 14/935,231 mailed on Sep. 8, 2016, 9 pages. |
Official Communication for U.S. Appl. No. 14/935,231 dated Apr. 20, 2017, 11 pages. |
Official Communication for U.S. Appl. No. 14/935,231 dated Dec. 7, 2016, 3 pages. |
Number | Date | Country | |
---|---|---|---|
61057792 | May 2008 | US |