Subject: LLMNR Issue 34: Unicast over TCP only

From: Bernard Aboba <[email-masked]>
Date: Wed, 23 Apr 2003 11:25:28 -0700 (PDT)

Issue 34: Unicast over TCP only
Submitter: Bernard Aboba
Submitter email address: [email-masked]
Date first submitted: April 22, 2003
Reference:
Document: LLMNR-17
Comment type: T
Priority: S
Section: 2.3, 2.6
Rationale/Explanation of issue:

Doing unicast queries only over TCP will make LLMNR more
resilient against spoofing.

In Section 2.3, change:

"A sender MUST NOT send a unicast LLMNR query except when:

a. A sender repeats a query after it received a response
to the previous LLMNR query with the TC bit set, or

b. The sender's LLMNR cache contains an NS resource record that
enables the sender to send a query directly to the hosts
authoritative for the name in the query.

If a TC (truncation) bit is set in the response, then the sender MAY use
the response if it contains all necessary information, or the sender MAY
discard the response and resend the query over TCP or using EDNS0 with
larger window using the unicast address of the responder. The RA
(Recursion Available) bit in the header of the response MUST NOT be set.
If the RA bit is set in the response header, the sender MUST ignore it."

To:

"Unicast LLMNR queries MUST be sent using TCP and TTL=1. Responses
to unicast LLMNR queries also MUST be sent using TCP (using the
same connection as the query) and TTL=1. If
the response to a unicast LLMNR query is not sent using TCP,
the query sender MUST silently discard the response. Unicast
queries sent using UDP also MUST be silently discarded by the
responder.

Unicast queries SHOULD be sent when:

a. A sender repeats a query after it received a response
to the previous LLMNR multicast query with the TC bit set, or

b. The sender's LLMNR cache contains an NS resource record that
enables the sender to send a query directly to the hosts
authoritative for the name in the query.

c. The sender queries for a PTR RR.

If a TC (truncation) bit is set in the response, then the sender MAY use
the response if it contains all necessary information, or the sender MAY
discard the response and resend the query over TCP using the unicast
address of the responder. The RA (Recursion Available) bit in the header
of the response MUST NOT be set. If the RA bit is set in the response
header, the sender MUST ignore the RA bit."
In section 2.6, change:

"In order to avoid synchronization, LLMNR queries and responses are
delayed by a time uniformly distributed between 0 and 200 ms.

If the LLMNR query is not resolved within the timeout interval
(LLMNR_TIMEOUT), then a sender MAY repeat the transmission of a query in
order to assure themselves that the query has been received by a host
capable of responding to the query. Since a sender cannot know
beforehand whether it will receive no response, one response, or more
than one response to a query, it SHOULD wait for LLMNR_TIMEOUT in order
to collect all possible responses, rather than considering the query
answered after the first response is received.

LLMNR implementations SHOULD dynamically estimate the timeout value
(LLMNR_TIMEOUT) on a per-interface basis, using the algorithms described
in [RFC2988], with a minimum timeout value of 300 ms. Retransmission
SHOULD NOT be attempted more than 3 times."

To:

"In order to avoid synchronization, LLMNR queries and responses are
delayed by a time uniformly distributed between 0 and 200 ms.

If a multicast LLMNR query is not resolved within the timeout interval
(LLMNR_TIMEOUT), then a sender MAY repeat the transmission of a multicast
query in order to assure themselves that the multicast query has been
received by a host capable of responding to the query.
Since a multicast query sender cannot know
beforehand whether it will receive no response, one response, or more
than one response to a multicast query, it SHOULD wait for LLMNR_TIMEOUT
in order to collect all possible responses, rather than considering the
multicast query answered after the first response is received.

LLMNR implementations SHOULD dynamically estimate the timeout value
for multicast queries (LLMNR_TIMEOUT) on a per-interface basis,
using the algorithms described in [RFC2988], with a minimum timeout value
of 300 ms. Retransmission of multicast queries SHOULD NOT be attempted more
than 3 times. Since unicast LLMNR queries must be sent using TCP, for these
queries, retransmission behavior is handled by the transport layer."

--
to unsubscribe send a message to [email-masked] with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://ops.ietf.org/lists/namedroppers/>