I always hear system administrators talk about waiting for DNS records to propagate "around the Internet" or "around the world" when they talk about making DNS changes. The fact of the matter is that my DNS records don't propagate to any other DNS servers except for the name servers that host my namespace (primary, secondary, tertiary). When I change a DNS record (A
, CNAME
, MX
, etc.) those changes are reflected immediately in my zone and they do not propagate anywhere. What people really mean when they talk about DNS record propagation is actually TTL caching. This article at Wikipedia explains it succinctly:
http://en.wikipedia.org/wiki/Domain_Name_System
Isn't the concept of DNS propagation a myth? So, why is it called "propagation"?
Myth? Kind of.
There are 2 aspects that people often confuse. If you make a change to your domain name with your domain name registrar, for example changing the name servers, that is pushed to the name servers for your TLD (.com, .ca, .fr, etc). That's where the propagation comes into play. In years past, that could take hours or even days waiting for the registrar to take the information you provided, push that to their deployment servers which would update the TLD root servers twice per day. That's improved rapidly over the years and often times changes made to your domain name take take effect nearly immediately.
On the other hand, if you make a change to your DNS zone, like adding an A record or an MX change, that should take 'up to' as long as the TTL setting to be updated everywhere. That's not really propagation though, it's caching. Microsoft DNS, for example, defaults to 1 hour TTL.
With the caching, if you happen to use the domain name just before making a change, and the TTL is 1 hour, then it will take an hour for it to be updated. However, if you haven't tested anything with the domain name just prior to the change, then your change will be immediate for you. (i.e. add a new A record that you haven't tested with yet, and it will take effect immediately).
So, nowadays almost all changes will take affect within an hour (or whatever your DNS TTL is set for). The only exceptions are if a DNS server doesn't honor the TTL (spammers often don't), or if your domain name registrar's servers aren't updating properly to the internet and you make a registrar level change. That isn't often though.
Yes-- people are talking about cached lookups timing-out of DNS server caches when they make these kinds of statements.
Unfortunately, some DNS servers will blithely ignore TTL values and cache records beyond the stated TTL for some period. I've seen ISP DNS servers hold onto cached records with very low TTLs (minutes) for up to 24 hours, and there are probably some really brain-damaged servers that hold them even longer.
They are "propagated" to DNS servers around the world in the same sense that ideas are propagated from one mind to another. When a query comes in, the local DNS cache needs to learn the information (if it's not cached already, or if it's cached but it's expired). So, the new value you just pushed to your server shows up on the map pretty much like gossip shows up on the blogs. Well, not exactly the same, but I think it's a neat analogy.
Not a myth, we see "speed of propagation" issues fairly frequently when changing MX records. It's always when we don't control the DNS and are working through a third party so we usually can't tell if the TTL is very long, it is being ignored by some DNS servers, the MX is cached by the SMTP server or some combination of all 3. Regardless, it's painful when it happens.
In the original DNS specification (RFC 1034/1035) there were two steps of cache invalidation that needed to take place, before a zone update was globally visible. Additionally to the already mentioned TTL expiry of caching resolvers around the world, you first needed to wait for (all) your secondary name server(s) to refresh the zone data from the primary's zone.
Only after DNS NOTIFY (RFC 1996) was specified in the year of 1996, there was a standard way of promptly notifying all authoritative name servers about zone changes.
So maybe the original phrase of "change propagation" was more appropriate at the time, since it was a two-step process.
I've only heard DNS propagation being spoken about with regard to hosting your .com website with a third party vendor and only because they cache the records for 48 hours. Any DNS servers that don't have the records cached, should have them immediately available.
If we look at the dictionary definition and etymology of "propagate," we can see that the word implies that by some act of a parent, a child is produced. In the case of DNS, when you have multiple servers authoritative for a particular zone, and you make a change on one server (the "parent" record), the record is propagated to the other servers (the "child" records) by a replication system that pushes changes out to partner servers.
Using the term propagate to describe how a DNS change is recognized by non-authoritative DNS servers is a misapplication of the term propagate, as it does not really fit the dictionary definition of the word. A more appropriate term would be discovery, because it's the action of DNS caching servers to discover the address resolution and remember it for the TTL.
So really, we're not waiting for the DNS change to propagate around the world, we're waiting for it to be discovered.
I wouldn't call it a myth. The TTL on the caching does have the side effect of stale records being held onto after the DNS entries have been updated on the authoritative DNS server.
So call it want you want but the end result is the same.
Also MX records are not cached so any changes to an MX records for a domain is instant.