Hello,
before I begin... im just a sysadmin not a programmer
I appreciate the work you are doing on OpenBGPd :) and I use it and im
very happy


I saw Claudes presentation on openBGPd recently and how there was some
work on MP for BGPd..  and I was wondering about an idea
(I thought it was a simple thing which may be too simple ... please
bear in mind Im not a professional programmer,

basically I was wondering  could there be a simple way of removing risk of
having an MP RDE,

from my understanding, one of the  concerns about RDE being MP
is a withdraw being received on process running on a busy processor ,
and a subsequent
announce being received by a process running on a lighty loaded
processor .. the announce being processed first and then the withdraw
being processed afterwards... (there by withdrawing the route even
though the announce was received after the withdraw)  there are
probably others...

To get around the concern above..
could the Ip space be carved up between different processes so it is
always the same process dealing with all messages to do with an
address space)


lets say
with 2 core and 4 core  Box for example

Could you split the RDE into 2 RDE processes which would only process
half of the IP space ?
so  for ip v4

0.0.0.0/0 (route decision engine on a single core (current setup)

on a 2 core system
0.0.0.0/1 would be managed by RDE0
128.0.0.0/1 would be managed by RDE1

on a 4 core system

0.0.0.0/2      RDE0
64.0.0.0/2    RDE1
128.0.0.0/2  RDE2
192.0.0.0/2  RDE3

on an 8 core system

0.0.0.0/3      RDE0
32.0.0.0/3     RDE1
64.0.0.0/3     RDE2
96.0.0.0/3      RDE3
128.0.0.0/3    RDE4
160.0.0.0/3      RDE5
192.0.0.0/3      RDE6
224.0.0.0/3      RDE7 ???? you can use the spare cycles on this one to
generate your favourite concurrency or help SETI :P or something :)

so each process may not be equally loaded but they would be faster
over all with the increased parallelism ...  and because each RDE is
operating on  prefixes that are only in a certain range that doesn't
overlap other RDE Process work ...  there would never be a race
condition or nasty MP introduced bugs

also there would need to be some work on the session engine to pass
theBGP  messages to the correct RDE process easily (the decision
process would be similar to a routing decision in the kernel LPM with
2 or 4 or 8 routes )

IPv6 I get would need a more nuanced approach as in split the subset
2000::/3  as opposed to
0:0/128

It would be a long time before I would be able to submit a patch
worthy of consideration...  but is this Idea worth pursuing ?  is
there a fundamental flaw in this idea / approach

Thanks for your time and consideration...

Tom Smyth

Reply via email to