This paper
mainly describes the modular architecture of a networking subsystem
designed and developed within the embedded systems unit of Etnoteam.
Balancing modularity and efficiency has been known, since the
early days [1] of the TCP/IP protocol specification process, to
be a crucial issue in the development of protocol stacks, and
the implications of a modular design with respect to over all
performances are also evaluated and discussed. Section 6 summarizes
disadvantages, possible counter measures, and main industrial
benefits.
TECHNICAL
BACKGROUND AND MOTIVATIONS
Embedded application
software is generally severely constrained, with particular regards
to its memory foot print and systems requirements in general.
Among the major criteria beneath evaluation of the fitness of
particular software solution for the provision of a given functionality
is probably the configurability and flexibility of the software
itself. As cost is often a determinant factor in the success (or
failure) of a marketed product, the 'software side' of the embedded
system is today required to both gracefully adapt to the widest
possible range of hardware environments, and to scale well to
different classes of equipments - from the most expensive to medium
ones.
Scaling well
indeed also means providing sufficient modularity to keep the
whole software solution from soon becoming obsolete; many respects
of the evolution of internet software technologies - ranging from
encryption, security, to new addressing schemes - simply appear
to rule out non-modular architecture, that prove very difficult
to maintain and even more difficult to upgrade and update.
The software
modules at the base of internet connectivity are those included
in a TCP/IP stack. The de facto standard in application program
interfaces for network programming is today the BSD Sockets API,
and the whole BSD networking software might be probably regarded
as a sort of 'reference implementation' of the TCP/IP protocols,
complementing the relevant specifications. The widely recognized
importance of BSD network software as a standard setter - together
with public availability of relevant source code - caused the
proliferation of BSD-Derived implementations of TCP/IP stacks,
in a really wide variety of application areas. Several other sources
of networking software are actually available. However, many of
these sources were not probably designed for embedded systems
in the first place. Factors that are crucial in the deployment
of an embedded connectivity solution might instead regard as minor
issues in a desktop-based product.