Module interface carrier data rate adaptation techniques

Techniques for adapting data rates from a first to a second system in a telecommunication system are provided. The techniques on used on data communications in the ingress or egress direction. The first system transfers data at a first data rate that is faster than a data rate of a second system. The techniques are used to adapt data received at the first data rate for sending to the second system at the second data rate.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is related to U.S. Nonprovisional patent application No. 10/213,266, filed on the same day, Aug. 5, 2002, entitled “System Partitioning to Allow Uniform Interfacing to Port Modules,” which is hereby incorporated by reference for all purposes.

BACKGROUND OF THE INVENTION

The present invention relates generally to telecommunications and more specifically to a system and method for adapting data rates between telecommunication devices.

The amount of data communicated through networks, such as the Internet, is increasing dramatically. To meet the increased demand for network bandwidth, data networks that transfer data at faster and faster rates have been developed. As new networks are developed, different formats for the data are also developed where the networks transfer data in the formats at different data rates. Because the formats and data rates vary between networks, not all networks transfer data at the same speed. Additionally, telecommunications systems connected to the network process data at different rates than that of the networks. Telecommunication systems, such as aggregators, may aggregate data from different networks that transfer data at varying data rates. Also, a processor in the aggregator typically processes data at a set rate. Thus, a telecommunications system's processor and the networks process or transfer data at different rates.

Problems are encountered in transferring data between the aggregator's processor and a network because of the difference in data rates. For example, data cannot be continuously streamed between a first system processing data at a lower rate and a second system processing data at a higher rate without any underflow of data at the second system. Because the first system sends data at a rate slower than the second system, the second system experiences lapses in time where data is not available for processing.

One method for avoiding the above problem is to store an entire data packet in a buffer. Once the entire data packet is stored in the buffer, the data packet is sent to the second system at the second system's data rate. Thus, the second system does not experience any moments where data is not available for processing.

Many disadvantages, however, exist when the entire data packet is stored. For example, storing the entire packet can take a large amount of time, especially when large packets of data are being transferred. Also, with networks transferring large packets of data, not only is the time required to store the entire packet extensive, a large buffer is required at the first or second system. Additionally, with users requiring data transferred at faster speeds, any time required to store an entire data packet will be time lost in transferring data.

BRIEF SUMMARY OF THE INVENTION

The present invention provides various techniques for adapting data rates between a first and second system in a telecommunication system. The techniques are for data communications in the ingress or egress direction.

In one embodiment, a method for transferring an amount of data between a first system and a second system in a telecommunications system is provided. The first system transfers data at a first data rate and the second system transfers data at a second data rate, where the second data rate is higher than the first data rate. The method comprises calculating a difference in data rates between the first data rate of the first system and second data rate of the second system. A partial amount of data from the amount of data is then calculated. The partial amount is then sent to and stored in a buffer. In one embodiment, the partial amount of data determines a maximum packet size that may be transferred.

After the partial amount of data is stored in the buffer, the amount of data not already sent to the buffer along with the partial amount of data in the buffer is sent to the second system. Also, in one embodiment, the data rate of a total amount of data sent from the first system to the second system is substantially equal to the higher data rate of the second system.

In another embodiment, a method for transferring an amount of data between a first system and a second system in a telecommunications system is provided. The first system transfers data at a first data rate and the second system transfers data at a second data rate, where the second data rate is higher than the first data rate.

One embodiment of the method includes receiving the amount of data at the first data rate during a period of time at the first system. The first system is polled for available data at one or more polling times in the period of time. Also, one or more cells of data are sent at the second data rate during the period of time. The cells of data include data from the amount of data received at the first data rate if the data is available at a polling time in the one or more polling times and include an empty character indication is included in the cell if data is not available at the polling time.

A further understanding of the nature and advantages of the invention herein may be realized by reference of the remaining portions in the specifications and the attached drawings.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1depicts a simplified block diagram of a telecommunications system2according to one embodiment of the present invention. Telecommunications system2includes end customer devices4, access equipment6, aggregators8, and a network10.

End customer devices4are computing devices, such as personal computers (PCs), workstations, personal digital assistants (PDAs), cellular phones, personal PCs, and the like, that communicate data. The data are transmitted to access equipment system6through communication lines.

Access equipment systems6aggregate and multiplex the data received from end customer devices4. Examples of access equipment systems6include digital subscriber line access multiplexer (DSLAM), multiplexers, etc. Data received at access equipment systems6are then sent to aggregators8. Data from a single access equipment system6are typically sent in a specific data format and a specific data rate. For example, the data formats include SONET/SDH (OC3, OC12, OC48, etc.), DS3/E3, Ethernet, Gigabit Ethernet, etc. Data in these formats are also transferred at various data rates, where a fixed data rate is associated with a format.

Aggregator10receives the data from access equipment systems6in the different formats. Aggregator10processes the data in the different formats and may send the data to one or more other aggregators10. Data may be sent in different formats than the received data format. Data are then sent to access equipment system6and to another end customer4through network12. Network12may be any network, such as the Internet.

FIG. 2depicts a simplified block diagram of a network communications system100according to one embodiment of the present invention. In one embodiment, network communications system100is included in aggregator10. A plurality of network communication modules102are provided to receive data from a variety of ports110. Each network communication module102includes a port interface module (PIM)104, a module interface carrier (MIC)106, and a network data plane108.

Each network communications module102may receive data or a single network communications module102may receive data and then communicate the data to the other network communications modules102. In one embodiment, data refer to data communicated in packets, cells, or frames. These terms may be used interchangeably herein. In one embodiment, data is communicated between network communication modules102through a backplane.

PIM104provides a physical termination of a port. The ports are illustrated as ports110, where ports110are ports for data being transferred in different formats and different data rates. PIM104receives data in the different formats and data rates from ports110. Examples of formats for ports110include ports that receive data in the formats of SONET/SDH (OC3, OC12, OC48, etc.), DS3/E3, Ethernet, Gigabit Ethernet, etc. Also, each of these formats transfers data at different data rates.

PIM104is configured to extract data from ports110. In one embodiment, PIM104may include two PIMs with each PIM including eight ports. Thus, in this embodiment, sixteen ports110may be supported.

An interface105is provided in between PIM104and MIC106. In one embodiment, interface105is a uniform industry standard interface, such as a Utopia/POSII or Utopia/POSIII interface. Interface105provides a standard interface to facilitate data communications between PIM104and MIC106.

MIC106is configured to receive the extracted data from PIM104through interface105. MIC106receives data from different ports110through PIM104at a first data rate and sends the data at a second data rate to network data plane108. Additionally, MIC106receives data from network data plane108at a first data rate and sends the data to ports110connected to PIM104at a second data rate.

MIC106also includes a buffer112. Buffer112is used to store data and more specifically to store a partial amount of data from a frame of data being transferred from network data plane108. The use of buffer112will be described in more detail below.

Network data plane108is a processor/switching unit configured to receive data from MIC106(ingress direction). Additionally, network data plane108is configured to send data to MIC106(egress direction). In one embodiment, network data plane108processes data at a certain fixed data rate.

Data are carried in an ingress direction from PIM104through MIC106to network data plane108. Additionally, egress data are carried from network data plane108through MIC106to PIM102and ports110. In the ingress direction, data carrying capacity in network data plane108may be higher than the data carrying capacity of ports110. Thus, ports110connected to PIM104may transfer data at a data rate that is lower than the data rate of network data plane108. In the egress direction, data carrying capacity in network data plane108may be lower than the data carrying capacity of ports110. In order to adapt the data rates between network data plane108and ports110connected to PIM104, MIC106uses techniques for data rate adaptation as described below for both the egress and ingress directions. In one embodiment, the techniques are implemented by MIC106using software, hardware, or any combination thereof.

In one embodiment, the data that are transferred in the ingress and egress directions include a variable-length data packet. Once a first system starts sending a variable-length data packet to a second system, the first system has to keep sending data to the second system until end of packet.

In one embodiment, a cell of data includes a number of words of a certain size that are used to store portions of the variable-length data packet. For example, the cell of data includes sixteen or seventeen 32-bit words. Embodiments of cells of data are described in

U.S. Nonprovisional patent application No. 10/213,266, filed on the same day, Aug. 5, 2002, entitled “System Partitioning to Allow Uniform Interfacing to Port Modules,” which is hereby incorporated by reference for all purposes. Although embodiments of cells of data may be described as including sixteen seventeen 32-bit words, it will be understood that cells of data may include any number of words of any size and that a person skilled in the art will appreciate other mediums of transferring data between systems.

In the ingress direction, MIC106continuously sends cells of data to network data plane108at network data plane's108data rate. In order to send cells of data at network data plane's108data rate, PIM104is polled at certain time periods for data before a time for sending a cell of data. If data is available at that time, the data is inserted into a 32-bit word in the cell of data. If data is not available at that time, empty bytes are inserted into the 32-bit word in the cell of data. This process continues until a cell of data has been filled. The filled cell of data is then sent to network data plane108at the time that satisfies network data plane's108data rate.

Accordingly, when data from a variable length packet is received at PIM104, the data is included in a cell of data. PIM104is then polled at certain time intervals and data from the variable length packet is included in the cell of data if it is available, or empty byte characters are included in the cell of data if data is not available. Once the cell is filled, the cell is sent at the data rate of network data plane108. The process of sending cells of data continues and the complete frame of data will be sent to network data plane108. The end of the frame is indicated by an end of frame special character. In one embodiment, the above process does not require any frame buffering.

In the egress direction, MIC106calculates a difference in data rates between the data rate of network data plane108and the data rate of a destination port110in which the data is being sent. A partial amount of data from a frame of data being sent to destination port110is then calculated from the data rate difference. The partial amount of data is stored in buffer112before forwarding the data to destination port110through PIM104. The partial amount of data stored in buffer112is used to adapt the difference in data rates between network data plane108and destination port110. MIC106receives data at the data rate of network data plane108and is thus at least able to send data to destination port110at that data rate. However, using the partial amount of data stored in buffer112, MIC106is able to send the data received in addition to data from the partial amount of data to destination port110at the data rate of destination port110.

After the partial amount of data is stored, data from the frame of data not already sent is sent to buffer112. At the same time, data from buffer112is sent from MIC106through PIM104to destination port110. Thus, data is sent from network data plane108through buffer112to PIM104and destination port110. Also, the data sent from buffer112is sent at the data rate of destination port110.

FIG. 3illustrates a simplified flowchart of a method for performing data rate adaptation in the egress direction according to one embodiment. In step300, MIC106determines a first data rate for network data plane108. MIC106can determine the data rate of network data plane108because its data rate is fixed.

In step302, MIC106determines a second data rate for a destination port110connected to PIM104that data from network data plane108will be transferred to. MIC106determines the data rate for destination port110when a first cell of data containing data from a frame of data to be transferred to destination port110is received. In one embodiment, information contained in the cell indicates an identification for destination port110. From the identification, MIC106determines the data rate of destination port110because each port110transfers data at a certain data rate. It is assumed for illustrative purposes that the data rate for network data plane108is slower than a data rate for destination port110.

In step304, MIC106calculates a rate difference between network data plane108and destination port110. Once the data rate difference is determined, MIC106calculates a partial amount of data to store in buffer112in step306. The calculated partial amount of data is smaller than the frame of data to be transferred. Also, the partial amount of data allows MIC106to adapt the data rate of network data plane108to be equal to the data rate of destination port110when the partial amount of data and data from the frame of data not already sent to buffer112is transferred to destination port110.

In step308, the partial amount of data is transferred to buffer112from network data plane108.

In step310, the partial amount of data transferred from network data plane108is stored in buffer112. Also, the partial amount of data is transferred before network data plane108starts to send the entire frame of data.

Once the partial amount of data is stored in buffer112, in step312, network data plane108starts sending the frame of data that has not been sent to buffer112to buffer112. In one embodiment, data from the frame of data is sent in one or more cells of data.

In step314, the data sent from network data plane108is stored in buffer112. The data is stored in buffer112after the already stored partial amount of data.

In step316, at the same time as data is sent from network data plane108, data stored in buffer112is sent to destination port110through PIM104at the second data rate. The data sent to destination port110starts with the partial amount of data stored followed by the data from the frame of data not already sent.

The process of sending data from buffer112to the destination port110through PIM104at the second data rate continues until the complete frame of data has been sent from network data plane108to destination port110through PIM104. Using the partial amount of data from the frame of data stored in buffer112before the rest of the frame of data was sent from network data plane108, MIC106is able to send data to the destination port110at the second data rate without any underflow of the second data rate. The data rate adaptation is accomplished because the partial amount of data stored in the buffer serves to adjust the difference in data rates. As data is received from network data plane108at the first data rate, the stored partial amount of data is sent along with the data received at the first data rate in the second data rate. Thus, if the partial amount of data was not stored, data would be received at the first data rate and MIC106would be able to send the data at the first data rate.

As mentioned above, a maximum packet size that can be transferred without frame buffering is calculated. The partial amount of data that can be stored in buffer112determines the maximum packet size that can be transferred. An exemplary embodiment of the calculation will now be described.

It is assumed that a frame of data will be transferred from network data plane108to a destination port110, where the data rate of destination port110is, e.g., approximately 150 Mbps (Mbits per second) and the data rate of network data plane108is 144 Mbps. In one embodiment, network data plane's108data rate is calculated by taking network data plane's108rate of sending cells for a port in sixteen ports (6/16 Mcell/s). The payload in each cell is 48 bytes*8 bits. Thus, the data rate is (6/16)*48*8=144 Mbps.

Assuming the variables T=time in for example, micro seconds, to transmit a frame of length X bits, and Y=partial data size to store in buffer112in bits, the following equations are solved: 150*T=X; and 144*T=X−Y. The first equation denotes that it takes 150 Mbps times an amount of time to transfer X bits. The second equation denotes that is takes 144 Mbps time an amount of time to transfer (X-Y) bits. In order to prevent under-run, MIC106pre-stores the difference, Y. By substituting X=T*150 into the second equation, the equation, Y=(150*T)−(144*T), is determined. Then, the equation, 150/144=X/(X−Y), is determined by replacing T with X/150. In this equation, X is the maximum packet size that can be supported and Y is the size of buffer112.

In one example, to support a maximum packet size of 10,000 bytes the equation becomes: 150/144=(10000*8)/(10000*8−Y), where Y=3200 bits or 400 bytes. Thus, buffer112is configured to hold 3200 bits or 400 bytes and can support a maximum packet size of 10,000 bytes.

FIG. 4illustrates a flowchart for a method for performing data rate adaptation in the ingress direction according to one embodiment. In one embodiment, the cell of data is in the network data plane format.

When MIC106determines when to send the cell of data to network data plane108, MIC106can determine when to poll PIM104for available data to fill the cell of data. The polling times are designed so the cell is filled and ready to be sent to network data plane108at the second data rate.

In step400, MIC106determines if it is time to poll PIM104for available data. If it is not time, the method reiterates to step300where MIC106again determines if it is time to poll PIM104for available data.

In step402, if it is time to poll PIM104for data, MIC106determines if PIM104has received any available data from a variable length frame of data from port110that may be included in the cell of data.

In step404, if data is not available at PIM104, MIC106fills a word in the cell of data with empty bytes. In one embodiment, a 32-bit word is filled with four empty byte characters.

In step406, if data is available at PIM104, the available data is filled into a word in the cell of data. In one embodiment, 32-bits of data is filled into a 32-bit word of the cell of data.

In step408, MIC106determines if it is time to send the cell of data to network data plane108. MIC106is configured so the cell of data is filled with either data from the frame of data, empty bytes, or any combination thereof, when it is time to send the cell of data.

In step410, if it is time to send the cell data, MIC106sends the cell of data to network data plane108.

If it is not time to send the cell of data, the method reiterates to step300where MIC106determines when it is time to poll PIM104for available data.

The above process of sending cells of data continues until the entire frame of data is received through port110has been sent to network data plane108. When the entire frame of data has been sent, a frame boundary byte is added to indicate that the end of packet has been reached. The method reiterates to step300.

Accordingly, a cell of data is sent from MIC106to network data plane108at intervals to satisfy the data rate of network data plane108. Because the data rate of network data plane108is faster than the data rate of data received at PIM104, data may not always be available at PIM104when data should be inserted into a cell of data. Thus, a cell of data may include empty bytes and network data plane108is configured to disregard the empty bytes. The faster data rate of network data plane108is thus maintained sending cells of data at the faster data rate with empty bytes, if needed.