What is the difference between store-and-forward and cut-through switching?
Show the answer
Say this first
Store-and-forward receives the whole frame, checks the FCS, then sends it, so corrupt frames die at the first switch and latency grows with frame size. Cut-through starts sending once it has read the destination (and usually the VLAN tag), which cuts latency to well under a microsecond on modern ASICs, but it forwards corrupt frames. Catalyst campus switches are store-and-forward; many low-latency data center switches support cut-through.
Go deeper
The latency math
A store-and-forward switch must receive the full frame before sending. A 1500-byte frame at 1 Gbps takes 1500 x 8 / 10^9 = 12 microseconds to arrive; at 10 Gbps it takes 1.2 microseconds. That cost is paid at every hop. For a campus user it is noise; for trading, HPC and some storage it matters.
When cut-through falls back
- The egress port is busy, so the frame has to be queued anyway.
- The egress port is faster than the ingress port (10G in, 40G out). Starting early would run out of data mid-frame, so the switch buffers the whole frame first.
Error behavior
A cut-through switch has already sent most of a frame when it sees a bad FCS. It cannot drop it, so it ends the frame with a deliberately invalid FCS (Nexus calls this stomping). The bad frame is then counted as a CRC error on every hop downstream, and you have to trace it back to the port where it starts.
Fragment-free
A historic middle ground: wait for the first 64 bytes, which covers a collision fragment on half-duplex Ethernet, then cut through.
They will ask next
In a cut-through fabric you see CRC errors on many switches. How do you find the bad link?
Find the port where errors originate. On Nexus, compare the CRC counter with the stomped CRC counter: if they are equal, the errors came from upstream; if CRC errors exceed stomped ones, the local link or optic is the source. Then walk upstream until you find it.
Traps
- Saying cut-through checks the FCS before forwarding. It cannot; the frame is already leaving.