Why don't browser DNS caches mitigate DDOS attacks on DNS providers?
You are correct that the DNS cache would mitigate against a nameserver being unavailable. It is extremely common to have a TTL of 5 minutes or lower. Hence, 5 minutes after the DDOS attack brought down Dyn, your cache would've been invalid and you wouldn't have been able to hit github, etc.
A small design change to DNS caches could make a big difference. Most DNS caches remove an entry when the TTL expires. A cache could instead keep the entry, but mark it as expired. If a query comes in for an expired entry, the cache would first try to resolve the name upstream, and if that fails, return the expired entry. I expect this is technically in violation of the DNS protocol, but still a better failure behaviour.
However, I don't expect to see this happen. The impact of DNS servers being down would still be significant - all the sites you don't have in your cache. The focus will remain on keeping the DNS infrastructure operational.
Update: @MatthieuM has pointed out that EdgeDNS does this.
@Shackledtodesk is correct (+1), the browser cache is kept for a short time. Ironically enough some of the best references about this fact have been published by Dyn:
A simple program I wrote to query the top 1000 websites (according to Alexa) shows 212 hits with a TTL value of 300 (5 mins), 192 hits with a TTL of 3600 (1 hr), 116 hits with a TTL of 600 (10 mins) and 79 hits with a TTL of 86400. The rest of the results had hits in the 50s and less, ranging anywhere from a TTL of 5 (1 hit) to a TTL of 864000 (1 hit).
This is a quote from Ben Anderson, a researcher and technical writer at Dyn.
Looking at those results you can see that over a small amount if time your browser is invalidating the DNS cache. And your DNS resolution starts to fail.
Reference
- Why Web Browser DNS Caching Can Be A Bad Thing
PS: To add insult to injury, the linked article from Dyn argues that the browser DNS cache is a bad thing.