I will be straight with you. I am not a networking specialist. I look at the long list of protocols that we support with Nucleus OS and I recognize a large proportion of them. I probably know what they are used for and may even know what the arcane abbreviations and acronyms stand for. But I have little clue about their inner workings. That is fine. Nobody can be an expert in everything and I have colleagues in Mentor Graphics who know this stuff inside out. A lot of the time it is more useful and important to know who can answer a question than it is to know all the answers oneself.
But I started thinking about this. It really cannot be that hard to write, say, a TCP/IP stack. I have a great many years experience writing C code and there are tons of books around that explain how a protocol stack works. Maybe I should give it a go. So, what if I did write a compact, fast, embedded TCP/IP stack and personally offered it for sale at a very reasonable price? Putting aside what my employers might think about me moonlighting, would you buy it from me?
No? I thought not.
That was a wise decision. The reason why you would be foolish to invest in my efforts was really spelt out at the beginning of this blog when I said “I am not a networking specialist.”
So, this begs an interesting question: how do you decide who to buy a protocol stack from? Simply making your purchase from someone who does claim to be an expert is not good enough. They may simply have my level of competence without my streak of honesty. Even buying from a well established company in the embedded software business, like Mentor Graphics or one of our competitors, is no security. The answer lies in a single word: validation.
Protocols may be very complex, with extensive functionality and numerous possibilities for “corner cases” where the protocol can be broken, but 100% testing is a possibility. There are just so many data combinations that make sense - unlike with a compiler, where an infinite number of different programs may be acceptable. So, it is quite possible to write some test software - a validation suite - which exercises and verifies every aspect of a protocol. It is possible, but difficult. It is, therefore, unsurprising that suites like ANVL, TAHI and SilverCreek, all of which we use for validating our networking software at Mentor Graphics, tend to carry hefty price tags.
Next time you are looking for a protocol stack, just ask the prospective supplier which validation suite they use. If they do not have a good answer, walk away. If their answer is convincing, investigate some more, as they are clearly serious about embedded networking.