Thursday, February 1, 2018

IBGP injecting global routes from EBGP

Hi,

 

I have two edge routers R1 and R2. Each have EBGP sessions to upstream providers and receive full routes.

 

To exchange these routes, R1 and R2 have an IBGP session established between themselves.

 

These routes are placed in a GLOBAL table (or VRF if you will - I am using Linux and Bird for BGP)

 

 

R1 and R2 are also configured as route reflectors for my internal routes. (Using an INTERNAL table to store them).

 

To exchange these routes between themselves I have another IBGP session between R1 and R2. To make it work, I am using a different ip address to establish this session.

 

I have other routers R3, R4, R5 ... that establish IBGP sessions to R1 and R2 (route reflectors) to exchange my internal routes.

 

I leak some routes from the INTERNAL table to the GLOBAL table that are meant to be routeable on the edge routers (e.g. non RFC 1918 addresses).

   

Problem:

 

I would like to pass some/all global routes to select routers (R3, R4). What is the best way of achieving it?

 

Option 1 (Utilizing the existing route reflector IBGP sessions):

 

1) On the route reflectors leak routes from the GLOBAL table to the INTERNAL table and tag them with some bgp community.  

2) On the route reflectors, for each ibgp rr client session to R3 and R4 filter the outgoing routes based on the community tag to let them pass. For other ibgp rr client sessions I would reject these routes.

 

pros:  

  • using the exising single ibgp session  

cons:  

  • I will pollute the INTERNAL table with GLOBAL routes on the route reflectors  

  • I will need to be careful with route filtering on the route reflectors, otherwise I can accidentally push full routes to other routers. This is additional work.  

   

Option 2 (Establishing a second IBGP session):

 

1) Slap a different ip address (e.g. on a loopback interface) on R3 and R4

 

2) Establish a second IBGP session to R1 and R2 from R3 and R4.

 

pros:  

  • this will work  

  • I don't need to touch other route reflector ibgp sessions (to update filters).  

  • I can export the routes I want inside the newly established ibgp sessions.  

  • I won't pollute the INTERNAL table on the route reflectors with routes from the GLOBAL table.
     

cons: - second ibgp session  

   

What would be the better thing to do? I am leaning towards option 2.

   

Thank you.



No comments:

Post a Comment