Abstract:
Write logic and read logic are coupled to SDRAM and a frame status table. VCG members are written into SDRAM by the write logic and an entry (based on the MFI and SQ) in the frame status table is maintained by the write logic for each member. The read logic scans the frame status table to identify the earliest frame number for which data is available in SDRAM. Based on the frame status and the address pointer offset, the read logic maintains a state table entry for each VCG member and a state for each VCG. According to the preferred embodiment, the read logic is provided in two parts separated by a temporary buffer. The first part of the read logic performs the functions described above and writes chunk data into the temporary buffer. The second part of the read logic reads byte data from the temporary buffer according to a selectable leak rate.

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   This invention relates broadly to telecommunications, the Synchronous Optical Network (SONET) and the Synchronous Digital Hierarchy (SDH). More particularly, this invention relates to buffer management during virtual concatenation (VCAT) and link capacity adjustment scheme (LCAS). 
   2. State of the Art 
   The Synchronous Optical Network (SONET) or the Synchronous Digital Hierarchy (SDH), as it is known in Europe, is a common telecommunications transport scheme which is designed to accommodate both DS-1 (T1) and E1 traffic as well as multiples (DS-3 and E-3) thereof. A DS-1 signal consists of up to twenty-four time division multiplexed DS-0 signals plus an overhead bit. Each DS-0 signal is a 64 kb/s signal and is the smallest allocation of bandwidth in the digital network, i.e. sufficient for a single telephone connection. An E1 signal consists of up to thirty-two time division multiplexed DS-0 signals with at least one of the DS-0s carrying overhead information. 
   Developed in the early 1980s, SONET has a base (STS-1) rate of 51.84 Mbit/sec in North America. The STS-1 signal can accommodate 28 DS-1 signals or 21 E1 signals or a combination of both. The basic STS-1 signal has a frame length of 125 microseconds (8,000 frames per second) and is organized as a frame of 810 octets (9 rows by 90 byte-wide columns). It will be appreciated that 8,000 frames*810 octets per frame*8 bits per octet=51.84 Mbit/sec. The frame includes the synchronous payload envelope (SPE) or virtual container (VC) as it is known in Europe, as well as transport overhead. Transport overhead is contained in the first three columns (27 bytes) and the SPE/VC occupies the remaining 87 columns. 
   In Europe, the base (STM-1) rate is 155.520 Mbit/sec, equivalent to the North American STS-3 rate (3*51.84=155.520). The STS-3 (STM-1) signals can accommodate 3 DS-3 signals or 63 E1 signals or 84 DS-1 signals, or a combination of them. The STS-12 (STM4) signals are 622.080 Mbps and can accommodate 12 DS-3 signals, etc. The STS-48 signals are 2,488.320 Mbps and can accommodate 48 DS-3 signals, etc. The highest defined STS signal, the STS-768, is nearly 40 Gbps (gigabits per second). The abbreviation STS stands for Synchronous Transport Signal and the abbreviation STM stands for Synchronous Transport Module. STS-n signals are also referred to as Optical Carrier (OC-n) signals when transported optically rather than electrically. 
   To facilitate the transport of lower-rate digital signals, the SONET standard uses sub-STS payload mappings, referred to as Virtual Tributary (VT) structures. (The ITU calls these structures Tributary Units or TUs.) This mapping divides the SPE (VC) frame into seven equal-sized sub-frames or VT (TU) groups with twelve columns of nine rows (108 bytes) in each. Four virtual tributary sizes are defined as follows. 
   VT1.5 has a data transmission rate of 1.728 Mb/s and accommodates a DS1 signal with overhead. The VT1.5 tributary occupies three columns of nine rows, i.e. 27 bytes. Thus, each VT Group can accommodate four VT1.5 tributaries. 
   VT2 has a data transmission rate of 2.304 Mb/s and accommodates a CEPT-1 (E1) signal with overhead. The VT2 tributary occupies four columns of nine rows, i.e. 36 bytes. Thus, each VT Group can accommodate three VT2 tributaries. 
   VT3 has a data transmission rate of 3.456 Mb/s) and accommodates a DS1 C signal with overhead. The VT3 tributary occupies six columns of nine rows, i.e. 54 bytes. Thus, each VT Group can accommodate two VT3 tributaries. 
   VT6 has a data transmission rate of 6.912 Mb/s and accommodates a DS2 signal with overhead. The VT6 tributary occupies twelve columns of nine rows, i.e. 108 bytes. Thus, each VT Group can accommodate one VT6 tributary. 
   As those skilled in the art will appreciate, the original SONET/SDH scheme as well as the VT mapping schemes were designed to carry known and potentially foreseeable TDM (time division multiplexed) signals. In the early 1980s these TDM signals were essentially multiplexed telephone lines, each having the (now considered) relatively small bandwidth of 56-64 kbps. At that time, there was no real standard for data communication. There were many different schemes for local area networking and the wide area network which eventually became known as the Internet was based on a “56 kbps backbone”. Since then, Ethernet has become the standard for local area networking. Today Ethernet is available in four bandwidths: the original 10 Mbps system, 100 Mbps Fast Ethernet (IEEE 802.3u), 1,000 Mbps Gigabit Ethernet (IEEE 802.3z/802.3ab), and 10 Gigabit Ethernet (IEEE 802.3ae). 
   In recent years it has been recognized that SONET/SDH is the most practical way to link high speed Ethernet networks over a wide area. Unfortunately, the various Ethernet transmission rates (10 Mbps, 100 Mbps, 1,000 Mbps, and 10,000 Mbps) do not map well into the SONET/SDH frame. For example, the original 10 Mbps Ethernet signal is too large for a VT-6 tributary (6.912 Mbps) but too small for an entire STS-1 (51.84 Mbps) path. In other words, under the existing SONET/SDH schemes, in order to transport a 10 Mbps Ethernet signal, an entire STS-1 path must be used, thereby wasting a significant amount of bandwidth. Similar results occur when attempting to map the faster Ethernet signals into STS signals. 
   In order to provide a scheme for efficiently mapping Ethernet signals (as well as other signals such as Fiber Channel and ESCON) into a SONET/SDH frame, the Virtual Concatenation (VCAT) Protocol was created and has been endorsed by the ITU as the G.707 standard (ITUT-T Rec. G.707/Y.1322 (December 2003)) which is hereby incorporated by reference herein in its entirety. Similar to inverse multiplexing, Virtual Concatenation combines multiple links (members) into one Virtual Concatenation Group (VCG), enabling the carrier to optimize the SDH/SONET links for Ethernet traffic. For example, using virtual concatenation, five VT-2 (2 Mbps) links can be combined to carry a 10 Mbps Ethernet signal, resulting in full utilization of allotted bandwidth. Two STS-1 (51 Mbps) links can be combined to carry a 100 Mbps Ethernet signal, etc. Virtual Concatenation uses SONET/SDH overhead bytes (four of the sixteen “H4” bytes) to indicate two numbers: the multiframe indicator (MFI) and the sequence number (SQ). 
   Part of the emerging Virtual Concatenation Protocol includes methods for dynamically scaling the available bandwidth in a SONET/SDH signal. These methods are known as the Link Capacity Adjustment Scheme or LCAS. LCAS is a powerful network management tool because customer bandwidth requirements change over time. One simple example is a network user who, during business hours, needs only enough bandwidth to support electronic mail and worldwide web access. During non-working hours, however, the same network user may wish to conduct relatively large data transfers from one location to another to backup daily transactions, for example. It would be desirable to alter the user&#39;s available bandwidth as needed. LCAS provides a means to do this without disturbing other traffic on the link. LCAS has been endorsed by the ITU as the G.7042 standard (ITU-T Rec. G.7042/Y.1305 (February 2004)) which is hereby incorporated by reference herein in its entirety. 
   While Virtual Concatenation is a simple labeling protocol, LCAS requires a two-way handshake (using seven of the sixteen H4 bytes for high order, STS-1, and seventeen of the thirty-two K4 bits for low order, VT1.5). Status messages are continually exchanged and actions are taken based on the content of the messages. For example, to provide high order (STS-1) virtual concatenation, each STS-1 signal carries one of six LCAS control commands which are described as follows: 
   “Fixed”—LCAS not supported on this STS-1 (“Fixed” is actually inferred rather than sent as a command. It is inferred when all of the LCAS fields other than MFI and SEQ are zero.); 
   “Add”—Expresses an intention to add this STS-1 to a VCG, thereby increasing the bandwidth of an existing VCG or creating a new VCG (Bandwidth is increased upon acknowledgement from the sink.); 
   “Norm”—This STS-1 is in use and is not the last member of a VCG; 
   “EOS”—This STS-1 is in use and is the last payload carrying STS-1 of this VCG, i.e. the payload carrying STS-1 with the highest SQ number; 
   “Idle”—This STS-1 is not in use in a VCG or is about to be removed from a VCG; 
   “Do not use”—This STS-1 is supposed to be part of a VCG, but does not transport payload due to a broken link reported by the destination. Members of a VCG which do not carry payload are termed “inactive” whereas members which carry payload are termed “active”. 
   Although SONET is said to be synchronous, it is actually plesiochronous. The clocks at different switches in the network actually differ in rate and also drift somewhat. Measures are provided to account for these clock differences which are seen as “justifications” in the overhead of the SONET signal. These justifications instruct the next switch in the path to add or remove “stuff bytes”. 
   Due to the nature of the SONET network, it is possible for individual members of a VCG to traverse different network paths between their origin and destination. Because of this, members will arrive at their destination out of order and with different delays. This situation is generally referred to as “skewing”. In order to reassemble the members of a VCG in proper order without undue delay and without losing any members, the arriving members must be buffered and deskewed. Deskewing uses the multiframe indicator (MFI) as a time stamp to align all of the VCG members. Challenges to the deskewing process include: achieving minimal latency, accounting for justifications, adjusting for increases and decreases in member delay, dealing with the presence of inactive VCG members, and managing start-up and disruptions. 
   In its simplest form, deskewing involves placing members of a VCG in a buffer until the member with the most delay is received, then reading the members out of the buffer in the proper order. If the buffer is read at a fixed rate dictated by the slowest member, the other members still stay buffered incurring a latency dictated not by their differential delay but by the differential delay with respect to the slowest member. If a member with the largest delay is removed from a group, the other members of the group are still subject to the long delay and buffer space is wasted. As a result, in these systems the system delay is effectively the history of the member of the VCG having the longest delay. This is a likely situation in the case of bandwidth adjustments using the LCAS protocol or due to configuration changes. 
   SUMMARY OF THE INVENTION 
   It is therefore an object of the invention to provide a method for deskewing a SONET signal containing a VCG. 
   It is another object of the invention to provide a method for deskewing a SONET signal containing a VCG which achieves minimal latency. 
   It is a further object of the invention to provide a method for deskewing a SONET signal containing a VCG which accounts for justifications. 
   It is also an object of the invention to provide a method for deskewing a SONET signal containing a VCG which adjusts for changes in the path delay of VCG members. 
   It is an additional object of the invention to provide a method for deskewing a SONET signal containing a VCG which accounts for inactive VCG members. 
   It is still another object of the invention to provide a method for deskewing a SONET signal containing a VCG which manages start-ups and disruptions. 
   In accord with these objects, which will be discussed in detail below, write logic and read logic are coupled to SDRAM and a frame status table. Individual arriving VCG members are individually written into SDRAM by the write logic and an entry (based on the MFI and SQ) in the frame status table is maintained by the write logic for each member. The frame status is one of: started, finished, not started, and abandoned. The read logic scans the frame status table to identify the earliest frame number for which data of all members is available in SDRAM. Based on the frame status and the difference between the read and write address pointers, the read logic maintains a state table entry for each VCG member. Member state is one of: MFI wait offset wait due to slower member, MFI wait offset due to no read, MFI wait offset advance, and MFI advance. Based on the member states, the read logic computes a state for each VCG. The VCG states are initialized to the state of the first member and are updated as additional members of the VCG are encountered. 
   According to the preferred embodiment, the read logic is provided in two parts separated by a temporary buffer. The first part of the read logic performs the functions described above and writes chunk data into the temporary buffer. The second part of the read logic reads byte data from the temporary buffer according to a selectable leak rate (fast or slow) while maintaining approximately 15 microseconds of data in SDRAM and the temporary buffers. The second part of the read logic receives specific SONET signaling (clock, SPE, H3, and C1) and utilizes a bus limited to that signaling and the data (called the “combus”) to transport bytes to a demapper. In the case of a fast leak, valid data is read out of the temporary buffer when the SPE is high and the leaked data is sent over the combus during the entire TOH part of the frame except for the C1 byte so that the demapper can identify the framing and hence the slots. In the slow leak mode, leaked data is read and sent in every H3 byte. The second part of the read logic provides feedback to the first part regarding the availability of space in the temporary buffer. 
   Additional objects and advantages of the invention will become apparent to those skilled in the art upon reference to the detailed description taken in conjunction with the provided figures. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a simplified block diagram of an apparatus according to the invention; 
       FIG. 2  is a simplified flowchart illustrating the methods of the invention; 
       FIG. 3  is a simplified flowchart illustrating the processing of frame status and read and write pointer offsets to obtain member states; 
       FIG. 4  is a simplified flowchart illustrating the processing of member states to obtain VCG state; and 
       FIG. 5  is a simplified flow chart illustrating the operation of the second part of the read logic. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
   Turning now to  FIG. 1 , a deskewing apparatus  10  according to the invention includes write logic  12 , an SDRAM buffer  13 , a frame status table  14 , read logic  15 ,  18 , a register  16  for storing member and VCG states and a temporary buffer  17 . The write logic  12  receives skewed data  11  (VCG members with different delays and not necessarily in proper order). When the write logic  12  begins to receive a frame, it is written to the buffer  13  and, after a complete word is formed, the status of the frame is entered into the table  14 . According to the presently preferred embodiment, the buffer  13  and the table  14  are sized to accommodate five hundred twelve frames of data and frame status indications respectively. The frame status values are listed and explained in Table 1. 
   
     
       
             
             
           
         
             
               TABLE 1 
             
             
                 
             
             
               Frame Status 
               Description 
             
             
                 
             
           
           
             
               Not Started 
               This is the default status indicating that no payload for 
             
             
               (FS_NS) 
               this MFI number is available in the buffer. In addition, if 
             
             
                 
               the MFI of a member jumps forward, the write logic sets 
             
             
                 
               the status to Not Started for intervening MFI numbers. 
             
             
               Started 
               This indicates that some payload for this MFI number 
             
             
               (FS_S) 
               has been written to the buffer but the frame is not 
             
             
                 
               complete. 
             
             
               Finished 
               This indicates that this frame is completely written to the 
             
             
               (FS_F) 
               buffer. 
             
             
               Abandoned 
               This indicates that the frame could not be completed. 
             
             
               (FS_A) 
             
             
                 
             
           
        
       
     
   
   The first part of the read logic  15  uses the frame status and the offset between the buffer write pointer and read pointer to determine when and what to read from the buffer  13  and store in the buffer  17 . The first part of the read logic  15  outputs deskewed data (VCG members in proper order, one after the other, with no delay between members) to the temporary buffer  17 . 
   The second part of the read logic  18  receives combus signaling  19  (including clock, SPE, H3, and C1) and utilizes the combus  20  to transport bytes to a demapper  21 . In the case of a fast leak, valid data is read out of the temporary buffer  17  when the SPE signal is high and the leaked data is sent over the combus  20  during the entire TOH part of the frame except for the C1 byte so that the demapper can identify the framing and hence the slots. In the slow leak mode, leaked data is read and sent in every H3 byte. The second part of the read logic  18  also provides feedback to the first part  15  regarding the availability of space in the temporary buffer  17 . The leak mode is normally set by the user and defaults to fast leak mode. However, the leak mode can be automatically adjusted by monitoring the pointer offset and causing a shift from slow leak mode to fast leak mode for a one time read if the pointer offset exceeds a threshold. 
   Those skilled in the art will appreciate that the MFI and SEQ numbers are distributed over sixteen frames. According to the presently preferred embodiment, the skewed data  11  is from an OC-48 signal and the concatenation is high order, i.e. up to 48 members. Therefore, 48×16 frames must be received before all of the MFI and SEQ numbers are known. (It will be appreciated, however, that the implementation also applies to a TU3.) The frame status table  14  is therefore preferably arranged with 48 columns and 512 rows. As the table  14  is filled, data is discarded until the MFI pattern is recognized. After the pattern is recognized, data is written to the SDRAM  13  using the MFI to address the data. Each MFI is associated with one frame which is 783 bytes (the payload of an STS-1, but it could also be implemented for the payload of a TU3). The frame status table  14  of this size can accommodate a maximum differential delay of 64 ms between members. This delay is the maximum differential delay experienced in a terrestrial network.  FIG. 2  illustrates the basic sequence of processes performed by the read logic  16 .  FIGS. 3 and 4  illustrate the processing in more detail. 
   Turning now to  FIG. 2 . and with reference to  FIG. 1 , starting at  22 , the read logic  15  reads the frame status table  14  at  24 . For each entry in the frame status table, the read logic determines at  26  a member state which is stored in the register  16 . The member state values are listed and explained in Table 2. 
   
     
       
             
             
           
         
             
               TABLE 2 
             
             
                 
             
             
               Member State 
               Description 
             
             
                 
             
           
           
             
               MFI wait offset wait 
               If there is no data available in the frame being 
             
             
               due to slower member 
               addressed by the read logic and for any of the 
             
             
               (MWOWSL) 
               members of the VCG, the write address pointer 
             
             
                 
               is behind the read address, then wait for the 
             
             
                 
               write pointer to catch up. 
             
             
               MFI advance (MA) 
               Advance read MFI address of frame status 
             
             
                 
               table by one. This is done when the frame is 
             
             
                 
               read completely or frame status is not started 
             
             
                 
               and write MFI is ahead of read MFI or FS_A is 
             
             
                 
               encountered for any members of the VCG. 
             
             
               MFI wait offset wait 
               Do not change the read MFI address of the 
             
             
               due to no read 
               frame status table and read offset of SDRAM 
             
             
               (MWOWNr) 
               for current read frame. The no read may be 
             
             
                 
               because there is not enough data to begin 
             
             
                 
               reading. 
             
             
               MFI wait offset 
               Increment the read offset of the current read 
             
             
               advance (MWOA) 
               frame and read the frame from the buffer. 
             
             
                 
             
           
        
       
     
   
   After the entire frame status table for one MFI (for all the members of a VCG) has been processed at  26 , the member states are read back at  28  and processed one by one at  30  to determine the VCG states which are also stored in the register  16 . The VCG state values are determined from member state values. After all of the member states have been processed at  30 , the VCG states are read back at  32  and processed at  34 . The processing of VCG states consists of determining whether it is MWOA. At  36  the action taken is that described in Table 2 depending on the member state. 
   Turning now to  FIG. 3 , the read logic  15  reads the frame status table and generates a VCG member state for each entry in the table based on the table entry and the read and write pointer offsets. Starting at  40 , the table entry is read and if it is abandoned (FS_A) as shown at  42 , the member state is set to MA (MFI advance) as shown at  44 . 
   If the frame status table entry is started (FS_S) as shown at  46 , the difference between the current write pointer offset (CWOFF) and the current read pointer offset (CROFF) is calculated and a determination is made as to whether it exceeds a threshold (TH, e.g. 64 Bytes which equals 15 microseconds of a SONET stream) at  48 . If the difference is greater than the threshold, an external control  50  chooses whether to set the member state at  52  to MWOWNr (wait due to no read) or MWOA (wait offset advance). The external control is a flow control signal from an on-chip internal FIFO through which packets pass. If that FIFO should overflow due to a data burst, the flow control signal can force the state to MWOWNr. If the FIFO is not overflowing, the state defaults to MWOA. If the difference between the pointer offsets is less than or equal to the threshold as determined at  48 , the member state is set to MWOWNr (wait due to no read). 
   If the frame status table entry is finished (FS_F) as shown at  56 , it is determined at  58  whether the current read pointer offset (CROFF) is equal to Last_WD as indicated by the read pointer offset. If it is not, external control  60  determines whether to set the member state at  62  to MWOWNr (wait due to no read) or MWOA (wait offset advance) The external control is a flow control signal from an on-chip internal FIFO through which packets pass. If that FIFO should overflow due to a data burst, the flow control signal can force the state to MWOWNr. If the FIFO is not overflowing, the state defaults to MWOA. If it is equal as determined at  58 , the member state is set to MA (MFI advance) as shown at  64 . 
   If the frame status table entry is not started (FS_NS) as shown at  66 , it is determined at  68  whether the current write MFI is less than or equal to the current read MFI. If it is, the member state is set at  70  to MWOWSL (wait due to slow member). If it is not, the member state is set at  72  to MA (MFI advance). 
     FIG. 4  illustrates the functions performed by the read logic  15  in setting member states. Turning now to  FIG. 4 , starting at  74 , member state is examined, then it is determined at  76  whether the member is the first member of a VCG. If it is, the member&#39;s state is considered to be the VCG state at  78 . If the member is not the first member of a VCG, it is determined at  80  whether the member state is a higher priority than the current VCG state. If it is, the VCG state is advanced at  82 . If it is not, no change is made to the VCG state at  84 . This process is repeated for all of the members of the VCG. The VCG states are reported to the control plane. 
     FIG. 5  illustrates how the second part of the read logic ( 18  in  FIG. 1 ) reads the temporary buffer ( 17  in  FIG. 1 ) based on combus signaling ( 19  in  FIG. 1 ). Turning now to  FIG. 5 , the read logic waits at  100  until the temporary buffer is filled with 15 microseconds of data (based on the incoming data rate, e.g. 2,488.320 Mbps.) Once the temporary buffer has filled to that threshold, it is determined at  102  whether the data is to be read at a fast leak rate or a slow leak rate. If it is a slow leak rate, the read logic waits at  104  until the SPE signal is high or the H3 byte slot appears in the combus signaling (i.e., H3 high). Whenever the SPE signal or H3 is high, the read logic reads the data from the temporary buffer at  106  and sends it to the combus ( 20  in  FIG. 1 ). In the case of a fast leak rate, the read logic reads the data from the temporary buffer at  106  and sends it to the combus ( 20  in  FIG. 1 ) during all timeslots except when the C1 byte slot appears in the combus signaling at  108 . 
   There have been described and illustrated herein methods and apparatus for deskew buffer management with VCAT and LCAS. While particular embodiments of the invention have been described, it is not intended that the invention be limited thereto, as it is intended that the invention be as broad in scope as the art will allow and that the specification be read likewise. For example, while the invention has been described with reference to external SDRAM, other types of internal or external memory could be used. Also, while the invention has been explained with reference to high order concatenation, it could be applied to low order. Also, while the fast leak has been described with reference to sending data during all timeslots except the C1 timeslot, it will be appreciated that a fast leak can be accomplished by sending data whenever the SPE is high and in a plurality of overhead slots of the combus (instead of just H3), provided that data is not sent during the C1 timeslot. It will therefore be appreciated by those skilled in the art that modifications could be made to the provided invention without deviating from its spirit and scope as claimed.