DETAILED ACTION
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 .
This office action is in response to applicant’s amendment filed on 08/24/2026.
Claims 1-20 are pending and examined.
Response to Arguments
Applicant’s arguments filed 08/24/2026, with respect to 35 U.S.C. 112(b) have been fully considered and are persuasive. The lack of antecedent basis has been corrected and the 35 U.S.C. 112(b) rejections of claims 3-11 and 17-20 have been withdrawn.
Applicant's arguments filed 08/24/2026, with respect to 35 U.S.C. 103 have been fully considered but they are not persuasive. The applicant argued that “the cited references have no disclosure regarding generating and distributing configuration data for configuring forwarding elements to forward results computed by endpoint processing units (EPUs) that perform computations for a distributed application that is executed by the EPUs,” that “none of the cited references discloses receiving API commands that identify EPUs with programming layer identifiers and generating configuration data that identify EPUs with network layer identifiers” and that “none of the cited references discloses generating the configuration data by translating programming layer identifiers of EPUs to networking layer identifiers of the EPUs and using the network layer identifiers of the EPUs to specify desired forwarding operations for forwarding the results to destinations in the network,” without providing specific arguments for why none of the cited references disclose the limitations. The examiner respectfully disagrees, see 35 U.S.C. 103 rejections below for a detailed analysis. With regards to the first point, it appears that the arguments is directed towards the last limitation of claim 1, which has not been amended in the latest claim listing. Therefore, based on the previous claim mapping, Kavathia is interpreted to disclose the limitation as previously described. For example, the service plane being implemented by multiple software switches correlates to a plurality of forwarding elements that form a network. The formatted data message being sent to a software switch to deliver the data message to the first hop or next hop SVM based on the MAC address in the data message correlates to distributing the generated configuration data to a plurality of forwarding elements that form a network to configure the forwarding elements to forward the results of the computations of the EPUs through the network.
With regards to the second point, while Kavathia or Narayanaswamy alone may disclose the entirety of the limitation, a combination of Kavathia in view of Narayanaswamy is interpreted to disclose the limitation. Narayanaswamy’s system including a server with a processor correlates to a server. The system including two or more processors at different locations correlates to a set of one or more servers. The user calling the APIs of the job scheduler to input job characteristics such as an identification of processor settings for a processor to perform computational operations correlates to receiving, at a set of one or more servers, a plurality of API commands related to computations assigned to a set of EPUs. The user calling the APIs of a job scheduler, which are part of the framework layer that further comprises an application layer, correlates to the API commands being expressed in a first programming layer. While Narayanaswamy does not explicitly teach that the API commands identify each EPU in the set of EPUs using a programming layer identifier for the EPU that is expressed in a first programming layer, identifying each EPU in the set of EPUs using a programming layer identifier for the EPU that is expressed in a first programming layer is a popular type of identification used with commands as evidenced by Kavathia’s data message including a service chain identifier, where the service chain identifies a set of m service nodes through service instance endpoints. Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with Narayanaswamy because schedulers can allocate work to clusters of a processing array using various scheduling or work distribution algorithms based on the workload or computation for each type of program. APIs that provide one or more API functions for a scheduling system improves software program usability and optimization of one or more portions of the software through one or more PPUs including GPUs.
Lastly, with regards to the third point, Kavathia is interpreted to disclose the limitations as amended. For example, the service chain being defined by service profiles which identify the location of a service node in a service path and the order of performing the sequence of services correlates to programming layer identifiers of EPUs. The pre-processor identifying the network address for the first hop service node based on the data message, which is mapped to the service profile, and where the network address is further formatted to a MAC address, correlates to translating programming layer identifiers of EPUs to networking layer identifiers of the EPUs and using the network layer identifiers of the EPUs to specify desired forwarding operations for forwarding the results to destinations in the network.
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-5 and 12-19 are rejected under 35 U.S.C. 103 as being unpatentable over Kavathia et al. (U.S. Patent No. US 20230168917 A1), hereinafter “Kavathia” in view of Narayanaswamy et al. (U.S. Patent No. US 20250321795 A1), hereinafter “Narayanaswamy.”
With regards to Claim 1, Kavathia teaches:
receiving a set of forwarding criteria specifying a manner for forwarding results of the assigned computations among the EPUs in the set (Paragraphs 47, 64, “The service forwarding plane (1) connects to the service nodes that perform services on data messages sent to and from these machines, and (2) forwards these data messages to the service nodes… As described below, a service node in some embodiments (1) receives, from a service manager, a mapping of a service chain identifier to a service profile that it has to implement, and (2) receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform. In some embodiments, the received mapping is not only based on the service chain identifier (SCI) but is also based on a service index value (that specifies the location of the service node in a service path) and a direction through a service chain (that specifies an order for performing the sequence of services specified by the service chain). The service profile in some embodiments describes the service operation that the service node has to perform. In some embodiments, a service profile can identify a set of rules for a service node to examine.” The service node receiving a service profile with the data message describing the order of performing the sequence of services specified by the service chain or a set of rules for a service node to examine correlates to receiving a set of forwarding criteria specifying a manner for forwarding results of the assigned computations among the EPUs in the set)
generating, from the commands, a set of network configuration data for configuring forwarding elements of a network to forward the results according to the specified set of forwarding criteria (Paragraphs 62-63 and 81-82, “Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Each service path is associated with a set of m service nodes, which, as shown, are identified in terms of service instance endpoints 310. Service instance endpoints in some embodiments are logical locations in the network where traffic can go or come from a service node connected to the service plane. In some embodiments, a service instance endpoint is one LFE [Logical Forwarding Element] port (e.g., an SFE port) associated with a service node (e.g., a VNIC of an SVM) … For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message. The SMD attributes include in some embodiments the service chain identifier (SCI), the SPI and SI values, and the direction (e.g., forward or reverse) for processing the service operations of the service chain… After the SI pre-processor completes its operation, the STL caller 624 in the same datapath calls the STL port proxy 620 to relay the SMD attributes and first hop's network address that the pre-processor identified, so that the port proxy can forward the SMD attributes through the service plane to the first hop. The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node.” The service path comprising service instance endpoints in a particular order which can be represented as logical forwarding elements associated with a service node correlates to forwarding elements of a network to forward the results according to the specified set of forwarding criteria. The SI pre-processor identifying the network address for a first hop service node based on the data message in the selected service path and the STL port proxy formatting the data message to update the source and destination MAC addresses of the first hop service node correlates to generating, from the commands, a set of network configuration data for configuring forwarding elements of a network to forward the results according to the specified set of forwarding criteria), the configuration data expressed in a second networking layer (Paragraph 82, “The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node. This formatting also stores a set of attributes for the data message that should be processed by other service transport layer modules (e.g., the other STL modules, etc.) on the same host computer. These data message attributes include the SMD attributes as well as the original source and destination MAC addresses.” The port proxy formatting the data message to update the service plane and first hop service node MAC addresses correlates to the configuration data being expressed in a second networking layer), said generating comprising translating programming layer identifiers of EPUs to networking layer identifiers of the EPUs and using the network layer identifiers of the EPUs to specify desired forwarding operations for forwarding the results to destinations in the network (Paragraphs 64, 81-82, “In some embodiments, each service chain 302 is defined by references to one or more service profiles 312, with each service profile associated with a service operation in the chain. As described below, a service node in some embodiments (1) receives, from a service manager, a mapping of a service chain identifier to a service profile that it has to implement, and (2) receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform. In some embodiments, the received mapping is not only based on the service chain identifier (SCI) but is also based on a service index value (that specifies the location of the service node in a service path) and a direction through a service chain (that specifies an order for performing the sequence of services specified by the service chain). The service profile in some embodiments describes the service operation that the service node has to perform. In some embodiments, a service profile can identify a set of rules for a service node to examine... For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node.” The service chain being defined by service profiles which identify the location of a service node in a service path and the order of performing the sequence of services correlates to programming layer identifiers of EPUs. The pre-processor identifying the network address for the first hop service node based on the data message, which is mapped to the service profile, and where the network address is further formatted to a MAC address, correlates to translating programming layer identifiers of EPUs to networking layer identifiers of the EPUs and using the network layer identifiers of the EPUs to specify desired forwarding operations for forwarding the results to destinations in the network);
distributing the generated configuration data to a plurality of forwarding elements that form a network to configure the forwarding elements to forward the results of the computations of the EPUs through the network (Paragraphs 77, 82-83 and 93, “As shown, the service plane 132 is implemented by software switches 120, 122, and 124… In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node… The STL port proxy 620 passes the formatted data message along with its stored attributes to the software switch 120. Based on the destination MAC address (i.e., the first hop MAC address) of the formatted data message, the software switch delivers the data message to the switch port associated with the first hop SVM. When the first hop is on the same host computer as the port proxy 620, the data message is provided to the STL module 626 in the ingress IO chain of the first hop's service node on the same host computer. When the first hop is not on the same host computer, the data message is encapsulated with an encapsulating header and forwarded to the next hop, as further described below... The STL module 626 then forward the data message along the egress path, where it reaches the software switch, which then has to forward the data message and its stored attributes to the next hop service node.” The service plane being implemented by multiple software switches correlates to a plurality of forwarding elements that form a network. The formatted data message being sent to a software switch to deliver the data message to the first hop or next hop SVM based on the MAC address in the data message correlates to distributing the generated configuration data to a plurality of forwarding elements that form a network to configure the forwarding elements to forward the results of the computations of the EPUs through the network).
Kavathia does not explicitly teach that the set of forwarding criteria specifying a manner for forwarding results of the assigned computations among the EPUs in the set is received by a set of one or more servers and that the commands are API commands. However, sets of one or more servers are a popular type of server configuration for receiving assigned computations among EPUs as evidenced by Narayanaswamy below (Paragraphs 87-89, “In at least one embodiment, processor(s) 108 is one or more processors implemented in an edge computing device, a workstation, a server, or some combination thereof, such as an NVIDIA® DGX™ workstation… In at least one embodiment, two or more processor(s) 108 are installed in different locations, such as two different data centers communicatively connected by a network… In at least one embodiment, system 100 includes job scheduler 110. In at least one embodiment, job scheduler 110 is implemented on processor(s) 108. In at least one embodiment, processor(s) 108 perform one or more operations of job scheduler 110… In at least one embodiment, a job is any computing workload as defined by a user or application.” The system including a server with a processor correlates to a server. The system including two or more processors at different locations correlates to a set of one or more servers). Additionally, API commands are a popular method of issuing computation requests as evidenced by Narayanaswamy below (Fig. 1 and 2, paragraphs 146 and 157-158, “In at least one embodiment, a user causes a processor to begin process 600 by calling API(s) of a job scheduler to input indications of one or more job characteristics, such as a job identifier (e.g., job ID), a processor performance preference, a job type, a job priority, or some combination thereof, into one or more API(s) with operation 602, and as described further herein at least in conjunction with FIGS. 1-2… In at least one embodiment, API(s) 710 receives as input, indications of job characteristics and causes an identification of processor settings to be used when performing a job, or as otherwise described herein… In at least one embodiment, one or more APIs 710 are sets of software instructions that, if executed, cause one or more processors to perform one or more computational operations.” The user calling the APIs of the job scheduler to input job characteristics such as an identification of processor settings for a processor to perform computational operations correlates to a plurality of API commands related to computations assigned to a set of EPUs).
Kavathia does not explicitly teach:
A method of executing a distributed application with a plurality of endpoint processing units (EPUs) that perform computations for the distributed application, the method comprising:
receiving, at a set of one or more servers, a plurality of API (application programming interface) commands related to computations assigned to a set of EPUs, the API commands identifying each EPU in the set of EPUs using a programming layer identifier for the EPU that is expressed in a first programming layer;
However, Narayanaswamy teaches:
A method of executing a distributed application with a plurality of endpoint processing units (EPUs) that perform computations for the distributed application, the method comprising:
receiving, at a set of one or more servers (Paragraphs 87-89, “In at least one embodiment, processor(s) 108 is one or more processors implemented in an edge computing device, a workstation, a server, or some combination thereof, such as an NVIDIA® DGX™ workstation… In at least one embodiment, two or more processor(s) 108 are installed in different locations, such as two different data centers communicatively connected by a network… In at least one embodiment, system 100 includes job scheduler 110. In at least one embodiment, job scheduler 110 is implemented on processor(s) 108. In at least one embodiment, processor(s) 108 perform one or more operations of job scheduler 110… In at least one embodiment, a job is any computing workload as defined by a user or application.” The system including a server with a processor correlates to a server. The system including two or more processors at different locations correlates to a set of one or more servers), a plurality of API (application programming interface) commands related to computations assigned to a set of EPUs (Fig. 1 and 2, paragraphs 146 and 157-158, “In at least one embodiment, a user causes a processor to begin process 600 by calling API(s) of a job scheduler to input indications of one or more job characteristics, such as a job identifier (e.g., job ID), a processor performance preference, a job type, a job priority, or some combination thereof, into one or more API(s) with operation 602, and as described further herein at least in conjunction with FIGS. 1-2… In at least one embodiment, API(s) 710 receives as input, indications of job characteristics and causes an identification of processor settings to be used when performing a job, or as otherwise described herein… In at least one embodiment, one or more APIs 710 are sets of software instructions that, if executed, cause one or more processors to perform one or more computational operations.” The user calling the APIs of the job scheduler to input job characteristics such as an identification of processor settings for a processor to perform computational operations correlates to a plurality of API commands related to computations assigned to a set of EPUs), the API commands expressed in a first programming layer (Paragraphs 146, 218, 220, “In at least one embodiment, a user causes a processor to begin process 600 by calling API(s) of a job scheduler to input indications of one or more job characteristics, such as a job identifier (e.g., job ID), a processor performance preference, a job type, a job priority, or some combination thereof, into one or more API(s) with operation 602, and as described further herein at least in conjunction with FIGS. 1-2… In at least one embodiment, as shown in FIG. 32, framework layer 3220 includes, without limitation, a job scheduler 3232, a configuration manager 3234, a resource manager 3236 and a distributed file system 3238. In at least one embodiment, framework layer 3220 may include a framework to support software 3252 of software layer 3230 and/or one or more application(s) 3242 of application layer 3240… In at least one embodiment, application(s) 3242 included in application layer 3240 may include one or more types of applications used by at least portions of node C.R.s 3216(1)-3216(N), grouped computing resources 3214, and/or distributed file system 3238 of framework layer 3220. In at least one or more types of applications may include, without limitation, CUDA applications.” The user calling the APIs of a job scheduler, which are part of the framework layer that further comprises an application layer, correlates to the API commands being expressed in a first programming layer);
Narayanaswamy does not explicitly teach that the API commands identify each EPU in the set of EPUs using a programming layer identifier for the EPU that is expressed in a first programming layer. However, identifying each EPU in the set of EPUs using a programming layer identifier for the EPU that is expressed in a first programming layer is a popular type of identification used with commands as evidenced by Kavathia below (Paragraphs 62-64, “Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Each service chain has a service chain (SC) identifier 306, while each service path has a service path identifier (SPI) 308. Each service path is associated with a set of m service nodes, which, as shown, are identified in terms of service instance endpoints 310... receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform.” The data message including a service chain identifier, where the service chain identifies a set of m service nodes through service instance endpoints, correlates to the commands specifying each EPU in the set of EPUs with an EPU identifier that is specified in a programming layer).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a method of executing a distributed application with a plurality of endpoint processing units (EPUs) that perform computations for the distributed application, the method comprising: receiving, at a set of one or more servers, a plurality of API (application programming interface) commands related to computations assigned to a set of EPUs, the API commands expressed in a first programming layer as taught by Narayanaswamy because schedulers can allocate work to clusters of a processing array using various scheduling or work distribution algorithms based on the workload or computation for each type of program. APIs that provide one or more API functions for a scheduling system improves software program usability and optimization of one or more portions of the software through one or more PPUs including GPUs (Narayanaswamy: paragraphs 167 and 329).
With regards to Claim 15, the method of Claim 1 performs the same steps as the manufacture of Claim 15, and Claim 15 is therefore rejected using the same rationale set forth above in the rejection of Claim 1.
With regards to Claim 2, Kavathia in view of Narayanaswamy teaches the method of Claim 1 above. Kavathia further teaches:
wherein the commands specify each EPU in the set of EPUs with an EPU identifier that is specified in a programming layer of the distributed application (Paragraphs 62-64, “Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Each service chain has a service chain (SC) identifier 306, while each service path has a service path identifier (SPI) 308. Each service path is associated with a set of m service nodes, which, as shown, are identified in terms of service instance endpoints 310... receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform.” The data message including a service chain identifier, where the service chain identifies a set of m service nodes through service instance endpoints, correlates to the commands specifying each EPU in the set of EPUs with an EPU identifier that is specified in a programming layer of the distributed application), while the generated configuration data specify each EPU in the set of EPUs with a network-layer identifier that is specified in a networking layer (Paragraphs 81-82 and 93, “For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node. Assuming that the decremented SI value is not zero, the next hop in the service path is another service node. Hence, the proxy in some embodiments provides the next hop's MAC address to the proxy's associated STL module 626 in the SVM's egress datapath. This module then re-formats the data message, by specifying the SVM's MAC address and the next hop's MAC address as the source and destination MAC addresses and storing the original source and destination MAC addresses of the data message in the stored set of attributes stored for the data message. The STL module 626 then forward the data message along the egress path, where it reaches the software switch, which then has to forward the data message and its stored attributes to the next hop service node.” The pre-processor identifying the network address for the first hop service node based on the data message, where the network address is further formatted to a MAC address, correlates to the generated configuration data specifying the EPU in the set of EPUs with a network-layer identifier that is specified in a networking layer. The process repeating for each next hop in the service path correlates to the generated configuration data specifying each EPU in the set of EPUs with a network-layer identifier that is specified in a networking layer) managed by the server set (Paragraph 223, “FIG. 30 conceptually illustrates several operations that the network managers and controllers perform in some embodiments to define rules for service insertion, next service hop forwarding, and service processing. As shown, these operations are performed by a service registrator 3004, a service chain creator 3006, a service rule creator 3008, a service path generator 3010, a service plane rule generator 3012, and a rule distributor 3014. In some embodiments, each of these operators can be implemented by one or more modules of a network manager or controller and/or can be implemented by one or more standalone servers.” The network managers defining rules for service insertion, next service hop forwarding, and service processing, where the operators are implemented by one or modules of a network manager and one or more standalone servers, correlates to the networking layer managed by the server set).
With regards to Claim 16, the method of Claim 2 performs the same steps as the manufacture of Claim 16, and Claim 16 is therefore rejected using the same rationale set forth above in the rejection of Claim 2.
With regards to Claim 3, Kavathia in view of Narayanaswamy teaches the method of Claim 2 above. Kavathia further teaches:
wherein the network-layer identifiers of the EPUs comprise network addresses of the EPUs, said network addresses comprising at least one of layer 2 (L2) address (Paragraph 82, “The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node.” The port proxy formatting the data message to update the service plane MAC address for the first hop service node correlates to the network-layer identifiers of the EPUs comprising network addresses of the EPUs which comprise at least one L2 address) and a layer 3 (L3) address of the EPU (Paragraphs 47, 100, and 185-186, “The guest forwarding plane connects to the machines in the group and performs L2 and/or L3 forwarding for these machines… One of ordinary skill will realize that the service insertion layer and service transport layer in other embodiments are implemented differently than the exemplary implementations described above. For instance, instead of using an L2 overlay (L2 transport layer) that relies on MAC addresses to traverse the different service hops, other embodiments use an L3 overlay (L3 transport layer) that uses L3 and/or L4 network addresses to identify successive service hops… In some embodiments, the service insertion platform supports GRE encapsulation as defined in RFC 2784 with the key extension defined in RFC 2890. In some embodiments, GRE tunneling uses IPv4 addresses and the GRE protocol type is set to Transparent Ethernet Bridging as per RFC 1701… The IP address pair and the GRE key are generated in order to carry metadata along with the data message even when the service node does not support GRE.” The guest forwarding plane supports L2 and L3 forwarding for machines. Service nodes that do and do not support GRE carrying IPv4 addresses in the data message correlates to the network identifiers of the EPUs comprising network addresses of the EPUs which comprise at least one L3 address).
With regards to Claim 17, the method of Claim 3 performs the same steps as the manufacture of Claim 17, and Claim 17 is therefore rejected using the same rationale set forth above in the rejection of Claim 3.
With regards to Claim 4, Kavathia in view of Narayanaswamy teaches the method of Claim 2 above. Kavathia further teaches:
wherein the network-layer identifiers of the EPUs comprise forwarding tags associated with paths through the network to the EPUs (Paragraphs 62-63 and 81, “Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes. Each service path is associated with a set of m service nodes, which, as shown, are identified in terms of service instance endpoints 310... Each service chain has a service chain (SC) identifier 306, while each service path has a service path identifier (SPI) 308… For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message. The SMD [service metadata] attributes include in some embodiments the service chain identifier (SCI), the SPI [service path identifier] and SI [service index] values, and the direction (e.g., forward or reverse) for processing the service operations of the service chain. In some embodiments, the SPI value identifies the service path while the SI value specifies the number of service nodes.” The SI pre-processor specifying the SMD attributes which include service chain and path identifiers, direction for processing service operations, and the network address of the first hop service node correlates to the network-layer identifiers of the EPUs comprising forwarding tags associated with paths through the network to the EPUs).
With regards to Claim 18, the method of Claim 4 performs the same steps as the manufacture of Claim 18, and Claim 18 is therefore rejected using the same rationale set forth above in the rejection of Claim 4.
With regards to Claim 5, Kavathia in view of Narayanaswamy teaches the method of Claim 1 above. Kavathia further teaches:
wherein at least one command specifies a memory-layer transfer operation to transfer a result of a first EPU's computation to a second EPU (Paragraphs 49, 62, 151 and 271, “As such, a service as used in this document is any type of middlebox service operation in some embodiments… Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Once the SVM 108 performs its service operation on the data message (e.g., per the process 1300 of FIG. 13), the SVM sends the processed data message along its egress data path, as shown in FIG. 18… In some such embodiments, SVMs execute in the shared memory of a host computer (e.g., shared memory in a VMware ESX host). In some such embodiments, to perform a service operation on a file, an SVM locates a storage location of the file in the shared memory and opens the file in kernel space before performing a service operation.” At least two SVMs in a service chain executing in the shared memory of a host computer performing service operations on a file correlate to a memory-layer transfer operation. Each service node in the service chain performing a middlebox service operation and sending the processed data message to the next hop node therefore correlates to a memory-layer transfer operation to transfer a result of a first EPU's computation to a second EPU), said generating the set of network configuration data comprises converting the memory-layer transfer operation into a set of network-layer operations that implement the memory-layer transfer operation (Paragraphs 81-83, “For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node... When the first hop is on the same host computer as the port proxy 620, the data message is provided to the STL module 626 in the ingress IO chain of the first hop's service node on the same host computer.” The first hop node being on the same host computer as the current node’s port proxy would involve both nodes being on the same host computer and therefore correlates to a memory-layer transfer operation. The pre-processor identifying the network address for the first hop service node based on the data message, formatting the network address to a MAC address and passing the data message to the ingress IO chain of the first hop’s service node correlates to converting the memory-layer transfer operation into a set of network-layer operations that implement the memory-layer transfer operation).
With regards to Claim 19, the method of Claim 5 performs the same steps as the manufacture of Claim 19, and Claim 19 is therefore rejected using the same rationale set forth above in the rejection of Claim 5.
With regards to Claim 12, Kavathia in view of Narayanaswamy teaches the method of Claim 1 above. Kavathia further teaches:
wherein operations of the distributed application and of the EPUs are specified in the first programming layer (Paragraphs 62-64, “Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Each service chain has a service chain (SC) identifier 306, while each service path has a service path identifier (SPI) 308. Each service path is associated with a set of m service nodes, which, as shown, are identified in terms of service instance endpoints 310... receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform.” The data message including a service chain identifier, where the service chain identifies a set of m service nodes through service instance endpoints, correlates to operations of the distributed application and of the EPUs are specified in the first programming layer), and said generating and distributing of the configuration data configures the network's forwarding elements to translate operations expressed in first programming layer to advanced network transport parameters expressed in second networking layer (Paragraphs 64, 81-82, “In some embodiments, each service chain 302 is defined by references to one or more service profiles 312, with each service profile associated with a service operation in the chain. As described below, a service node in some embodiments (1) receives, from a service manager, a mapping of a service chain identifier to a service profile that it has to implement, and (2) receives, with a data message, a service chain identifier that it maps to the service profile to determine the service operation that it has to perform. In some embodiments, the received mapping is not only based on the service chain identifier (SCI) but is also based on a service index value (that specifies the location of the service node in a service path) and a direction through a service chain (that specifies an order for performing the sequence of services specified by the service chain). The service profile in some embodiments describes the service operation that the service node has to perform. In some embodiments, a service profile can identify a set of rules for a service node to examine... For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node.” The service chain being defined by service profiles which identify the location of a service node in a service path and the order of performing the sequence of services correlates to operations expressed in the programming layer. The pre-processor identifying the network address for the first hop service node based on the data message, which is mapped to the service profile, and where the network address is further formatted to a MAC address by the STL port proxy, correlates to the generating and distributing of the configuration data configuring the network's forwarding elements to translate operations expressed in first programming layer to advanced network transport parameters expressed in second networking layer).
With regards to Claim 13, Kavathia in view of Narayanaswamy teaches the method of Claim 1 above. Narayanaswamy further teaches:
wherein the EPUs are graphics processing units (GPUs) (Paragraph 88, “In at least one embodiment, processor(s) 108 are one or more graphics processing units (GPUs) of a group of GPUs. In at least one embodiment, a group of GPUs is referred to as a GPU cluster.” The processors being GPUs correlates to the EPUs are graphics processing units).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with wherein the EPUs are graphics processing units (GPUs) as taught by Narayanaswamy because schedulers can allocate work to clusters of a processing array including one or more PPUs, such as GPUs, using various scheduling or work distribution algorithms based on the workload or computation for each type of program. APIs that provide one or more API functions for a scheduling system improves software program usability and optimization of one or more portions of the software through one or more PPUs including GPUs (Narayanaswamy: paragraphs 167 and 329).
With regards to Claim 14, Kavathia in view of Narayanaswamy teaches the method of Claim 1 above. Narayanaswamy further teaches:
wherein the EPUs comprise at least one of graphics processing units (GPUs) (Paragraph 88, “In at least one embodiment, processor(s) 108 are one or more graphics processing units (GPUs) of a group of GPUs. In at least one embodiment, a group of GPUs is referred to as a GPU cluster.” The processors being GPUs correlates to the EPUs comprising at least one of graphics processing units), tensor processing units (TPUs) (Paragraph 110, “In at least one embodiment, a job scheduler 210 uses an indication of a processor performance preference to assign specific processors to perform a job, at least in part, because those processors (e.g., processors with tensor cores) are configured to perform a job according a processor performance preference (e.g., tensor core) better than other processors (e.g., processors without tensor cores).” The processors including tensor cores correlates to the EPUs comprising at least one of tensor processing units) and central processing units (CPUs) (Paragraph 86, “In at least one embodiment, system 100 includes processor(s) 108, which is any one processor, or combination of processors, described herein, including processor group 508, APU 3800 of FIG. 38, CPU 4100 described in conjunction with FIG. 41, graphics processor 4310 described in conjunction with FIG. 43A, and PPU 5000 described in conjunction with FIG. 50.” The processors including CPUs correlates to the EPUs comprising at least one of central processing units).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with wherein the EPUs comprise at least one of graphics processing units (GPUs), tensor processing units (TPUs) and central processing units (CPUs) as taught by Narayanaswamy because schedulers can allocate work to clusters of a processing array including one or more processors using various scheduling or work distribution algorithms based on the workload or computation for each type of program. These processors can include any one processor, combination of processors, or group of processors which can be selected based on processor settings and the characteristics of a job. APIs that provide one or more API functions for a scheduling system improves software program usability and optimization of one or more portions of the software through one or more processors (Narayanaswamy: paragraphs 79, 86, 167 and 329).
Claim(s) 6, 9-11 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Kavathia in view of Narayanaswamy and Crabtree et al. (U.S. Patent No. US 20260046317 A1), hereinafter “Crabtree.”
With regards to Claim 6, Kavathia in view of Narayanaswamy teaches the method of Claim 5 above. Kavathia further teaches:
wherein a first memory-layer transfer operation is expressed in terms of providing a result data tuple of a source EPU to a destination EPU (Paragraphs 62, 151, and 271 “Hence, in some embodiments, a service chain can be implemented by each of one or more service paths. Each service path in some embodiments includes one or more service nodes for performing the set of one or more services of the service chain and a particular order through these nodes… Once the SVM 108 performs its service operation on the data message (e.g., per the process 1300 of FIG. 13), the SVM sends the processed data message along its egress data path, as shown in FIG. 18…. In some such embodiments, SVMs execute in the shared memory of a host computer (e.g., shared memory in a VMware ESX host).” At least two SVMs in a service chain executing in the shared memory of a host computer correlates to a memory-layer transfer operation. Each service node in the service chain performing a service operation and sending the processed data message to the next hop node correlates to a first memory-layer transfer operation being expressed in terms of providing a result data tuple of a source EPU to a destination EPU), and generating the set of network configuration data comprises generating a second set of one or more mapping records that maps the transaction identifier to an egress port of a network interface of the source EPU that connects the source EPU to the network (Paragraph 64, 81 and 91, “In some embodiments, each service chain 302 is defined by references to one or more service profiles 312, with each service profile associated with a service operation in the chain… For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message. The SMD attributes include in some embodiments the service chain identifier (SCI), the SPI and SI values, and the direction (e.g., forward or reverse) for processing the service operations of the service chain... In some embodiments, the SVM uses mapping records that it receives from its service manager to map the SCI, SI and direction values in the SMD attributes to a service profile, and then maps this service profile to one of its rule sets, which it then examines to identify one or more service rules to process. In some embodiments, each service rule has a rule identifier that is defined in terms of data message attributes (e.g., five tuple attributes, which are the source and destination IP address, source and destination port addresses and the protocol).” The service profile being associated with a service operation in the chain correlates to a transaction identifier. The SVM mapping the service profile to a service rules, which are defined by a rule identifier with the source and destination IP and port addresses, where the data message is passed through egress data paths, correlates to generating a second set of one or more mapping records that maps the transaction identifier to an egress port of a network interface of the source EPU that connects the source EPU to the network); and
forwarding through the egress port a data message flow comprising (i) a set of network identifiers needed for the forwarding of the data message flow and (ii) payloads that store the result data tuple (Paragraphs 81-82 and 151, “For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations… After the SI pre-processor completes its operation, the STL caller 624 in the same datapath calls the STL port proxy 620 to relay the SMD attributes and first hop's network address that the pre-processor identified, so that the port proxy can forward the SMD attributes through the service plane to the first hop. The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node… Once the SVM 108 performs its service operation on the data message (e.g., per the process 1300 of FIG. 13), the SVM sends the processed data message along its egress data path, as shown in FIG. 18.” The data message that passes through the GVM’s egress data path including SMD attributes and MAC addresses correlates to a set of network identifiers needed for the forwarding of the data message flow. The SVM performing its service operation on the data message and sending the processed data message along its egress data path correlates to forwarding through the egress port a data message flow comprising payloads that store the result data tuple).
Kavathia does not explicitly teach that the result data tuple [is] stored at a first memory location of a source EPU. However, storing result data tuple[s] at a first memory location of a source EPU is a popular step in processing tasks and generating results as evidenced by Narayanaswamy above (Paragraph 417, “In at least one embodiment, tasks are managed by scheduler unit 4812 and dispatched to one of GPCs 4818 [general processing cluster] by work distribution unit 4814. GPC 4818 is configured to process task and generate results. In at least one embodiment, results may be consumed by other tasks within GPC 4818, routed to a different GPC 4818 via XBar 4820, or stored in memory 4804.” The GPC processing the task, generating results which may be consumed by other tasks, and storing the results in memory correlates to the result data tuple being stored at a first memory location of a source EPU).
Kavathia in view of Narayanaswamy does not explicitly teach:
generating, for the result data tuple, a first set of one or more mapping records that maps the first memory location to a transaction identifier
However, Crabtree teaches:
generating, for the result data tuple, a first set of one or more mapping records that maps the first memory location to a transaction identifier (Paragraphs 123, 943, “The MF-TLP protocol defines a packet structure comprising a header portion and a payload portion. The header portion may include fields such as an opcode identifying the operation type, an address or memory object identifier, vector descriptors describing multiple memory locations, tenant identifiers for governance, coherence metadata for directory participation, and transaction identifiers for matching requests and responses… This matching process consults internal tracking structures that record all in-flight vector transactions, looking up the entry corresponding to the received transaction identifier and retrieving associated context such as the original command descriptor, application completion handler information, and memory buffer addresses where results should be stored.” The packet structure including a header with transaction identifiers and vector descriptors describing memory locations such as memory buffer addresses where results are stored correlates to generating, for the result data tuple, a first set of one or more mapping records that maps the first memory location to a transaction identifier)
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a result data tuple stored at a first memory location of a source EPU as taught by Narayanaswamy because scheduler units can dispatch tasks to GPCs to process the tasks and generate results. The results can be consumed by other tasks and stored in memory. Results can also be written to memory via partition units that implement a memory interface for reading and writing data to/from memory and transmitted to other PPUs or CPUs through high-speed GPU interconnects (Narayanaswamy: paragraph 417).
Additionally, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with generating, for the result data tuple, a first set of one or more mapping records that maps the first memory location to a transaction identifier as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
With regards to Claim 20, the method of Claim 6 performs the same steps as the manufacture of Claim 20, and Claim 20 is therefore rejected using the same rationale set forth above in the rejection of Claim 6.
With regards to Claim 9, Kavathia in view of Narayanaswamy and Crabtree teaches the method of Claim 6 above. Kavathia further teaches:
wherein the second set of mapping records comprises:
a second mapping record that maps the first transaction ID to an egress port of the network interface (Paragraphs 91-92, “Upon receiving a data message and its SMD attributes (in an encapsulating NSH header or some other encapsulating header), the SVM performs its service operation. In some embodiments, the SVM uses mapping records that it receives from its service manager to map the SCI, SI and direction values in the SMD attributes to a service profile, and then maps this service profile to one of its rule sets, which it then examines to identify one or more service rules to process. In some embodiments, each service rule has a rule identifier that is defined in terms of data message attributes (e.g., five tuple attributes, which are the source and destination IP address, source and destination port addresses and the protocol) … Once the SVM has completed its service operation, the SVM forwards the data message along its egress datapath. The service proxy in the egress datapath's IO chain then captures this data message and for this data message, identifies the network address of the next hop in the service path. To do this, the service proxy in some embodiments decrements the SI value, and then uses this decremented value along with the SPI value in the data message's stored attribute set to identify an exact match forwarding rule that identifies a next hop network address.” The mapping records including a service profile which is derived from the service chain identifier, service index and direction values correlates to the first transaction ID. The service profile being mapped to to one of its rule sets, which define source and destination egress data path port addresses such as a next hop destination address, correlates to a second mapping record that maps the first transaction ID to an egress port of the network interface).
Crabtree further teaches:
a first mapping record that maps the first memory location to a first transaction identifier (ID) (Paragraphs 123, 943, “The MF-TLP protocol defines a packet structure comprising a header portion and a payload portion. The header portion may include fields such as an opcode identifying the operation type, an address or memory object identifier, vector descriptors describing multiple memory locations, tenant identifiers for governance, coherence metadata for directory participation, and transaction identifiers for matching requests and responses… This matching process consults internal tracking structures that record all in-flight vector transactions, looking up the entry corresponding to the received transaction identifier and retrieving associated context such as the original command descriptor, application completion handler information, and memory buffer addresses where results should be stored.” The packet structure including a header with transaction identifiers and vector descriptors describing memory locations such as memory buffer addresses where results are stored correlates to a first mapping records that maps the first memory location to a first transaction identifier);
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a first mapping record that maps the first memory location to a first transaction identifier (ID) as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
With regards to Claim 10, Kavathia in view of Narayanaswamy and Crabtree teaches the method of Claim 6 above. Narayanaswamy further teaches:
wherein prior to storing the result data tuple in the first memory location, the first EPU is directed to perform the computation based on second and third data tuples stored in second and third memory locations of the first EPU and provide the result of the computation to the second EPU (Paragraph 417, “In at least one embodiment, tasks are managed by scheduler unit 4812 and dispatched to one of GPCs 4818 by work distribution unit 4814. GPC 4818 is configured to process task and generate results. In at least one embodiment, results may be consumed by other tasks within GPC 4818, routed to a different GPC 4818 via XBar 4820, or stored in memory 4804. In at least one embodiment, results can be written to memory 4804 via partition units 4822, which implement a memory interface for reading and writing data to/from memory 4804. In at least one embodiment, results can be transmitted to another PPU 4804 or CPU via high-speed GPU interconnect 4808.” The GPC processing previous other tasks and storing the results in memory correlates to on second and third data tuples stored in second and third memory locations of the first EPU. The GPC then receiving a current task in which the results of a previous task are consumed in processing would involve the current task not being completed yet and therefore correlates to the first EPU is directed to perform the computation based on second and third data tuples stored in second and third memory locations of the first EPU prior to storing the result data tuple in the first memory location. The GPC transmitting the results to another PPU or CPU correlates to providing the result of the computation to the second EPU).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with wherein prior to storing the result data tuple in the first memory location, the first EPU is directed to perform the computation based on second and third data tuples stored in second and third memory locations of the first EPU and provide the result of the computation to the second EPU as taught by Narayanaswamy because scheduler units can dispatch tasks to GPCs to process the tasks and generate results. The results can be consumed by other tasks and stored in memory. Results can also be written to memory via partition units that implement a memory interface for reading and writing data to/from memory and transmitted to other PPUs or CPUs through high-speed GPU interconnects (Narayanaswamy: paragraph 417).
With regards to Claim 11, Kavathia in view of Narayanaswamy and Crabtree teaches the method of Claim 10 above. Kavathia further teaches:
wherein generating the set of network configuration data further comprises:
for the second EPU:
generating a first set of one or more mapping records that identifies the transaction identifier from the set of network identifiers of the data message flow (Paragraphs 91, “Upon receiving a data message and its SMD attributes (in an encapsulating NSH header or some other encapsulating header), the SVM performs its service operation. In some embodiments, the SVM uses mapping records that it receives from its service manager to map the SCI, SI and direction values in the SMD attributes to a service profile, and then maps this service profile to one of its rule sets, which it then examines to identify one or more service rules to process. In some embodiments, each service rule has a rule identifier that is defined in terms of data message attributes (e.g., five tuple attributes, which are the source and destination IP address, source and destination port addresses and the protocol).” The SVM mapping the service rule which has a rule identifier that is defined in terms of data message attributes such as the source and destination IP and port addresses correlates to generating a first set of one or more mapping records that identifies the transaction identifier from the set of network identifiers of the data message flow);
Crabtree further teaches:
generating a second set of one or more mapping records that maps the transaction identifier to a memory location, in a memory of the second EPU, for storing the result data tuple (Paragraphs 123, 941, and 943, “The MF-TLP protocol defines a packet structure comprising a header portion and a payload portion. The header portion may include fields such as an opcode identifying the operation type, an address or memory object identifier, vector descriptors describing multiple memory locations, tenant identifiers for governance, coherence metadata for directory participation, and transaction identifiers for matching requests and responses… At step 1705, once all sub-operations within the vector transaction have been completed successfully—meaning all memory accesses have been performed, all results have been collected, and all status information has been aggregated—the response generator within the destination memory-centric network interface controller constructs a consolidated MF-TLP response packet that will return the results to the requesting compute device… This matching process consults internal tracking structures that record all in-flight vector transactions, looking up the entry corresponding to the received transaction identifier and retrieving associated context such as the original command descriptor, application completion handler information, and memory buffer addresses where results should be stored.” The internal tracking structures recording all in-flight vector transactions and looking up an entry corresponding to a particular transaction identifier would include more than one transaction identifier and associated packet structure and therefore correlates to a second set of one or more mapping records. The MF-TLP response packet being generated at the destination MC-NIC with a structure including a header with transaction identifiers and vector descriptors describing memory locations such as memory buffer addresses where results are stored correlates to generating a second set of one or more mapping records that maps the transaction identifier to a memory location, in a memory of the second EPU, for storing the result data tuple).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with generating a second set of one or more mapping records that maps the transaction identifier to a memory location, in a memory of the second EPU, for storing the result data tuple as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a first mapping record that maps the first memory location to a first transaction identifier (ID) as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
Claim(s) 7-8 are rejected under 35 U.S.C. 103 as being unpatentable over Kavathia in view of Narayanaswamy, Crabtree and Coffin et al. (U.S. Patent No. US 20170351555 A1), hereinafter “Coffin.”
With regards to Claim 7, Kavathia in view of Narayanaswamy and Crabtree teaches the method of Claim 6 above. Kavathia further teaches:
wherein the second set of mapping records comprises:
and a fourth mapping record that maps the source-assigned tag to an egress port of the network interface (Paragraphs 81-83, “For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… After the SI pre-processor completes its operation, the STL caller 624 in the same datapath calls the STL port proxy 620 to relay the SMD attributes and first hop's network address that the pre-processor identified, so that the port proxy can forward the SMD attributes through the service plane to the first hop. The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node… The STL port proxy 620 passes the formatted data message along with its stored attributes to the software switch 120. Based on the destination MAC address (i.e., the first hop MAC address) of the formatted data message, the software switch delivers the data message to the switch port associated with the first hop SVM.” The data message including the service chain and original source and destination MAC addresses correlates to the source-assigned tag. The formatted data message being passed to a switch port in an egress data path associated with the destination MAC address correlates to a fourth mapping record that maps the source-assigned tag to an egress port of the network interface).
Crabtree further teaches:
a first mapping record that maps the first memory location to a first transaction identifier (ID) (Paragraphs 123, 943, “The MF-TLP protocol defines a packet structure comprising a header portion and a payload portion. The header portion may include fields such as an opcode identifying the operation type, an address or memory object identifier, vector descriptors describing multiple memory locations, tenant identifiers for governance, coherence metadata for directory participation, and transaction identifiers for matching requests and responses… This matching process consults internal tracking structures that record all in-flight vector transactions, looking up the entry corresponding to the received transaction identifier and retrieving associated context such as the original command descriptor, application completion handler information, and memory buffer addresses where results should be stored.” The packet structure including a header with transaction identifiers and vector descriptors describing memory locations such as memory buffer addresses where results are stored correlates to a first mapping records that maps the first memory location to a first transaction identifier);
Kavathia in view of Narayanaswamy and Crabtree does not explicitly teach:
a second mapping record that maps the first transaction ID to a queue ID;
a third mapping record that maps the queue ID to a source-assigned tag;
However, Coffin teaches:
a second mapping record that maps the first transaction ID to a queue ID (Paragraph 42, “The CAM 252 contains an associative array table that links search tags (i.e., the task identifiers) to input queue addresses/identifiers. The CAM 252 receives the task identifier 232 and outputs a queue address/identifier 210 of a selected input queue that is configured to receive the specified task.” The associative array table linking search tags such as task identifiers to input queue identifiers correlates to a second mapping record that maps the first transaction ID to a queue ID);
a third mapping record that maps the queue ID to a source-assigned tag (Paragraphs 38, 42, 51 and 55, “In each of the examples, the task distributors 114/114′ receives a task request 240 via a task port 113, selects a task input queue 118 associated with the task based on a task identifier 232 included in the task request 240… The CAM 252 contains an associative array table that links search tags (i.e., the task identifiers) to input queue addresses/identifiers. The CAM 252 receives the task identifier 232 and outputs a queue address/identifier 210 of a selected input queue that is configured to receive the specified task… Resolution process 290a corresponds to that used by the task distributor 114 in FIGS. 2A and 2D, with a task identifier (tag 232) input into the CAM 252, producing the queue address/identifier 210… As an alternative to a hash function, a lookup table may be used to store a tag 232, and with it an address/queue identifier 210. Sorting the table by tag 232, an interpolating search 282 may be used to search a small table, or a binary search 283 search may be used to sort a large table.” The task distributor receiving a request which includes a task identifier or tag 232 correlates to a source-assigned tag. The lookup table storing the tag 232 with a corresponding queue identifier correlate to a third mapping record that maps the queue ID to a source-assigned tag);
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a first mapping record that maps the first memory location to a first transaction identifier (ID) as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a second mapping record that maps the first transaction ID to a queue ID; a third mapping record that maps the queue ID to a source-assigned tag as taught by Coffin because CAMs can return a result typically within one or two clock cycles, which will typically be faster than hashing or searching a table. CAM is practical if there is a limited number of task queues. Thus, there is a speed versus space trade-off between CAM and other address resolution approaches. Additionally, lookup tables can consume less physical space on a ship with an increasing number of queues. Updates to the data or functions used by controllers can cause processing elements on the chip to load and launch a queue update program to configure at least one processing element to subscribe to a corresponding input queue of a task ID (Coffin: paragraphs 40 and 58).
With regards to Claim 8, Kavathia in view of Narayanaswamy and Crabtree teaches the method of Claim 6 above. Kavathia further teaches:
wherein the second set of mapping records comprises:
a third mapping record that maps the source-assigned tag to an egress port of the network interface (Paragraphs 81-83, “For a data message that passes through a GVM's ingress or egress datapath, the SI pre-processor 610 on this datapath performs several operations. It identifies the service chain for the data message and selects the service path for the identified service chain. The pre-processor also identifies the network address for a first hop service node in the selected service path and specifies the SMD attributes for the data message… After the SI pre-processor completes its operation, the STL caller 624 in the same datapath calls the STL port proxy 620 to relay the SMD attributes and first hop's network address that the pre-processor identified, so that the port proxy can forward the SMD attributes through the service plane to the first hop. The port proxy formats the data message for forwarding to the first service node. In some embodiments, this formatting comprises replacing the original source and destination MAC addresses in the data message with a service plane MAC address that is associated with the source GVM 102 and the MAC address of the first hop service node… The STL port proxy 620 passes the formatted data message along with its stored attributes to the software switch 120. Based on the destination MAC address (i.e., the first hop MAC address) of the formatted data message, the software switch delivers the data message to the switch port associated with the first hop SVM.” The data message including the service chain and original source and destination MAC addresses correlates to the source-assigned tag. The formatted data message being passed to a switch port in an egress data path associated with the destination MAC address correlates to a third mapping record that maps the source-assigned tag to an egress port of the network interface).
Kavathia does not explicitly teach that the source-assigned tag is a queue ID [mapped] to an egress port of the network interface. However, queue IDs are a popular type of attribute mapped to source-assigned tags as evidenced by Coffin above (Paragraphs 38, 42, 51 and 55, “In each of the examples, the task distributors 114/114′ receives a task request 240 via a task port 113, selects a task input queue 118 associated with the task based on a task identifier 232 included in the task request 240… The CAM 252 contains an associative array table that links search tags (i.e., the task identifiers) to input queue addresses/identifiers. The CAM 252 receives the task identifier 232 and outputs a queue address/identifier 210 of a selected input queue that is configured to receive the specified task… Resolution process 290a corresponds to that used by the task distributor 114 in FIGS. 2A and 2D, with a task identifier (tag 232) input into the CAM 252, producing the queue address/identifier 210… As an alternative to a hash function, a lookup table may be used to store a tag 232, and with it an address/queue identifier 210. Sorting the table by tag 232, an interpolating search 282 may be used to search a small table, or a binary search 283 search may be used to sort a large table.” The task distributor receiving a request which includes a task identifier or tag 232 correlates to a source-assigned tag. The lookup table storing the tag 232 with a corresponding queue identifier correlate to a third mapping record that maps the queue ID to a source-assigned tag) and the egress port of the network interface can therefore be derived using the mapping of a source-assigned tag to a queue ID.
Crabtree further teaches:
a first mapping record that maps the first memory location to a first transaction identifier (ID) (Paragraphs 123, 943, “The MF-TLP protocol defines a packet structure comprising a header portion and a payload portion. The header portion may include fields such as an opcode identifying the operation type, an address or memory object identifier, vector descriptors describing multiple memory locations, tenant identifiers for governance, coherence metadata for directory participation, and transaction identifiers for matching requests and responses… This matching process consults internal tracking structures that record all in-flight vector transactions, looking up the entry corresponding to the received transaction identifier and retrieving associated context such as the original command descriptor, application completion handler information, and memory buffer addresses where results should be stored.” The packet structure including a header with transaction identifiers and vector descriptors describing memory locations such as memory buffer addresses where results are stored correlates to a first mapping records that maps the first memory location to a first transaction identifier);
Kavathia in view of Narayanaswamy and Crabtree does not explicitly teach:
a second mapping record that maps the first transaction ID to a queue ID;
However, Coffin teaches:
a second mapping record that maps the first transaction ID to a queue ID (Paragraph 42, “The CAM 252 contains an associative array table that links search tags (i.e., the task identifiers) to input queue addresses/identifiers. The CAM 252 receives the task identifier 232 and outputs a queue address/identifier 210 of a selected input queue that is configured to receive the specified task.” The associative array table linking search tags such as task identifiers to input queue identifiers correlates to a second mapping record that maps the first transaction ID to a queue ID);
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a first mapping record that maps the first memory location to a first transaction identifier (ID) as taught by Crabtree because adding information to MF-TLP protocol packet structures such as a transaction identifiers and vector descriptors describing memory locations can be used by at least MC-NIC to parse incoming transactions, translate requests into local memory operations, enforce coherence policies, and execute atomic or reduction operations. Additionally, MF-TLP opcodes specify a wide range of operations such as read and write operations which provide basic load/store semantics, atomic operations including indivisible fetch-and-add, compare-and-swap, typed floating-point operations, executed directly by the MC-NIC, and reduction operations which aggregate multiple partial results into a consolidated value, either at a memory node or within an in-network switch (Crabtree: paragraphs 122-124).
Therefore, it would have been obvious to one of ordinary skill in the art to which said subject matter pertains before the effective filing date of the claimed invention to combine Kavathia with a second mapping record that maps the first transaction ID to a queue ID as taught by Coffin because CAMs can return a result typically within one or two clock cycles, which will typically be faster than hashing or searching a table. CAM is practical if there is a limited number of task queues. Thus, there is a speed versus space trade-off between CAM and other address resolution approaches. Additionally, lookup tables can consume less physical space on a ship with an increasing number of queues. Updates to the data or functions used by controllers can cause processing elements on the chip to load and launch a queue update program to configure at least one processing element to subscribe to a corresponding input queue of a task ID (Coffin: paragraphs 40 and 58).
Prior Art Made of Record
The prior art made of record and not relied upon is considered pertinent to applicant’s disclosure.
Koponen et al. (U.S. Patent No. US 20160197774 A1); teaching a method of managing a network comprising several forwarding elements that forward data in the network. Flow entries are generated for defining forwarding behaviors of the forwarding elements based on a current network policy for a logical network implemented in the forwarding elements. The method additionally generates a second set of flow entries for modifying forwarding behaviors of the forwarding element based on a new network policy for the logical network.
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 SELINA HU whose telephone number is (571)272-5428. The examiner can normally be reached Monday-Friday 8:30-5:30.
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, Chat Do can be reached at (571) 272-3721. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
The publicPAIR and privatePAIR systems are no longer available. 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.
SELINA HU
Examiner
Art Unit 2193
/Chat C Do/Supervisory Patent Examiner, Art Unit 2193