throbber
(12) United States Patent
`Baber et al.
`
`111111111111111111111111111111111111111111111111111111111111111111111111111
`US006279041Bl
`US 6,279,041 Bl
`(10) Patent No.:
`(45) Date of Patent:
`*Aug. 21, 2001
`
`SYSTEMS AND COMPUTER
`(54) METHODS,
`PROGRAM PRODUCTS
`FOR
`DIFFERENCING
`DATA COMMUNICATIONS
`USING A MESSAGE QUEUE
`
`(75)
`
`Inventors: Stephen B. Baber, Raleigb; Kathryn
`H. Britton, Chapel Hill; John R. Hind,
`Raleigh; Barron C. Housel,
`III, Chapel
`Hill; Ajamu Akinwunmi Wesley,
`Raleigh, all of NC (US)
`
`(73) Assignee:
`
`Business Machines
`International
`Corporation, Armonk, NY (US)
`
`( * ) Notice:
`
`the term of this
`to any disclaimer,
`Subject
`is extended or adjusted under 35
`patent
`U.S.C. 154(b) by 0 days.
`
`This patent
`claimer.
`
`is subject
`
`to a terminal dis-
`
`(21)
`(22)
`(51)
`(52)
`
`Appl. No.: 09/192,128
`Filed:
`Nov. 13, 1998
`Int. CI?
`U.S. Cl.
`
`G06F 15/16
`709/232; 709/230; 709/231;
`709/247; 370/235
`709/247, 232,
`709/231, 230; 370/235, 229
`
`(58)
`
`Field of Search
`
`(56)
`
`3,177,854
`4,386,416
`4,554,898
`
`References Cited
`U.S. PATENT DOCUMENTS
`4/1965 Gareea.
`5/1983 Giltner et al,
`11/1985 Yamada et al.
`(List continued on next page.)
`FOREIGN PArENT DOCUMENTS
`
`1322607
`95/10805
`97/46939
`
`1/1989 (CA).
`4/1995
`(WO).
`12/1997 (WO).
`
`395/888
`123/188 AA
`
`OTHER PUBLICArIONS
`
`IBM
`to Host File Transfer Restart Method,
`Application
`Technical Disclosure Bulletin, vol. 31, No.5, pp. 409-410
`(Oct. 1988).
`IBM Technical
`Interleaved I/O File Server,
`Synchronous
`Disclosure Bulletin, vol. 32, No. 9B, pp. 91-92 (Feb. 1990).
`
`(List continued on next page.)
`
`Primary Examiner-Moustafa
`M. Meky
`Assistant Examiner-Bradley
`Edelman
`(74) Attorney, Agent, or Firm-Jeanine
`Myers Bigel Sibley & Sajovec
`(57)
`ABSTRACT
`
`S. Ray-Yarletts;
`
`Method, apparatus and program products for increasing the
`performaoce
`of communications
`using differencing data
`communications
`over a message queue supporting asyn-
`chronous communications
`from a variety of applications
`executing on a source device over a shared external com-
`munication link to destination devices are provided. A data
`stream between the source device and the destination device
`is segmented based on the type of the data stream to provide
`a logical segmentation which increases
`the occurrence of
`repeated transmissions of a segment. The segments are then
`placed in the message queue as a message for transport
`to a
`destination computer. Differencing is provided by replacing
`tbe segment with an associated identifier for segments which
`have previously
`been transported
`to provide
`a reduced
`volume of data for transmittal based on recognition and
`replacement of data segments which bave previously been
`transmitted by the source device. The destination device
`receives tbe transmitted reduced segments as messages in a
`receive message queue and reconstructs
`the data stream.
`Synchronization
`between the differencing
`caches of
`the
`devices is oot required as tbe communication
`is asyochro-
`nous through a message queue and, if a reduced segment
`is
`not
`recognized,
`retransmission
`of
`the complete
`segment
`instead of the associated identifier may be requested and the
`source device creates and queues the segment as a message.
`
`60 Claims, 9 Drawing Sheets
`
`
`
`MICROSOFT
`
`EXHIBIT 1017
`
`Page 1 of 24
`
`

`
`5,121,479
`5,261,089
`5,269,017
`5,276,876
`5,282,207
`5,319,773
`5,319,774
`5,371,886
`5,426,645
`5,428,771
`5,432,926
`5,446,904
`5,469,503
`5,500,890
`5,539,736
`5,546,582
`5,551,043
`5,561,797
`5,581,704
`5,581,753
`5,592,512
`5,594,910
`5,611,038
`5,613,060
`5,666,399
`5,682,514
`5,706,435
`5,724,581
`5,734,898
`5,751,719
`5,754,774
`5,758,072
`5,758,174
`5,765,004
`5,768,538
`
`6/1992
`11/1993
`12/1993
`1/1994
`1/1994
`6/1994
`6/1994
`12/1994
`6/1995
`6/1995
`7/1995
`8/1995
`11/1995
`3/1996
`7/1996
`8/1996
`8/1996
`10/1996
`12/1996
`12/1996
`1/1997
`1/1997
`3/1997
`3/1997
`9/1997
`10/1997
`1/1998
`3/1998
`3/1998
`5/1998
`5/1998
`5/1998
`5/1998
`6/1998
`6/1998
`
`O'Brien
`Coleman et al.
`Hayden et aJ.
`Coleman et al.
`Jurkevich et al....
`Britton et al.
`Ainsworth et al.
`Britton et al.
`Haskin
`Daniels et al.
`.
`Citron et al.
`Belt et al.
`....
`Butensky et al.
`Rogge et al.
`Johnson et aJ.
`Brockmeyer
`et al.
`Crump et al.
`Gilles et al.
`Barbara et al.
`Terry et al.
`..
`Spiess.
`.
`Filepp et al.
`..
`Shaw et al.
`Britton et al.
`Bales et al.
`..
`Yohe et al.
`Barabara et al.
`Kozakura
`He
`Chen et aJ.
`Bittinger et al.
`Filepp et al.
`Crump ct aJ.
`Foster et al.
`Badovinatz
`
`.
`
`.
`et al.
`
`U.S. PATENT DOCUMENTS
`
`....
`
`US 6,279,041 Bl
`Page 2
`
`395/250
`395/600
`395/575
`395/650
`.... 370/110.1
`395/575
`395/575
`395/600
`370/118
`395/575
`395/575
`395/750
`379/265
`379/91
`370/60
`395/650
`395/750
`395/600
`711/141
`711/141
`
`.. 395/800.28
`....... 395/806
`395/182.13
`379/419
`711/118
`711/141
`707/202
`707/203
`370/473
`395/200.33
`395/200.5
`395/750.05
`395/750.05
`395/200.78
`
`5,781,908
`5,787,470
`5,802,267
`5,813,032
`5,832,508
`5,878,213
`5,909,569
`6,003,087
`6,035,324
`6,073,173
`6,148,340
`
`7/1998
`7/1998
`9/1998
`9/1998
`11/1998
`*
`3/1999
`*
`6/1999
`* 12/1999
`*
`3/2000
`*
`6/2000
`* 11/2000
`
`Williams et al.
`DeSimone et al.
`Shirakihara
`et al.
`Bhargava et al.
`Sherman et al.
`Bittinger et al.
`I[] et al.
`Housel,
`Housel,
`III et al.
`Chang et al.
`Bittinger et al.
`Bittinger et al.
`
`.
`
`OTHER
`
`PUBLICATIONS
`
`........... 707/104
`
`.. 395/182.13
`
`.
`
`709/203
`703/21
`709/229
`709/203
`709/224
`709/224
`
`Checkpoint/Restart
`File Transmission
`Client/Server-based
`IBM Technical Disclosure Bulletin, vol. 38, No.
`Protocol,
`09, pp. 191-193
`(Sep.
`1995).
`Protocols
`Commit
`Combining
`Presumed
`Abort Two-Phase
`IBM Technical Dis-
`with SNA's
`Last Agent Optimization;
`closure Bulletin, vol. 34, No.7B,
`pp. 334-338
`(Dec.
`1991).
`Efficient Commit
`Protocol
`for Shared Nothing Architectures
`IBM Technical Disclosure
`Using
`Common
`Log
`Server,
`Bulletin, vol. 36, No. 12, pp. 65-66
`(Dec.
`1993).
`Jacob
`Ziv, Abraham
`Lempel;
`Compression
`of
`IEEE.
`Sequences
`via Variable-Rate
`Coding,
`9178.
`Transactions on Information Theory, vol. 1-24, No.5,
`Jacob
`Ziv, Abraham
`Lempel;
`A Universal
`Algorithm
`IEEE Transactions on Infor-
`Sequential
`Data Compression,
`mation Theory, pp. 337-343, May
`1977.
`IBM Technical Disclosure Bulletin,
`Emulatioo
`Data Stream,
`vol. 33, Aug.
`1990, pp. 221-223.
`iBM Technical Dis-
`Two-Phase
`Commit Resyochronizatioo,
`closure Bulletin, vol. 39, No. 01, pp. 79--80 (Jan.
`1996).
`
`Individual
`
`• cited by examiner
`
`Page 2 of 24
`
`.
`
`

`
`-....l
`=" 1..1
`J1
`
`e'
`
`I-"
`Cd
`-"
`
`~I
`
`1.0b
`
`10
`..•
`....
`
`e.
`
`=- ~~...
`
`[JJ
`
`...
`
`~=~Nr
`-Noo.
`
`""" re=
`
`""""
`
`~~ ~~ "
`
`52
`
`50
`
`+r-r-
`Rules
`Type
`ASCII
`
`Object
`
`CombineFramework
`
`MessageQueue
`
`ExpandingObject
`
`ScanSegmentObject
`
`54
`
`46
`
`48
`
`44
`
`42
`
`FIG.2
`
`40
`
`I
`
`Network
`
`22
`
`/
`
`EmittingObject
`
`ReducingObject
`
`MessageQueue
`
`30
`
`28
`
`---r-
`Rules
`Type
`Mime
`
`Object
`
`SegmentFramework
`
`36
`
`34
`
`32
`FIG.1
`
`~
`
`20
`
`26
`
`Page 3 of 24
`
`Network
`
`22-,
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 2 of 9
`
`US 6,279,041 Bl
`
`FIG. 3
`100
`
`Intercept Data Stream
`
`Segment Data Stream
`
`102
`
`114
`
`Update Differencing
`Cache and Index
`
`104
`
`Queue Segment
`Transport
`
`for
`
`for
`Mark Segment
`Retransmission
`
`Yes
`
`120
`
`Reduce Segment
`
`Emit Segment
`
`Dequeue Segment
`
`110
`
`11
`
`Page 4 of 24
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 3 of 9
`FIG. 4
`
`US 6,279,041 Bl
`
`Object Segment
`
`100
`
`Receive Data Stream
`
`-------------------------~
`152
`
`102
`
`,,,,,,,,,,,,,,,,
`
`I I,,
`
`Determine Type of
`Data Stream
`
`Invoke Appropriate
`Segmentation Object
`for Type
`
`in Data
`Place Segment
`Message Queue
`
`158
`
`154
`
`156
`
`-----------------------------
`
`Yes
`
`Yes
`
`Page 5 of 24
`
`

`
`u.s. Patent
`
`Sheet 4 of 9
`Aug. 21, 2001
`FIG. 5
`
`US 6,279,041 Bl
`
`I
`I
`
`:
`:
`
`V
`
`I
`
`108
`
`Page 6 of 24
`
`,----------------------------
`:
`:
`:
`
`Reduce Object
`-----------------------------,
`172
`
`Read Message From
`Queue
`
`o
`I
`
`I
`
`174
`
`Compute Data
`Signature
`
`180
`
`----
`
`110
`
`Replace Segment with
`Identifier as Reduced
`Segment
`
`Emit Reduced
`Segment
`
`I I I I I I I I I I IL
`
`

`
`US 6,279,041 Bl
`
`u.s. Patent
`
`Sheet 5 of 9
`Aug. 21, 2001
`FIG. 6
`
`Receive Object
`
`200
`
`Scan in Message From
`Buffer
`
`No
`
`202
`
`206
`
`Request Retransmission
`
`204
`No
`In LRU and Diff. >------------'
`Index?
`
`Yes
`
`Retrieve Segment
`
`Place Segment in Input
`Queue
`
`Combine Segment into
`Object
`
`Dequeue Segment and
`Update LRU and
`Differencing Index
`
`208
`
`210
`
`212
`
`214
`
`Page 7 of 24
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 6 of 9
`
`US 6,279,041 Bl
`
`Segment Object
`
`258
`
`FIG. 7
`
`252
`
`262
`
`Queue Initial Request
`
`Message Queue
`
`256
`
`Data Send Module
`
`Network-,
`
`264
`
`266
`
`22
`
`Page 8 of 24
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 7 of 9
`
`US 6,279,041 Bl
`
`File Transmit
`
`Receive Transmit
`Request
`
`FIG. 8
`
`270
`
`272
`
`Yes
`
`274
`
`Identify Segments
`276L---------~--------~
`
`Write to File Cache
`with Version Number
`
`278
`
`Create Segment Index
`with Identifier, Offset
`and Length
`
`280
`
`No
`
`286
`
`284
`
`Transfer File without
`Differencing
`
`Transfer File with
`Differencing
`
`Page 9 of 24
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 8 of 9
`
`US 6,279,041 Bl
`
`FIG. 9
`
`308
`
`to
`Emit Segment
`Transmit Buffer
`
`Initialize Segment
`Counter
`
`Determine Next
`Segment of File
`
`No
`
`ID as Reduced
`Emit
`Segment
`to Transmit
`Buffer
`
`Increment Segment
`Counter
`
`300
`
`302
`
`306
`
`310
`
`Buffer Full or EOF?
`
`No
`
`Yes
`
`314
`
`Update Offset and Xmit
`Buffer
`
`Page 10 of 24
`
`

`
`u.s. Patent
`
`Aug. 21, 2001
`
`Sheet 9 of 9
`
`US 6,279,041 Bl
`
`FIG. 10
`322
`
`Receive Buffer
`
`Determine State of
`Target File
`
`Receive Next Segment
`From Buffer
`
`324
`
`326
`
`No
`
`Expand Segment From
`Cache
`
`332
`
`to
`Write Segment
`Target File Xn at
`Current Offset
`
`334
`
`336
`
`Update Index for
`Target File
`
`increment Offset by
`Segment Length
`
`No
`
`340
`
`Update State of Target
`File/EOF
`
`Page 11 of 24
`
`

`
`US 6,279,041 B1
`
`1
`SYSTEMS AND COMPUTER
`METHODS,
`PROGRAM PRODUCTS
`FOR
`DIFFERENCING
`DATA COMMUNICATIONS
`USING A MESSAGE QUEUE
`
`FIELD OF THE INVENTION
`The present invention relates to communications between
`devices over a network. More particularly,
`the present
`invention relates to communications
`over a low-speed or
`wireless communication link between two computers using
`a message
`queue.
`
`20
`
`25
`
`BACKGROUND OF THE INVENTION
`Traditional mainframe computer configurations provided
`for user interface to tbe computer
`through computer
`termi-
`nals wbich were directly connected by wires to ports of
`controllers connected by channels
`to tbe mainframe com-
`puter. As computing technology has evolved, processing
`power has typically evolved from a central processing center
`with a number of relatively low-processing power terminals
`to a distributed
`environment
`of networked
`processors.
`Examples of this shift
`in processing include local or wide
`area networks wbicb interconnect
`individual work stations
`where each workstation has substantial
`independent pro-
`cessing capabilities. This shift may he further seen in the
`popularity of the Internet which interconnects many proces-
`sors and networks of processors through devices such as, for
`example,
`routers.
`At the same time that processing power was becoming
`more distributed tbere was also an increase in tbe popularity
`of mobile computing. The use of laptops, notebooks, Per-
`sonal Digital/Communication Assistants (PDAs/PCAs) and
`other portable devices has led to an increase in demands for
`wireless communications. Wireless communication allows a 35
`user freedom to move witbin the wireless environment wbile
`remaining
`"connected"
`to a network. Furthermore,
`a wire-
`less connection to a network allows a portable processor
`user the convenience of connecting to a network without
`having to plug into a docking station or use some other
`method
`of "hardwiring"
`to a network. However, wireless
`wide area networks, cellular communications
`and packet
`radio, suffer from common limitations such as the higb cost
`per byte of communications,
`slow response time, low band-
`width and unreliability wbich all bamper use of wireless
`tecbnology.
`Even outside of the portable processing arena wireless
`communications have seen an increase in popularity. Thus,
`as a result of infrastructure limitations, cost or convenience,
`it is hecoming more frequent
`tbat a network linking two 50
`devices wishing to communicate may include a low through-
`put component
`such as a wireless network link.
`Communications between devices such as computers are
`typically disadvantaged particularly on lower
`through-put
`network legs, sucb as wireless legs (or highly congested legs
`which are effectively bandwidth limited), where bandwidth
`limitations
`result
`in slower
`response time for communica-
`tions between tbe computers.
`In the extreme, protocol
`tim-
`eouts may even cause transmission
`errors and resulting
`retransmissions
`or even inability of
`the communication
`system to operate. Thus, utilizing wireless technology, or
`any low-speed communication technology, for data commu-
`nication between applications executing on computers exac-
`erbates the weaknesses of the wireless technology.
`Communications
`are further complicated wbere a plural-
`ity of applications executing on a computer perform opera-
`tions requiring transmission of data streams over a sbared
`
`2
`link, on occasion with
`to an external communication
`port
`It is known to provide
`interruptions
`in session connections.
`for this shared access using asynchronous message queuing
`systems sucb as International Business Machine Corpora-
`tion's Message Queuing Series ("MQSeries"), Telecommu-
`nications Access Method ("TCAM"), or Information Man-
`agement Systems
`("IMS"), which enable applications
`to
`queue data for transport (transmission)
`to a partner destina-
`tion computer device on an external communication
`link
`10 sucb as a network. Using asyncbronous message queuing,
`the external connection between the source computer and
`the destination computer
`typically does not bave to exist at
`tbe time of submission of a data stream message for trans-
`mission and tbe source or sending device is not required to
`for a response
`from the destination
`15 syncbronously wait
`device.
`In other words,
`the transmitting application hands
`over responsibility for the message to the transport queuing
`application which takes on responsibility
`for eventually
`delivering the queued message. In general, any data object,
`including messages,
`files,
`images, containers, etc., can be
`transported using a message queuing system.
`The message queue transport application reads messages
`from the queue and sends them to the destination devices
`over
`the network. The communication
`protocol between
`transmitting
`and receiving message queues provides
`for
`assumption of responsibility over a transmitted message by
`tbe receiving device. The source message queue transport
`application typically then frees the queue space occupied by
`a message once confirmation is received that the receiving
`30 device bas assumed responsibility for the message.
`OBJECTS AND SUMMARY OF THE
`INVENTION
`it is one object of the
`In view of tbe above limitations,
`present
`invention to provide for improved performance for
`data communications
`in a low-speed communication envi-
`ronment such as wireless communications.
`It is a further object of the present
`invention to support
`sucb communications where tbe communicating
`applica-
`tions may be only intermittently connected.
`invention to
`It
`is an additional object of
`the present
`support sucb communications wbere the external commu-
`nication link used for communication is shared by different
`applications.
`invention
`the present
`In view of these and otber objects,
`provides methods, systems and computer program products
`supporting differencing data communications using a mes-
`sage queue supporting asynchronous communications
`from
`a variety of applications executing on a source device over
`a shared external communication link to destination devices.
`At least one segment of a data stream between the applica-
`tion on the source device and an application on the desti-
`nation device occurs over an external communication link.
`The present
`invention provides increased communications
`performance by combining data stream differencing with
`asychronous message transmission control using a message
`queue. The data stream is segmented based on the type of the
`data stream to provide
`a logical
`segmentation which
`increases
`the occurrence of
`repeated transmissions
`of a
`segment. Each segment
`is then placed in the message queue
`as a message for transport
`to a destination computer. Dif-
`ferencing is provided by replacing tbe segment with an
`associated identifier
`for segments which have previously
`been transported to provide a reduced volume of data for
`transmittal based on recognition and replacement of data
`segments which have previously been transmitted by the
`source device.
`
`40
`
`45
`
`55
`
`60
`
`65
`
`Page 12 of 24
`
`

`
`US 6,279,041 B1
`
`10
`
`25
`
`40
`
`50
`
`55
`
`60
`
`3
`TIle intercept system on the receiving end at the destina-
`tion computer
`receives the transmitted reduced segments as
`messages, expands
`the reduced segments
`and writes
`the
`expanded segments to a receive message queue. Segments
`are read from tbe receive message queue and combined to
`form the reconstructed data stream. The reconstructed data
`stream is then provided to the target application on the
`destination computer. By providing protocol conversion at
`both ends of the external communication link, the applica-
`tions may continue to operate without any need to recognize
`the protocol differencing conversion provided by the present
`invention. Furthermore,
`synchronization
`is not
`required
`between the devices as the message queue provides asyn-
`chronous communications
`and, if a reduced segment
`is not
`recognized,
`retransmission of the complete segment using 15
`the segment
`identifier may be requested and the source
`device creates and queues the segment as a message.
`In one embodiment of the present
`invention, a method is
`provided for differencing
`data communications
`using a
`message queue. A data stream having an associated type is 20
`intercepted (received) from a host application prior to trans-
`mission of the data stream through the message queue on an
`external communication link to a destination computer. The
`data stream is segmented based on the associated type to
`provide a plurality of segments. Message identifiers associ-
`ated with the plurality of segments are then placed into the
`message queue. The transport system then selects one of the
`plurality of segments from the message queue for transport
`and determines if the selected segment has previously been
`transported. The selected segment is reduced to a differenced
`communication format based upon whether it has previously
`been transported to provide a reduced segment and emitted.
`After verifying that the differenced communication format
`of
`tbe reduced segment was known to the destination
`computer,
`the selected segment
`is dcqueucd and placed in a 35
`differencing cache if it has not previously been transported.
`The message
`identifiers
`associated with the plurality of
`segments may be the associated segments
`themselves or
`tbey may be pointers to a location in memory where asso-
`ciated segments can be found.
`the system
`invention,
`In one embodiment of the present
`determines
`if the segment has previously been transported
`and plaecd in the differencing cache by first calculating an
`identifier for the selected segment such as a data signature
`based on the content of the segment (e.g. a eRC). Based on 45
`the calculated
`identifier,
`the system determines
`if
`the
`selected segment corresponds
`to a segment
`saved in the
`differencing cache. Dequeuing a message operations may
`include placing the identifier of the selected segment
`in a
`differencing index and the system determines if the segment
`has previously been transported by determining if tbe iden-
`tifier of the selected segment
`is in tbe differencing index. A
`pointer may also be placed in the differencing index enabling
`tbe selected segment
`to be located in the differencing cache.
`The differencing index is preferably associated with a least
`recently used list and a least
`recently used segment
`is
`removed from the differencing cache and tbe differencing
`index if the differencing cache exceeds a size criteria. In one
`embodiment of tbe present
`invention,
`reducing a segment
`includes replacing the selected segment with tbe identifier
`associated witb tbe selected segment
`to provide tbe reduced
`segment
`if the selected segment has previously been emitted
`and providing tbe selected segment as the reduced segment
`if the selected segment has not previously been emitted.
`the 65
`In a further embodiment
`of the present
`invention,
`message queue receives messages from a plurality of data
`streams and a synchronously emits (transmits)
`the messages
`
`30
`
`4
`on the external communication link. The messages may be
`emitted in a first
`in first out sequence from the message
`queue and the message queue may have an associated
`maximum message size.
`invention, a mes-
`In another embodiment of the present
`sage is received from the destination computer
`indicating
`whether the destination computer had a segment
`in memory
`corresponding to the emitted identifier. The selected seg-
`ment rather than the identifier associated with the selected
`segment is emitted if the received message indicates that the
`destination computer did not have a segment
`in memory
`corresponding to the emitted identifier.
`In a further embodiment of the segmenting operations of
`the present
`invention, an associated type of the data stream
`is determined. A rule set is selected for segmenting the data
`stream based on the determined type and tbe selected rule set
`is applied to segment the data stream. The associated type of
`the data stream may be determined based on the data stream.
`In one embodiment,
`the associated type is a MIME type.
`In anotber aspect of the present
`invention,
`the destination
`computer
`receives the emitted reduced segment and recon-
`structs
`the selected segment
`from the received reduced
`segment. The reconstructed selected segment
`is placed in a
`received message queue. The data stream is then recon-
`structed responsive
`to the received message queue. The
`destination computer determines
`if the reduced segment
`contains
`the selected segment
`and then determines
`if a
`segment associated with the reduced segment
`is available to
`tbe destination computer
`if the reduced segment does not
`contain tbe selected segment. Tbe reduced segment
`is
`replaced witb the segment
`associated witb the reduced
`segment
`if available. Otherwise, a message is emitted to tbe
`device from which the reduced segment
`is received request-
`ing transmission of the selected segment
`if tbe segment
`associated with the reduced segment
`is not available. Data
`stream reconstruction
`may
`include
`integrating
`segments
`from the received message queue into objects. The recon-
`structed
`selected segment may be dequeued
`from the
`received message queue after providing tbe reconstructed
`selected segment
`to the reconstructing step. The destination
`computer may provide a differencing index and differencing
`cacbe in a manner analogous to tbat described for the source
`computer.
`invention, a method is
`In a further aspect of the present
`provided for transferring a file from a source computer
`to a
`destination computer using a message queue. A current
`version of the file is copied to a file cache responsive to a file
`transfer
`request and file segments are defined associated
`witb the current version. The source computer determines if
`previous versions of the file having associated file segments
`are available to tbe source computer and if the destination
`computer bas one of
`the previous versions of
`tbe file
`available. A first
`file segment of
`tbe current version is
`compared with the associated file segments of the previous
`version and a message identifier for the first file segment
`is
`placed in the message queue to request
`transfer of the first
`file segment
`if no matching associated file segments of the
`previous
`version are located. Otherwise,
`a match indication
`is placed in the message queue for transfer
`if a matching
`associated file segment
`is located.
`In aile embodiment of the file transfer aspects of the
`present
`invention, an identifier is calculated for eacb of tbe
`file segments associated with the current version and tbe
`calculated identifiers are placed in a segmenting index. The
`calculated identifiers are compared to a reference identifier
`based on one of tbe associated file segments of the previous
`
`Page 13 of 24
`
`

`
`US 6,279,041 B1
`
`5
`version and comparison operations continue until either a
`match is located or all the associated file segments have been
`tested. Comparing operations
`are preferably repeated for
`eacb of
`tbe file segments of
`tbe current version to be
`transferrred.
`In one embodiment, an identifier is calculated
`for each of the file segments associated witb the current
`version. A segment
`length for eacb of the file segments is
`also calculated and placed in the segmenting index associ-
`ated with tbe calculated identifiers.
`In a further embodiment of tbe file transfer aspects of the
`present
`invention, an identification of the previous version
`of
`the file is transmitted to the destination computer. A
`message
`is then received from the destination computer
`containing an indication of whether tbe previous version of
`tbe file is available to the destination computer. Furthermore,
`when a plurality of previous versions are available to the
`source computer,
`the identifications of the plurality of pre-
`vious versions are transmitted to the destination computer
`and the message received from the destination computer
`contains an indication of one of the plurality of previous
`versions of the file which is available to the destination
`computer. This one of the previous version is then used for
`comparing operations to provide a differenced communica-
`tion file transfer to the destination computer.
`As will be appreciated by those of skill in this art, while
`the the above described aspects of the present invention have
`primarily been discussed as a methods,
`they may also be
`provided as systems or as computer program products.
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a communication system for
`differencing data communications
`from the source device
`perspective according to an embodiment of
`the present
`invention;
`FIG. 2 is a block diagram of a communication system for
`differencing on-going data communications
`from a destina-
`tion device perspective according to one embodiment of the
`present
`invention;
`FIG. 3 is a flow chart illustrating operations carried out by
`a source device according to an embodiment of the present
`invention;
`FIG. 4 is a flow cbart illustrating operations carried out by
`a source device for segmenting a data stream according to an
`embodiment of the present
`invention;
`FIG. 5 is a flow cbart illustrating operations carried out by
`a source device for
`reducing segments
`according to an
`embodiment of the present
`invention;
`FIG. 6 is a flow cbart illustrating operations carried out by
`a destination side device according to an embodiment of tbe
`present
`invention;
`system
`FIG. 7 is a block diagram of a communication
`according to a file transfer aspect of the present
`invention;
`FIG. 8 is a flow cbart illustrating operations carried out by
`a source device according to an embodiment of the file
`transfer aspect of the present
`invention;
`FIG. 9 is a flow cbart illustrating operations carried out by
`in segmenting a file according
`a source device
`to an embodi-
`ment of the file transfer aspect of the present
`invention;
`FIG. 10 is a flow cbart illustrating operations carried out
`by a destination device according to an embodiment of tbe
`file transfer aspect of tbe present
`invention.
`DETAILED DESCRIPTION OF Tl-lE
`PREFERRED EMBODIMENTS
`The present
`invention now will be described more fully
`hereinafter witb reference to the accompanying drawings,
`in
`
`6
`which preferred embodiments of the invention are shown.
`Tbis invention may, however, be embodied in many different
`forms and should not be construed as limited to the embodi-
`ments set forth berein; rather,
`these embodiments
`are pro-
`vided so that this disclosure will be tborougb and complete,
`and will fully convey the scope of the invention to those
`skilled in the art. Like numbers
`refer
`to like elements
`throughout. As will be appreciated by one of skill in the art,
`tbe present
`invention may be embodied as methods, devices
`10 (systems) or computer program products. Accordingly,
`the
`present
`invention may take the form of an entirely hardware
`embodiment,
`an entirely
`software
`embodiment
`or an
`embodiment combining software and bardware aspects.
`An embodiment of the present
`invention will now be
`15 described with reference to tbe block diagram illustrations of
`FIG. 1 and FIG. 2 wbicb show tbe source and destination
`device respectively. Referring first to FIG. 1, a data source
`application 20 executing on a source device such as a
`computer generates a data stream to be communicated over
`20 an external communication link sucb as a network 22. The
`stream from source 20 is provided to segment object 24.
`Segment object 24 includes a segment framework object 26
`as well as a variety of segmenting rule objects for different
`types of data streams including the illustrated ASCII type
`25 object 28 and otber MIME type object 30. A variety of
`different
`type objects may be provided for different appli-
`cations
`sucb as terminal emulators,
`e-mail applications,
`word processors, etc., eacb of wbich is configured to inter-
`face and communicate witb segment framework object 26 to
`30 provide segment processing by segment object 24 based on
`the associated data type of an incoming data stream. The
`associated type of the receive data stream in one embodi-
`ment of the present
`invention is determined based on the
`contents of tbe data stream itseIf.
`The output of segment object 24 is provided to message
`queue 32 for transport. Message queue 32 is preferably an
`asynchronous message queuing system such as those known
`to those of skill in tbe art with operations of message queue
`32 being modified as will be described herein according to
`tbe teacbings of the present
`invention to provide for differ-
`enced data communications. An example of a message
`queue based transport
`system is described in U.S. patent
`application Ser. No. 09/191,637 entitled "Methods, Systems
`and Computer Program Products
`for Synchronization
`of
`45 Queue to Queue Communications" whicb is incorporated
`herein by reference in its entirety, still pending.
`It is to be
`understood that message queue 32 is a queue associated with
`an output port or node connection to network 22 which may
`support message based transmissions
`for a variety of differ-
`50 ent data source applications 20 executing on tbe source
`computer. Wbile operations will be described for a single
`data stream feeding message queue 32 for ease of under-
`standing the present invention,
`it is to be understood that the
`operations described herein may be duplicated for additional
`55 data streams and all of tbe separate data streams may share
`a common message queue 32 which may provide the capa-
`bility for proper delivery of messages at
`the source and
`destination device from different
`source and destination
`applications
`using known techniques
`for asynchronous
`transport using message queues. Accordingly,
`these aspects
`of message queue 32 will not be further described herein
`except
`to the extent
`they relate to or are modified according
`to the teachings of the present
`invention.
`invention applies
`As will be described herein,
`the present
`65 data stream differencing to tbe data stream to reduce the
`volume of data transmitted over an external communication
`link, such as a low-bandwidth wireless
`link. Data stream
`
`60
`
`35
`
`40
`
`Page 14 of 24
`
`

`
`US 6,279,041 B1
`
`20
`
`25
`
`30
`
`7
`differencing is described in u.s. patent application Ser. No.
`08/852,586 which is incorporated herein by reference in its
`entirety. A data reduction technique is also described for use
`in client-server
`application
`environments,
`such as the
`Internet,
`in U.S. Pat. No. 5,754,774. These approaches use
`knowledge of tbe structure of tbe data stream to segment
`the
`data stream and maintain synchronized caches at the source
`and destination devices
`to allow previously
`transmitted
`segments
`in the data stream to be replaced by identifiers
`allowing the receiving device to rebuild the complete data 10
`stream from its cache of previously received segments.
`However, these approaches geoerally require syncbroniza-
`tion between the devices and are directed to processing of a
`data stream between actively connected devices allowing
`synchronous communication.
`Messages in message queue 32 are successively passed to 15
`reducing object 34 for differencing the data stream coming
`out of message queue 32 according to tbe teacbings of the
`present
`invention. Wbile for tbe embodiments
`described
`herein,
`the reducing object 34 is illustrated as operating on
`output messages from message queue 32 it is to be under-
`stood that the benefits of the present invention may similarly
`be obtained by providing a reducing object operating on the
`output of segment object 24 and entering reduced data
`stream segments

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