Re: 15 reasons for using URLs/HTTP
Mark Baugher <[email protected]> Thu, 12 Feb 2004 13:10:00 -0800
| Newsgroups | gmane.ietf.asrg.smtpverify |
|---|---|
| Message-ID | <[email protected]> |
hello, I frankly don't get the point of this DNS vs. HTTP proposal, and I'll explain my confusion below. At 11:15 AM 2/12/2004, Hadmut Danisch wrote: >Hi, > >I received several comments to my proposal >to move from DNS to HTTP for fetching the authorization >records. This is where I am lost. Authorization is based on some kind of trust, i.e. "trust to do what?" For example, with DNS, we trust the binding of a name to an address is correct, and with reverse DNS we trust the binding of an address to a name. What do you propose to replace this with when you move from DNS, which is a global database system based on IANA assignments, to http, which is a client/server protocol? Mark >Some comment were interesting, some were not. > >However, I'd like to give a more explicit list of reasons for my >proposal. I'll split the proposal in two parts. First part is >using HTTP, second part is supporting dynamic authorization >(separate posting). > > >The proposal is to use DNS only to localize the webserver(s) >through A or SRV records. Optionally a TXT record can contain a >pattern for the URL, which is to be macro-expanded with >e.g. sender-address, receiver-address, message-ID, IP-Address, >time, receiver's country,... to form the URL. The resulting URL >could be a static one (without CGI parameters) or a CGI call. > >The reply might either be an authorization record like described >in RMX, LMAP, CallerID,... for interpretation at the receiving >MTA, or the request might be interpreted at the HTTP-Server >replying basically with "yes" or "no". > >The request can be sent through a regular web proxy. Caching >and expiry are controlled throught the common HTTP reply headers. > >Reasons for doing so: > >* An authorization record is a kind of resource. An URL > is a resource locator. These things fit together quite > well, where DNS is good for localizing a server, but not > to transport arbitrary (and possibly large) resources. > > >* Putting a resource in one piece on a web server is much, > much easier to do, less error prone, and much easier to > debug. > > Virtually anyone is able to put a file on a web server. > In contrast, most sysadmins I've seen are not really > experienced with DNS and unable to setup a zone file > properly on their own. > > >* Many domain owners do not have direct access to their > zone files. Very often the DNS stuff is done by the ISP, > any every change in the zone table requires an explicit > request at business hours, and maybe will cost money. > > Putting just the pointer in the zone table once allows > the domain owner to easily replace and update the record > or dynamic script immediately. > > When deploying this in a world wide scale, people will > need to update their records often in the beginning. > With DNS, this is difficult, since many secondary DNS > servers do not allow to be updated in short intervals. > > Even for those who are unable to write the authorization > record, cgi scripts could provide very easy user > interfaces. It's obvious that it is much easier to write a cgi > user interface which just puts the resulting file on a web > server, than modifying zone table files which are held and > maintained differently everywhere. > > > > >* I often found the DNS secondaries for a domain to be everything > but synchronous and to provide different versions of the zone > table. Newer versions of bind have a update notification mechanism, > but many ISPs don't accept this notification mechanism. So > very often there is no way of pushing new zone files. You'll > need to wait for the next SOA query, which can take hours or days. > > It could have severe impact on mail traffic if servers provide > different replies. > > >* HTTP delivers the record in one piece. No need to stitch any > TXT records together. > > What do you do if your DNS cache does not have all TXT records > for some reason? Of TXT records of a different zone file version? > You can't trigger refetching the records before expiry. If the > DNS cache ever goes into such a state, it will have unusable records > until expiry (maybe several days). > > >* DNS entries have a size limit of 512 Byte. They can grow bigger, > but need to transmitted over TCP then. Many DNS servers are not > open to TCP queries. At least one of the drafts proposed to > split the records into smaller parts, attach them to pseudo > subdomains and reference them from a master domain. > > That's more the error prone and circuitous, you'll need to > collect information from several domains and hope their > consistent. > > In contrast, HTTP is a single fetch, and that's it. > > >* HTTP supports HTTPS. > >* Since HTTP can transport any object and additionally informs > about the object type, the authorization record can be > cryptographically signed. Would be much more difficult with DNS > and make the DNS reply bigger. > >* Supports dynamically generated authorization records. > DNS can't. > >* Can completely hide the domain's relay structure and internal > authorization procedures: Instead of interpreting an authorization > record at the MTA, the MTA could send a query > (URL with CGI parameters) to the server and the server simply > replies "allowed" or "not allowed". > >* It's not more expensive or complex than the current DNS based > proposals: > > With DNS you need to send a UDP query to your DNS server, which > itself sends a UDP query to the domain's authoritative server. > Reply is too large, so a second request over TCP is needed. > For the same reason, you have to send a second TCP request to your > DNS server. If the authorization record is split into several > subdomains, you'll need more traffic. > > Makes about 2 UDP and 2 TCP queries. > > The HTTP approach requires to localize the Web server: > 1 UDP query to your DNS server, and another one from it to the > authoritative Server. Then you'll have to ask your web proxy, > and it will ask the domain's web server for the record. > > Again, 2 UDP and 2 TCP queries. But: No stitching, no > inconsistencies, no missing records. > > >* No need to use abreviations and compressed format in the > authorization record. Can easily support different record > types through the mime type mechanism and allows to > easily use formats like XML. > >* Easily allows to pass further information as part of > the authorization record (e.g. in XML), like > > - contact address for abuse > - legislation the sender resides in > - is the IP address an dial-up address > > >* With a file put on a HTTP server and a file format like XML > it is much easier to extend the record in future and to > add new record types while keeping backward compatibility. > > With DNS, you need to update the method to encode the record > into DNS records every time. > > >* A plaintext record such as XML in a file is much easier to > read. No dirty tricks like including line numbers in TXT entries > or encoding integer numbers as the lower part of an A record, > which are not human readable without detailed knowledge. > > >Makes 15 good reasons. > > >Hadmut > > > > > > > > > > >