Patent Publication Number: US-9838320-B2

Title: Optimum utilization of green tokens in packet metering

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
     The present patent application/patent claims the benefit of priority of Indian Patent Application No. 201611001241, filed on Jan. 16, 2016, and entitled “OPTIMUM UTILIZATION OF GREEN TOKENS IN PACKET METERING,” the contents of which are incorporated in full by reference herein. 
     FIELD OF THE DISCLOSURE 
     The present disclosure generally relates to networking systems and methods. More particularly, the present disclosure relates to optimization of green tokens for committed traffic in a packet metering algorithm. 
     BACKGROUND OF THE DISCLOSURE 
     Packet metering was introduced in IEEE 802.1ad-2005 with a Drop Eligible Indicator (DEI) and in IEEE 802.1Q-2011 with a Canonical Format Indicator (CFI) to allow for packet “color” (drop eligibility). A packet&#39;s color is different from its priority. Priority is an inherent characteristic of a packet, determined by the contents. Different priorities can be mapped to different traffic classes, queued in different queues, and do not need order to be maintained between packets of different priorities. Color, on the other hand, is not an inherent characteristic of a packet and is determined based on the arrival time at a meter relative to the history of arrival times of previous packets. Frames within a traffic class can be marked different colors. An exemplary three color system utilizes Green, Yellow, and Red. Green can be for committed packets, Yellow for excess packets, and Red for non-conformant (discard) packets which are discarded. One example metering algorithm is described in Internet Engineering Task Force (IETF) Request for Comments (RFC) 4115 (July 2005), “A Differentiated Service Two-Rate, Three-Color Marker with Efficient Handling of in-Profile Traffic,” the contents of which are incorporated by reference. Note, the term packet can also reference a frame as described herein. 
     RFC 4115 defines the behavior of a meter in terms of its mode and two token buckets, C and E (Committed and Excess, respectively, note C=Green and E=Yellow), with the rates, CIR (Committed Information Rate) and EIR (Excess Information Rate), respectively, and maximum sizes CBS (Committed Burst Size) and EBS (Excess Burst Size). The token buckets C and E are initially (at time 0) full; i.e., the token count T c (0)=CBS and T e (0)=EBS. Thereafter, the token count T c  is incremented by one CIR times per second (up to CBS), and the token count T e  is incremented by one EIR times per second (up to EBS). For a “Differentiated Service Two-Rate, Three-Color Marker” complying RFC 4115, there can be a situation where traffic is bursty in nature but under the metering limit (CIR) such that all traffic ingressing/coming is Ethernet Virtual Local Area Network (VLAN) Tagged with CFI unset. Due to the bursty nature of traffic, a scenario can occur where long bursts can lead to dropped packets even though traffic is within metering limits. This drop of packets happens due to the unavailability of tokens because overflowed tokens from CBS were wasted and no EIR was configured. 
     BRIEF SUMMARY OF THE DISCLOSURE 
     In an exemplary embodiment, a packet metering method, implemented in a meter, to optimize utilization of green tokens includes receiving a packet of size B in an interval; and marking a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval. The packet metering method can further include, subsequent to the marking, updating the current committed token bucket if the packet is green and the current excess token bucket if the packet is yellow. The packet metering method can further include, at an end of the interval, updating the overflow counter if there are unused green tokens from the interval. 
     The meter can be operating in a color-aware mode, and wherein the marking can include, when the packet is a green packet at time t, then if the current committed token bucket minus B is greater than or equal to 0, marking the packet as green, and decrementing the current committed token bucket by B; else if the current committed token bucket plus the overflow counter minus B is greater than or equal to 0 and the CBS is greater than or equal to B, marking the packet as green, and decrementing the overflow counter by B minus the current committed token bucket, and setting the current committed token bucket to zero; else if the current excess token bucket minus B is greater than zero, marking the packet as yellow and decrementing the current excess token bucket by B; else marking the packet as red; when the packet is a yellow packet at time t, then if the current excess token bucket minus B is greater than 0, marking the packet as yellow, and decrementing the current excess token bucket by B; else marking the packet as red. 
     The meter can be operating in one of a color-aware mode and a color-blind mode, and wherein the marking can include, if operating in the color-blind mode OR the packet is received as green AND B is less than or equal to the current committed token bucket, marking the packet as green, and decrementing the current committed token bucket by B; if operating in the color-blind mode OR the packet is received is green AND B is less than or equal to the current committed token bucket plus the current overflow counter, marking the packet as green, and decrementing the current overflow counter by B minus the current committed token bucket and setting the current committed token bucket to zero; and if operating in the color-blind mode OR the packet is received as NOT red AND B is less than or equal to the current excess token bucket, marking the packet as yellow and decrementing the current excess token bucket by B. The packet metering method can further include forwarding the packet is the color is green or yellow and discarding the packet if the color is red. The receiving and the marking is performed pursuant to Request for Comments (RFC) 4115 (July 2005). The receiving and the marking can be performed pursuant to Metro Ethernet Forum (MEF) Technical Specification (TS) 10.2 Ethernet Services Attributes Phase 2 (October 2009). 
     In another exemplary embodiment, a packet metering circuit configured to optimize utilization of green tokens includes circuitry configured to receive a packet of size B in an interval; and a meter, implemented in circuitry, configured to mark a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval. The meter can be further configured to, subsequent to the packet being marked, update the current committed token bucket if the packet is green and the current excess token bucket if the packet is yellow. The meter can be further configured to, at an end of the interval, update the overflow counter if there are unused green tokens from the interval. 
     The meter can be operating in a color-aware mode, and the meter can be configured to when the packet is a green packet at time t, then if the current committed token bucket minus B is greater than or equal to 0, mark the packet as green, and decrement the current committed token bucket by B; else if the current committed token bucket plus the overflow counter minus B is greater than or equal to 0 and the CBS is greater than or equal to B, mark the packet as green, and decrement the overflow counter by B minus the current committed token bucket, and set the current committed token bucket to zero; else, if the current excess token bucket minus B is greater than zero, mark the packet as yellow and decrement the current excess token bucket by B; else, mark the packet as red; when the packet is a yellow packet at time t, then, if the current excess token bucket minus B is greater than 0, mark the packet as yellow, and decrement the current excess token bucket by B; else mark the packet as red. 
     The meter can be operating in one of a color-aware mode and a color-blind mode, and the meter can be configured to, if operating in the color-blind mode OR the packet is received as green AND B is less than or equal to the current committed token bucket, mark the packet as green, and decrement the current committed token bucket by B; if operating in the color-blind mode OR the packet is received is green AND B is less than or equal to the current committed token bucket plus the current overflow counter, mark the packet as green, and decrement the current overflow counter by B minus the current committed token bucket and set the current committed token bucket to zero; and, if operating in the color-blind mode OR the packet is received as NOT red AND B is less than or equal to the current excess token bucket, mark the packet as yellow, and decrement the current excess token bucket by B. The packet metering circuit can include forwarding circuitry configured to forward the packet if the color is green or yellow and discard the packet if the color is red. The meter can operate pursuant to Request for Comments (RFC) 4115 (July 2005). The meter can operate pursuant to Metro Ethernet Forum (MEF) Technical Specification (TS) 10.2 Ethernet Services Attributes Phase 2 (October 2009). 
     In a further exemplary embodiment, a packet switch configured to optimize utilization of green tokens includes one more line ports; and a meter configured to, responsive to receipt of a packet of size B in an interval, mark a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval. The meter can be configured to, subsequent to the packet being marked, update the current committed token bucket if the packet is green and the current excess token bucket if the packet is yellow, and, at an end of the interval, update the overflow counter if there are unused green tokens from the interval. 
     The meter can be operating in a color-aware mode, and the meter can be configured to, when the packet is a green packet at time t, then if the current committed token bucket minus B is greater than or equal to 0, mark the packet as green, and decrement the current committed token bucket by B; else if the current committed token bucket plus the overflow counter minus B is greater than or equal to 0 and the CBS is greater than or equal to B, mark the packet as green, and decrement the overflow counter by B minus the current committed token bucket, and set the current committed token bucket to zero; else, if the current excess token bucket minus B is greater than zero, mark the packet as yellow and decrement the current excess token bucket by B; else mark the packet as red; when the packet is a yellow packet at time t, then, if the current excess token bucket minus B is greater than 0, mark the packet as yellow, and decrement the current excess token bucket by B; else mark the packet as red. 
     The meter can be operating in one of a color-aware mode and a color-blind mode, and wherein the meter can be configured to, if operating in the color-blind mode OR the packet is received as green AND B is less than or equal to the current committed token bucket, mark the packet as green, and decrement the current committed token bucket by B; if operating in the color-blind mode OR the packet is received is green AND B is less than or equal to the current committed token bucket plus the current overflow counter, mark the packet as green, and decrement the current overflow counter by B minus the current committed token bucket and set the current committed token bucket to zero; and, if operating in the color-blind mode OR the packet is received as NOT red AND B is less than or equal to the current excess token bucket, mark the packet as yellow, and decrement the current excess token bucket by B. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present disclosure is illustrated and described herein with reference to the various drawings, in which like reference numbers are used to denote like system components/method steps, as appropriate, and in which: 
         FIG. 1  is a flow chart of a conventional metering/marking process; 
         FIG. 2  is a flowchart of a packet metering/marking process which preserves use of unused green (CIR) tokens; 
         FIG. 3  is a flowchart of a packet metering process, implemented in a meter, to optimize utilization of green tokens; 
         FIG. 4  is a graph of an example of metering according to the conventional metering/marking process of  FIG. 1 ; 
         FIG. 5  is a graph of an example of metering according to the packet metering/marking process of  FIG. 2 ; 
         FIG. 6  is a block diagram of an exemplary implementation of a node; and 
         FIG. 7  is a block diagram of another exemplary implementation of a node. 
     
    
    
     DETAILED DESCRIPTION OF THE DISCLOSURE 
     In various exemplary embodiments, green token optimization systems and methods are described. The systems and methods preserve unused overflow CIR tokens, which can also be referred to as green tokens, from a CBS bucket without negating CIR and CBS limits. Specifically, the systems and methods utilize an overflow counter that saves unused green tokens for use at a later time. The systems and methods improve end user value, providing the end user full bandwidth, deriving benefit from previously unused tokens thereby increasing throughput and henceforth reduced cost/bit. The systems and methods, with a given metering rate, provide more throughput when traffic is bursty. Also, the systems and methods are implementable and incorporable in existing metering logic, circuitry, hardware, etc. 
     Referring to  FIG. 1 , conventionally, a flow chart illustrates a conventional metering/marking process  10 . In color-aware operation, a meter can recognize the color of an incoming packet (green, yellow, or red), and implement the metering/marking process  10  accordingly. Again, the token buckets C and E are initially (at time 0) full; i.e., the token count T c (0)=CBS and T e (0)=EBS. Thereafter, the token count T c  is incremented by one CIR times per second (up to CBS), and the token count T e  is incremented by one EIR times per second (up to EBS). When a green packet of size B arrives at time t, then if T c (t)−B&gt;0, the packet is green, and T c (t) is decremented by B; else if T e (t)−B&gt;0, the packet is yellow, and T e (t) is decremented by B; else the packet is red. When a yellow packet of size B arrives at time t, then if T e (t)−B&gt;0, the packet is yellow, and T e (t) is decremented by B; else the packet is red. Incoming red packets are not tested against any of the two token buckets and remain red. 
     The metering/marking process  10  includes, periodically every T secs, setting
 
 T   c ( t +)=MIN (CBS, T   c ( t −)+CIR* T )
 
 T   e ( t +)=MIN (EBS, T   e ( t −)+EIR* T )
 
to set the associated token sizes (step  12 ). Now, for the metering/marking process  10 , a packet of size B arrives (step  14 ). The metering/marking process  10  checks if the meter is in a color-blind mode OR the arriving packet of size B is a green packet AND B≦T c (t−) (step  16 ), and if so (step  16  is true), the arriving packet is set as a green packet and T c (t+)=T c (t−)−B (step  18 ). If step  16  is false, the metering/marking process  10  checks if the meter is in a color-blind mode OR that the arriving packet is not red packet AND B≦T e (t−) (step  20 ). If step  20  is true, the arriving packet is yellow and T e (t+)=T e (t−)−B (step  22 ). Otherwise, if step  20  is false, the arriving packet is yellow (step  24 ). Note, in  FIG. 1 , X(t−) and X(t+) indicate the value of a parameter X right before and right after time t, i.e., t− and t+, respectively.
 
     For an exemplary operation, assume CIR=300 Mbps, EBS=21 KB, and EIR=0 on a 10 Gbps line with the following: 
     
       
         
           
               
               
               
               
               
               
               
             
               
                   
               
               
                   
                   
                 Burst time 
                   
                 CIR output 
                 Total Burst in 
                 Total burst 
               
               
                 CBS (KB) 
                 CBS (bits) 
                 @10G 
                 CIR 
                 during CBS 
                 bits 
                 in KB 
               
               
                   
               
             
            
               
                 21 
                 168000 
                 0.0000168 
                 300000000 
                 5040 
                 173040 
                 21.63 
               
               
                   
               
            
           
         
       
     
     So on the 10 Gbps line, a single interval with a burst of 173040 @ the line rate will use all of the available metering tokens. Now consider traffic is sent as follows: 
     
       
         
           
               
               
               
             
               
                   
               
               
                 Interval 
                 Traffic 
                 Action 
               
               
                   
               
             
            
               
                 START (T0) 
                 173040 
                 All tokens get utilized. (Traffic was sent 
               
               
                   
                   
                 for 0.0000168) 
               
               
                 Second Int. (T40) 
                 No Traffic 
                 Metering tokens are wasted due to 
               
               
                   
                   
                 CBS overflow 
               
               
                 Third Int. (T41) 
                 173040 
                 All tokens get utilized. (Traffic was sent 
               
               
                   
                   
                 for 0.0000168) 
               
               
                 Fourth Int. (T42) 
                 173040 
                 168000 bits will be dropped since tokens 
               
               
                   
                   
                 are 5040 (CIR * Burst Time) 
               
               
                   
               
            
           
         
       
     
     However, if it were possible to use the unused tokens of the second interval (T40), more bits could be sent at a fourth interval instead of just 5040 which is the CIR output during burst time/interval. There are unused tokens in the second interval since for 40 periodic burst time of “0.0000168,” packets are not sent, thus, in this interval there are (CIR*40*0.0000168) bits but out of these, only 168000 bits are kept, wasting the remaining 33600 bits (201600−168000). The systems and methods make use of unutilized tokens to help in accommodating traffic burst better within metering limits. Note, the bucket size could be increased to accommodate traffic bursts, but this leads to non-optimal utilization of tokens. 
     Again, with the metering algorithm defined in RFC 4115, it is possible that a lot of tokens get wasted when traffic has the CFI bit set as 0 and is bursty in nature. To explain the shortcoming of RFC 4115, another example is described as follows with the following—only green busty traffic is coming and metering mode is color-aware, the replenishing rate for the tokens is 1 millisecond thus 1000 times tokens will get replenished, CIR is 16 Mbps, which implies for each cycle of 1 millisecond that 2000 bytes are replenished, CBS is 4 KB (=4000 bytes), and EIR is set. The following table illustrates the example over time. 
                                                                     Overflow               1       Burst       of tokens   Remaining       Millisecond   Current   Received in   Replenished   (thus   Token in   Bytes       Cycles   CBS tokens   Bytes   Tokens   unutilized)   Bucket   Dropped                                                                                    START   4000   Bytes   2000   Bytes   0       0       2000   Bytes   0           1st Cycle   2000   Bytes   0   Bytes   2000   Bytes   0       4000   Bytes   0       2nd Cycle   4000   Bytes   0   Bytes   2000   Bytes   2000   Bytes   4000   Bytes   0       3 rd  Cycle   4000   Bytes   4000   Bytes   2000   Bytes   0       2000   Bytes   0       4th Cycle -   2000   Bytes   3000   Bytes   0   Bytes   0       0   Bytes   1000   Bytes       T o   1         4th Cycle   0   Bytes   0   Bytes   2000   Bytes   0       2000   Bytes   0                 1 T o  is some delta time before completion of the 4 th  Cycle when tokens will get replenished.            
In the table above, 2000 bytes are not utilized in the second cycle which otherwise could be used for the 1000 bytes dropped at some time before completion of 4 th  Cycle. Note, by utilizing those 2000 bytes, neither the CIR rate nor CBS is negated.
 
     Referring to  FIG. 2 , in an exemplary embodiment, a flow chart illustrates a packet metering/marking process  40  which preserves the use of unused green (CIR) tokens. The token buckets C and E (Committed and Excess, respectively, and C=Green and E=Yellow) are initially (at time 0) full; i.e., the token count T c (0)=CBS and T e (0)=EBS. Thereafter, the token count T c  is incremented by one CIR times per second (up to CBS), and the token count T e  is incremented by one EIR times per second (up to EBS). In addition, the process  40  has an overflow counter to count tokens overflowed from the CBS bucket. The overflow counter is initially (at time 0) empty, i.e., the token count O c (0)=0. Thereafter, the overflow counter O c  is incremented periodically every T sec such that 
                   If   ⁢           ⁢     (       (       (         T   c     ⁡     (     t   -     )       +       CIR   *     ⁢   T       )     -   CBS     )     &gt;   0     )               {                 O   c     ⁡     (     t   +     )       =       (       (         T   c     ⁡     (     t   -     )       +       CIR   *     ⁢   T       )     -   CBS     )     +       O   c     ⁡     (     t   -     )                   }             
Again, in X(t−) and X(t+), t− and t+ indicates the value of a parameter X right before and right after time t, respectively. The overflow counter is used to 1) preserve unused CIR or green tokens while 2) ensuring the CIR rate and CBS are maintained.
 
     In the color-aware operation, it is assumed that the algorithm can recognize the color of the incoming packet (green, yellow, or red). The color-aware operation of the metering/marking process  40  is described as follows. When a green packet of size B arrives at time t, then if T c (t)−B≧0, the packet is green, and T c (t) is decremented by B; else if ((T c (t)+O c −B≧0) AND (CBS≧B), the packet is green, and O c (t) is decremented by (B−T c (t)) and the value of T c (t) is made 0; else if T e (t)−B≧0, the packet is yellow, and T e (t) is decremented by B; else the packet is red. When a yellow packet of size B arrives at time t, then if T e (t)−B&gt;0, the packet is yellow, and T e (t) is decremented by B; else the packet is red. Note, CBS≧B ensures the packet size is not greater than the allowed CBS. Incoming red packets are not tested against any of the two token buckets and remain red. 
     Full operation of the metering/marking process  40  is described in  FIG. 2 , i.e., for both color-aware and color-blind modes. In  FIG. 2 , X(t−) and X(t+) indicate the value of a parameter X right before and right after time t and (CBS≧B) indicates that packet size is not greater than allowed Committed Burst Size. For the metering/marking process  40 , periodically every T sec.
 
 T   c ( t +)=MIN (CBS, T   c ( t −)+CIR* T )
 
 T   e ( t +)=MIN (EBS, T   e ( t −)+EIR* T )
 
If (( T   c ( t −)+CIR* T )−CBS)&gt;0) then
 
 O   c ( t +)=(( T   c ( t −)+CIR* T )−CBS)+ Oc ( t −)
 
to set associated token buckets, T c  and T e , and the overflow counter, O e , for a particular interval, T (step  42 ). This sets the committed token bucket, T c , equal to either the CBS or the previous committed token bucket plus the CIR for the interval T, whichever is smaller. This sets the excess token bucket, T e , equal either the EBS or the previous excess bucket plus the EIR for the interval T, whichever is smaller. Additionally, the overflow counter, O c , is incremented for the interval T only if the previous committed token bucket, T c (t−) plus the CIR for the interval T is greater than the CBS. This ensures the CBS is not exceeded with the use of the overflow counter, O c . Finally, the overflow counter, O c , for the interval T is set to the previous overflow counter, O c (t−), plus a portion of the previous committed token bucket, T c (t−). This portion is determined as (T c (t−)+CIR*T)−CBS, which ensures the extra excess tokens in this interval T does not negate CIR or CBS.
 
     Now, an exemplary operation of the metering/marking process  40  is described upon the arrival of a packet of size B at a meter (step  44 ). The metering/marking process  40  checks if the meter is operating in a color-blind mode OR the arriving packet is a green packet AND B≦T c (t−) (step  46 ). If step  46  is true, the packet is green and T c (t+)=T c (t−)−B (step  48 ). If step  46  is false, the metering/marking process  40  checks if the meter is operating in a color-blind mode OR the arriving packet is a green packet B≦T c (t−)+O c (t−) AND B≦CBS (step  50 ). If step  50  is true, the packet is green, O c (t+)=O c (t−)−(B−T c (t−)), and T c (t+)=0 (step  52 ). Step  50  provides a second opportunity to tag the arriving packet as green, instead of setting the packet to yellow or red. This second opportunity will only mark the arriving packet as green, based on the overflow counter and only if CIR and CBS are maintained. If step  50  is false, the metering/marking process  40  checks if the meter is operating in a color-blind mode OR the arriving packet is not red packet AND B≦T e (t−) (step  54 ). If step  54  is true, the packet is yellow and T e (t+)=T e (t−)−B (step  56 ). Finally, if step  56  is false, the packet is red. 
     The metering/marking process  40  adds the overflow counter to utilize green tokens which were earlier (i.e., in previous intervals) wasted. The metering/marking process  40  is now described with reference to the example above to depict better utilization of green tokens. Again, for example, CIR=300 Mbps and CBS=21 KBP on a 10G line then the following: 
     
       
         
           
               
               
               
               
               
               
               
             
               
                   
               
               
                   
                   
                 Burst time 
                   
                 CIR output 
                 Total Burst in 
                 Total burst 
               
               
                 CBS (KB) 
                 CBS (bits) 
                 @10G 
                 CIR 
                 during CBS 
                 bits 
                 in KB 
               
               
                   
               
             
            
               
                 21 
                 168000 
                 0.0000168 
                 300000000 
                 5040 
                 173040 
                 21.63 
               
               
                   
               
            
           
         
       
     
     So on the 10G line single interval a burst of 173040 @ the line rate will use all of the available metering tokens. Now consider that traffic is sent as follows: 
     
       
         
           
               
               
               
             
               
                   
               
               
                 Interval 
                 Traffic 
                 Action 
               
               
                   
               
             
            
               
                 START (T0) 
                 173040 
                 All tokens get utilized. (Traffic was sent 
               
               
                   
                   
                 for 0.0000168) 
               
               
                 Second Int. (T40) 
                 No Traffic 
                 No Traffic SAVE overflowed 
               
               
                   
                   
                 METRING TOKENS. 
               
               
                 Third Int. (T41) 
                 173040 
                 All tokens get utilized. (Traffic was sent 
               
               
                   
                   
                 for 0.0000168) 
               
               
                 Fourth Int. (T42) 
                 173040 
                 168000 bits will be dropped since tokens 
               
               
                   
                   
                 are 5040 (CIR * Burst Time), but an 
               
               
                   
                   
                 additional 33600 bits can be 
               
               
                   
                   
                 accommodated 
               
               
                   
               
            
           
         
       
     
     As shown above, there are unused tokens in the second interval since for 40 periodic burst time of “0.0000168,” packets are not sent, thus, in this interval, there are (CIR*40*0.0000168) bits. Now, instead of wasting overflowed bits, those bits are stored in the overflow counter. Thus out of a total of 201600 bits, 168000 will be accommodated in CBS while the remaining 33600 bits will get stored in the overflow counter. Now, into the Fourth Interval (T41), there are a spare 33600 bits which would be used in addition to 5040 bits. The metering/marking process  40  increases throughput through optimum utilization of green tokens such that neither the metering limit (CIR) nor the bucket boundary (CBS) are negated. In a nutshell, the metering/marking process  40  adds one counter which will contain only overflowed tokens of CBS bucket to optimize green token utilization. 
     In an exemplary embodiment, the metering/marking process  40  operates on a meter, device, node, etc. supporting RFC 4115. In another exemplary embodiment, the metering/marking process  40  operates on a meter, device, node, etc. supporting Metro Ethernet Forum (MEF) Technical Specification (TS) 10.2 Ethernet Services Attributes Phase 2 (October 2009), the contents of which are incorporated by reference. For example, the metering/marking process  40  can modify the Standard Bandwidth Profile Parameters and Algorithm described in Sec. 7.11.1 of MEF 10.2. 
     Referring to  FIG. 3 , in an exemplary embodiment, a flowchart illustrates a packet metering process  80 , implemented in a meter, to optimize utilization of green tokens. The packet metering process  80  includes receiving a packet of size B in an interval (step  82 ); and marking a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval (step  84 ). The packet metering process  80  can include, subsequent to the marking, updating the current committed token bucket if the packet is green and the current excess token bucket if the packet is yellow (step  86 ). The packet metering process  80  can include, at an end of the interval, updating the overflow counter if there are unused green tokens from the interval (step  88 ). The packet metering process  80  can include forwarding the packet is the color is green or yellow and discarding the packet if the color is red (step  90 ). The receiving and the marking can be performed pursuant to Request for Comments (RFC) 4115 (July 2005). The receiving and the marking can be performed pursuant to Metro Ethernet Forum (MEF) Technical Specification (TS) 10.2 Ethernet Services Attributes Phase 2 (October 2009). 
     The meter can be operating in a color-aware mode, and the marking can include: when the packet is a green packet at time t, then if the current committed token bucket minus B is greater than or equal to 0, marking the packet as green, and decrementing the current committed token bucket by B; else if the current committed token bucket plus the overflow counter minus B is greater than or equal to 0 and the CBS is greater than or equal to B, marking the packet as green, and decrementing the overflow counter by B minus the current committed token bucket, and setting the current committed token bucket to zero; else if the current excess token bucket minus B is greater than zero, marking the packet as yellow and decrementing the current excess token bucket by B; else marking the packet as red; when the packet is a yellow packet at time t, then if the current excess token bucket minus B is greater than 0, marking the packet as yellow, and decrementing the current excess token bucket by B; else marking the packet as red. 
     The meter can be operating in one of a color-aware mode and a color-blind mode, and wherein the marking can include: if operating in the color-blind mode OR the packet is received as green AND B is less than or equal to the current committed token bucket, marking the packet as green, and decrementing the current committed token bucket by B; if operating in the color-blind mode OR the packet is received is green AND B is less than or equal to the current committed token bucket plus the current overflow counter, marking the packet as green, and decrementing the current overflow counter by B minus the current committed token bucket and setting the current committed token bucket to zero; and if operating in the color-blind mode OR the packet is received as NOT red AND B is less than or equal to the current excess token bucket, marking the packet as yellow and decrementing the current excess token bucket by B. 
     In another exemplary embodiment, a packet metering circuit configured to optimize utilization of yellow tokens includes circuitry configured to receive a packet of size B in an interval; and a meter, implemented in circuitry, configured to mark a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval. 
     In a further exemplary embodiment, a packet switch configured to optimize utilization of yellow tokens includes one more line ports; and a meter configured to, responsive to receipt of a packet of size B in an interval, mark a color of the packet as green for committed, yellow for excess, or red for discard, based on the size B, a current committed token bucket for the interval, a current excess token bucket, and an overflow counter used to preserve unused green tokens from previous intervals while preserving Committed Information Rate (CIR) and Committed Burst Size (CBS) for the interval. 
     Referring to  FIGS. 4 and 5 , in an exemplary embodiment, graphs illustrate an example of metering according to the conventional metering/marking process of  FIG. 1  ( FIG. 4 ) and according to the packet metering/marking process of  FIG. 2  ( FIG. 5 ). For simplicity of illustration,  FIGS. 4 and 5  assume CIR=4 units/sec and CBS=4 units. A top part of the graph shows received packets (pass for green or drop for red), and a bottom part of the graph illustrates the green tokens ( FIGS. 4 and 5 ) and the overflow tokens ( FIG. 5 ).  FIGS. 4 and 5  show the same representative traffic flow with  FIG. 5  illustrating improvement based on the process  40  and the extensions to the metering algorithm with the utilization of stored “overflow tokens.” The mechanism described herein ensures that a) the configured “burst” size is not exceeded. However stored excess overflow CBS tokens can be used for subsequent time cycles (where appropriate) to optimize client traffic throughput; and b) the CIR over a window adheres to configured CIR value. 
     Referring to  FIG. 6 , in an exemplary embodiment, a block diagram illustrates an exemplary implementation of a node  100 . In this exemplary embodiment, the node  100  is an Ethernet network switch, but those of ordinary skill in the art will recognize the systems and methods described herein can operate with other types of network elements and other implementations. In this exemplary embodiment, the node  100  includes a plurality of blades  102 ,  104  interconnected via an interface  106 . The blades  102 ,  104  are also known as line cards, line modules, circuit packs, pluggable modules, etc. and generally refer to components mounted on a chassis, shelf, etc. of a data switching device, i.e., the node  100 . Each of the blades  102 ,  104  can include numerous electronic devices and optical devices mounted on a circuit board along with various interconnects including interfaces to the chassis, shelf, etc. 
     Two exemplary blades are illustrated with line blades  102  and control blades  104 . The line blades  102  include data ports  108  such as a plurality of Ethernet ports. For example, the line blade  102  can include a plurality of physical ports disposed on an exterior of the blade  102  for receiving ingress/egress connections. Additionally, the line blades  102  can include switching components to form a switching fabric via the interface  106  between all of the data ports  108  allowing data traffic to be switched between the data ports  108  on the various line blades  102 . The switching fabric is a combination of hardware, software, firmware, etc. that moves data coming into the node  100  out by the correct port  108  to the next node  100 . “Switching fabric” includes switching units, or individual boxes, in a node; integrated circuits contained in the switching units; and programming that allows switching paths to be controlled. Note, the switching fabric can be distributed on the blades  102 ,  104 , in a separate blade (not shown), or a combination thereof. The line blades  102  can include an Ethernet manager (i.e., a processor) and a Network Processor (NP)/Application Specific Integrated Circuit (ASIC). 
     The control blades  104  include a microprocessor  110 , memory  112 , software  114 , and a network interface  116 . Specifically, the microprocessor  110 , the memory  112 , and the software  114  can collectively control, configure, provision, monitor, etc. the node  100 . The network interface  116  may be utilized to communicate with an element manager, a network management system, etc. Additionally, the control blades  104  can include a database  120  that tracks and maintains provisioning, configuration, operational data and the like. The database  120  can include a forwarding database (FDB) that may be populated as described herein (e.g., via the user triggered approach or the asynchronous approach). In this exemplary embodiment, the node  100  includes two control blades  104  which may operate in a redundant or protected configuration such as 1:1, 1+1, etc. In general, the control blades  104  maintain dynamic system information including Layer two forwarding databases, protocol state machines, and the operational status of the ports  108  within the node  100 . 
     Referring to  FIG. 7 , in an exemplary embodiment, a block diagram illustrates another exemplary implementation of a node  200 . For example, the node  100  can be a dedicated switch whereas the node  200  can be a multiservice platform. In an exemplary embodiment, the node  200  can be a nodal device that may consolidate the functionality of a multi-service provisioning platform (MSPP), digital cross-connect (DCS), Ethernet and Optical Transport Network (OTN) switch, dense wave division multiplexed (DWDM) platform, etc. into a single, high-capacity intelligent switching system providing Layer 0, 1, and 2 consolidation. In another exemplary embodiment, the node  200  can be any of an add/drop multiplexer (ADM), a multi-service provisioning platform (MSPP), a digital cross-connect (DCS), an optical cross-connect, an optical switch, a router, a switch, a WDM terminal, an access/aggregation device, etc. That is, the node  200  can be any system with ingress and egress signals and switching of packets, channels, timeslots, tributary units, wavelengths, etc. In the context of the systems and methods described herein, the node  200  includes packet switching with metering in addition to any other functionality. 
     In an exemplary embodiment, the node  200  includes common equipment  210 , one or more line modules  220 , and one or more switch modules  230 . The common equipment  210  can include power; a control module; operations, administration, maintenance, and provisioning (OAM&amp;P) access; and the like. The common equipment  210  can connect to a management system such as a network management system (NMS), element management system (EMS), or the like. The node  200  can include an interface  270  for communicatively coupling the common equipment  210 , the line modules  220 , and the switch modules  230  together. For example, the interface  270  can be a backplane, midplane, a bus, optical or electrical connectors, or the like. The line modules  220  are configured to provide ingress and egress to the switch modules  230  and external to the node  200 . In an exemplary embodiment, the line modules  220  can form ingress and egress switches with the switch modules  230  as center stage switches for a three-stage switch, e.g., a three-stage Clos switch. 
     The line modules  220  can include a plurality of connections per module and each module may include a flexible rate and protocol support for any type of connection, such as, for example, 155 Mb/s, 622 Mb/s, 1 Gb/s, 2.5 Gb/s, 10 Gb/s, 40 Gb/s, 100 Gb/s, etc. The line modules  220  can include wavelength division multiplexing interfaces, short reach interfaces, and the like, and can connect to other line modules  220  on remote network elements, end clients, routers, switches, and the like. From a logical perspective, the line modules  220  provide ingress and egress ports to the node  200 , and each line module  220  can include one or more physical ports. The switch modules  230  are configured to switch channels, timeslots, tributary units, wavelengths, etc. between the line modules  220 . For example, the switch modules  230  can provide wavelength granularity (Layer 0 switching), SONET/SDH granularity; OTN granularity such as Optical Channel Data Unit-k (ODUk) Optical Channel Data Unit-flex (ODUflex), Optical channel Payload Virtual Containers (OPVCs), etc.; Ethernet granularity; and the like. Specifically, the switch modules  230  can include both Time Division Multiplexed (TDM) (i.e., circuit switching) and packet switching engines. The switch modules  230  can include redundancy as well, such as 1:1, 1:N, etc. 
     In context of the systems and methods described herein, the node  100  includes packet metering which can be performed by one or more meters, implemented in circuitry and located on the line blade  102 , the control blade  104 , in the switching fabric at some point, etc. Similar to the node  100 , the node  200  includes packet switching through the line modules  220  and/or the switch modules  230 . The node  200  includes packet metering which can be performed by one or more meters, implemented in circuitry and located on the line modules  220 , the switch modules  230 , the common equipment  210 , etc. Specifically, the metering/marking process  40  can be implemented in circuitry, logic, hardware, firmware, software, and/or a combination thereof in the nodes  100 ,  200 . Those of ordinary skill in the art will recognize the nodes  100 ,  200  can include other components that are omitted for illustration purposes, and that the systems and methods described herein contemplate using a plurality of different nodes with the nodes  100 ,  200  presented as an exemplary type of node. For example, in another exemplary embodiment, a node may not include the switch modules  230 , but rather have the corresponding functionality in the line modules  220  (or some equivalent) in a distributed fashion. For the nodes  100 ,  200 , other architectures providing ingress, egress, and switching are also contemplated for the systems and methods described herein. In general, the systems and methods described herein contemplate use with any node providing packet switching with metering. 
     Further, it will be appreciated that some exemplary embodiments described herein may include one or more generic or specialized processors (“one or more processors”) such as microprocessors, digital signal processors, customized processors, and field programmable gate arrays (FPGAs) and unique stored program instructions (including both software and firmware) that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of the methods and/or systems described herein. Alternatively, some or all functions may be implemented by a state machine that has no stored program instructions, or in one or more application specific integrated circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the aforementioned approaches may be used. Moreover, some exemplary embodiments may be implemented as a non-transitory computer-readable storage medium having computer readable code stored thereon for programming a computer, server, appliance, device, etc. each of which may include a processor to perform methods as described and claimed herein. Examples of such computer-readable storage mediums include, but are not limited to, a hard disk, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a PROM (Programmable Read Only Memory), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory), Flash memory, and the like. When stored in the non-transitory computer-readable medium, the software can include instructions executable by a processor that, in response to such execution, cause a processor or any other circuitry to perform a set of operations, steps, methods, processes, algorithms, etc. 
     Although the present disclosure has been illustrated and described herein with reference to preferred embodiments and specific examples thereof, it will be readily apparent to those of ordinary skill in the art that other embodiments and examples may perform similar functions and/or achieve like results. All such equivalent embodiments and examples are within the spirit and scope of the present disclosure, are contemplated thereby, and are intended to be covered by the following claims.