*2.5.1. Usage*

**•** If the creation time is from a future point than the current time, the object will be ignored, and the user will be announced about this exception. Again, similar to the first exception, it

Proceedings of the International Conference on Interdisciplinary Studies (ICIS 2016) - Interdisciplinarity and Creativity

Because each device processes its buffers on another thread, the main program will not wait for it to finish processing, as well all the other devices will not wait for each other. Thus, the

For didactical purposes, for a clearer observation of the simulation, the multi-threading facility

The HypeRSimRIP program has a series of experimental facilities that allow modifications of

**•** The possibility to change the randomization interval of the automatic updates trigger

These changes can be done during the network design stage from the Settings window (see

For the infinite value change facility, the most suggestive examples are those with chain-linked routers. By default, the application comes with two such predefined examples: one with 20

can be disabled from the Settings windows of the program (see Figure 5).

some standard parameters of the RIP protocol. These include

has failed to occur yet.

in the Knowledge Society

64

**2.4. Experimental facilities**

period.

Figure 5).

execution order is non-deterministic, as in real life.

**•** The possibility to change the value of infinity.

**Figure 5.** Settings window—Default-Start values.

chain-linked routers and another with 30 chain-linked routers.

Once a network topology was designed in the program (see Figure 6), the IPv4 addresses were assigned (see Table 2) and the devices were activated (see Figure 7), all the devices start to transmit RIP datagrams and thus start to complete their individual routing tables.


**Table 2.** Assigned parameters example—file automatically generated by the application

By selecting two online devices, the program will start to determine the route between them by using the routing data generated by each device at that given moment (see Figure 8). Note the fact that the utilized highlight algorithm is progressive, thus the topology or the routing information have time to change during the route tracing (see Figure 9).

**Figure 6.** Network topology example.


**Figure 7.** (a) Window that allows rapid multiple device activation/deactivation. (b) Online devices.

### *2.5.2. Programming*

The programming of this tool relies on two main elements:

**•** The function

pinging(Device d1, Device d2): void

**Figure 8.** (a) The route from H1 to H6 is highlighted. (b) Destination reached alert message.

**Figure 9.** (a) In the event of the deactivation of the connection between the central router and the third floor, the route from H1 to H6 got blocked at the central router. (b) The message given by the program for this situation.

**•** The timer

**Figure 6.** Network topology example.

in the Knowledge Society

66

*2.5.2. Programming*

**•** The function

**Figure 7.** (a) Window that allows rapid multiple device activation/deactivation. (b) Online devices.

Proceedings of the International Conference on Interdisciplinary Studies (ICIS 2016) - Interdisciplinarity and Creativity

The programming of this tool relies on two main elements:

pinging(Device d1, Device d2): void

timer\_ping

The function pinging is called, once the program detects the selection of two devices (indifferent of the types: host-host, host-router, router-host or router-router). d1 represents the first selected device and d2 the latter, the order being of upmost importance because the transmission is unidirectional.

In the algorithm, two global variables current\_ping and end\_ping are initialized with the devices d1 and d2, respectively. They represent the device in which the ping transmission has currently arrived and respectively the final destination of the ping transmission.

Furthermore, verification is in need to check if the sender is online; this is done in order to avoid having an offline device that is sending pings. If the result is positive, current\_ping is highlighted and the timer\_ping counter is started.

This functionality, as observed, has a distinct time counter, separated than that of the simula‐ tion time counter, in order to further simulate reality; in real life, there is not any dependence correlation between the two temporal measurements (the ping datagrams are different than the RIP datagrams). Didactically, the analysis of some well-defined situations, in which, for example, the update timers are frozen, is thus possible.

The timer\_ping chronometer is set to 500 ms and after the timer\_ping.Start(); command the 'tick' function

```
timer_ping_Tick(object sender, EventArgs e):void
```
will be periodically activated (every 500 ms).

At the beginning of this event management function, because of the complexity of the calculations, the timer is stopped and it will be restarted for the next step, after a new part of the route is highlighted.

The general form of a route is H-R-R-R-...-R-H, H-R-R-R-R-...-R, -R-R-R-...-R-H or R-R-R-...-R, where H means host and R means router. Thus, the following algorithm is:

**Step 1.** If current\_ping is offline, then **STOP** – the device must have encountered a failure (i.e. went offline) during the tracing process.

Step 2. If current\_ping is a host, then the existence of a connection between the current host and a router is checked. If the answer is negative, then the host must be isolated **STOP**. If the found connection is deactivated **STOP**. Otherwise, the found connection with its router is highlighted. If this router is in fact end\_ping, the destination must have been thus reached, otherwise timer\_ping is restarted.

The meaning of this step is that in order to discover another device, a host must first contact directly its connected router.

Step 3. In this moment of the algorithm, current\_ping must be a router, but there still is a need to discover the nature of end\_ping (host or router). If end\_ping is a host, a local variable ender\_ping is initialized with its directly connected router. If there is no such thing, then the final receiver is an isolated host **STOP**. If end\_ping is a router, then ender\_ping will be initialized with end\_ping as a value.

This step has the following explication: the current router, by having the destination IP address, can calculate the IP address of the destination network, by doing so, it can calculate the transmission route via the routing table (as it will be seen in the next step).

Also, if end\_ping was a host, it is important to check if current\_ping is equal to ender\_ping, which would mean that the destination is actually a host of the current router. In this eventuality, it remains to be verified if the host exists, if the connection is active and if the host is online, in which case the package is forwarded (i.e. the route and the host are highlighted and the user is announced that the destination was reached).

Step 4. At this point, only the route from current\_ping to ender\_ping needs to be determined. This route has the following general form: R-R-R-...-R, so the routing tables can finally be used. current\_ping will search in his routing table the network IP address (calculated based upon the destination IP address) of ender\_ping. If there is no such entry **STOP**. If it exists, from the entry, the transmission connection can be determined. If this connection is inactive **STOP**. Otherwise, the connection is highlighted. If the next hop (the next router) is offline **STOP**. Otherwise, the next hop is highlighted. current\_ping is reinitialized with this next router and it will be verified if the destination was reached. If it was reached, the application will notify the user, and if not timer\_ping is restarted.
