0

Similar to the question asked yesterday, as a part of an experiment, my network has the following topology for two host machines connected to a router in mininet(on Ubuntu 22.04.02 Virtual Machine)

     h1 - r1 - r2 - h2      

The host Machine 'h1' has the following configuration:

h1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.103  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::70e9:dfff:fe2c:6242  prefixlen 64  scopeid 0x20<link>
        ether 72:e9:df:2c:62:42  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The host Machine 'h2' has the following config:

h2-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::f429:9fff:fe6a:5211  prefixlen 64  scopeid 0x20<link>
        ether f6:29:9f:6a:52:11  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The router r1 has the following config:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::10dc:6cff:feb2:1688  prefixlen 64  scopeid 0x20<link>
        ether 12:dc:6c:b2:16:88  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1076 (1.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r1-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.1  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::8cd5:99ff:fedf:e2a8  prefixlen 64  scopeid 0x20<link>
        ether 8e:d5:99:df:e2:a8  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1076 (1.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The router r2 has the following configuration:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r2-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::87d:6aff:fee9:477  prefixlen 64  scopeid 0x20<link>
        ether 0a:7d:6a:e9:04:77  txqueuelen 1000  (Ethernet)
        RX packets 21  bytes 1398 (1.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

r2-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.2  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::cc40:70ff:fe31:f96d  prefixlen 64  scopeid 0x20<link>
        ether ce:40:70:31:f9:6d  txqueuelen 1000  (Ethernet)
        RX packets 15  bytes 1146 (1.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1146 (1.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

I am trying to setup the experimental topology such that both the hosts can access each other, which of course, is possible through configuring routing tables

I have taken the following steps:

On the r1 terminal(xterm):

    ifconfig r1-eth0 192.168.0.1 netmask 255.255.255.0  
    ifconfig r1-eth1 192.168.2.1 netmask 255.255.255.0  
    ip route add 192.168.0.0/24 dev r1-eth0   
    ip route add 192.168.1.0/24 via 192.168.2.2

On the r2 terminal(xterm):

    ifconfig r2-eth0 192.168.1.1 netmask 255.255.255.0
    ifconfig r2-eth1 192.168.2.2 netmask 255.255.255.0  
    ip route add 192.168.0.0/24 via 192.168.2.1   
    ip route add 192.168.2.0/24 dev r1-eth1 

On the h1 terminal (xterm)

    ifconfig h1-eth0 192.168.0.103 netmask 255.255.255.0
    route add default gw 192.168.0.1
    ip route add 192.168.1.0/24 via 192.168.0.1

On the h2 terminal (xterm)

    ifconfig h2-eth0 192.168.1.2 netmask 255.255.255.0
    route add default gw 192.168.1.1
    ip route add 192.168.0.0/24 via 192.168.1.1

The updated routing tables for h1, h2, r1 and r2 are as follows:

h1 Routes:

    Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 h1-eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 h1-eth0
192.168.1.0     192.168.0.1     255.255.255.0   UG    0      0        0 h1-eth0

h2 routes:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 h2-eth0
192.168.0.0     192.168.1.1     255.255.255.0   UG    0      0        0 h2-eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 h2-eth0

r1 route tables:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 r1-eth1

r2 route tables :

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 r2-eth1

When I try pinging h2 from h1 and vice versa I get destination host unreachable error.

where am I going wrong? Is there a step I have skipped? Any insight/help is appreciated.

Edit1: Made changes to the 'via' IP in host1 terminal

PS: The following is my ping reachability matrix:

*** Ping: testing ping reachability
r1 -> r2 h1 X 
r2 -> r1 X X 
h1 -> r1 r2 X 
h2 -> r1 r2 X  
1
  • Unfortunately, questions about hosts/servers/VMs are off-topic here. You could try to ask this question on Super User.
    – Ron Maupin
    Apr 30 at 0:02

1 Answer 1

0

Routers populate their routing table in three ways:

  • directly attached subnets are added automatically
  • remote networks may be added using static routes
  • remote networks are exchanged using routing protocols like OSPF

Since two of your three subnets are directly connected to each router, you only need to add the remote host network by using a static route. Remove the redundant routes for the inter-router subnet.

I'd use a default route on h1 pointing to 192.168.0.1 and on h2 pointing to 192.168.1.1. Hosts usually just have a single default route/gateway.

On r1 you need a static route for 192.168.1.0/24 via 192.168.2.2 and on r2 a route for 192.168.0.0/24 via 192.168.2.1.

2
  • Hi I restarted my system and followed your pointers. Still, my ping reachability matrix looks like the one in the update. Apr 29 at 22:20
  • What could be why host2 can reach router2 but not vice versa? The host machines can reach both routers but not the target host machine.Am I missing something here? Apr 30 at 0:25

Not the answer you're looking for? Browse other questions tagged or ask your own question.