Skip to content

DNS response time in delayshell not deterministic #105

@worenga

Description

@worenga

When replaying pages i noticed that dns timings are sometimes indeterministically off by 1 RTT. I assume that is some kind of pipelinine stall somewhere.

Example:


#replay a recording that has dns recordings for foo.com and google.com
$ mm-webreplay /tmp/recording-of-foo-com mm-delay 50 
[replay] [delay 50 ms] $ dig google.com foo.com google.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> google.com foo.com google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 33771
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	A

;; Query time: 102 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Nov 22 18:36:42 CET 2016
;; MSG SIZE  rcvd: 28

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54282
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;foo.com.		IN	A

;; ANSWER SECTION:
foo.com.	0	IN	A	<ip-address-omitted-for-this-example>

;; Query time: 102 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Nov 22 18:36:42 CET 2016
;; MSG SIZE  rcvd: 64

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 22859
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	A

;; Query time: 204 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Nov 22 18:36:42 CET 2016
;; MSG SIZE  rcvd: 28

Notice that the 3rd query time is twice the rtt.

I found that passing "--all-servers" to dnsmasq in dns_server.cc will avoid the issue (at least it has not happened in a testrun with 90 tries). However, i do not really understand why.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions