VOOZH about

URL: https://www.geeksforgeeks.org/c/program-for-ip-forwarding-table-lookup/

⇱ Program for IP forwarding table lookup - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Program for IP forwarding table lookup

Last Updated : 22 May, 2024

In Unix operating system, there is a routing table that contains a certain number of tuples. These tuples are consist of network IP, subnet mask, gateway IP, and interface name. These details are used to forward a packet to the outside of its network to connect to the internet. So this article gives an idea of how the system takes the decision when a packet is needed to be forwarded. 

Examples: 

Input: 201.2.2.2
Output: 12.23.44.1 eth9
Here, there is no network IP entry in the routing table
which starts with "201". In this case it will 
choose default path(0.0.0.0, 0.0.0.0, 12.23.44.1, eth9). 
Still, it will perform bitwise AND operation with 
each entry and then chooses default path's interface 
and gateway to send packet outside. Default path means 
interface to which system is directly connected.

Input: 200.200.200.1
Output: 190.164.1.2 eth0
Here bitwise AND operation is performed 
with each entry of routing table and correspondent 
network's interface name and gateway IP is returned.

How forwarding of the packet works?
This can be understood easily with the help of a small example:

  • Suppose there is a packet with IP address "20.129.0.1" and the routing table has the following entries:
Network's IP AddressSubnet MaskGateway's IP AddressInterface Name
200.200.16.0255.255.248.0192.13.2.55eth4
200.200.200.0255.255.248.0192.13.2.55eth4
0.0.0.00.0.0.012.23.44.1eth9
20.128.0.0255.128.0.012.1.1.1eth1
20.0.0.0255.0.0.012.1.1.1eth2
20.0.0.0255.128.0.012.1.1.1eth3
  • So when the packet goes to the kernel of the system to find the gateway and interface, it will first perform a bitwise AND operation with a subnet mask of each entry to find the Longest prefix match
  • The result of the bitwise AND operation is then compared with the network's IP address. So it will return the correspondent IP address of the gateway and interface's name through which the packet can go out. 
  • The binary representation of 20.129.0.1 is 00010100.10000001.00000000.00000001. It then performs a bitwise AND operation with a subnet mask for each and every entry of the routing table. 
  • In this table that entry number is 4( i.e. 20.128.0.0, 255.128.0.0, 12.1.1.1, eth1) which gives the longest prefix match for this packet. So packet will go out from the eth1 interface and choose the gateway 12.1.1.1 for forwarding.
👁 Image

Below is the implementation of the above approach using the Linked List data structure. It takes 2 files as an input and returns output in another file mentioned above.

Input files and Output files

  • File "input.txt" represents the IP address of a packet.
  • File "routing.txt" contains routing table entries to which IP address is going to be matched.
  • File "output.txt" contains outputs for each input.

Program:  

Comment
Article Tags: