throbber
US0077l5324Bl
`
`(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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket