Subject: ixfr clarify draft

From: "Eric A. Hall" <[email-masked]>
Date: Sat, 22 Jul 2000 01:35:02 -0700

http://www.ietf.org/internet-drafts/draft-ietf-dnsext-ixfr-01.txt has a
bug in the example.

First the relevant portion of the spec:

3. Query Format

   The IXFR query packet format is the same as that of a normal DNS
   query, but with the query type being IXFR and the authority section
   containing the SOA record of client's version of the zone.

So the serial sent in the query is the KNOWN version of the zone on the
slave server?

Now the bug:

7. Example

   Given the following three generations of data with the current serial
   number of 3,

      example.domain.     IN SOA ns.example.domain. rt.example.domain. (
                                        1 600 600 3600000 604800)
                          IN NS  ns.example.domain.
      ns.example.domain.  IN A   10.0.0.1
      ftp.example.domain. IN A   10.0.1.1

   ftp.example.domain. is removed and www.example.domain. is added.

      example.domain.     IN SOA ns.example.domain. rt.example.domain. (
                                        2 600 600 3600000 604800)
                          IN NS  ns.example.domain.
      ns.example.domain.  IN A   10.0.0.1
      www.example.domain. IN A   10.0.1.2
                          IN A   10.0.2.1

   One of the IP addresses of www.example.domain. is changed.

      example.domain.     IN SOA ns.example.domain. rt.example.domain. (
                                        3 600 600 3600000 604800)
                          IN NS  ns.example.domain.
      ns.example.domain.  IN A   10.0.0.1
      www.example.domain. IN A   10.0.3.1
                          IN A   10.0.2.1

   The following IXFR query

                 +---------------------------------------------------+
      Header     | OPCODE=SQUERY                                     |
                 +---------------------------------------------------+
      Question   | QNAME=example.domain., QCLASS=IN, QTYPE=IXFR      |
                 +---------------------------------------------------+
      Answer     | <empty>                                           |
                 +---------------------------------------------------+
      Authority  | example.domain.     IN SOA serial=1               |
                 +---------------------------------------------------+
      Additional | <empty>                                           |
                 +---------------------------------------------------+

continuing...

                 +---------------------------------------------------+
      Header     | OPCODE=SQUERY, RESPONSE                           |
                 +---------------------------------------------------+
      Question   | QNAME=example.domain., QCLASS=IN, QTYPE=IXFR      |
                 +---------------------------------------------------+
      Answer     | example.domain.     IN SOA serial=3               |
                 | example.domain.     IN SOA serial=1               |
                 | ftp.example.domain. IN A   10.0.1.1               |
                 | example.domain.     IN SOA serial=2               |
                 | www.example.domain. IN A   10.0.1.2               |
                 | www.example.domain. IN A   10.0.2.1               |
                 | example.domain.     IN SOA serial=2               |
                 | www.example.domain. IN A   10.0.1.2               |
                 | example.domain.     IN SOA serial=3               |
                 | www.example.domain. IN A   10.0.3.1               |
                 | example.domain.     IN SOA serial=3               |
                 +---------------------------------------------------+
      Authority  | <empty>                                           |
                 +---------------------------------------------------+
      Additional | <empty>                                           |
                 +---------------------------------------------------+

In the examples shown above, the slave KNOWS serial 1, because that's
the version that it is reporting possesion of in the query. As such, it
already knows about ftp.example.domain.

If the client sends serial 1 in the query, the response should start at
serial 2.

The example should either have the client sending serial 0 in the query
(if the answer is correct), or the response should be as follows (if the
current query is correct):

                 +---------------------------------------------------+
      Answer     | example.domain.     IN SOA serial=3               |
                 | example.domain.     IN SOA serial=2               |
                 | www.example.domain. IN A   10.0.1.2               |
                 | www.example.domain. IN A   10.0.2.1               |
                   ........

Right?

-- 
Eric A. Hall                                      http://www.ehsco.com/
Internet Core Protocols        http://www.oreilly.com/catalog/coreprot/

to unsubscribe send a message to [email-masked] with
the word 'unsubscribe' in a single line as the message text body.

---

From: "Eric A. Hall" <[email-masked]>
Date: Sat, 22 Jul 2000 12:54:59 -0700

I was wrong:

> ftp.example.domain. is removed

Apologies for the distraction.

---

From: [email-masked]
Date: Mon, 24 Jul 2000 01:48:32 +1000

> So the serial sent in the query is the KNOWN version of the zone on the

	Yes.
>       example.domain.     IN SOA ns.example.domain. rt.example.domain. (

		Final SOA value.
>       Answer     | example.domain.     IN SOA serial=3               |

		Records to be deleted to get from 1 -> 2.
>                  | ftp.example.domain. IN A   10.0.1.1               |

		Records to be added to get from 1 -> 2.
>                  | www.example.domain. IN A   10.0.2.1               |

		Records to be deleted to get from 2 -> 3.
>                  | www.example.domain. IN A   10.0.1.2               |

		Records to be added to get from 2 -> 3.
>                  | www.example.domain. IN A   10.0.3.1               |

		End marker.
>                  | example.domain.     IN SOA serial=3               |

	Yes the slave knows about it but it being told to *delete* it.

> If the client sends serial 1 in the query, the response should start at

	No. Read Section 4 paragraph 3.

> current query is correct):

	No.
--
Mark Andrews, Nominum Inc.
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742                 INTERNET: [email-masked]