Timestamps are often included in data that is transmitted over a network. For example, timestamps are inserted in packets or frames transmitted over a network. The timestamps are used by network protocols and by test devices to measure one-way latency, two-way latency, and other metrics of network performance. Accordingly, timestamps inserted in transmitted data or packets should accurately reflect the time that the data or packets are transmitted from a transmitting device or at least have a consistent amount of delay from the time that the timestamps are inserted in the packets or data and the time that the packets or data leave the transmitting device.
One problem associated with inserting timestamps in transmitted data is the varying amounts of latency that can occur between the point where a timestamp is inserted into the transmit data stream and the point where the packet or other data leaves the transmitting device. For example, a timestamp may be inserted into a transmit data stream at a point in the transmit pipeline that is prior to physical component sublayer (PCS) and forward error correction (FEC) processing blocks. PCS and forward error correction processing blocks may introduce variable amounts of delay in successive packets and especially between successive startups of a card or device that is transmitting data. Such variable latency or delay can be caused by clock domain crossings within PCS and/or FEC processing blocks. Such clock domain crossings can occur when data is read into a register in one clock domain and transmitted out of the register on another clock domain.
The variable latency in successive packet transmissions from the point where packets are transmitted means that timestamps may not be consistent across packets. This lack of consistency is magnified in high-speed networks, such as 100 GB Ethernet networks, where clock periods can be as short as 6.7 nanoseconds. In such a system, a 10 nanosecond variance in transmit timestamp latency caused by cross domain crossings or other asynchronous effects results in excessive jitter in the time between timestamp insertion and packet transmission.
Accordingly, there exists a need for methods, systems, and computer readable media for transmit timestamp autocalibration.