John,
On 23 Feb 2015, at 16:05, John C Klensin <john-ietf(_at_)jck(_dot_)com> wrote:
experience with confusion about MX and SRV priorities to be
cautious about adding another ranking field, especially one
whose values are interpreted as "largest integer has the highest
preference" while the more traditional priority is interpreted
as "smallest integer is highest preference". Because IANA
While the text is clear to ‘me’ - I have to agree I’ve more than once seen this
go wrong during initial implementations (all easily fixed by a few emails with
the authors though).
BUT given that the confusion arises from text[1] which is very similar to the
original in SRV rfc2782[2] - and given that we have (and will have) that issue
for all use of SRV I am not sure if this should go into this draft.
And am wondering why it would not be better to have a separate explanation RFC
which deals with this; and the Order/Preference of NAPTR (3).
Dw.
1: From version 10 of the draft:
4.2. Priority
The priority of the target URI in this RR. Its range is 0-65535. A
client MUST attempt to contact the URI with the lowest-numbered
priority it can reach; URIs with the same priority SHOULD be tried in
the order defined by the weight field.
4.3. Weight
A server selection mechanism. The weight field specifies a relative
weight for entries with the same priority. Larger weights SHOULD be
given a proportionately higher probability of being selected. The
range of this number is 0-65535.
2: RFC2782:
Priority
The priority of this target host. A client MUST attempt to
contact the target host with the lowest-numbered priority it can
reach; target hosts with the same priority SHOULD be tried in an
order defined by the weight field. The range is 0-65535. This
is a 16 bit unsigned integer in network byte order.
Weight
A server selection mechanism. The weight field specifies a
relative weight for entries with the same priority. Larger
weights SHOULD be given a proportionately higher probability of
being selected. The range of this number is 0-65535. This is a
16 bit unsigned integer in network byte order. Domain
administrators SHOULD use Weight 0 when there isn't any server
selection to do, to make the RR easier to read for humans (less
noisy). In the presence of records containing weights greater
than 0, records with weight 0 should have a very small chance of
being selected.
In the absence of a protocol whose specification calls for the
use of other weighting information, a client arranges the SRV
RRs of the same Priority in the order in which target hosts,
specified by the SRV RRs, will be contacted. The following
algorithm SHOULD be used to order the SRV RRs of the same
priority:
To select a target to be contacted next, arrange all SRV RRs
(that have not been ordered yet) in any order, except that all
those with weight 0 are placed at the beginning of the list.
Compute the sum of the weights of those RRs, and with each RR
associate the running sum in the selected order. Then choose a
uniform random number between 0 and the sum computed
(inclusive), and select the RR whose running sum value is the
first in the selected order which is greater than or equal to
the random number selected. The target host specified in the
selected SRV RR is the next one to be contacted by the client.
Remove this SRV RR from the set of the unordered SRV RRs and
apply the described algorithm to the unordered SRV RRs to select
the next target host. Continue the ordering process until there
are no unordered SRV RRs. This process is repeated for each
Priority.
3: RFC2915 —> rfc3404.
Order
A 16-bit unsigned integer specifying the order in which the NAPTR
records MUST be processed to ensure the correct ordering of
rules. Low numbers are processed before high numbers, and once a
NAPTR is found whose rule "matches" the target, the client MUST
NOT consider any NAPTRs with a higher value for order (except as
noted below for the Flags field).
Preference
A 16-bit unsigned integer that specifies the order in which NAPTR
records with equal "order" values SHOULD be processed, low
numbers being processed before high numbers. This is similar to
the preference field in an MX record, and is used so domain
administrators can direct clients towards more capable hosts or
lighter weight protocols. A client MAY look at records with
higher preference values if it has a good reason to do so such as
not understanding the preferred protocol or service.
The important difference between Order and Preference is that
once a match is found the client MUST NOT consider records with a
different Order but they MAY process records with the same Order
but different Preferences. I.e., Preference is used to give weight
to rules that are considered the same from an authority
standpoint but not from a simple load balancing standpoint.