Congestion Window Reduced
TCP CWR (Congestion Window Reduced, bit 0) is set by a sender to acknowledge that it received an ECE flag and has reduced its congestion window. Part of Explicit Congestion Notification (ECN, RFC 3168). CWR tells the receiver it can stop sending ECE flags for this congestion event.
Abbreviation
CWR
Bit Position
0
tcpdump
[W]
Standard
RFC 3168
Description
CWR is part of the Explicit Congestion Notification (ECN) mechanism defined in RFC 3168. ECN allows routers to signal congestion by marking packets (rather than dropping them) using the IP ECN field. When a receiver gets an ECN-marked packet, it sets the ECE flag in its next ACK. The sender, upon receiving an ACK with ECE set, must reduce its congestion window and set CWR in its next segment to acknowledge the action.
The CWR-ECE feedback loop allows congestion to be managed without packet loss. Traditional TCP detects congestion only when packets are lost; ECN allows earlier congestion detection before the queue overflows and drops packets.
CWR and ECE flags require both endpoints to negotiate ECN support during the TCP handshake: the client sets ECE+CWR in its SYN, the server sets ECE in its SYN-ACK to confirm support. Without this negotiation, neither flag is used.
Key Flag Combinations
| Flags | Meaning |
|---|---|
| CWR | Sender reduced congestion window in response to ECE – normal ECN operation |
| CWR+ECE | Seen in SYN only – client requesting ECN negotiation |
When You See This Flag
- –ECN-capable router marked packet with CE bit due to queue buildup
- –Receiver set ECE in ACK, sender reducing cwnd and acknowledging with CWR
- –ECN congestion control operating normally on a network with ECN-capable routers