Next: 9.2 SAM
Up: 9 Use Cases
Previous: 9 Use Cases
  Contents
Subsections
The following are a set of use cases designed to show how FCM interacts with
both the user and the kernel on the machine on which one of its modules is
installed.
Figure 31:
Shows the actors and use cases for the Router module of FCM
|
|
Figure 32:
Shows the actors and use cases for the Receiver module of FCM
|
|
Figure 33:
Shows the actors and use cases for the Logger module of FCM
|
|
- Description:
- This scenario describes the loading of the
Router FCM module onto a Router.
- Trigger:
- The user decides to install the Router FCM module.
- SRS References:
- 3.1.1.4, 3.1.1.5, 3.1.1.7
- The user runs insmod to install sch_qsize.o,
specifying the output rate
, but choosing not to specify values
for
and
.
- The kernel loads the module with the user-specified values,
and runs the function specified
using the module_init() macro.
- The module registers with the register_qdisc() function.
- Description:
- This scenario describes the sending of
by the Router FCM module. It has already been loaded as in
the previous scenario.
- Trigger:
- The rqueue_dequeue() function is called by the
kernel, requesting the next packet to be sent.
- SRS References:
- 3.1.1.1, 3.1.1.2, 3.1.1.3
- The current queue length and hence
is calculated, ignoring
the packet about
to be removed (the packet which has been in the queue the longest).
- Router FCM checks that the packet is a valid TCP/IP packet as
specified by reference [7], including the extensions in
reference [3].
- The packet is a valid TCP packet, so it is modified to include
.
- The packet is removed from the queue and returned to the
kernel.
- Description:
- This scenario describes the removal of the
Router FCM module from the kernel. This stops packets from having
added to them, causing any Receiver FCM Module
depending on
from this Router to revert to the existing
kernel window sizing algorithm.
- Trigger:
- The user decides to remove the Router FCM module.
- SRS References:
- 3.1.1.7
- A user runs rmmod sch_qsize.
- The function specified in the module_exit() macro is called
by the kernel.
- The Router FCM calls unregister_qdisc().
- Description:
- This scenario describes the loading of the
Receiver FCM into the kernel.
- Trigger:
- The user decides to install the Receiver FCM module.
- SRS References:
- 3.1.2.4, 3.1.2.6
- The user runs insmod with rami_receiver.o as its only
argument, and does not choose to specify values for
,
or PS_THRESH.
- The kernel loads the module and runs the function specified
using the module_init() macro.
- The module registers itself with the Netfilter architecture
to receive all packets passing through the system.
- Description:
- This scenario describes the reception of a
packet containing
from a Router.
- Trigger:
- A function of the Receiver module is called by the
kernel, and a packet given.
- SRS References:
- 3.1.2.2, 3.1.2.3
- The Receiver module inspects the packet and determines that it
contains the Router
.
- The internal record of the Router
is updated based on
in the packet received.
- The packet is returned to the kernel unchanged.
- Description:
- This scenario describes the sending of a TCP
packet by the Receiver module so that the TCP window is modified.
- Trigger:
- The kernel calls modify_window() in the Receiver
module and passes it a packet.
- SRS References:
- 3.1.2.1, 3.1.2.5
- The Receiver FCM inspects the packet and determines that it
originated on the current host.
- The TCP window is calculated using the Client's algorithm.
- The existing TCP window field of the packet's header is
updated with the new window size as calculated if it is less
than the existing window size field.
- The packet's checksum is recalculated to ensure that the
modified packet is a valid TCP packet.
- The packet is returned to the kernel, noting that it's been
modified.
- Description:
- This scenario describes the removal of the
Receiver FCM from the kernel. This stops new packets sent from
this host from having their TCP window field modified.
- Trigger:
- The user decides to remove the Receiver FCM module.
- SRS References:
- 3.1.2.6
- A user runs rmmod rami_receiver.
- The function specified in the module_exit() macro is
called by the kernel.
- The module deregisters itself from the netfilter architecture.
It no longer receives packets from the kernel.
- The module is unloaded from memory.
- Description:
- This scenario describes the logging of data provided
by the Router module of FCM. This data gives the value of
and the
number of packets modified, as well as other useful information.
- Trigger:
- The user runs rami-logger.
- SRS References:
- 3.1.1.6
- A user runs rami-logger -interval 10 -duration 60
output.nlog.
- The command line arguments are parsed using the getopts
library, by the rami-logger module.
- It is checked that both an interval and duration were given for
logging, if not the program would quit.
- The file given as an argument, in this case output.nlog, is
opened for writing as the output file, by calling openoutput().
- The file exported in /proc by the Router module is loaded for
input by openinfofile().
- The fields in the input file are parsed by calling findfields().
- The input file is closed by calling closeinputfile().
- The header line for the output file is written by writeheader().
- A signal handler is set up for the SIGALRM signal, to call
dump_fields().
- A timer is set to create the SIGALRM signal at the interval
request by the user.
- rami-logger sits in a loop, pausing until the duration is
over. Meanwhile, dump_fields() is called at regular intervals.
The following occurs:
- The input file is opened by calling openinfofile().
- The line of data is read from the input file.
- The data is written to the output file by calling writedata().
- The input file is closed.
- When the duration of logging is over, the output file is closed by
calling closeoutput().
- The program exits.
Next: 9.2 SAM
Up: 9 Use Cases
Previous: 9 Use Cases
  Contents