Response to an Amendment
This office action is a response to a Communication made on 10/21/2025.
Claims 7, 15 and 20 are canceled.
Claims 21-23 are new.
Claims 1-2, 4-6, 8, 10, 13 and 17 are currently amended.
Claims 1-6, 8-14, 16-19 and 21-23 are pending for this application.
Response to Arguments
Applicant’s arguments with respect to claim(s) 1, 10 and 17 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Applicant’s arguments, see remark on page 7-8, filed 10/21/2025, with respect to the rejection(s) of claim(s) 1, 10 and 17 under 102 (a)(1) have been considered and regarding the amended feature of “for a Google Remote Procedure Call over Hypertext Transfer Protocol 2 (gRPC/HTTP 2) message” are persuasive. Therefore, the rejection has been withdrawn. However, upon further consideration, a new ground(s) of rejection is made in view of Kutch et al. (US 2021/0117360) in view of Henkel et al. (US 11425221 B1).
Claim Rejections - 35 USC § 103
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.
Claim(s) 1-6, 8-14, 16-19 and 21-24 is/are rejected under 35 U.S.C. 103 as being unpatentable over Kutch et al. (US 2021/0117360), hereinafter “Kutch” in view of Henkel et al. (US 11425221 B1), hereinafter “Henkel”.
With respect to claim 1, Kutch discloses an apparatus comprising:
a device interface (¶0056, teaches a CPU using a device interface) and
a network interface device, coupled to the device interface (¶0055, teaches a network interface controller (NIC) to provide ingress traffic to a packet processing pipeline. The packet processing pipeline can be distributed over one or more packet processing devices and general purpose computing (e.g., CPU), comprising:
circuitry to process data (¶0304, teaches Processors 4104 and packet processing circuitry can include any combination of a: processor, core, graphics processing unit (GPU), field programmable gate array (FPGA), application specific integrated circuit (ASIC), and
circuitry configured to: for a Google Remote Procedure Call message (¶0104, teaches an application composed of microservices, where each microservice runs in its own process and communicates using protocols (e.g., an HTTP resource API, message service, RPC, or gRPC (i.e.Remote Procedure Call)), split a received flow of a mixture of control and data content (¶0109, teaches the system of FIG. 10 can use a network interface (NIC) 1050 to transmit or receive packets using a network medium. A flow can be a sequence of packets being transferred between two endpoints, ¶0207, teaches FIG. 24 depicts an example of header (i.e. control content) and payload (data content) splitting. Setup of split of header from payload can utilize packet processing input-output memory management unit (IOMMU) Address Translation), and provide the control content to a control plane processor (¶0052, teaches input-output memory management unit (IOMMU) Address Translation to permit splitting header (i.e. control content) and payload so that a header and/or payload can be provided to the offload processor or CPU (i.e. control plane processor)) and provide the data content for access to the circuitry to process data (¶0132-¶0133, teaches access the packet data from the offload processor buffer…an offload processor can access and process data to be transmitted), wherein the mixture of control and data content are received as part of the gRPC (¶0052 teaches header (control content) and payload (i.e. data content), ¶0104, teaches an application composed of microservices, where each microservice runs in its own process and communicates using protocols (e.g., an HTTP resource API, message service, RPC, or gRPC (i.e.Remote Procedure Call)), and
for a second message, provide the received second message to a processor for processing (¶0089, teaches a packet is received by the network interface and provide to a packet processor for processing and then transmitted using the network interface, ¶0161, teaches received packets (i.e. received second message) may be provided to different destinations (e.g., CPU or particular processor available to NIM 1810, see ¶0267).
However, Kutch remain silent on a Google Remote Procedure Call over Hypertext Transfer Protocol 2 (gRPC/HTTP 2) message.
Henkel discloses a Google Remote Procedure Call over Hypertext Transfer Protocol 2 (gRPC/HTTP 2) message (Col-12, II. 62-64, teaches Controller 226 may initiate a gRPC message over HTTP2).
Therefore, it would be obvious to one of ordinary skill in the art before the effective filing date of the invention to modify Kutch’s gRPC message with HTTP2 of Henkel, in order to HTTP2 provide fast, multiplexed, streaming capable transport and HTTP2 supports birdirectional streams, so gRPC can send and receive messages continuously, not just request-response (Henkel).
With respect to claim 10, Kutch discloses a non-transitory computer-readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:
configure a network interface device ((¶0055, teaches a network interface controller (NIC) to provide ingress traffic to a packet processing pipeline. The packet processing pipeline can be distributed over one or more packet processing devices and general purpose computing (e.g., CPU)) to:
detect control content and data content in at least one packet received as part of a Google Remote Procedure Call message (¶0109, teaches the system of FIG. 10 can use a network interface (NIC) 1050 to transmit or receive packets using a network medium. A flow can be a sequence of packets being transferred between two endpoints, ¶0207, teaches FIG. 24 depicts an example of header (i.e. control content) and payload (data content) splitting. Setup of split of header from payload can utilize packet processing input-output memory management unit (IOMMU) Address Translation, ¶0104, teaches an application composed of microservices, where each microservice runs in its own process and communicates using protocols (e.g., an HTTP resource API, message service, RPC, or gRPC) and direct control content to a first processor that is to execute a control plane and data content to a second processor ((¶0052, teaches input-output memory management unit (IOMMU) Address Translation to permit splitting header (i.e. control content) and payload so that a header and/or payload can be provided to the offload processor or CPU (i.e. control plane processor, ¶0133, teaches on the received data, offload processor can perform one or more of: packet processing (e.g., header parsing, flow identification, checksum validation, encryption, secure tunneling (e.g., Transport Layer Security (TLS) or Secure Sockets Layer (SSL)), or other operation), wherein the first processor is in the network interface device ((¶0055, teaches a network interface controller (NIC) to provide ingress traffic to a packet processing pipeline. The packet processing pipeline can be distributed over one or more packet processing devices and general purpose computing (e.g., CPU), and
for a second message, provide the received second message to a processor for processing (¶0089, teaches a packet is received by the network interface and provide to a packet processor for processing and then transmitted using the network interface, ¶0161, teaches received packets (i.e. received second message) may be provided to different destinations (e.g., CPU or particular processor available to NIM 1810, see ¶0267).
However, Kutch remain silent on a Google Remote Procedure Call over Hypertext Transfer Protocol 2 (gRPC/HTTP 2) message.
Henkel discloses a Google Remote Procedure Call over Hypertext Transfer Protocol 2 (gRPC/HTTP 2) message (Col-12, II. 62-64, teaches Controller 226 may initiate a gRPC message over HTTP2).
Therefore, it would be obvious to one of ordinary skill in the art before the effective filing date of the invention to modify Kutch’s gRPC message with HTTP2 of Henkel, in order to HTTP2 provide fast, multiplexed, streaming capable transport and HTTP2 supports birdirectional streams, so gRPC can send and receive messages continuously, not just request-response (Henkel).
For claim 17, it is a method claim corresponding to the non-transitory computer readable medium of claim 10. Therefore claim 17 is rejected under the same ground as claim 1.
With respect to claims 2, 11 and 18, Kutch in view of Henkel discloses the apparatus of claim 1, wherein to provide the control content to the control plane processor (Kutch, ¶0052, teaches input-output memory management unit (IOMMU) Address Translation to permit splitting header (i.e. control content) and payload so that a header and/or payload can be provided to the offload processor or CPU (i.e. control plane processor)), the circuitry is to remove data content from a received packet (Kutch, ¶0157, teaches some other metadata extracted (i.e. remove) from the packet, ¶0303, teaches MAC circuitry 4116 can be configured to perform MAC address filtering on received packets, process MAC headers of received packets by verifying data integrity, remove preambles and padding) ,and include an indicator of a location of removed data content in the received packet (Kutch, ¶0111, teaches NIM 1032 can selectively modify receive or transmit descriptors based on storage location of respective data received by NIC 1050 or content or data to be transmitted by NIC 1050, ¶0157, teaches some other metadata extracted from the packet).
With respect to claims 3, 12 and 19, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the control content comprises one or more of: User Datagram Protocol (UDP) packets, Transmission Control Protocol (TCP) packets with destination port number corresponding to non-data content, or TCP streams identified as not including data content (Kutch, ¶0109, teaches a packet in a flow is expected to have the same set of tuples in the packet header. A packet may be used herein to refer to various formatted collections of bits that may be sent across a network, such as Ethernet frames, IP packets, TCP segments, UDP datagrams, etc).
With respect to claims 4 and 13, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the control plane processor is to execute a microservice server to process the control content to perform gRPC control layers to maintain HTTP/2 and Transmission Control Protocol (TCP) connections (Kutch, ¶0103, teaches applications can include a service, microservice, cloud native microservice, workload, or software. Any of applications can perform packet processing based on one or more of Data Plane Development Kit (DPDK), Storage Performance Development Kit (SPDK), OpenDataPlane, Network Function Virtualization (NFV), software-defined networking (SDN), Evolved Packet Core (EPC), or 5G network slicing, ¶0133, teaches on the received data, offload processor can perform one or more of: packet processing (e.g., header parsing, flow identification, checksum validation, encryption, secure tunneling (e.g., Transport Layer Security (TLS) or Secure Sockets Layer (SSL)), or other operation, Henkel, Col-6, II. 59-61, teaches a flow may be all PDUs transmitted in a Transmission Control Protocol (TCP) connection, Col-13, II. 26-31, teaches responsive to receiving gRPC response message 263 , controller 226 may invoke gRPC / HTTP2 240 to generate a watch registration gRPC message 265 requesting that API server 224 register controller 226 for event stream monitoring of the new data model represented by protobuf 241 and stored to datastore 225).
With respect to claim 5, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the network interface device comprises:
circuitry to insert data into a packet with second control content (Kutch, ¶0148, teaches an enqueue request executed by the enqueue engine 1718 causes one data item to be inserted into the internal storage unit 1724, ¶0305, teaches determination based on contents (i.e. second content) of a received packet to determine which CPU or core is to process a packet), wherein the packet comprises at least one indicator of one or more positions to insert the data into the packet prior to transmission of the packet (Kutch, ¶0170, teaches an example flow for a processing of a received packet. At (1), a NIC can receive a receive (RX) descriptor indicating an available buffer to store a received packet. The available descriptor and buffer can be identified in accordance with embodiments described herein that provide a correspondence between descriptor position and buffer location, ¶0180, teaches After data is written to memory, the NIC can write a completed descriptor into DR ADI 2104 and NIM can infer a position of SGL pointers as in a corresponding position in the PB as that of the completed descriptor. The NIC can write a completed descriptor to the origin position of the receive descriptor with meta data).
With respect to claim 6, Kutch in view of Henkel discloses the apparatus of claim 5, wherein the circuitry is to insert data into the packet with the second control content based on indicators of a data position in the packet (Kutch, ¶0111, teaches NIM 1032 can selectively modify receive or transmit descriptors based on storage location of respective data received by NIC 1050 or content or data to be transmitted by NIC 1050. ¶0148, teaches an enqueue request executed by the enqueue engine 1718 causes one data item to be inserted into the internal storage unit 1724, ¶0180, teaches After data is written to memory, the NIC can write a completed descriptor into DR ADI 2104 and NIM can infer a position of SGL pointers as in a corresponding position in the PB as that of the completed descriptor. The NIC can write a completed descriptor to the origin position of the receive descriptor with meta data, ¶0305, teaches determination based on contents (i.e. second content) of a received packet to determine which CPU or core is to process a packet).
With respect to claims 8, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the circuitry to process the data comprises one or more application specific integrated circuits (ASICs); one or more field programmable gate arrays (FPGAs) (Kutch, ¶0304, teaches Processors 4104 and packet processing circuitry can include any combination of a: processor, core, graphics processing unit (GPU), field programmable gate array (FPGA), application specific integrated circuit (ASIC).
With respect to claim 9, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the network interface device comprises one or more of:
a network interface controller (NIC), a remote direct memory access (RDMA)-enabled NIC, SmartNIC, router, or a switch (Kutch, ¶0055, teaches a network interface controller (NIC) to provide ingress traffic to a packet processing pipeline, ¶0072, teaches the offload processor can use DMA or remote direct memory access (RDMA) (or other direct copy operation) to copy content from an offload processor buffer to host memory within a same package or different package,¶0302, teaches NIC 4100 can include a smartNIC, ¶0324, teaches various types of computing and networking equipment, such as switches, routers).
With respect to claim 21, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the network interface device comprises:
circuitry to generate a gRPC response message for transmission, wherein the gRPC response message includes one or more of: HTTP/2 header, gRPC response for control, or data (Henkel, Col-13, II. 26-29, teaches responsive to receiving gRPC response message 263, controller 226 may invoke gRPC/HTTP2 240 to generate a watch registration gRPC message 265 requesting that API server 224 register controller 226 for event stream monitoring of the new data model represented by protobuf 241 and stored to datastore 225).
With respect to claim 22, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the second message comprises packets that do not match a configuration of an ingress port number that corresponds to data traffic and/or packets identified as not carrying data (Kutch, ¶0267, teaches Flow lookup 3702 operation of WAT can forward packets of flows that do not match the flow lookup are forwarded to the CPU for further processing in CPU cores (shown as 3710)).
With respect to claim 23, Kutch in view of Henkel discloses the apparatus of claim 1, wherein the circuitry is to split the received flow of a mixture of control and data content (Kutch, ¶0109, teaches the system of FIG. 10 can use a network interface (NIC) 1050 to transmit or receive packets using a network medium. A flow can be a sequence of packets being transferred between two endpoints, ¶0207, teaches FIG. 24 depicts an example of header (i.e. control content) and payload (data content) splitting. Setup of split of header from payload can utilize packet processing input-output memory management unit (IOMMU) Address Translation), and provide the control content to the control plane processor (Kutch, ¶0052, teaches input-output memory management unit (IOMMU) Address Translation to permit splitting header (i.e. control content) and payload so that a header and/or payload can be provided to the offload processor or CPU (i.e. control plane processor)) and provide the data content for access to the circuitry to process data based on receipt of the gRPC/HTTP2 message at a configured port (Henkel, Fig. 5, step 500, teaches network controller 114 may execute API server 124 by which to access one or more data models stored to datastore 125 ( 500 ), Col-12, II. 62-64, teaches Controller 226 may initiate a gRPC message over HTTP2, Col-13, II. 22-25, teaches API service 230 may generate a gRPC response message 263 acknowledging successful registration of the data model to datastore 225, transmitting the gRPC response message to controller 226).
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to GOLAM MAHMUD whose telephone number is (571)270-0385. The examiner can normally be reached Mon-Fri 8.00-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, Umar Cheema can be reached on 5712703037. 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.
/G.M/Examiner, Art Unit 2458
/UMAR CHEEMA/Supervisory Patent Examiner, Art Unit 2458