Abstract:
Methods for increasing upstream bandwidth utilization in an Ethernet passive optical network (EPON) use in some instances round-down instead of round-up occupancy values reported to an optical line terminal. An optical network unit determines whether the occupancy needs to be round-up or round-down and reports the occupancy in either round-up or round-down report units to the optical network terminal.

Description:
FIELD OF THE INVENTION 
     The invention relates generally to data access methods, and more particularly, to methods for optimizing data transmission in Ethernet packet traffic over Passive Optical Network (PON) topologies. 
     BACKGROUND OF THE INVENTION 
     Modern Ethernet Passive Optical Networks (EPON) use 10 Gigabit per second (10G) Ethernet transport, which is suitable to very high-speed data applications, as well as to converged system support (telephone, video, etc.). The unprecedented amount of bandwidth is directed toward, and arriving from a single entity, the Optical Network Unit (ONU). Normative numbers for ONUs in 10G EPON are 16, 32 or 64 and up to 256. 
     An EPON can be viewed as a distributed switch. An Optical Line Terminal (OLT) manages remotely the transmission of each ONU. The OLT and the ONUs exchange messages. In each cycle of such an exchange, the OLT grants a grant to each ONU, which is answered by a report message from the ONU. The ONU has a queue manager that prepares queue status information, which is transmitted using MPCP messages to the OLT to enable smart management. In other words, the ONU informs the OLT on its internal queues status. The OLT management is executed using a Dynamic Bandwidth Allocation (DBA) algorithm. An efficient algorithm is essential to guarantee Quality of Service (QoS), required to fulfill a Service Level Agreement (SLA). Methods for BW management are known, see e.g. US patent application No. 20080181248 by Haran et al. 
     The OLT transmits in downstream at full rate. The ONUs each transmit in upstream at an aggregate full rate where the transmission is divided among the ONUs in a time-division manner. In order to do proper BW management, each ONU reports the number of bytes that it has to transmit (referred to hereinafter as a “report value” or simply “report”). The OLT grants each ONU with a grant according to its report. This report-grant procedure is well known in the art. For 10G EPON the grants axe given by forward error corrected (FEC) codeword boundaries. The report values are given in units of time quanta (TQ). In 10G EPON (IEEE 802.3av standard) the normative values are 20 Bytes for one TQ and 216 Bytes without FEC parity and 248 Bytes with FEC parity for one FEC codeword. 
     The 10G EPON standard specifically requires a round-up of the reports to TQ units. In order not to request too little, the ONU rounds-up its request and sends the request as a REPORT to the OLT. For example, when rounding up to units of 20 Bytes, the ONU may request one excessive FEC codeword. The OLT needs to determine how many FEC codewords are needed by the ONU, and assigns the ONU a GRANT for N×FEC codewords. Note that while reports do not account for FEC parity, grants do. Therefore the OLT assigns N×248 Bytes and then it rounds this up to units of TQs (20 Bytes). When granted to the ONU, the excess FEC codeword may be wasted if the ONU has nothing to transmit. The OLT could have assigned this FEC codeword to another ONU and thus this upstream bandwidth would not have been wasted. 
     The following example illustrates the problem for one queue: assume the report net value is 201 Bytes. Due to the TQ round-up, the report value becomes 220 Bytes. Since round-up (220/216)=2, the OLT will assign two FEC codewords. The net grant (without FEC parity) will be 2*216=432 Bytes. The grant will thus have an excess of 231 Bytes instead of an excess of only 15 Bytes would the grant have been for one FEC codeword. 
     A prior art ONU-OLT report-grant mechanism is summarized in  FIG. 1 . In step  100  the GNU prepares a request to transmit data according to the occupancy (in bytes) of one or more transmission queues. This request is done via transmission of a report packet which reports the occupancy of each queue in units of TQ (also referred to as “report value”). “Occupancy” of a queue is defined herein to take into account any QoS functions (such as shaping and scheduling) applied. The report is provided in units of TQ. The report value is always rounded-up to TQ units in order not to request too little. In step  102 , the OLT checks the reports from all ONUs and assigns respective grants to the ONUs in units of TQs. Since the transmissions use FEC, the OLT must make each grant long enough to as to accommodate a particular number of whole FEC codeword units, where the codewords will accommodate the report values and also FEC parity. 
     In view of the problem of the existing ONU-OLT report-grant mechanism in terms of wasted bandwidth, there is a need for, and it would be advantageous to have, an improved reporting mechanism for efficient upstream bandwidth utilization in 10G EPON. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The invention is herein described, by way of example only, with reference to the accompanying drawings, wherein: 
         FIG. 1  shows a prior art report-grant mechanism in EPON; 
         FIG. 2  shows a report-grant mechanism according to the invention; 
         FIG. 3  shows an exchange between an ONU and an OLT in a method of the invention. 
     
    
    
     SUMMARY OF THE INVENTION 
     The invention provides an improved reporting mechanism for efficient upstream bandwidth utilization in 10G EPON, expressed in a method for increasing upstream bandwidth utilization based on round-down of reports. “Round-down” herein refers to an action opposite to “round-up”. A report round-down instead of round-up is counter intuitive. However, the invention shows that this counter intuitive idea works and achieves more efficient upstream bandwidth utilization in 10G EPON. 
     In one embodiment, the method uses reporting based on a comparison to 10G-EPON RS(255,223) FEC codewords. For example, since the report must be given to the OLT in units of TQs, a queue occupancy of 210 Bytes will be reported as 10 TQ (rounding down to the nearest TQ) instead of 11 TQ (by rounding up to the nearest TQ), with the result that the OLT allocates exactly one FEC codeword (with 216 bytes of data payload), as needed. Without use of the method, a report of 11 TQ (corresponding to 220 bytes) would result in an allocation of 2 FEC codewords, leading to wasted bandwidth. 
     According to the invention there is provided a method for increasing upstream bandwidth utilization in an EPON, including the steps of: by an ONU having queues with occupancy levels, determining whether a queue occupancy needs to be round-up or can be round-down, and based on the results of the determination, reporting the queue occupancy in either a rounded-up or rounded-down report value to an OLT of the EPON. 
     In an embodiment, the step of determining includes rounding-down the queue&#39;s occupancy level (in bytes) to the nearest TQ units to obtain a first report value and calculating the number of FEC codeword units in order to obtain a first FEC codeword value, then rounding-up the queue&#39;s occupancy level (in bytes) to the nearest FEC codeword units to obtain a second FEC codeword value, and comparing the first FEC codeword value with the second FEC codeword value to determine whether the occupancy needs to be rounded-up or can be rounded-down. If the comparison indicates that the second FEC codeword value is smaller than or equal to the first FEC codeword value, the first report value is reported to the OLT. If the comparison indicates that the second FEC codeword value is larger than the first FEC codeword value, the occupancy is rounded-up to the nearest TQ units to obtain a second report value, and the second report value is reported to the OLT. 
     According to the invention there is provided a method for increasing upstream bandwidth utilization in an EPON, including the steps of: by an ONU having an occupancy: checking if the occupancy can be round-down, and if yes, rounding-down the occupancy to the nearest TQ units to obtain a round-down report value, and reporting the round-down report value to the nearest TQ units to an optical network terminal OLT of the EPON. 
     According to the invention there is provided a method for increasing upstream bandwidth utilization in an EPON, including the steps of: by an ONU having an occupancy: checking if the occupancy can be round-down, and if yes, rounding-down the occupancy to the nearest TQ units to obtain a round-down report value, checking if the round-down report value is smaller than five TQs and if yes, rounding-up the occupancy to the nearest TQ units to obtain a round-up report value, and reporting the round-up report value to an OLT of the EPON. 
     In some embodiments of the methods, the EPON is a 10 EPON. 
     In some embodiments in which there is a plurality of different queues with different occupancies, a method of the invention further includes the step of adjusting each report value in order to compensate for other report value leftovers. 
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 2  shows a report-grant mechanism according to the invention, implemented exemplarily in 10G EPON. In contrast with step  100  of  FIG. 1  where the ONU always rounds-up a report in order not to request too little, in step  200 , the ONU may, if advantageous, round-down the queue occupancy value to the nearest TQ value (also referred to as “a “first report value”). In step  202 , the OLT handles the report in the same exact way as in step  102 , i.e. it checks the reports from all ONUs and assigns respective grants to the ONUs in FEC codewords that accommodate report values. 
       FIG. 3  shows details of step  200  in  FIG. 2 . In step  300 , the queue occupancy is converted to TQ and rounded-down to the nearest TQ units (the first report value), and then the number of FEC codewords (or “FEC codeword value”) necessary to carry a data payload of this size is calculated by rounding-up the result to the nearest FEC codeword unit. In step  302 , the queue occupancy is divided by the FEC codeword payload size (and rounded-up to the nearest FEC codeword unit) in order to calculate the number of FEC codewords necessary to carry the actual data in the queue. In step  304 , the results of steps  300  and  302  are compared to determine whether the second number of FEC codewords (or “FEC codeword value”) in step  302  is larger than the first number of FEC codewords in step  300 . If the first FEC codeword value is smaller than the second FEC codeword value, or if the first FEC codeword value is equal to the second FEC codeword value, then the first report value is sent to the OLT in step  306 . Otherwise, in step  304 , the occupancy is rounded-up to the nearest TQ units to obtain a second report value in step  308  and this value is reported to the OLT. 
     The actions in  FIG. 3  may also be expressed by the following algorithm: 
     
       
         
               
               
             
               
               
             
               
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 Input: Occupancy 
               
               
                   
                 Do{ 
               
               
                   
                   
               
             
          
           
               
                   
                 
                   
                     
                       
                         
                           reportVal 
                           1 
                         
                         = 
                         
                           20 
                           × 
                           
                             ⌊ 
                             
                               Occupancy 
                               20 
                             
                             ⌋ 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           reportVal 
                           2 
                         
                         = 
                         
                           20 
                           × 
                           
                             ⌈ 
                             
                               Occupancy 
                               20 
                             
                             ⌉ 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           FecCW 
                           1 
                         
                         = 
                         
                           
                             ⌈ 
                             
                               
                                 reportVal 
                                 1 
                               
                               216 
                             
                             ⌉ 
                           
                           ⁢ 
                           
                               
                           
                           // 
                           
                             step 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             300 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           FecCW 
                           2 
                         
                         = 
                         
                           
                             ⌈ 
                             
                               Occupancy 
                               216 
                             
                             ⌉ 
                           
                           ⁢ 
                           
                               
                           
                           // 
                           
                             step 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             302 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 If(FecCW 2  &gt; FecCW 1 )  // check, step 304 
               
             
          
           
               
                   
                 Then 
                 // round-up, step 308 
               
               
                   
                   
                 Result = reportVal 2   
               
               
                   
                 Else 
                 // round-down, step 306 
               
               
                   
                   
                 Result = reportVal 1   
               
             
          
           
               
                   
                 } 
               
               
                   
                   
               
             
          
         
       
     
     In an embodiment for 10G EPON, the minimum value for a report that supports minimum sized packets (84 Bytes transmission length) is 5 TQs (100 Bytes). In such an embodiment, an additional check needs to be done in step  304  to see if the report round-down becomes too short. If yes, the report will be round up, without affecting bandwidth. 
     In an embodiment for 10G EPON there are 16 IDLE bytes in the first FEC codeword in a transmission burst. These IDLE bytes need to be taken into account. They are taken into account when calculating the FEC codeword limit (step  302 ) and when checking if the lower TQ value satisfies the required length (step  304 ). 
     In an embodiment for 10G EPON, there may be more than one report queue (10G EPON supports up to 8). In order to apply a method of the invention, an ONU needs to interact with an OLT according to one of three “scenarios”: the OLT either (1) grants according to one report queue, or (2) always grants according to the sum of all report queues so that each report queue by itself is insignificant, or (3) has a known order of strict priority granting according to the report queues (e.g. from report-queue #7 down to report-queue #0 in case of 8 report queues). Scenario (1) is fulfilled by the invention as described above. Scenarios (2) and (3) may be fulfilled according to the following algorithm: 
     
       
         
               
               
             
               
               
             
               
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 Input: Occupancy i , (i ε [7 . . . 0], i per report-queue) 
               
               
                   
                 Initial: TotOccupancy = 0 
               
               
                   
                 Initial: TotReport = 0 
               
               
                   
                 Initial: IDLEs = 16 // account for the 16 IDLE bytes 
               
               
                   
                 For all report queues from 7 to 0 (assign i = report queue index): 
               
               
                   
                 { 
               
             
          
           
               
                   
                 If (Occupancy i =0) then { Result i =0, skip to next i} 
               
               
                   
                 Else: 
               
               
                   
                 TotOccupancy += Occupancy i   
               
               
                   
                 Z = TotOccupancy − TotReport 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           X 
                           1 
                         
                         = 
                         
                           20 
                           × 
                           
                             ⌊ 
                             
                               Z 
                               20 
                             
                             ⌋ 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           X 
                           2 
                         
                         = 
                         
                           20 
                           × 
                           
                             ⌈ 
                             
                               Z 
                               20 
                             
                             ⌉ 
                           
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 TotReport 1  = TotReport + X 1   
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         TotOccupancyFec 
                         = 
                         
                           ⌈ 
                           
                             
                               TotOccupancy 
                               + 
                               IDLEs 
                             
                             216 
                           
                           ⌉ 
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 
                   
                     
                       
                         
                           TotReportFec 
                           1 
                         
                         = 
                         
                           ⌈ 
                           
                             
                               
                                 Totreport 
                                 1 
                               
                               + 
                               IDLEs 
                             
                             216 
                           
                           ⌉ 
                         
                       
                     
                   
                 
               
               
                   
                   
               
               
                   
                 If ( (TotOccupancyFec &gt; TotReportFec 1 ) OR (X 1  ≦100)) 
               
             
          
           
               
                   
                 Then 
                 // round-up 
               
               
                   
                   
                 Result i  = X 2   
               
               
                   
                 Else 
                 // round-down 
               
               
                   
                   
                 Result i  = X 1   
               
             
          
           
               
                   
                 TotReport += Result i   
               
             
          
           
               
                   
                 } 
               
               
                   
                   
               
             
          
         
       
     
     The following table shows exemplary values of the different parameters following the method steps in  FIG. 3   
     
       
         
               
               
               
               
               
               
             
           
               
                   
               
               
                   
                 Number of 
                   
                   
                   
                   
               
               
                   
                 FEC 
                   
                 Is the report 
               
               
                   
                 codewords 
                 Number of 
                 value 
               
               
                   
                 according to 
                 FEC 
                 of step 302 
                   
                 Occupancy 
               
               
                   
                 rounded- 
                 codewords 
                 greater than 
                 Occupancy 
                 rounded-up 
               
               
                   
                 down 
                 according to 
                 that of step 
                 rounded-down 
                 to nearest 
               
               
                   
                 occupancy 
                 occupancy 
                 300? 
                 to nearest TQ 
                 TQ 
               
               
                 Occupancy 
                 (step 300) 
                 (step 302) 
                 (step 304) 
                 (step 306) 
                 (step 308) 
               
               
                   
               
             
             
               
                 199 
                 1 
                 1 
                 no 
                 180 
                 200 
               
               
                 200 
                 1 
                 1 
                 no 
                 200 
                 200 
               
               
                 201 
                 1 
                 1 
                 no 
                 200 
                 220 
               
               
                 215 
                 1 
                 1 
                 no 
                 200 
                 220 
               
               
                 216 
                 1 
                 1 
                 no 
                 200 
                 200 
               
               
                 217 
                 1 
                 2 
                 yes 
                 200 
                 220 
               
               
                 219 
                 1 
                 2 
                 yes 
                 200 
                 220 
               
               
                 220 
                 2 
                 2 
                 no 
                 220 
                 220 
               
               
                 431 
                 2 
                 2 
                 no 
                 420 
                 440 
               
               
                 432 
                 2 
                 2 
                 no 
                 420 
                 440 
               
               
                 433 
                 2 
                 3 
                 yes 
                 420 
                 440 
               
               
                 439 
                 2 
                 3 
                 yes 
                 420 
                 440 
               
               
                 440 
                 3 
                 3 
                 no 
                 440 
                 440 
               
               
                   
               
             
          
         
       
     
     All patents and patent applications mentioned in this specification are herein incorporated in their entirety by reference into the specification, to the same extent as if each individual patent or patent application was specifically and individually indicated to be incorporated herein by reference. In addition, citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to the present invention. 
     While the invention has been described with respect to a limited number of embodiments, it will be appreciated that many variations, modifications and other applications of the invention may be made. Those skilled in the art will appreciate that the invention can be embodied by other forms and ways, within the scope of the invention. The embodiments described herein should be considered as illustrative and not restrictive. For example, the invention is not limited to 10G EPON, but may be applied to future versions of EPON.