DETAILED ACTION
The amendment to Application Ser. No. 18/225,562 filed on June 17, 2025, has been entered. Claims 1, 5-13 and 15-20 are currently amended. Claims 1-20 are pending and are examined.
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 .
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
Response to Arguments
The amendment to Claims1, 19 and 20 has overcome the rejection of Claims 1-20 under 35 U.S.C. 103 set forth in the Non-Final Office Action mailed March 17, 2026. New grounds of rejection under 35 U.S.C. 103, necessitated by the amendment, are set forth in this Office Action.
Claim Interpretation
While paragraph [0065] of the specification suggests that the processor “generates routing instructions for the switch”, the term “routing instruction” is being interpreted as “routing decision” (e.g., a determination rather than a command or a control signal) for examination purposes as the disclosure provides no further indication of the nature of the routing instruction, how it is communicated, or where it is directed.
Claim Rejections - 35 USC § 112(b)
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
Claim 8 is rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
Claim 8 recites the limitation “wherein the routing mask comprises a queue vector mask including a multi-bit binary number representing each queue, and wherein the processor distributes the traffic across the plurality of queues by writing a packet to a next logical one in the mask” in lines 1-5. As a packet cannot be routed to a bit, the meaning of “writing a packet to a next logical one in the mask” is unclear, rendering the claim indefinite.
For examination purposes, the clause “writing a packet to a next logical one in the mask is interpreted as “writing a packet to a queue represented by the next logical one in the mask”.
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.
Claims 1-8, 17 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Bloch et al., Pub. No. US 2011/0096668 A1, hereby “Bloch”, in view of Anand et al., Pub. No. US 2014/0119193 A1, hereby “Anand”, in further view of Matthews et al., Pat No. US 10,320,691 B1, hereby “Matthews”, and in further view of Lewin et al., Pat. No. US 6,032,218, hereby “Lewin”.
Regarding Claim 1, Bloch discloses “A system to route traffic via a plurality of queues (Bloch fig. 1 and paragraphs 26 and 31-32: switch 20), the system comprising a processor (Bloch fig. 1 and paragraphs 34-35: a general purpose processor implementing switch control unit 36) to:”
“map each queue to a respective grade of a plurality of grades based on the depth of the respective queue being within a range of depths associated with the respective grade... (Bloch fig. 1 and paragraphs 56-57 and 59-60: path selection unit 44 assigns a grade to each port 24 based on the depth of the respective port, i.e., the number of bytes that are queued for output through the port, being within a range defined by one or more thresholds)”.
However, while Bloch discloses assigning each port a respective grade based on the depth of the port (Bloch paragraphs 56-57), Bloch does not explicitly disclose “poll a depth of each queue of the plurality of queues”.
In the same field of endeavor, Anand discloses “poll a depth of each of the plurality of queues (Anand figs. 1-2 and paragraphs 22, 26 and 34-35: "In other embodiments, the VOQ can also be polled to sense congestion by checking queue length or through similar metrics.")”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch to poll the queue of each port as taught by Anand because doing so constitutes applying a known technique (polling a queue associated with an egress port) to known devices and/or methods (a switch) ready for improvement to yield predictable and desirable results (obtaining the queue length of each port). See KSR International Co. v. Teleflex Inc., 82 USPQ2d 1385 (U.S. 2007).
However, while Bloch discloses assigning each port a respective grade based on the depth of the port (Bloch paragraphs 56-57), the combination of Bloch and Anand does not explicitly disclose “map each queue to a respective grade of a plurality of grades based on the depth of the respective queue being within a range of depths associated with the respective grade, wherein each grade is associated with a weight (emphasis added);
to each queue, assign the weight associated with the grade to which the respective queue is mapped”.
In the same field of endeavor, Matthews discloses “wherein each grade is associated with a weight (Matthews figs. 2 and 8; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: each ranking, i.e., grade, has a pre-defined associated weight);
to each queue, assign the weight associated with the grade to which the respective queue is mapped (Matthews figs. 2 and 8; column 26, lines 60 through column 27, line 20; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: path management controller 260 assigns weights to each path to a destination based a ranking, i.e., a grade, determined for each path)”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand, to assign a weight to each port based on the grade as taught by Matthews. One of ordinary skill in the art would have been motivated to combine assigning a weight to each port based on the grade to enable load balancing of the traffic across the ports proportionally based on the grades (Matthews column 26, line 65 through column 27, line 4 and column 28, lines 23-27).
However, while Matthews discloses selecting a path from a set of possible paths proportionally based on the weights associated with the paths (Matthews column 26, line 62 through column 27, line 4 and column 28, lines 21-30), the combination of Bloch, Anand and Matthews does not explicitly disclose “generate a routing mask based on the weight assigned to each queue; and
using the routing mask to perform a weighted round-robin selection to distribute traffic across the plurality of queues based on the weight assigned to each queue.”
In the same field of endeavor, Lewin discloses “generate a routing mask based on the weight assigned to each queue (Lewin fig. 1, column 1, lines 1-10, column 4, line 55 through column 6, line 27: an item vector, i.e., a routing mask, is generated based in part on the weights assigned to each queue by weight table 14); and
using the routing mask to perform a weighted round-robin selection to distribute traffic across the plurality of queues based on the weight assigned to each queue (Lewin fig. 1, column 3, lines 1-10, and column 6, lines 27-37: arbitration circuitry 22 arbitrates in a round robin fashion using an item vector, i.e., a routing mask, based on the weight assigned to each queue, i.e., performs a weighted round-robin selection based on the weights assigned to each queue).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand and Matthews, to route packets across the plurality of ports in a round robin fashion using an item vector based on the weights assigned to each port as taught by Lewin because doing so constitutes applying a known technique (selecting queues in a round-robin fashion using an item vector based on the weights assigned to each queue) to known devices and/or methods (a switch) ready for improvement to yield predictable and desirable results (proportionally distributing packets across the queues based on the weights assigned to each queue). See KSR International Co. v. Teleflex Inc., 82 USPQ2d 1385 (U.S. 2007).
Regarding Claim 2, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Anand discloses “wherein the depth of each queue is stored periodically in a database (Anand paragraphs 26, 35 and 39 and Claim 6: "The load sharing module 211 can maintain a data base or data structure of the congestion associated with each egress port or can work in combination with a separate congestion monitor module 209 to maintain current congestion information.").”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch to poll the queue of each port as taught by Anand for the reasons set forth in the rejection of Claim 1.
Regarding Claim 3, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Bloch discloses “wherein each queue of the plurality of queues is associated with an egress port (Bloch fig. 1 and paragraphs 26 and 55-57: “unit 44 sets the grade of a given port based on the depth of the port (i.e., the number of bytes that are queued for output through the port)” – a queue is associated with each port).”
Regarding Claim 4, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Anand discloses “wherein the depth of each queue is polled periodically or continuously (Anand paragraph 39: "Alternately, the congestion can be detected by a simple polling of the queue lengths (e.g., VOQ length) at periodic intervals.").”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch to poll the queue of each port as taught by Anand for the reasons set forth in the rejection of Claim 1.
Regarding Claim 5, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Bloch discloses “wherein the grade assigned to each queue is based on one of a percentage or an amount of occupied or available space of the respective queue (Bloch fig. 1 and paragraphs 56-57: path selection unit 44 assigns a grade to each port 24 based on the number of bytes that are queued, i.e., an amount of occupied space of the respective queue)”.
Regarding Claim 6, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 5.
Additionally, Matthews discloses “wherein the weight assigned to each queue is based in part on a size of each queue (Matthews figs. 2 and 8; column 10, lines 52-58 and column 27, line 54 through column 28, line 4: the weights may be determined based on port or queue congestion levels).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand, to assign a weight to each port based on the grade as taught by Matthews. for the reasons set forth in the rejection of Claim 1.
Regarding Claim 7, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Matthews discloses “wherein the traffic is distributed to each queue in proportion to the weight assigned to each queue, wherein a grade associated with a higher range of depths is associated with a lower weight than a grade associated with a lower range of depths (Matthews column 26, line 65 through column 27, line 4; column 27, line 66 through column 28, line 4; column 28, lines 23-27 and column 30, line 57 through column 31, line 4: traffic is distributed across queues 224 associated with the paths to the destination proportionally based on the weights associated with the rankings assigned to the paths based on port or queue congestion levels – while not explicitly stated, associating a ranking associated with a high congestion level with a lower weight than a ranking associated with a low congestion level is inferred).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand, to assign a weight to each port based on the grade as taught by Matthews for the reasons set forth in the rejection of Claim 1.
Regarding Claim 8, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Lewin discloses “wherein the routing mask comprises a queue vector mask including a multi-bit binary number representing each queue, and wherein the processor distributes the traffic across the plurality of queues by writing a packet to a next logical one in the mask (Lewin column 3, lines 1-10 and column 4, line 55 through column 6, line 37: “the arbitration circuitry then arbitrates in round robin fashion among the bits that are set to ‘1’ in the item register 18”).
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand and Matthews, to route packets across the plurality of ports in a round robin fashion using an item vector based on the weights assigned to each port as taught by Lewin for the reasons set forth in the rejection of Claim 1.
Regarding Claim 17, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
Additionally, Bloch discloses “wherein the processor is further to identify, for a destination of a packet, a subset of the plurality of queues that are valid queues for routing the packet toward the destination (Bloch fig. 1 and paragraphs 23, 32-33, 52 and 54-56: path selection unit 44 selects a port from a group of ports associated with possible routing paths to the destination), and Lewin discloses “wherein the routing mask is generated for the subset of the plurality of queues (Lewin column 3, lines 1-10; column 3, lines 27-35; and column 4, line 55 through column 6, line 27: an item vector, i.e., a routing mask, is generated based in part on the contents of the eligibility register, which indicates the queues that are available to participate in the arbitration process).
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand and Matthews, to route packets across the plurality of ports in a round robin fashion using an item vector based on the weights assigned to each port as taught by Lewin for the reasons set forth in the rejection of Claim 1.
Regarding Claim 18, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 17.
Additionally, Bloch discloses “wherein the subset of the plurality of queues includes queues associated with egress ports that provide respective paths toward the destination (Bloch fig. 1 and paragraphs 23, 32-33, 52 and 54-56: the group of ports are associated with possible routing paths to the destination).”
Claims 9-11, 15 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over the combination of Bloch, Anand, Matthews and Lewin in view of Gafni et al., Pub. No. US 2020/0153739 A1, hereby “Gafni”.
Regarding Claim 9, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
However, while Bloch discloses assigning each port a respective grade based on the number of bytes that are queued for output through the port (Bloch paragraphs 56-57), the combination of Bloch, Anand, Matthews and Lewin does not explicitly disclose “wherein the processor is further to use a counter to determine how many bytes are sent to each queue.”
In the same field of endeavor, Gafni discloses “wherein the processor is further to use a counter to determine how many bytes are sent to each queue (Gafni fig. 1 and paragraphs 33, 54, 57 and 65: Gafni fig. 1 and paragraphs 33, 54, 57 and 65: network element 20 comprises a counter array 48 that tracks the number of bytes forwarded to each output port 24).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to maintain a counter for each port that tracks the number of bytes sent to each port as taught by Gafni. One of ordinary skill in the art would have been motivated to combine maintaining a counter for each port that tracks the number of bytes sent to each egress port to ensure balanced distribution of traffic across the ports (Gafni paragraph 54).
Regarding Claim 10, the combination of Bloch, Anand, Matthews, Lewin and Gafni discloses all of the limitations of Claim 9.
Additionally, Gafni discloses “wherein the processor distributes the traffic across the plurality of queues based at least in part on a value of the counter (Gafni fig. 2 and paragraphs 33, 54, 68, 71 and 74-75: an incoming packet is forwarded to queue 34 associated with an output port 24 based in part on the data count maintained by counter array 48).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to maintain a counter for each port that tracks the number of bytes sent to each port as taught by Gafni for the reasons set forth in the rejection of Claim 9.
Regarding Claim 11, the combination of Bloch, Anand, Matthews, Lewin and Gafni discloses all of the limitations of Claim 10.
Additionally, Gafni discloses “wherein the processor is further to update the weight assigned to each queue of the plurality of queues based at least in part on the value of the counter (Gafni paragraphs 11-12, 33, 35, 68 and 74-75: weights assigned to the output ports based in part on the counter values may be determined adaptively – while not explicitly stated, updating of the weights is inferred)”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to maintain a counter for each port that tracks the number of bytes sent to each port as taught by Gafni for the reasons set forth in the rejection of Claim 9.
Regarding Claim 15, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
However, while Bloch discloses that the path selection unit may use the current status of the ports, the past (historical) status of the ports or any suitable combination of criteria for selecting the port to route the packet (Bloch paragraph 55), the combination of Bloch, Anand, Matthews and Lewin does not explicitly disclose “wherein distributing the traffic across the plurality of queues is further based on a counter value for each queue indicating a size of previous data sent to each queue and data from a remote peer indicating a quality associated with a remote link between the remote peer and a destination of the traffic.”
In the same field of endeavor, Gafni discloses “wherein distributing the traffic across the plurality of queues is further based on a counter value for each queue indicating a size of previous data sent to each queue and data from a remote peer indicating a quality associated with a remote link between the remote peer and a destination of the traffic (Gafni figs. 1-2 and paragraphs 11-13, 30, 33-37 41-42, 54-56, 68-75 and 78: an output port is selected based on counter values indicating a volume of data forwarded by respective ports, flow control signaling received from a next-hop network element, i.e., an indication of a quality associated with a remote link between the next-hop network element and the destination, as well as a weight assigned to each respective port).
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to select a port using grades that are based in part on the number of bytes sent to port and flow control signaling received from a next-hop network element as taught by Gafni. One of ordinary skill in the art would have been motivated to combine selecting to select a port using grades that are based in part on the number of bytes sent to port and flow control signaling received from a next-hop network element to ensure balanced distribution of traffic across the group of ports (Gafni paragraph 54).
Regarding Claim 16, the combination of Bloch, Anand, Matthews, Lewin and Gafni discloses all of the limitations of Claim 15.
Additionally, Gafni discloses “wherein the processor is further to average the weight assigned to each queue, the counter value for each queue, and the data from the remote peer (Gafni figs. 1-2 and paragraphs 11-13, 30, 33-35, 41-42, 54-56, 68-75 and 78: forwarding module selects a respective output port for forwarding a packet based on the counter values indicating the volume of data forwarded by respective ports, the flow control signaling received from a next-hop network element, as well as weights assigned to the respective ports).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to select a port using grades that are based in part on the number of bytes sent to port and flow control signaling received from a next-hop network element as taught by Gafni for the reasons set forth in the rejection of Claim 15.
Claims 12-14 are rejected under 35 U.S.C. 103 as being unpatentable over the combination of Bloch, Anand, Matthews and Lewin in view of McDonald et al., Pub. No. US 2020/0007432 A1, hereby “McDonald”.
Regarding Claim 12, the combination of Bloch, Anand, Matthews and Lewin discloses all of the limitations of Claim 1.
However, while Bloch discloses that the path selection unit may use the current status of the ports, the past (historical) status of the ports or any suitable combination of criteria for selecting the port to route the packet (Bloch paragraph 55), the combination of Bloch, Anand, Matthews and Lewin does not explicitly disclose “wherein the processor is further to distribute the traffic across the plurality of queues based at least in part on a score associated with remote link failures.”
In the same field of endeavor, McDonald discloses “wherein the processor is further to distribute the traffic across the plurality of queues based at least in part on a score associated with remote link failures (McDonald fig. 1 and paragraphs 15, 18, 23, 27, 39 and 48: routing engine 112 selects a route based on a weight calculated for each of a plurality of candidate routes using a congestion metric value, i.e., a score, that is based on the percentage of remaining capacity of the downstream queue of the next hop network device – while not explicitly stated, it is inferred that the remaining capacity of the downstream queue of the next hop network device would be influenced by, and therefore associated with, a remote link failure).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to select a port based in part on a weight calculated based on the remaining capacity of the downstream queue of a next hop network device as taught by McDonald. One of ordinary skill would have been motivated to combine selecting a port based in part on a weight calculated based on the remaining capacity of the downstream queue of a next hop network device to enable selection of a port that balances data traffic across downstream nodes (McDonald paragraph 17).
Regarding Claim 13, the combination of Bloch, Anand, Matthews, Lewin and McDonald discloses all of the limitations of Claim 12.
Additionally, McDonald discloses “wherein the processor is further to determine the score associated with remote link failures based on data received from a remote peer (McDonald paragraphs 22-23: the congestion metric value is determined based on buffer credits received from the next hop network device).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to select an egress port based in part on a weight calculated based on the remaining capacity of the downstream queue of a next hop network device as taught by McDonald for the reasons set forth in the rejection of Claim 12.
Regarding Claim 14, the combination of Bloch, Anand, Matthews, Lewin and McDonald discloses all of the limitations of Claim 13.
Additionally, McDonald discloses “wherein the data received from the remote peer indicates a quality associated with a queue associated with a destination of the traffic (McDonald paragraphs 22-23: the buffer credits received from the next hop network device are indicative of the remaining capacity, i.e., an indication of quality, of the downstream queue of the next hop network device).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, as modified by Anand, Matthews and Lewin, to select an egress port based in part on a weight calculated based on the remaining capacity of the downstream queue of a next hop network device as taught by McDonald for the reasons set forth in the rejection of Claim 12.
Claim 19 is rejected under 35 U.S.C. 103 as being unpatentable over Bloch, in view of Matthews, and in further view of Lewin.
Regarding Claim 19, Bloch discloses “A computing system (Bloch fig. 1 and paragraphs 26 and 34-35: switch 20) comprising one or more circuits to:
determine an amount of data stored in each queue of a plurality of queues (Bloch fig. 1 and paragraphs 56-57: while not explicitly stated, path selection unit 44 necessarily determines the number of bytes that are queued for output through each port 24);
map each queue to a respective grade of a plurality of grades based on the amount of data stored in the respective queue being within a range of amounts of data associated with the respective grade... (Bloch fig. 1 and paragraphs 56-57 and 59-60: path selection unit 44 assigns a grade to each port 24 based on the depth of the respective port, i.e., the number of bytes that are queued for output through the port, being within a range defined by one or more thresholds)”.
However, while Bloch discloses assigning each port a respective grade based on the depth of the port (Bloch paragraphs 56-57), Bloch does not explicitly disclose “map each queue to a respective grade of a plurality of grades based on the amount of data stored in the respective queue being within a range of amounts of data associated with the respective grade, wherein each grade is associated with a weight (emphasis added);
to each queue, assign the weight associated with the grade to which the respective queue is mapped”.
In the same field of endeavor, Matthews discloses “wherein each grade is associated with a weight (Matthews figs. 2 and 8; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: each ranking, i.e., grade, has a pre-defined associated weight);
to each queue, assign the weight associated with the grade to which the respective queue is mapped (Matthews figs. 2 and 8; column 26, lines 60 through column 27, line 20; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: path management controller 260 assigns weights to each path to a destination based a ranking, i.e., a grade, determined for each path)”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch to assign a weight to each port based on the grade as taught by Matthews. One of ordinary skill in the art would have been motivated to combine assigning a weight to each port based on the grade to enable load balancing of the traffic across the ports proportionally based on the grades (Matthews column 26, line 65 through column 27, line 4 and column 28, lines 23-27).
However, while Matthews discloses selecting a path from a set of possible paths proportionally based on the weights associated with the paths (Matthews column 26, line 62 through column 27, line 4 and column 28, lines 21-30), the combination of Bloch and Matthews does not explicitly disclose “generate a routing mask based on the weight assigned to each queue; and
use the routing mask to perform a weighted round-robin selection to generate a routing instruction based on the weight assigned to each queue, wherein data received by the computing system is distributed across the plurality of queues based at least in part on the weight assigned to each queue.”
In the same field of endeavor, Lewin discloses “generate a routing mask based on the weight assigned to each queue (Lewin fig. 1, column 1, lines 1-10, column 4, line 55 through column 6, line 27: an item vector, i.e., a routing mask, is generated based in part on the weights assigned to each queue by weight table 14); and
use the routing mask to perform a weighted round-robin selection to generate a routing instruction based on the weight assigned to each queue, wherein data received by the computing system is distributed across the plurality of queues based at least in part on the weight assigned to each queue (Lewin fig. 1, column 3, lines 1-10, and column 6, lines 27-37: arbitration circuitry 22 arbitrates in a round robin fashion using an item vector, i.e., a routing mask, based on the weight assigned to each queue, i.e., performs a weighted round-robin selection based on the weights assigned to each queue).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Matthews, to route packets across the plurality of ports in a round robin fashion using an item vector based on the weights assigned to each port as taught by Lewin because doing so constitutes applying a known technique (selecting queues in a round-robin fashion using an item vector based on the weights assigned to each queue) to known devices and/or methods (a switch) ready for improvement to yield predictable and desirable results (proportionally distributing packets across the queues based on the weights assigned to each queue). See KSR International Co. v. Teleflex Inc., 82 USPQ2d 1385 (U.S. 2007).
Claim 20 is rejected under 35 U.S.C. 103 as being unpatentable over Bloch, in view of Olson et al., Pub. No. US 2021/0258252 A1, hereby “Olson”, in further view of Matthews, and in further view of Lewin.
Regarding Claim 20, Bloch discloses “A switch (Bloch fig. 1 and paragraphs 26 and 31-32: switch 20) comprising one or more circuits to:”
“map each queue to a respective grade of a plurality of grades... (Bloch fig. 1 and paragraphs 56-57 and 59-60: path selection unit 44 assigns a grade to each port 24 based on the depth of the respective port, i.e., the number of bytes that are queued for output through the port, being within a range defined by one or more thresholds)”.
However, while Bloch discloses assigning each port a respective grade based on the depth of the port, i.e., the number of bytes that are queued for output through the port (Bloch paragraphs 56-57), Bloch does not explicitly disclose “map each queue to a respective grade of a plurality of grades based on the amount of available space in the respective queue being within a range of amounts of available space associated with the respective grade, wherein each grade is associated with a weight (emphasis added)”.
In the same field of endeavor, Olson discloses “determine an amount of available space in each queue of a plurality of queues (Olson figs. 2 and 4 and paragraphs 14 and 22: while not explicitly stated, congestion information such as a measure of the available space within the buffer associated with each egress port is necessarily determined);
map each queue... based on the amount of available space in the respective queue... (Olson figs. 2 and 4 and paragraphs 22-23 and 35: a buffer congestion weight is assigned to each potential egress port 205-207, wherein the buffer congestion weight may be based on congestion information such as a measure of the available space left within the buffer associated with the respective egress port)”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system of Bloch, to determine the grade for each port based on the available space of a queue associated with the port as taught by Olson because doing so constitutes a simple substitution of one known element (an amount of available space in a queue) for another (a number of bytes that are queued for output) to obtain predictable and desirable results (mapping each queue to a grade based on the amount of available space in the queue). See KSR International Co. v. Teleflex Inc., 82 USPQ2d 1385 (U.S. 2007).
However, while Bloch, as modified by Olson, discloses assigning each port a respective grade based on the available space in the associated queue (Bloch paragraphs 56-57), the combination of Bloch and Olson does not explicitly disclose map each queue to a respective grade of a plurality of grades based on the depth of the respective queue being within a range of depths associated with the respective grade, wherein each grade is associated with a weight (emphasis added);
to each queue, assign the weight associated with the grade to which the respective queue is mapped”.
In the same field of endeavor, Matthews discloses “wherein each grade is associated with a weight (Matthews figs. 2 and 8; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: each ranking, i.e., grade, has a pre-defined associated weight);
to each queue, assign the weight associated with the grade to which the respective queue is mapped (Matthews figs. 2 and 8; column 26, lines 60 through column 27, line 20; column 27, line 54 through column 28, line 4 and column 30, line 57 through column 31, line 3: path management controller 260 assigns weights to each path to a destination based a ranking, i.e., a grade, determined for each path)”.
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Olson, to assign a weight to each port based on the grade as taught by Matthews. One of ordinary skill in the art would have been motivated to combine assigning a weight to each port based on the grade to enable load balancing of the traffic across the ports proportionally based on the grades (Matthews column 26, line 65 through column 27, line 4 and column 28, lines 23-27).
However, while Matthews discloses selecting a path from a set of possible paths proportionally based on the weights associated with the paths (Matthews column 26, line 62 through column 27, line 4 and column 28, lines 21-30), the combination of Bloch, Olson and Matthews does not explicitly disclose “generate a routing mask based on the weight assigned to each queue; and
use the routing mask to perform a weighted round-robin selection to generate a routing instruction based on the weight assigned to each queue, wherein data received by the switch is distributed across the plurality of queues based at least in part on the weight assigned to each queue.”
In the same field of endeavor, Lewin discloses “generate a routing mask based on the weight assigned to each queue (Lewin fig. 1, column 1, lines 1-10, column 4, line 55 through column 6, line 27: an item vector, i.e., a routing mask, is generated based in part on the weights assigned to each queue by weight table 14); and
use the routing mask to perform a weighted round-robin selection to generate a routing instruction based on the weight assigned to each queue, wherein data received by the switch is distributed across the plurality of queues based at least in part on the weight assigned to each queue (Lewin fig. 1, column 3, lines 1-10, and column 6, lines 27-37: arbitration circuitry 22 arbitrates in a round robin fashion using an item vector, i.e., a routing mask, based on the weight assigned to each queue, i.e., performs a weighted round-robin selection based on the weights assigned to each queue).”
It would have been obvious to one of ordinary skill in the art at the time of the effective filing to modify the system Bloch, as modified by Anand and Matthews, to route packets across the plurality of ports in a round robin fashion using an item vector based on the weights assigned to each port as taught by Lewin because doing so constitutes applying a known technique (selecting queues in a round-robin fashion using an item vector based on the weights assigned to each queue) to known devices and/or methods (a switch) ready for improvement to yield predictable and desirable results (proportionally distributing packets across the queues based on the weights assigned to each queue). See KSR International Co. v. Teleflex Inc., 82 USPQ2d 1385 (U.S. 2007).
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 extension fee 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 date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to WILLIAM C MCBETH whose telephone number is (571)270-0495. The examiner can normally be reached on Monday - Friday, 8:00AM - 4:30PM ET.
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, Vivek Srivastava can be reached on 571-272-7304. 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.
/WILLIAM C MCBETH/Examiner, Art Unit 2449