Route learned over iBGP advertised over another iBGP.

17 views
Skip to first unread message

Pasquale Di Dio

unread,
Mar 1, 2016, 9:17:23 AM3/1/16
to OMNeT++ Users
Hi everyone.

I want to report this "strange case" to your attention.

I have 4 BGP Router connected into ring topology in iBGP session.  (and eBGP session to another AS each one)
  • Router1 and Router2 send the eBGP routing entry learned to the other router and viceversa. 
  • Router2 (that already have Router 1 entry) and Router3 share their routing entry one to another; Router2 advertise also the Router1 entry to Router3.
But Over an iBGP session, a router advertises only its best routes learned over eBGP sessions.
A route learned over an iBGP session is never advertised over another iBGP session.

 When a BGP speaker receives an UPDATE message from an internal peer,
   the receiving BGP speaker SHALL NOT re-distribute the routing
   information contained in that UPDATE message to other internal peers
   (unless the speaker acts as a BGP Route Reflector [RFC2796]).



I checked the "BGPRouting::updateSendProcess" method line 402 of this BGRRouting.cc on github 

 if ((_BGPSessions[sessionIndex]->getType() == IGP && (elem).second->getType() == EGP) ||
          _BGPSessions[sessionIndex]->getType() == EGP ||
          type == ROUTE_DESTINATION_CHANGED ||
          type == NEW_SESSION_ESTABLISHED)                <-------------------------------

Router2 decide to send learned entry from Router1 to Router3 because of this line.
Correctly not sended for this other query into the first if:

((elem).first == sessionIndex && type != NEW_SESSION_ESTABLISHED) ||
(type == NEW_SESSION_ESTABLISHED && (elem).first != sessionIndex) ||

I cannot "delete" the type == NEW_SESSION_ESTABLISHED because otherwise it will not send the query, and other EBGP session will not receive the entry.

Some ideas to fix it?

thx
Reply all
Reply to author
Forward
0 new messages