The simulation model
The simulation model consists of the following OMNeT++ modules:
- A number of users. In the first stages of the model you can
implement two identical users, then you can consider a number of K
users, organized as an array of users. Each user generates IP packets
according to a certain pattern: e.g. an IP packet at certain (random)
time intervals, or a user generates files, a file consisting on a
(random) number of IP packets. At the beginning the IP packets can be
considered of fixed length, i.e. one IP packet = 1500 bytes. A user has
a certain priority. There can be for example 3 or 4 priority levels. For
3 priority levels, they are (in increasing order): LP (low priority),
medium priority (MP) and HP (high priority). For 4 levels, they are: non
real-time (nrt) low priority and nrt HP, real-time (rt) LP and rt HP.
- A scheduler. The scheduler is situated in the same Omnet module as
the queues. The queues are not per user, but per priority class. This
means that the packets arriving from LP user will be stored in the LP
queue, the packets from MP and respectively HP users will be stored in
the MP and respectively HP queue. The scheduler reads the lengths of the
queues and implements a scheduling algorithm that determines which queue
will send data. The sending of a packet takes a time equal to its length
divided by the line rate (i.e. 1500 bytes / 1 Mega bit per second). The
scheduler cannot send another packet during this time interval.
- A sink. The sink models the destination of the data. When the data
(i.e. IP) packets created by an user arrive to the sink module, the sink
simply deletes the OMNeT++ messages representing the data packets. Also,
the sink is used to collect statistics about the simulation, statistics
that can be for each user, for each group of users (e.g. Low, Medium and
High priority users) and/or for the entire system. These statistical
information can be: the number of data packets that arrive to the sink,
the mean, minimum and maximum delay of the data packets, etc.
In the OMNeT directories there is one called "samples", with different
simulation models implemented in OMNeT++. From these samples, you
can use as a starting point for your model the sources from the "fifo"
system.
Implement one of the following scheduling
algorithms:
- Priority queueing (a lower priority queue is served if and only if all higher priority
queues are empty)
- A weighted round robin: an auction takes place every time when there are resources
available. The winner of the auction will be served. The criteria for the auction is, firstly,
the time elapsed since the user was served last time. Then, we can improve the algorithm by
introducing weights (positive numbers >1). The time elapsed since the user was served last
time is multiplied with user's weight. Then, a user with a higher weight will be served more
often.
Compare the performance (i.e. average delay
of the IP packets) of the implemented algorithms, if possible, for different simulation
scenarios.