[Bird2] Doubt about Route Server function and iBGP
Hello Guys, On bird1.6, I have deployed our Route Servers using the below architecture to split the load from the control plane: Customer1 <-> RS1[pid0] <-> iBGP <-> RS2[pid1] <-> Customer2 And is working fine as RS until now [not inserting local AS on AS-PATH and not changing NH]. I'm planing to migrate to Bird2.0.2 with some new features, but when I do the same on Bird2.0.2, I have the AS from iBGP inserted on AS-PATH, just to let me know, this is an expected behavior on Bird2? I have tested in a lot of ways, but still the same results. []s
On Mon, Sep 24, 2018 at 02:21:42PM -0300, heisenbug at xpto wrote:
Hello Guys,
On bird1.6, I have deployed our Route Servers using the below architecture to split the load from the control plane:
Customer1 <-> RS1[pid0] <-> iBGP <-> RS2[pid1] <-> Customer2
And is working fine as RS until now [not inserting local AS on AS-PATH and not changing NH]. I'm planing to migrate to Bird2.0.2 with some new features, but when I do the same on Bird2.0.2, I have the AS from iBGP inserted on AS-PATH, just to let me know, this is an expected behavior on Bird2? I have tested in a lot of ways, but still the same results.
Hi You are right, BIRD 2 would not insert local AS only if propagated from EBGP-RS to EBGP-RS. The main motivation for the change is to better handle the case when a route is propagated from EBGP to EBGP-RS, where it makes sense to prepend local AS. You are right that in your case the old behavior makes more sense. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Thanks Ondrej, As workaround I have changed the source to not validate if rs client function is applied on iBGP neighbors, I know that is not the common use case, I just need that for this particular use case, do you see any complications on that? ~/source/bird-v2.0.2/proto/bgp# diff -u bgp.c.orig bgp.c --- bgp.c.orig 2018-09-25 10:19:04.406376518 -0300 +++ bgp.c 2018-09-24 14:05:55.690726481 -0300 @@ -1657,8 +1657,8 @@ if (!internal && cf->rr_client) cf_error("Only internal neighbor can be RR client"); - if (internal && cf->rs_client) - cf_error("Only external neighbor can be RS client"); +/* if (internal && cf->rs_client) + cf_error("Only external neighbor can be RS client");*/ if (!cf->confederation && cf->confederation_member) cf_error("Confederation ID must be set for member sessions"); And without the validation: Customer1 <-> RS1[pid0] <-rs client-> iBGP <-rs client-> RS2[pid1] <-> Customer2 Now everything is working fine for my use case, because is not prepending the AS and changing the NH. []s On 25/09/2018 10:14, Ondrej Zajicek wrote:
On Mon, Sep 24, 2018 at 02:21:42PM -0300, heisenbug at xpto wrote:
Hello Guys,
On bird1.6, I have deployed our Route Servers using the below architecture to split the load from the control plane:
Customer1 <-> RS1[pid0] <-> iBGP <-> RS2[pid1] <-> Customer2
And is working fine as RS until now [not inserting local AS on AS-PATH and not changing NH]. I'm planing to migrate to Bird2.0.2 with some new features, but when I do the same on Bird2.0.2, I have the AS from iBGP inserted on AS-PATH, just to let me know, this is an expected behavior on Bird2? I have tested in a lot of ways, but still the same results.
Hi
You are right, BIRD 2 would not insert local AS only if propagated from EBGP-RS to EBGP-RS. The main motivation for the change is to better handle the case when a route is propagated from EBGP to EBGP-RS, where it makes sense to prepend local AS. You are right that in your case the old behavior makes more sense.
Hi, Just to check, I tried on a lab environment with Cisco devices, using the same topology/idea, two eBGP with rs client capability passing through an iBGP do not prepend AS on AS-PATH. []s On 25/09/2018 10:28, heisenbug at xpto wrote:
Thanks Ondrej,
As workaround I have changed the source to not validate if rs client function is applied on iBGP neighbors, I know that is not the common use case, I just need that for this particular use case, do you see any complications on that?
~/source/bird-v2.0.2/proto/bgp# diff -u bgp.c.orig bgp.c --- bgp.c.orig 2018-09-25 10:19:04.406376518 -0300 +++ bgp.c 2018-09-24 14:05:55.690726481 -0300 @@ -1657,8 +1657,8 @@ if (!internal && cf->rr_client) cf_error("Only internal neighbor can be RR client");
- if (internal && cf->rs_client) - cf_error("Only external neighbor can be RS client"); +/* if (internal && cf->rs_client) + cf_error("Only external neighbor can be RS client");*/
if (!cf->confederation && cf->confederation_member) cf_error("Confederation ID must be set for member sessions");
And without the validation:
Customer1 <-> RS1[pid0] <-rs client-> iBGP <-rs client-> RS2[pid1] <-> Customer2
Now everything is working fine for my use case, because is not prepending the AS and changing the NH.
[]s
On 25/09/2018 10:14, Ondrej Zajicek wrote:
On Mon, Sep 24, 2018 at 02:21:42PM -0300, heisenbug at xpto wrote:
Hello Guys,
On bird1.6, I have deployed our Route Servers using the below architecture to split the load from the control plane:
Customer1 <-> RS1[pid0] <-> iBGP <-> RS2[pid1] <-> Customer2
And is working fine as RS until now [not inserting local AS on AS-PATH and not changing NH]. I'm planing to migrate to Bird2.0.2 with some new features, but when I do the same on Bird2.0.2, I have the AS from iBGP inserted on AS-PATH, just to let me know, this is an expected behavior on Bird2? I have tested in a lot of ways, but still the same results.
Hi
You are right, BIRD 2 would not insert local AS only if propagated from EBGP-RS to EBGP-RS. The main motivation for the change is to better handle the case when a route is propagated from EBGP to EBGP-RS, where it makes sense to prepend local AS. You are right that in your case the old behavior makes more sense.
On Wed, Sep 26, 2018 at 10:43:02AM -0300, heisenbug at xpto wrote:
Hi,
Just to check, I tried on a lab environment with Cisco devices, using the same topology/idea, two eBGP with rs client capability passing through an iBGP do not prepend AS on AS-PATH.
Yes, your patch should work AFAIK. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Thanks Ondrej. []s On 26/09/2018 10:53, Ondrej Zajicek wrote:
On Wed, Sep 26, 2018 at 10:43:02AM -0300, heisenbug at xpto wrote:
Hi,
Just to check, I tried on a lab environment with Cisco devices, using the same topology/idea, two eBGP with rs client capability passing through an iBGP do not prepend AS on AS-PATH.
Yes, your patch should work AFAIK.
Hi! One last question, for bird2, the project will mantain this understand about ebgp rs client passing trought ibgp prepending[adding] the local ASN on AS-PATH? Or there's plans to run as it was on bird1.6 and vendors devices like cisco? []s On 26/09/2018 12:40, heisenbug at xpto wrote:
Thanks Ondrej.
[]s
On 26/09/2018 10:53, Ondrej Zajicek wrote:
On Wed, Sep 26, 2018 at 10:43:02AM -0300, heisenbug at xpto wrote:
Hi,
Just to check, I tried on a lab environment with Cisco devices, using the same topology/idea, two eBGP with rs client capability passing through an iBGP do not prepend AS on AS-PATH.
Yes, your patch should work AFAIK.
participants (2)
-
heisenbug at xpto -
Ondrej Zajicek