Dynamic routing is one of those things that sounds intimidating until you actually sit down and configure it yourself. The moment your routers start exchanging routes automatically and your pings start going through across the entire network — something clicks. That's exactly what happened when I built this project.
In this article, I'll walk through how I set up a multi-router GNS3 topology with eight PCs, three routers, and four separate subnets — and then configured it twice: once using RIP (Routing Information Protocol) and once using OSPF (Open Shortest Path First). Both projects use the exact same topology and IP scheme, which makes them a perfect side-by-side comparison of two completely different routing philosophies.
Problem Statement
The challenge was straightforward: given a fixed network topology with three routers (RouterA, RouterB, RouterC), four LANs, and eight end devices, configure dynamic routing so that any PC can reach any other PC — regardless of which subnet it's on.
The catch? You can't use static routes. The routers need to learn the paths themselves.
Network Topology Overview
The topology breaks down like this:
| Device | Interface | IP Address | Network |
|---|---|---|---|
| RouterA | f0/0 | 10.10.20.250/24 | LANA |
| RouterA | f2/0 | 10.10.100.1/24 | Link to RouterC |
| RouterA | f3/1 | 10.10.200.1/24 | Link to RouterB |
| RouterB | f2/0 | 10.10.200.2/24 | Link to RouterA |
| RouterB | f0/0 | 10.10.150.1/24 | Link to RouterC |
| RouterB | f3/0 | 10.10.10.250/24 | LANB |
| RouterB | f3/1 | 10.10.1.250/24 | LANC |
| RouterC | f0/0 | 10.10.100.2/24 | Link to RouterA |
| RouterC | f2/0 | 10.10.150.2/24 | Link to RouterB |
| RouterC | f3/0 | 10.10.5.250/24 | LAND |
End Devices:
| PC | IP Address | Default Gateway |
|---|---|---|
| PC1 | 10.10.20.1/24 | 10.10.20.250 |
| PC2 | 10.10.20.2/24 | 10.10.20.250 |
| PC3 | 10.10.10.1/24 | 10.10.10.250 |
| PC4 | 10.10.10.2/24 | 10.10.10.250 |
| PC5 | 10.10.1.1/24 | 10.10.1.250 |
| PC6 | 10.10.1.2/24 | 10.10.1.250 |
| PC7 | 10.10.5.1/24 | 10.10.5.250 |
| PC8 | 10.10.5.2/24 | 10.10.5.250 |
Project A — RIP Configuration
Step 1: Configure Router Interfaces
Before any routing protocol can work, every interface needs its IP address assigned and brought up. Here's how I did it for each router.
RouterA:
RouterA# enable
RouterA# configure terminal
RouterA(config)# interface f0/0
RouterA(config-if)# ip address 10.10.20.250 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# exit
RouterA(config)# interface f2/0
RouterA(config-if)# ip address 10.10.100.1 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# exit
RouterA(config)# interface f3/1
RouterA(config-if)# ip address 10.10.200.1 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# exit
RouterB:
RouterB# enable
RouterB# configure terminal
RouterB(config)# interface f2/0
RouterB(config-if)# ip address 10.10.200.2 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f0/0
RouterB(config-if)# ip address 10.10.150.1 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f3/1
RouterB(config-if)# ip address 10.10.1.250 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f3/0
RouterB(config-if)# ip address 10.10.10.250 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterC:
RouterC# enable
RouterC# configure terminal
RouterC(config)# interface f0/0
RouterC(config-if)# ip address 10.10.100.2 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# exit
RouterC(config)# interface f2/0
RouterC(config-if)# ip address 10.10.150.2 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# exit
RouterC(config)# interface f3/0
RouterC(config-if)# ip address 10.10.5.250 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# exit
Step 2: Configure End Devices (PCs)
Each PC in GNS3 uses VPCS. The command format is simple:
PC1> ip 10.10.20.1/24 10.10.20.250
PC1> save
Repeat for all eight PCs with their respective IP and gateway:
PC2> ip 10.10.20.2/24 10.10.20.250
PC3> ip 10.10.10.1/24 10.10.10.250
PC4> ip 10.10.10.2/24 10.10.10.250
PC5> ip 10.10.1.1/24 10.10.1.250
PC6> ip 10.10.1.2/24 10.10.1.250
PC7> ip 10.10.5.1/24 10.10.5.250
PC8> ip 10.10.5.2/24 10.10.5.250
Step 3: Enable RIP on All Routers
RIP tells each router which networks it's directly connected to, and from there it starts advertising those routes to its neighbors.
RouterA — RIP:
RouterA# enable
RouterA# configure terminal
RouterA(config)# router rip
RouterA(config-router)# network 10.10.20.0
RouterA(config-router)# network 10.10.100.0
RouterA(config-router)# network 10.10.200.0
RouterA(config-router)# exit
RouterA(config)# end
RouterA# wr
RouterB — RIP:
RouterB# enable
RouterB# configure terminal
RouterB(config)# router rip
RouterB(config-router)# network 10.10.1.0
RouterB(config-router)# network 10.10.10.0
RouterB(config-router)# network 10.10.150.0
RouterB(config-router)# network 10.10.200.0
RouterB(config-router)# exit
RouterB(config)# end
RouterB# wr
RouterC — RIP:
RouterC# enable
RouterC# configure terminal
RouterC(config)# router rip
RouterC(config-router)# network 10.10.5.0
RouterC(config-router)# network 10.10.100.0
RouterC(config-router)# network 10.10.150.0
RouterC(config-router)# exit
RouterC(config)# end
RouterC# wr
Project B — OSPF Configuration
The IP addresses on all routers and PCs remain exactly the same. The only difference is replacing the RIP process with OSPF.
Step 1: Remove RIP (if reconfiguring)
RouterA(config)# no router rip
Repeat on RouterB and RouterC.
Step 2: Enable OSPF on All Routers
OSPF requires a process ID (locally significant) and you advertise networks with their wildcard mask and an area number. For a simple single-area setup, we use area 0.
RouterA — OSPF:
RouterA# enable
RouterA# configure terminal
RouterA(config)# router ospf 1
RouterA(config-router)# network 10.10.20.0 0.0.0.255 area 0
RouterA(config-router)# network 10.10.100.0 0.0.0.255 area 0
RouterA(config-router)# network 10.10.200.0 0.0.0.255 area 0
RouterA(config-router)# exit
RouterA(config)# end
RouterA# wr
RouterB — OSPF:
RouterB# enable
RouterB# configure terminal
RouterB(config)# router ospf 1
RouterB(config-router)# network 10.10.1.0 0.0.0.255 area 0
RouterB(config-router)# network 10.10.10.0 0.0.0.255 area 0
RouterB(config-router)# network 10.10.150.0 0.0.0.255 area 0
RouterB(config-router)# network 10.10.200.0 0.0.0.255 area 0
RouterB(config-router)# exit
RouterB(config)# end
RouterB# wr
RouterC — OSPF:
RouterC# enable
RouterC# configure terminal
RouterC(config)# router ospf 1
RouterC(config-router)# network 10.10.5.0 0.0.0.255 area 0
RouterC(config-router)# network 10.10.100.0 0.0.0.255 area 0
RouterC(config-router)# network 10.10.150.0 0.0.0.255 area 0
RouterC(config-router)# exit
RouterC(config)# end
RouterC# wr
How to Verify — Connectivity Tests
Once RIP (or OSPF) is configured on all routers, give it about 30–60 seconds for routes to converge. Then run pings from the PCs.
Ping PC8 from PC1
PC1 is on 10.10.20.0/24 (LANA under RouterA).
PC8 is on 10.10.5.0/24 (LAND under RouterC).
These are on completely different sides of the network.
PC1> ping 10.10.5.2
Expected output:
84 bytes from 10.10.5.2 icmp_seq=1 ttl=62 time=xxx ms
84 bytes from 10.10.5.2 icmp_seq=2 ttl=62 time=xxx ms
84 bytes from 10.10.5.2 icmp_seq=3 ttl=62 time=xxx ms
Ping PC7 from PC3
PC3 is on 10.10.10.0/24 (LANB under RouterB).
PC7 is on 10.10.5.0/24 (LAND under RouterC).
PC3> ping 10.10.5.1
To verify what routes each router has learned, run:
RouterA# show ip route
You'll see entries marked R (for RIP) or O (for OSPF) next to any network that was learned dynamically — not just the ones directly connected.
RIP vs OSPF — Quick Comparison
| Feature | RIP | OSPF |
|---|---|---|
| Type | Distance-Vector | Link-State |
| Metric | Hop count (max 15) | Cost (based on bandwidth) |
| Convergence | Slower | Faster |
| Scalability | Small networks | Large, enterprise networks |
| Algorithm | Bellman-Ford | Dijkstra (SPF) |
| Advertisement | Full table every 30s | Only on topology changes |
| Network declaration | Network address | Network + wildcard mask + area |
| Route identifier in table | R |
O |
What I Learned
Working through both projects back to back made the differences between RIP and OSPF much clearer than any textbook explanation could. A few things that stood out:
RIP is dead simple to configure — if your network is small and you just need routes to propagate, it gets the job done in a few commands. But the 15-hop limit and the 30-second update cycle are real limitations.
OSPF requires more thought upfront — you need to understand wildcard masks and areas. But once it's running, it's noticeably more intelligent about path selection and doesn't flood unnecessary updates.
The routing table tells the whole story. Running
show ip routeafter each configuration and watching the entries change fromC(connected) toRorOis genuinely satisfying. It confirms the protocol is working.Gateway configuration on end devices matters more than people think. If a PC doesn't have the right default gateway set, pings fail no matter how correct the routing protocol is — and it's an easy thing to overlook.
Convergence time is real. With RIP especially, if you ping immediately after configuring, you might see failures. Give it a minute and try again.
Common Mistakes
| Mistake | Why It Happens | Fix |
|---|---|---|
| Interface stays down after IP assignment | Forgot no shutdown
|
Always run no shutdown after assigning an IP |
| RIP not advertising a network | Wrong network address entered | Double-check with show ip route — use the classful network |
| OSPF routes not appearing | Wrong wildcard mask or wrong area | Wildcard mask is the inverse of subnet mask; area must match on all routers |
| Ping fails even with routes present | PC gateway is wrong | Re-check PC gateway — it must point to the correct router interface |
% Invalid input detected in RIP |
Tried to use wildcard in RIP config | RIP only takes classful network addresses, no wildcard needed |
| Routes learned but ping still fails | Interface on far end is down | Check all interfaces with show ip interface brief
|
Conclusion
Setting up RIP and OSPF on the same topology is one of the best ways to understand what dynamic routing actually does for you — and what each protocol's trade-offs are. RIP is the quick and easy choice for small, simple networks. OSPF is more involved but far more capable.
If you're getting started with networking and haven't tried configuring dynamic routing in GNS3 yet, this is a great project to take on. The moment your pings start crossing multiple subnets without a single static route in sight — you'll understand why dynamic routing matters.
Have questions about the configuration or want to compare notes on your own GNS3 setup? Drop a comment below.




















Top comments (0)