You are on page 1of 4

EXPERIMENT - 2

Objective: To implement Link State Routing Protocol

Theory: Link state routing is a method in which each router shares its neighborhood’s
knowledge with every other router in the internetwork. In this algorithm, each router in the
network understands the network topology then makes a routing table depend on this topology.
Each router will share data about its connection to its neighbor, who will, consecutively,
reproduce the data to its neighbors, etc. This appears just before all routers have constructed a
topology of the network.

Code:

from random import randint as ri


number_of_nodes = 8 # variable part
adjacency_matrix = [[10000 for i in range(
number_of_nodes)] for j in range(number_of_nodes)]
for i in range(number_of_nodes):
for j in range(number_of_nodes):
if i == j:
adjacency_matrix[i][j] = 0
else:
if ri(1, 10) > 5:
dist = ri(1, 20)
adjacency_matrix[i][j] = dist
adjacency_matrix[j][i] = dist

for item in adjacency_matrix:


print(item)
distances = [9999999]*number_of_nodes
visited_nodes = [0 for i in range(number_of_nodes)]
source_node = ri(0, number_of_nodes - 1)
destination_node = ri(0, number_of_nodes - 1)
distances[source_node] = 0
visited_nodes[source_node] = 1
print(source_node, destination_node)
distances = adjacency_matrix[source_node]
print('\n original distances: ', distances)
print('processing begins: \n')
for i in range(number_of_nodes):
dist_indices = []
for i in range(number_of_nodes):
dist_indices.append((distances[i], i))
dist_indices = sorted(dist_indices)
print(dist_indices)

for item in dist_indices[1:]:


print('considered item: ', item)
if visited_nodes[item[1]] == 1:
print('passed')
else:
if item[0] > 9999:
break
middle_node = item[1]
source_to_middle_dist = item[0]
vector_of_middle_node = adjacency_matrix[middle_node]
print('vector middle: ', vector_of_middle_node)
print('weight middle', source_to_middle_dist)
for i in range(number_of_nodes):
if i == middle_node or i == source_node:
continue
if vector_of_middle_node[i] + source_to_middle_dist < distances[i]:
distances[i] = vector_of_middle_node[i] + source_to_middle_dist

print('visited: ', visited_nodes)


print('updated: ', distances, '\n')

Output:

You might also like