A cut-through data packet mechanism is described. Forwarding of a cut-through data packet by an intermediary node enables packet transmission of the cut-through data packet to begin prior to performing a frame crc on the packet. The crc is instead performed while transmission of the packet is occurring. If one or more errors are found in the cut-through data packet, then a packet trailer indicating such errors is transmitted toward an endpoint node that receives the cut-through packet.
|
22. A frame data receiver comprising:
an interface configured to receive a cut-through data frame comprising a data packet and having a frame trailer; and
one or more processors configured to:
perform a cyclic redundancy check (crc) using a frame crc field in said data frame, said frame crc field having been computed based on at least one non-crc field of said data frame;
determine, as a result of said crc, that said data frame is not corrupted; and
determine from said frame trailer that said data packet is corrupted, containing one or more errors, and initiate an associated action.
15. A method for receiving a data frame comprising a data packet and having a first frame trailer, at a frame data receiver, comprising:
receiving the data frame on a first interface of the frame data receiver;
performing, by said frame data receiver, a cyclic redundancy check (crc) using a frame crc field in said data frame, said frame crc field having been computed based on at least one non-crc field of said data frame;
determining, as a result of said crc and by said frame data receiver, that said data frame is not corrupted; and
determining from said frame trailer that said data packet is corrupted, containing one or more errors, and taking an associated action.
8. A switching device comprising:
a first interface configured to receive a first data frame;
a second interface configured to begin retransmitting the data packet contained in the first data frame as a second data frame toward an endpoint prior to performing a first cyclic redundancy check (crc) using a frame crc field in said first data frame, said frame crc field having been computed based on at least one non-crc field of said first data frame;
an interface controller configured to control said first and second interfaces;
a processor configured to perform, subsequent to beginning said retransmitting, said first crc on said first data frame using said frame crc field and to determine, as a result of said crc on said first data frame, that said first data frame is corrupted, containing one or more errors; and
said switching device is further configured to transmit, via said second interface, a frame trailer associated with said second data frame which indicates that said data packet contained in the second data frame is corrupted.
1. A method for transmitting data toward an endpoint node, the method comprising:
receiving, at an intermediary node, a first data frame comprising a data packet;
beginning to retransmit, by the intermediary node, the data packet contained in said first data frame toward said endpoint node in a second data frame prior to performing a first cyclic redundancy check (crc) using a frame crc field in said first data frame, said frame crc field having been computed based on at least one non-crc field of said first data frame;
performing, by said intermediary node and subsequent to beginning said retransmitting, said first crc on said first data frame using said frame crc field;
determining, as a result of said first crc and by said intermediary node, that said first data frame is corrupted, containing one or more errors; and
transmitting, by said intermediary node toward said endpoint node, a frame trailer associated with said second data frame which indicates that said data packet contained in said second data frame is corrupted, containing one or more errors.
2. The method of
3. The method of
performing, by said intermediary node, a second crc using said header crc field prior to beginning retransmission of said data packet; and
discarding said data packet, instead of retransmitting said data packet, if said at least one header field fails said second crc.
4. The method of
beginning retransmission of said data packet when a layer three (L3) destination device identification field in said data packet has been received by said intermediary node.
5. The method of
adding a special Layer 2 symbol as said frame trailer in said second data frame, said special Layer 2 symbol being indicative that said second data frame is corrupted.
6. The method of
computing a second frame crc field for said second data frame being retransmitted, and appending said second frame crc field to said second data frame and transmitting said second frame crc field therewith.
7. The method of
setting a flag in a frame trailer in said second data frame, said flag being indicative that said second data frame is corrupted.
9. The switching device of
10. The switching device of
said switching device is further configured to discard said data packet, instead of retransmitting said data packet, if said second crc fails.
11. The switching device of
12. The switching device of
13. The switching device of
14. The switching device of
17. The method of
18. The method of
19. The method of
20. The method of
skipping the transmission of a negative acknowledgement control (NAC) frame.
21. The method of
removing the data frame from a retransmission buffer and rolling back a frame sequence number.
23. The frame data receiver of
24. The frame data receiver of
25. The frame data receiver of
|
This application is related to, and claims priority from, U.S. Provisional Patent Application Ser. No. 61/266,747, entitled “Methods and Systems for Reliable Packet Cut-Through”, filed on Dec. 4, 2009, the disclosure of which is incorporated here by reference.
The present invention relates generally to digital circuits and more specifically to the energy usage of digital circuits.
In the Mobile Industry Processor Interface Alliance [MIPI], several standards are defined. One of these standards is called UniPro (Unified Protocol), which is aimed at chip-to-chip networks using high-speed serial links [UniPro 1]. UniPro is defined to be a general purpose protocol that solves the general interconnect problems, such as error handling, flow control, routing or arbitration. UniPro is intended to increase the flexibility of phone manufacturers by mixing and matching chips with different functionalities, potentially from different vendors for easy creation of new devices.
UniPro has a fairly complex error handling procedure to provide reliable communication at the link level. The UniPro error handling is based on error detection based on CRC codes, error reporting using NAC frames, and data frame retransmissions in case of errors. Sequence numbers make sure that data frames are sent in order, and prevents frames being lost or duplicated. Sequence numbers are also essential in managing the retransmission buffer at the transmitter side, by removing the frames from the retransmission buffer once they are reported correctly received.
In addition to the CRC-based error detection, UniPro also uses timers to address error corner cases. Two timers are used, one to protect against frame acknowledgments and flow-control credits being lost, respectively.
This error handling requires that the data frames are only processed after their CRC is verified. While this pre-processing of the CRC may be a requirement when the packets are delivered at the receiver application, it is inefficient in intervening nodes, e.g., in UniPro network nodes such as UniPro switches, where it increases latency associated with data frame delivery.
Although the present handling is adequate, the inventor found it desirable to have methods and nodes which have less latency in such communication systems, and provide a more reliable packet cut-through mechanism.
A cut-through data packet mechanism is described. Forwarding of a cut-through data packet by an intermediary node enables packet transmission of the cut-through data packet to begin prior to performing a frame CRC on the packet. The CRC is instead performed while transmission of the packet is occurring. If one or more errors are found in the cut-through data packet, then a packet trailer indicating such errors is transmitted toward an endpoint node that receives the cut-through packet.
According to one exemplary embodiment, a method for transmitting data toward an endpoint node includes the steps of: receiving, at an intermediary node, a first data frame, beginning to retransmit, by the intermediary node, the data packet contained in the first data frame toward the endpoint node in a second data frame prior to performing a first cyclic redundancy check (CRC) using a frame CRC field in the first data frame, the frame CRC field having been computed based on at least one non-CRC field of the first data frame, performing, by the intermediary node and subsequent to beginning the retransmitting, the first CRC on the first data frame using the frame CRC field, determining, as a result of the first CRC and by the intermediary node, that the first data frame is corrupted, containing one or more errors, and transmitting, by the intermediary node toward the endpoint node, a frame trailer associated with the second data frame which indicates that the data packet contained in the second data frame is corrupted.
According to another exemplary embodiment, a switching device includes a first interface configured to receive a first data frame, a second interface configured to begin retransmitting the data packet contained in the first data frame as a second data frame toward an endpoint prior to performing a first cyclic redundancy check (CRC) using a frame CRC field in the first data frame, the frame CRC field having been computed based on at least one non-CRC field of the first data frame, an interface controller configured to control first and second interfaces, a processor configured to perform, subsequent to beginning the retransmitting, the first CRC on the first data frame using the frame CRC field and to determine, as a result of the CRC on the first data frame, that first data frame is corrupted, containing one or more errors, and the switching device is further configured to transmit, via the second interface, a frame trailer associated with the second data frame which indicates that the data packet contained in the second data frame is corrupted.
According to another exemplary embodiment, a receiver includes an interface configured to receive a cut-through data frame, a processor configured to evaluate a data field other than a cyclic redundancy check (CRC) field associated with the cut-through data frame to determine whether the cut-through data frame is corrupted, containing one or more errors.
According to still another exemplary embodiment, a method for receiving a data frame comprising a data packet and having a first frame trailer, at a frame data receiver, includes the steps of receiving the data frame on a first interface of the frame data receiver, performing, by the frame data receiver, a cyclic redundancy check (CRC) using a frame CRC field in the data frame, the frame CRC field having been computed based on at least one non-CRC field of the data frame, determining, as a result of the first CRC and by the frame data receiver, that the data frame is not corrupted, and determining from the frame trailer that the data packet is corrupted, and taking an associated action.
The accompanying drawings illustrate, among other things, exemplary embodiments of the present invention, wherein:
The following detailed description of the exemplary embodiments refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims.
According to exemplary embodiments, data frames or packets can be “cut through” to improve latency. Here, packet “cut through” means that an incoming packet can be transmitted further before the CRC check is performed, e.g., in intervening UniPro nodes between the packet transmitter and the packet recipient. In this invention, we present a method which does packet cut through in a UniPro network. Among other things, exemplary embodiments provide for combining packet cut through with error handling, thus ensuring that an error detected for the transmission of a cut-through packet is propagated in the network, such that the erroneous packet is stopped. Exemplary embodiments prevent erroneous packets from being delivered, and ensure in-order data transmission. In order to provide some context for discussion of the exemplary embodiments, some information is first provided about UniPro protocols and systems in which these exemplary embodiments can be used. However it will be understood that the present invention is not limited to usage in UniPro standardized systems.
The UniPro protocol defines data and control frames for its link-level communication. Data frames encapsulate data from the application, while control frames are used by UniPro's data link layer protocol for its internal mechanisms. The UniPro protocol specification (1.00.00) defines the data frames as shown in
The trailer consists of two symbols: the EOF control symbol (the 16th bit is 1), and the CRC data symbol (the 16th bit is 0) for error detection. The EOF control symbol consists of:
In UniPro version 1.5, it is possible that the data frame format changes to use a frame length (instead of an EOF/EOF_PAD control symbol) field to identify where a frame ends, an example of which is shown in
This new frame format is introduced to allow the introduction of an optional 16-bit header CRC, which is required by the real-time traffic class (expected to be part of the UniPro 2.0 specification), an example of which is shown in
The UniPro 1.00.00 protocol has two control frames: the AFC (Acknowledgment and Flow Control) control frame shown in
The NAC control frame shown in
The UniPro link-level error handling scheme is based on error detection and data frame retransmission, and consists of two safety nets. The first safety net is fast and handles typical errors. The second safety net is slower and handles corner cases. UniPro systems add a CRC (Cyclic Redundancy Check) error detection code to each transmitted frame. The receiver re-computes the CRC and verifies it against the CRC received at the end of the frame. In the case the received frame is correct, the receiver commits it to the receive buffer and acknowledges the frame to the transmitter (for a data frame), or processes it (for a control frame). In case the receiver detects an error, it reports it back to the transmitter using a NAC frame.
All transmitted data frames are assigned a sequence number, which is also transmitted in the data frame, and is used by the receiver for acknowledgment. The UniPro sequence number has 5 bits. The reset value is 0, and is used for the first data frame transmission. The sequence number is incremented with every frame transmitted/received and wraps around at 31. In UniPro, at most 16 frames can be transmitted without receiving an acknowledgment. Frame acknowledgment is performed using ACK control frames. When acknowledging frames, the sequence number in the AFC frame acknowledges all unacknowledged data frames up to and including the one identified by the sequence number.
The transmitter saves all transmitted data frames in a retransmission buffer until acknowledged. In the case a NAC control frame is received (reporting an error), all data frames in the retransmission buffer are retransmitted starting with the oldest unacknowledged frame.
The second safety net is used for the cases in which one or more of the AFC or NAC frames are lost. In such cases, either the acknowledgments and/or link-level flow control credits contained in an AFC frame are lost, or an error indication contained in an NAC frame is lost. To protect against such (rare) errors, for each traffic class, two timers are used: one for data, called replay timer, and one for credits, called credit timer. When the replay timer expires, all the unacknowledged frames in that traffic class are retransmitted. When the credit timer expires, an AFC frame with the Req bit set is sent for that traffic class. In both cases, UniPro 1.00.00 requires the link to be resynchronized, after which an NAC frame with the RRR bit is sent to also require the incoming link to be resynchronized.
In addition to the CRC errors, as part of the first safety net, the receiver detects numerous other errors:
The Phy Adapter indicates an error in the following cases
When any of the above errors is detected, a NAC control frame is transmitted, possibly preceded by a pair of AFC control frames to prevent unnecessary retransmissions.
In
Node A follows up the retransmitted Frame #4 with Frame #5. Frame #4 is correctly received, but an error is detected for Frame #5 by Node B. Consequently, as in the previous case, am AFC frame is sent to report the correct receipt of Frame #4, and an NAC frame is sent to report the error. Unfortunately, also the NAC frame encounters a transmission error. Node A reports this error with a NAC, however, it doesn't know that it should retransmit Frame #5. Eventually, Node A′s replay timer expires, and Node A retransmits Frame #5 (second safety net).
Using SDL flow charts,
Initially, the receiver symbol parser has not started any frame, and waits in the state NoFrame. When a start of frame symbol is received (NAC, AFC, SOF with a TC of 0 or 1) the corresponding procedure is called to receive the whole frame (NAC, AFC, TC1 and TC0, respectively). If any other symbol is received (data, COF, EOF or EOF_PAD, which is not shown for simplicity), the Error procedure is called with the parameter false. In any state, when an error indication is received from the Phy Adapter, the Error is called with the parameter false.
In
In
In
In
If in TC1_data, a pre-emption occurs (NAC or AFC symbols is received), the procedure for receiving that frame (NAC or AFC, respectively) is called. Any other symbol received in the TC1_data state (i.e., SOF or COF), and error is reported with Error. If the TC1 data frame was pre-empted, and the pre-empting frame finished, the parser returns in the state TC1_CoF. In this state, (1) the TC1 data frame can be continued when receiving a COF with the TC field set to 1, after which the parser continues in state TC1_data, or (2) another pre-emption by an NAC, AFC can start, or (3) an SOF symbol with the TC field set to 1 can be received indicating a possible retransmission. Any other symbol is an error, and reported using Error.
In
According to exemplary embodiments, a packet cut-through process may be performed at, for example, intermediary nodes wherein the packet is transmitted before the CRC check is performed.
The frames may, according to exemplary embodiments, only be cut through immediately after the L3 DeviceID (address) was received. If the header is protected by a header CRC, it is better to only start the cut through after the header CRC is verified, e.g., by computing a CRC based on at least one non-CRC field in the frame header (and, possibly, on all of the non-CRC fields in the frame header), thus ensuring the L2-L4 header is correct. If the header CRC is corrupt, the frame is discarded and an error is reported. In the example in
In this example, Frame #5 encounters an error during its payload transmission on Link 1. However, the error is only detected when the frame CRC is checked, which is too late to prevent the frame from being cut through. As a result, after the frame CRC is checked, e.g., by computing a CRC based on at least one non-CRC field in the frame and, possibly, on all of the non-CRC fields in the frame, and the error is found, the cut through frame (Frame #9 on Link 2) is appended a trailer indicating that an error exists in the payload. One way the payload error can be indicated is to add a special Layer 2 symbol in the frame trailer (see, e.g.,
An alternative way to indicate the payload error is by poisoning the frame CRC (i.e., inserting an erroneous CRC) at the transmitter. However, in this case it is not possible to distinguish between an error occurring on the current link and an error occurring on a previous link. Consequently, a protocol using this method would be limited in the choice of options it has when treating these errors.
The NAC frames are shown to carry a sequence number. This is in principle possible in a protocol, however, not permitted by UniPro. To compensate for the lack of sequence numbers in UniPro, the NAC frame can be preceded by AFC frames to carry the sequence numbers of the last correctly received frames. When the frame is protected by a header CRC, the frame traffic class is known to be correct. As a result, the NAC frames reporting the error may be flagged to indicate the traffic class where the error occurred. In this way, the transmitter can be more selective, and only take retransmission actions on the affected traffic class.
After the NAC is received on Link 1, Frame 4 (reported by the NAC as being correctly received) is removed from Node A′s retransmission buffer, and Frame 5 retransmitted. On Link 2, the NAC frame reported Frame 8 as correctly received, resulting in Frame 8 being removed from Node B′s retransmission buffer. However, the original cut-through cannot be retransmitted, as it was flagged as corrupted and not saved in Node B′s retransmission buffer (frames committed to retransmission buffers only when proven correct by the frame CRC). Other frames may be available from other links, and those can be transmitted (e.g., second Frame #9 in
In
In order to implement the packet cut through technique described above according to the exemplary embodiment of
A UniPro L2 receiver which does not need to deal with cut through packets saves the incoming data in the Rx buffer until the frame CRC proves the frame correct. The frame is only made available to Layer 3 after the frame was proven correct. However for the cut-through case, the frame has to be made available to Layer 3 before the frame CRC check. A natural time would be to start supplying the frame to Layer 3 right after the Layer 2 header was received, however other alternatives are possible. The UniPro Layer 2 according to this exemplary embodiment also provides an indication to Layer 3 to indicate the frame payload is corrupted (either because it was labelled as such, or the frame CRC is wrong). After the packet is routed in Layer 3, this indication is delivered to the Layer 2 at the transmitter port. The UniPro Layer 2 transmitter labels the outgoing data frames as having an erroneous payload (e.g., by appending an EOF_ERR symbol). For reliable frames and real-time frames that can be retransmitted, if the payload is corrupt, the frame is removed from the retransmission buffer. This results in rolling back the transmitted-frame sequence number by one. For a reliable frame, the available Layer 2 used flow-control credits are rolled back by the amount of credits consumed when transmitting the cut-through frame. For reliable frames and real-time frames that can be retransmitted, the receiver also removes the frames marked with EOF_ERR from its Rx buffer. This also results in not advancing the expected sequence number (as is the case with a correct frame).
According to exemplary embodiments, methods, devices and systems enable allows the packets to be started being sent early within a network, i.e., before the frame CRC is received and verified. In this way, the delay penalty introduced by the CRC checks is only paid once, when the packets are delivered to the final destination. As a result, the transmission latency is reduced significantly. To quantify this benefit, and purely as an illustrative example, if a packet would be sent via 3 links, taking approx. 1 μs for each link (due to the frame CRC check), the total packet latency is 3 μs. When cut through, the packet delay on the first 2 links can be reduced to approx. 100 ns, leading to a total packet latency of 1.2 μs.
Another exemplary embodiment, similar to that of
According to these exemplary embodiments, a length-based frame with header CRC provides for earlier error recovery when header errors occur. When TC is proven correct, this avoids buffer overflows caused by wrong TC and avoids accidental bandwidth claims in case of bandwidth reservation (v2.0). When DeviceID is proven correct, this prevents accidental load of other links due to a DeviceID error.
Thus, according to one exemplary embodiment, a method for transmitting data from an intermediary node toward an endpoint node includes the steps illustrated in the flowchart of
It will be appreciated by those skilled in the art that the method illustrated in
When node 2000 is operating as an endpoint node (or any cut-through frame data receiver), the first interface 2002 can be configured to receive a cut-through data frame. The processor 2006 can then be configured to evaluate a data field other than a cyclic redundancy check (CRC) field associated with the cut-through data frame to determine whether the cut-through data packet is corrupted, i.e., containing one or more errors.
Thus, a method for receiving a data frame comprising a data packet and having a first frame trailer, at a frame data receiver, according to an exemplary embodiment is illustrated in the flow chart of
Numerous variations of the afore-described exemplary embodiments are contemplated. The above-described exemplary embodiments are intended to be illustrative in all respects, rather than restrictive, of the present invention. Thus the present invention is capable of many variations in detailed implementation that can be derived from the description contained herein by a person skilled in the art. All such variations and modifications are considered to be within the scope and spirit of the present invention as defined by the following claims. No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, used herein, the article a is intended to include one or more items.
Patent | Priority | Assignee | Title |
10203896, | Oct 13 2015 | Samsung Electronics Co., Ltd. | Method operating universal flash storage (UFS) device, method operating UFS host, and method operating system including both |
11387940, | Mar 31 2018 | HUAWEI TECHNOLOGIES CO , LTD | Transmitting fragments of ethernet frame with indicating error occurring in ethernet frame |
11782636, | Sep 09 2021 | SK Hynix Inc. | Method for data processing of an interconnection protocol to support multiple lanes, controller, and storage device |
11799587, | Mar 31 2018 | Huawei Technologies Co., Ltd. | Transmitting fragments of ethernet frame with indicating error occurring in ethernet |
9075736, | Jan 07 2013 | Qualcomm Incorporated | Additional error protection for wireless transmission |
9152494, | Mar 15 2013 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Method and apparatus for data packet integrity checking in a processor |
9459953, | Jan 07 2013 | Qualcomm Incorporated | Additional error protection for wireless transmission |
9503222, | Dec 08 2011 | QUALCOMM TECHNOLOGIES, INC | Differential formatting between normal and retry data transmission |
Patent | Priority | Assignee | Title |
8001280, | Jul 19 2004 | International Business Machines Corporation | Collective network for computer structures |
20020087716, | |||
20080022184, | |||
20110219280, | |||
WO2000079359, | |||
WO2006020298, | |||
WO2009090255, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 26 2010 | RADULESCU, ANDREI | ST-Ericsson SA | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025946 | /0464 | |
Nov 26 2010 | RADULESCU, ANDREI | ST-ERICSSON B V | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025946 | /0464 | |
Dec 02 2010 | ST-Ericsson SA | (assignment on the face of the patent) | / | |||
Oct 03 2012 | ST-ERICSSON B V | ST-Ericsson SA | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029238 | /0061 | |
Feb 23 2015 | ST-Ericsson SA | ST-Ericsson SA, En Liquidation | STATUS CHANGE-ENTITY IN LIQUIDATION | 037739 | /0493 | |
Aug 31 2016 | ST-Ericsson SA, En Liquidation | OPTIS CIRCUIT TECHNOLOGY, LLC, | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048504 | /0519 | |
Nov 30 2018 | OPTIS CIRCUIT TECHNOLOGY, LLC, | TELEFONAKTIEBOLAGET L M ERICSSON PUBL | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048529 | /0510 |
Date | Maintenance Fee Events |
Aug 29 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 21 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 04 2024 | REM: Maintenance Fee Reminder Mailed. |
Date | Maintenance Schedule |
Mar 19 2016 | 4 years fee payment window open |
Sep 19 2016 | 6 months grace period start (w surcharge) |
Mar 19 2017 | patent expiry (for year 4) |
Mar 19 2019 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 19 2020 | 8 years fee payment window open |
Sep 19 2020 | 6 months grace period start (w surcharge) |
Mar 19 2021 | patent expiry (for year 8) |
Mar 19 2023 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 19 2024 | 12 years fee payment window open |
Sep 19 2024 | 6 months grace period start (w surcharge) |
Mar 19 2025 | patent expiry (for year 12) |
Mar 19 2027 | 2 years to revive unintentionally abandoned end. (for year 12) |