Opened 2 years ago

Last modified 10 months ago

#5669 enhancement new

Support emitting EDNS0 messages in response to EDNS0 queries

Reported by: exarkun Owned by:
Priority: normal Milestone: EDNS0
Component: names Keywords: edns
Cc: Branch:
Author: Launchpad Bug:

Description

If a client indicates support for EDNS0 (by including an OPT record in its query, the Twisted Names server should respond with an EDNS0 message instead of a DNS message.

Initially I think this just means including an OPT record in the response

Change History (3)

comment:1 Changed 11 months ago by rwall

In #5675 we discard all but the first OPT record during message decoding.

https://tools.ietf.org/html/rfc6891#section-6.1.1

When an OPT RR is included within any DNS message, it MUST be the
only OPT RR in that message. If a query message with more than one
OPT RR is received, a FORMERR (RCODE=1) MUST be returned.

In order to satisfy that requirement, we'll need to signal the fact that multiple OPT records were received, either by storing the list of received OPT records, or by raising an exception when this happens.

In ticket:5675#comment:16, exarkun wrote:

  1. I'm curious what the intended use of _EDNSMessage._decodingErrors might be. Do you imagine a public interface to this information someday? My first thought on reading this is that raising an exception on this case (perhaps wrapping a partially initialized _EDNSMessage) is the more obvious way to expose this.

I had originally added a decodingErrors list to EDNSMessage, but that may not be a good API and it seems that we will only need this information when implementing Server side EDNS behaviour.

comment:2 Changed 11 months ago by rwall

This is a comment that I deleted in r40215 but which needs consideration:

RFC6891 does not say whether any OPT records should be included in the response.

Querying ISC.ORG Bind servers with a multi OPT message, results in a response message without any OPT records so lets copy that behaviour.

comment:3 Changed 10 months ago by rwall

  • Milestone set to EDNS0
Note: See TracTickets for help on using tickets.