DNS Push Notifications
rfc-editor.org
rfc-editor.org
I can't help but hear the skepticism in "asserted"!
Also, fun that Apple want to move a service from UDP to TCP at a time when Google are trying to move another service from TCP to UDP.
That reduction in required storage could be significant. User space connection tracking might also use less memory than kernel connection tracking, depending on how many non-essential things each implementation tracks. Colocation of the connection tracking data and the application level data might be beneficial as well.
I didn't read the prior RFCs to see what kind of hoops they jumped to make the connections long lived though, my guess is TCP session timeouts for NAT boxes are longer than UDP, and there are more networks that disallow UDP than TCP, so TCP is probably a good idea from that standpoint.
$ (for x in `seq 1 500`; do echo -n "$x "; host -v MYSECRETDOMAIN. 8.8.8.8 2>&1 |grep SOA; done) > data
$ awk '($3 == 899) { print }' data | wc -l
34
That suggests there are about 34 machines near London. Neat!I repeated the test with:
$ (for x in `seq 1 500`; do echo -n "$x "; host -v MYSECRETDOMAIN. 8.8.4.4 2>&1 |grep SOA; done) > data2
$ awk '($3 == 899) { print }' data2 | wc -l
3
which suggests the IP addresses share infrastructure (at least near London!)You can try this sort of thing with other providers to try and map out their internal infrastructure. (1.1.1.1/cloudflare has around 22 machines near me; quad9 has 16; opendns also has 16; verisign has 31; etc).
One thing I tried was making an ad that recorded the cookie id in the impression tracker so I could record the connecting IP addresses in our DNS server. I could then target users who have a particular network provider (or use a particular DNS provider) which could be useful if I want a large number of users who (effectively) ignore DNS caches.
Perhaps Route 53 and Google have setup a system to notify each other when a record changes so they can then request a transfer and have near zero propagation delay.
Note that this notify system is not the same as that proposed in the RFC. This notify system is configured by the admin and is meant to keep secondary servers updated with changes in the primary server, not for general notification of changes to anyone who is interested.
Maybe things have changed, which would be nice. Nowadays I'm on DigitalOcean and they don't let you control the TTL on the SOA record, so you have to be even more careful than with Amazon. Very annoying.
https://datatracker.ietf.org/doc/html/draft-wkumari-dnsop-ha...
Didn't give it a detailed read, but this looks like a more granular proposal, an example given being printer discovery.
2. A standard nonzero TTL is otherwise not very meaningful as long as subscription is active. Section 6.3.1 explains the TTL field of a PUSH message clearly: https://www.rfc-editor.org/rfc/rfc8765.html#section-6.3.1
But this mechanism does not replace normal DNS, only supplements it, so no, you probably still need to set TTL.
TTLs could be kept quite long, though, since they'd only be used when push updates are not occurring.
Push notifications occur when the primary is HUP'd or restarted, telling the secondaries to pull fresh zones so that everybody's is known to have the same serial. After this the secondaries poll the primary every 'refesh' seconds to check for a newer copy of the zone.
Take a look at: https://www.rfc-editor.org/rfc/rfc8765.html#name-push-messag...
That section contains most of the RRset remove notifications.
As IP addresses of home routers change often enough, this might be a use case for DNS push. Access has to work across work across carrier-grade NAT though, so they might still need more than DNS.
My understanding of UDP is it's supposed to be for heavy, lossy traffic where late traffic is pointless or harmful (like video streaming frames, if your frame is late better toss it out than keep it). But I kind of want my notifications even if they're late. I think I'm missing something in my understanding. I was thinking if you can stream using DNS, and cut out something like Kafka, that might be a big deal, but on second thought it doesn't make sense because DNS is more about service discovery than it is about piping load; you want an alias to a server that does the heavy lifting.
Brain messy today.
I don't see any mention of DNS over HTTPS or DNS over QUIC.
Could this work with either of those?
Change my mind.
But it should also register for push notifications of config changes so it can get them faster.
It should also renew its subscription if it finds that it missed an update during poling.
I agree that push is better overall, but… tradeoffs