# Step 2. Pinging after RIP convergence¶

## Goals¶

We show how RIP is used for progressively building up the routing tables of the routers. In order to keep the discussion easy to digest, in this step, we do not introduce any changes in the network while the simulation is running, and we do not use the advanced RIP features.

If you would like to brush up your RIP knowledge, you can find a good discussion of the distance-vector algorithm and RIP in this section of L. Peterson and B. Davie’s superb book Computer Networks: A Systems Approach, now freely available online.

## Network Configuration¶

We use the same network configuration as the previous one, except that we start the simulation with empty routing tables. The experiment is set up in omnetpp.ini, in section Step2:

The configuration in omnetpp.ini is the following:

[Config Step2]
description = "Pinging after RIP convergence"
network = RipNetworkA

# adding default routes in all hosts
*.configurator.config = xml("<config> \
<autoroute sourceHosts='host*'/> \
</config>")

# RIP parameters on routers
*.router*.hasRip = true
*.router*.rip.startupTime = uniform(0s,1s)
# disable advanced features for now!
*.router*.rip.ripConfig = xml("<config> \
<interface hosts='router*' mode='NoSplitHorizon' /> \
</config>")
*.router*.rip.triggeredUpdate = false

# Application parameters
*.host0.numApps = 1
*.host0.app[0].typename = "PingApp"
*.host0.app[0].startTime = 50s

# turning on global ARP to focus on the RIP messages
*.*.ipv4.arp.typename = "GlobalArp"  # TODO: for some reasons GlobalArp does not work -> it seems to work now

# Visualizer settings
*.visualizer.interfaceTableVisualizer[0].displayInterfaceTables = true


## Experiment¶

Observe in the following video how routers inform their neighbours and progressively build their routing tables (as indicated by the appearance of blue and red arrows linking the routers). At the end of a few iterations, we see the same routing configuration as Step 1.