errata logo graphic

Found 1 record.

Status: Rejected (1)

RFC2782, "A DNS RR for specifying the location of services (DNS SRV)", February 2000

Source of RFC: dnsext (int)

Errata ID: 2984

Status: Rejected
Type: Technical

Reported By: Jordan Brown
Date Reported: 2011-10-04
Rejected by: Brian Haberman
Date Rejected: 2012-05-01

Section Weight says:

        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.

It should say:

Correcting the text requires agreement on what to do with entries with
weight=0, so I don't want to try to craft text until we have agreement there.

Notes:

The problem with this algorithm is that for a total weight T, it generates a random number 0..T and so allocates T+1 shares and gives the extra share to the first entry. Thus with weights {1, 1}, the first entry is selected 2/3 of the time while the second entry is selected 1/3 of the time.

I suspect that this is an attempt to do *something* with entries with weight=0, but yields unobvious results there: for {0, 1, 1}, the three entries are each selected 1/3 of the time.

I suggest:

- Ordering weight=0 entries to the end.
- Generating random numbers 0..(T-1).
- Using a "greater" test rather than "greater or equal".
- Selecting weight=0 entries in any order when all of the weight!=0 entries have been selected.
--VERIFIER NOTES--
The errata is not actionable. Issue should be raised with the DNSEXT WG.


Report New Errata