AU2009201833B1 - Conditional protocol control - Google Patents

Conditional protocol control Download PDF

Info

Publication number
AU2009201833B1
AU2009201833B1 AU2009201833A AU2009201833A AU2009201833B1 AU 2009201833 B1 AU2009201833 B1 AU 2009201833B1 AU 2009201833 A AU2009201833 A AU 2009201833A AU 2009201833 A AU2009201833 A AU 2009201833A AU 2009201833 B1 AU2009201833 B1 AU 2009201833B1
Authority
AU
Australia
Prior art keywords
protocol
server
attributes
servers
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
AU2009201833A
Inventor
Joseph D. Depalo
Michael M. Gordon
Bradley B. Harvell
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Edgio Inc
Original Assignee
Limelight Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Limelight Networks Inc filed Critical Limelight Networks Inc
Priority to AU2009201833A priority Critical patent/AU2009201833B1/en
Publication of AU2009201833B1 publication Critical patent/AU2009201833B1/en
Priority to US12/625,436 priority patent/US7715324B1/en
Ceased legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Description

040152006210 CONDITIONAL PROTOCOL CONTROL BACKGROUND [00011 This disclosure relates in general to interoperating nodes in an information processing system, such as an Internet content delivery system or an Internet transaction 5 acceleration system, and, but not by way of limitation, to control of connection protocols. 100021 In an information processing system, including communications networks such as the Internet, two or more nodes can work together, for example exchanging information or sharing resources, using one or more protocols that enable the participating nodes to interoperate. Nodes need not be physically distinct from one another, though they may be; 10 normally, however, nodes are at least logically distinct from one another in at least some respect. Interoperating nodes may be operated or managed by a single common authority or by independent, unrelated authorities. Two or more interoperating nodes are often independently operated or managed; the Internet includes many well known examples of the interoperation of two or more independently managed nodes. 15 100031 A protocol can be standardized such that a node using the standard protocol should be able to interoperate, at least at the level of the protocol, with any other node using the standard protocol. Standard protocols that become widely adopted can permit a node to interoperate with many other nodes. One such widely adopted standard protocol on the Internet is the Transmission Control Protocol (TCP), which today enables almost every 20 device on the Internet to interoperate with almost every other device. TCP operates at the connection layer and enables nodes to interoperate with other nodes by establishing communications connections. 100041 Standard protocols often employ the use of attributes, such as configurable parameters and selectable algorithms, to permit the protocol to operate effectively in various 25 situations. For example, TCP controls message size, the rate at which messages are exchanged, and factors related to network congestion through the use of attributes, including both by the use of parameters, such as the receive window field used in sliding window flow control and the retransmission timer, and by the use of algorithms, such as slow-start, congestion avoidance, fast retransmit, and fast recovery algorithms. It is often 30 the case, in many standard protocols, that at each node the initial protocol attribute settings to be used for all the communication connections at the node can be independently specified by the operator of the node.
I
100051 A protocol can also be customized, which in general requires that each node have installed customized components to enable the custom protocol. Without the customized components, the node would not be able to fully interoperate with other nodes using the customized protocol. Although it therefore may limit the total number of interoperable 5 nodes, or in the alternative require widespread action to install the protocol customized components, or possibly both, protocol customization is used in order to add function, improve performance, increase flexibility, or modify other characteristics of a standard protocol, or to make available an entirely new customized protocol. Many customized protocols have been proposed for use on the Internet. 10 SUMMARY 100061 In one embodiment, a system utilizing a standard protocol to enable two or more nodes to interoperate is disclosed. The protocol attributes specified in the standard protocol are conditionally adapted to the circumstances, use, and/or operating conditions of the interoperation of the nodes. Also disclosed is a method for utilizing a standard protocol to 15 enable two or more nodes to interoperate, wherein the protocol attributes specified in the standard protocol are conditionally adapted to the circumstances, use, and/or operating conditions of the interoperation of the nodes. [00071 In one embodiment, a system for supplying content objects over a network is disclosed. The system includes a protocol handler, a protocol attribute information store, 20 and a protocol attribute selector. The protocol handler manages a first connection and a second connection over the network using a protocol, wherein the protocol operates at a transport layer. The protocol attribute information store holds a plurality of attributes defined for a plurality of connections. The protocol attribute selector receives first information based on a first request for content wherein the first information is derived from 25 a first uniform resource indicator (URI) associated with the first request for content, identifies first attributes corresponding to the connection that will service the first request for content, provides the protocol handler with the first attributes for the connection servicing the first request for content, receives second information based on a second request for content, identifies second attributes corresponding to the connection that will 30 service the second request for content, and provides the protocol handler with the second attributes for the connection servicing the second request for content. 100081 In another embodiment, a network connection method for delivering content is disclosed. A first request for content is received over a network at a server. The first request for content is evaluated to select first protocol attributes, wherein analyzing the first 35 request comprises comparing a first URI with an alphanumeric string to correlate the first 2 URI with the first attributes.. A first connection that sends the content from the server to a first node is configured according to the first protocol attributes, wherein the protocol that is configured is a transport layer protocol. A second request for content is received over the network at the server. The second request for content is evaluated to select second protocol 5 attributes. A second connection that sends the content from the server to a second node is configured according to the second protocol attributes, where the first attributes affect the operation of the protocol differently than the second attributes affect the operation of the protocol. 100091 In another embodiment, a system for conducting transactions over a network is 10 disclosed. The system includes a protocol handler, a protocol attribute information store, and a protocol attribute selector. The protocol handler manages a first connection and a second connection over the network using a standard protocol. The protocol attribute information store holds a plurality of attributes defined for a plurality of connections. The protocol attribute selector receives first information based on a first transaction, identifies 15 first attributes corresponding to the connection that will service the first transaction, provides the protocol handler with the first attributes for the connection servicing the first transaction, receives second information based on a second transaction, identifies second attributes corresponding to the connection that will service the second transaction, and provides the protocol handler with the second attributes for the connection servicing the 20 second transaction. [0010] In another embodiment, a network connection method for conducting transactions over a network is disclosed. A first transaction is initiated over a network at a server. The first transaction is evaluated to select first protocol attributes. A first connection, servicing the first transaction, between the server and a first node is configured according to the first 25 protocol attributes. A second transaction is initiated over the network at the server. The second transaction is evaluated to select second protocol attributes. A second connection, servicing the second transaction, between the server and a second node is configured according to the second protocol attributes, where the first attributes affect the operation of the protocol differently than the second attributes affect the operation of the protocol. 30 [00111 Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating various embodiments, are intended for purposes of illustration only and are not intended to necessarily limit the scope of the disclosure. 35 3 040152006210 BRIEF DESCRIPTION OF THE DRAWINGS 100121 The present disclosure is described in conjunction with the appended figures: FIG. I depicts a block diagram of an embodiment of a content delivery system; 5 FIGs. 2A, 2B, 2C, and 2D depict block diagrams of embodiments of a content download pair that sends content from a server to a client; FIG. 3 illustrates a flowchart of an embodiment of a process for modification of the TCP protocol for various connections to a server; and FIG. 4 illustrates a flowchart of an embodiment of a process for modifying 10 protocol attributes potentially on a connection-by-connection basis is shown. 100131 In the appended figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the 15 description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label. DETAILED DESCRIPTION 100141 The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the disclosure. Rather, the 20 ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope as set forth in the appended claims. 100151 Referring first to FIG. 1, a block diagram of an embodiment of an Internet content 25 delivery system 100 is shown. Generally, one or more nodes request content from one or more other nodes. In FIG. 1, a number of end users 108 respectively use their end user system or client 102 to download and view content objects from the global Internet 104. The content delivery system 1 10 has one or more servers that provide content object downloads. The content delivery system 1 10 can include any number of cache servers, 30 application servers, content servers, service servers, and/or database servers to provide content to the clients 102. Although this embodiment shows particular communication 4 040152006210 pairs, other embodiments could communicate between any pair of nodes on a network, including between pairs of clients or between pairs of servers, and yet other embodiments could communicate among more than two nodes, such as in a broadcast or multicast implementation. 5 100161 With reference to FIGs. 2A, 2B, 2C and 2D, embodiments of a content download pair 200 that sends content from a server 206 to a client 102. A primary embodiment described here is the interoperation of two nodes 102, 206 on the Internet communicating using TCP, one node being a client 102 that requests information, such as web page content, multimedia, or software downloads, and the second node being a server 206 that provides 10 information in response to a request. TCP operates in the transport layer of the seven-layer Open Systems Interconnection (OSI) model. In other embodiments, nodes 102, 206 interoperate in ways other than communication in a network, such as sharing data within a computer or group of computers across an available system or intersystem interface; interoperate using communications networks other than the Internet 104, such as a private 15 communications network; interoperate using the Internet 104 or a private network using protocols other than TCP, such as UDP, RTP, multicast protocols, and other standard protocols in the transport layer; interoperate using the Internet 104 or a private network using standard protocols operating in a layer that underlies the transport layer; interoperate, using standard protocols and the Internet or a private network, more than two at a time, such 20 as in clusters or multicast groups; or interoperate, using standard protocols and the Internet or a private network, other than as a client and server, including interoperating as peers, as collaborative nodes, or as a group of nodes under the common control of one or more other nodes or under the common control of a controller. 100171 In the primary embodiment, the server 206 conditionally adapts the attributes of 25 the TCP protocol for each TCP connection established by a client 102. Conditionally adapting the attributes of the TCP protocol does not require changes to standard TCP protocol implementations at every node, does not require special components be installed in the TCP protocol implementation at every node, and therefore does not comprise implementing a customized protocol as previously described; rather, the primary 30 embodiment utilizes the standard TCP protocol and the attributes implemented in it. In other embodiments, the server conditionally adapts the attributes of other transport-layer protocols for each session established by a client 102; the server conditionally adapts the attributes of other protocols that underlie the transport layer for each session established by 5 040152006210 a client 102; the server 206 conditionally adapts the attributes of the TCP protocol or other protocol for groups of connections or sessions established by clients 102; the server 206 conditionally adapts the attributes of the TCP protocol or other protocol for connections or sessions established by groups or subsets of groups of clients 102; the client 102 5 conditionally adapts the attributes of the TCP protocol for each TCP connection established; the client 102 conditionally adapts the attributes of other protocols for each session established; the client 102 conditionally adapts the attributes of the TCP protocol or other protocol for groups of connections or sessions; a node conditionally adapts the attributes of the TCP protocol or other protocol for each connection or session; a node conditionally 10 adapts the attributes of the TCP protocol or other protocol for groups of connections or sessions; a node conditionally adapts the attributes of the TCP protocol or other protocol for connections or sessions established by groups or subsets of groups of nodes; a controller conditionally adapts the attributes of the TCP protocol or other protocol for each connection or session of at least one node of an interoperating group of nodes; a controller conditionally 15 adapts the attributes of the TCP protocol or other protocol for groups of connections or sessions of at least some nodes of an interoperating group of nodes; or, a controller conditionally adapts the attributes of the TCP protocol or other protocol for connections or sessions established by groups or subsets of groups of nodes. 100181 Software, software modifications, or equivalent function, may optionally be 20 implemented at a server, client, or node that sets the conditionally adapted protocol attributes of a connection or session, but need not be implemented at servers, clients, or nodes that passively participate in a conditionally adapted protocol connection or session. Such software, software modifications, or equivalent function will only be needed if existing protocol software or other software on the server, client, or node does not provide a 25 facility for programmatically or similarly changing attributes of the protocol that is used; in this event, software, a software modification, or equivalent facilities to provide such a programmatic or similar interface may be implemented. 100191 Conditionally adapting the protocol for each connection or session, or collection of connections or sessions, results in at least one node that, concurrently or over time, uses a 30 protocol for multiple unrelated connections or sessions wherein the protocol attributes vary, at least initially and sometimes persistently, from one connection or session to another, most often varying differently from any ordinary protocol attribute variations that naturally occur 6 040152006210 from one connection or session to another through use of the standard protocol implementation among heterogeneous nodes. 100201 In the primary embodiment, TCP connections are established in order to use HyperText Transfer Protocol (HTTP) to communicate information requests from clients 102 5 to servers 206 and responses from servers 206 to clients 102. HTTP is a scheme that operates above, and depends on the presence of a functioning and reliable protocol at, the transport layer of the seven-layer model developed in the Open Systems Interconnection (OSI) initiative. Other embodiments use application-layer protocols other than HTTP in conjunction with TCP; use TCP alone, i.e., without HTTP; use other protocols; or, use other 10 application-layer protocols in conjunction with other protocols. HTTP utilizes Uniform Resource Locators (URLs), Uniform Resource Names (URNs), and Uniform Resource Identifiers (URIs) to identify information. URLs are used in the primary embodiment. Other embodiments use URIs, URNs, other identifiers, or other information. A URL begins with the scheme identifier, which identifies the namespace, purpose, and syntax of the 15 remainder of the URL. In the primary embodiment utilizing HTTP, the typical scheme is "http". The scheme is followed by a host field, which contains the IP address or name of the host where the requested information can be found, optionally followed by a port number, optionally followed by a path, which is an HTTP selector, optionally followed by a search portion, which is a query string. The full URL, then, is an alphanumeric string 20 containing the scheme, host field, any optional following strings, and special characters such as ":", "/", and "?" that are reserved for special functions such as designating a hierarchical structure in the URL. Other embodiments could use different application-layer protocols such as Telnet, File Transfer Protocol (FTP), secure HTTP (HTTPS), and Simple Mail Transfer Protocol (SMTP). 25 100211 In the primary embodiment, the server 206 bases the conditional adaptation of the attributes of the TCP protocol on the alphanumeric URL string provided by the client 102 in its information request. In another embodiment, a server, client or other node bases the conditional adaptation of the attributes of the TCP protocol or other protocol on the application-layer protocol specified or on identifying information, equivalent to a URL, or 30 other information provided in, or characteristic of, an information request, connection, or session. In other embodiments, a server, client or other node bases the conditional adaptation of the attributes of the TCP protocol or other protocol on the IP address of one or more servers, clients, or nodes; on network information associated with the IP address of 7 040152006210 one or more servers, clients, or nodes, including the Autonomous System (AS) number, identity of network operator, geographic location, logical or physical network location, logical or physical network segment, or network interconnection characteristics associated with the IP address(es) of one or more servers, clients, or nodes; the geographic location of 5 the server, client or node; and/or, the logical or physical network location of the server, client or node; the logical or physical address of the server, client or node; the logical or physical name of the server, client or node; and/or, the network or other path from or to a server, client or node. In other embodiments a server, client or node bases the conditional adaptation of the attributes of the TCP protocol or other protocol on recent network 10 performance measurements, including latency, jitter, packet loss, round trip time, and/or the measured variance in a network performance measurement across multiple samples; on recent measures of utilization of a network, network segment, network interface, or network port; and/or, on recent measurements of performance or utilization of a server, group of servers, or server component(s) such as memory, processor, disk, bus, intersystem interface, 15 and/or network interface. In still other embodiments, a server, client or node bases the conditional adaptation of the attributes of the TCP protocol or other protocol on temporal factors, including time of day; day of week, month, or year; specific date; occurrence of a holiday or religious observance; occurrence of a temporal event such as a news event or sports event; seasonal occurrence; and/or a scheduled event or time period. 20 100221 In the primary embodiment, the protocol attribute selector 212 of the server 206 compares the alphanumeric URL string provided by the client 102 in its information request to a table 220 containing partial or whole URLs and identifies the most specific match from left to right that it can find in the table 220. In another embodiment, the server 206 compares a subset of the alphanumeric string, for example some or all of the characters in 25 the query string, or the characters following the host field up to the first subsequent slash (i.e., "/"), to a table 220. In another embodiment, the client or node 102 makes a conditional adaptation of protocol attributes, using the alphanumeric URL string or a subset of it. In other embodiments, the alphanumeric URL string or a subset of it is processed to obtain a value or indicator that is used to determine a conditional adaptation of protocol attributes. 30 In other embodiments, the information used to determine the conditional adaptation of protocol attributes is identifying information equivalent to a URL, one or more IP addresses, network information associated with one or more IP addresses, network interconnection characteristics associated with one or more IP addresses, or the geographic location, or 8 040152006210 logical or physical network location, of a server, client or node. In other embodiments, the information used to determine the conditional adaptation of protocol attributes comprises one or more recent performance measurements or thresholds related to one or more servers, clients, or nodes, or groups of servers, clients, or nodes, or related to one or more networks, 5 network segments, network components, or network interfaces, or groups of network segments, network components, or network interfaces; rates or amounts of variation in one or more performance measurements or thresholds related to one or more servers, clients, or nodes, or groups of servers, clients, or nodes, or related to one or more networks, network segments, network components, or network interfaces, or groups of network segments, 10 network components or network interfaces; rates or amounts of resource utilization, including utilization related to one or more servers, clients, or nodes, or groups of servers, clients, or nodes, or components of one or more servers, clients, or nodes, groups of components of servers, clients, or nodes, or related to one or more networks, network segments, network components, or network interfaces, or groups of network segments, 15 network components, or network interfaces; rates or amounts of variation in resource utilization, including variation in utilization related to one or more servers, clients, or nodes, or groups of servers, clients, or nodes, or components of one or more servers, clients, or nodes, groups of components of servers, clients, or nodes, or related to one or more networks, network segments, network components, or network interfaces, or groups of 20 network segments, network components, or network interfaces; and/or, thresholds of resource utilization, including utilization related to one or more servers, clients, or nodes, or groups of servers, clients, or nodes, or components of one or more servers, clients, or nodes, groups of components of servers, clients, or nodes, or related to one or more networks, network segments, network components, or network interfaces, or groups of network 25 segments, network components, or network interfaces. 100231 In the primary embodiment, a table 220 containing partial or whole URLs for comparison by the protocol attribute selector 212 is stored on the server 206. In other embodiments, a table 220 containing partial or whole URLs for comparison, or subsets of the alphanumeric URL string used for comparison, is stored remotely from the server 206 30 such as the embodiment shown in FIG. 2B and the comparison of the alphanumeric URL string or subset of the alphanumeric URL string is made at the server 206, or is made at the remote table storage location or at another location and the result of the comparison, or an indicator of the result of the comparison, or the protocol attributes to be used, are returned 9 040152006210 to the server 206. In other embodiments, a table 220 or database of information used for comparison is stored at the server 206, or is stored remotely from the server 206 and one or more comparisons are made at the server 206, or are made at the remote storage location or at another location, and the results of the comparisons, or one or more indicators of the 5 results of the comparisons, or the protocol attributes to be used, are returned to the server 206. In yet other embodiments, a table 220 containing partial or whole URLs for comparison, or subsets of the alphanumeric URL string used for comparison, or a database of information used for comparison is stored at a client or node 102 as is shown in FIG. 2D, or is stored remotely from a client or node and one or more comparisons are made at the 10 client or node 102, or are made at the remote storage location or at another location and the results of the comparisons, or one or more indicators of the results of the comparisons, or the protocol attributes to be used, are returned to the client or node 102. In other embodiments, a protocol attribute to be used, or an indicator of a protocol attribute to be used, is extracted from, or derived from, a URL or equivalent identifying information used 15 by a server, client, or node; is extracted from, or derived from, address information or a whole or partial name of a server, client, or node; is extracted from, or derived from a user name or identifier, class or type of user, group of users, or selection of users, optionally as associated with a service, server, client, or node; is extracted from, derived from, or associated with, an application or class or group of applications, a service or class or group 20 of services, or a database or equivalent source of data or a class or group of databases or sources of data; is extracted from, or derived from, the identifier of a standard protocol, a standard protocol message (for example, a TCP SYN), the protocol-level content of a message, or protocol message headers or equivalent information; is derived from all or a part of the time, all or a part of the date, or all or a part of the duration since a time or date; 25 is determined according to a sequence or progression; and/or, is determined randomly or pseudo-randomly. [00241 After one or more comparisons are made, or after the extraction or derivation of a value, or after an association or determination is made, the server, client, or node will have one or more values it can use as protocol attributes or as indicators of which protocol 30 attributes to use; or, if there has not been a determination of a condition resulting in one or more protocol attribute values to use, then in the primary embodiment the server 206 will use the standard values for the protocol attributes as configured for the server 206, and in other embodiments, the server, client, or node will use the standard values as configured for 10 040152006210 it for some or all of the protocol attributes; the server, client, or node will use another default value for some or all of the attributes; the server, client, or node will use the last used values for some or all of the attributes; or, the server, client, or node will use randomly, pseudo-randomly, or arbitrarily determined values for some or all of the attributes. 5 100251 In the primary embodiment, the server 206 is a cache server, typically operating in a group of cache servers, and groups of cache servers are distributed at numerous points on the global Internet. The server 206 includes a cache function 208 coupled to a content cache 210 to provide caching of content for the server 206. In another embodiment, the server 206 is a cache server operating individually, or independently from other cache 10 servers. In other embodiments, the server 206 is a content server that provides content; a content server operating in a group of content servers; a content server operating in a group of content servers distributed at numerous points on the global Internet; an application server that supports one or more applications; an application server operating in a group of application servers; an application server operating in a group of application servers 15 distributed at numerous points on the global Internet; a service server that provides one or more services; a service server operating in a group of service servers; a service server operating in a group of service servers distributed at numerous points on the global Internet; a database server that provides data; a database server operating in a group of database servers; a database server operating in a group of database servers distributed at numerous 20 points on the global Internet; a server operating in a heterogeneous group of servers; or, a server operating in a heterogeneous group of servers distributed at numerous points on the global Internet. 100261 In the primary embodiment, each server 206 has an identical copy of a table 220 containing partial or whole URLs to which the alphanumeric URL string provided by the 25 client 102 in its information request will be matched if possible, along with an indicator of the protocol attribute values to be used when that match occurs or the actual protocol attribute values themselves to be used when that match occurs. The table 220 can be modified from time to time, including adding new entries, changing the contents of existing entries, and deleting entries. Any time that a new version of the table 220 is created, copies 30 of that version are distributed to servers 206 in the global group of cache servers. Optionally, the table 220 can have an expiration date and time, after which the server 206 will stop using the table 220 if it is out-of-date and has not been replaced with an updated table. In the primary embodiment, the conditional protocol control information is combined I1 040152006210 with other information distributed to servers 206 so as to minimize to the extent practicable the number of tables 220 that are distributed to, and synchronized among, the global group of servers; in another embodiment, this combination and minimization is not implemented; and this combination and minimization is not done in most or all other embodiments. 5 10027] In other embodiments, the conditional protocol information may be in the form of a table 220 as in the primary embodiment, or may be in the form of multiple tables, or may be in the form of one or more data files, one or more databases, one or more calculated or derived elements, one or more calculated or derived groups of elements, one or more individual equations or formulas, one or more groups of equations or formulas, one or more 10 individual expressions, one or more groups of expressions, one or more individual programs or routines, one or more groups of programs or routines, one or more individual listings, one or more groups of listings, and/or other forms equivalent to any of these. 100281 In other embodiments, the conditional protocol control information contains partial or whole URLs to which the alphanumeric URL string provided by the client 102 in its 15 information request will be matched if possible, along with an indicator of the protocol attribute values to be used when that match occurs or the actual protocol attribute values themselves to be used when that match occurs, and is the same for each server 206 at a location, but varies from one location to another; is the same for each server in a region, but varies from one region to another; or, is different at each server. In other embodiments the 20 conditional protocol control information contains partial or whole URLs to which the alphanumeric URL string used by a client or node 102 will be matched if possible, along with an indicator of the protocol attribute values to be used when that match occurs or the actual protocol attribute values themselves to be used when that match occurs, and the conditional protocol control information is identical at each client or node 102; is the same 25 for each client or node 102 in a group, but varies from one group of clients or nodes 102 to another; is the same for each client or node 102 in a region, but varies from one region to another; or, varies from one client or node 102 to another client or node 102. 100291 In other embodiments, the conditional protocol control information contains other comparison information that will be matched, if possible, along with a corresponding 30 indicator of the protocol attribute values to be used when that match occurs or the corresponding actual protocol attribute values themselves to be used when that match occurs, and each server, client, or node has an identical copy of the conditional protocol 12 040152006210 control information; the conditional protocol control information is the same for each server, client, or node at a location, but varies from one location to another; the conditional protocol control information is the same for each server, client, or node in a region, but varies from one region to another; the conditional protocol control information is the same 5 for each server, client, or node in a group, but varies from one group to another; or, the conditional protocol control information varies from one server, client, or node to another. In these embodiments, the comparison information can include subsets of the alphanumeric URL string; identifying information equivalent to a URL; one or more IP addresses; network information associated with one or more IP addresses; network interconnection 10 characteristics associated with one or more IP addresses; the geographic location, or logical or physical network location, of a server, client, or node; a value of a performance measurement or threshold; a rate or amount of variation in a performance measurement or threshold; a rate or amount of resource utilization; a rate or amount of variation in resource utilization; a threshold of resource utilization; addresses, names, classes, types, or group 15 identifiers of servers, clients, nodes, users, applications, services, databases, or other data sources; protocol identifiers, protocol message identifiers or attributes, or protocol message headers or attributes; times, dates, or intervals; and/or, sequences, ratios, progressions, equations, randomly generated data, or arbitrarily determined data. 100301 In embodiments where the conditional protocol control information is not identical 20 at all servers, clients, or nodes, optionally a system can create conditional protocol control information for each location, region, server, client, or node, and optionally can manage the distribution of the conditional protocol control information to each location, region, server, client, or node. For partial or whole URLs, subsets of a URL alphanumeric string, or other comparison information that will be compared, a conditional protocol information 25 management and distribution system (CPIMDS) optionally generates, or stores, or generates and stores, protocol attributes for any or all of a server, all servers, a subset of servers, a location, all locations, a subset of locations, a region, all regions, a subset of regions, a group, all groups, a subset of groups, an application, all applications, a subset of applications, a service, all services, a subset of services, a database or data source, all 30 databases or data sources, a subset of databases or data sources, a protocol, all protocols, a subset of protocols, a client, all clients, a subset of clients, a node, all nodes, a subset of nodes, or a combination of some, a subset of, a subset of some of, or all of, servers, locations, regions, groups, applications, services, databases or data sources, protocols, 13 040152006210 clients, or nodes; and optionally generates, or stores, or generates and stores, default protocol attributes to be used in the absence of a matching comparison for any or all of a server, all servers, a subset of servers, a location, all locations, a subset of locations, a region, all regions, a subset of regions, a group, all groups, a subset of groups, an 5 application, all applications, a subset of applications, a service, all services, a subset of services, a database or data source, all databases or data sources, a subset of databases or data sources, a protocol, all protocols, a subset of protocols, a client, all clients, a subset of clients, a node, all nodes, a subset of nodes, or a combination of some, a subset of, a subset of some of, or all of, servers, locations, regions, groups, applications, services, databases or 10 data sources, protocols, clients, or nodes. The CPIMDS also optionally generates, or stores, or generates and stores, one or more rules for determining which of the server, location, region, group, application, service, database or data source, protocol, client, node, or combined values to use when determining a comparison to be included in the conditional protocol control information for a server, all servers, a subset of servers, a location, all 15 locations, a subset of locations, a region, all regions, a subset of regions, a group, all groups, a subset of groups, an application, all applications, a subset of applications, a service, all services, a subset of services, a database or data source, all databases or data sources, a subset of databases or data sources, a protocol, all protocols, a subset of protocols, a client, all clients, a subset of clients, a node, all nodes, a subset of nodes, or a combination of 20 some, a subset of, a subset of some of, or all of, servers, locations, regions, groups, applications, services, databases or data sources, protocols, clients, or nodes; optionally generates, or stores, or generates and stores, one or more rules for determining when to create, or distribute, or create and distribute, conditional protocol control information for or to a server, all servers, a subset of servers, a location, all locations, a subset of locations, a 25 region, all regions, a subset of regions, a group, all groups, a subset of groups, a client, all clients, a subset of clients, a node, all nodes, a subset of nodes, or a combination of some or all of servers, locations, regions, groups, clients, nodes, or a subset of servers, locations, regions, groups, clients, nodes, or for or to all servers, clients, or nodes; optionally generates, or stores, or generates and stores, one or more rules for determining whether, and 30 if so when, any conditional protocol control information shall expire; optionally includes an expiration value with some or all of the conditional protocol control information; and, optionally distributes conditional protocol control information to a server, all servers, a subset of servers, a location, all locations, a subset of locations, a region, all regions, a subset of regions, a group, all groups, a subset of groups, a client, all clients, a subset of 14 040152006210 clients, a node, all nodes, a subset of nodes, or a combination of some or all of servers, locations, regions, groups, clients, nodes, or a subset of servers, locations, regions, groups, clients, nodes, or for or to all servers, clients, or nodes. 100311 In embodiments where the conditional protocol control information is maintained 5 separately from each server, client, or node, the conditional protocol control information can optionally include, or can optionally correlate to, an indication of for which servers, locations, regions, groups, applications, services, databases or data sources, protocols, clients, nodes, or supersets, subsets, or combinations thereof, the conditional protocol control information can be used in adapting protocol attributes. The conditional protocol 10 control information can be maintained at a single location or multiple locations; if maintained at multiple locations, each location can maintain a complete copy of all conditional protocol control information, or each location can maintain a copy of a subset of the conditional protocol control information. Optionally, a conditional protocol information management and distribution system can create conditional protocol control information for, 15 and optionally distribute conditional protocol control information to, each conditional protocol control information location, groups of conditional protocol control information locations, or all conditional protocol control information locations. If conditional protocol control information locations store a subset of the conditional protocol control information, participating servers, clients, or nodes can optionally use a table, ordered table, shuffled 20 table, directory, logical name translation system, or information obtained from, or received from, another server, client, node, or controller, to determine which conditional protocol control information location to receive conditional protocol control information from. 100321 Referring next to FIG. 3, an embodiment of a process 300 for modification of the TCP protocol for various connections to a server 206. In summary, in the primary 25 embodiment two nodes on the Internet communicate using TCP, one node being a client 102 that requests information in block 304, such as web page content, and the second node being a cache server 206 that provides information in response to a request. The cache server 206 operates as one of a group of cache servers, and groups of cache servers are distributed at numerous points on the global Internet. TCP connections are established in 30 order to use HTTP to communicate information requests from clients 102 to servers 206 in block 304 and responses from servers 206 to clients 102. HTTP utilizes URLs; each URL begins with the scheme "http", which is followed by a host field containing the IP address or name of the host where the requested information can be found, followed by a path, 15 040152006210 which will be used at the server 206 to locate the requested object or information, optionally followed by a query string. Thus, the full URL typically is an alphanumeric string containing the scheme, host field, path, and any optional query string, each part of which is separated from the other parts by special characters such as ":", "/", and "?". Thus, an 5 example URL referencing content that can be served by the cache server 206 in the primary embodiment might look like: http://customerl.webserving.com/folderB/directory/logo.gif optionally followed by "?" and a query string. A client 102 requesting this object would send an HTTP message using an HTTP method called "GET" to the server 206 identified by 10 the hostname "customeril.webserving.com" in block 304. The server identification is accomplished through a DNS translation of the hostname into one or more IP addresses. The Domain Name System (DNS) is the name translation system used in the Internet. The HTTP GET message sent to the server 206 typically includes part or all of the URL that the client 102 is requesting. In block 308, some or all of the URL is compared with entries in 15 the table 220 to determine the attributes to use for the connection as described further below. 100331 In the primary embodiment, in block 312 the server 206 conditionally adapts the attributes of the TCP protocol for each TCP connection established by a client 102. Conditionally adapting the attributes of the TCP protocol does not require changes to 20 standard TCP protocol implementations at every node, i.e., any client 102 that supports standard TCP (which virtually all Internet and all World Wide Web clients do) can communicate with the server 206 to get the object via a conditionally adapted TCP connection, but may require a modification to the server's TCP protocol handler to allow changes to be made to the TCP protocol attributes by another program, or on a per 25 connection basis, or both. Where the TCP protocol handler provides a facility for programmatically making these changes, the content serving application may require an interface enabling it to communicate conditionally adapted TCP protocol attributes to the TCP protocol handler. In our implementation of the primary embodiment, we use a "set sockets" statement to communicate conditionally adapted TCP protocol attributes from the 30 content serving application to the TCP handler 214, which is a modified TCP software stack that can accept and implement changes to the TCP protocol attributes on a per-connection basis. In various embodiments, the TCP handler could be implemented in software or 16 040152006210 hardware or both, and can be implemented as part of a node or separately from the node, for example in a switch or other device that provides protocol services. 100341 Conditionally adapting the protocol for each connection results in the server 206 concurrently using the TCP protocol for multiple unrelated connections, wherein the TCP 5 protocol attributes vary, at least initially and sometimes persistently, from one connection to another. At block 316, the requested object or information is sent from the server 206 to the client 102. When a requested object or information is delivered without any change to the TCP protocol attributes, the standard TCP protocol attributes pre-configured for the TCP protocol handler are used; but when the requested object or information is delivered with 10 conditionally adapted TCP protocol attributes, the conditionally determined TCP protocol attributes are used instead of the standard pre-configured TCP attributes. 100351 A typical caching content server 206 in actual operating use in a web hosting service provider environment may typically service 2,000 to 3,000 requests per second, across 100 to 200 (or more) customers. If half of these requests will use changed TCP 15 protocol attributes and half will not, then on average, half of the connections managed by the server 206 at any one point in time would use the changed TCP protocol attributes and half would use the standard TCP protocol attributes as pre-configured in the TCP handler 214. Additionally, if there are five separate (different) changed TCP protocol attribute sets across which those requests using changed TCP protocol attributes are evenly distributed, 20 then on average at any one point in time a server 206 would concurrently be operating TCP connections with six different sets of TCP protocol attributes: 50% of the connections would utilize standard pre-configured TCP protocol attributes, and 10% would utilize each of the five possible changed TCP protocol attribute sets. [0036] In the primary embodiment, the server 206 bases the conditional adaptation of the 25 attributes of the TCP protocol on the alphanumeric URL string provided by the client 102 in the HTTP GET message. In the primary embodiment, the conditional protocol control information is in the form of a table 220 containing partial and/or whole URLs for comparison, the table 220 is stored on the server 206, and the table 220 is generally kept reconciled on all servers 206. The server 206 compares the alphanumeric URL string 30 provided by the client 102 in the GET request to the table 220 and identifies the most specific match from left to right that it can find in the table 220 in block 308. Taking our earlier example and assuming a simplified table, the sole Table shows mappings from whole 17 040152006210 and/or partial URLs into TCP attribute sets comprising specific protocols attributes (identified as "attrl", "attr2", "attr3", etc.) to be used and the appropriate value or setting for that use of that attribute. Table Mapping to TCP attribute sets Partial URL TCP Attribute Set http://customerl.webserving.com/folderA/ attrl=yes, attr3=25, attr4=low http://customerl.webserving.com/folderB/ attrl=no, attr2=1, attr4=high fastnet.com attr3=50, attr6=fast http://customer2.webserving.com/ http://customer3.webserving.com/ attrl=yes, attr3=25, attr4=low 5 The URL in the example above, "http://customerl.webserving.com/folderB/directory/logo.gif," would be matched against the second line-entry in the table. The TCP protocol attribute set (group of TCP protocol attributes) to be used for the TCP connection that services, or responds to, this HTTP GET message from this client 102 would be "attrl=no, attr2=1, attr4=high" and the TCP protocol 10 attributes for this TCP connection would be set accordingly. This simplified table example also illustrates that the scheme and host name may be sufficient for a matching entry, such as in the case of the entry "http://customer3.webserving.com," or the host name alone may be sufficient, such as in the case of the entry "fastnet.com." This simplified table example also illustrates that there may be a null entry in the table, as in the case of 15 "http://customer2.webserving.com"; in this simplified table example, the null entry signifies use of the standard pre-configured TCP protocol attributes. Note that an actual table in the primary embodiment would contain more information than the simplified example table shown here, as discussed. 100371 The table 220 can be modified from time to time, including adding new entries, 20 changing the contents of existing entries, and deleting entries. When a new version of the table 220 is created, copies of the new version of the table 220 are distributed to the servers 206 in the global group of cache servers. Optionally, the table 220 can have an expiration date and time, after which the server 206 will stop using the table 220 if it is out-of-date and has not been replaced with an updated table 220; under this condition, the server 206 would 18 040152006210 then use the standard TCP protocol attributes for connections until the server 206 received an updated or unexpired table 220. [00381 In the primary embodiment, the conditional protocol control information is combined with other information, such as customer billing codes and other customer 5 specific information, that is distributed to all servers 206, in order to minimize the number of tables that are distributed to, and reconciled throughout, the global group of servers. This embodiment has the advantage of simplifying administration, change management, and rollback in the event that distribution of a new table 220 causes a problem or error condition, but the disadvantage that the conditional protocol adaptation is the same for any 10 given entry in the table 220 at every server 206, regardless of the server's location or other factors. In other embodiments, as discussed, the conditional protocol control information can vary from one server 206 to another. 100391 Referring to FIG. 4, an embodiment of a process for potentially modifying protocol attributes on a connection-by-connection basis is shown. The depicted portion of 15 the process begins in block 416 where a uniform resource indicator (URI) is requested by the client 102. The cache function 208 of the server 206 receives the request for the content object. The URI is evaluated by the protocol attribute selector 212 to find a match to something in the table 220. The table 220 is queried in block 424 for any attributes. Retrieved attributes are communicated to the TCP handler 214 in block 428. The 20 connection is established in block 432 according to the selected attributes to connect the end user system 102 with the server 206. The content object is delivered in block 436. This process is performed on each URI such that each connection or socket can be independently controlled, if desired. Indeed, two different end user systems 102 could request the same content object and it could be delivered in a very different manner with different selected 25 protocol attributes for each user. 100401 Throughout this document, the terms content delivery and content download are used and can mean either file download or streaming delivery. Additionally, a content object can be either a file or a stream. For example, the content object could be a voice call stream, a video stream, an image file, a music file, a live concert, an animation, an 30 advertisement, a web page, a slide show, data file, hosted software, transactions, executable software or the like. Content can be static or dynamic, can pre-exist on the server, can be 19 040152006210 created on the server, or can be created or obtained elsewhere in response to a request from a client. 100411 A number of variations and modifications of the disclosed embodiments can also be used. For example, some of the above embodiments discuss use of the TCP protocol or a 5 transport-layer protocol. Other protocols could be modified on a connection-by-connection basis in other embodiments. 100421 While the principles of the disclosure have been described above in connection with specific apparatuses and methods, it is to be clearly understood that this description is made only by way of example and not as limitation on the scope of the disclosure. 20
AU2009201833A 2009-03-26 2009-03-26 Conditional protocol control Ceased AU2009201833B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AU2009201833A AU2009201833B1 (en) 2009-03-26 2009-03-26 Conditional protocol control
US12/625,436 US7715324B1 (en) 2009-03-26 2009-11-24 Conditional protocol control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2009201833A AU2009201833B1 (en) 2009-03-26 2009-03-26 Conditional protocol control

Publications (1)

Publication Number Publication Date
AU2009201833B1 true AU2009201833B1 (en) 2009-10-22

Family

ID=41203506

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2009201833A Ceased AU2009201833B1 (en) 2009-03-26 2009-03-26 Conditional protocol control

Country Status (1)

Country Link
AU (1) AU2009201833B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518240A (en) * 2021-07-20 2021-10-19 北京达佳互联信息技术有限公司 Live broadcast interaction method, virtual resource configuration method, virtual resource processing method and device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029200A (en) * 1998-03-09 2000-02-22 Microsoft Corporation Automatic protocol rollover in streaming multimedia data delivery system
US6038603A (en) * 1997-03-25 2000-03-14 Oracle Corporation Processing customized uniform resource locators
US20050097212A1 (en) * 2003-10-06 2005-05-05 Andy Engel Self-configuring communications module adaptive to different host system types

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038603A (en) * 1997-03-25 2000-03-14 Oracle Corporation Processing customized uniform resource locators
US6029200A (en) * 1998-03-09 2000-02-22 Microsoft Corporation Automatic protocol rollover in streaming multimedia data delivery system
US20050097212A1 (en) * 2003-10-06 2005-05-05 Andy Engel Self-configuring communications module adaptive to different host system types

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518240A (en) * 2021-07-20 2021-10-19 北京达佳互联信息技术有限公司 Live broadcast interaction method, virtual resource configuration method, virtual resource processing method and device
CN113518240B (en) * 2021-07-20 2023-08-08 北京达佳互联信息技术有限公司 Live interaction, virtual resource configuration and virtual resource processing method and device

Similar Documents

Publication Publication Date Title
US8750155B2 (en) Conditional protocol control
US7715324B1 (en) Conditional protocol control
US20230115557A1 (en) Method and System for Transmitting Data in a Computer Network
Zhao et al. Tapestry: A resilient global-scale overlay for service deployment
US7219153B1 (en) Methods and apparatus for distributing content
US6954456B2 (en) Method for content-aware redirection and content renaming
US7953808B2 (en) Automatic notification system and process
US8756325B2 (en) Content management
US8386622B2 (en) Method and apparatus for facilitating communication in a content centric network
KR101507907B1 (en) System and method for distributing a map of content available at multiple receivers
JP5442131B2 (en) Individual data communication based on description file
KR101420548B1 (en) Method and system for supporting the selection of communication peers in an overlay network
Monnerat et al. D1HT: A distributed one hop hash table
US20130212266A1 (en) Routing client requests
US20090299937A1 (en) Method and system for detecting and managing peer-to-peer traffic over a data network
WO2013075578A1 (en) System and method for offline download of network resource file
Moll et al. SoK: The evolution of distributed dataset synchronization solutions in NDN
US20150074234A1 (en) Content system and method for chunk-based content delivery
US20240015135A1 (en) Domain management and synchronization system
EP2707997A1 (en) Method for managing the infrastructure of a content distribution network service in an isp network and such an infrastructure
AU2009201833B1 (en) Conditional protocol control
WO2010110794A1 (en) Conditional protocol control
US11095605B1 (en) Request routing utilizing encoded DNS-based messaging parameters
Wang et al. NCDN: A Node‐Failure Resilient CDN Solution with Reinforcement Learning Optimization
US20230308413A1 (en) Discovering services across networks based on a multicast domain name system protocol

Legal Events

Date Code Title Description
FGA Letters patent sealed or granted (standard patent)
MK14 Patent ceased section 143(a) (annual fees not paid) or expired