next up previous contents
Next: 3.2 SAM Up: 3 Functional Requirements Previous: 3 Functional Requirements   Contents

Subsections


3.1 FCM

FCM will be broken down further into two components, which will each run on a different host. Hosts running FCM are either Routers or Receivers.

The following functionality will be provided by FCM:

3.1.1 Core Router Functionality

The component of FCM which runs on a Router will have the following functionality:
  1. If an incoming packet is being sent on the low bandwidth network interface and is a valid TCP packet, then a representation of $p(q)$ will be transmitted to the Receiver. However, if this will cause the packet to become larger than the interface's maximum data unit, no modification should occur. The value of $q$ is the queue size after the packet is sent, which is the number of bytes waiting to be transmitted across the low bandwidth network link by the Router. The Receiver in this case is the destination of the original TCP packet.
  2. All packets which have been altered by FCM and were originally valid TCP/IP packets shall be valid TCP/IP packets as specified by reference [7], including the extensions in reference [5].
  3. Packets which have an invalid TCP or IP checksum should not be modified in such a way that their checksum is made correct.
  4. The user must specify the output rate $\mu$ of the low bandwidth link. This will be specified in units of kilobits/sec.
  5. The user may optionally choose to specify values for the following constants used in the window sizing algorithm; any not selected will use the given default values:
    1. $b$ - A constant which determines how sensitive the queue size is to the number of streams passing through it. Default value is 10.
    2. $q_{\rm min}$ - The queue size above which $p(q)$ becomes non-zero, specified in bytes. Default value is 20000 bytes.
  6. Create Network Log
    Researchers must be able to collect data from the Router module to be analysed by SAM afterwards. The following functions are required:
    1. Choose file
      The user must specify a filename to dump records to. The format of the file will be known as NETLOG and is the same as that created and loaded by SAM.
    2. Logged Fields
      The following fields will be recorded in every Network Log:
      1. Timestamp
      2. Queue size, in bytes
      3. Queue size, in packets
      4. $p(q)$
      5. Number of packets transferred since last dump
    3. Logging Interval
      The user must specify the interval at which data is to be dumped into the network log file. After the user-specified amount of time has passed since the last dump, data about the packets (as specified above) will be logged. Allowed time intervals are 100 ms and any multiple of 100 ms, up to 1 hour.
    4. Duration
      The user must specify how long the log will last. The maximum time for any log is 24 hours.
  7. The user must be able to install and uninstall the Router part of FCM to and from the kernel.

3.1.2 Core Receiver Functionality

The component of FCM which runs on a Receiver will have the following core functionality:
  1. If a TCP packet containing a representation of $p(q)$ (as produced by the Router functionality) has been received, then any TCP packets for new TCP connections originating at the Receiver shall have their TCP Window Size calculated by the algorithm specified in the Client's paper in section 11. Otherwise the standard window size calculated by the Linux kernel will be used.
  2. A record will be kept of the current representation of $p(q)$ on the Router.
  3. Upon receiving a packet containing a representation of $p(q)$, the local record of this value will be updated to the value received.
  4. The user may optionally choose to specify values for the following constants used in the window sizing algorithm; any not selected will use the given default value:
    1. $\tau$ - A constant which affects the rate at which the window increases. It has units of Bytes/sec. Default value is 1.
    2. $\alpha$ - A smoothing factor, normalised to the interval $(0,1]$, but given to the module on the interval $[1,100]$ as an integer. Default value is 25.
    3. PS_THRESH - A constant used to determine when to end the prime start phase of the window size updating. Default value is -0.2.
  5. All packets which have been altered by FCM and were originally valid TCP/IP packets shall be valid TCP/IP packets as specified by reference [7].
  6. The user must be able to install and uninstall the Receiver part of FCM to and from the kernel.

3.1.3 Non-Core Receiver Functionality

  1. Window size must be correctly calculated for connections making use of the window scaling extension specified by reference [5].


next up previous contents
Next: 3.2 SAM Up: 3 Functional Requirements Previous: 3 Functional Requirements   Contents