When an user requests a certain quality of service (delay, throughput, etc) from a network,
there is a negociation (an agreement) between the user and the network: the user agrees to
send data at an average rate no more than R bits/second, which is called continuously
sustainable data rate. There is also a parameter B, the burstiness, which refers to the
amount of data which can be send by the user at a higher rate.
The problem is that the user generate data in a bursty manner, not at a constant rate.
The metter/marker network element, implemented here with the token bucket method will
measure if the user exceeds the negociated average data rate R or not.
A graphical description of the model is here
The model consists of:
- A data generator that generates IP packets at a certain, variable
rate. The rate can have different probability distribution functions,
with different parameters.
- A buffer that buffers the IP packets and transmits them at a certain
rate, R to the sink node (the destination).
- A token bucket system that decides for every newly arrived IP packet
if the packet complies to the agreed transfer rate or if it is in
excess. If the packet is in excess, it is marked accordingly. If the
buffer is full or almost, the excess packets will be discarded,
otherwise, they will be only marked.
The values R (continuously sustainable data rate) and B (the burstiness)
should be parameters of the simulation model.
Requirements:
- Implement the simulation model from above.
- Show a simulation scenario when some IP packets generated by the data generator are
detected by the token bucket system as being in excess.
- Show a simulation scenario when at least some IP packets generated by the data generator
are detected as complying with the agreed transfer rate R and burstiness B.
- Show the efficiency of the token bucket system in several simulation scenarios. You can
try different values of the average generation rate of the IP packets, and of the
parametters R and B of the token bucket.
Also, you can try different probability distribution functions for data generation.