[232] in Hesiod
Re: huge printcap entries
daemon@ATHENA.MIT.EDU (Randall S. Winchester)
Fri Jul 29 16:30:47 1994
From: "Randall S. Winchester" <rsw@Glue.umd.edu>
Date: Fri, 29 Jul 1994 16:23:50 -0400
To: dean@hi.com, greg@duke.CS.UNLV.EDU
Cc: bind-workers@vix.com, db74+@andrew.cmu.edu, hesiod@MIT.EDU,
walsh@athena.tay.dec.com
> From greg@duke.CS.UNLV.EDU Fri Jul 29 15:58:32 1994
> To: dean@hi.com
> Cc: Dan Walsh <walsh@athena.tay.dec.com>,
> "Derrick J. Brashear" <db74+@andrew.cmu.edu>, hesiod@MIT.EDU,
> bind-workers@vix.com
> Subject: Re: huge printcap entries
> From: Greg Wohletz <greg@duke.CS.UNLV.EDU>
>
> >I think Derrick already has equivalent changes to is hesiod
> >library to do VC and large responses.
> >
> >I'm not quite sure what the change to ns_main does and I haven't had time to
> >look at it... However, with the changes I recently posted, I did not have
> >problems with Bind 4.8.3 actually retrieving multiple record responses as
> >large as 2k, and they will work up to 8K. I think in my next round, I
> >will make the buffer dynamically allocated.
> >
> >I think Derricks current problem is related to loading individual TXT records
> >that are each greater than 256 bytes of text.
> >
>
> Hmm, well the problem I'm having is with multiple record responces.
> For instance test.cluster.ns.unlv.edu has 20 TXT records, however when
> I try to look them up via hesinfo (with Derricks mods to the hesiod
> code) I get:
>
> test string 5
> test string 6
> test string 7
> test string 8
> test string 9
> test string 10
> test string 11
> test string 112
> test string 13
> test string 14
> test string 15
> test string 16
> test string 17
> test string 18
> test string 19
> test string 20
> test string 1
>
>
> strings 2-4 are missing (the strange order of the strings is due to
> the round robin code in named which I think I'm going to turn off
> since I can't think of any reason I need it, and it can be
> annoying...). If you look at the debug output from the named you will
> see that magic-sam.cs.unlv.edu (the host hesinfo was run on) gets a
> truncated responce back from one of the authoritative servers
> (eddie.CS.UNLV.EDU in this case) which it then passes on to hesinfo
> (courtesy of the RES_IGNTC flag that the hesiod lib sets):
>
> Debug turned ON, Level 1
> Debug turned ON, Level 2
> Debug turned ON, Level 3
> Debug turned ON, Level 4
> TCP connection from [127.0.0.1].1247 (fd 8)
> streamq = 0x1001ebc0
> ns_req(from=[127.0.0.1].1247)
> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1
> ;; flags: rd; Ques: 1, Ans: 0, Auth: 0, Addit: 0
> ;; QUESTIONS:
> ;; test.cluster.ns.UNLV.EDU, type = TXT, class = HS
>
> req: nlookup(test.cluster.ns.UNLV.EDU) id 256 type=16
> req: found 'test.cluster.ns.UNLV.EDU' as 'ns.UNLV.EDU' (cname=0)
> findns: 3 NS's added for 'ns'
> ns_forw()
> nslookup(nsp=0x7fffb1a4, qp=0x1001f800, "test.cluster.ns.UNLV.EDU")
> nslookup: NS "eddie.CS.UNLV.EDU" c=4 t=2 (0x0)
> store_name_addr:s:eddie.CS.UNLV.EDU, a:[131.216.16.8]
> nslookup: NS "bessie.CS.UNLV.EDU" c=4 t=2 (0x0)
> store_name_addr:s:bessie.CS.UNLV.EDU, a:[131.216.18.2]
> nslookup: NS "jimi.CS.UNLV.EDU" c=4 t=2 (0x0)
> store_name_addr:s:jimi.CS.UNLV.EDU, a:[131.216.22.2]
> nslookup: 3 ns addrs total
> retrytime: nstime0ms t4 nretry0 u4 : v4
> schedretry(0x1001f800, 4 sec)
> forw: forw -> [131.216.16.8].53 ds=7 nsid=9 id=1 0ms retry 4sec
> free_nsp: eddie.CS.UNLV.EDU rcnt 2
> free_nsp: bessie.CS.UNLV.EDU rcnt 2
> free_nsp: jimi.CS.UNLV.EDU rcnt 2
>
> datagram from [131.216.16.8].53, fd 5, len 496; now Fri Jul 29 12:25:49 1994
> ns_req(from=[131.216.16.8].53)
> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9
> ;; flags: qr aa tc ra; Ques: 1, Ans: 17, Auth: 3, Addit: 0
> ;; QUESTIONS:
> ;; test.cluster.ns.UNLV.EDU, type = TXT, class = HS
>
> ;; ANSWERS:
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 6"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 7"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 8"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 9"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 10"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 11"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 112"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 13"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 14"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 15"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 16"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 17"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 18"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 19"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 20"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 1"
> test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 2"
>
> ;; AUTHORITY RECORDS:
> . 0 0 0 ?0?
> . 0 0 0 ?0?
>
> ;; ...malformed
> qfindid(9)
> Response (USER NORMAL -) nsid=9 id=1
> stime 775509949/700798 now 775509949/716422 rtt 15
> NS #0 addr [131.216.16.8] used, rtt 15
> NS #1 [131.216.18.2] rtt now 0
> NS #2 [131.216.22.2] rtt now 0
> resp: ancount 17, aucount 3, arcount 0
> dovalidate(zone 0, flags 19)
> dovalidate: dname test.cluster.ns.UNLV.EDU type 16 class 4 ttl 43200
>
> [rest of validation/credibilty testing deleted]
>
>
>
> Turning off the RES_IGNTC flag causes the caching server to never
> respond (since it never gets a non-truncated responce from the
> authoritative server). If you edit resolv.conf such that hesinfo
> queries the authoritative server directly then it works fine (IF you
> use a VC).
>
>
> So it would appear that large answers do not work unless the client
> queries the authoritative server directly. Correct? Again I'd like
> to suggest that a non-authoritative server should use a VC to get data
> from the authoritative server if it finds that the answer it gets via
> UDP is truncated. Comments?
>
> --Greg
>
Actually, even if you turned off the ROUNDROBIN code, BIND does not
even can not gaurentee that those 20 packets of yours will arrive in the order
you placed them in the file. You can not rely on the order. You would have
to imbed the number in the strings and sort them later.