As I understand outgoing packets of any transport protocol can be prioritised, but of TCP, UDP, and SCTP, only TCP and SCTP have congestion control allowing their incoming packets to be prioritised as well.
UDP doesn't have any congestion control, so there is no way to tell the source machine of incoming UDP packets to slow down sending them.
So my question is, is it possible to cut UDP connections just before they start to affect the quality of higher-priority connections? If so, what's the best way of setting this up on OpenWrt?
Ideally, downlink congestion should be managed using congestion control when possible, and for UDP connections and connections ignoring congestion control, fallback to rejecting incoming packets for problematic connections for a configurable time (I'd guess a few seconds).
The congestion control of SCTP and TCP that I'm referring to is called Explicit Congestion Notification (ECN). I've since realised that it is quite possible that an application ignores or does not properly implement ECN support, so I'd like to extend this question to anything that fails to respond to ECN, which includes UDP. So if my router tells a remote host to “slow down” (via ECN), and that host continues to pump too much data at my ISP, I then want to reject all incoming communication from that host, which, unless it is a DOS attack, should result in a ‘connection refused’ ICMP error and cut the connection. If this isn't enough, then additionally rejecting outbound packets to the host should at least cause a timeout error.