[231] in Hesiod

home help back first fref pref prev next nref lref last post

Re: huge printcap entries

daemon@ATHENA.MIT.EDU (Greg Wohletz)
Fri Jul 29 15:48:04 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
In-Reply-To: Your message of "Fri, 29 Jul 1994 13:36:04 EDT."
             <9407291736.AA00729@temple.Hi.Com> 
Date: Fri, 29 Jul 1994 12:39:34 -0700
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

home help back first fref pref prev next nref lref last post