The key words “must”, “must not”, “should”,
“should not”, “recommended”, “may”, and “optional” in this
report are to be interpreted as described in RFC 2119 [3].
Specifically:

must

This word means that a statement is an absolute
requirement of the specification.

must not

This phrase means that a statement is an absolute
prohibition of the specification.

should

This word, or the adjective “recommended”, means that
valid reasons may exist in particular circumstances to ignore a
statement, but that the implications must be understood and weighed
before choosing a different course.

should not

This phrase, or the phrase “not recommended”, means
that valid reasons may exist in particular circumstances when the
behavior of a statement is acceptable, but that the implications
should be understood and weighed before choosing the course described
by the statement.

may

This word, or the adjective “optional”, means that an item
is truly optional.

In particular, this report occasionally uses “should” to designate
circumstances that are outside the specification of this report, but
cannot be practically detected by an implementation; see
section 5.4. In such circumstances, a
particular implementation may allow the programmer to ignore the
recommendation of the report and even exhibit reasonable behavior.
However, as the report does not specify the behavior,
these programs may be unportable, that is, their execution might
produce different results on different implementations.

Moreover, this report occasionally uses the phrase “not required” to note the
absence of an absolute requirement.