Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial spec for DoH experiment #158

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions nettests/ts-023-doh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Specification version number

0.1.0

# Specification name

DNS over HTTPS Test

# Test preconditions

* An internet connection

# Expected impact

Result of resolving domain names using a specific DoH server.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe provide a link to the relevant RFC?


# Expected inputs

## Import document or import data format

A list of domains for which to perform a DoH resolution.

## Data specification version number

## Semantics

The input document will contain a list of zero or more domains to
resolve using DoH. The following

```
www.google.com
www.facebook.com
```

are all valid entries.

You should also specify the DoH URL to use. We will by default use the
`https://mozilla.cloudflare-dns.com/dns-query` URL, if none is given.

# Test description

For every input domain we perform a DoH resolution.

# Expected output

The key `test_keys` key object will be added to the report.

The `test_keys.failure` scalar will be `null` if there was no error or
a string indicating the error that occurred.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The x-addresses key is missing from here.

I also think you should add a reference to the HTTP requests that are being performed and what the responses look like.

It's also probably a good idea to collect some timing information pertaining to the query time.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The x-addresses key is missing from here.

I'd rather remove it from here. This is an experimental key and we don't want its presence to cause confusion or expectations into the reader.

The reason why this JSON lacks so many details is that I'm blocking on a couple of large code reviews before I'm able to write PoC code that contains more information. I am also not super convinced whether we should document and include the full netx event stream as a parent data format, or whether we should just include it as an x- key for now.


## Example output sample

```
{
"data_format_version": "0.2.1",
"input": "www.google.com",
"measurement_start_time": "2019-10-08 12:04:17",
"test_runtime": 0,
"probe_asn": "AS30722",
"probe_cc": "IT",
"probe_ip": "127.0.0.1",
"report_id": "20191008T120417Z_AS30722_N4ZDqONxMM76DlDnaEyQfu1DNhE5yz7WxmlmnbxYlJb05Qpm0a",
"resolver_ip": "173.194.170.111",
"software_name": "miniooni",
"software_version": "0.1.0-dev",
"test_keys": {
"failure": "",
"url": "https://mozilla.cloudflare-dns.com/dns-query",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't there also be some keys related to the HTTP requests that were performed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe so. I have been debating with myself whether we want:

  • to implement the HTTP base data format; or

  • provide the netx events; or

  • both

Later you ask me about timing. This is a given with the netx data format, because it does not show results, rather events that happened at a specific time.

"x-addresses": [
"216.58.205.132",
"2a00:1450:4002:808::2004"
]
},
"test_name": "doh",
"test_start_time": "2019-10-08 12:04:17",
"test_version": "0.1.0"
}
```