`US 8,041,784 B1
`(10) Patent No.:
`(12)
`Amidonet al.
`(45) Date of Patent:
`Oct. 18, 2011
`
`
`US008041784B1
`
`(54) REDUNDANT HYBRID P2P CONTENT
`SHARING
`
`(75)
`
`:
`:
`Inventors: Christopher M. Amidon, Apex, NC
`(US); Alfredo C, Issa, Apex, NC (US);
`Richard J. Walsh, Raleigh, NC (US)
`
`(73) Assignee: Qurio Holdings, Inc., Raleigh, NC (US)
`(*) Notice:
`Subjectto any eisctaimer. the termons
`patent 1s extended or adjusted under
`US.C. 154(b) by 1351 days.
`
`(21) Appl. No.: 11/475,635
`
`(22)
`(51)
`
`Jun. 27, 2006
`
`Filed:
`Int.Cl
`(2006.01)
`GO6F 15/16
`(2006.01)
`GO6F 15/177
`709/220: 709/203
`(52) US. Cl
`;
`WS. CL ee ceeceeceeescneteeeeees
`(58) Field of Classification Search .................. 709/203,
`—
`—
`709/220
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`709/242
`6,065,062 A *
`5/2000 Periasamyet al
`6.351,792 BL*
`2/2002 Milillowuue TLU/162
`6,687,732 Bl
`2/2004 _Bectoret al.
`6,920,637 B2*
`7/2005 Masonetal. we. 719/318
`7,370,015 B2
`5/2008 Gvily
`TAOLIIS Bl
`7/2008 Arsenault
`2001/0007099 Al
`7/2001 Rau etal.
`2002/0112001 Al
`8/2002 Sutherlandetal.
`2002/0184310 Al* 12/2002 Traversat et al... 709/204
`2002/0188657 Al* 12/2002 Traversat et al.
`........... 709/201
`2003/0093520 Al
`5/2003 Beesley
`2003/0177246 A1*
`9/2003 Goodman etal.
`2004/0044723 Al
`3/2004 Belletal.
`2004/0070678 Al
`4/2004 Toyamaetal.
`2004/0148434 Al*
`7/2004 Matsubara etal.
`
`............ 709/228
`
`........... 709/246
`
`2004/0236983 Al* 11/2004 Burtonetal. 0. 714/6
`2005/0188085 Al*
`8/2005 Linetal. wo. 709/225
`2005/0190273 Al
`9/2005 Toyamaetal.
`2005/0229243 Al
`10/2005 Svendsenetal.
`006/0047839 Al
`3/2006. Tate et al.
`.......... 370/352
`2006/0077955 Al*
`4/2006 Poustchietal.
`2006/0136551 Al*
`6/2006 Amidonetal... 709/203
`2007/0073837 AL*
`3/2007 Johnson-McCormick
`
`2007/0198636 A1l*
`
`WO
`
`x
`
`Ct AL. creer 709/217
`8/2007 Inamoto etal. ow.. 709/203
`FOREIGN PATENT DOCUMENTS
`WO 2006/055535
`5/2006
`OTHER PUBLICATIONS
`.
`,
`.
`oo
`Pix Village, http://www.pixvillage.com/online-photo-sharing-fea-
`tures-p2p.aspx.
`* cited by examiner
`.
`.
`Primary Examiner — Larry Donaghue
`(74) Attorney, Agent, or Firm — Withrow & Terranova,
`PLLC
`
`ABSTRACT
`(57)
`.
`.
`.
`A redundant hybrid peer-to-peer content sharing system is
`provided.In general, the system includesa proxy hosted by a
`central server and, for each user, a primary user device host-
`ing a primary sharing engine and one or more secondary user
`devices hosting secondary sharing engines. The user’s shared
`imagesare hosted by the primary user device, and, based on
`the capabilities of the secondary user devices, versions ofthe
`shared images are copied to the secondary devices. When a
`guestat a guest nodedesires to view a shared image, a request
`for the shared imageis provided to the proxy. Generally, ifthe
`primary user device is online, the proxy forwards the request
`to the primary device.Ifthe primary user deviceis offline,the
`proxyidentifies one of the secondary user devices capable of
`serving the request and forwards the request to the identified
`secondary user device.
`
`17 Claims, 7 Drawing Sheets
`
`
`
`IDENTIFY OPTIMAL
`
`DEVICE TO SERVE REQUEST
`
`
`
`
`RECEIVE RESPONSE
`
`FORWARD RESPONSE
`TO GUEST NODE
`
`
`FORWARD REQUEST
`MESSAGE
`
`TO IDENTIFIED DEVICE
`
`RETURN
`ERROR
`
`
`
`
`Data Co Exhibit 1042
`Data Co v. Bright Data
`
`Data Co Exhibit 1042 Data Cov. Bright Data
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 1 of 7
`
`US 8,041,784 B1
`
`onevect
`
`JdDIASGYasn
`
`(AYVNIYd)
`
`AWW
`
`
`YHAAYAS
`
`IWHLNSOaoPANISN]ASNIYVHS
`
`
`
`vr0AXOUdLINNS5VHOLS
`
`
`
`AGONLSAND
`
`
`
`HASMOHdGAM
`
`0s
`
`AWMALWS
`
`9%
`
`
`
`3O0IAadY3aSN
`
`(AYVWONOO3S)
`
`
`
`ANIONSONIWHS
`
`AYVGNOOAS
`
`ce
`
`SI
`
`ep
`
`SoIAAGY3asn
`LINNSOVHOLSLINNSDVYOLS —9€OvNIDN
` oprBE
`
`ANIONONIYVHS;KUVONOOSS
`
`(AUVONOO9AS)FOIAgGY¥3sn
`AYVONOD3S'
`
`AYVONOO3S
`
`ve
`
`
`
`LINNSDVHOLS
`
`we ee em Re ee ee eee ee ae er ee eee ee ee ee eeeee
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 2 of 7
`
`US 8,041,784 B1
`
`DOWNLOAD,INSTALL, AND REGISTER
`PRIMARY SHARING ENGINE
`
`DOWNLOADANDINSTALL
`SECONDARY SHARING ENGINE
`
`CONFIGURE SECONDARY SHARING ENGINE
`
`SYNCHRONIZE
`
`REPEAT STEPS 102-106 FOR EACH
`DESIRED SECONDARY SHARING ENGINE
`
`ADD NEW IMAGES
`
`SYNCHRONIZE
`
`FIG. 2
`
`100
`
`102
`
`104
`
`106
`
`108
`
`110
`
`112
`
`
`
`202
`
`
`PRIMARY
`SHARING ENGINE
`OVERRIDE?
`
`TO FIG. 3C
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 3 of 7
`
`US 8,041,784 B1
`
`RECEIVE REQUEST
`
`
`
`
`
`
`
`
`
`
`
`PRIMARY
`
`DEVICE
`
`TO FIG. 3B
`ONLINE?
`
`FORWARD REQUEST
`TO PRIMARY DEVICE
`
`RECEIVE RESPONSE
`
`206
`
`208
`
`FORWARD RESPONSE
`TO GUEST NODE
`
`210
`
`FIG. 3A
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 4 of 7
`
`US 8,041,784 B1
`
`FROM FIG. 3A
`
`
`
`212
`DOES GUEST
`HAVE PERMISSION TO ACCESS
`
`SECONDARY
`
`DEVICES?
`
`IDENTIFY SECONDARY
`DEVICE TO SERVE REQUEST
`
`FORWARD REQUEST
`TO IDENTIFIED
`SECONDARYDEVICE
`
`RECEIVE RESPONSE
`
`
`
`
`
`
`220
`
`222
`
`FORWARD RESPONSE
`TO GUEST NODE
`
`FIG. 3B
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 5 of 7
`
`US 8,041,784 B1
`
`FROM FIG. 3At
`
`
`YES
`
`
`
`
`
`224
` DOES GUEST
`HAVE PERMISSION TO ACCESS
`SECONDARY
`DEVICES?
`
`NO
`
`
`232
`
`IDENTIFY OPTIMAL
`DEVICE TO SERVE REQUEST
`
`234
`
`FORWARD REQUEST
`
`TO IDENTIFIED DEVICE
`
`RECEIVE RESPONSE
`
`236
`
`230
`
`228
`
`RETURN
`
`(ERROR-
`
`PROCEED
`
`
`
`seeo06
`(FIG. 3A)
`
`|PORARSFNCDE ~
`
`FORWARD RESPONSE
`TO GUEST NODE
`
`FIG. 3C
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 6 of 7
`
`US 8,041,784 B1
`
`
`
`AOVsYHALNIHASN
`
`‘99°
`
`
`
`dOVsaYS.LNI¥asn
`
`8S
`
`
`
`WALSASTOW.LNOD
`
`
`
`WALSASTOULNOO
`
`09
`
`9AYOWSAW
`
`AYVONOOAS
`
`
`
`ANION]ONIYVHS
`
`ce
`
`LINNADVHOLS
`
`ve
`
`es
`
`AYOWAW
`
`vs
`
`
`
`ANISN]SNIYVHS
`
`AYVINIdd
`
`82
`
`LINNSDVHOLS
`
`0€
`
`
`
`FOVAYALNINOLLVOINNAIWOO
`
`
`
`JOVsYSLNINOLLVOINNWINOD
`
`v9
`
`S‘Sld
`
`9S
`
`bSld
`
`
`
`
`
`U.S. Patent
`
`Oct. 18, 2011
`
`Sheet 7 of 7
`
`US 8,041,784 B1
`
`SOvsYSLNIHaSn
`
`bl
`
`
`
`WALSAS1IOH.LNOO
`
`89
`
`AYOWAW
`
`oz
`
`AXOud
`
`vv
`
`
`
`AOVAYALNINOLLVOINNNWOS
`
`eZ
`
`9‘Sid
`
`
`
`
`US 8,041,784 Bl
`
`1
`REDUNDANT HYBRID P2P CONTENT
`SHARING
`
`FIELD OF THE INVENTION
`
`Thepresentinventionrelatesto a hybrid peer-to-peer (P2P)
`content sharing system.
`
`2
`reading the following detailed description of the preferred
`embodiments in association with the accompanying drawing
`figures.
`
`BRIEF DESCRIPTION OF THE DRAWING
`FIGURES
`
`The accompanying drawing figures incorporated in and
`BACKGROUNDOF THE INVENTION
`formingapart ofthis specification illustrate several aspects of
`10
`the invention, and together with the description serve to
`explain the principles of the invention.
`FIG.1 illustrates a hybrid peer-to-peer (P2P) content shar-
`ing system according to one embodiment of the present
`invention;
`FIG.2 is a flow chart illustrating an installation, configu-
`ration, and synchronization process for the primary and sec-
`ondary sharing engines of FIG. 1 according to one embodi-
`mentof the present invention;
`FIGS. 3A-3C comprise a flow chart illustrating the opera-
`tion of the proxy of FIG. 1 according to one embodiment of
`the present invention;
`FIG. 41s a block diagram ofthe primary user device ofFIG.
`1 according to one embodimentofthe present invention;
`FIG. 5 is a block diagram of one of the secondary user
`devices of FIG. 1 according to one embodimentofthe present
`invention; and
`FIG.6 is an exemplary block diagram of the central server
`of FIG. 1 according to one embodimentofthe present inven-
`tion.
`
`With the proliferation of digital cameras, numerous online
`photosharing services have emerged and are becoming
`widely accepted by photo enthusiasts. The photosharingser-
`vices are generally based on one oftwoarchitectures. Thefirst
`is a centrally hosted serving architecture where a central
`server hosts digital images for a number ofusers and provides
`photosharing services to guests. The secondis a peer-to-peer
`(P2P) architecture where a user creates and stores photo
`albums on the user’s computer. The user’s computer then
`provides photosharing services to guests in a P2P fashion.
`For various reasons, some P2P systems now employ a
`hybrid P2P architecture where a proxy server operates as a
`single point of entry for all of the peer nodes in the P2P
`system. Thus, when a guest node requests a digital image
`from a peer node, the request is first provided to the proxy
`server, which in turn provides the request to the peer node. In
`a similar fashion, the response from thepeer nodeis typically
`routed through the proxy server.
`One issue with both the P2P architecture and the hybrid
`P2Parchitectureis that a user’s shared imagesare only avail-
`able when the user’s peer device is online. In an attempt to
`alleviate this problem, some hybrid P2P architectures incor-
`porate a caching proxyserverthat operates to cache recently
`requested images. As a result, subsequent requests for an
`image stored in the cache maybe served directly from the
`caching proxy server. As such, the cached imagesare avail-
`able even ifthe corresponding peer node hosting the imagesis
`offline. However, caching proxy servers only cache previ-
`ously requested images and, due to their limited storage
`space, only cache a small subsetofall images shared by the
`peer nodes in the system. Thus, the issue of availability of
`shared images whenthe hosting peeris offline still remains.
`Therefore, there is a need for an improved P2P content
`sharing architecture that substantially eliminates the issue of
`availability of shared content whenthe hosting peeris offline.
`
`SUMMARYOF THE INVENTION
`
`The present invention provides a redundant hybrid peer-to-
`peer content sharing system. In general, the system includes a
`proxy hosted by a central server and, for each user, a primary
`user device hosting a primary sharing engine and one or more
`secondary user devices hosting secondary sharing engines.
`The user’s shared images are hosted by the primary user
`device, and, based on the capabilities of the secondary user
`devices, versions of the shared imagesare copied to the sec-
`ondary devices. When a guestat a guest node desires to view
`a shared image, a request for the shared imageis provided to
`the proxy. Generally, if the primary user device is online, the
`proxy forwards the request to the primary device.If thepri-
`mary user device is offline, the proxy identifies one of the
`secondary user devices capable of serving the request and
`forwards the requestto the identified secondary user device.
`Those skilled in the art will appreciate the scope of the
`present invention and realize additional aspects thereof after
`
`15
`
`20
`
`25
`
`30
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`The embodiments set forth below represent the necessary
`information to enable those skilled in the art to practice the
`invention andillustrate the best modeofpracticing the inven-
`tion. Upon reading the following description in light of the
`accompanying drawing figures, those skilled in the art will
`understand the concepts of the invention and will recognize
`applications of these concepts not particularly addressed
`herein.It should be understoodthat these concepts and appli-
`cationsfall within the scope of the disclosure and the accom-
`panying claims.
`FIG.1 illustrates a hybrid peer-to-peer (P2P) image shar-
`ing system 10 according to one embodimentof the present
`invention. While the discussion herein focuses on digital
`images,the present invention is equally applicable to any type
`of digital content. The system 10 includes a numberof user
`devices 12-18 associated with a particular user desiring to
`share images. Although notillustrated, the system 10 may
`additionally include user devices associated with any number
`ofadditional users. Eachofthe user devices 12-18 maybe,for
`example, a personal computer, a laptop computer, a Personal
`Digital Assistant (PDA), a mobile telephone, a Digital Video
`Recorder (DVR) such as a TiVo DVR,or the like. The user
`devices 12-18 are connected to a central server 20 via a
`
`network 22, which is preferably a public distributed network
`such as, but not limitedto, the Internet. In this example, the
`user devices 12-16 are part of a Local Area Network (LAN)
`24 and are connectedto the network 22 by a gateway 26. Note
`that while the user devices 12-16 are shown as being part of
`the LAN 24, the present invention is not limited thereto.
`The user device 12, which is hereafter referred to as the
`primary user device 12, includes a primary sharing engine 28
`and a storage unit 30. The primary sharing engine 28 is
`preferably implemented in software. However, the present
`invention is not limited thereto. The primary sharing engine
`
`
`
`US 8,041,784 Bl
`
`3
`28 operates to share imagesstored in the storage unit 30. The
`storage unit 30 may be any digital storage component or
`device such as, for example, a hard-disc drive, memory,or the
`like.
`The user device 14, which is hereafter referred to as the
`secondary user device 14,
`includes a secondary sharing
`engine 32 and a storage unit 34. The secondary sharing engine
`32 is preferably implemented in software. However,
`the
`present invention is not limited thereto. As discussed below in
`detail, in operation, at least one version of each of the images
`shared by the primary sharing engine 28 is copied to the
`secondary user device 14 andstored in the storage unit 34. In
`general, the secondary sharing engine 32 operates as a redun-
`dant sharing engine for sharing the shared images when the
`primary user device 12 is offline. In addition, for some types
`of devices, it may be desirable to further include a light-
`weight application that activates the secondary sharing
`engine 32 upon receiving a request from the central server 20.
`In a similar fashion, the user device 16, which is hereafter
`referred to as the secondary user device 16, includes a sec-
`ondary sharing engine 36 anda storage unit 38.
`The user device 18 may be, for example, a personal com-
`puter associated with the user such as, but not limited to, the
`user’s office computer, the user’s PDA or mobile telephone
`having access to the network 22, or the like. The user device
`18, whichis hereafter referred to as the secondary user device
`18, includes a secondary sharing engine 40 anda storage unit
`42. The secondary sharing engine 40 is preferably imple-
`mented in software. However, the present invention is not
`limited thereto. As discussed below in detail, in operation, at
`least one version of each of the imagesshared by the primary
`sharing engine 28 is copied to the secondary user device 18
`and stored in the storage unit 42. In general, the secondary
`sharing engine 40 operates as a redundant sharing engine for
`sharing the shared images whenthe primary user device 12 is
`offline. In addition, for some types of devices,
`it may be
`desirable to further include a light-weight application that
`activates the secondary sharing engine 40 upon receiving a
`request from the central server 20.
`The central server 20 includes a proxy 44 and hasaccess to
`user accounts database 46. While the central server 20 is
`
`illustrated as a single server, it may alternatively be imple-
`mented as a numberofdistributed servers. The proxy 44 may
`be implemented in hardware, software, or a combination of
`hardware and software. In general, when the primary user
`device 12 is online, the proxy 44 operates to route requests for
`shared images hosted by the primary user device 12 to the
`primary user device 12. However, when the primary user
`device 12is offline, the proxy 44 operates to identify one of
`the secondary user devices 14-18 for serving the request and
`routes the request to the identified one of the secondary user
`devices 14-18.
`
`Optionally, the proxy 44 may provide a caching service,
`where images previously requested may be cachedat the
`central server 20. Thereafter, requests for the cached images
`may beserved by the central server 20. The proxy 44 may
`implement a caching algorithm that takes into account the
`versions, or types, of images hosted by the secondary user
`devices 14-18. For example, if none of the secondary user
`devices 14-18 host high-quality versions of the shared
`images, then the caching algorithm maygivepriority to high-
`quality versions of the shared images. As a result, even when
`the primary user device 12 is offline, the requesting node may
`obtain a high-quality version of a desired imageif the image
`is cachedat the central server 20. Ifthe imageis not cached at
`the central server 20, the proxy 44 then routes the request to
`one of the secondary user devices 14-18.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`The user accounts database 46 generally includes account
`information for a numberofusers, such asthe userofthe user
`devices 12-18, registered with the system 10 for sharing
`images. As an example,forthe user ofthe user devices 12-18,
`the user’s account information includes information identi-
`
`fying the user devices 12-18 and associating the user devices
`12-18 with the user, information identifying which ofthe user
`devices 12-18 is the primary user device hosting the primary
`sharing engine and which of the user devices 12-18 are the
`secondary user devices hosting secondary sharing engines. In
`addition, for each of the secondary user devices 14-18, the
`user’s account information includes information identifying
`the types, or versions, of the images shared and stored by the
`primary user device 12 that are stored on each of the second-
`ary user devices 14-18. For example, for each image shared
`by the primary user device 12, the secondary devices 14-18
`maystore one or moreofa full size version; a high, medium,
`and low quality screen size version; and a high, medium, and
`low quality thumbnail version of the image. As discussed
`below in more detail, the types of images hosted by each of
`the secondary user devices 14-18 may be configured based on
`the capabilities of the secondary user devices 14-18 and,
`optionally, the number of images shared by the primary user
`device 12.
`
`The system 10 also includes a guest node 48, which may be
`a personal computer,
`laptop computer, a PDA, a mobile
`phone,orthe like having access to the network 22. The guest
`node 48 mayor maynot bea peer nodein the P2P network.In
`this example, the guest node 48 requests shared images using
`a web browser 50. However, the present invention is not
`limited thereto. The guest node 48 mayalternatively request
`shared images using, for example, a proprietary application
`associated with the system 10.
`FIG.2 is a flow chart illustrating an installation, registra-
`tion, and synchronization process for the primary and sec-
`ondary sharing engines 28, 32, 36, and 40. First, the primary
`sharing engine 28 is downloaded andinstalled on the primary
`user device 12, and the user of the primary user device 12
`registers with the central server 20 (step 100). Registration
`mayinclude providing information suchas, but not limited to,
`the user’s name, mailing address, e-mail address, and demo-
`graphic information. Thereafter, in this example, the second-
`ary sharing engine 32 is downloadedand installed on the
`secondary user device 14 (step 102). Before, during,or after
`download andinstallation, the secondary user device 14 and
`the secondary sharing engine 32 are associated with the user
`of the primary user device 12 and therefore associated with
`the primary user device 12 and the primary sharing engine 28.
`Alternatively, the primary sharing engine 28 mayself-propa-
`gate to automatically install the secondary sharing engine 32
`on the secondary user device 14.
`The secondary sharing engine 32 is then configured to
`determine the versions of the images shared by the primary
`user device 12 to be copied to the secondary user device 14
`(step 104). The secondary sharing engine 32 may be config-
`ured automatically based on detected capabilities of the sec-
`ondary user device 14 or manually configured by theuser.If
`automatically configured, the detected capabilities may be,
`for example, total or available storage space in the storage
`unit 34, the type and speed of the network connection the
`secondary user device 14 has to the network 22, processor
`speed of the secondary user device 14, and the like. In addi-
`tion to the capabilities of the secondary user device 14, the
`secondary sharing engine 32 may be automatically config-
`ured based on the number of images shared by the primary
`user device 12, which may be obtained from the central server
`20. As an example, if the secondary user device 14 is a PDA
`
`
`
`US 8,041,784 Bl
`
`5
`having limited storage space, the secondary sharing engine 32
`may be configured to obtain high quality thumbnails of the
`shared images from the primary user device 12. In contrast, if
`the secondary user device 14 is a DVR or personal computer
`having a large amountof storage space, the secondary sharing
`engine 32 may be configured to obtain the full size version of
`each of the images shared by the primary user device 12. In
`addition, the secondary sharing engine 32 may obtain or
`generate high, medium, and low quality screen size versions
`and high, medium, and low quality thumbnails of each of the
`images shared by the primary user device 12. Once config-
`ured, the configurations of the secondary sharing engine 32
`are provided to the central server 20 and storedas part of the
`user’s account information.
`
`In the preferred embodiment, the secondary user devices
`14-18 host at least one version of each ofthe imagesshared by
`the primary user device 12. However, the present invention is
`not limited thereto. In addition to the configurations described
`above, the secondary user devices 14-18 mayalso be config-
`ured to host only a subset of the shared images. For example,
`the secondary user device 14 may be configured to host only
`the high quality screen size version of each ofthe most recent
`images shared by the primary user device 12, which may be
`the images shared by the primary user device 12 added or
`captured within the last month. As another example, the sec-
`ondary user device 14 may be configured to host only those
`images tagged with one or more desired keywords suchas, for
`2
`example,
`“Christmas,
`“Birthday,”
`“Sporting Event,”
`“Friends,” “Family,” or the like.
`Next, the primary sharing engine 28 synchronizes with the
`secondary sharing engine 32 (step 106). More specifically,
`the central server 20 notifies the primary sharing engine 28 of
`the secondary sharing engine 32 andthe configurationsof the
`secondary sharing engine 32. Based on the configurations, the
`primary sharing engine 28 obtains the desired versions of
`each of the shared images and provides these versions of the
`shared imagesto the secondary user device 14. If the primary
`userdevice 12 does not havethe desired versionsofthe shared
`
`images stored in the storage unit 30, the primary sharing
`engine 28 may generate the desired versions. For example,if
`the medium quality screen size images are to be provided to
`the secondary user device 14, the primary sharing engine 28
`may generate the medium quality screen size versions of the
`shared images from, for example, the full size versions of the
`shared images. If more than oneversion of each ofthe shared
`imagesare to be hosted by the secondary user device 14, the
`primary sharing engine 28 mayprovideall desired versions or
`only the highest quality one of the desired versions to the
`secondary user device 14. For example, if both high and low
`quality screen size imagesare to be provided to the secondary
`user device 14, the primary sharing engine 28 may provide
`only the high quality screen size versions ofthe shared images
`to the secondary user device 14. Thereafter, the secondary
`user device 14 may generate andstore the low quality screen
`size versions ofthe shared imagesor generate the low quality
`screen size versions of the shared images as needed.
`The primary sharing engine 28 typically provides the
`desired versions of the shared images to the secondary user
`device 14 via the network 22 and the proxy 44. In another
`embodiment,
`the proxy 44 may enable proxy bypassing
`wherethe proxy 44facilitates a connection between two peer
`devices but is bypassedfor the transfer of largefiles, such as
`images. For more details, the interested reader is directed to
`commonly owned and assigned U.S. patent application Ser.
`No. 11/234,493, entitled SYSTEM AND METHOD FOR
`LOWERING PROXY BANDWIDTH UTILIZATION,
`which wasfiled Sep. 23, 2005 and is hereby incorporated
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`6
`herein by reference in its entirety. Alternatively, the desired
`versions of the shared images may betransferred to the sec-
`ondary user device 14 via a direct peer-to-peer connection
`over the network 22.
`
`However, in this embodiment, the primary and secondary
`user devices 12 and 14 are within the LAN 24. Assuch,rather
`than transferring the desired versions of the shared images
`over the network 22, the primary sharing engine 28 may
`detect that the secondary user device 14 is within the LAN 24
`and provide the desired versions of the shared imagesto the
`secondary user device 14 via the gateway 26 or a direct
`
`point-to-point link via, for example, an IEEE 802.11 wireless
`communication link.
`In addition to providing the desired versions of the shared
`images to the secondary user device 14, the primary user
`device 12 may additionally synchronize metadata, such as
`ID3tags, for the shared images, configurationfiles, permis-
`sions, and the like during the synchronization process.
`Regarding permissions and configurationfiles, by including
`them in the synchronization process, the primary user device
`12 ensures that the same permission andrestrictions will be
`imposed on guests whether the images are served by the
`primary user device 12 or the secondary user device 14.
`At this point, steps 102-106 may be repeated for each
`additional secondary user device, such as the secondary user
`devices 16-18 (step 108). When new imagesto be shared are
`added, the primary sharing engine 28 synchronizes with each
`of the secondary sharing engines 32, 36, and 40 suchthat the
`desired versions of the added images are copied to the sec-
`ondary devices 14-18 (steps 110 and 112). In addition, the
`synchronization may optionally transfer metadata for the
`added images, permissions, configurationfiles, andthelike to
`the secondary devices 14-18. The new images may be added
`at the primary user device 12. In addition, the system 10 may
`enable images to be added at the secondary user devices
`14-18. For example, ifimages are added to the secondary user
`device 14, the secondary sharing engine 32 mayretain ver-
`sions of the added images desired by the secondary user
`device 14 and provide the added images to the primary user
`device 12. The primary sharing engine 28 may then synchro-
`nize with the other secondary sharing engines 36 and 40.
`It should be noted that the user may change which user
`device 12-18 is the primary user device. For example, the user
`mayre-configure the user devices 12-18 such thatthe sharing
`engine 32 of the user device 14 is the primary sharing engine.
`As a result, the user devices 12-18 will communicate to re-
`distribute the shared images accordingly.
`FIGS. 3A-3C illustrate the operation of the proxy 44 to
`serve requests from guest nodes such as the guest node 48
`according to one embodimentofthe present invention. First,
`the proxy 44 receives a request for a shared image from the
`guest node 48 (step 200). In this example, the request is for an
`image shared by the user associated with the user devices
`12-18. The guest at the guest node 48 may beinvited by, for
`example, an e-mail containing a corresponding web link to
`the shared image,or the guest at the guest node 48 maybe an
`uninvited guest where, for example, the central server 20
`enables uninvited guests to search for shared images.
`Before proceeding, if the proxy 44 provides a caching
`service, the proxy 44 may determine whether the requested
`imageis cached by the central server 20. If so, the proxy 44
`mayserve the request. If not, the proxy 44 may then option-
`ally determine whether there has been a primary sharing
`engine override (step 202). A primary sharing engine override
`is when the proxy 44 automatically determines or when the
`user instructs the proxy 44 to treat the user devices 12-18
`equally. As discussed below, when there has been a primary
`
`
`
`US 8,041,784 Bl
`
`10
`
`30
`
`40
`
`45
`
`7
`sharing engine override, the proxy 44 selects the most optimal
`oneofthe user devices 12-18 for serving the request.
`If there has been no primary sharing engine override, the
`proxy then determines whetherthe primary user device 12 is
`online (step 204). If so, the proxy 44 forwards the request to
`the primary user device 12 via the network 22 (step 206). The
`primary user device 12 then sends a response including the
`requested imageto the proxy 44, and the proxy 44receives the
`response (step 208). The proxy 44 then forwards the response
`to the guest node 48 (step 210).
`Returning to step 204, if the primary user device 12 is not
`online, the process proceeds to FIG. 3B. Asillustrated, the
`proxy 44 may then determine whether the guest node 48 has
`permission to access the secondary user devices 14-18 (step
`212). Step 212 is optional. The proxy 44 may determine
`whether the guest node 48 has permission to access the sec-
`ondary user devices 14-18 based on, for example, a list of
`specific users or guests that are permitted to access the sec-
`ondary user devices 14-18; by determining whetherthe guest
`at the guest node 48 was invited to view the shared image
`where only invited guests are permitted to access the second-
`ary user devices 14-18; by determining whether the guest at
`the guest node 48 is a premium level user ofthe system 10
`where premium level users may pay for premium services
`provided by the central server 20 and have permission to
`access the secondary user devices 14-18; andthelike.
`Ifthe guest node 48 is not permitted to access the secondary
`user devices 14-18, the proxy 44 returns an error message to
`the guest node 48 (step 214). If the guest node 48 is permitted
`to access the secondary user devices 14-18, the proxy 44 then
`identifies one of the secondary user devices 14-18 for serving
`the request (step 216). More specifically, the proxy 44 first
`identifies which of the secondary user devices 14-18 are
`capable of serving the request. If the request is a general
`request for the shared image and not a request for a specific
`version of the shared image, the proxy 44 may identify the
`highest quality version of the requested image hosted by the
`secondary user devices 14-18. In contrast, ifthe requestis for
`a particular version of the shared image or if the proxy 44
`detects the capabilities of the guest node 48 andselects a
`particular version to be provided based on the capabilities of
`the guest node 48, the proxy 44 may determine whichof the
`secondary user devices 14-18 host either the needed version
`of the requested image or some higher quality version of the
`requested image.
`As an example, the request may be a general request for the
`shared image, and the highest quality version hosted by any of
`the secondary user devices 14-18 may be the high quality
`screen size version.If only one of the secondary user devices
`14-18 host this version of the requested image, then that
`secondary user device is identified as the one for serving the
`request. However, if more than one of the secondary user
`devices 14-18 hosts the identified version of the requested
`image, then the proxy 44 identifies the optimal one of these
`secondary user devicesto serve the request. Assumingthat the
`secondary user devices 14 and 18hostthe high quality screen
`size version ofthe requested image, the proxy 44 then selects
`the optimal one of the secondary user devices 14 and 18 for
`serving the request. The optimal secondary user device may
`be selected based on,for example, average historical through-
`put of the secondary user devices 14 and 18, the historical
`availability of the secondary user devices 14 and 18, the
`current availability of the secondary user devices 14 and 18,
`the historical reliability of the secondary user devices 14 and
`18, historical load conditionsat the secondary user devices 14
`and 18, an expected or projected load condition at the sec-
`ondary user devices 14 and 18, or the like. In order for the
`
`8
`proxy 44 to determine historical and projected load condi-
`tions, the secondary user devices 14-18 may provide status
`information such as, but not limited to, current load condi-
`tions, historical load conditions, and projected load condi-
`tionsto the proxy 44 either periodically or upon request by the
`proxy 44. The projected load conditions may particularly be
`beneficial for DVRs having scheduled recordings.
`In additionor alternatively, the proxy 44 may consider the
`network topology when identifying the one of the secondary
`devices 14-18 for serving the request. For example, if the
`guest node 48 is part of the LAN 24, the secondary user
`devices 14-16 may be given priority over the secondary user
`device 18 that is not within the LAN 24. Thus,if the guest
`node 48 requests a high quality version ofa shared image,the
`secondar