next up previous contents
Next: 3.3 Queue Size Logging Up: 3 FCM Detailed Design Previous: 3.1 Router Module   Contents

Subsections

3.2 Receiver Module

Module Name:
rami_receiver

Purpose:
The Receiver module performs the necessary processes on a Receiver in order to implement the new window size algorithm.

Responsibilities:
The Receiver module is responsible for:

Collaboration:
The Receiver module collaborates with:

SRS References:
3.1.2.1, 3.1.2.2, 3.1.2.3, 3.1.2.4, 3.1.2.5, 3.1.2.6

3.2.1 Internal Data Structures

struct rami_info
This data structure holds information needed by the receiver to calculate the window size for a particular connection. It is kept between packets in a connection, and one is kept for each connection.

It has the following definition:

struct rami_info  {
        struct rami_info *next;
        struct sock *sk;
        __u32 previous_win;
        int mu;
        int prime_start;
        unsigned long tstamp;
        int timestamps[ALPHA];
        int counter;
};

Each field has the following use:

*next
A pointer to the next structure of this type within a list, or NULL if there is no other structure.
*sk
A pointer to the local socket structure (as maintained by the kernel) for the connection.
previous_win
The window size used for the previous packet transmitted for this connection.
mu
The value of $\mu$ as calculated when the previous packet was received.
prime_start
Determines whether or not the prime start phase of the connection is occurring. This should be initialised to a non-negative value (such as 1), and changed to 0 when the prime start phase has ended.
tstamp
The value of the kernel jiffies counter at the time the last packet for this connection was transmitted.
timestamps
A list of the last ALPHA timestamps for packets transmitted for this connection. This is used to determine the received rate.
counter
A counter which keeps a record of the number of packets transmitted modulus $\alpha$, which is used to maintain the list of the $\alpha$ most recent timestamps.
rami_hash_table
A hash table used to hold the rami_info structures for different connections. Separate chaining will be used to prevent collisions. The table will be FCM_HASH_SIZE long, as defined by a #define.


next up previous contents
Next: 3.3 Queue Size Logging Up: 3 FCM Detailed Design Previous: 3.1 Router Module   Contents