Subject: [bess] Adam Roach's No Objection on draft-ietf-bess-evpn-df-election-framework-07: (with COMMENT)

From: Adam Roach <[email-masked]>
Date: Wed, 09 Jan 2019 22:31:29 -0800

Adam Roach has entered the following ballot position for
draft-ietf-bess-evpn-df-election-framework-07: No Objection

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)

Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-bess-evpn-df-election-framework/

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

I have one minor comment that the authors may wish to consider.

§1.2.1:

>  It is well-known that for good
>  hash distribution using the modulus operation, the modulus N should
>  be a prime-number not too close to a power of 2 [CLRS2009].

I suppose this refers to the explanation in [CLRS2009] §11.3.1. The
description there is pretty hand-wavy and not completely accurate except under
certain (admittedly common) conditions -- in which this case is not included.
You may wish to consider instead citing "The Art of Computer Programming (Vol.
3)" by Knuth, as it captures a lot more of the nuance behind why this rule of
thumb is frequently true, and covers the general case. There is probably a set
of considerations to take into account for Ethernet Tags with an even
distribution, but only because you have a relatively small set of potential
inputs -- not for any of the reasons cited in [CLRS2009]. Quoting Knuth:

  In general, we want to avoid values of M that divide r^k+a or r^k−a, where k
  and a are small numbers and r is the radix of the alphabetic character set
  (usually r=64, 256 or 100), since a remainder modulo such a value of M tends
  to be largely a simple superposition of key digits. Such considerations
  suggest that we choose M to be a prime number such that r^k!=a(modulo)M or
  r^k!=−a(modulo)M for small k & a.

I see that Benjamin has made a related comment. I share his objection to
the way point #2 is phrased, and think it needs to be reworded to properly
capture the subtleties implied by the preceding passage.

---

From: "Satya Mohanty (satyamoh)" <[email-masked]>
Date: Tue, 15 Jan 2019 22:11:42 +0000

Adam,

Thanks to you and Benjamin for this review and feedback on the hashing. Please see inline [Satya].

I will add my response to other queries in the forthcoming Jorge's reply to  Benjamin (as there are other comments to be addressed).

Best,

--Satya

On 1/9/19, 10:31 PM, "Adam Roach" <[email-masked]> wrote:

    COMMENT:

[Satya] Yes, it is from [CLRS2009] §11.3.1

[Satya] Yes, noted. I will change point #2.  Here is a suggested description of Point #2

Th Ethernet tag that identifies the BD can be as large as 2^24; however, it is not guaranteed that the tenant BD on the ES will conform to a uniform distribution. In fact, it up to the customer what BDs they will configure on the ES. Quoting Knuth [Art of Computer Programming Pg. 516]

  " In general, we want to avoid values of M that divide r^k+a or r^k−a, where k

      r^k!=−a(modulo)M for small k & a."

In our case, N is the number of PEs in RFC 7432 which corresponds to M above.

Since N, N-1 or N+1 need not satisfy the primality properties of the M above; as per RFC 7432 modulo based DF assignment, whenever a PE goes down or a new PE boots up (hosting the same Ethernet Segment), the modulo scheme need not necessarily map BDs to PEs uniformly.