`
`Exhibit 4
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 2 of 57 PageID #: 212
`
`(12)
`
`United States Patent
`H0lt et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,829,634 B1
`Dec. 7, 2004
`
`US006829634B1
`
`(54) BROADCASTING NETWORK
`
`(75) Inventors: Fred B. Holt, Seattle, WA (US); Virgil
`E_ Bourassa Bellevue WA (Us)
`’
`’
`-
`.
`-
`(73) Assignee. The Boeing Company, Seattle, WA
`(Us)
`
`1/1999 Mairs et 81.
`5,864,711 A
`2/1999 Schmidt et al.
`5,867,660 A
`2/1999 Butman et a1~
`5,867,667 A
`2/1999 Bracho et al.
`5,870,605 A
`2/1999 Mairs e161.
`5,874,960 A
`5/1999 Wilf et al.
`5,899,980 A
`5/1999 Onweller
`5,907,610 A
`7/1999 Morita
`5,928,335 A
`8 1999 B 11
`t
`5935215 A
`92999 Nielseena
`5:948j054 A
`9/1999 Batty et aL
`5,949,975 A
`5,953,318 A * 9/1999 Nattkemper et al. ...... .. 370/236
`5,956,484 A
`9/1999 Rosenberg et al.
`5,974,043 A 10/1999 Solomon
`5,987,506 A 11/1999 Carter et al.
`_
`_
`(List continued on neXt page.)
`
`l.
`
`OTHER PUBLICATIONS
`Alagar, S. and Venkatesan, S., “Reliable Broadcast in
`Mobile Wireless Networks,” Department of Computer Sci
`ence, University of Texas at Dallas,
`Communica
`tions Conference, 1995, MILCOM ’95 Conference Record,
`IEEE San Diego, California, Nov. 5—8, 1995 (pp. 236—240).
`
`(List continued on neXt page.)
`
`P’W’y Examl'7er—H°Sam Alam
`Assistant Examzner—Young N. Won
`(74) Attorney, Agent, or Firm—Perkins Coie LLP
`
`ABSTRACT
`(57)
`A technique for broadcasting data across a network is
`H d An .
`.
`t.
`t. .
`t
`d d t
`t
`th
`prov1~e .
`origma mg par 1c1pan sen s ‘a a o ano er
`participant, WhlCh in turn sends the data that 1trece1ves from
`a neighbor participant to its other neighbor participants.
`Communication in the broadcast network is controlled by a
`contact module that locates the neighbor participants to
`which the seeking participant can be connected and by a join
`module that establishes the connection between the neighbor
`participants and the seeking participant. Data is numbered
`sequentially so that data that is received out of order can be
`queued and rearranged
`'
`
`24 Claims, 39 Drawing Sheets
`
`( 4 ) Notice:
`
`.
`
`.
`
`.
`
`.
`
`.
`
`SubJect' to any disclaimer, the term of this
`patent is extended or adJusted under 35
`U.S.C. 154(b) by 737 days'
`
`(21) Appl. No.. 09/629,576
`.
`
`22 Filed:
`£51; I t C] 7
`
`Jul. 31 2000
`’
`
`G06F 15/16
`
`n .
`
`.
`
`.............................................. ..
`
`(52) US. Cl. ..................... .. 709/204; 709/205; 709/203;
`709/243; 709/201; 709/238; 709/319; 709/225;
`370/236
`
`_
`Fleld of Search ............................... ..
`
`709/238, 319
`
`(56)
`
`References Cited
`
`US. PATENT DOCUMENTS
`4,912,656 A
`3/1990 Cain et al.
`5,056,085 A 10/1991 Vu
`5,309,437 A
`5/1994 Perlman et a1_
`5,426,637 A
`6/1995 Derby et al.
`5,535,199 A
`7/1996 Amri et al.
`55683487 A 10/1996 Sltbon et a1‘
`5,636,371 A
`6/1997 Yu
`5 673 265 A
`9/1997 Gupta et a1‘
`5’696’903 A 12/1997 Mahany
`5:732j074 A
`3/1998 Spam et a1_
`5,732,219 A
`3/1998 Blumer et a1_
`5,734,865 A
`3/1998 Yu
`5,737,526 A
`4/ 1998 Periasamy et al.
`5,754,830 A
`5/1998 Butts et 91-
`57617425 A
`6/1998 M111“
`5,764,756 A
`6/1998 Onweller
`5,790,548 A
`8/1998 SistaniZadeh et al.
`5,790,553 A
`8/1998 Deaton, Jr. et al.
`5,799,016 A
`8/1998 Onweller
`5,802,285 A
`9/1998 Hirviniemi
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 3 of 57 PageID #: 213
`
`US 6,829,634 B1
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`6,003,088 A 12/1999 Houston et al.
`6,013,107 A
`1/2000 Blackshear et al.
`6,023,734 A
`2/2000 Ratcliff et al.
`6,029,171 A
`2/2000 Smiga et al.
`6,032,188 A
`2/2000 Mairs et al.
`6,038,602 A
`3/2000 Ishikawa
`6,047,289 A
`4/2000 Thorne et al.
`6,094,676 A
`7/2000 Gray et al.
`6,199,116 B1
`3/2001 May et al.
`6,216,177 B1
`4/2001 Mairs et al.
`6,223,212 B1
`4/2001 Batty et al.
`6,243,691 B1
`6/2001 Fisher et al.
`6,268,855 B1
`7/2001 Mairs et al.
`6,271,839 B1
`8/2001 Mairs et al.
`6,285,363 B1
`9/2001 Mairs et al.
`6,304,928 B1
`10/2001 Mairs et al.
`6,611,872 B1 * 8/2003 McCanne ................. .. 709/238
`
`OTHER PUBLICATIONS
`
`International Search Report for The Boeing Company, Inter
`national Patent Application No. PCT/US01/24240, Jun. 5,
`2002 (7 pages).
`U.S. patent application Ser. No. 09/629,570, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,577, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,575, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,572, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,023, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,043, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,024, Bourassa et al.,
`?led Jul. 31, 2000.
`U.S. patent application Ser. No. 09/629,042, Bourassa et al.,
`?led Jul. 31, 2000.
`Murphy, Patricia, A., “The Next Generation Networking
`Paradigm: Producer/Consumer Model,” Dedicated Systems
`MagaZine—2000 (pp. 26—28).
`The Gamer’s Guide, “First—Person Shooters,” Oct. 20, 1998
`(4 pages).
`
`The O’Reilly Network, “Gnutella: Alive, Well, and Chang
`ing Fast,” Jan. 25, 2001 (5 pages) http://www.open2p.com/
`1pt/ .
`.
`. [Accessed Jan. 29, 2002].
`Oram, Andy, “Gnutella and Freenet Represents True Tech
`nological Innovation,” May 12, 2000 (7 pages) The O’Reilly
`Network http://www.oreillynet.com/1pt .
`.
`. [Accessed Jan.
`29, 2002].
`Internetworking Technologies Handbook, Chapter 43 (pp.
`43—1—43—16).
`Oram, Andy, “Peer—to—Peer Makes the Internet Interesting
`Again,” Sep. 22, 2000 (7 pages) The O’Reilly Network
`http://linux.oreillynet.com/1pt .
`.
`. [Accessed Jan. 29, 2002].
`Monte, Richard, “The Random Walk for Dummies,”MIT
`Undergraduate Journal of Mathematics (pp. 143—148).
`Srinivasan, R., “XDR: External Data Representation Stan
`dard,” Sun Microsysterns, Aug. 1995 (20 pages) Internet
`RFC/STD/FYI/BCP Archives http://www.faqs.org/rfcs/
`rfc1832.html [Accessed Jan. 29, 2002].
`ADatabeam Corporate White Paper, “A Primer on the T120
`Series Standards,” Copyright 1995 (pp. 1—16).
`Kessler, Gary, C., “An Overview of TCP/IP Protocols and
`the Internet,” Apr. 23, 1999 (23 pages) Hill Associates, Inc.
`http://www.hill.com/library/publications/t .
`.
`. [Accessed
`Jan. 29, 2002].
`Bondy, J .A., and Murty, U.S.R., “Graph Theory with Appli
`cations,” Chapters 1—3 (pp. 1—47), 1976 American Elsevier
`Publishing Co., Inc., New York, New York.
`Cormen, Thomas H. et al., Introduction to Algorithms,
`Chapter 5.3 (pp. 84—91), Chapter 12 (pp. 218—243), Chapter
`13
`245), 1990, The MIT Press, Cambridge, Massachu
`setts, McGraw—Hill Book Company, New York.
`The Common Object Request Broker: Architecture and
`Speci?cation, Revision 2.6, Dec. 2001, Chapter 12 (pp.
`12—1—12—10), Chapter 13 (pp. 13—1—13—56), Chapter 16
`(pp. 16—1—16—26), Chapter 18 (pp. 18—1—18—52), Chapter
`20 (pp. 20—1—20—22).
`The University of Warwick, Computer Science Open Days,
`“Demonstration on the Problems of Distributed Systems,”
`http://www.dcs.warwick.ac.u .
`.
`. [Accessed Jan. 29, 2002].
`
`* cited by examiner
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 4 of 57 PageID #: 214
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 1 0f 39
`
`US 6,829,634 B1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 5 of 57 PageID #: 215
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 2 0f 39
`
`US 6,829,634 B1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 6 of 57 PageID #: 216
`
`U.S. Patent
`
`Dec. 7 2004
`
`Sheet 3 0f 39
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 7 of 57 PageID #: 217
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 4 0f 39
`
`US 6,829,634 B1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 8 of 57 PageID #: 218
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 5 0f 39
`
`US 6,829,634 B1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 9 of 57 PageID #: 219
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 6 6f 39
`
`US 6,829,634 B1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 10 of 57 PageID #: 220
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 7 0m
`
`US 6,829,634 B1
`
`0:
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 11 of 57 PageID #: 221
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 8 m9
`
`US 6,829,634 B1
`
`55
`33
`[3-4
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 12 of 57 PageID #: 222
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 9 0f 39
`
`US 6,829,634 B1
`
`Fig. 5 C
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 13 of 57 PageID #: 223
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 10 0f 39
`
`US 6,829,634 B1
`
`:0
`
`E
`.910
`
`II-
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 14 of 57 PageID #: 224
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 11 0f 39
`
`US 6,829,634 B1
`
`Q
`
`(
`
`‘In
`
`D
`
`<
`
`Q
`5..“
`
`5"!
`21°
`LL
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 15 of 57 PageID #: 225
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 15 of 57 Page|D #: 225
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 12 of 39
`
`US 6,829,634 B1
`
`600
`
`—i=—
`
`o
`
`Broadcastern 1
`
`Broadcaster4
`
`602
`
`I:roadcastcr
`
`ig.6
`
`
`
`typechannelinstance)
`
`typechannelinstance)
` Application1 (channel
`Applxcanon2 (channel
`
`
`
`
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 16 of 57 PageID #: 226
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 13 0f 39
`
`US 6,829,634 B1
`
`CON
`
`mom
`
`_
`
`hob
`
`
`
`8:225: iron
`GEEK...“ _ m2: m zoom duo-E00
`
`29;:
`
`NE m3 5N
`
`
`
`203%“. .‘
`
`. “35m
`
`
`. H mac:
`
`Q 0655
`£825 v
`
`Z mm:- m
`
`_ Oh 332m
`
`158-: t K
`
`m2. N aa?em e33
`
`
`1585 won 0mm.“ 0532:
`
`. ms. #2.
`
`NON mom
`
`2. mg m Guava.
`
`oEEE “8560
`
`k .ME
`
`g2
`
`85%2
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 17 of 57 PageID #: 227
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 14 0f 39
`
`US 6,829,634 B1
`
`(Channel Type,
`Channel Instance,
`Connect Aux Info)
`
`Fig. 8
`
`(
`
`Connect
`
`Open call in port
`
`801
`
`802
`
`Set connect-time
`
`803
`Seek portal ~ computer
`(chamel type channel
`instance)
`
`806
`
`Achieve connection
`
`807
`Install external dispatcher
`
`Install external dispatcher
`
`809
`
`Connect request
`
`l
`
`Return (true)
`
`>
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 18 of 57 PageID #: 228
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 15 0f 39
`
`US 6,829,634 B1
`
`Seek Pom!
`°°mputer
`
`Channel Type
`Channel Instance
`
`902
`
`Select next depth
`
`All depths selected
`
`904
`'1 N
`Select next portal computer
`
`Fig. 9
`
`Dial portal computer
`
`907
`
`Y
`
`908
`
`Contact process
`
`909
`I
`Hang up selected portal
`computer
`
`911
`Check for external
`call
`
`1
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 19 of 57 PageID #: 229
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 16 0f 39
`
`US 6,829,634 B1
`
`( Contact process )
`
`1001
`Send external message
`
`1 002
`Receive enema] message
`
`1 0
`
`1005
`Add as connected portal
`computer
`
`1006
`Add as fellow seeking
`computer
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 20 of 57 PageID #: 230
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 17 0f 39
`
`US 6,829,634 B1
`
`Connect request
`
`Dial call in port of portal
`computer
`
`Send external message
`1
`1106
`Receive enema! message
`
`1107
`
`Success
`
`1108
`Y
`Set expect holes from
`response
`1109
`1
`Set diameter from response
`
`1102
`
`1 1 12
`Add neighbor
`J
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 21 of 57 PageID #: 231
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 18 0f 39
`
`US 6,829,634 B1
`
`heck for extem
`call
`
`Answer
`
`1201
`
`Fig. 12
`
`1 202
`
`\
`
`Y
`
`1 203
`Receive external message I
`
`Send external message
`
`‘
`
`206
`
`Y
`
`1 207
`Add other as fellow seeker I
`
`Return
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 22 of 57 PageID #: 232
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 22 of 57 Page|D #: 232
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 19 of 39
`
`US 6,829,634 B1
`
`Achieve connection
`
`Connection - state -= fully
`
`1 301
`
`Notify fellow seekers
`
`1302
`
`1303
`
`Fig. 13
`
`n
`
`connected
`
`
`
`
`
`Invoke connect callback
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 23 of 57 PageID #: 233
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 23 of 57 Page|D #: 233
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 20 of 39
`
`US 6,829,634 B1
`
`
`
`External dispatcher
`
`Fig. 14
`
`Port connect call
`
`smemem
`
`
`
`| Handleconnected I
`
` Connected statement
`
`
`statement ‘ "cl-mi’smmmem V I
`
`Condition repair
`
`Handle condition
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 24 of 57 PageID #: 234
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 24 of 57 Page|D #: 234
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 21 of 39
`
`US 6,829,634 B1
`
`Fig. 15
`
`Handle seeking
`connection call
`
`1 502
`
`Set message to indicate
`connected
`
`Set message to not
`connected
`
`Add other as fellow
`seeking process
`
`
`
`1 505
`
`Send enema! message
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 25 of 57 PageID #: 235
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 25 of 57 Page|D #: 235
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 22 of 39
`
`US 6,829,634 B1
`
`: dle connection.
`request call,
`
`.,.
`
`8 sun.“
`
`,
`Ftg. 16
`
`2
`
`1601
`
`N u
`
`I
`
`Set newcomers
`holes_to_cxpect
`
`response
`
`n .-‘
`
`..
`
`Set ready an response
`
`Sent external message
`connect request resp.
`
`0
`
`Set newcomer's
`holes_to_fill
`
`608
`
`"‘
`
`Ready
`
`Newcomers
`holes__to_fi1l -
`
`edge search
`
`Forward connection
`
`
`
`
`
`0)” to fin> . II Fillhole(requester) I
`
`Return
`
`Holes to fill - = Z
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 26 of 57 PageID #: 236
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 26 of 57 Page|D #: 236
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 23 of 39
`
`US 6,829,634 B1
`
`Add neighbor
`
`'
`Identifies calling puny
`
`I
`Flg‘ I 7
`
`0
`
`Sets ne'ghbor _to
`messages pending
`
`7.03 Y
`.
`Connection_state =
`<~ eekmg connecuos
`pmiany wmmed
`N
`
`Add. as neighbor
`
`09
`
`Install intern! dispatcher
`for new neighbor
`
`707
`
`-:
`
`°°“"°°*i“8b“flE°*:‘'
`
`N
`
`09
`
` xpected hole
`
`1711
`
`‘’ II
`
`«
`
`Purge pending edges
`
`N
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 27 of 57 PageID #: 237
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 27 of 57 Page|D #: 237
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 24 of 39
`
`US 6,829,634 B1
`
`neighbors
`> I
`
` neighbor =
`.
`requester
`Select random netghbor
`
`
`
`
`
`1808
`
`Note connection edge
`search call
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 28 of 57 PageID #: 238
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 28 of 57 Page|D #: 238
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 25 of 39
`
`US 6,829,634 B1
`
`I 1
`
`Send external message
`
`.
`
`N
`
`197
`
`Send external message
`
`1912
`
`1908
`
`Y 0
`
`ml hole
`
`|
`
`Y
`
`. . 9
`
`Add edge aspending
`
`w |
`
`1910
`
`|
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 29 of 57 PageID #: 239
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 29 of 57 Page|D #: 239
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 26 of 39
`
`US 6,829,634 B1
`
`Handle port
`connecti n call
`
`
`
`
`
`
`Send cxtemal message
`(point-connect-resp
`not ok)
`
`-
`
` 0.;
`Send extemal mesa
`(point-connect-resp, ck)
`
`2006
`
`I
`
`Add neighbor
`
`I
`
`
`
`2008
`
`I“
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 30 of 57 PageID #: 240
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 30 of 57 Page|D #: 240
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 27 of 39
`
`US 6,829,634 B1
`
`Handle connection
`ports search edit
`
`
`
`
`I DistributeInternal’ I
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 31 of 57 PageID #: 241
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 31 of 57 Page|D #: 241
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 28 of 39
`
`US 6,829,634 B1
`
`
`
`N
`
`2203A
`
`
`
`Partially connected
`
` N
`
`Insert message into
`' pending connection bufi‘er
`
`2007
`
`
`
`connection bufler
`
`”
`
`message queue
`‘“"’
`
`Y
`
`Receive response ( )
`
`n
`
`n
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 32 of 57 PageID #: 242
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 32 of 57 Page|D #: 242
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 29 of 39
`
`US 6,829,634 B1
`
`Process out of oter
`message
`
` Fig. 23
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 33 of 57 PageID #: 243
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 33 of 57 Page|D #: 243
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 30 of 39
`
`US 6,829,634 B1
`
`Fig. 24
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 34 of 57 PageID #: 244
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 34 of 57 Page|D #: 244
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 31 of 39
`
`US 6,829,634 B1
`
`Handle connection
`for search
`
`from neighbor
`massage
`
`2601
`
`Distribute internal
`message
`
`_
`
`Fig.
`
`602
`
`-« crate
`
`condntxon check
`messaew/net; bors
`
`
`
`2607
`
`Send internal message
`to requester
`
`p
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 35 of 57 PageID #: 245
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 35 of 57 Page|D #: 245
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 32 of 39
`
`US 6,829,634 B1
`
` N
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 36 of 57 PageID #: 246
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 36 of 57 Page|D #: 246
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 33 of 39
`
`US 6,829,634 B1
`
` Y
`
`2814
`
`I
`
`Fill hole (self)
`
`I
`
`g»
`
`231 5
`
`e . me ,
`I message (fmm
`net 3 bar ad:
`
`connection edge
`search (requester,
`0)
`
`‘V
`
`0'1
`
`ed
`
`2806
`
`2807
`
`Send and receive
`external message
`
`808
`
`is edge acceptable N
`
`
`
`2812
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 37 of 57 PageID #: 247
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 37 of 57 Page|D #: 247
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 34 of 39
`
`US 6,829,634 B1
`
`Handle edge search
`resp.
`
`origin
`from neighbor
`"‘°”“8°
`
`Fig. 29
`
`--
` Note connection edge
`
`search response
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 38 of 57 PageID #: 248
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 38 of 57 Page|D #: 248
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 35 of 39
`
`US 6,829,634 B1
`
`Fig. 30
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 39 of 57 PageID #: 249
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 39 of 57 Page|D #: 249
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 36 of 39
`
`US 6,829,634 B1
`
`message
`
`Fig. 31
`
`31 01
`
`Pop message queue
`
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 40 of 57 PageID #: 250
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 40 of 57 Page|D #: 250
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 37 of 39
`
`US 6,829,634 B1
`
`
`
`andle condition check
`
`
`
`Fig. 32
`
`
`
`Set up message with list
`of neighbors
`
`notm n ; bar
`
`
`
`to selected neighbor
`
`3207
`
` of sending gs
`Send internal message
`
`I
`Add neighbor
`H
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 41 of 57 PageID #: 251
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 41 of 57 Page|D #: 251
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 38 of 39
`
`US 6,829,634 B1
`
`Fig. 33
`
`Handle condition
`
`repair statement
`
`
`
`% Select a neighbor not
`involved in condition
`
`
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 42 of 57 PageID #: 252
`Case 1:15—cv—OO228—RGA Document 1-4 Filed 03/11/15 Page 42 of 57 Page|D #: 252
`
`U.S. Patent
`
`Dec. 7, 2004
`
`Sheet 39 of 39
`
`US 6,829,634 B1
`
`Handle condition
`double check
`
`
`
`3401
`
`
`
`Same
`
`Fig. 34
`
`.\
`
`
`
`C‘ .L'
`
`Create list of neighbors M
`
`Send intemal message
`to-from ne'ghbor
`
`
` I g_.
`
`
`
`Send internal message
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 43 of 57 PageID #: 253
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 43 of 57 Page|D #: 253
`
`US 6,829,634 B1
`
`1
`BROADCASTING NETWORK
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`This application is related to U.S. patent application Ser.
`No. 09/629,570, entitled “JOINING A BROADCAST
`CHANNEL,” filed on Jul. 31, 2000 U.S. patent application
`Ser. No. 09/629,577, “LEAVING A BROADCAST
`CHANNEL,” filed on Jul. 31, 2000 currently patented. U.S.
`patent application Ser. No. 09/629,575, entitled “BROAD-
`CASTING ON A BROADCAST CHANNEL,” filed on Jul.
`31, 2000; U.S. patent application Ser. No. 09/629,572,
`entitled “CONTACTING A BROADCAST CHANNEL,”
`filed on Jul. 31, 2000; U.S. patent application Ser. No.
`09/629,023, entitled “DISTRIBUTED AUCTION
`SYSTEM,” filed on Jul. 31, 2000 now under appeal. U.S.
`patent application Ser. No. 09/629,043, entitled “AN
`INFORMATION DELIVERY SERVICE,” filed on Jul. 31,
`2000 currently patented; U.S. patent application Ser. No.
`09/629,024, entitled “DISTRIBUTED CONFERENCING
`SYSTEM,” filed on Jul. 31, 2000; and U.S. patent applica-
`tion Ser. No. 09/629,042, entitled “DISTRIBUTED GAME
`ENVIRONMENT,” filed on Jul. 31, 2000 currently
`patented, the disclosures of which are incorporated herein by
`reference.
`
`TECHNICAL FIELD
`
`The described technology relates generally to a computer
`network and more particularly, to a broadcast channel for a
`subset of a computers of an underlying network.
`
`BACKGROUND
`
`There are a wide variety of computer network communi-
`cations techniques such as point-to-point network protocols,
`client/server middleware, multicasting network protocols,
`and peer-to-peer middleware. Each of these communications
`techniques have their advantages and disadvantages, but
`none is particularly well suited to the simultaneous sharing
`of information among computers that are widely distributed.
`For example, collaborative processing applications, such as
`a network meeting programs, have a need to distribute
`information in a timely manner to all participants who may
`be geographically distributed.
`The point-to-point network protocols, such as UNIX
`pipes, TCP/IP, and UDP, allow processes on different com-
`puters to communicate via point-to-point connections. The
`interconnection of all participants using point-to-point
`connections, while theoretically possible, does not scale well
`as a number of participants grows. For example, each
`participating process would need to manage its direct con-
`nections to all other participating processes. Programmers,
`however, find it very difficult to manage single connections,
`and management of multiple connections is much more
`complex. In addition, participating processes may be limited
`to the number of direct connections that they can support.
`This limits the number of possible participants in the sharing
`of information.
`
`The client/server middleware systems provide a server
`that coordinates the communications between the various
`
`clients who are sharing the information. The server functions
`as a central authority for controlling access to shared
`resources. Examples of client/server middleware systems
`include remote procedure calls (“RPC”), database servers,
`and the common object request broker architecture
`(“CORBA”). Client/server middleware systems are not par-
`
`2
`ticularly well suited to sharing of information among many
`participants. In particular, when a client stores information
`to be shared at the server, each other client would need to
`poll the server to determine that new information is being
`shared. Such polling places a very high overhead on the
`communications network. Alternatively, each client may
`register a callback with the server, which the server then
`invokes when new information is available to be shared.
`
`Such a callback technique presents a performance bottleneck
`because a single server needs to call back to each client
`whenever new information is to be shared. In addition, the
`reliability of the entire sharing of information depends upon
`the reliability of the single server. Thus, a failure at a single
`computer (i.e., the server) would prevent communications
`between any of the clients.
`The multicasting network protocols allow the sending of
`broadcast messages to multiple recipients of a network. The
`current implementations of such multicasting network pro-
`tocols tend to place an unacceptable overhead on the under-
`lying network. For example, UDP multicasting would
`swamp the Internet when trying to locate all possible par-
`ticipants. IP multicasting has other problems that include
`needing special-purpose infrastructure (e.g., routers) to sup-
`port the sharing of information efficiently.
`The peer-to-peer middleware communications systems
`rely on a multicasting network protocol or a graph of
`point-to-point network protocols. Such peer-to-peer middle-
`ware is provided by the T.120 Internet standard, which is
`used in such products as Data Connection’s D.C.-share and
`Microsoft’s NetMeeting. These peer-to-peer middleware
`systems rely upon a user to assemble a point-to-point graph
`of the connections used for sharing the information. Thus, it
`is neither suitable nor desirable to use peer-to-peer middle-
`ware systems when more than a small number of partici-
`pants is desired. In addition, the underlying architecture of
`the T.120 Internet standard is a tree structure, which relies on
`the root node of the tree for reliability of the entire network.
`That is, each message must pass through the root node in
`order to be received by all participants.
`It would be desirable to have a reliable communications
`
`network that is suitable for the simultaneous sharing of
`information among a large number of the processes that are
`widely distributed.
`SUMMARY OF THE INVENTION
`
`Embodiments of the invention deal with a non-routing
`table based method for broadcasting messages in a network.
`More specifically, a network in which each participant has at
`least three neighbor participants broadcasts data through
`each of its connections to neighbor participants, which in
`turn send the data that it receives to its other neighbor
`participants. The data is numbered sequentially so that data
`that is received out of order can be queued and rearranged.
`Communication within the broadcast channel
`is con-
`
`trolled by a contact module and by a join module. The
`contact module locates a portal computer and requests the
`located portal computer to provide an indication of neighbor
`participants to which the participant can be connected. The
`join module receives the indication of the neighbor partici-
`pants and establishes a connection between the seeking
`participant and each of the indicated neighbor participants.
`Each participant in the network is connected to neighbor
`participants, and the participants and connections between
`them form an m-regular graph, where m is greater than 2. In
`addition, when a participant receives data from a neighbor
`participant, it sends the data to its other neighbor partici-
`pants.
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`
`
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 44 of 57 PageID #: 254
`Case 1:15-cv-00228-RGA Document 1-4 Filed 03/11/15 Page 44 of 57 Page|D #: 254
`
`US 6,829,634 B1
`
`3
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 illustrates a graph that is 4-regular and 4-connected
`which represents a broadcast channel.
`FIG. 2 illustrates a graph representing 20 computers
`connected to a broadcast channel.
`
`FIGS. 3A and 3B illustrate the process of connecting a
`new computer Z to the broadcast channel.
`FIG. 4A illustrates the broadcast channel of FIG. 1 with
`
`an added computer.
`FIG. 4B illustrates the broadcast channel of FIG. 4A with
`
`an added computer.
`FIG. 4C also illustrates the broadcast channel of FIG. 4A
`
`with an added computer.
`FIG. 5A illustrates the disconnecting of a computer from
`the broadcast channel in a planned manner.
`FIG. 5B illustrates the disconnecting of a computer from
`the broadcast channel in an unplanned manner.
`FIG. 5C illustrates the neighbors with empty ports con- 20
`dition.
`
`15
`
`FIG. 5D illustrates two computers that are not neighbors
`who now have empty ports.
`FIG. 5E illustrates the neighbors with empty ports con-
`dition in the small regime.
`FIG. 5F illustrates the situation of FIG. 5E when in the
`
`large regime.
`FIG. 6 is a block diagram illustrating components of a
`computer that is connected to a broadcast channel.
`FIG. 7 is a block diagram illustrating the sub-components
`of the broadcaster component in one embodiment.
`FIG. 8 is a flow diagram illustrating the processing of the
`connect routine in one embodiment.
`FIG. 9 is a flow diagram illustrating the processing of the
`seek portal computer routine in one embodiment.
`FIG. 10 is a flow diagram illustrating the processing of the
`contact process routine in one embodiment.
`FIG. 11 is a flow diagram illustrating the processing of the
`connect request routine in one embodiment.
`FIG. 12 is a flow diagram of the processing of the check
`for external call routine in one embodiment.
`
`25
`
`30
`
`35
`
`40
`
`FIG. 13 is a flow diagram of the processing of the achieve
`.
`.
`.
`.
`connection routine in one embodiment.
`
`45
`
`FIG. 14 is a flow diagram illustrating the processing of the
`external dispatcher routine in one embodiment.
`FIG. 15 is a flow diagram illustrating the processing of the
`handle seeking connection call routine in one embodiment.
`FIG. 16 is a flow diagram illustrating processing of the
`handle connection request call routine in one embodiment.
`FIG. 17 is a flow diagram illustrating the processing of the
`add neighbor routine in one embodiment.
`FIG. 18 is a flow diagram illustrating the processing of the
`forward connection edge search routine in one embodiment.
`FIG. 19 is a flow diagram illustrating the processing of the
`handle edge proposal call routine.
`FIG. 20 is a flow diagram illustrating the processing of the
`handle port connection call routine in one embodiment.
`FIG. 21 is a flow diagram illustrating the processing of the
`fill hole routine in one embodiment.
`
`FIG. 22 is a flow diagram illustrating the processing of the
`internal dispatcher routine in one embodiment.
`FIG. 23 is a flow diagram illustrating the processing of the
`handle broadcast message routine in one embodiment.
`
`50
`
`55
`
`60
`
`65
`
`4
`FIG. 24 is a flow diagram illustrating the processing of the
`distribute broadcast message routine in one embodiment.
`FIG. 26 is a flow diagram illustrating the processing of the
`handle connection port search statement routine in one
`embodiment.
`
`FIG. 27 is a flow diagram illustrating the processing of the
`court neighbor routine in one embodiment.
`FIG. 28 is a flow diagram illustrating the processing of the
`handle connection edge search call routine in one embodi-
`ment.
`
`5
`
`10
`
`FIG. 29 is a flow diagram illustrating the processing of the
`handle connection edge search response routine in one
`embodiment.
`
`FIG. 30 is a flow diagram illustrating the processing of the
`broadcast routine in one embodiment.
`
`FIG. 31 is a flow diagram illustrating the processing of the
`acquire message routine in one embodiment.
`FIG. 32 is a flow diagram illustrating processing of the
`handle condition check message in one embodiment.
`FIG. 33 is a flow diagram illustrating processing of the
`handle condition repair statement routine in one embodi-
`ment.
`
`FIG. 34 is a flow diagram illustrating the processing of the
`handle condition double check routine.
`
`DETAILED DESCRIPTION
`
`technique in which a broadcast channel
`A broadcast
`overlays a point-to-point communications network is pro-
`vided. The broadcasting of a message over the broadcast
`channel is effectively a multicast to those computers of the
`network that are currently connected to the broadcast chan-
`nel. In one embodiment, the broadcast technique provides a
`logical broadcast channel to which host computers through
`their executing processes can be connected. Each computer
`that is connected to the broadcast channel can broadcast
`
`messages onto and receive messages off of the broadcast
`channel. Each computer that is connected to the broadcast
`channel receives all messages that are broadcast while it is
`connected. The logical broadcast channel is implemented
`using an underlying network system (e.g., the Internet) that
`allows each computer connected to the underlying network
`system to send messages to each other connected computer
`using each computer’s address. Thus, the broadcast tech-
`nique effectively provides a broadcast channel using an
`underlying network system that sends messages on a point-
`to-point basis.
`The broadcast technique overlays the underlying network
`system with a graph of point-to-point connections (i.e.,
`edges) between host computers (i.e., nodes) through which
`the broadcast channel is implemented. In one embodiment,
`each computer is connected to four other computers, referred
`to as neighbors. (Actually, a process executing on a com-
`puter is connected to four other processes executing on this
`or four other computers.) To broadcast a message,
`the
`originating computer sends the message to each of its
`neighbors using its point-to-point connections. Each com-
`puter that