Skip to content

Commit 912436d

Browse files
committed
Update Changelog
1 parent ad05adf commit 912436d

File tree

1 file changed

+82
-2
lines changed

1 file changed

+82
-2
lines changed

Changelog.md

+82-2
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,96 @@
22

33
Released 2024-05-29.
44

5-
TODO
65

76
Breaking changes
87

8+
* Several common basic types (e.g. `Asn` and `Prefix`) are moved out of
9+
_routecore_ to the new _inetnum_ crate.
10+
11+
* Refactor of PathAttributes
12+
13+
The introduction of `PaMap` and `RouteWorkshop` (see below) required refactoring
14+
of the `PathAttributes` enum and related types. Most significantly, an entire
15+
layer in the enum was removed, changing how one matches on variants.
16+
Furthermore some of the types in those variants slightly changed.
17+
18+
* Overhaul of address family related code
19+
20+
The types describing address families, and related traits to parse and compose
21+
NLRI of such families, have severely changed. This eliminates any possible
22+
ambiguity regarding the address family of announcements/withdrawals in UPDATE
23+
messages at compile time.
24+
25+
* Supported address families are now explicitly and exhaustively enumerated
26+
in the `AfiSafiType` enum. As a SAFI by itself does not carry much meaning,
27+
the separate `SAFI` enum is removed. Almost all of the code now works
28+
based on the more descriptive `AfiSafiType`.
29+
* ADD-PATH is now supported on all supported address families, i.e. the
30+
`AfiSafiType` includes `~AddPath` variants for every single AFI+SAFI
31+
combination.
32+
* This now allows for e.g. efficient iterators over NLRI that are generic
33+
over the `AfiSafiType`.
34+
But, as a possible downside, this moves the task of determining what
35+
address family a set of NLRI holds to the caller in order to then use the
36+
correctly typed iterator. The less efficient, 'easier to use' iterators
37+
returning an enum instead of a distinct NLRI type are therefore still
38+
available.
39+
940
New
1041

11-
Bug fixes
42+
* RouteWorkshop / PaMap
43+
44+
This release introduces the RouteWorkshop to create UPDATE messages based on
45+
an NLRI and a set of attributes. For creation, inspection and manipulation of
46+
those attributes, the `PaMap` is introduced. These new types work in
47+
conjunction with the existing `UpdateBuilder`.
48+
49+
* BGP FSM (absored from _rotonda-fsm_)
50+
51+
_routecore_ now contains the code to enable actual BGP sessions, i.e. the BGP
52+
FSM and related machinery. By pulling this in into _routecore_ allows for less
53+
dependency juggling, easier development iterations and more sensible code in
54+
all parts.
55+
56+
The _rotonda-fsm_ crate for now is left as-is.
57+
58+
59+
* Route Selection ('BGP Decision Process') fundamentals
60+
61+
This releases introduces a first attempt at providing handles to perform the
62+
BGP Decision Process as described in RFC4271, colloquially known as 'route
63+
selection' or 'best path selection'.
64+
65+
Most of the heavy-lifting for this comes from implementing `Ord` on a wrapper
66+
struct holding a 'route' (i.e., `PaMap`) and additional information to allow
67+
tie-breaking as described in the RFC.
68+
69+
As the tie-breaking in RFC4271 is actually broken and not totally ordered, we
70+
aim to provide a certain degree of flexibility in the tie-breaking process by
71+
means of different `OrdStrat` ordering strategies.
72+
1273

1374
Other changes
1475

76+
* Feature flags
77+
78+
After splitting of parts of _routecore_ into the _inetnum_ crate, the default
79+
features set resulted in an almost empty library. Therefore the `bgp` flag is
80+
now on by default, and we introduced an `fsm` flag to enable the code absorbed
81+
from _rotonda-fsm_.
82+
83+
84+
Known limitations
85+
86+
* Constructed UPDATE messages are MultiProtocol-only
87+
88+
No conventional withdrawals/announcements, IPv4 Unicast goes into MP path
89+
attributes as well.
90+
91+
Note that this behaviour is considered preferable as it leads to somewhat more
92+
flexibility/resilience on the protocol level. The _actual_ limitation in
93+
routecore is that the `UpdateBuilder` lacks the option to use the conventional
94+
PDU sections after all. We do plan to reintroduce this, however.
1595

1696

1797
## 0.4.0

0 commit comments

Comments
 (0)