DNS doesn't “propagate”
jvns.ca
jvns.ca
IME when you make a change to your name servers at your registrar, you see that change updated in the TLD's servers pretty quickly (a few minutes). So we're basically down to whatever time your own infrastructure takes to update, plus TTL timeouts of recursive resolvers (and cached failures), as the post covers. You can follow such progress by using dig/nslookup on the authoritative servers directly (your own and/or the TLD's, depending what's updating).
"Propagate" means "spread out from a seed location to other locations."
Which is a valid description of the effect of what happens with DNS, assuming the changes are also being requested by end clients. It's just that we silly hoomanz connect together an effect (propagation) with the most obvious mechanism (it gets pushed from the start location to other locations), to the point that we mentally equate the term 'propagation' with that mechanism.
Come to think of it, even in the plant world the term "propagation" is kind of backwards. Something that propagates from cuttings relies on an external force to rip off a chunk and deposit it elsewhere. The plant doesn't throw its own severed appendage (well, except in some limited cases.) Even for seeds, dandelions rely on wind to pull the pretty fluffy bits off and deposit them elsewhere. It's just that the false equivalence works better in the plant world because it's new stuff and—as with DNS—new stuff doesn't have the problematic state of old stale cache entries lying around. And that's where the flawed mental model results in a difference in observed behavior.
(Yeah, Evans's explanation was better. And she pointed me to the 8.8.8.8 force flush page, which is awesome.)
> once it is mature and dry, detaches from its root or stem and rolls due to the force of the wind.
> Apart from its primary vascular system and roots, the tissues of the tumbleweed structure are dead
https://homeguides.sfgate.com/examples-plants-disperse-seeds...
But I removed the example because at that point I was talking about parts of plants rather than seeds. I don't actually know of an example of a plant hurling away a non-seed part of itself for budding, though I'd be surprised if it doesn't exist.
But can you imagine during a strong windstorm, how much farther these seeds would go? Especially fall windstorms. The wind is doing 20mph, and then these seeds go flying up in the air...
Neat.
People are just being too pedantic and nerdy of the use of the term. Of course one word cannot explain the technical aspect of how it actually works, that's why we use the term. It describes the general principle of how it works.
Google's 8.8.8.8: https://developers.google.com/speed/public-dns/cache
Cloudflare's 1.1.1.1: https://1.1.1.1/purge-cache/
Invalidating the cache at one doesn't invalidate the cache downstream of them if they already looked the record up recently. But it does mean that anyone who hadn't looked up the record will get the correct result straight away.
2) What if we purge 1.1.1.1 at 1.1.1.1 ?
3) What if we purge both about the other at the same time?
4) What if we purge aaaaaaa!
So much time...so many ideas...are they sure they will end up well?
And it's not like they need to hold on to any state to work. If you had access you could purge everything and have them start fresh from the root servers, and it would work fine. (As long as the load spike doesn't make it decide to do something dumb, of course.)
8.8.8.8 isn't a DNS name, it's an IP address. There's nothing to purge.
dns.google from dns.google
one.one.one.one from one.one.one.one
dns.google and one.one.one.one
The URL above is the documentation of the feature, which happens to also embed it.
It's like correcting someone for saying lightning struck something on the ground, even though the current starts on the ground and "strikes"up at the sky. Even though the ground is "pushing" the lighting bolt up to the sky, it's the conditions of the sky that led to the ground push the current upwards.
Actual moving positive charges (e.g. ions in solution) do move in the direction of "current".
Why do slow-mo lightning shots clearly show the opposite then? Unless you're referring to "conventional current", which is about as pedantic as you can get given that that's an obsolete and incorrect school of thought based around flow of positive charges before electrons were discovered.
For the average non-technical user, it's fine to use the "propagation" explanation. It's easy to understand, and it does describe the result the user sees, even if it gets the mechanism wrong. But the propagation explanation has become so widespread and ingrained that technical people who need to know the correct explanation often don't, and don't even realize that they've had the wrong information for years.
A single word isn't going to tell you exactly how something so technical works, but it is the most correct term to use to describe what is occurring.
It is completely pedantic.
I think propagation it's highly descriptive. You make a change and then you wait for various DNS servers to acknowledge that change (once cached records expire).
I'd be that person. "Propagate" strongly implies a push model to me; parent-to-child reproduction like an organism.
And, yes, I'd personally consider word-of-mouth to be largely push-based. But I concede it could just as well be people asking (perhaps too many) questions.
This is the third definition the search engine I use returns for the term, and by it you are indeed correct. The direction, and method are unspecified.
In other words, the term "propagation" is quite likely not the source of people's confusion that the original blog post thinks it is. It's great that they investigated for themselves and figured out what's going on, and wrote up an explanation of it. That's useful, but note the section of the post 'okay, DNS records actually do “propagate”.'. By taking issue with the term "propagate" they've just muddied the waters yet again.
Sadly, the author hasn’t even realised their own flawed assumption, despite contributing plenty of words sledging those of others. The hint, from the text, is how you can practically hear the agitated airquotes around propagate.
What's more, the DNS does conventionally distribute zone updates via notification from master to replica. Despite its relevancy this mechanism is not discussed; in fact the word zone does not appear at all in this article, which is hoist with its own petard in presenting a half-baked model of the DNS.
Sometimes on HN or forums people like to take the words we use to simplify and say "it doesn't really do that" then have some philosophical story behind it all, that is just too pedantic. Similar to how I saw a conversation here the other day saying that "homeless" isn't the correct term anymore for someone who is without a home.
Too pedantic IMO.
But for technical people, the "propagation" explanation is actively harmful, because they might actually need to understand the mechanism of caching in order to do their work properly. And any technical person should be able to quickly grasp the idea of cache expiration being the reason why different clients can still see the old value for a time.
I don't think pedantry comes into the equation for this at all.
Using the term propagate is fine, because what is it to propagate anyway? and because of that, the devils' in the detail after all. Of course in technical terms the way that the records propagate is via the updating of cached records. But that is the mechanism in which DNS propagates.
You said it yourself, it's a fine to non-technical users. But of course, one single word cannot encapsulate how something actually works at a technical level.
We're being pedantic about how the word applies to how DNS records work, but it is the best option. Given that the author couldn't suggest an alternative, I feel that we're being too technical and nerdy of the use of the word.
Heck, Rackspace, Cloudflare and ICANN all use the the term propagate. ICANN even use it in their functional requirements.
This shows a fundamental misunderstanding. It has nothing to do with push or pull. It also has nothing to do with when the information was propagated - before the request had been made or afterwards.
When you attempt to resolve a website's IP address from a URL, that is almost never done by sending a request to the authoritative server that owns that particular bit of information but to a caching resolver that requires the data gets propagated from the other server.
Cached records mean the next request will result in a cache miss, and so a higher level request up the chain.
When that happens, a record is copied down the chain. Regardless of the mechanism, the data is now propagating.
> DNS is pull, not push
Except for when it is.... If you increment the serial number of a zonefile on your authoritative ns1 and reload the zone, it will push it to any slaves that are configured and set as authoritative for the zone. Very standard IXFR config.
If we are referring to third parties' caching recursive resolvers updating a zone, then yes, it absolutely is pull not push.
Otherwise, this is just a simple misunderstanding about which systems are clients in the relationship, which I suppose is less fun to write a blog about.
But "it" here doesn't include every DNS server, right? Because, e.g., djbdns definitely doesn't do any pushing when you rebuild the database. And PowerDNS has "native replication" mode where there's no pushing done by the server on changes.
On this, though: "new DNS records are actually available instantly"
Depends on who is serving your DNS records and what sort of interface they give you to make updates. There are many where your update makes an update in a separate database and the actual zone file updates are batched every X minutes.
And on this: In the 90s, maybe DNS records really did take multiple hours to get “propagated” and pushed out, and so it was more accurate to use the term “propagation” to describe why you needed to wait?
Things aren't technically substantially different than they used to be. People probably used longer TTL values, but that would be by choice.
Sure some places would take a little time for zone transfers within their internal NS servers, but primarily your delay was always the remote cache and TTL adherence
Technically, a distributed database/cache at DNS scale, pure push-based invalidation is just not practical.
I wrote a post about DNS invalidation earlier https://blog.the-pans.com/dns/.
I don't think so? Using the same example, I would say news propagates, and there is no specific topology it spreads through.
2. As with the OP, the content marketing piece referenced fails to discuss the DNS beyond resolver activity, and thereby presents the same painfully half-baked construction of the system.
I've always used the term "propagate" even though I understand it to be a pull system due to the existence of the TTL. Either way I hold no association between pull/push and "propagate" in my mind either.
Maybe the author and their friend have some bias towards this definition, perhaps due to technical contexts they have most used that word within.
This isn't quite correct - NXDOMAIN responses can be cached, so if you create a new record, and you've already queried for it, you might get a cached response.
In BIND, this is configured as a NXDOMAIN cache on the SOA record for the zone, but that's an implementation detail.
This post brought to you by mavengang.
Shameless plug: To view your DNS 'propagation' (or whatever you want to call it) in 'realtime' check out dug!
Also googled this out of curiosity: https://www.a2hosting.com/kb/getting-started-guide/internet-... (How to clear the DNS cache on your computer: win, osx, linux)
dig @8.8.8.8 +short aaaa mydomain.comThere was a time when computing resources were precious. Kids these days, I tell ya.
Not sure also, but in the 00s hosting/registrar control panels were notoriously bad at updating their server configs for some reason. It was not uncommon to wait ~30-60 minutes for the changes to be pushed to the authoritative servers and my guess is that for older IT folks that's where all 'propagation' expectations come from.
The fiction (useful or otherwise) seems to be the use of propagation to explain why updates don't appear immediately. One doesn't follow from the other, as in, you'll always get the most recent information from your source . . . but have you considered TTLs?
A useful fiction is always a stepping stone to a more fulsome understanding.
All in all, a good article that takes another step past the fiction of propagate.
Worse yet, now all DNS software is the same. Some caching dns servers still do the query every time. It's just that you answer with cache so it's fast. Some DNS servers will fail once and then near immediately be fixed.
Since it's such a complicated subject. It's better to generalize and simplify as 'propagate'.
How does this process work? Do the registrars push to the TLDs? Or do the TLDs pull from the registrars? Is there some other protocol / infrastructure besides DNS for managing this kind of updates?
Behind the scenes, the registry will update their nameservers to reflect the updated nameserver list for the domain.
Registries don't pull from registrars.
I assume he's talking about DNS notifications?
If so, I wouldn't say they're only for big providers. It's useful for anyone who runs more than one DNS server (and even Microsoft DNS does this, I think).
The basic idea being that you run a single 'master' DNS server and then send 'notifications' to the other authoritative DNS servers (the situations I'm used to, the master is 'hidden' and only the 'child' DNS servers are publicly accessible.
_BUT_, even in this case, the notifies are 'pushed', but AFAIK, the 'child' servers still 'pull' the zone from the master.
Some suggestions for verbs:
• Cache flush wait
• Cache out (sounds too much like “cash out”)
• Soft whisper / cache whisper
• TTL cascade
Is that really true? I have heard this so often but never seen it in reality, so I tend to take this as an urban legend.
Also, when I worked at reddit I had to change the IP for reddit.com in 2007. I set up a cache on the old IP to redirect any old traffic. Also, a week before the switch I had pulled the TTL down to 5 seconds.
After I made the change, only 40% of the traffic shifted after a minute. That means at least 60% of the people on the internet were ignoring my 5 second TTL if not more.
After a day 10% of the traffic was still going to the old IP. It took more than 48 hours for 99% of the traffic to switch. And after a month I still had about 20 hosts hitting the old IP (probably scripts that were hard coded with the old IP).
At Netflix we had similar issues with lots of stragglers when we changed IPs.
So yeah, a lot of resolvers ignore TTL.
And I'm really curious which other ISPs are running such setups that you had to deal with and for what reason they do so.
I don't really know the cause of the other problems, but I'm guessing it was mostly browser and OS caching and not ISP caching.
https://labs.ripe.net/author/giovane_moura/dns-ttl-violation...
Seems that increased TTL in resolvers is still a thing in 2021 but it's a bit over-estimated. IMO it should not be considered when changing DNS. May their customers complain about the broken DNS every time a change is not "propagated" (sic!) there.
Article is blaming a misconception on the terminology. Terminology is correct. DNS actually uses both push and pull for different parts of propagation, in fact.
And FWIW, DNS absolutely propagates in a push fashion in circumstances where people are running large DNS installations with multiple authoritative servers.
And when people say "the new data needs to propagate" they usually mean "all the old versions of the data need to be replaced with the updated version". Which is exactly the what "waiting for cached records to expire" means. I don't really see the point of this article, besides to express some sort of overly pedantic characterization of push vs pull event propagation techniques. Did anyone really think that every time someone makes a DNS update it is broadcasted to every DNS resolver on the internet?
Edit in response to general feedback: The article should be titled "DNS doesn't push". The DNS consistency process satisfies any reasonable definition of "propagation" so claiming "DNS doesn't propagate" is confusing at best and misleading clickbait at worst.
It's not what a user thinks of, but in terms of I updated a record and have to wait for it to be "everywhere" it's entirely part of the change latency to the end user and outside the scope of caching and TTLs being honored.
In the case of DNS, the information does emanate from the upstream server, but only upon request, like the ideas in the book.
I don't think anyone would phrase it that way, no. "Propaganda" generally involves things like mass leaflet drops, messages blasted out of public address systems, that sort of thing.
Absolutely. All of these, especially to an average person, imply the data takes a while to be pushed out "across the internet".
GoDaddy [1]: "but it can take up to 48 hours for everything to propagate across the Internet"
Namecheap [2]: "it is a period of time ISP (Internet service provider) nodes across the world take to update their caches with the new DNS information of your domain."
AWS [3]: "DNS propagation is the amount of time that it takes for DNS changes to be updated across the internet"
[1] https://www.godaddy.com/help/what-factors-affect-dns-propaga...
[2] https://www.namecheap.com/support/knowledgebase/article.aspx...
[3] https://aws.amazon.com/premiumsupport/knowledge-center/route...
I responded because I felt the “Did anyone really think” comment was arrogant and dismissive. I provided examples where a layperson could easily reach that conclusion.
This behavior might indeed apply to many services with a global DNS footprint (multi-continent redundant authoritative DNS servers), but that's even more pedantic and, in the end, we just want the DNS update be realized by all users in a respectable amount of time.
Yes. Absolutely. Well, not every DNS resolver on the internet, but at least every one that has it cached.
I think it's partly because push-propagation does happen at very limited parts of the picture, when updating master replicas.
It's not pedantic, because there is an observable, human-significant behavioral difference: if you update a DNS record and then test it before the TTL has expired, there's a good chance you'll already see the update. And a good chance that then testing immediately from somewhere else, you won't see the update.
With the mental push model of DNS propagation, you have to reach for weird explanations for this behavior -- "oh, I guess something is still working through its list of servers to push this to" or something equally dubious. With the stale cache entry mental model, it's just: "it wasn't in the cache".
I mean, considering what the source is (jvns.ca is a blog that is fairly well known around these parts to talk about technical content), and the usage of quotes in the title, one should hopefully infer that there's going to be some level of pedantry in this post.
I share the sentiment that for the average joe, a push vs pull distinction is fairly irrelevant, and that for the more networking-savvy, this is all more or less old news. This feels like the type of post that is targeted at the 10,000[0] people in between who may not realize that their mental model of DNS propagation may not be correct (and they'd appreciate being nudged about it)