3) Thread-Safe Buffers: Each device object is associated
with thread-safe receive and send buffers (implemented as
queues) into which packets can be queued asynchronously.
Receive buffers are managed as a group such that the abstraction
layer will process packets one-by-one in a round robin
fashion from each buffer as shown in figure 3.
B. Network Logic Layer
The network logic layer handles packet processing logic to
determine which network interfaces should be used to transmit
packets. It consists of the desired logic (for example, that of
a firewall) that is called on to handle the actual processing of
packets and a base that takes care of threading and interacting
with the abstraction layer’s buffers. In the case of a firewall, the
software developer using the Sttyciar framework would only
have to consider the implementation of the packet inspection
logic inside the network logic layer and not the hardware
details of the computer platform being used.
As mentioned in section III, the logic is implemented by
sub-classing the NetworkLogicLayer class and overriding a
routePacket() method as shown in the code of listing 1.
This results in each packet that arrives through any interface
being sent for processing by the routePacket() method.
C. Statistics Layer
The function of the statistics layer is to collect data about
each packet that passes through the framework. Data is
collected from all packets placed in the abstraction layer’s
send and receive buffers. Performance information, such as
the transmission rates between network interfaces, can be
calculated using this data. So as to not impact on performance
this occurs asynchronously to the receiving, processing and
transmitting of packets.
1) Statistics Processing: Various measures, such as data
throughput and latency, are periodically calculated. The information
gathered can be sent to a graphical user interface for a
live indication of performance. Since calculations can add to