throbber
     
`Exhibit  1001  
`  
`
`
`
`Exhibit 1001Exhibit 1001
`
`

`

`(12)
`
`United States Patent
`Lowery et a].
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 7,188,145 B2
`Mar. 6, 2007
`
`US007188145B2
`
`(54) METHOD AND SYSTEM FOR DYNAMIC
`DISTRIBUTED DATA CACHING
`
`(75) IIWBIIIOFSI Keith A- Lowery, Richardson, TX
`(Us); Bryan S- Chm, Plano, TX (Us);
`David A. Consolver, Arlington, TX
`(US); Gregg A. DeMasters, Plano, TX
`(Us)
`
`_
`(73) Assrgnee: EpicRealm Licensing LLC, Dallas, TX
`(Us)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`USC 154(b) by 875 days.
`
`(21) Appl. No.2 09/759,406
`
`(22) Filed:
`
`Jan. 12, 2001
`_
`_
`_
`PI‘IOI‘ Pllbllcatloll Data
`US 2002/0107934 A1
`Aug. 8, 2002
`
`(65)
`
`(51) Int Cl
`(2006.01)
`G06F 15/167
`(52) US. Cl. .................... .. 709/214; 709/203; 709/217;
`709/219; 709/226; 707/10; 707/200; 710/56;
`711/119; 711/126; 711/130; 711/135
`(58) Field Of Classi?cation Search .............. .. 709/213,
`709/217, 201, 212, 203, 205, 215, 216, 248;
`707/8,10; 711/151
`See application ?le for Complete Search history
`_
`References Clted
`U.S. PATENT DOCUMENTS
`
`(56)
`
`4,603,382 A *
`
`7/1986 Cole et a1. .................. .. 710/56
`
`5,522,045 A *
`
`5/1996 Sandberg . . . . . . . .
`
`. . . .. 709/215
`
`5,537,572 A *
`
`7/1996 Michelsen et a1.
`
`711/135
`
`5,701,427 A * 12/1997 Lathrop . . . . . . . . . .
`
`. . . .. 709/237
`
`709/226
`7/1998 Gregerson et a1.
`5,778,185 A *
`1/1999 Boyle .................... .. 707/10
`5,864,854 A *
`8/1999 Schmuck et a1. ......... .. 707/200
`5,940,838 A *
`5,968,176 A * 10/1999 Nessett et a1. ............ .. 713/201
`5,987,477 A * 11/1999 Schmuck et a1. ......... .. 707/201
`
`5,988,847 A * 11/1999 McLaughlin et a1. ........ .. 700/9
`6,006,254 A * 12/1999 Waters et a1. ............. .. 709/205
`
`6,026,474 A
`6,065,102 A *
`6,098,064 A *
`
`2/2000 Carter et a1. .............. .. 711/202
`5/2000 Peters et a1. .... ..
`711/151
`8/2000 P110111 et a1. ................. .. 707/2
`
`(Continued)
`
`FOREIGN PATENT DOCUMENTS
`
`EP
`
`0993 163 Al
`
`4/2000
`
`(Continued)
`OTHER PUBLICATIONS
`
`Author: John Borland, Article entitled “Net video not yet ready for
`prime time”, printed from Web site WWW.cnet.com on Aug. 15,
`2000'
`
`(Continued)
`Primary ExamineriSaleh Najjar
`Assistant ExamineriMichael Won
`(74) Attorney, Agent, or FirmiBaker Botts L.L.P.
`
`(57)
`
`ABSTRACT
`
`A method and system for dynamic distributed data caching
`is presented. The method includes providing a cache com
`munity (402) comprising at least one peer (413). Each peer
`has an associated ?rst content portion (511) indicating
`content to be cached by the respective peer. A client (404)
`may be allowed to join the cache community. A peer list
`(426) associated With the cache community is updated to
`include the client. The peer list indicates the peers in the
`cache community. Arespective second content portion (511)
`is associated With each peer based on the addition of the
`client.
`
`36 Claims, 11 Drawing Sheets
`
`UPDATE PEER LIST
`
`910
`
`SEND ALLOW MESSAGE
`
`UPDATE ALLOCATION TABLE
`
`914
`
`SEND UPDATE PEER LIST MESSAGE
`
`Petitioner Ex. 1001 Page 1
`
`

`

`US 7,188,145 B2
`Page 2
`
`US. PATENT DOCUMENTS
`
`8/2000 Wang ....................... .. 711/119
`6,112,279 A *
`9/2000 Walker et al. .
`707/8
`6,122,629 A *
`6,167,438 A * 12/2000 Yates et al.
`709/216
`6,167,490 A * 12/2000 Levy et al. ..... ..
`711/148
`6,199,179 B1* 3/2001 Kaulfman et al.
`714/26
`6,205,481 B1* 3/2001 Heddaya et al.
`. 709/226
`6,263,302 B1 *
`7/2001 Hellestrand et al. ........ .. 703/17
`6,330,605 B1* 12/2001 Christensen et al. ...... .. 709/226
`6,477,150 B1* 11/2002 Maggenti et al.
`370/312
`6,487,583 B1* 11/2002 Harvey et al. ..... ..
`709/204
`6,542,926 B2* 4/2003 Zalewski et al.
`709/213
`6,725,261 B1* 4/2004 Novaes et al.
`709/220
`6,785,704 B1* 8/2004 McCanne .... ..
`718/105
`2002/0026560 A1* 2/2002 Jordan et al.
`711/120
`2002/0103972 A1* 8/2002 Satran et al. ............. .. 711/119
`
`FOREIGN PATENT DOCUMENTS
`
`W0
`
`WO 98/22891
`
`5/1998
`
`OTHER PUBLICATIONS
`
`Author: Corey Grice, Article entitled “Start-up taps swapping to
`ease Web bottlenecks”, printed from web site www.cnet.com on
`Aug, 15, 2000.
`Author: VTrails.com. Product information regarding company’s
`Full Duplex Packet Cascading technology printed from web site
`www.vtrails.com on Aug. 15, 2000.
`Author Vinod Valloppillil and Keith W. Ross, Internet-Draft docu
`ment entitled “Cache Array Routing Protocol v1.0”, printed from
`web site www.globecom.net on Nov. 14, 2000.
`Author: Microsoft Corporation. Information regarding the Cache
`Array Routing Protocol (CARP) and Microsoft ProXy Server 2.0,
`printed from web site www.msdn.microsoft.com on Oct. 9, 2000.
`
`Author: Geek.com. Information news article entitled “Cash for your
`unused CPU cycles”, printed from web site www.geek.com on Jun.
`30, 2000.
`Author: Dcypher.net. Answers to frequently answered questions
`v1.5, printed from web site www.dcypher.net on Jun. 30, 2000.
`Author: Popular Power. Information regarding the company’s Popu
`lar Power for Windows software, printed from web site www.
`popularpower.com on Jun. 30, 2000.
`Author: ProcessTree Network. Information regarding their “for
`pay” distributed processing network, printed from web site www.
`distributedscience.com on Jun. 30, 2000.
`Author: Keith Schultz, Article entitled “Pushing content to the
`Internet’s Edge”, printed from web site www.internetweek.com on
`Jan. 11, 2001.
`US. Appl. No. 09/759,392, ?led Jan. 12, 2001, entitled “Method
`And System For Community Data Caching” 78 total pages.
`Greg Barish, et al., “World Wide Web Caching: Trends and Tech
`niques,” XP-000949799, IEEE Communications Magazine, May
`2000, pp. 178-185.
`PCT/US 02-00886 Search Report, 6 pages, Oct. 2000.
`PCT/US 02-00886 Search Report, 10 pages, Mar. 27, 2003.
`Inohara, et al., “Self-Organizing Cooperative WWW Caching,” ©
`1998 IEEE (pp. 74-83).
`Zhang, et al., “Adaptive Web Caching,” Proceedings of the 1997
`NLANR Web Cache Workshop, Apr. 25, 1997 (9 pages).
`Michel, et al., “Adaptive Web Caching: Towards a New Global
`Caching Architecture,” © 1998 Elsevier Science B. V, Computer
`Networks and ISDN Systems 30 (1998) (pp. 2169-2177).
`Karger, et al., “Web Caching with Consistent Hashing,” © 1999
`Elsevier Science B. V, Computer Networks 31 (1999)(pp. 1203
`1213).
`
`* cited by examiner
`
`Petitioner Ex. 1001 Page 2
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 1 of 11
`
`US 7,188,145 B2
`
`M55
`
`5302
`
`9
`
`2520
`
`Ezam
`
`-5382
`M56
`
`:u»:»mmx/DE
`
`V‘
`
`LO
`
`_._.Z___.________
`
`Illllllll
`mm./mm_
`
`-52902
`
`was
`
`Petitioner Ex. 1001 Page 3
`
`Petitioner Ex. 1001 Page 3
`
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 2 0f 11
`
`US 7,188,145 B2
`
`I- _ _ _ _ _ - _ _ — _ _ _ _ _ _ — _ _ _ _ _ _ _ _ __"I
`
`I
`i
`|
`:
`|
`:
`{ 102\
`1
`I
`I
`l
`
`I :
`
`120 52
`150
`/
`\ F‘l
`CACHE
`BROWSER 124
`ON/OFF
`|
`\
`CACHE MODULE
`125\ LOCATION TABLE
`
`126
`
`122
`
`l
`I
`
`l
`|
`'
`I
`I
`{
`l 104/
`I
`I
`
`l
`I
`I
`i
`I
`I
`l
`:
`|
`:
`:
`:
`: 106
`I
`I
`I
`I
`l
`l
`L
`
`f
`
`140 32
`150
`/
`\ I1
`CACHE
`BROWSER 144
`ON/OFF
`l
`\
`CACHE MODULE
`148% LOCATION TABLE
`
`146
`
`142
`
`32
`
`170
`160
`/
`L
`CACHE
`BROWSER 164
`1 L ON/OFF
`CACHE MODULE
`168% LOCATION TABLE
`
`,___—___
`
`166
`
`162
`
`Petitioner Ex. 1001 Page 4
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 3 0f 11
`
`US 7,188,145 B2
`
`FIG. 3
`( START )
`
`200\ BROWSER OENERATES
`REQUEST
`
`CACHE MODULE
`INTERCEPTS REQUEST
`
`BROADCAST
`HEARTBEAT
`
`V230
`
`WAIT
`
`f232
`
`204\
`
`DETERMINE
`REQUEST URL
`
`205\
`
`‘
`DETERMINE LOCATION
`OF COMMUNITY
`CACHE FOR URL
`
`208x CHECK CACHE FOR
`CONTENT
`
`NO
`
`CACHED
`1)
`'
`
`21D
`
`YES
`212% RETRIEVE CACHED
`
`I
`RETRIEVE FROM
`ORIGIN SERVER
`
`“SEE
`
`I.
`TRANSMIT TO
`CACHE LOCATION \ZIB
`
`V
`CACHE
`
`CONTENT
`
`4
`
`IF
`DISPLAY IN BROWSER
`
`214/
`
`CID
`
`Petitioner Ex. 1001 Page 5
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 4 0f 11
`
`US 7,188,145 B2
`
`FIG. 4
`
`@
`
`INITIATE CACHE MODULE
`
`f500
`
`BROADCAST CACHE ON MESSACE f502
`1
`NECOTIATE PRIMARY DISTRIBUTION f503
`L
`NECOTIATE SECONDARY DISTRIBUTION /304
`1
`UPDATE LOCATION TABLES
`1
`RECEIVE DISTRIBUTION SHARE \506
`
`/505
`
`510
`
`COLLECT
`STATISTICS
`
`CHE
`DATA
`
`1
`
`BROADCAST CACHE OFF MESSAGE #512
`1
`CLEAR CACHE
`
`\514
`
`FIG. 5
`
`PRIMARY ?
`
`v
`
`"
`
`w
`
`J‘
`
`v
`
`'
`
`%ABCOEFCH1JKLMNOPQRSTUVWXYZ
`
`106
`104
`102
`ABCDEFGHlJKLMNOPQRSTUVWXYZ
`
`104
`
`100
`
`102
`
`106
`
`102
`
`104
`
`ALTERNATEgABCDyEFGHLJKLMNORQRSTUVWXY;
`
`SECONDARY
`
`106
`
`‘vi
`
`102
`
`v
`
`104
`
`Petitioner Ex. 1001 Page 6
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 5 0f 11
`
`US 7,188,145 B2
`
`400
`\
`
`FIG. 6
`
`4/06
`
`415
`\ COMMUNITY 410
`/
`
`MASTER
`
`420
`424\
`
`ALLOW
`MESSAGE
`
`422
`426) PEER LIST
`
`412
`VL
`430
`
`MEMBER
`
`452
`
`DYNAMIC
`CACHE APP
`/
`428
`
`I
`
`I
`
`/
`402
`
`440
`
`442
`
`428/
`
`470
`
`472
`
`CACHE sERvER
`
`ADMIN f474
`MODULE
`L
`COMMUNITY f476
`LIST
`
`478
`f
`
`EXPIRATION
`MOTLE
`EXPIRATION /480
`MESSAGE
`
`ORIOIN SERVER
`
`CONTENT \460
`
`\
`19
`
`INTERNET
`
`I6
`
`CLIENT
`
`DYNAMIC CACHE
`APPLICATION
`
`450
`
`COMMUNITY
`REQUEST
`
`JOIN
`452/ REQUEST
`
`\404
`
`f ADD
`454 mm
`
`PROBE
`456/ MESSAGE
`
`Petitioner Ex. 1001 Page 7
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 6 0f 11
`
`US 7,188,145 B2
`
`F
`
`51 1
`CONTENT
`PORTION f
`5T0
`500
`/
`\
`CACHE A ALLOCATION
`
`502
`/
`EXPIRATION
`
`428
`/
`
`HOLD
`530% ELECTION
`MESSAGE
`
`REMOVE
`528\ PEER
`MESSAGE
`
`424
`\
`M’ééLSi‘éE
`
`PEER LIST / 426
`
`COMMUNITY M450
`REQUEST
`
`FIG 7 I
`
`‘
`
`.
`
`REMOVE
`527\ MASTER
`REQUEST
`
`f MASTER
`526
`REQUEST
`
`DYNAMIC
`AFFILIATION
`PORTION
`Q0}.
`UPOATE / \ ADD
`
`REgOJEST f452
`
`MASTER \
`REQUEST
`454
`
`NOMINATE
`4% MASTER
`MESSAGE
`52
`
`PROBE
`MESSAGE
`
`\
`456
`
`MEMBER
`STATUS
`REQUEST
`/
`522
`
`UPOATE
`PEER LIST
`MESSAGE
`\
`520
`
`Petitioner Ex. 1001 Page 8
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 7 of 11
`
`US 7,188,145 B2
`
`fizmm2520
`
`20:53
`
`Q3
`
`M55
`
`zoEo.__
`
`zo:<8j<
`
`mi
`
`fimsomm
`
`m.
`
`on
`
`<3
`
`Petitioner Ex. 1001 Page 9
`
`Petitioner Ex. 1001 Page 9
`
`
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 8 0f 11
`
`US 7,188,145 B2
`
`@
`
`SEND COMMUNITY
`600
`\ REQUEST TO
`ADMIN MODULE
`
`602
`
`RECEIVE
`RESPONSE
`I?
`
`F I G. 9
`
`SEND PROBE
`622
`\ MESSAGE 0N
`KNOWN PORT
`
`/ 604
`
`EXAMINE
`COMMUNITY LIST
`I
`FIND "BEST FIT" /606
`COMMUNITY TO JOIN
`
`RECEIVE
`RESPONSE
`
`624
`
`DO ANY
`COMMUNITIES
`MATCH "BEST FIT"
`CRITERIA?
`
`NOMINATE SELF
`AS A MASTER
`I
`SEND A NUMBER TO
`ADMIN MODUL:
`620
`
`5
`END
`
`SEND JOIN REQUEST
`MESSAGE TO MASTER \610
`
`CLIENT ADDED
`TO COMMUNITY
`I
`
`614
`
`‘I—
`PICK NEXT "BEST
`FIT" COMMUNITY \616
`?_____
`
`Petitioner Ex. 1001 Page 10
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 9 0f 11
`
`US 7,188,145 B2
`
`( MASTER )
`AGTIvE
`I:
`9OO\ LISTEN FOR JOIN REQUEST
`I
`EVALUATE JOlN REQUEST
`
`902\
`
`FIG 70
`
`IGNORE JOIN REQUEST f906
`
`L
`
`_
`
`908A
`
`910
`
`UPDATE PEER LIST
`I
`SEND ALLOw MESSAGE
`I
`912/ UPDATE ALLOCATION TABLE
`I
`SEND UPDATE PEER LIST MESSAGE
`I
`
`914
`
`(
`
`)
`
`MASTER
`ACTIVE
`‘I’:
`SEND MEMBER
`STATUS REQUEST
`
`IOOO\
`
`REMOVE MEMBER
`1006/ FROM PEER LIST
`I__—
`
`FIG. 11
`
`SEND UPDATE PEER fIOOs
`LIST MESSAGE
`I
`UPDATE
`ALLOCATION TABLE
`
`\
`T010
`
`:1
`wAIT FOR NEXT
`\IOO4
`STATUS INTERVAL
`|____
`
`Petitioner Ex. 1001 Page 11
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 10 0f 11
`
`US 7,188,145 B2
`
`FIG. 13
`
`MASTER
`ACTIVE
`
`1200\
`
`MASTER TO BE
`SHUT DDwN
`
`(
`
`)
`
`FIG. 12
`MASTER
`ACTIVE
`C
`LISTEN FOR
`HOO\ DEPARTING
`MEMBERS
`T
`1102\ REcETvE REMovE
`PEER MESSAGE
`T
`1104/ REMOVE MEMBER
`FROM PEER LIST
`T
`
`UPDATE
`/ ALLOCATION
`H06
`TABLE
`l
`SEND UPDATE
`/ PEER LIST
`“08
`MESSAGE
`I
`
`1220
`j
`SEND REMovE
`MASTER REQUEST
`
`NO
`
`A
`v
`1202\ DETERMINE NEw
`MASTER
`M
`1204\ REMDvE SELF FROM
`PEER LIST
`SEND AiMTNATE
`1206\ MASTER To NEw
`MASTER
`
`RESPONSE?
`
`1210/ SHUT DOWN MASTER
`4
`SEND PEER LlST
`MESSAGE
`T
`1214A SEND UPDATE MASTER
`
`1212f
`
`CM:
`
`Petitioner Ex. 1001 Page 12
`
`

`

`U.S. Patent
`
`Mar. 6, 2007
`
`Sheet 11 0f 11
`
`US 7,188,145 B2
`
`FIG. 74
`
`MEMBER
`ACTIVE
`>11
`13()()\ DETERMINE TIME SINCE LAST
`MEMBER STATUS REQUEST
`
`EXCEED
`THRESHOLD
`9
`
`I304\
`
`SEND HOLD
`ELECTION MESSAGE
`
`I506\
`
`V
`RECEIVE RESPONSES
`
`1510/
`
`ABORT ELECTION
`I
`
`‘
`SELECT NEW MASTER
`
`\1514
`
`BUILD NEW PEER LIST
`
`\1312
`
`‘I
`SEND NOMINATE MASTER
`TO NEW MASTER
`
`\I5I6
`
`NEW MASTER SENDS
`UPDATE MASTER
`
`i)
`
`RT320
`
`Petitioner Ex. 1001 Page 13
`
`

`

`US 7,188,145 B2
`
`1
`METHOD AND SYSTEM FOR DYNAMIC
`DISTRIBUTED DATA CACHING
`
`TECHNICAL FIELD OF THE INVENTION
`
`This invention relates in general to the ?eld of data
`processing systems and, more particularly, to a method and
`system for dynamic distributed data caching.
`
`BACKGROUND OF THE INVENTION
`
`As computers have groWn increasingly important in
`today’s society, the importance of the Internet has also
`increased. As increasing numbers of users access the Inter
`net, the need for ef?cient use of bandwidth has also
`increased. The increasing numbers of requests handled by
`the Internet are increasing the delay experienced by a user
`betWeen generating a request and receiving a response to the
`request because of bandWidth limitations.
`One traditional solution to decreasing bandWidth usage
`and decreasing the delay experienced by the user has
`involved caching previously requested content at the user’s
`computer for faster retrieval. A related traditional solution
`has involved caching previously requested content for mul
`tiple users at a single cache server. Another traditional
`solution has involved increasing the bandWidth of the net
`Work connection betWeen the Internet, the user and the Web
`servers handling the requests. HoWever, traditional solutions
`have often failed as the number of requests continue to
`increase and overload single cache servers and because of
`the expense associated With maintaining large numbers of
`high speed connections to the Internet. In addition, the
`traditional solutions have not utiliZed the “alWays-on” nature
`of neWer broadband connections such as digital subscriber
`line and cable modems.
`
`SUMMARY OF THE INVENTION
`
`From the foregoing, it may be appreciated that a need has
`arisen for a method and system for dynamic distributed data
`caching to provide more ef?cient use of bandWidth.
`According to one embodiment of the present invention, a
`method for dynamic distributed data caching is provided.
`The method comprises providing a cache community com
`prising at least one peer. Each peer has an associated ?rst
`content portion indicating content to be cached by the
`respective peer. The method further comprises alloWing a
`client to join the cache community, updating a peer list
`associated With the cache community to include the client,
`the peer list indicating the peers in the cache community, and
`associating a respective second content portion With each
`peer based on the addition of the client. The second content
`portion is distinct from the ?rst content portion.
`According to another embodiment of the present inven
`tion, a system for dynamic distributed data caching is
`presented. The system comprises logic encoded on storage.
`The logic is operable to provide a cache community com
`prising at least one peer. Each peer has an associated ?rst
`content portion indicating content to be cached by the
`respective peer and alloW a client to join the cache commu
`nity. The logic is further operable to update a peer list
`associated With the cache community to include the client.
`The peer list indicates the peers in the cache community. The
`logic is further operable to associate a respective second
`content portion With each peer based on the addition of the
`client. The second content portion is distinct from the ?rst
`content portion.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`According to a further embodiment of the present inven
`tion, a method for dynamic distributed data caching is
`presented. The method comprises determining that a ?rst
`master associated With a cache community is non-opera
`tional, electing a second master to replace the ?rst master in
`the cache community, and allocating at least one content
`portion based on the loss of the ?rst master.
`According to a yet another embodiment of the present
`invention, a system for dynamic distributed data caching is
`presented. The system comprises logic encoded on storage.
`The logic is operable to determine that a ?rst master asso
`ciated With a cache community is non-operational, elect a
`second master to replace the ?rst master in the cache
`community, and allocate at least one content portion based
`on the loss of the ?rst master.
`According to yet a further embodiment of the present
`invention, a method for dynamic distributed caching is
`presented. The method comprises requesting a list of cache
`communities from a cache server and determining Whether
`at least one existing cache community exists. The method
`further comprises attempting to join a one of the existing
`cache communities When the existing cache communities
`are found and generating a neW cache community When no
`existing cache communities are found.
`According to another embodiment of the present inven
`tion, a system for dynamic distributed caching is presented.
`The system comprises logic encoded on storage. The logic
`is operable to request a list of cache communities from a
`cache server and determine Whether at least one existing
`cache community exists. The logic is further operable to
`attempt to join a one of the existing cache communities
`When the existing cache communities are found and generate
`a neW cache community When no existing cache communi
`ties are found.
`According to a further embodiment of the present inven
`tion, a method for dynamic distributed data caching is
`presented. The method comprises generating a content
`request for requested content at a ?rst peer in a cache
`community, determining a second peer associated With the
`requested content, the second peer being associated With the
`cache community, and retrieving, by the ?rst peer, the
`requested content from the second peer.
`According to yet another embodiment of the present
`invention, a system for dynamic distributed data caching is
`presented. The system comprises logic encoded on storage.
`The logic is operable to generate a content request for
`requested content at a ?rst peer in a cache community,
`determine a second peer associated With the requested
`content, the second peer being associated With the cache
`community, and retrieve, by the ?rst peer, the requested
`content from the second peer.
`According to yet a further embodiment of the present
`invention, a method for dynamic distributed data caching is
`presented. The method comprises communicating a com
`munity request from a dynamic cache module to an admin
`istration module and receiving a community list from the
`administration module in response to the community
`request, the community list including a list of communities.
`The method further comprises generating a join request to
`attempt to join a one of the communities in the community
`list and receiving an alloW message associated With the one
`of the communities. The method further comprises receiving
`a peer list associated With the one of the communities,
`receiving a content request, and storing content associated
`With the content request.
`According to an additional embodiment of the present
`invention, a system for dynamic distributed data caching is
`
`Petitioner Ex. 1001 Page 14
`
`

`

`US 7,188,145 B2
`
`3
`presented. The system comprises logic encoded on storage.
`The logic is operable to communicate a community request
`from a dynamic cache module to an administration module
`and receive a community list from the administration mod
`ule in response to the community request. The community
`list includes a list of communities. The logic is further
`operable to generate a join request to attempt to join a one
`of the communities in the community list and receive an
`alloW message associated With the one of the communities.
`The logic is further operable to receive a peer list associated
`With the one of the communities, receive a content request,
`and store content associated With the content request.
`According to a further additional embodiment of the
`present invention, a system for dynamic distributed data
`caching is presented. The system comprises means for
`providing a cache community comprising at least one peer.
`Each peer has an associated ?rst content portion indicating
`content to be cached by the respective peer. The system
`further comprises means for alloWing a client to join the
`cache community and means for updating a peer list asso
`ciated With the cache community to include the client. The
`peer list indicates the peers in the cache community. The
`system further comprises means for associating a respective
`second content portion With each peer based on the addition
`of the client. The second content portion is distinct from the
`?rst content portion.
`According to yet a further additional embodiment of the
`present invention, a system for dynamic distributed data
`caching is presented. The system comprises means for
`determining that a ?rst master associated With a cache
`community is non-operational, means for electing a second
`master to replace the ?rst master in the cache community,
`and means for allocating at least one content portion based
`on the loss of the ?rst master.
`According to yet another further additional embodiment
`of the present invention, a system for dynamic distributed
`caching is presented. The system comprises means for
`requesting a list of cache communities from a cache server
`and means for determining Whether at least one existing
`cache community exists. The system further comprises
`means for attempting to join a one of the existing cache
`communities When the existing cache communities are
`found and means for generating a neW cache community
`When no existing cache communities are found. According
`to another additional embodiment of the present invention,
`a system for dynamic distributed data caching is presented.
`The system comprises means for generating a content
`request for requested content at a ?rst peer in a cache
`community and means for determining a second peer asso
`ciated With the requested content. The second peer is asso
`ciated With the cache community. The system further com
`prises means for retrieving, by the ?rst peer, the requested
`content from the second peer.
`According to yet a further additional embodiment of the
`present invention, a system for dynamic distributed data
`caching is presented. The system comprises means for
`communicating a community request from a dynamic cache
`module to an administration module and means for receiving
`a community list from the administration module in
`response to the community request. The community list
`includes a list of communities. The system further comprises
`means for generating a join request to attempt to join a one
`of the communities in the community list and means for
`receiving an alloW message associated With the one of the
`communities. The system further comprises means for
`receiving a peer list associated With the one of the commu
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`nities, means for receiving a content request, and means for
`storing content associated With the content request.
`The present invention provides a number of technical
`advantages. Various embodiments of the present invention
`may provide all, some or none of these advantages. One such
`technical advantage is the capability to support a dynamic
`distributed caching system. In addition, the distributed cach
`ing system is supportable Without the use of specialiZed
`hardWare as standard personal computers may be used to
`support the distributed caching system. A further technical
`advantage is decreased utilization of expensive connections
`to the Internet and increased utilization of cheaper local area
`netWork connections and broadband connections, such as
`digital subscriber line and cable modems. By caching con
`tent at local machines on a local area netWork or on
`broadband connections to an Internet Service Provider,
`response time to requests for content is decreased by retriev
`ing the content from local machines. Additional bene?ts
`may be realiZed by alloWing more client machines to utiliZe
`a single connection to the Internet by decreasing the amount
`of bandWidth needed by particular client machines.
`Another technical advantage is the capability to dynami
`cally add and remove members from a distributed cache
`community. In contrast to traditional distributed caching
`systems, Which have typically required a human adminis
`trator to add and remove members from the distributed
`caching system, the present invention provides the capabil
`ity to dynamically add and remove members from the
`distributed cache community. Also, members may be added
`or removed from the cache community Without the inter
`vention of a human administrator. The present invention also
`reallocates the data to be cached by particular members of
`the distributed cache community based on the addition and
`subtraction of members to the distributed cache community.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A better understanding of the present invention Will be
`realiZed from the detailed description that folloWs, taken in
`conjunction With the accompanying draWings, in Which:
`FIG. 1 is a block diagram illustrating a community cache
`system;
`FIG. 2 is a block diagram illustrating an exemplary
`community cache constructed according to the teachings of
`the present invention;
`FIG. 3 is a ?owchart illustrating a method for community
`caching according to the teachings of the present invention;
`FIG. 4 is a ?owchart illustrating a method for generating
`a community cache according to the teachings of the present
`invention;
`FIG. 5 is a diagram illustrating an exemplary distribution
`of cache shares according to the teachings of the present
`invention;
`FIG. 6 is a block diagram illustrating a dynamic caching
`system according to one embodiment of the system of FIG.
`1;
`FIG. 7 is a block diagram illustrating details of the
`dynamic cache application according to one embodiment of
`the present invention;
`FIG. 8 is a How diagram illustrating a method for retriev
`ing and caching content Within a cache community accord
`ing to one embodiment of the present invention;
`FIG. 9 is a How chart illustrating a method for adding a
`client to the cache community according to one embodiment
`of the present invention;
`
`Petitioner Ex. 1001 Page 15
`
`

`

`US 7,188,145 B2
`
`5
`FIG. 10 is a How chart illustrating a method for allowing
`the client to join the cache community according to one
`embodiment of the present invention;
`FIG. 11 is a How chart illustrating a method for deter
`mining Whether a member of the cache community has
`unexpectedly departed the cache community according to
`one embodiment of the present invention;
`FIG. 12 is a How chart illustrating a method for gracefully
`removing the member from the cache community according
`to one embodiment of the present invention;
`FIG. 13 is a How chart illustrating a method for gracefully
`removing a master from the cache community according to
`one embodiment of the present invention; and
`FIG. 14 is a How chart illustrating a method for alloWing
`the master to unexpectedly depart the cache community
`according to one embodiment of the present invention.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`FIG. 1 is a block diagram illustrating a community cache
`system 10. System 10 comprises one or more Internet
`Service Provider (ISP) clients 12, an ISP 14, an ISP caching
`community 15, a network 16, an Intranet caching commu
`nity 18 and an origin server 19.
`Client 12 comprises a processor 20, a computer readable
`memory 22, a computer readable storage device 24, a cache
`module 26 and a broWser 30. Client 12 may be adapted to
`execute any of the Well-knoWn MS-DOS, PC-DOS, OS/2,
`UNIX, Linux, MAC-OS, mainframe, minicomputer and
`WindoWs operating systems or other operating systems.
`Processor 20 comprises any suitable general purpose or
`specialiZed electronic processing device, such as a central
`processing unit (CPU), operable to communicate With
`memory 22 and storage device 24, and further to execute
`cache module 26 and broWser 30. Memory 22 comprises any
`suitable combination of transient or persistent memory oper
`able to store cache module 26 and broWser 30, and to
`communicate With processor 20. Storage device 24 com
`prises any suitable combination of optical, magnetic or other
`computer readable storage medium such as a ?oppy disk
`drive, a hard disk drive, a CD-ROM drive, a CD-RW drive,
`a magnetic tape drive or an optical drive. Storage device 24
`may also represent multiple computer readable storage
`devices. Storage device 24 includes a cache portion 28.
`Cache portion 28 comprises a portion of storage device 24
`used by cache module 26 for caching data. Access to cache
`portion 28 may be controlled by cache module 26 so as to
`prevent user modi?cation of data stored in cache portion 28.
`Cache portion 28 may comprise one or more directories, one
`or more logical partitions, one or more distinct physical
`devices and other suitable physical and logical elements.
`Cache module 26 comprises a softWare application oper
`able to manage cache portion 28 of storage device 24. Cache
`module 26 is operable to monitor the activities of broWser 30
`and to cache content items retrieved by broWser 30. Cache
`module 26 is also operable to respond to content requests
`from broWser 30 using content cached in cache portions 28
`at clients 12 in community 15. In one embodiment, cache
`module 26 may use the Cache Array Routing Protocol
`(CARP) to determining the location of content Within com
`munity 15. Cache module 26 is con?gurable such that limits
`may be placed on the siZe of cache portion 28 and the
`amount of processor time used on processor 20 by cache
`module 26. For example, a user associated With a client 12
`may con?gure the cache module 26 associated With that
`client 12 to use only 5% of the storage space and no more
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`than 10% of the processor time. For another example, a user
`associated With a client 12 may con?gure the cache module
`26 associated With that client 12 to only provide caching
`services When the system is idle, such as When a screen saver
`is active or When processor usage by the user of the client 12
`is beloW a particular threshold. In general, resource limits
`may be associated With cache module 26 such that cache
`module 26 is prevented from consuming more than a pre
`determined amount of the resource. The resources may
`comprise any of an amount of processor time on processor
`20, an amount of bandWidth on link 13, an amount of storage
`space on storage 24, an amount of memory 22 and other
`computing resources associated With client 12. Cache mod
`ule 26 is further operable to collect statistical information
`associated With link 13, broWser 30, client 12, portion 28,
`cache module 26 and other elements in community 15.
`Cache module 26 is further operable to encrypt data
`stored in cache portion 28. Cache module 26 may use any
`suitable symmetric and/or asymmetric encryption system for
`encrypting data in cache portion 28. For example, cache
`module 26 may use public-key/private-key encryption, the
`US. Data Encryption Standard (DES), the TWo?sh algo
`rithm, the BloW?sh algorithm and other suitable encryption
`systems. Encrypting data stored in cache portion 28 prevents
`a user associated With client 12 from unrestrictedly access
`ing and modifying cached content. Encryption also provides
`privacy as the user of any particular client 12 in community
`15 is prevented from vieWing the data retrieved by other
`users in community 15.
`The increasing use of “alWays-on” Internet connections
`With large bandWidth capacities alloWs for the use of a
`distributed caching system using non-specialized equip
`ment. Note that as used herein, an “alWays-on” connection
`is de?ned as a data connection betWeen a client computer,
`such as a personal computer, and a netWork, such as the
`Internet, Which operates Without competing With other
`devices associated With a user of the client computer. In
`addition, an “alWays-on” connection as used herein may be
`oif and may cycle betWeen being on and olf at unpredictable
`intervals. Stated another Way, an “alWays-on” connection
`has the capability to be continuously active Without inter
`fering With other devices usable by the user associated With
`the client computer, but the “alWays-on” connection is not
`required to be literally “alWays-on”.

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