Age | Commit message (Collapse) | Author |
|
for optional transitive attributes. In short if the partial bit is set on
an optional transitive attribute but the attribute fails validation ignore
the attribute or mark the path as ineligible instead of killing the session
with a NOTIFICATION. Tested, input and OK sthen, OK henning
|
|
making sure that other RIBs are not injecting routes into the FIB.
|
|
F_RIB_NOFIB flag and apply it on all RIBs that are not F_RIB_NOEVALUATE.
|
|
comming from.
|
|
space for a flags field and the RIB id. In the end bgpd will be able to
lock RIB elements and therefore make it possible to interrupt all tree
walks.
|
|
used for the Adj-Rib-In. Also initialize the Adj-Rib-In correctly and mark
it a noevaluate.
|
|
work by changing the way the RDE DB is built. struct prefix and struct
pt_entry are simplified and extended with a rib_entry where the decision
tree is run on. From now on a prefix can only reside on one particular RIB
which simplifies the code a bit. Currently there are two fixed ribs
(adj-rib-in and the local-rib) which needs to be made more dynamic in
upcomming commits.
This is work in progress, the RDE seems to work for me and sthen@ (no flames
comming out of our testrouters but there is still a lot missing)
Move into the tree to simplify developement -- henning@
|
|
use one that is less freaky. Merge bgpctl and config networks into one tree.
First step of a larger change in the RDE and this goes now in to allow to
move forward.
|
|
|
|
happen. The decision process failed to correctly mask looping pathes and
in some szenarios even elected them as best route. *gulp*
Found the hard way and fix tested by Christian, bsd (at) cleondra (dot) ch
|
|
dropped when parsed but instead be added to the RIB marked as not eligible.
So the decision process does not pick them up as a valid route.
Tested and some ideas by Tony Sarendal (tony (at) polarcap (dot) org)
|
|
|
|
|
|
First step is to define two flags F_LOCAL and F_ORIGINAL. These flags
are used to distinguish prefix in the Local-RIB and those in the Adj-
RIB-In. Adapt prefix API and add additional checks so that no Adj-RIB-
In prefixes get mistakenly selected. Currently no F_ORIGINAL prefixes
are created but this may change soon. Looks good Henning.
|
|
at many different places do it once. This simplifies the logic and makes it
easier to extend it for upcomming Adj-RIB-In addition. OK Henning.
|
|
active prefix counter.
|
|
pointer so that the size does not grow. Adding 4 bytes to struct prefix would
result in 64MB more memory usage on one of my systems.
|
|
If set to always the med will also be compared between different AS.
The default is strict which is the way the RFC specifies it.
OK henning@
|
|
long AS pathes in one or the other direction. It weights a prefix at a very
late stage in the decision process. This is a nice bgpd feature to traffic
engineer networks where most AS pathes are equally long.
OK henning@
|
|
the best path selection will not only be based on the path attributes but
also on the age of the prefix. This is an extension to the RFC. The default
is ignore but previously it was implicitly set to evaluate.
OK henning@ man page OK jaredy@ jmc@
|
|
|
|
Cleanup path attribute handling. First of all kill struct attr_flags, all
those infos are now in struct rde_aspath. Second move attribute parser
functions into rde.c, rde_attr.c is shared between bgpd and bgpctl.
Third reimplementation of the nexthop handling. Make it IPv6 ready and
fix some major bug relating to "set nexthop".
henning@ OK if it breaks nothing
|
|
allocation. This helps to save a bit of RAM. looks good henning@
|
|
|
|
|
|
Prefer older, more stable entries. OK henning@
|
|
|
|
for route-collectors. OK henning@
|
|
struct in_addr. OK henning@
|
|
illegal. OK henning@
|
|
neighbors. While doing that check also that the nexthop is valid (not class D
or E and not in 127/8 range). Kill some TODO and XXX and rename the british
neighbour to neighbor as used everywhere else. OK henning@
|
|
happen. OK henning@
|
|
nothing to do with the decision process. henning@ "conceptual ok ;-)"
|
|
announce all and for EBGP use announce self. OK henning@
|
|
->remote_addr for easier multiprotocol support
ok claudio@
|
|
a few messages.
ok claudio@
|
|
|
|
attached to a pseudo peer and inserted like all other prefixes into the RIB.
OK henning@
|
|
|
|
|
|
The first limits the number of sent prefixes per peer the latter controls
which prefix we do annouce to the neighbor.
Another looks good from henning@
|
|
Now bgpctl neighbor <IP> up does work as expected.
Looks good from henning@
|
|
|
|
For ibgp the nexthop is normally passed unmodified unless the nexthop is
equal to the remote peer ip. To ebgp peers the nexthop is changed to the
local session ip unless the remote peer ip and the nexthop are on the same
subnet. OK henning@
|
|
is more appropriate. The rde uses now in most cases struct bgpd_addr.
OK henning@
|
|
|
|
neighbors. Fix a bug in the update generation. If no path attributes are
available e.g. a packet with only withdraws we need to set (and write) the
bgp path attribute field to zero. With this change we are able to send
valid updates to our neighbors with one exception: the nexthop field which
needs to be changed for ebgp neighbors.
OK henning@
|
|
peer basis. A queue runner will dequeue and package those messages to valid
bgp UPDATE messages and send them to the SE.
Not yet done is per peer type attribute handling (like aspath prepends and
nexthop modifications) and the queue runner could be a tad smarter. All in
all this gives us a good starting point for the missing parts.
OK henning@
|
|
change. Until now rde_send_kroute tried to send a IMSG_KROUTE_DELETE if old
and new prefix where ineligible. OK henning@
|
|
|