DETAILED ACTION
This action is in response to communication filed on 12/29/2023
Claims 1-20 are pending.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
At least claims 1, 11, and 19 are provisionally rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1, 10, and 17 of copending Application No. 18/401/309 (reference application). Although the claims at issue are not identical, they are not patentably distinct from each other because the independent claims both target SDN for AI workloads (e.g., collectives lieks all-reduce), in-network operation (aggregation, broadcast), and acceleration by network devices (e.g., swtiches with DPU). The copending application VXLAN-based implementation would be an obvious variants of Kandula’s primitive/header-based approach to one skilled in the art. Both solve the same problem (offloading AI operations to network for latency reduction) using similar techniques (header-driven payload operation in SDN devices).
This is a provisional nonstatutory double patenting rejection because the patentably indistinct claims have not in fact been patented.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claim 11-18 are rejected under 35 U.S.C. 101 because the claimed invention is directed to non-statutory subject matter. The claim(s) does/do not fall within at least one of the four categories of patent eligible subject matter because the claim, as presently drafted, does not constitute a proper “machine” claim because it fails to recite the structural elements that define the machine. While the preamble recites “A network device configured to process data packets…,” the body of the claim only sets forth functional capabilities and operations to be performed, without specifying the tangible structural components that make up the network device.
A “machine” under 35 U.S.C. § 101 must be a concrete thing, consisting of parts, or of certain devices and combination of devices, capable of performing the claimed functions. The present claim recites the network device only in terms of what it is “configured to” do (e.g., “configured to execute primitives,” “configured to perform operations comprising…”), and describes the receipt, determination, processing, and sending of data packets entirely at a functional level. The claim does not identify any physical parts, components, or arrangements (such as processors, memory, interfaces, buses, circuitry, etc.) that structurally constitute the network device.
The absence of recited structural elements means the claim encompasses any device capable of performing the recited functions, regardless of its physical makeup, thereby covering an abstract idea of data packet processing for AI workloads in an SDN environment. As such, the claim is not limited to a statutory “machine” but instead reads on non-statutory subject matter in the form of a set of functional results.
For example, the claim recites steps such as “receiving… a primitive,” “determining… that the packet is associated with the AI workload,” “performing… the operation on a payload,” and “sending… the processed data packet,” without specifying any concrete hardware structure that implements these steps. These are abstract data manipulation operations that could be performed by any general-purpose computer or programmable device, and are not tied to a particular machine having defined structural features.
Claim Rejections - 35 USC § 102
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.
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.
Claims 1-6, 11-14, and 19 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Klenk et al. (US 2021/0036877).
Regarding claim 1, Klenk discloses a method for processing data packets in a computing network processing workloads in a network device operating in a software defined network (SDN), the network device configured to execute primitives for data payloads in the packets associated with the workloads in the network prior to forwarding the packets to hosts in the SDN, the method comprising:
receiving, by the network device via a control plane, a primitive indicative of an analytical, computational, or transformative operation to be performed on data payloads transmitted by data packets associated with a workload being processed in the SDN (Klenk discloses the network device receiving configuration (i.e., the primitive as MCR setup) via the fabric manger (functioning as a control plane), where the primitive defines regions for in-network computation (computational operations like reductions) on packet payload associated with workload (e.g., distributed ML training involving collective primitives); see [0046] “regions of addresses in the shared global address space can be defined as multicast regions, and packets addressed to addresses in these multicast regions can be treated as primitives for implementing in-network computations” and [0051] “the network 100 includes a fabric manager 150 that is connected to the network device 110. The fabric manager 150 is configured to setup and manage special MCRs within a global address space shared within the network 100”.)
wherein the primitive is associated with a protocol for configuring network devices to perform in-network acceleration of workloads in coordination with source and destination hosts in the SDN (Klenk discloses the primitive is tied to a protocol (shared global address space management, including endpoint registration and MRT programming) that configures devices for in-network acceleration (offloading reduction to reduce latency/bandwidth for workloads like ML parameter aggregation) in coordination with host (endpoints as source/destination register allocations and participate via load/store to MCR addresses). In other words, this discloses the association because the protocol enables coordinated acceleration between devices and hosts in the network; see [0049] “scalable in-network computations, such as a reduction operation, can be performed in the network 100 by off-loading the computation to the logic 130 in the network device 110 (or devices) rather than performing the computations on one of the endpoints” and [0153] “at step 702, the fabric manager 150 is configured to create an MCR. As part of step 702, each endpoint registers an existing memory allocation with the fabric manager 150”);
receiving, by the network device, a data packet associated with the workload being processed in the computing network (Klenk discloses a network device receiving a pull request associated with a collective communication primitive; see [0162] “A pull request refers to a load operation associated with a collective communication primitive. A load operation is essentially a request to read a memory location or range of memory addresses in the shared memory space of the network. In the case of an All-Reduce primitive associated with m data elements and p endpoints, each participating endpoint is configured to receive m/p pull requests from the network, each separate pull request is associated with a different network address in the range of network addresses associated with an MCR”);
determining, by the network device, that the packet is associated with the workload being processed in the computing network based on a transmission identifier and a parameter indicated by the primitive, the transmission identifier and parameter contained in a header of the data packet (Klenk discloses the network device decoding the packet header to read a network address (transmission identifier) and determine association with the MCR-based workload; the MCR setup (via fabric manager for primitives) indicates parameters like the reduction operator, which can be in the pull request (packet) or MRT queried from the header address, effectively basing determination on header-contained identifier and primitive-indicated parameter; see [0025] “a reduction operator is specified in at least one of the pull request or a multicast region table” and [0155] “the header can include a field for a destination address that specifies a network address included within the range of addresses allocated to the MCR. The network device 110 includes logic 130 that decodes the header of the packet and determines that the destination address is associated with a network address corresponding to the MCR. Responsive to determining the network address corresponds with the MCR, the logic 130 looks up an entry in the MCR table 132 corresponding to the MCR in order to identify the participating endpoints in the network”);
in response to the determining, performing, by the network device, the operation on a payload of the data packet (Klenk discloses performing a reduction operation (e.g., combine) on the payload in direct response to determining the packet’s association via header address and table checks; see [0170] “as each response is received and decoded by a network device, the network device checks the network address included in the response to determine if the network address is associated with an MCR and, if the network address is associated by the MCR, checks the reduction table to determine if the response is associated with an entry in the reduction table. If the response is associated with the entry in the reduction table, then the logic 130 decodes the payload of the response and combines the payload with the intermediate reduction result in the reduction table”); and
sending, by the network device, the processed data packet to a destination address identified in the header of the packet (Klenk [0190] at step 912, a pull response is generated by the network device and is forwarded to at least one participating endpoint. A payload of the pull response includes the intermediate result calculated based on one or more responses associated with the collective communication primitive received at the network device from two or more participating endpoints).
Regarding claim 2, Klenk discloses the method of claim 1, wherein the workload comprises an artificial intelligence (AI) workload (see Klenk [0147] “the All-Reduce operation is especially critical in parallel deep-learning training algorithms on large distributed systems. For example, after each endpoint adjusts the parameters of a neural network based on a loss function applied to results from a batch of training samples, the parameters are shared with all other endpoints associated with different batches of training samples. This can be implemented as an All-Reduce operation that is called during every training iteration”).
Regarding claim 3, Klenk discloses the method of claim 1, wherein the network device comprises one of a network interface card (NIC), a network switch, or a disaggregated pool of NICs (Klenk [0047] “each endpoint can also include a networking capability, such as a network interface controller (NIC) configured to communicate with the network device 110 via one or more communications protocols such as Ethernet”).
Regarding claim 4, Klenk discloses the method of claim 1, wherein the workload comprises a collective (Klenk [0150] “a collective communication primitive comprises a message (e.g., a data packet) associated with a network address”).
Regarding claim 5, Klenk discloses the method of claim 1, wherein the operations comprise multicast, in-network aggregation, or gradient compression (Klenk [0150] “a second collective communication primitive is a Multicast primitive. The Multicast primitive is narrower than a Broadcast primitive in that the Multicast primitive enables one endpoint to transmit data to a subset of endpoints participating in the network”).
Regarding claim 6, Klenk discloses the method of claim 1, wherein the workload comprises one or more of a one-to-one transformation, one-to-many transformation, or many-to-one transformation (Klenk [0150] “a first collective communication primitive is a Broadcast primitive. The Broadcast primitive enables one endpoint to transmit data (e.g., a payload) to every other endpoint participating in the network”).
Regarding claim(s) 11-14 and 19 do(es) not teach or further define over the limitation in claim(s) 1, 4-6 and 1 respectively. Therefore claim(s) 11-14 and 19 is/are rejected for the same rationale of rejection as set forth in claim(s) 1, 4-6 and 1 respectively.
Claim Rejections - 35 USC § 103
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 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.
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 of this title, 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.
The factual inquiries set forth in Graham v. John Deere Co., 383 U.S. 1, 148 USPQ 459 (1966), that are applied for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claims 7-10, 15-18 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Klenk et al. (US 2021/0036877) in view of Lee et al. (US 2020/0313999).
Regarding claim 7, Klenk discloses the method of claim 1, wherein the primitive is received by the network device via an application programming interface (API) operable to receive a message indicative of the primitive and instructions to the network device for executing the primitive (Klenk [0153] “a range of network addresses can be allocated to the fabric manager 150 and requests to map a memory allocation in the endpoint to a particular MCR can be made by a write request to one of the network addresses allocated to the fabric manager 150…. an application can invoke a driver to request a memory region be allocated as an MCR. The driver is a component associated with the fabric manager 150 and enables an application to call the fabric manager 150 to create the MCR in the shared network address space”).
Klenk teaches receiving the primitive configuration via a driver/API-like interface, but the driver is application-invoked rather than explicitly an API on the network device itself. Therefore, Klenk does not explicitly disclose wherein the primitive is received by the network device via an application programming interface (API).
Lee in the field of the same endeavor discloses techniques for utilizing programmable packet engines for cross-platform network testing, including test packets generation and recirculation, header modification, state injection, multi-table classification, and synchronized timestamping. In particular, Lee teaches the following:
wherein the primitive is received by the network device via an application programming interface (API) (Lee discloses the network device (programmable packet engine) receiving primitives via a control plane API using protocols like gRPC with protobuf, where the API receives messages for configuring operation (primitives) and instructions for execution in match-action units (MAUs); see [0030] “a programmable packet engine can be programmable by configuring software executed by the forwarding element. A device user, testing engineer, control plane, or device manufacturer can load the configuration software into the packet engine”).
Therefore, it would have been obvious to a person of ordinary skill in the art at the time the invention was effectively filed to modify the prior art with the teaching of Lee to incorporate techniques for utilizing programmable packet engines for cross-platform network testing. One would have been motivated to combine the prior art with Lee because Lee’s teachings would improve the flexibility, efficiency, and programmability of packet payload operation in software-defined networks for workloads like data analytics and machine learning.
Regarding claim 8, Klenk-Lee discloses the method of claim 7, wherein the API is configured to receive a control path and a data path for a primitive (Lee [0034] “network tester including a programmable packet engine that provides at least the following: Start/Stop sending/receiving traffic on a port”).
Regarding claim 9, Klenk-Lee discloses the method of claim 7, wherein the control path includes a transformation identifier, a match clause, and transformation information (Klenk [0010] ”the identifying step comprises: reading a network address from a header of the pull request, querying a multicast region table based on the network address, and identifying the one or more participating endpoints based on information included in a corresponding entry of the multicast region table. The multicast region table maps ranges of addresses in a shared global address space to multicast regions” and Lee [0159] “to generalize, the wide match key space can be divided into N number of sub-tables, e.g., t_1, t_2, . . . t_{N−1}, t_N, as long as the match type required for fields in t_1 to t_{N−1} is exact-match. Only the last table t_N does ternary or range match with different priorities. The chaining can be performed by returning a match index from previous t_{i−1} and exact-matches on the index in the next table t_i.”).
Regarding claim 10, Klenk-Lee discloses the method of claim 9, wherein the match clause includes one of an offset from which to obtain values of the transformation identifier, or a Boolean valued filter expression (Lee [0155] “referring to FIG. 10A, a received packet has fields A and B with respective values of 45 and 50. A first table, Table 1, includes a range of values of Field A (e.g., 40-50 and 0-50). In Table 1, a match on an entry with a range 40-50 occurs with an index of 20”).
Regarding claim(s) 15-18 and 20 do(es) not teach or further define over the limitation in claim(s) 7-10 and 7 respectively. Therefore claim(s) 15-18 and 20 is/are rejected for the same rationale of rejection as set forth in claim(s) 7-10 and 7 respectively.
Conclusion
For the reason above, claims 1-20 have been rejected and remain pending.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JIMMY H TRAN whose telephone number is (571)270-5638. The examiner can normally be reached Monday-Friday 9am-5pm PST.
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, Chris Parry can be reached at 571-272-8328. 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.
JIMMY H TRAN
Primary Examiner
Art Unit 2451
/JIMMY H TRAN/Primary Examiner, Art Unit 2451