Hello bird-users,

(email send in html to prevent text wrapping, .txt version attached)

running bird 1.2.3 ppa x64 ubuntu 10.04LTS. 2 bird routers connected with 2 iBGP sessions over different links.

I'm trying to route specific outgoing traffic over a specific Transit.
It starts with that I'm not really sure how to do it, so tested a bit. Setting Local performance
on protocol definition works just fine for a complete  Transit, however when i want to do it more fine grained, i run into trouble.

First started with prepending routes in bgp input filter with my own AS, which works OK on a single bird router, however, with iBGP all prepended local AS-es are stripped, and that concept doesn't work.
Then, started to set the preference in the bgp input filter, which also works fine on a single bird router, but that preference seems not to propagate to the second iBGP router.


on router1 i set in the bgp input filter the preference to 300 for a specific network(91.189.88.0/21), and on router 2 the preference to 400.
What i would want, is that both iBGP routers agree on route for a specific manual
overruled prefix.


below you can see each router takes its direct route to a Transit, relevant
filters and show route all below.

Any idea on how you want to do that?

detail info:

router1:
bird> show route 91.189.88.0/21
91.189.88.0/21     via <Transit1_BGPRTR_1> on eth5 [Transit1_BGPRTR_1 2010-06-09 10:30:31] * (300) [AS41231i]
                   via <iBGP_router2_gw1> on eth0 [iBGP_router1_1 2010-06-09 11:22:55] (100) [AS41231i]
                   via <iBGP_router2_gw2> on eth1 [iBGP_router1_2 2010-06-09 11:22:55] (100) [AS41231i]
                   via <Transit1_BGPRTR_2> on eth5 [Transit1_BGPRTR_2 2010-06-09 10:30:34] (300) [AS41231i]

router2:
bird> show route 91.189.88.0/21
91.189.88.0/21     via <Transit2_BGPRTR_1> on eth5 [Transit2_BGPRTR_1 2010-06-09 11:22:06] * (400) [AS41231i]
                   via <iBGP_router1_gw1> on eth1 [iBGP_router1_1 2010-06-09 10:29:43] (100) [AS41231i]
                   via <Transit3_BGPRTR_1> on opn-ext.382 [Transit3_BGPRTR_1 2010-06-09 11:19:12] (100) [AS41231i]
                   via <iBGP_router1_1> on opn-ext.382 [Transit3_BGPRTR_2 2010-06-09 11:14:03] (100) [AS41231i]
                   via <iBGP_router1_gw2> on eth0 [iBGP_router1_2 2010-06-09 10:29:43] (100) [AS41231i]



bgp input filter, applied for eBGP

router1:

function bgp_in(int peeras)
{
<snip>

        # Traffic engineering:
        # launchpad.net
        if (net = 91.189.88.0/21 && bgp_path.first = Transit1AS ) then preference=300;
        # end  Traffic engineering

        return true;
}

router2:

function bgp_in(int peeras)
{
<snip>

        # Traffic engineering:
        # ppa.launchpad.net
        if (net = 91.189.88.0/21 && bgp_path.first = Transit2AS ) then preference=400;
# end  Traffic engineering

        return true;
}






router1:

bird> show route 91.189.88.0/21  all
91.189.88.0/21     via <Transit1_BGPRTR_1> on eth5 [Transit1_BGPRTR_1 2010-06-09 10:30:30] * (300) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 24785 286 6908 41231
BGP.next_hop: <Transit1_BGPRTR_1>
BGP.med: 100
BGP.local_pref: 100
                   via <iBGP_router2_gw1> on eth0 [iBGP_router1_1 2010-06-09 11:22:54] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 38930 16265 286 6908 41231
BGP.next_hop: <Transit2_BGPRTR_1>
BGP.local_pref: 100
BGP.community: (286,19) (286,29) (286,49) (286,286) (286,3044) (16265,65400)
                   via <iBGP_router2_gw2> on eth1 [iBGP_router1_2 2010-06-09 11:22:54] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 38930 16265 286 6908 41231
BGP.next_hop: <Transit2_BGPRTR_1>
BGP.local_pref: 100
BGP.community: (286,19) (286,29) (286,49) (286,286) (286,3044) (16265,65400)
                   via <Transit1_BGPRTR_2> on eth5 [Transit1_BGPRTR_2 2010-06-09 10:30:33] (300) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 24785 286 6908 41231
BGP.next_hop: <Transit1_BGPRTR_2>
BGP.med: 100
BGP.local_pref: 100
bird>


router2:

bird> show route 91.189.88.0/21  all
91.189.88.0/21     via <Transit2_BGPRTR_1> on eth5 [Transit2_BGPRTR_1 2010-06-09 11:22:07] * (400) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 38930 16265 286 6908 41231
BGP.next_hop: <Transit2_BGPRTR_1>
BGP.local_pref: 100
BGP.community: (286,19) (286,29) (286,49) (286,286) (286,3044) (16265,65400)
                   via <iBGP_router1_gw1> on eth1 [iBGP_router1_1 2010-06-09 10:29:44] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 24785 286 6908 41231
BGP.next_hop: <Transit1_BGPRTR_1>
BGP.med: 100
BGP.local_pref: 100
                   via <Transit3_BGPRTR_1> on opn-ext.382 [Transit3_BGPRTR_1 2010-06-09 11:19:13] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 20562 24785 286 6908 41231
BGP.next_hop: <Transit3_BGPRTR_1>
BGP.med: 0
BGP.local_pref: 100
                   via <iBGP_router1_1> on opn-ext.382 [Transit3_BGPRTR_2 2010-06-09 11:14:04] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 20562 24785 286 6908 41231
BGP.next_hop: <iBGP_router1_1>
BGP.med: 0
BGP.local_pref: 100
                   via <iBGP_router1_gw2> on eth0 [iBGP_router1_2 2010-06-09 10:29:44] (100) [AS41231i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 24785 286 6908 41231
BGP.next_hop: <Transit1_BGPRTR_1>
BGP.med: 100
BGP.local_pref: 100
bird>


Regards,

Arjan Filius