<div dir="ltr">Hi,<br><br>I am trying to setup two route reflectors (that also pass traffic) that peer with ebgp (and exchange routes via ibgp between themselves). So something like.<br><br>as100                      as200<br>|                                |<br>|                                |<br>ebgp                         ebgp                                <br>|                                |<br>|                                |<br>RR1(as999)--- ibgp --- RR2(as999)<br>| \                            / |<br>|   \                        /   |<br>|     \                     /    |<br>|       \                 /      |<br>|         \             /        |<br>|           \        /           |<br>|             \   /              |  <br>|               X               |<br>|               / \              |<br>|             /     \            |<br>|           /        \           |<br>|         /           \          |<br>|       /              \         |<br>rr client 1          rr client 2<br><br>I came up with a config like this (for simplicity's sake I will only show RR1's side since it's the equivalent for RR2 with just slightly different parameters like ip addresses, etc.)<br><br># ebgp from RR1 to as100<br>protocol bgp ebgp_as100 {<br>        local as 1000;<br>        neighbor 100.100.100.100 as 100;<br>        export filter {<br>            if PREFIXES_TO_EXPORT() then accept;<br>            reject;<br>        }<br>        import filter {<br>            if PREFIXES_TO_IMPORT_LTE_24() then accept;<br>            reject;<br>        }<br>}<br><br><br># ibgp from RR1 to RR2<br>protocol bgp ibgp {<br>        local as 999;<br>        neighbor 10.0.0.2 as 999;<br>        source address 10.1.0.1;<br>        next hop self;<br>        rr cluster id 0.0.0.1; <br>}<br><br><br># RR1 to rr client 1 (also has one for rr client 2)<br>protocol bgp rr_client1{<br>    local as 999;<br>    neighbor 10.0.0.3 as 999;<br>    source address 10.1.0.1;<br>    rr client;<br>    rr cluster id 0.0.0.1;<br>    # next hop self #???<br>    export filter {<br>        if PREFIXES_TO_EXPORT() then accept;<br>        reject;<br>    };<br>    import filter {<br>        if PREFIXES_TO_IMPORT() then accept;<br>        reject;<br>    };<br>}<br><br>##########################################################<br><br># on rr client 1 to RR1 (also has one for RR2)<br>protocol bgp rr1_ibgp {<br>    local as 999;<br>    neighbor 10.0.0.1 as 999;<br>    source address 10.1.0.3;<br>    next hop self;<br>    export all;<br>    import all;  <br>}<br><br><br>This works, but with some problems.<br><br>Prefixes learned from AS100 and AS200 that get exported to RR clients are unreachable unless they passed through the IBGP connection between RR1 and RR2.<br><br>Makes sense, since the IBGP connection between RRs is defined with next hop self, and the RR client connections aren't.<br><br>So, I went in, and added "next top self" to the connections between RRs and RR clients. It has fixed the unreachable problem but caused another one.<br><br>Now prefixes that are exported on RR clients to RRs have their next hop changed which is not what I want. I want to leave them intact. (e.g. RR clients can export some private ip ranges which I don't want to be routable on the RRs)<br><br>So I *think* that I need a way on the RRs to only change next hop of EBGP prefixes that get exported from RRs to RR clients but leave other prefixes unaffected.<br><br>Is my thinking correct? How can this be achieved?<div><div><br></div><div>Thanks.</div><div><br><br><br><br><br><br><br></div></div></div>