`
`(12) United States Patent
`Harvell et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 7,715,324 B1
`May 11, 2010
`
`(54) CONDITIONAL PROTOCOL CONTROL
`
`(75)
`
`Inventors: Bradley B. Harvell, Chandler, AZ (US);
`Joseph D. DePalo, Peoria, AZ (US);
`Michael M. Gordon, Paradise Valley,
`AZ (US); Jason L. Wolfe, Gilbert, AZ
`(US)
`
`(73) Assignee: Limelight Networks, Inc., Tempe, AZ
`(US)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21) Appl.No.: 12/625,436
`
`(22)
`
`Filed:
`
`Nov. 24, 2009
`
`Related U.S. Application Data
`
`(63) Continuation of application No. 12/572,981, filed on
`Oct. 2, 2009, which is a continuation-in-part of appli-
`cation No. PCT/US2009/038361, filed on Mar. 26,
`2009.
`
`(30)
`
`Foreign Application Priority Data
`
`Mar. 26, 2009
`
`(AU)
`
`............................ .. 2009201833
`
`(51)
`
`Int. Cl.
`(2006.01)
`H04] 1/16
`(2006.01)
`H04L 12/56
`(52) U.S. Cl.
`..................... .. 370/252; 370/389; 370/412;
`370/466
`
`(58) Field of Classification Search ............... .. 370/252,
`370/412, 389, 466
`See application file for complete search history.
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`6,029,200 A
`
`2/2000 Beckerman et al.
`
`6,038,603 A
`6,397,246 B1
`6,591,304 B1
`7,367,051 B1
`7,480,254 B2
`2003/0074482 A1
`2005/0097212 A1
`2005/0210121 A1*
`
`3/2000 Joseph
`5/2002 Wolfe
`7/2003 Sitaraman et al.
`4/2008 Siegrist et al.
`1/2009 Mayer
`4/2003 Christensen et al.
`
`5/2005 Engel et al.
`9/2005 Taylor et al.
`
`.............. .. 709/218
`
`* cited by examiner
`
`Primary Examiner—John Pezzlo
`(74) Attorney, Agent, or Firm—Townsend and Townsend and
`Crew, LLP
`
`(57)
`
`ABSTRACT
`
`In one embodiment, a system for adapting the interoperation
`of nodes in an information processing system is disclosed.
`The system includes a protocol handler, a protocol attribute
`information store and a protocol attribute selector. The pro-
`tocol handler manages a first connection and a second con-
`nection over the network using a protocol. The protocol
`attribute information store holds a plurality of attributes. The
`protocol attribute selector evaluates first information related
`to a first connection, utilizes the protocol attribute informa-
`tion store to determine first protocol attributes corresponding
`to the first connection, and communicates the first attributes
`for the first connection to the protocol handler. Additionally,
`the protocol attribute selector evaluates second information
`related to a second connection, utilizes the protocol attribute
`information store to determine second attributes correspond-
`ing to the second connection, and communicates the second
`attributes for the second connection the protocol handler. The
`protocol handler uses first attributes for the first connection
`and second attributes for the second connection.
`
`11 Claims, 14 Drawing Sheets
`
`URI Received
`from Node
`
`
`
`
`
`420
`
`URI Analyzed for
`Control Information
`
`Table Queried for
`Attribute(s)
`
`
`
`
`
`
`
`424
`
`428
`
`432
`
`
`
`Attribute(s) Communicated to
`TCP Handler
`
`Connection Established
`According to Any Attributes
`
`
`
`Deliver Content Object
`Through Connection
`
`
`
`435
`
`
`
`AKAMAI
`EXHIBIT 1006
`
`AKAMAI
`EXHIBIT 1006
`
`
`
`U.S. Patent
`U.S. Patent
`
`mw
`
`MM
`
`US 7,715,324 B1
`US 7,715,324 B1
`
`00||
`2:
`
`myAmVE_Bm>wMEm:
`“Em.
`
`$2
`
`_\-No_\
`
`
`
`
`
`
`
`
`
`
`
`SEm:ccm
`
`mAmVE_Bm>w
`
`
`
`$:.__B:__8_o_w
`
`o:
`
`
`
`Em:_o:m_
`
`AmVE_Bm>w
`
`_..®_n_
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`May 11, 2010
`May 11,2010
`
`Sheet 2 of 14
`Sheet 2 of 14
`
`US 7,715,324 B1
`US 7,715,324 B1
`
`woom\<A
`
`"?
`
`
`
`
`..o:._oE__mQo_O
`
`No_\
`
`X:
`
`n_O._.
`
`_o_vcm_._
`
`ocomo
`
`co:oc:n_
`
`Eficoo
`
`ocomo
`
`_ooo..o_n_
`
`9.:n_E<
`
`_9om_mm
`
`
`
`
`
`
`
`
`
`
`
`<N..O_u_
`
`
`
`
`
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`May 11, 2010
`May 11,2010
`
`Sheet 3 of 14
`Sheet 3 of 14
`
`US 7,715,324 B1
`US 7,715,324 B1
`
`Noam
`
`E
`
`"?
`
`
`
`
`_.®c._o..c__m.o_o_O
`
`
`
`Noe
`
`X:
`
`_oo9.o_n_
`
`o..:n_.E.<
`
`_9.oo_ow
`
`OZZ
`ONN
`
`mm.®_n_
`
`n_O._.
`
`$=.Em_._
`
`ocomo
`
`cozocsm
`
`HCOEOO0
`
`ocomo
`
`o_\N
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 4 of 14
`
`US 7,715,324 B1
`
``.
`
`SCIWNICHO
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`May 11, 2010
`May 11,2010
`
`Sheet 5 of 14
`Sheet 5 of 14
`
`US 7,715,324 B1
`US 7,715,324 B1
`
`ism
`
`K
`
`No_\
`
`X:
`
`"?
`
`
`_ooo..o_n_
`
`®Sn_.E.<
`
`_9oo_ow
`
`OZZ
`omm
`
`
`
`..oEmE__mpo_O
`
`DN.®_n_
`
`
`
`
`
`
`
`n_O._.
`
`_o__o:m_._
`
`ocomo
`
`cozocsm
`
`Eflcoo0
`
`mcomo
`
`o_\N
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 6 of 14
`
`US 7,715,324 B1
`
`300
`
`304 A/
`
`
`
`URI Requested
`from Server
`
`
`
`
`
`308
`
`Determine Any
`Attributes for URI
`
`
`
`
`
`312
`
`Modify TCP with
`Attributes
`
`316
`
`Deliver Content from
`Server to Client
`
`Fig. 3
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 7 of 14
`
`US 7,715,324 B1
`
`A/*
`
`416
`
`URI Received
`from Node
`
`
`
`420
`
`URI Analyzed for
`Control Information
`
`424
`
`Table Queried for
`Attribute(s)
`
`428
`
`432
`
`436
`
`
`
`
`
`Attribute(s) Communicated to
`TCP Handler
`
`Connection Established
`According to Any Attributes
`
`Deliver Content Object
`Through Connection
`
`Fig. 4
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 8 of 14
`
`US 7,715,324 B1
`
`
`
`
`
`
`
`206-1
`
`
`
`232–1
`
`
`
`A/ 500
`
`206-2
`
`Global internet
`
`232-2
`
`C2.1
`
`C2.2, C2,3, C24
`
`102-1
`
`102-2
`
`102–3
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 9 of 14
`
`US 7,715,324 B1
`
`A/ 206
`
`
`
`Data store
`
`Processor
`
`Network interfaces
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 10 of 14
`
`US 7,715,324 B1
`
`A/ 700
`
`
`
`750–1
`
`750-2
`
`Data
`source 1
`
`Data
`source 2
`
`750-N
`
`?? ?
`
`Data
`source N
`
`760
`
`TCP handler
`
`740
`
`730
`
`720
`
`FIG. 7
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 11 of 14
`
`US 7,715,324 B1
`
`810
`
`ABCE|50kTImageTIFFITHF
`logo.gif
`RehmiTITABC`|100||et||F`
`ABC`|1GE | Video | FIFE
`
`
`
`
`
`820
`
`ABC
`DEF
`
`|
`
`Premium | ...
`Standard
`...
`
`attra=100000, attró=fast
`attré–300000, attró=slow
`
`FIG. 8A
`
`
`
`830
`
`123.0120340 24|_12345_| _US_|_|alt=25~
`
`AS #
`
`Location
`
`Service Type | Link utilization
`
`...
`
`Attribs
`
`FIG. 8B
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 12 of 14
`
`US 7,715,324 B1
`
`850
`
`937
`
`1877
`
`… attra=300000, attró=slow
`
`FIG. 8C
`
`
`
`_P3_|_25_|_0_|_100000_|_smalle
`
`175000
`
`| large file, latent user
`
`FIG. 9
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 13 of 14
`
`US 7,715,324 B1
`
`Receive request R1
`On Connection C1
`
`1010
`
`J' 000
`
`yes
`
`System load »
`??1?
`
`1015
`
`
`
`yes
`
`AS link
`utilization >
`??2?
`
`1020
`
`1025
`
`1060
`
`Use standard
`TCP params
`
`
`
`yes
`
`1040 U?
`
`Determine RTT
`
`1050
`
`Determine large buffer
`with less aggressive
`TCP timing
`
`Determine medium buffer
`with more aggressive
`TCP timing
`
`
`
`Modify TCP params
`
`FIG. 10
`
`1030
`
`no (1060)
`
`1035
`
`File size &
`?
`??47
`
`Disable
`TCP pacing,
`determine send
`buffer size
`
`
`
`U.S. Patent
`
`May 11, 2010
`
`Sheet 14 of 14
`
`US 7,715,324 B1
`
`J" 100
`
`Receive request R1
`On connection C1
`
`Obtain IP address
`
`Determine geography
`
`1110
`
`1115
`
`1120
`
`1125
`
`Determine AS
`
`
`
`1130
`
`AS Link
`utilization >
`??2?
`
`Geo Is US &&
`onnection Is Cabl
`
`1140
`
`Profile=G1
`
`Geo Is US &&
`onnection ls DSL?
`
`Profile=G2
`
`Geo Is US &&
`onnection Is SAT2
`
`Profile=G3
`
`
`
`
`
`
`
`
`
`eo |s Other
`Connection is UNK
`&& Have Info?
`
`Profile=Custom
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`1175
`
`
`
`Use standard
`TCP params
`
`1180
`
`Modify TCP params
`based on profile
`
`FIG. 11
`
`
`
`US 7,715,324 B1
`
`1
`CONDITIONAL PROTOCOL CONTROL
`
`CONDITIONAL PROTOCOL CONTROL
`
`This application claims priority to Australian Patent Appli-
`cation Serial No. 2009201833, filed Mar. 26, 2009, which
`claims priority to International Patent Application Serial No.
`PCT/US2009/038361, filed Mar. 26, 2009; which are both
`incorporated herein by reference in their entirety.
`This application also claims priority to U.S. patent appli-
`cation Ser. No. 12/572,981, filed Oct. 2, 2009, which is a
`continuation-in-part of International Patent Application
`Serial No. PCT/US2009/038361, filed Mar. 26, 2009; which
`are both incorporated herein by reference in their entirety.
`
`BACKGROUND
`
`This disclosure relates in general to interoperating nodes in
`an information processing system, such as an Internet content
`delivery system or an Internet transaction acceleration sys-
`tem, and, but not by way of limitation, to control of connec-
`tion protocols.
`In an information processing system, including communi-
`cations networks such as the Internet, two or more nodes can
`work together, for example exchanging information or shar-
`ing resources, using one or more protocols that enable the
`participating nodes to interoperate. Nodes need not be physi-
`cally distinct from one another, though they may be; nor-
`mally, 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 interoperat-
`ing nodes are often independently operated or managed; the
`Internet includes many well known examples of the interop-
`eration of two or more independently managed nodes.
`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 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.
`Standard protocols often employ the use of attributes, such
`as configurable parameters and selectable algorithms, to per-
`mit the protocol to operate effectively in various situations.
`For example, TCP controls message size, the rate at which
`messages are exchanged, and factors related to network con-
`gestion through the use ofattributes, including both by the use
`of parameters, such as the receive window field used in slid-
`ing window flow control and the retransmission timer, and by
`the use of algorithms, such as slow-start, congestion avoid-
`ance, fast retransmit, and fast recovery algorithms. It is often
`the case, in many standard protocols, that at each node the
`initial protocol attribute settings to be used for all the com-
`munication connections at the node can be independently
`specified by the operator of the node.
`A protocol can also be customized, which in general
`requires that each node have installed customized compo-
`nents 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 nodes,
`or in the alternative require widespread action to install the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`
`protocol customized components, or possibly both, protocol
`customization is used in order to add function, improve per-
`formance, 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.
`
`SUMMARY
`
`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 con-
`ditionally adapted to the circumstances, use, and/or operating
`conditions of the interoperation of the nodes. In another
`embodiment a method is disclosed for utilizing a standard
`protocol to 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 oper-
`ating conditions of the interoperation of the nodes.
`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, and a protocol
`attribute selector. The protocol handler manages a first con-
`nection 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 con-
`nections. The protocol attribute selector receives first infor-
`mation based on a 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 corre-
`sponding to the connection that will service the second
`request for content, and provides the protocol handler with
`the second attributes for the connection servicing the second
`request for content.
`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. A first
`connection that sends the content from the server to a first
`
`node is configured according to the first protocol attributes. A
`second request for content is received over the network at the
`server. The second request for content is evaluated to select
`second protocol 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.
`In another embodiment, a system for conducting transac-
`tions over a network is 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 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 transac-
`tion, receives second information based on a second transac-
`tion, identifies second attributes corresponding to the connec-
`tion that will service the second transaction, and provides the
`protocol handler with the second attributes for the connection
`servicing the second transaction.
`
`
`
`US 7,715,324 B1
`
`3
`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
`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, ser-
`vicing the second transaction, between the server and a sec-
`ond 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.
`Techniques for modifying the performance of a transport
`layer protocol in response to a request for content are dis-
`closed. A connection can be established between a content
`
`distribution server and an end user computer according to
`preconfigured parameters. When a request for content is
`received over the connection, the content distribution server
`can determine one or more parameters relating to the perfor-
`mance of the connection using information from the request.
`The content distribution server can modify the connection at
`the transport layer according to the one or more parameters.
`Thereafter, the transport layer can manage delivery of the
`requested content to the end user computer in accordance
`with the modified parameters. In various embodiments, the
`content distribution server includes a modified TCP protocol
`stack which adjusts timing, pacing, and buffer allocation
`associated with a connection in response to requests from an
`application-layer data source.
`In one embodiment, a method for managing delivery of
`content in a system comprising a server and an end user
`computer is disclosed. The method includes establishing a
`first connection at the server for communicating with the end
`user computer and receiving a request for content from the
`end user computer over the first connection. The method also
`includes determining one or more parameters relating to the
`performance of the first connection using information from
`the request and modifying the first connection at the transport
`layer based on the one or more parameters. Modifying the
`first connection can be done without notifying the end user
`computer. The method also includes sending the requested
`content from the server to the end user computer such that the
`transport layer manages delivery ofthe content in accordance
`with the modified parameters.
`Optionally, the method includes retrieving metadata asso-
`ciated with a requested file and modifying the first connection
`based on the metadata. Alternatively or additionally,
`the
`method can include selecting a predetermined performance
`profile for the first connection using the information from the
`request and modifying the first connection based on the pre-
`determined performance profile. The method can include
`determining a connection type of the end user computer and
`a latency characteristic associated with the connection type
`and modifying the first connection at the transport layer based
`on the latency characteristic. The method can also include
`determining a data size of the requested content, measuring a
`round trip time between the server and the end user computer
`when the data size exceeds a predetermined value, and modi-
`fying the first connection at the transport layer based on the
`size of the requested content and the round trip time.
`In another embodiment, a content distribution server is
`disclosed. The server includes a network interface, a proces-
`sor, a protocol handler, and a data source. The network inter-
`face includes a plurality of ports for sending and receiving
`data over a connecting network. The processor is coupled to
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`
`the network interface and manages a plurality of connections
`to end user computers. The protocol handler establishes the
`connections with the end user computers according to pre-
`configured transport layer parameters of the content distribu-
`tion server and manages the manner in which data is trans-
`mitted over the connections. The data source supplies the
`requested content. The data source monitors a first connection
`for a request, determines one or more modified transport layer
`parameters based on the request, and directs the protocol
`handler to modify the first connection independently of the
`other connections based on the one or more transport layer
`parameters.
`In still another embodiment, a content distribution server is
`disclosed. The server includes means for sending and receiv-
`ing data over a connecting network, means for managing a
`plurality of connections to end user computers, and means for
`establishing a connection with each end user computer
`according to preconfigured transport layer parameters. The
`server includes means for managing data transmission over
`the plurality of connections, means for modifying a connec-
`tion based on one or more transport layer performance param-
`eters, and means for supplying requested content to the end
`user computers over the plurality of connections. The server
`also includes means for monitoring a first connection for a
`content request, means for determining the one or more trans-
`port layer performance parameters for the first connection
`based on the request, and means for sending the requested
`content over the first connection modified by the one or more
`transport layer performance parameters.
`In yet another embodiment, a computer program product
`comprising a computer-readable medium is disclosed. The
`computer-readable medium is encoded with one or more
`sequences of one or more instructions which, when executed
`by a processor, perform steps of establishing a first connec-
`tion at the server for communicating with an end user com-
`puter and receiving a request for content from the end user
`computer over the first connection. The instructions operate
`to determine one or more parameters relating to the perfor-
`mance of the first connection based on information from the
`
`request and to modify the first connection at the transport
`layer using the one or more parameters without notifying the
`end user computer. Additionally, the instructions operate to
`send the requested content from the server to the end user
`computer such that the transport layer manages delivery of
`the content in accordance with the modified parameters.
`Further areas of applicability of the present disclosure will
`become apparent from the detailed description provided here-
`inafter. It should be understood that the detailed description
`and specific examples, while indicating various embodi-
`ments, are intended for purposes of illustration only and are
`not intended to necessarily limit the scope of the disclosure.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 depicts a block diagram of an embodiment of a
`content delivery system.
`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 ofan embodiment ofa process
`for modification of the TCP protocol for various connections
`to a server.
`
`FIG. 4 illustrates a flowchart ofan embodiment ofa process
`for modifying protocol attributes potentially on a connection-
`by-connection basis.
`FIG. 5 shows aspects of a content delivery system.
`
`
`
`US 7,715,324 B1
`
`5
`FIG. 6 is a block diagram of an embodiment of a content
`distribution server.
`
`FIG. 7 shows an exemplary content distribution server
`protocol stack.
`FIGS. 8A, 8B, and 8C show exemplary data elements such
`as can be used with a content distribution server.
`
`FIG. 9 shows exemplary performance profiles such as can
`be used with a content distribution server.
`
`FIG. 10 is a flowchart of a process for modifying transport
`layer protocol attributes.
`FIG. 11 is a flowchart of process for modifying transport
`layer protocol attributes.
`In the 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 refer-
`ence 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 description is applicable
`to any one of the similar components having the same first
`reference label irrespective of the second reference label.
`
`DETAILED DESCRIPTION OF EMBODIMENTS
`
`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
`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.
`Referring first to FIG. 1, a block diagram ofan embodiment
`of an Internet content delivery system 100 is shown. Gener-
`ally, 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 110 has one or more servers that provide
`content object downloads. The content delivery system 110
`can include any number of cache servers, application servers,
`content servers, service servers, and/or database servers to
`provide content to the clients 102. Although this embodiment
`shows particular communication pairs, other embodiments
`could communicate between any pair of nodes on a network,
`including between pairs of clients orbetween pairs of servers,
`and yet other embodiments could communicate among more
`than two nodes, such as in a broadcast or multicast implemen-
`tation.
`
`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 are shown. 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 con-
`tent, multimedia, or software downloads, and the second node
`being a server 206 that provides information in response to a
`request. TCP operates in the transport layer ofthe 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 ofcomputers across an available system or
`intersystem interface;
`interoperate using communications
`networks other than the Internet 104, such as a private com-
`munications network; interoperate using the Internet 104 or a
`private network using protocols other than TCP, such as UDP,
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`RTP, multicast protocols, and other standard protocols in the
`transport layer; interoperate using the Internet 1 04 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 as in clusters or multicast groups; or interop-
`erate, using standard protocols and the Internet or a private
`network, other than as a client and server, including interop-
`erating as peers, as collaborative nodes, or as a group ofnodes
`under the common control of one or more other nodes or
`under the common control of a controller.
`
`In the primary embodiment, the server 206 conditionally
`adapts the attributes of the TCP protocol for each TCP con-
`nection 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 pro-
`tocol implementation at every node, and therefore does not
`comprise implementing a customized protocol as previously
`described; rather, the primary embodiment utilizes the stan-
`dard 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 a client 102; the server 206
`conditionally adapts the attributes of the TCP protocol or
`other protocol for groups of connections or sessions estab-
`lished by clients 102; the server 206 conditionally adapts the
`attributes of the TCP protocol or other protocol for connec-
`tions or sessions established by groups or subsets of groups of
`clients 102; the client 102 conditionally adapts the attributes
`ofthe TCP protocol for each TCP connection established; the
`client 102 conditionally adapts the attributes of other proto-
`cols 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 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 connec-
`tions 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 adapts the attributes of the TCP pro-
`tocol or other protocol for groups of connections or sessions
`of at least some nodes of an interoperating group ofnodes; or,
`a controller conditionally adapts the attributes of the TCP
`protocol or other protocol for connections or sessions estab-
`lished by groups or subsets of groups of nodes.
`Software, software modifications, or equivalent function,
`may optionally be implemented at a server, client, or node that
`sets the conditionally adapted protocol attributes of a connec-
`tion or session, but need not be implemented at servers, cli-
`ents, or nodes that passively participate in a conditionally
`adapted protocol connection or session. Such software, soft-
`ware 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 facility for program-
`matically 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 simi-
`lar interface may be implemented.
`Conditionally adapting the protocol for each connection or
`session, or collection of connections or sessions, results in at
`
`
`
`US 7,715,324 B1
`
`7
`least one node that, concurrently or over time, uses a protocol
`for multiple unrelated connections or sessions wherein the
`protocol attributes vary, at least initially and sometimes per-
`sistently, from one connection or session to another, most
`often varying differently from any ordinary protocol attribute
`variations that naturally occur from one connection or session
`to another through use of the standard protocol implementa-
`tion among heterogeneous nodes.
`In the primary embodiment, TCP connections are estab-
`lished in order to use HyperText Transfer Protocol (HTTP) to
`communicate information requests from clients 102 to serv-
`ers 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 Inter-
`connection (OSI) initiative. Other embodiments use applica-
`tion-layer protocols other than HTTP in conjunction with
`TCP; use TCP alone, i.e., without HTTP; use other protocols;
`or, use other 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 ofthe remainder ofthe 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
`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 hierar-
`chical 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).
`In the primary embodiment, the server 206 bases the con-
`ditional adaptation ofthe attributes ofthe 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 ofthe attributes
`ofthe TCP protocol or other protocol on th