ROUTING OF DATA STREAMS
The routing of data streams is discussed, and particularly routing one or more incoming streams to one or more output destination ports. The ability to merge incoming streams is discussed so that several low bit rate input packet streams can be merged into a higher bit rate output stream. An assignment data structure identifies for each input stream the or each destination to which it is to be routed, and a packet allocation data structure holds information about the packets and information about the destination of the packets to allow a memory holding the packets to be controlled accordingly.
Latest STMICROELECTRONICS LIMITED Patents:
PRIORITY CLAIM
The present application is a continuation of U.S. patent application Ser. No. 10/779,466 filed Feb. 16, 2004, which claims priority from European Patent Application No. 03251091.9 filed Feb. 24, 2003, the disclosures of which are hereby incorporated by reference.
BACKGROUND OF THE INVENTION1. Technical Field of the Invention
The present invention relates to the routing of data streams, and in particular streams constituted by data packets.
2. Description of Related Art
Networks today provide connectivity to a variety of devices such as servers, personal computers, memory storage systems, etc. Most networks provide a wide range of applications and technologies to allow for a multitude of communications to one or more destinations.
As is known in the art, illustrated by U.S. Pat. No. 6,081,522, a network may employ a multi-layer network element to forward received packets from an input port to one or more output ports. The received packets may be scanned for different types of forwarding information, i.e., layer 2 information, layer 3 information, layer 4 information, etc. Based on the results of the scan, a determination is made as to the most appropriate combination of layer 2 or layer 3 forwarding decisions for the received packet. Once the forwarding decisions are made, the received packet is transmitted to the destination.
U.S. Pat. No. 5,905,725 relates to a network utilizing a router to switch a packet between a source and a destination. The router may include a plurality of ports connected to various sources and destinations. The ports connected to sources are termed input ports and each input port includes a data handler. The router also includes output ports and a memory divided into a plurality of memory banks. The data handler divides each packet into one or more fixed length cells. The fixed length cells are transmitted to an input switch that writes a single cell into a cell slot time span to each memory bank. The input switch reads a key from the packet and, based on a destination indicated by a key, an output port associated with the destination is determined. An output switch is alerted to the determination and transfers the determination to the appropriate output port. The output port initiates transfer of the packet from the memory and the output switch.
SUMMARY OF THE INVENTIONA transport stream multiplexer (TSMUX) has been implemented which can route a data stream received as an input to any one of a number of outputs. An aspect of the present invention expands the capabilities of the multiplexer so that a number of input streams can be merged and can be directed to one or more of a plurality of output destinations.
According to one aspect of the present invention there is provided a stream routing unit for routing each of a plurality of input packet streams to any of a plurality of destinations. The stream routing unit includes a plurality of input ports for receiving respective input streams, a plurality of output ports associated with respective destinations to which the input packet streams can be routed, and storage means for holding packets of the input packet streams at addressable locations each identifiable by an address. The stream routing unit also includes an assignment data structure identifying for each input stream at least one destination to which each input packet stream is to be routed. The stream routing unit further includes a packet allocation data structure holding for each new incoming packet a source identifier identifying the origin of the packet and the address in the storage means where the packet is held. The packet allocation data structure also holds information identifying the intended destination of the packet derived from the assignment data structure.
Another aspect of the invention provides a method of routing packet streams from a plurality of sources to any of a plurality of destinations. The method includes receiving the packet streams, identifying for each input packet stream at least one destination to which each input packet stream is to be routed using an assignment data structure, holding each packet of the packet stream at an addressable location identifiable by an address in a storage means, and holding for each new incoming packet a source identifier identifying the origin of the packet and the address in the storage means where the packet is held. The method also includes holding information identifying the intended destination of the packet derived from the assignment data structure, and using the information identifying the intended destination to route the packet from the storage means to at least one output port associated with the respective identified destination(s).
A further aspect of the invention provides a communications system which utilizes a stream routing unit as hereinabove defined together with a plurality of sources for the input packet streams and destinations for receiving output streams.
As described below, the preferred embodiment of the invention provides an intellectual property (block of logic) known as TSmerger which merges multiple lower bit rate transport streams to a single higher bit rate transport stream for processing by a single programmable transport interface (PTI). For example, nine input streams can be merged into three output streams, with each input stream being able to be routed to any output stream, or to multiple destinations.
In the described embodiment, the TSmerger IP is implemented by storing packets of incoming streams in a single SRAM in a stream merger unit, which effectively behaves as a series of first-in first-out buffers (FIFOs).
A more complete understanding of the method and apparatus of the present invention may be acquired by reference to the following Detailed Description when taken in conjunction with the accompanying Drawings wherein:
The TSmerger unit 2 itself is capable of merging the lower bit rate transport streams to individual higher bit rate streams for processing by respective single PTIs. Each input stream can be routed to any output stream, and each input stream may be distributed to multiple output streams and thereby to multiple destinations.
The TSmerger unit 2 illustrated in
The processing means 8 controls the removal of packets from the SRAM 3 to the destinations dest0, dest1, dest2 in such a way as to maintain maximum bandwidth, while allowing any source stream to go to any destination. Packets from multiple sources are merged without breaking individual packets (i.e. streams are merged at the packet level and not at the byte level) and packets from a single stream are read from the SRAM in the correct order, that is in the order in which they arrived.
To maintain maximum bandwidth, in the preferred embodiment each packet is only read from the SRAM 3 once, so that if a packet from a particular input port is destined for more than one destination, the packet is only output from the SRAM 3 when the ports for both of those destinations are free.
The source to destination matrix 6 is a data structure illustrated in
The next temporary assignment of destination pointers is illustrated in
The next assignment of destination pointers is shown in
After the assignment of destination pointers has been completed, the algorithm controls the SRAM 3 to output the identified packets according to the status of the destination pointers in the packet allocation table.
It will be appreciated that whether or not packets are removed from the SRAM depends on the capability of destinations to receive them. When destinations are capable of accepting data, they return a signal to the TSmerger unit 2 indicating that they can accept data and then a packet is transmitted. The speed at which packets are removed from the SRAM may also depend on the length of the packets. Generally, each packet stream will contain packets of a common length, although the packet length can differ between different packet streams.
Although preferred embodiments of the method and apparatus of the present invention have been illustrated in the accompanying Drawings and described in the foregoing Detailed Description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications and substitutions without departing from the spirit of the invention as set forth and defined by the following claims.
Claims
1. A method for delivering incoming packets to at least one destination, comprising:
- mapping at least one source to at least one destination;
- associating a source and at least one destination for a particular packet with a memory location at which the particular packet is stored; and
- controlling removal of the incoming packets from a memory to at least on destination wherein the incoming packets have a lower bit-rate than packets delivered to the at least one destination.
2. A method for controlling removal of packets from a memory to at least one destination, comprising:
- reading each packet from a memory;
- determining a number of particular destinations to which each read packet is destined for delivery;
- checking whether a port for each particular destination is available;
- if the packet is destined for delivery to more than one particular destination, outputting the packet for multi-destination delivery only if a port for each of the particular destinations is simultaneously available; and
- if the packet is destined for delivery to only one particular destination, outputting the packet only when a port for ht at particular destination is available.
3. An apparatus for controlling removal of packets from a memory at least one destination, comprising:
- a processor for reading each packet from a memory and determining a number of particular destinations to which each read packet is destined for delivery; and
- a plurality of outputs for receiving the read packet, wherein if the packet is destined for delivery to more than one particular destination, each output in the plurality of outputs receiving the packet only if a port for each of the particular destinations is simultaneously available.
Type: Application
Filed: May 17, 2010
Publication Date: Nov 18, 2010
Applicant: STMICROELECTRONICS LIMITED (Bristol)
Inventor: Matt Morris (Bristol)
Application Number: 12/781,118
International Classification: H04L 12/56 (20060101);