Hello there,
I am currently working on my thesis and experimenting with the BIRD routing 
daemon. As part of my work, I added a new optional transitive BGP path 
attribute using the following configuration line:

attribute bgp 200 bytestring new_attribute;


The attribute appears correctly in the routing table as follows:  (birdc show 
route all)
192.168.5.0/24       unicast [router5 15:00:40.321] * (100) [AS5i]
      via 10.0.51.5 on eth2
      Type: BGP univ
      BGP.origin: IGP
      BGP.as_path: 5
      BGP.next_hop: 10.0.51.5
      BGP.local_pref: 100
      BGP.c8 [t]: 20

And this is the way I declare it in my bird.conf file:

filter export_with_new_attribute {
  new_attribute = hex:20;
  accept;
}
But now I would like to use it as part of traffic engineering decisions. 
Specifically, I would like to understand what steps are required in order to 
make this new attribute influence the BGP decision-making process for choosing 
the best path to route the traffic.
Could you please advise:

  1.
Which files and functions in the BIRD source code are responsible for the BGP 
path selection process that I need to edit to make my new attribute come after 
LOCAL_PREF attribute in the priority list? Or if there is a way to do this 
without the need to edit the source code.
  2.
Are the previous things correct to add a custom path attribute that is doing 
something?
  3.
Why is it displaying like this: BGP.c8 [t]: 20? Is there a way to make it 
appear like this: BGP.new_attribute [t]: 20?
  4.
Is there a standard or recommended way to extend BIRD so that a custom 
attribute can be incorporated into route preference / best path selection, and 
if I want to compare 2 values and choose the lowest path that has this value?

I would greatly appreciate any pointers or guidance that could help me move 
forward because I did not find any clues on that in your documentation.
Thank you very much for your time and support.
Best regards,
Yazan.

Reply via email to