Guidelines for testing the ECN implementation in a router: These are the things that I would test for if I was to test an ECN implementation in a router. This uses the following terminology for the four ECN codepoints in the ECN field: 0 0 Not-ECT 0 1 ECT(1) 1 0 ECT(0) 1 1 CE * Verify that CE is never set in an outgoing IP packet unless ECT(0) or ECT(1) was set in the incoming packet. * Verify the CE is in fact sometimes set, if packets are ECN-capable and there is a moderate level of congestion. (With no congestion, no packets will be dropped or marked, and with very high congestion, packets will be dropped instead of marked. It is not a violation of any standard *never* to set CE, but in this case the router could not be said to be ECN-capable...) * Verify that the router never changes the ECN field in any way except from ECT(*) to CE. * Verify that the router responds the same to ECT(1) as it does to ECT(0). * Verify that the router only sets CE in ECN-capable packets if it in fact would have dropped those packets if they weren't ECN-capable. I can't think of anything else that it would be essential to verify. One could also check for broken behavior (e.g., dropping packets *because* the ECN field is non-zero, when the packets would not have been dropped otherwise, would be clearly broken), but there are so many possibilities for broken behavior that I can't imagine checking for all of them. Verifying that someone's active queue management mechanism is reasonable is another question, that I am not attempting to answer here.