# Package sim2net.packet_loss¶

This package provides a collection of packet loss model classes.

Packet loss occurs when a packet of data (or message) traveling across a computer network fails to reach its destination(s). In wireless communication, the loss may be caused by wireless channel properties (e.g. signal degradation due to multi-path fading or shadowing), packet collisions or faulty networking hardware. Thus, the purpose of packet loss models is to simulate (potential) transmission failures in wireless communication.

## Module sim2net.packet_loss._packet_loss¶

Contains an abstract class that should be implemented by all packet loss model classes.

class sim2net.packet_loss._packet_loss.PacketLoss(name)

Bases: object

This class is an abstract class that should be implemented by all packet loss model classes.

Parameters: - name (str): a name of the implemented placement model.

logger

(Property) A logger object of the logging.Logger class with an appropriate channel name.

packet_loss()

Returns information about whether a transmitted packet has been lost or can be successfully received by destination nodes according to the implemented packet loss model.

Returns:
(bool) True if the packet has been lost, or False otherwise.
Raises:
• NotImplementedError: this method is an abstract method.
random_generator

(Property) An object representing the sim2net.utility.randomness._Randomness pseudo-random number generator.

## Module sim2net.packet_loss.gilbert_elliott¶

This module provides an implementation of the Gilbert-Elliott packet loss model.

The Gilbert-Elliott model ([Gil60], [Ell63]) describes error patterns in communication channels ([HH08]). The model is based on a simple Markov chain with two states: G (for good or gap) and B (for bad or burst). Each of them may generate errors (packet losses) as independent events at a state dependent error rate: $$1-k$$ in the good state and $$1-h$$ in the bad state. The chain is shown in the figure below along with the transition matrix $$A$$ that uses two transitions: $$p=P(q_t=B|q_{t-1}=G)$$ and $$r=P(q_t=G|q_{t-1}=B)$$ ($$q_t$$ denotes the state at time $$t$$):

+-------+      p      +-------+                   {          }
+----|       |------------>|       |<---+              { 1-p   p  }
1-p |    |   G   |             |   B   |    | 1-r      A = {          }
|    | (1-k) |             | (1-h) |    |              {  r   1-r }
+--->|       |<------------|       |----+              {          }
+-------+      r      +-------+

Then, error rate $$p_E$$ is obtained (in steady mode) for the model as follows: $$p_E=(1-k)\times\frac{r}{p+r}+(1-h)\times\frac{p}{p+r}$$ (assuming: $$0<p,r<1$$).

It is worth to note that when $$q=1-p$$ (and $$k=1, h=0$$), this model reduces to the Bernoulli model – a very simple loss model, characterized by a single parameter, the loss rate $$r$$, used for modeling packet loss.

Finally, $$p$$ equal to $$0$$ means that no losses are possible, whereas $$r$$ equal to $$0$$ means that no transmission is successful (once the B state is reached).

 [Ell63] E. O. Elliott. Estimates of Error Rates for Codes on Burst-Noise Channels. In Bell System Technical Journal, vol. 42(5), 1977–1997. Bell Laboratories, September 1963.
 [Gil60] Edgar Nelson Gilbert. Capacity of a Burst-Noise Channel. In Bell System Technical Journal, vol. 39(5), 1253–1265. Bell Laboratories, September 1960.
 [HH08] (1, 2) Gerhard Haßlinger, Oliver Hohlfeld. The Gilbert-Elliott Model for Packet Loss in Real Time Services on the Internet. In Proceedings of the 14th GI/ITG Conference on Measurement, Modelling and Evaluation of Computer and Communication Systems (MMB 2008), pp. 269–286. Dortmund, Germany, April 2008.
class sim2net.packet_loss.gilbert_elliott.GilbertElliott(prhk=None)

This class implements the Gilbert-Elliott packet loss model.

Parameters:
• prhk (tuple): a tuple that contains four model parameters: $$0\leqslant p,r,h,k\leqslant 1$$, respectively (each of type float). The parameters default to the following values:

• $$p=0.00001333$$,
• $$r=0.00601795$$,
• $$h=0.55494900$$,
• $$k=0.99999900$$;

(which leads to error rate equal to $$0.098\%$$ and the mean packet loss rate equal to $$0.1\%$$ ([HH08])).

Raises:
• ValueError: raised when the given value any model parameter is less than zero or greater that one.

(At the beginning the model is in the G state.)

packet_loss()

Returns information about whether a transmitted packet has been lost or can be successfully received by destination node(s) according to the Gilbert-Elliott packet loss model.

Returns:
(bool) True if the packet has been lost, or False otherwise.