It is an example that I was not able to write about with any particular understanding, so I had to leave it out.
But now that I'm not writing formally.....
The situation where I imagine that a network protocol would work better as a library than as a midlayer is when the network device can manage the protocol itself. If the card does TCP-Offload, then you maybe don't want a midlayer in the way.
And yes, I know Dave Miller doesn't like TCP-Offload, and I find his arguments quite convincing. And quite possibly those reasons also point to why a midlayer might be a suitable pattern in the case of a network protocol. It would be valuable to understand exactly why (and if) a midlayer is more appropriate in one place than another. Having a Pattern that describes when a midlayer is a mistake and another that describes when it is a success would be very valuable.
If I were interested in exploring the network layer for midlayer/library structure (which I am) and if I had time (which I don't) I would explore the history and mechanism for the partial offload support, such as checksumming and tcp segmentation. If there is anywhere where a midlayer could have caused problems, or where some other aspect of design has removed problems, I suspect that is where you would find it.
Copyright © 2018, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds