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 .
In view of the appeal brief filed on 3/12/26 PROSECUTION IS HEREBY REOPENED. A new ground rejection is set forth below.
To avoid abandonment of the application, appellant must exercise one of the following two options:
(1) file a reply under 37 CFR 1.111 (if this Office action is non-final) or a reply under 37 CFR 1.113 (if this Office action is final); or,
(2) initiate a new appeal by filing a notice of appeal under 37 CFR 41.31 followed by an appeal brief under 37 CFR 41.37. The previously paid notice of appeal fee and appeal brief fee can be applied to the new appeal. If, however, the appeal fees set forth in 37 CFR 41.20 have been increased since they were previously paid, then appellant must pay the difference between the increased fees and the amount previously paid.
A Supervisory Patent Examiner (SPE) has approved of reopening prosecution by signing below:
/YEMANE MESFIN/Supervisory Patent Examiner, Art Unit 2462
Response to Arguments
Applicant's arguments filed 3/12/26 have been fully considered, the arguments are persuasive. Therefore, Final rejection dated on 3/24/26 have been withdrawn. Upon further consideration, new ground rejections have been made as presented below.
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-10, 12-28 and 30-35 are rejected under 35 U.S.C. 103 as being unpatentable over Levy (US 20180091388 A1) in view of Lee (US 20200313999 A1).
For claim 1, Levy discloses an apparatus for controlling a Shared Buffer (SB) (FIG 2, Shared buffer 44 in switch 32), the apparatus comprising:
an interface to access flow-based data counts and flow-based states (FIGs. 2-3 and the associated text, such as “[0008] … Processing circuitry is configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows for mirroring responsively to the respective bandwidth characteristics, and is further configured to select, responsively to one or more predefined mirroring criteria, one or more of the data packets in the candidate flows for analysis by a network manager, and to send the selected data packets to the network manager over the network via one of the egress interfaces.” and “[0048] Switch 32 comprises at least one memory, which is coupled to ports 40 and serves as a buffer 44 to contain packets received through the ingress interfaces while awaiting transmission to the network via respective egress interfaces. In the pictured embodiment, buffer 44 is configured as a shared buffer and also manages various aspects of allocating buffering resources. As such, the shared buffer supports counting packets or bytes at the ingress and priority levels or at an egress level. The shared buffer also supports aggregating counts of the same or different types” ; note that a combination of “identify data flows”, “counting packets or bytes at the ingress and priority levels” and “counts of the same or different types” suggests flow-based data counts; and “bandwidth characteristics” of a flow are considered as flow-based states); and
a SB controller (switch controller 60 shown in FIG. 2 or 3) to:
perform flow-based accounting of packets received by a network device coupled to a communication network for producing flow-based data counts, each flow-based data count associated with one or more respective flows and indicative of an amount of data from the one or more flows currently buffered in the network device, wherein the flow-based accounting includes identifying for each received packet a flow from a specific source to a specific destination, to which the packet belongs and accordingly selecting a corresponding flow-based data count for the packet (FIGs. 2-3 and associated text, such as “[0008] … configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows …“ and “[0014] … The buffering parameter typically specifies at least one transmission characteristic of the candidate flows, selected from a group of transmission characteristics consisting of a degradation in quality of service, a level of buffer usage, a queue length, a packet transmission latency, and a congestion state”; note that a flow has a specific source and a specific destination by definition); and
generate flow-based states based at least on the flow-based data counts, for use by logic of the network device in handling the packets (“[0014] … The buffering parameter typically specifies at least one transmission characteristic of the candidate flows, selected from a group of transmission characteristics consisting of a degradation in quality of service, a level of buffer usage, a queue length, a packet transmission latency, and a congestion state.”).
Levy does not specifically state that the logic is for data-plane. However, any logic handling data packets is considered be in data-plane because data are carried by packets in the data communication. For example, Lee, in the same field of endeavor of data communication, disclose the data-plane for packet processing (“[0047] The configurable message-processing circuits 130 perform the configurable data-plane forwarding operations of the programmable packet engine to process and forward data messages to their destinations.”). Lee also specifically discloses that each flow can have a counter for number of packets or bytes of the flow (“[0147] A classifier can be configured as a counter to count a number of RX or TX packets and the number of bytes received and/or transmitted. A classifier rule can be associated with a counter to count a particular flow.”). OOSA would have been motivated to apply the data-plane taught by Lee to the data packet processing circuitry to yield a predictable result of packet forwarding according to MPEP 2143(D).
Therefore, it would have been obvious to OOSA before the effective filing date of the application to combine Levy and Lee for the benefit of processing data packet flow ([0059] of Lee).
Independent claim 22 is rejected because it is a claim of a method that is performed by the apparatus of claim 1.
For independent claim 23, Levy discloses an apparatus for controlling a Shared Buffer (SB) (FIG 2, Shared buffer 44 in switch 32), the apparatus comprising:
an interface to access flow-based data counts and flow-based states (FIGs. 2-3 and the associated text, such as “[0008] … Processing circuitry is configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows for mirroring responsively to the respective bandwidth characteristics, and is further configured to select, responsively to one or more predefined mirroring criteria, one or more of the data packets in the candidate flows for analysis by a network manager, and to send the selected data packets to the network manager over the network via one of the egress interfaces.” and “[0048] Switch 32 comprises at least one memory, which is coupled to ports 40 and serves as a buffer 44 to contain packets received through the ingress interfaces while awaiting transmission to the network via respective egress interfaces. In the pictured embodiment, buffer 44 is configured as a shared buffer and also manages various aspects of allocating buffering resources. As such, the shared buffer supports counting packets or bytes at the ingress and priority levels or at an egress level. The shared buffer also supports aggregating counts of the same or different types”); and
a SB controller (switch controller 60 shown in FIG. 2 or 3) to:
perform flow-based accounting of packets received by a network device coupled to a communication network for producing flow-based data counts, each flow-based data count associated with one or more respective flows and indicative of an amount of data from the one or more flows currently buffered in the network device, wherein the flow-based accounting includes identifying for each received packet a flow to which the packet belongs and accordingly selecting a corresponding flow-based data count for the packet, and wherein the selected corresponding flow-based data count for a packet is independent of a port through which the packet was received (FIGs. 2-3 and associated text, such as “[0008] … configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows …“ and “[0048] Switch 32 comprises at least one memory, which is coupled to ports 40 and serves as a buffer 44 to contain packets received through the ingress interfaces while awaiting transmission to the network via respective egress interfaces. In the pictured embodiment, buffer 44 is configured as a shared buffer and also manages various aspects of allocating buffering resources. As such, the shared buffer supports counting packets or bytes at the ingress and priority levels or at an egress level. The shared buffer also supports aggregating counts of the same or different types” ; note that a combination of “identify data flows”); and
generate flow-based states based at least on the flow-based data counts, for use by logic of the network device in handling the packets (“[0014] … The buffering parameter typically specifies at least one transmission characteristic of the candidate flows, selected from a group of transmission characteristics consisting of a degradation in quality of service, a level of buffer usage, a queue length, a packet transmission latency, and a congestion state.”).
Levy does not specifically state that the logic is for data-plane. However, any logic handling data packets is considered be in data-plane because data are carried by packets in the data communication. For example, Lee, in the same field of endeavor of data communication, disclose the data-plane for packet processing (“[0047] The configurable message-processing circuits 130 perform the configurable data-plane forwarding operations of the programmable packet engine to process and forward data messages to their destinations.”). Lee also specifically discloses that each flow can have a counter for number of packets or bytes of the flow (“[0147] A classifier can be configured as a counter to count a number of RX or TX packets and the number of bytes received and/or transmitted. A classifier rule can be associated with a counter to count a particular flow.”). OOSA would have been motivated to apply the data-plane taught by Lee to the data packet processing circuitry to yield a predictable result of packet forwarding according to MPEP 2143(D).
Therefore, it would have been obvious to OOSA before the effective filing date of the application to combine Levy and Lee for the benefit of processing data packet flow ([0059] of Lee).
As to claim 2, Levy in view of Lee discloses claim 1, Levy further discloses wherein the SB is comprised in a memory accessible to the SB controller (FIG. 2 shows switch controller 60 accessible to SB 44), the memory being external to the apparatus (using a memory being externa for SB is a design choice according to MPEP 2143(F). Examiner takes an official notice on this statement. For example, Chan (US 20120324129 A1) discloses it in [0030] “… block 202 may involve configuring shared buffer 120 for processing a read stream of data corresponding to at least a portion, such as a slice, of a frame of video stored in external memory where process 200 may involve successive instances of requesting access to external memory to write different portions of that frame data into buffer 120 as will be explained in greater detail below. …“).
As to claim 3, Levy in view of Lee discloses claim 1, Levy further discloses wherein the apparatus further comprises a memory, and the SB is comprised in the memory (FIG. 2 or 3 and the associated text, such as “[0043] Switch 32 comprises multiple queues 44 for storing packets pending transmission. In an embodiment, the switch manages queues 44 in a shared buffer” in view of FIGs 2-3; note that both queues and buffers are memory).
As to claims 4 and 26, Levy in view of Lee discloses claims 1 and 23, Levy further discloses:
multiple ports including an ingress port, to connect to the communication network (FIG. 2, ingress port 40A); and
wherein the data-plane logic is to:
receive a packet from the ingress port; and based on one or more flow-based states that were generated based on the flow-based data counts, decide whether to admit the packet into the SB or drop the packet (FIGs. 1-3 and associated text, such as “[0060] … Congestion detector 74 is typically part of a module that applies congestion control methods and/or admission control methods to the data packets that are held in buffer 44. Congestion control is used in regulating traffic injection into the network. Admission control is used in regulating the number of users in the system for which a required quality of service can be satisfied.” in view of the parent claims for counts of data flows).
As to claims 5 and 24, Levy in view of Lee discloses claims 1 and 23, Levy further discloses wherein the SB controller is to produce an aggregated data count for packets belonging to multiple different flows, and to generate a flow-based state for the packets of the multiple different flows based on the aggregated data count (FIGs. 1-3 and associated text, such as “[0008] … Processing circuitry is configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows for mirroring responsively to the respective bandwidth characteristics“ and “[0048] … The shared buffer also supports aggregating counts of the same or different types.” In view of the parent claims).
As to claims 6 and 25, Levy in view of Lee discloses claims 1 and 23, Levy further discloses wherein the SB controller is to produce first and second flow-based data counts for packets belonging to respective first and second different flows, and to generate a flow-based state for the packets of the first and second flows based on both the first and the second flow-based data counts (FIGs. 2-3 and associated text, such as “[0008] … Processing circuitry is configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows for mirroring responsively to the respective bandwidth characteristics“ and “[0048] … The shared buffer also supports aggregating counts of the same or different types.” in view of FIG. 2 and the parent claims).
As to claims 7 and 27, Levy in view of Lee discloses claims 4 and 26, Levy further discloses wherein the SB controller is to generate multiple flow-based states based on multiple selected flows, and the data-plane logic is to decide whether to admit a packet belonging to one of the selected flows into the SB or to drop the packet, based on the multiple flow-based states packet (FIGs. 2-3 and associated text, such as “[0008] … configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows …“ and “[0014] … The buffering parameter typically specifies at least one transmission characteristic of the candidate flows, selected from a group of transmission characteristics consisting of a degradation in quality of service, a level of buffer usage, a queue length, a packet transmission latency, and a congestion state”).
As to claim 8, Levy in view of Lee discloses claim 4, Levy further discloses wherein the data-plane logic is to determine for received packets respective egress ports among the multiple ports, ingress priorities and egress priorities, and wherein the SB controller is to perform occupancy accounting for (i) Rx data counts associated with respective ingress ports and ingress priorities, and (ii) Tx data counts associated with respective egress ports and egress priorities, and to generate the flow-based states based on the flow-based data counts and on at least one of the Rx data counts and the Tx data counts packet (FIGs. 2-3 and associated text, such as “[0008] … configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows …“ and “[0014] … The buffering parameter typically specifies at least one transmission characteristic of the candidate flows, selected from a group of transmission characteristics consisting of a degradation in quality of service, a level of buffer usage, a queue length, a packet transmission latency, and a congestion state” and “[0048] Switch 32 comprises at least one memory, which is coupled to ports 40 and serves as a buffer 44 to contain packets received through the ingress interfaces while awaiting transmission to the network via respective egress interfaces. In the pictured embodiment, buffer 44 is configured as a shared buffer and also manages various aspects of allocating buffering resources. As such, the shared buffer supports counting packets or bytes at the ingress and priority levels or at an egress level ...”).
As to claim 9, Levy in view of Lee discloses claim 8, Levy further discloses wherein the SB controller is to perform the flow-based accounting and the occupancy accounting in parallel (FIGs. 2-3 and associated text, such as “[0008] … configured to identify data flows to which the data packets that are received through the ingress interfaces belong, to assess respective bandwidth characteristics of the data flows, and to select one or more of the data flows as candidate flows …“; note that flows are independent to each other, each with an independent count and accounted in parallel).
As to claims 10 and 28, Levy in view of Lee discloses claims 1 and 23, and is silent but Mula, in the same field of endeavor of data communication, discloses wherein the SB controller is to identify for a received packet a corresponding flow-based data count by applying a hash function to one or more fields in a header of the received packet (“[0054] … the switch controller calculates a hash function over one or more fields in the packet headers, and uses the resulting hash value in selecting a respective egress interface for the packet.”).
As to claims 12 and 30, Levy in view of Lee discloses claims 1 and 23, Levy further discloses wherein the SB controller is to locally monitor selected flow-based data counts (as disclosed by the parent claims), to evaluate performance level of the network device based on the monitored flow-based data counts, and based on a reporting criterion, to report information indicative of the performance level (“[0061] … The level of buffer usage can be measured for individual ingress and egress interfaces. In this case the buffer usage level specifies the amount of storage consumed by the data flows traversing the interface in question. …, shared buffer manager 70 reports to mirroring module 36 queue length values measured for individual queues or to groups of queues in the shared buffer. A high level of buffer usage or a high value of queue length may be used to predict an imminent congestion condition or some other problem in the network. …” in view of FIG. 2).
As to claims 13 and 31, Levy in view of Lee discloses claims 1 and 23, further discloses wherein the SB controller is to calculate a drop probability based at least on a flow-based data count associated with one or more selected flows, and to generate a flow-based state for the one or more flows based on the flow-based data count and on the drop probability (calculating a drop probability based on a flow-based count is well-known in the art, Examiner takes an official notice on this statement. For example, Narvaez (US 20060215551 A1) discloses it in [0049] “… a drop probability that increases with the number of flows using the shared buffer and the amount of space that this flow may have already used in the shared buffer. Also, if differentiation between flows is desired, the packet drop probability may be adjusted according to the shared buffer usage weight assigned to the flow.”).
As to claims 14 and 32, Levy in view of Lee discloses claims 1 and 23, Lee further discloses the flow-based states are used to decide whether to drop or admit packets into the SB ([0069] “… counters at other parts of a packet process pipeline can count packets dropped with other errors, different than drops counted at the MAC. In some examples, packet classifier 230 can count a number of received packets or bytes in a receive pipeline.”). The motivation of combining Levy and Lee is the same as stated in the parent claims.
As to claim 15, Levy in view of Lee discloses claim 1, Lee further discloses wherein the SB controller is to determine whether one or more flows should be mirrored based on the flow-based data count associated with one or more respective flows ([0062] “… Streams … can be tied to a port. Depending on a user's definition of a flow, a stream may include multiple flows. …”). The motivation of combining Levy and Lee is the same as stated in the parent claim.
As to claims 16 and 33, Levy in view of Lee discloses claims 1 and 23, wherein the SB controller is to calculate a drop probability based at least on one or more of the flow-based data counts (calculating a drop probability based on a flow-based count is well-known in the art, Examiner takes an official notice on this statement. For example, Narvaez (US 20060215551 A1) discloses it in [0049] “… a drop probability that increases with the number of flows using the shared buffer and the amount of space that this flow may have already used in the shared buffer. Also, if differentiation between flows is desired, the packet drop probability may be adjusted according to the shared buffer usage weight assigned to the flow.”).
As to claim 17, Levy in view of Lee discloses claim 1, Levy further discloses wherein the SB controller is to identify for a received packet a corresponding flow-based data count by processing the packet using an Access Control List (ACL) (“[0057] … The processing functions applied by packet processing module 64 include, for example, verifying the correctness of the data in the packet payload, packet classification and prioritization, routing, and access control lists (ACL). …”).
As to claims 18 and 34, Levy in view of Lee discloses claims 1 and 23, Levy further discloses wherein the SB controller is to identify for a received packet a corresponding flow-based data count responsive to a plurality of fields in a header of the received packet (“[0013] Additionally or alternatively, the processing circuitry is configured to select one or more further candidate flows responsively to values of one or more fields in a header of the data packets.”).
As to claim 19, Levy in view of Lee discloses claim 1, Levy further discloses wherein the SB controller is to manage at least one separate flow-based data count for each unique pair of source and, such that packets from different sources are not counted in the same flow-based data count (“[0033] In the context of the present patent application and in the claims, the term “data flow” (also referred to as “flow” for brevity) refers to a sequence of packets, which transfer application data between a pair of end-nodes, i.e., from a given source node to a given destination node. Packets belonging to a particular flow may be identified, for example, as having the same 5-tuple values (source and destination addresses, source and destination ports, and protocol) and being transmitted within no more than a specified time interval between successive packets in the sequence.” in view of the parent claim).
As to claim 20, Levy in view of Lee discloses claim 1, Levy further discloses wherein the SB controller is to manage at least one separate flow-based data count for each unique 5-tuple of source address, destination address, source port, destination port, and protocol, such that packets identifying in their headers different 5-tuples are not counted in the same flow-based data count (“[0033] In the context of the present patent application and in the claims, the term “data flow” (also referred to as “flow” for brevity) refers to a sequence of packets, which transfer application data between a pair of end-nodes, i.e., from a given source node to a given destination node. Packets belonging to a particular flow may be identified, for example, as having the same 5-tuple values (source and destination addresses, source and destination ports, and protocol) and being transmitted within no more than a specified time interval between successive packets in the sequence.” in view of the parent claim).
As to claim 21, Levy in view of Lee discloses claim 1, Levy further discloses:
multiple ingress ports which connect to the communication network (FIG. 2 shows multiple ingress ports 40A connecting to network 30); and
wherein the SB controller counts packets belonging to a single flow in a single respective flow-based data count even when the packets of the flow are received through a plurality of the multiple ingress ports (FIG. 2 or 3 and the associated text, such as “[0033] In the context of the present patent application and in the claims, the term “data flow” (also referred to as “flow” for brevity) refers to a sequence of packets, which transfer application data between a pair of end-nodes, i.e., from a given source node to a given destination node. …”. Note that packets belong to a same flow as soon as the source and destination are the same even though they are received from different ports).
As to claim 35, Levy in view of Lee discloses claim 23, Levy further discloses: wherein packets received via different ingress ports are processed using different respective control logic modules (FIG. 2 or 3 and the associated text, such as “[0033] In the context of the present patent application and in the claims, the term “data flow” (also referred to as “flow” for brevity) refers to a sequence of packets, which transfer application data between a pair of end-nodes, i.e., from a given source node to a given destination node. …”. Note that packets belong to a same flow as soon as the source and destination are the same even though they are received from different ports).
Claims 11 and 29 are rejected under 35 U.S.C. 103 as being unpatentable over Levy (US 20180091388 A1) in view of Lee (US 20200313999 A1), further in view of Mula (US 20180278549 A1).
As to claims 11 and 29, Levy in view of Lee discloses claims 1 and 23 and is silent but Mula, in the same field of endeavor of data communication, discloses wherein the SB controller is to identify for a received packet a corresponding flow-based data count based on flow-based binding used in a protocol selected from a list of protocols comprising: a tenant protocol; a bridging protocol ( [0039] “… The network element and communication network may operate in accordance with any other suitable communication standard or protocol, such as InfiniBand (IB) or Ethernet.”); a routing protocol; and a tunneling protocol (Lee: [0042] “… A protocol daemon can receive path updates (e.g., Border Gateway Protocol (BGP)) from other network elements to determine updated path routers. …”). OOSA would have been motivated to apply the teaching of Mula above to the received packets by Levy in view of Lee to yield a predictable result of following industry standards.
Therefore, it would have been obvious to OOSA before the effective filing date of the application to combine Mula with Levy in view of Lee for the benefit of following industry standards ([0039] of Mula).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JIANYE WU whose telephone number is (571)270-1665. The examiner can normally be reached M-TH 8am-6pm.
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, Yemane Mesfin can be reached at (571) 272-3927. 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.
/JIANYE WU/Primary Examiner, Art Unit 2462