Felix Generation Distribution

We developed a custom distribution to represent the traffic generation of the felix servers. This distribution and tests are described in this page.

See meeting Caracterizando la generacion de trafico de los servidores felix (Jorn, Matias, Andy)

FelixDistribution - Implementation


The distribution "simulates" the arrival of messages throught the GBT links at a given rate. In Low_LATENCY mode, the messages are forward without delay. In High_throughput mode, the messages are queued and forwarded when the buffer is full.
Distributions only have a nextValue method which return a random number distributed according to the distribution. In this case, it returns the time period between one outmessage from the felix server to the next outmessage. Because of felix behavior outmessages are sent in bursts: nothing is sent while the buffer is being filled, and then several messages are sent to the networking stack all together (the buffer is partitioned in several messages according to TCP MTU).

Parameters for the distribution

  1. Period: (in seconds) This is a distribution parameter. The period (1/rate) of the incomming messages in the GBT links.
  2. Mode: low_latency or high_throughput
  3. incomming size (only in high_throughput mode) : (in bytes) This is a distribution parameter. Size of the incomming GBT messages (which will fill up the buffer)
  4. Buffer size: (in bytes) this is the size of the buffer.
  5. timeout: maximum time without sending a message (if the buffer does not get filled)
  6. outSize: size of each outmessage (the buffer is partitioned in several messages according to TCP MTU)

flowFlow0_1.period = DISTRIBUTION_FELIX;
flowFlow0_1.period_period = DISTRIBUTION_EXPONENTIAL;
flowFlow0_1.period_period_mu = 1/(10*M); // 1000 MB/s (80Gbps)
flowFlow0_1.period_mode = FELIX_MODE_HIGH_THROUGHOUT;
flowFlow0_1.period_size_bytes = DISTRIBUTION_NORMAL;
flowFlow0_1.period_size_bytes_mu = 1*k ; // 1000 MB/s (80Gbps)
flowFlow0_1.period_size_bytes_var = 1*k;
flowFlow0_1.period_buffer_bytes = 1 * M;
flowFlow0_1.period_timeout = 1; // (seconds)
flowFlow0_1.period_out_size_bytes = TCP_MTU_bytes;
flowFlow0_1.packetSize = DISTRIBUTION_CONSTANT; // (in bits)
flowFlow0_1.packetSize_value = TCP_MTU_bytes * 8; // value for the constant distribution

Tests - comparison

With exponensial distribution

flowFlow1_1.period = DISTRIBUTION_EXPONENTIAL;
flowFlow1_1.period_mu = 1/(1*M); // mean for the exponential distribution.
flowFlow1_1.packetSize = DISTRIBUTION_CONSTANT;
flowFlow1_1.packetSize_value = 1000.0; // value for the constant distribution

Inline image 8

With Felix distribution

flowFlow0_1.period = DISTRIBUTION_FELIX;
flowFlow0_1.period_period = DISTRIBUTION_EXPONENTIAL;
flowFlow0_1.period_period_mu = 1/(10*M); // 1000 MB/s (80Gbps)
flowFlow0_1.period_mode = FELIX_MODE_HIGH_THROUGHOUT;
flowFlow0_1.period_size_bytes = DISTRIBUTION_NORMAL;
flowFlow0_1.period_size_bytes_mu = 1*k ; // 1000 MB/s (80Gbps)
flowFlow0_1.period_size_bytes_var = 1*k;
flowFlow0_1.period_buffer_bytes = 1 * M;
flowFlow0_1.period_timeout = 1; // (seconds)
flowFlow0_1.period_out_size_bytes = TCP_MTU_bytes;
flowFlow0_1.packetSize = DISTRIBUTION_CONSTANT; // (in bits)
flowFlow0_1.packetSize_value = TCP_MTU_bytes * 8; // value for the constant distribution

-- MatiasAlejandroBonaventura - 2016-12-05

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r2 - 2016-12-06 - MatiasAlejandroBonaventura
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback