Step 5b. Enabling BGP on RB3¶
Goals¶
Step 5b demonstrates the second (and preferred) solution to the transit reachability problem: running BGP on all routers within the transit AS (Full-mesh I-BGP).
In this scenario:
RB3 is now configured to run BGP.
BGP sessions are established between all pairs of routers in AS 64600 (RB1-RB2, RB1-RB3, RB2-RB3).
Every router learns external routes directly via BGP, eliminating the need to redistribute internal BGP routes into OSPF.
Configuration¶
This step extends Step 5.
The configuration in omnetpp.ini enables BGP on RB3:
*.RB3.hasBgp = true
*.R*.bgp.bgpConfig = xmldoc("BGPConfig_Multi_RB3.xml")
The configuration in omnetpp.ini is the following:
[Config Step5b]
description = "Enabling BGP on RB3"
extends = Step5
*.routingTableRecorder.logfile = "step5b.rt"
*.pcapRecorder.pcapFile = "step5b.pcap"
# enable BGP on RB3
*.RB3.hasBgp = true
*.R*.bgp.bgpConfig = xmldoc("BGPConfig_Multi_RB3.xml")
The BGP configuration:
<?xml version="1.0" encoding="ISO-8859-1"?>
<BGPConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="BGP.xsd">
<TimerParams>
<connectRetryTime> 120 </connectRetryTime>
<holdTime> 180 </holdTime>
<keepAliveTime> 60 </keepAliveTime>
<startDelay> 60 </startDelay>
</TimerParams>
<AS id="64500">
<!--router RA4-->
<Router interAddr="10.0.0.1" />
</AS>
<AS id="64600">
<!--router RB1-->
<Router interAddr="20.0.0.5" >
<Neighbor address='20.0.0.1' nextHopSelf='true' />
<Neighbor address='20.0.0.6' nextHopSelf='true' />
</Router>
<!--router RB2-->
<Router interAddr="20.0.0.1" >
<Neighbor address='20.0.0.5' nextHopSelf='true' />
<Neighbor address='20.0.0.6' nextHopSelf='true' />
</Router>
<!--router RB3-->
<Router interAddr="20.0.0.6" />
</AS>
<AS id="64700">
<!--router RC1-->
<Router interAddr="30.0.0.1" />
</AS>
<!--bi-directional E-BGP session between RA4 and RB1-->
<Session id="1">
<Router exterAddr="192.168.0.6"/>
<Router exterAddr="192.168.0.5"/>
</Session>
<!--bi-directional E-BGP session between RB2 and RC1-->
<Session id="2">
<Router exterAddr="192.168.0.1"/>
<Router exterAddr="192.168.0.2"/>
</Session>
</BGPConfig>
Results¶
In this simulation, the “BGP hole” is resolved through a full-mesh I-BGP configuration:
BGP Adjacencies: RB3 establishes I-BGP sessions with both RB1 and RB2.
Direct Route Learning: Unlike Step 5, where RB3 was unaware of external routes, it now receives BGP UPDATE messages from RB1 (about RA’s networks) and RB2 (about RC’s networks).
Successful Transit: Because RB3 has these routes in its BGP table, it can successfully forward packets between RB1 and RB2.
This demonstrates the standard approach in large networks: every router in the transit path between BGP border routers should also run BGP to ensure proper packet forwarding without overwhelming the IGP with external routes.
Sources: BGP_Topology_3.ned,
omnetpp.ini,
BGPConfig_Multi_RB3.xml
Discussion¶
Use this page in the GitHub issue tracker for commenting on this tutorial.