DPI Application Control Blocking Rules cause huge delays for clients by failing to RST connections
Application Control Blocking Rules causes huge delays for clients, because instead of rejecting blocked traffic with a RST packet, they instead drop / black-hole the traffic. This causes clients to wait the full connection timeout for a connection that will never come. This causes one or multiple hang-ups of 30s for clients.
For example, consider a rule blocking ads for a hypothetical web page load. The original, unblocked page load was as follows:
- Request page: 2 seconds
- Request ad: 2 seconds
- Request ad: 2 seconds
- Request page content: 2 second
Total Page Load time: 8 seconds
Now if you enable an Omada Application Control Blocking Rule for ads, in it's current form, where blocked traffic is dropped / black-holed:
- Request page: 2 seconds
- Request ad: 30 second timeout for dropped traffic
- Request ad: 30 second timeout for dropped traffic
- Request page content: 2 second
Total Page Load time: 64 seconds
Omada Application Control has made the client's experience 8x times slower!!
If Application Control worked correctly, it would reject blocked TCP connection attempts by returning a RST packet to the client. This would cause the client to give immediately and move on, e.g. for or web page load:
- Request page: 2 seconds
- Request ad: 0 seconds (blocked with RST)
- Request ad: 0 seconds (blocked with RST)
- Request page content: 2 second
Total Page Load time: 4 seconds
If Application Control worked correctly it would be a benefit to the client and site operator by speeding up performance (8 secs -> 4 secs). Instead, in it's current form it makes everything slow for the clients / users (8 secs -> 64 secs)!
In my opinion the correct behavior for Application Control for internal clients is to return a RST packet to the client.
If this is not always appropriate for all rules, my alternative suggestion is to add a "Block with RST" option to Block Rules, e.g. see mock-up below