Embodiments of the invention generally relate to the field of Ethernet networks and, more particularly, to a method and apparatus for aggregating Ethernet streams.
Transmit/receive pair 101 consists of gigabit media independent interface (GMII) 105, transmit physical coding sublayer (PCS) 110, encoder 115, serializer 120, serial link 125, de-serializer 130, framer 135, decoder 140, receive PCS 145, and receive GMII 150. Transmit/receive pair 102 may be implemented with similar elements. GMII 105 is the interface between a media access control (MAC) layer (not shown) and the elements illustrated in
GMII 105 typically provides octets of data to PCS 110 through an 8-bit parallel data interface. PCS 110 receives the octets of data from GMII 105 and directs encoder 115 to encode the octets of data prior to transmission over serial link 125. Encoder 115 is typically an 8B/10B encoder as specified in the gigabit Ethernet standard. Octets of data are typically encoded into ten-bit data code-groups. 8B/10B encoding schemes are known in the art; accordingly a detailed discussion is not provided herein. PCS 110 may also direct encoder 115 to generate a number of ten-bit special code-groups, which are sometimes combined with the data code-groups. For example, a special code-group called a K28.5 may contain a unique seven-bit sequence called a comma. Commas may be used for framing operations.
PCS 110 also generates combinations of data code-groups and special code-groups known as ordered sets. Ordered sets may be used, for example, to control the running disparity of a stream or to fill the inter-packet gaps (IPGs) of a stream. The IDLE1 ordered set, for example, is typically used to change the running disparity of an Ethernet stream and the IDLE2 ordered set is typically used to fill the IPGs of the Ethernet stream. The encoded data code-groups, special code-groups, and ordered sets are delivered to Serializer 120. Serializer 120 serializes the encoded information and transmits it over serial link 125. Serial link 125 may be a single-mode fiber optic link, a multi-mode fiber optic link, a shielded copper link, or an unshielded copper link.
De-serializer 130 deserializes the received encoded information and framer 135 determines the correct character boundaries for the received encoded information. Framer 135 may use one or more commas (e.g., as contained within the K28.5 code-group) to determine character boundaries. The framed information is then decoded into octets of data and special characters by decoder 140 and checked for synchronization by receive PCS 145. The synchronization process may be used to verify that framer 135 is correctly aligning the received code-group boundaries.
Using STS-48/OC-48 channel serial links to transport multiple gigabit Ethernet streams introduces a number of problems. First, mapping gigabit Ethernet streams into a SONET stream requires the hardware overhead of full SONET framers. Full SONET framers, in turn, introduce latencies of at least 250 μs is to the transported streams. Also, additional internetworking hardware is required at both ends of the link to map the Ethernet streams into a SONET stream and to extract the multiple Ethernet streams from the payload section of the received SONET frames.
Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Embodiments of the invention are generally directed to a method and apparatus for aggregating Ethernet streams. In one embodiment, an implementation of a physical coding sublayer (PCS) modifies one or more Ethernet streams to uniquely distinguish each of the one or more Ethernet streams one from another. Any two or more of the modified Ethernet steams may be interleaved to form an aggregate Ethernet stream.
Reference numerals 205 and 207 illustrate Ethernet streams (hereinafter, input data streams 205 and 207) passed from an implementation of a media access control (MAC) layer to gigabit media independent interfaces (GMIIs) 206 and 255, respectively. GMII 206 and 255 typically provide octets of data to modified transmit PCSs 210 and 215 respectively through eight-bit parallel data interfaces. Similarly, on the receive side, GMII 250 and 297 typically receive octets of data from receive PCSs 230 and 235, respectively.
In one embodiment, Ethernet streams 205 and 207 originate from a common dual-channel MAC. In such an embodiment, input data streams 205 and 207 may share a single transmit character clock reference. Input data streams 205 and 207, however, will normally be asynchronous to each other with respect to data flow, packet size, and inter-packet gap (IPG) length and location. In some embodiments, input data streams 205 and 207 may be compliant with the gigabit Ethernet standard. Input data streams 205 and 207 are delivered to modified transmit PCS blocks 210 and 215, respectively.
Modified transmit PCSs 210 and 215 may generate identifiers to uniquely identify input data streams 205 and 207. Conventional transmit PCSs, generate two types of IDLE ordered sets. The first type, IDLE1, is used to alter the running disparity (when necessary) at the end of a frame. The second type, IDLE2, is used to fill the IPGs between frames. As will be further discussed below, in one embodiment, IDLE ordered sets are modified and are used to identify Ethernet streams one from another.
DC balance refers to transmitting an equal number of ones and zeros on a link. Running disparity is a calculation used to achieve DC balance in transmission. In conventional communication systems, IDLE1 ordered sets may be used to force a specific running disparity into the IPGs. In contrast, conventional IDLE2 ordered sets maintain the running disparity of a transmission. This feature of conventional communication systems may be useful when transmitted data is routed through a repeater, hub, or switch, before being presented at a different GMII interface. Some embodiments of the present invention are implemented in direct GMII to GMII connection. In such embodiments, there is no need to force a specific running disparity into the IPGs, or to maintain a specific running disparity within the IPGs. Thus, in some embodiments, two or more source Ethernet streams may be character interleaved, without regard to the running disparity of the characters within the IPG, to create the resulting aggregate Ethernet stream.
Since Ethernet streams may be interleaved without a need to force a specific running disparity in the IPGs, in some embodiments, the IPGs in one or more source streams may be filled with alternative mappings of the IDLE ordered set. Similarly, in some embodiments, the modified transmit PCSs 210 and 215 need not generate IDLE1 ordered sets. Thus, in some embodiments, input data streams 205 and 207 may be modified by mapping different IDLE ordered sets into each stream. The modified streams may then be delivered to the proper destination, as will be further described below.
Generate IDLE 310, according to one embodiment, generates an IDLE ordered set that may be used to identify an Ethernet stream. In conventional communication systems, IDLE ordered sets consist of a K28.5 special code-group followed by either a D16.2 or D5.6 data code-group. In some embodiments, the K28.5/D16.2 IDLE ordered set may be used to fill the IPGs on all but one of the two or more Ethernet streams and a different data code-group character may be coupled with the K28.5 special code-group to identify one of the Ethernet streams. In alternate embodiments, the K28.5/D16.2 IDLE may be used to fill all IPGs on one of the two or more Ethernet streams, so long as a different data code-group character is coupled with the K28.5 special code-group to differentiate the remaining Ethernet streams.
In one embodiment, a separate instance of modified transmit PCS state machine 300 exists for each Ethernet stream that is interleaved to form the aggregate Ethernet stream. The corresponding Generate IDLE 310 state in each of those instances of transmit PCS 300, in one embodiment, generates a different IDLE ordered set. Thus, one instance of PCS 300 (e.g., 210 shown in
The gigabit Ethernet standard specifies the ordered sets (e.g., table 36-3) that may be used by conventional communication systems. In one embodiment of the invention, if two or more Ethernet streams are interleaved together, at least one of the streams may use an IDLE ordered set that is different from the ordered sets that are allowed by the gigabit Ethernet standard. In such an embodiment, the characters of the two or more Ethernet streams may be interleaved in a fixed sequence. As will be further discussed below, in such an embodiment, an identifier element (e.g., identifier 225 shown in
Thus, in an embodiment, each instance of transmit PCS 300, inserts an IDLE sequence that is allocated to the particular channel, as well as the normal state handling required to map the GMII transitions into an 8B/10B character stream. Referring again to
Serializer 219 serializes the ten-bit transmission characters, generated by encoder 217, and transmits them over serial link 220. Various logical bus-width matching mechanisms and gearboxes may be used between encoder 217 serial link 220 to accommodate any internal interfaces of the serializer and an operating speed of the internal logic. In one embodiment, serial link 220 is approximately equivalent to an STS-48/OC-48 channel. In such an embodiment, input data streams 205 and 207 comply with the gigabit Ethernet standard and are transmitted over serial link 220 at approximately 2.5 gigabaud. In alternative embodiments, serial link 220 may be an STS-96/OC-192 channel or any other channel with a transmission speed suitable for transporting an aggregate Ethernet stream.
In one embodiment, de-serializer 232 receives the transmitted aggregate Ethernet stream and converts the serial stream to a parallel stream. Various logical bus-width matching mechanisms and gearboxes may be used between de-serializer 232 and framer 237 to accommodate any internal interfaces of the de-serializer and an operating speed of the internal logic. Such bus-width matching mechanisms and gearboxes are known to those of ordinary skill in the art and will not be further discussed except as they relate to embodiments of the invention. Thus, communication system 200 may transport two or more gigabit Ethernet streams without using separate serializers, de-serializers, and serial links for each stream.
Framer 237 frames the parallel data to the correct character boundaries. In one embodiment, framer 237 detects one or more framing characters (e.g., the K28.5 or other special characters containing the comma bit sequence) and determines character boundaries based on the detected framing characters. In some embodiments in which two 1-gigabit Ethernet streams are character interleaved together, the maximum separation between framing characters is three other characters. In alternate embodiments in which more than two Ethernet streams are interleaved together, the maximum separation between framing characters may increase by two characters for each additional Ethernet stream. For example, in one embodiment in which four 1-gigabit Ethernet streams are interleaved for transport on a five gigabaud serial link, the maximum separation between framing characters may be seven other characters.
Decoder 245 receives the framed characters and decodes them. In one embodiment, decoder 245 is an 8B/10B decoder as specified in the gigabit Ethernet standard. Identifier 225 searches the decoded characters for the modified IDLE identifiers inserted by modified transmit PCSs 210 and 215. In some embodiments of the invention, in which only one of transmit PCSs 210 and 215 are modified, identifier 225 searches the decoded characters for a modified IDLE ordered set inserted by the modified transmit PCS. Identifier 225 may demultiplex the decoded characters based on the located identifiers.
In some embodiments, one of the identifiers is a unique IDLE ordered set that is different from the ordered sets that are allowed under table 36-3 of the gigabit Ethernet standard. In such embodiments, the characters of the Ethernet streams may be interleaved in a fixed sequence. Identifier 225 searches the received aggregate Ethernet stream for the unique IDLE ordered set. Once identifier 225 locates the unique IDLE ordered set, it routes the associated character stream to a receive PCS (e.g., receive PCS 230) associated with the unique IDLE ordered set. The characters of the remaining Ethernet streams may be demultiplexed sequentially because they were interleaved sequentially.
Receive PCSs 230 and 235 may synchronize the decoded characters for ordered sets as described in the gigabit Ethernet standard. Receive PCSs 230 and 235 then map the synchronized character streams to the data and states of receive GMIIs 250 and 297. In an embodiment, the mapping of the synchronized character streams is performed according to the gigabit Ethernet standard. As described above, communication system 200 transports two (or more) gigabit Ethernet streams over a serial link without using full SONET framers.
In some embodiments, input data streams 205 and 207 may be asynchronous from each other, and from the serial output 242, in frequency. For example, in some embodiments input data stream 205 may be clocked at a slightly different frequency than serial output 242. In such embodiments, a clock tolerance management block may be used to compensate for the differences in clocking frequencies.
Referring again to
In some embodiments, serial link 220 must be operated at a rate that is slightly slower than 2.5 gigabits per second. For example, in some embodiments, serial link 220 may be operated at a signaling rate of approximately 2.488 gigabits per second. In such embodiments, clock tolerance management block 240 may perform rate adaptation. In some embodiments, rate adaptation includes deleting one or more characters in all IPGs on the transmit interface of serial link 220 and adding one or more characters back into the IPGs on the receive interface of serial link 220.
For example, in some embodiments, the maximum packet length is greater than 1500 characters. In such embodiments, IPGs may typically contain six IDLE ordered sets. A clock tolerance management block (e.g., block 240) may reduce the number of ordered sets in each IPG to a single ordered set (e.g., containing a single framing character for framing purposes). The deleted ordered sets may be re-inserted by a clock tolerance management block (e.g., block 240). In some embodiments, clock tolerance management block 240 may reduce packet payload, and thereby at least partly compensate for a reduced transmission speed over serial link 220, by removing one or more fixed preamble characters from transmitted packets. In some embodiments, clock tolerance management block 240 may reinsert the fixed preamble characters.
Memory 420 may encompass a wide variety of memory devices including read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), random access memory (RAM), non-volatile random access memory (NVRAM), cache memory, flash memory, and other memory devices. Memory 420 may also include one or more hard disks, floppy disks, ZIP disks, compact disks (e.g., CD-ROM), digital versatile/video disks (DVD), magnetic random access memory (MRAM) devices, and other system-readable media that store instructions and/or data. Memory 420 may store program modules such as routines, programs, objects, images, data structures, program data, and other program components that perform particular tasks or implement particular abstract data types that facilitate system use.
System interconnect 460 permits communication between the various elements of computing system 400. System interconnect 460 may include a wide variety of signal lines including one or more of a memory bus, peripheral bus, local bus, host bus, bridge, optical, electrical, acoustical, and other propagated signal lines.
Interleaving engine 440 provides the functions of generating one or more identifiers and interleaving any two or more of the modified Ethernet streams to form an aggregate Ethernet stream. Interleaving engine 440 may be implemented with software routines, hardware circuits, firmware, or a combination thereof. In some embodiments, a modified transmit PCS state machine (e.g., modified transmit PCS state machine 300) provides the identifier generation function.
The term aggregate Ethernet stream may refer to the result of interleaving the characters of two or more Ethernet streams together to form a single stream of characters. The interleaving function may be performed by encoding the characters of two or more Ethernet streams with a particular 8B/10B encoder to form an aggregate Ethernet stream. The encoding may occur in a fixed sequence, in some embodiments of the invention.
Description of Flow Charts
Turning now to
The one or more identifiers are inserted into one or more corresponding Ethernet streams at process block 510. In one embodiment, the identifiers are inserted into inter-packet gaps (IPG) between encoded characters of the one more Ethernet streams. In alternate embodiments, the identifiers may replace characters in the preamble of the encoded characters.
In process block 515, any two or more of the modified Ethernet streams are interleaved to form an aggregate Ethernet stream. In one embodiment, the two or more Ethernet streams are interleaved on a character-by-character basis. For example, a single encoder may be used to encode the characters of the two or more Ethernet streams. Each of the two or more modified Ethernet streams may input a character to the encoder in turn. Alternatively, the encoder may accept two or more characters at the same time and encode multiple characters simultaneously. In one embodiment, the order by which the two or more modified Ethernet streams input a character to the encoder may be fixed.
In process block 520, the aggregate Ethernet stream is transmitted over a serial link. In one embodiment, two I-gigabit Ethernet streams are modified and interleaved to form the aggregate Ethernet stream. The aggregate Ethernet stream is transmitted over a serial link with a transmission rate of approximately 2.5 gigabaud (e.g., over an STS-48/OC-48 channel). In alternate embodiments, more than two 1-gigabit Ethernet streams are interleaved together to form an aggregate Ethernet stream. In such embodiments, a serial link with a transmission rate greater than 2.5 gigabaud may be used (e.g., an STS-96/OC-192 channel).
Referring to process block 620, the decoded character stream is searched for the one or more identifiers. In one embodiment, a comparator (or similar hardware) may be used to search the decoded character stream. In alternate embodiments, software running on a processor is used to search the decoded character stream. In yet other embodiments, firmware or some combination of hardware, software, and/or firmware is used to search the decoded character stream.
After the one more identifiers are located, the aggregate Ethernet stream is separated into its component Ethernet streams as illustrated by process block 630. In one embodiment, when a unique identifier is located, the character stream associated with that unique identifier is routed to a modified receive PCS state machine associated with the same channel from which the unique identifier was transmitted. In one embodiment, the characters of the remaining streams may have been sequentially interleaved. In such an embodiment, the characters of the remaining streams may be sent sequentially to modified receive PCS state machines corresponding to the channels from which they were sent.
It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.
Number | Name | Date | Kind |
---|---|---|---|
5412651 | Gorshe | May 1995 | A |
5560038 | Haddock | Sep 1996 | A |
6430201 | Azizoglu et al. | Aug 2002 | B1 |
6624763 | Kuo et al. | Sep 2003 | B2 |
6768429 | Kuo et al. | Jul 2004 | B2 |
6873630 | Muller et al. | Mar 2005 | B1 |
7031341 | Yu | Apr 2006 | B2 |
20010024457 | Barry et al. | Sep 2001 | A1 |