Re: What a reference implementation is

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04-Jun-23 03:24, touch@xxxxxxxxxxxxxx wrote:
On Jun 3, 2023, at 7:18 AM, Salz, Rich <rsalz=40akamai.com@xxxxxxxxxxxxxx> wrote:

Recently, a colleague made a statement about a software distribution
being "the reference implementation" for a protocol.

Those people are bragging. :)

As this phrase is regularly used to refer to protocol implementations,
is there a normative definition published somewhere in the RFCs about
what constitutes a reference implementation?

Different places have different definitions for that term and other terms for related concepts. NIST uses the term as follows:

    the implementation of a standard to be used as a definitive interpretation for the requirements in that standard. Reference implementations can serve many purposes. They can be used to verify that the standard is implementable, validate conformance test tools, and support interoperability testing among other implementations. A reference implementation may or may not have the quality of a commercial product or service that implements the standard.

https://csrc.nist.gov/glossary/term/Reference_Implementation#:~:text=Definition(s)%3A,the%20requirements%20in%20that%20standard. <https://csrc.nist.gov/glossary/term/Reference_Implementation#:~:text=Definition(s)%3A,the%20requirements%20in%20that%20standard.>

When I taught intro networking, I referred to the OSI reference model as literally that - a model that can be referred to in discussion. I’ve always thought that was its primary value (even if not intended that way). I can say “X is *like* layer 5” and you get a sense of what I mean, even if there aren’t 4 layers below and 2 above.

There’s a design model that provides a demonstration how a complex set of components might be organized, especially highlighting interactions and behaviors that are expected and how that might be achieved. It’s intended to be referred to, but implementers are allowed to do things their own way, as long as the behaviors and interactions are logically preserved.

There’s also a thing called a “gold standard” implementation, which is intended as a complete example of a spec that can be used as a tester. I.e., let’s say we have an INTEROP-style "bake-off”; rather than testing N implementations with N(N-1) pairwise tests, a gold standard should allow N tests to suffice. If everyone interacts properly with the gold standard, then we believe we can assume they will interoperate with each other (still better to test that eventually, but it helps resolve “who is right” when two implementations don’t work).

A “reference implementation” may refer to any of the three above: discussion example, design example, or testing standard. It may be “best known implementation”, which is often used as a testing standard (but shouldn’t be, IMO). Or something else I haven’t seen, of course.

I suggest that something calling itself "reference implementation" should also provide complete diagnostics when it receives non-standard input, i.e. should not implement silent discard.


There are certainly other interpretations for these terms and other relevant terms. Ultimately, though, I would say any use of these terms should include the intended definition.

Yes. It occurs to me that there are a couple of IAB documents that could have mentioned this topic but didn't:

https://www.rfc-editor.org/rfc/rfc9170.html
https://datatracker.ietf.org/doc/draft-iab-protocol-maintenance

Regards
   Brian




[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Mhonarc]     [Fedora Users]

  Powered by Linux