DETAILED ACTION
1. The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
2. This communication is in response to the Continuation Application filed on March 13, 2025, in which claims 1-20 have been presented for examination.
Status of Claims
3. Claims 1-20 are pending, of which claims 8-14 are allowed. Claims 15, 16, 18 and 19 are rejected under 35 U.S.C. 102(a)(1). Claims 1-7, 17 and 20 are rejected under 35 U.S.C. 103. Claim 17 is also rejected under 35 U.S.C. 112(b).
Priority
4. Examiner has acknowledged Applicant’s claim for the benefit of prior-filed International Application No. PCT/CN2023/106780, filed July 11, 2023.
5. Acknowledgment is also made of Applicant’s claim for foreign priority under 35 U.S.C. 119 (a)-(d). Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55. Should applicant desire to obtain the benefit of foreign priority under 35 U.S.C. 119(a)-(d) prior to declaration of an interference, a certified English translation of the foreign application must be submitted in reply to this action. 37 CFR 41.154(b) and 41.202(e). Failure to provide a certified translation may result in no benefit being accorded for the non-English application.
Information Disclosure Statement
6. The information disclosure statements, filed on March 26, 2025, and December 10, 2025, are in compliance with the provisions of 37 CFR 1.97, 1.98 and MPEP § 609. They have been placed in the application file, and the information referred to therein has been considered as to the merits.
Claim Interpretation
7. The following is a quotation of 35 U.S.C. 112(f): (f) Element in Claim for a Combination. – An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof.
8. The claims in this application are given their broadest reasonable interpretation using the plain meaning of the claim language in light of the specification as it would be understood by one of ordinary skill in the art. The broadest reasonable interpretation of a claim element (also commonly referred to as a claim limitation) is limited by the description in the specification when 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is invoked. As explained in MPEP § 2181, subsection I, claim limitations that meet the following three-prong test will be interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph:(A) the claim limitation uses the term “means” or “step” or a term used as a substitute for “means” that is a generic placeholder (also called a nonce term or a non-structural term having no specific structural meaning) for performing the claimed function;(B) the term “means” or “step” or the generic placeholder is modified by functional language, typically, but not always linked by the transition word “for” (e.g., “means for”) or another linking word or phrase, such as “configured to” or “so that”; and(C) the term “means” or “step” or the generic placeholder is not modified by sufficient structure, material, or acts for performing the claimed function. Use of the word “means” (or “step”) in a claim with functional language creates a rebuttable presumption that the claim limitation is to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites sufficient structure, material, or acts to entirely perform the recited function. Absence of the word “means” (or “step”) in a claim creates a rebuttable presumption that the claim limitation is not to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is not interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites function without reciting sufficient structure, material or acts to entirely perform the recited function. Claim limitations in this application that use the word “means” (or “step”) are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action. Conversely, claim limitations in this application that do not use the word “means” (or “step”) are not being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action.
9. This application includes one or more claim limitations that do not use the word “means,” but are nonetheless being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, because the claim limitation(s) uses a generic placeholder that is coupled with functional language without reciting sufficient structure to perform the recited function and the generic placeholder is not preceded by a structural modifier. Such claim limitation(s) is/are: “wherein a first computing device of the plurality of computing devices is configured to obtain a send index list of the first computing device, wherein the send index list indicates information about a second computing device that is of N second computing devices and that corresponds to each data block of a plurality of data blocks to be sent by the first computing device, wherein the information about the second computing device indicates a computing device that receives each data block, and wherein N is a positive integer greater than or equal to 2,” “wherein the first computing device is further configured to separately send the plurality of data blocks to the N second computing devices based on the send index list,” and “wherein the N second computing devices are configured to separately receive the plurality of data blocks, wherein data blocks received by each second computing device of the N second computing devices are consecutive data blocks,” in claim 8, “wherein the first computing device is configured to determine, based on the send index list and the numbers of the N second computing devices, a sequence of sending the plurality of data blocks to the N second computing devices, wherein the first computing device first sends a data block to the first computing device,” in claim 10, “wherein the first computing device obtains the first storage locations of the X to-be-sent data blocks from a row corresponding to a second computing device in the send index list, obtains the X data blocks from the first storage locations on the first computing device, and sends the X data blocks to the second computing device,” in claim 11, “ wherein the second computing device is further configured to obtain a receive index list of the second computing device, wherein the receive index list indicates information about the first computing device corresponding to Y data blocks received by the second computing device, and wherein Y is a positive integer greater than or equal to 1,” and “wherein the N second computing devices are configured to separately store, based on the receive index list, the data blocks sent by the first computing device,” in claim 13, and “wherein the second computing device is configured to: receive a data block from the first computing device,” “obtain, from a row corresponding to the first computing device in the receive index list based on the first computing device, a second storage location used for storing the data block,” and “store the data block at the second storage location,” in claim 14. Because this/these claim limitation(s) is/are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, it/they is/are being interpreted to cover the corresponding structure described in the specification as performing the claimed function, and equivalents thereof. In particular, taking independent claim 8 as an example, the recited “first computing device” is being interpreted as a generic placeholder (i.e., “device”) coupled with the nonstructural modifiers “first” and “computing”. Since “computing” is an overly broad term and has no excepted meaning for connoting structure in the computer arts, (as opposed to a memory, CPU and/or processor), the modifiers “first” and “computing” - or the modifier “first computing” as a whole - are not interpreted to connote structure, and thus the “first computing device” (as well as the “N second computing devices”) are determined to be merely generic placeholders in place of “means”. Likewise, neither the recited “first computing device” nor the “N second computing devices” are recited as including any structure whatsoever (i.e., no hardware components exist in any of claims 8-14; even the “send buffer” of dependent claim 12 can arguably be implemented in software), even though functional language is recited for each of the recited “first computing device” and “N second computing devices”. A review of instant Specification reveals that the recited “plurality of computing devices” of independent claim 8, including the “first computing device” and the “N second computing devices” correspond to the disclosed “computing device 301” illustrated in FIGS. 3 and 4, which is disclosed as including a general bus architecture, storage 403, processors 401, 405, as well as memories 4062, 4072, as per FIG. 4, paragraphs [0048]-[0050], [0052], [0054]-[0056] and [0058] of Applicant’s Detailed Description. As such, the recited “first computing device” and the “N second computing devices” are disclosed as concrete hardware “computing devices”. In addition, as required by 35 U.S.C. 112(f), for a computer-implemented 35 U.S.C. 112(f) claim limitation, the specification must disclose an algorithm for performing the claimed specific computer function, or else the claim is indefinite under 35 U.S.C. 112(b). See Net MoneyIN, Inc. v. Verisign. Inc., 545 F.3d 1359, 1367, 88 USPQ2d 1751, 1757 (Fed. Cir. 2008). See also In re Aoyama, 656 F.3d 1293, 1297, 99 USPQ2d 1936, 1939 (Fed. Cir. 2011) (“[W]hen the disclosed structure is a computer programmed to carry out an algorithm, ‘the disclosed structure is not the general purpose computer, but rather that special purpose computer programmed to perform the disclosed algorithm.’”) (quoting WMS Gaming, Inc. v. Int’l Game Tech., 184 F.3d 1339, 1349, 51 USPQ2d 1385, 1391 (Fed. Cir. 1999)). See also MPEP 2181 II. B. A review of the flowchart of FIG. 10, which depicts a data transmission method in collective communication, provides evidentiary support for the corresponding algorithm required by each limitation interpreted under 35 U.S.C. 112(f). Taking claim 8 as an example, for the limitation, “wherein a first computing device of the plurality of computing devices is configured to obtain a send index list of the first computing device, wherein the send index list indicates information about a second computing device that is of N second computing devices and that corresponds to each data block of a plurality of data blocks to be sent by the first computing device, wherein the information about the second computing device indicates a computing device that receives each data block, and wherein N is a positive integer greater than or equal to 2,” an algorithm of two or more steps is provided in paragraphs [0098]-[0099] of Applicant’s Detailed Description. In particular, paragraph [0098] recites, “1001: The first computing device obtains a send index list, where the send index list indicates a first storage location of a data block to be sent by the first computing device and information about the second computing device” (Recited from paragraph [0098] of instant Specification). In addition, paragraph [0099] recites, “Before each iteration, the first computing device first obtains an address of the send index list, and the first computing device obtains the send index list based on the address of the send index list. In some embodiments, the first computing device includes an accelerator, and the accelerator is configured to generate the send index list. The accelerator includes a matching network interface card, and the network interface card includes a communication engine. Before each iteration, the accelerator invokes a communication operator to send an address of a send buffer and the address of the send index list to the communication engine on the network interface card. The communication engine queries for the address of the send buffer to obtain the to-be-sent data block, and queries for the address of the send index list to obtain the send index list. The send index list is constructed based on steps 601 to 603, and content of the send index list is not described herein again” (Recited from paragraph [0099] of instant Specification). Furthermore, with respect to the limitation, “wherein the first computing device is further configured to separately send the plurality of data blocks to the N second computing devices based on the send index list,” an algorithm of two or more steps is provided in paragraphs [0109]-[0110], which recite, “1005: The first computing device sends the to-be-sent data block to the second computing device. A process in which the first computing device sends the data block to the second computing device includes based on a data block sending sequence and the second computing device corresponding to the data block, the first computing device sends a data block to a corresponding second computing device each time the first computing device reads the data block from the send buffer” (Recited from paragraphs [0109]-[0110] of instant Specification), and paragraphs [0106]-[0108], which recite, “1004: The first computing device obtains the to-be-sent data block from the first storage location on the first computing device. A process in which the first computing device obtains the to-be-sent data block from the first storage location on the first computing device includes the first computing device finds the corresponding first storage location in the send buffer, and obtains the to-be-sent data block from the first storage location. In some embodiments, the first computing device includes an accelerator, and the accelerator is configured to generate the send index list. The accelerator includes a matching network interface card, and the network interface card includes a communication engine. The communication engine traverses the send index list starting from a row corresponding to a second computing device used as a current sending destination in the send index list. Each time the communication engine reads a value in the send index list, the communication engine obtains a to-be-sent data block from a corresponding location in the send buffer based on the value. When the first storage location is indicated by an offset value, a process of obtaining the to-be-sent data block from the corresponding location in the send buffer includes the communication engine finds a start address of the send buffer, the communication engine calculates a start address of the data block in the send buffer based on an offset value corresponding to the data block, and the communication engine reads, from the start address, data whose data amount is equal to a size of the data block, to obtain the data block. When the first storage location information is indicated by a start address, a process of obtaining the to-be-sent data block from the corresponding location in the send buffer includes the communication engine finds a start address corresponding to the data block in the send buffer, and the communication engine reads, from the start address, a data block whose data amount is equal to a size of the data block, to obtain the data block” (Recited from paragraphs [0106]-[0108] of instant Specification). Moreover, with respect to the limitation, “wherein the N second computing devices are configured to separately receive the plurality of data blocks, wherein data blocks received by each second computing device of the N second computing devices are consecutive data blocks,” an algorithm of two or more steps is provided in paragraphs [0111]-[0112], which recite, “1006: The second computing device obtains a receive index list of the second computing device, where the receive index list indicates information about a first computing device that a data block received by the second computing device is from and a second storage location of the received data block on the second computing device. Before each iteration, the second computing device first obtains an address of the receive index list, and the second computing device obtains the receive index list based on the address of the receive index list. In some embodiments, the second computing device includes an accelerator, and the accelerator is configured to generate the receive index list. The accelerator includes a matching network interface card, and the network interface card includes a communication engine. Before each iteration, the accelerator invokes a communication operator to send an address of a receive buffer and the address of the receive index list to the communication engine on the network interface card. The communication engine queries for the address of the receive index list to obtain the receive index list. The receive index list is constructed based on steps 801 to 803, and content of the receive index list is not described herein again” (Recited from paragraphs [0111]-[0112] of instant Specification), paragraphs [0113]-[0114], which recite, “1007: The second computing device receives the data block from the first computing device. A receiving process is not controlled by a receiving sequence. To be specific, when the communication engine of the network interface card on the second computing device identifies that a data block is sent from the first computing device to the second computing device, the second computing device receives the data block, and receives one data block each time” (Recited from paragraphs [0113]-[0114] of instant Specification), and paragraph [0117], which recites, “In the foregoing embodiment, the second computing device may consecutively receive data blocks from a same first computing device based on the receive index list, so that the second computing device can receive consecutive data blocks. In this way, the first computing device does not need to perform an operation such as data copying during sending, so that time consumed for data sending is reduced” (Recited from paragraph [0117] of instant Specification). If applicant does not intend to have this/these limitation(s) interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, applicant may: (1) amend the claim limitation(s) to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph (e.g., by reciting sufficient structure to perform the claimed function); or (2) present a sufficient showing that the claim limitation(s) recite(s) sufficient structure to perform the claimed function so as to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph.
Claim Rejections - 35 USC § 112
10. The following is a quotation of 35 U.S.C. 112(b): (b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
11. Claim 17 is rejected under 35 U.S.C. 112(b), as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor regards as the invention.
Regarding claim 17, lines 1-2 recite the limitation, “wherein a number is set for each second computing device of ten N second computing devices”. This limitation is vague and indefinite, as it is unclear as to whether the recited “number” is to be set for each of the “N second computing devices,” wherein the “N second computing devices” is now limited to only 10 second computing devices (i.e., “N” = 10), or alternatively, whether the number of “N second computing devices” is unlimited, (i.e., “N” is still merely any integer greater than 2), and the recited “number” is to be set for 10 such “N second computing devices” (i.e., any 10 “second computing devices” out of the total number of “N second computing devices”). Since the foregoing limitation recites “each second computing device” (emphasis added), this would appear to suggest that “N” is in fact now limited to “ten,” (as opposed to “ten” being a subset of “N”), since “each” (again, emphasis added) implies that all ten (and by extension, all “N,” since “N” = 10) will have a “number” set. The limitation is vague and indefinite and thus the metes and bound of the claim cannot be understood as written.
Claim Rejections - 35 USC § 102
12. In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
13. The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action: A person shall be entitled to a patent unless – (a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
14. Claims 15, 16, 18 and 19 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Lev-Ran et al. (United States Patent Application Publication No. US 2007/0124415 A1), hereinafter “Lev-Ran”.
As to claim 15, Lev-Ran discloses a non-transitory computer-readable storage medium (computer-readable medium, such as storage device 710) (Lev-Ran, FIG. 7, paragraphs [0228]-[0229]), wherein the storage medium stores instructions for execution by one or more processors (wherein instructions from storage device 710/ computer-readable medium are read into main memory 706, and whereby execution of the sequences of instructions contained in main memory 706 cause processor 704 to perform) (Lev-Ran, FIG. 7, paragraph [0228]) to enable a first computing device (core server 102, e.g.) (Lev-Ran, FIG. 1) to: obtain a send index list of the first computing device (wherein core server 102 builds a sender index table 106 (See FIG. 1), which maps data chunk signatures to index values. In particular, in order to build the sender index table, a data transmission context between a sender and a receiver is first synchronized. The data transmission context is initially empty. When a sender wishes to transmit a data block to a receiver, it first attempts to locate the one or more data chunks of the data block in its sender index table based on signatures computed for the data chunks. Since the data transmission context is empty, the sender adds the one or more data chunks to the data transmission context by adding an entry to the sender index table for each data chunk, where an entry associates the signature of a data chunk with a unique index value. The sender then transmits to the receiver the one or more data chunks and the index values associated with the data chunks’ signatures. Lev-Ran teaches that the process of indexing at the sender and at the receiver is repeated for each newly transmitted data chunk from the sender to the receiver. In this way, since the sender indexes each data chunk that is transmitted, and since the receiver keeps its receiver cache of previously transmitted data chunks synchronized to the sender index table, no index conflicts may occur. Examiner notes the limitation is silent with regard to how the “obtaining” occurs or what is meant by “obtaining,” and thus for clarity, Examiner reads Lev-Ran to teach obtaining the sender index list by synchronizing the data transmission context) (Lev-Ran, FIG. 1, paragraphs [0063], [0079], [0082] and [0083]), wherein the send index list indicates information about a second computing device that is of N second computing devices (wherein FIG. 1 also illustrates a number (i.e., more than 2) edge servers 120, 130, 140. Again, the sender adds the one or more data chunks to the data transmission context by adding an entry to the sender index table for each data chunk, where an entry associates the signature of a data chunk with a unique index value. The sender then transmits to the receiver the one or more data chunks and the index values associated with the data chunks' signatures. Upon receipt of the message, the receiver stores the one or more data chunks in its receiver cache, and adds an entry to its receiver index table for each received data chunk. See also FIG. 2B, whereby core server 102 is sender device. At sender 260, context 250 comprises a sender index table. The sender index table associates unique index values with the signatures of previously transmitted data chunks. In response to receiving the data block from CIFS read flow module 266, inter-block compression module 268 identifies one or more data chunks in the data block by using a data-dependent chunking algorithm, and computes a collision-resistant cryptographic signature for each data chunk. CIFS read flow module 266 then uses the signature of each data chunk to perform a lookup in the sender index table of context 250. A match between the signature of a particular data chunk and an entry in the sender index table indicates that the particular data chunk has been previously been transmitted. In this case, inter-block compression module 268 retrieves the index value associated with the signature) (Lev-Ran, FIG. 1, paragraphs [0082] and [0106]) and that corresponds to each of a plurality of data blocks to be sent by the first computing device (again, for each data block) (Lev-Ran, paragraphs [0082] and [0106]), wherein the information about the second computing device indicates a computing device that receives each data block (matching contexts of sender to receiver) (Lev-Ran, paragraphs [0084]-[0085]), and wherein N is a positive integer greater than or equal to 2 (again, multiple edge servers 120, 130, 140) (Lev-Ran, FIG. 1); and separately send the plurality of data blocks to the N second computing devices based on the send index list (again, based on the data transmission context and sender/receiver index lists) (Lev-Ran, paragraphs [0082] and [0106]).
Regarding claim 16, Lev-Ran discloses the non-transitory computer-readable storage medium according to claim 15, wherein the N second computing devices comprise the first computing device (wherein any and all of core server 102 and edge servers 120, 130, and 140 perform the functions of both senders and receivers of data) (Lev-Ran, paragraph [0062]).
Regarding claim 18, Lev-Ran discloses the non-transitory computer-readable storage medium according to claim 17, wherein the send index list comprises a plurality of rows (see, e.g., hash table 510) (Lev-Ran, FIG. 5), wherein each row indicates one or more first storage locations (wherein whenever a new data chunk signature is detected, in addition to creating a new entry in hash table 510, the new index value and the new signature are also inserted in an entry of buffer 520 (See again, FIG. 5) where the index value is used as a key) (Lev-Ran, FIG. 5, paragraph [0164]), on the first computing device (again, on sender) (Lev-Ran, FIG. 5, paragraph [0161]), of X data blocks to be sent to one second computing device (again, for each data chunk) (Lev-Ran, FIG. 5, paragraph [0164]), and wherein X is a positive integer greater than or equal to 1 (again, multiple data chunks, each as entries in hash table) (Lev-Ran, FIG. 5, paragraph [0162]); and wherein the separately sending the plurality of data blocks to the N second computing devices based on the send index list comprises: obtaining, for one or more of the N second computing devices, the first storage locations of the X to-be-sent data blocks from a row corresponding to the second computing device in the send index list (again, using signature as a key matching signatures of data chunks that the sender needs to transmit) (Lev-Ran, paragraphs [0163]-[0164]); and obtaining the X data blocks from the first storage locations on the first computing device (again, using the hash table) (Lev-Ran, FIG. 5, paragraphs [0163]-[0164]); and sending the X data blocks to the second computing device (again, sending the data chunks) (Lev-Ran, paragraphs [0046] and [0082]).
Regarding claim 19, Lev-Ran discloses the non-transitory computer-readable storage medium according to claim 18, wherein the one or more first storage locations are one or more storage locations in a send buffer (further disclosing a circular buffer, such as a cyclic index buffer on disk) (Lev-Ran, paragraphs [0044] and [0160]).
Claim Rejections - 35 USC § 103
15. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
16. This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
17. Claims 1-7, 17 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Lev-Ran in view of ZHANG et al. (United States Patent Application Publication No. US 2019/0220356 A1), hereinafter “ZHANG”.
As to claim 1, Lev-Ran discloses a data transmission method, comprising: obtaining, by a first computing device of a plurality of computing devices of a computing system performing collective communication, a send index list of the first computing device (wherein core server 102 builds a sender index table 106 (See FIG. 1), which maps data chunk signatures to index values. In particular, in order to build the sender index table, a data transmission context between a sender and a receiver is first synchronized. The data transmission context is initially empty. When a sender wishes to transmit a data block to a receiver, it first attempts to locate the one or more data chunks of the data block in its sender index table based on signatures computed for the data chunks. Since the data transmission context is empty, the sender adds the one or more data chunks to the data transmission context by adding an entry to the sender index table for each data chunk, where an entry associates the signature of a data chunk with a unique index value. The sender then transmits to the receiver the one or more data chunks and the index values associated with the data chunks’ signatures. Lev-Ran teaches that the process of indexing at the sender and at the receiver is repeated for each newly transmitted data chunk from the sender to the receiver. In this way, since the sender indexes each data chunk that is transmitted, and since the receiver keeps its receiver cache of previously transmitted data chunks synchronized to the sender index table, no index conflicts may occur. Examiner notes the limitation is silent with regard to how the “obtaining” occurs or what is meant by “obtaining,” and thus for clarity, Examiner reads Lev-Ran to teach obtaining the sender index list by synchronizing the data transmission context) (Lev-Ran, FIG. 1, paragraphs [0063], [0079], [0082] and [0083]), wherein the send index list indicates information about a second computing device that is of N second computing devices (wherein FIG. 1 also illustrates a number (i.e., more than 2) edge servers 120, 130, 140. Again, the sender adds the one or more data chunks to the data transmission context by adding an entry to the sender index table for each data chunk, where an entry associates the signature of a data chunk with a unique index value. The sender then transmits to the receiver the one or more data chunks and the index values associated with the data chunks' signatures. Upon receipt of the message, the receiver stores the one or more data chunks in its receiver cache, and adds an entry to its receiver index table for each received data chunk. See also FIG. 2B, whereby core server 102 is sender device. At sender 260, context 250 comprises a sender index table. The sender index table associates unique index values with the signatures of previously transmitted data chunks. In response to receiving the data block from CIFS read flow module 266, inter-block compression module 268 identifies one or more data chunks in the data block by using a data-dependent chunking algorithm, and computes a collision-resistant cryptographic signature for each data chunk. CIFS read flow module 266 then uses the signature of each data chunk to perform a lookup in the sender index table of context 250. A match between the signature of a particular data chunk and an entry in the sender index table indicates that the particular data chunk has been previously been transmitted. In this case, inter-block compression module 268 retrieves the index value associated with the signature) (Lev-Ran, FIG. 1, paragraphs [0082] and [0106]) and that corresponds to each of a plurality of data blocks to be sent by the first computing device (again, for each data block) (Lev-Ran, paragraphs [0082] and [0106]), wherein the information about the second computing device indicates a computing device that receives each data block (matching contexts of sender to receiver) (Lev-Ran, paragraphs [0084]-[0085]), and wherein N is a positive integer greater than or equal to 2 (again, multiple edge servers 120, 130, 140) (Lev-Ran, FIG. 1); separately sending, by the first computing device, the plurality of data blocks to the N second computing devices based on the send index list (again, sending/receiving based on the data transmission context and sender/receiver index lists) (Lev-Ran, paragraphs [0082] and [0106]); and separately receiving, by the N second computing devices, the plurality of data blocks (again, sending/receiving based on the data transmission context and sender/receiver index lists) (Lev-Ran, paragraphs [0082] and [0106]). Lev-Ran does not expressly disclose wherein data blocks received by each second computing device are consecutive data blocks. However in an analogous art, ZHANG discloses wherein data blocks received by each second computing device are consecutive data blocks (wherein a data chunk may require no boundary indication, but is directly formed by a series of consecutively stored data objects) (ZHANG, paragraph [0100]). Lev-Ran and ZHANG are analogous art because they are from the same field of endeavor, namely, managing and individually processing data chunks in a distributed communications system. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art, having the teachings of Lev-Ran and ZHANG before him or her, to modify the infrastructure of Lev-Ran to include the additional limitation of wherein data blocks received by each second computing device are consecutive data blocks, as disclosed in ZHANG, with reasonable expectation that this would result in the ability to keep track of each received chunk without requiring a boundary indication, thereby conserving resources (See ZHANG, paragraph [0100]). This method of improving the infrastructure of Lev-Ran was well within the ordinary ability of one of ordinary skill in the art based on the teachings of ZHANG. Therefore, it would have been obvious to one having ordinary skill in the art to combine the teachings of Lev-Ran with ZHANG to obtain the invention as specified in claim 1.
Regarding claim 2, Lev-Ran-ZHANG discloses the method according to claim 1, wherein the N second computing devices comprise the first computing device (wherein any and all of core server 102 and edge servers 120, 130, and 140 perform the functions of both senders and receivers of data) (Lev-Ran, paragraph [0062]). The motivation regarding the obviousness of claim 1 is also applied to claim 2.
Regarding claim 3, Lev-Ran-ZHANG discloses the method according to claim 2, wherein a number is set for each second computing device (numbers set M and K) (ZHANG, paragraph [0013]); and wherein the separately sending, by the first computing device, the plurality of data blocks to the N second computing devices based on the send index list comprises: determining, by the first computing device, based on the send index list and numbers of the second computing devices, a sequence of sending the plurality of data blocks to the N second computing devices, wherein the first computing device first sends a data block to the first computing device (wherein the data chunk and the corresponding error-correcting data chunk are stored at different storage locations in the distributed storage system, for example, the first storage device and the second storage device. This can ensure that when some parts of the first storage device become faulty, data in the faulty storage device can be restored based on data in the second storage device and other parts of the first storage device that operate normally. Therefore, the distributed storage system can have a redundancy capability that meets a basic requirement, namely, reliability. The first storage device may be understood as a conventional data server configured to store the data chunk, and the second storage device may be understood as a parity server that stores the error-correcting data chunk of the data chunk. When a maximum of M servers (M data servers, M parity servers, or M servers including data servers and parity servers) in K data servers and M parity servers become faulty, remaining K servers may restore data in the faulty servers by using an encoding algorithm) (ZHANG, paragraph [0013]). As discussed and shown above, Lev-Ran and ZHANG are analogous art because they are from the same field of endeavor, namely, managing and individually processing data chunks in a distributed communications system. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art, having the teachings of Lev-Ran and ZHANG before him or her, to modify the infrastructure of Lev-Ran to include the additional limitations of wherein a number is set for each second computing device; and wherein the separately sending, by the first computing device, the plurality of data blocks to the N second computing devices based on the send index list comprises: determining, by the first computing device, based on the send index list and numbers of the second computing devices, a sequence of sending the plurality of data blocks to the N second computing devices, wherein the first computing device first sends a data block to the first computing device, as disclosed in ZHANG, with reasonable expectation that this would result in an infrastructure having the added benefit of redundancy capability and redundancy (See ZHANG, paragraph [0013]). This method of improving the infrastructure of Lev-Ran was well within the ordinary ability of one of ordinary skill in the art based on the teachings of ZHANG. Therefore, it would have been obvious to one having ordinary skill in the art to combine the teachings of Lev-Ran with ZHANG to obtain the invention as specified in claim 3.
Regarding claim 4, Lev-Ran-ZHANG discloses the method according to claim 3, wherein the send index list comprises a plurality of rows (see, e.g., hash table 510) (Lev-Ran, FIG. 5), wherein each row indicates one or more first storage locations (wherein whenever a new data chunk signature is detected, in addition to creating a new entry in hash table 510, the new index value and the new signature are also inserted in an entry of buffer 520 (See again, FIG. 5) where the index value is used as a key) (Lev-Ran, FIG. 5, paragraph [0164]), on the first computing device (again, on sender) (Lev-Ran, FIG. 5, paragraph [0161]), of X data blocks to be sent to one second computing device (again, for each data chunk) (Lev-Ran, FIG. 5, paragraph [0164]), and X is a positive integer greater than or equal to 1 (again, multiple data chunks, each as entries in hash table) (Lev-Ran, FIG. 5, paragraph [0162]); and wherein the separately sending, by the first computing device, the plurality of data blocks to the N second computing devices based on the send index list comprises: obtaining, for one or more of the N second computing devices, by the first computing device, the first storage locations of the X to-be-sent data blocks from a row corresponding to a second computing device in the send index list(again, using signature as a key matching signatures of data chunks that the sender needs to transmit) (Lev-Ran, paragraphs [0163]-[0164]); obtaining the X data blocks from the first storage locations on the first computing device (again, using the hash table) (Lev-Ran, FIG. 5, paragraphs [0163]-[0164]); and sending the X data blocks to the second computing device (again, sending the data chunks) (Lev-Ran, paragraphs [0046] and [0082]). The motivation regarding the obviousness of claim 1 is also applied to claim 4.
Regarding claim 5, Lev-Ran-ZHANG discloses the method according to claim 4, wherein the one or more first storage locations are one or more storage locations in a send buffer (further disclosing a circular buffer, such as a cyclic index buffer on disk) (Lev-Ran, paragraphs [0044] and [0160]). The motivation regarding the obviousness of claim 1 is also applied to claim 5.
Regarding claim 6, Lev-Ran-ZHANG discloses the method according to claim 1, further comprising: obtaining, by the second computing device, a receive index list of the second computing device (again, building the receiver index table by synchronizing the data transmission context) (Lev-Ran, paragraph [0082]), wherein the receive index list indicates information about the first computing device corresponding to Y data blocks received by the second computing device (again, upon receipt of the message, the receiver stores the one or more data chunks in its receiver cache, and adds an entry to its receiver index table for each received data chunk. Each entry associates the index value received in the message with the location in the receiver cache of the corresponding data chunk) (Lev-Ran, paragraph [0082]), and wherein Y is a positive integer greater than or equal to 1 (again, multiple chunks) (Lev-Ran, paragraphs [0086], [0106] and [0163]-[0164]); and wherein the separately receiving, by the N second computing devices, the plurality of data blocks comprises: separately storing, by the second computing devices based on the receive index list, the data blocks sent by the first computing device (again, storing in cache) (Lev-Ran, paragraphs [0046] and [0082]). The motivation regarding the obviousness of claim 1 is also applied to claim 6.
Regarding claim 7, Lev-Ran-ZHANG discloses the method according to claim 6, wherein the receive index list comprises a plurality of rows (receiver data structure shown in FIG. 6) (Lev-Ran, FIG. 6), wherein each row indicates one or more second storage locations (cluster file identifier field) (Lev-Ran, FIG. 6, paragraph [0176]), on the second computing device (again, on receiver) (Lev-Ran, FIG. 6, paragraph [0173]), of Y data blocks received from at least one first computing device (cluster file identifier field 618 stores an identifier that identifies the cluster file and/or the cluster in which the particular data chunk is stored) (Lev-Ran, FIG. 6, paragraph [0176]); and wherein the separately storing, by the N second computing devices based on the receive index list, the data blocks sent by the first computing device comprises: receiving, by the N second computing devices, the data blocks from the first computing device (again, previously received data chunks) (Lev-Ran, FIG. 6, paragraph [0174]); obtaining, by the N second computing devices from a row corresponding to the first computing device in the receive index list based on the first computing device, one or more second storage locations used for storing the data blocks (wherein content of newly received data chunks is collected in head cluster 624 that is stored in RAM) (Lev-Ran, FIG. 6, paragraph [0177]); and storing, by the N second computing devices, the data blocks at the one or more second storage locations (again, storing in RAM) (Lev-Ran, FIG. 6, paragraph [0177]). The motivation regarding the obviousness of claim 1 is also applied to claim 7.
Claim 17 includes limitations substantially as recited in method claim 3, and does not appear to contain any additional features with regard to novelty and/or nonobviousness; therefore, it is rejected under the same rationale.
In addition, claim 20 includes limitations substantially as recited in method claim 1, and does not appear to contain any additional features with regard to novelty and/or nonobviousness; therefore, it is rejected under the same rationale.
Allowable Subject Matter
18. Claims 8-14 are allowed.
19. The following is a statement of reasons for the indication of allowable subject matter: As indicated above, independent claim 8 is being interpreted under 35 U.S.C. 112(f), and as such the limitations of independent claim 8 are afforded a narrower interpretation than having not been crafted in accordance with an interpretation under 35 U.S.C. 112(f). That is, the broadest reasonable interpretation of a claim limitation that invokes 35 U.S.C. 112(f) (i.e., each of the limitations spanning independent claim 8) is the structure, material or act described in the specification as performing the entire claimed function and equivalents to the disclosed structure, material or act. As further highlighted above, Examiner no longer affords independent claim 8 the broadest reasonable interpretation, but rather reads all disclosed subject matter from aforementioned paragraphs [0098], [0099], [0106], [0108]-[0114] and [0117] into independent claim 8. Again, when an element is claimed using language falling under the scope of 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, 6th paragraph (often broadly referred to as means- (or step-) plus- function language), the specification must be consulted to determine the structure, material, or acts corresponding to the function recited in the claim, and the claimed element is construed as limited to the corresponding structure, material, or acts described in the specification and equivalents thereof. In re Donaldson, 16 F.3d 1189, 29 USPQ2d 1845 (Fed. Cir. 1994) (see MPEP § 2181- MPEP § 2186).
Conclusion
20. Further references of interest are cited on Form PTO-892, which is an attachment to this Office Action. For instance, LO (USPGPUB 2021/0099296) discloses systems and methods for key generation for secure communication between a first user computing device and a second user computing device without requiring direct communication during key generation. The method using a plurality of privacy providers and a first private table and a second private table. The method including: performing by the second user computing device: receiving indexes each associated with a value in the second private table, each index received from the respective privacy provider sharing those values, each index associated with a value that matches an indexed value in the first private table received by the respective privacy provider from the first user computing device; and generating a common key for the secure communication by combining the indexed values of the second private table (See Abstract). HE (CN 113836077) discloses a crowdsourcing equipment, comprising a plurality of computing cores, each of the computing cores comprises a data processing unit and a routing unit; wherein the data processing unit is used for receiving the data to be processed, processing the data to be processed, and sending the processing result to the route target, wherein the route target is at least one of the plurality of calculation cores; the routing unit is stored with a routing index table, the routing unit is used for obtaining the first index information according to the processing result, and determining the routing target according to the first index information and the routing index table. The route index table is used for storing at least one second index information and at least one calculation core corresponding to each second index information, so as to realize autonomous dynamic routing in the multi-core structure, improving the flexibility of the routing (See Abstract). LIU (CN 111200479) discloses a checking method for the transmission data, and the storage medium, the method comprising: the transmission data to be split into data packet body of more than two, and creating a first segment corresponding to the object, the first fragment object stored in the first linked list. corresponding to the index value of the first linked list corresponding to the first fragment object comprises data bag body and the bag body check value, the first fragment object; according to the check value of the transmission data and the first total number of the fragment object, calculating to obtain the first hash value corresponding to the first linked list, according to the verification value and index value of each first segment object, calculating to obtain the second hash value corresponding to each first fragment object, sending the second hash value corresponding to the first hash value and the respective first fragment object to the data receiving end. The invention realizes the improvement of transmission efficiency under the distributed data transmission, but also can ensure data transmission integrity (See Abstract). FAN (CN 108809514) discloses a data transmission method and a related device for improving directory traversal speed and to improve the efficiency of data searching and data restoration. A method comprises the first device according to the preset multi-thread sequence traversal algorithm and the size of the generated target data to be transmitted two-dimensional index table, two-dimensional index table is used for indicating the storage location of each data in the target data; first device taking data reconstitution to the target data according to the two-dimensional index table to obtain two-dimensional data block pool, two-dimensional data block pool includes a plurality of data blocks, each data block respectively corresponding to one coordinate value of two-dimensional index table; and by the two-dimensional index table index to the plurality of data blocks to the second device by the first device (See Abstract).
21. Any inquiry concerning this communication or earlier communications from the examiner should be directed to KOSTAS J. KATSIKIS whose telephone number is (571)270-5434. The examiner can normally be reached Monday-Friday, 9:00am-5:00pm. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Kamal B. Divecha can be reached at 571-272-5863. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/KOSTAS J KATSIKIS/Primary Examiner, Art Unit 2453