I've two routers on my ISP's core. First of them is a bit old Cisco gear, which is where I have eBGP sessions with my upstreams, IX and downstreams. The second is a MikroTik CCR, which act as DHCP Server, firewall, etc. for my customers.
Due to increasing of our network, the old Cisco router is not being able to deal with all current traffic fluidly, but because of internal reasons we can't change it to another gear for now.
I'm considering redirect all incoming traffic directly to MikroTik gear, in a such way it doesn't need to be routed by Cisco one. But I'm not sure it is possible.
I use a /29 range with each of my upstreams, so I can have MikroTik router addressed within same range as my and upstream's border routers. Ex.:
- Upstream's 1st router: 198.51.100.1/29
- Upstream's 2nd router: 198.51.100.2/29
- My Cisco router: 198.51.100.6/29
- My MikroTik router: 198.51.100.5/29
192.0.2.1 is default gateway for MikroTik router (192.0.2.2).
It would be easy to get this solved using as-path prepend if MikroTik gear was running BGP, but it isn't and can't get being for technical and commercial reasons.
I thought the redirection could be done by changing advertised prefixes' BGP next-hop attribute to MikroTik router's IP address, in the following way (in conformance with above network diagram):
route-map CHANGE_NEXTHOP permit 10 set ip next-hop 198.51.100.5 ! router bgp XXXXXX neighbor 198.51.100.1 route-map CHANGE_NEXTHOP out neighbor 198.51.100.2 route-map CHANGE_NEXTHOP out !
That way, upload traffic would flow through direct connection between both routers, whereas download traffic would flow from upstreams directly to MikroTik router.
However, I read somewhere this is only possible when BGP sessions are multihop, not when neighbors are directly connected. Moreover, from what I understood, changing next-hop is an iBGP only feature.
I'm far from being a Cisco expert and searched a lot but found no conclusive answer to my doubts, so could somebody tell me if is it possible to do what I described in above config. snippet or suggest any solution to my tricky situation?
Unfortunately I currently have no ways to run it on a lab (even using virtual machines) to test if works as intended.
I will be thankful for this and any further information you provide.