
Hat
译者 + 校对
⚠️ 注意
本文为译者手工翻译,可能存在错误或不准确的地方,如果您发现了错误,欢迎 参与贡献。
💡 技巧小贴士
本页内容较多,您可以使用 Ctrl/Command
+ F
快速查找本页面的关键词。
如果想快速搜索全站内容,也可以在页面中单击 /
键 快速全文检索关键词。
对于小屏用户,您可以点击右上角的 放大镜
(🔍) 图标以输入关键词进行全文检索。
请注意查看下方的本节目录,点击目录中的链接可以快速跳转到对应的内容。
📖 本节目录
exports
和 imports
的代码逻辑filter
和 protocol
)stats
)Internal protocol
)show route export
命令的缺陷reload
) 的关键性缺陷import tables
) 内联至父级配置,简化配置结构attribute buckets
) 合并,简化配置结构zero checksum
)Version 3.0.0 (2024-12-17)
- from 2.16
o Multithreaded execution
o Decoupled exports from imports
o Unified route attribute names
o Slightly different log format
o Separate reload command for filters and protocols
o BGP: Export tables show the state as on wire
o Lots of internal changes
- from 3.0alpha3
o Merged changes from 2.16
o BMP and MRT converted to the new API and working
o Internal protocol state journal
o Optimized table journal cleanup
o Fixed "show route export"
o Fixed minor bugs
Version 3.0alpha3 (2024-07-01)
o Merged 2.15.1
o Fixed major issues with channel reloads
o Fixed data inconsistencies in many corner cases
o Fixed internal scheduler corner cases
o MRT and BMP still switched off
o Expected one more alpha before stable
Version 3.0alpha2 (2023-05-11)
o Fixed memory leaks and use-after free bugs
o Simple thread work balancing
o MRT switched off
o Slow kernel route synchronization to be fixed later
Version 3.0alpha1 (2023-04-18)
o Worker threads for BGP, Pipe, RPKI and BFD
o Configurable number of threads
o Asynchronous route export
o Flat attribute structure
o Inline import tables
o Export tables merged with BGP prefix / attribute buckets
o Fixed ROA check locking inversion in route table dumps
o MRT switched off
Version 3.0-alpha0 (2022-02-07)
o Removal of fixed protocol-specific route attributes
o Asynchronous route export
o Explicit table import / export hooks
o Partially lockless route attribute cache
o Thread-safe resource management
o Thread-safe interface notifications
o Thread-safe protocol API
o Adoption of BFD IO loop for general use
o Parallel Pipe protocol
o Parallel RPKI protocol
o Parallel BGP protocol
o Lots of refactoring
o Bugfixes and improvements as they came along
Version 2.16 (2024-12-04)
o BFD: Set password per session
o BFD: Accept zero checksum for IPv6-UDP
o BMP: Refactoring and optimizations
o OSPF: Allow loopback nexthop in OSPFv3-IPv4
o RPKI: TCP-MD5 authentication option
o Filters: Add enum types to filter grammar
o CLI: Configurable additional control sockets
o CLI: Timeformat command
o CLI: Dump commands need a target file
o ASPA support in filters, Static and RPKI
o Formalized contributions and credits policy
o Many bugfixes and improvements
Version 2.15.1 (2024-03-22)
o OSPF: Fix regression in handling PtP links
o RPKI: Handle connection resets properly
o Static: Reject invalid combination of options
o Fix builds with limited set of protocols
Version 2.15 (2024-03-10)
o BGP: Send hold timer
o BGP: New options to specify required BGP capabilities
o BFD: Improvements to 'show bfd sessions' command
o RPKI: New 'local address' configuration option
o Linux: Support for more route attributes, including
TCP congestion control algorithm
o Support for UDP logging
o Static routes can have both nexthop and interface specified
o Completion of command options in BIRD client
o Many bugfixes and improvements
Version 2.14 (2023-10-06)
o MPLS subsystem
o L3VPN: BGP/MPLS VPNs (RFC 4364)
o BGP: Access to unknown route attributes
o RAdv: Custom options
o Babel: RTT metric extension
o BMP: Refactored route monitoring
o BMP: Multiple instances of BMP protocol
o BMP: Both pre-policy and post-policy monitoring
o Experimental route aggregation
o Filter: Method framework
o Filter: Functions have return type statements
o Filter: New bytestring data type
o Kernel: Option to learn kernel routes
o Many bugfixes and improvements
Notes:
User-defined filter functions that return values now should have return type
statements. We still accept functions without such statement, if they could be
properly typed.
For loops allowed to use both existing iterator variables or ones defined in
the for statement. We no longer support the first case, all iterator variables
must be defined in the for statement (e.g. 'for int i in bgp_path ...').
Due to oversight, VRF interfaces were not included in respective VRFs, this is
fixed now.
Version 2.13.1 (2023-06-23)
o BGP: Fix role check when no capability option is present
o Filter: Fixed segfault when a case option had an empty block
This is a bugfix version.
Version 2.13 (2023-04-21)
o Babel: IPv4 via IPv6 extension (RFC 9229)
o Babel: Improve authentication on lossy networks
o BGP: New 'allow bgp_med' option
o BSD: Support for IPv4 routes with IPv6 nexthop on FreeBSD
o Experimental BMP protocol implementation
o Important bugfixes
Notes:
We changed versioning scheme from <epoch>.<major>.<minor> to more common
<major>.<minor>.<patch> . From now on, you may expect that BIRD 2.13.x will be
strictly only fixing bugs found in 2.13, whereas BIRD 2.14 will also contain
new features.
This BIRD version contains an alpha release of BMP protocol implementation.
It is not ready for production usage and therefore it is not compiled by
default and have to be enabled during installation.
Version 2.0.12 (2023-01-23)
o Filter: New 'onlink' route attribute
o Compile-time option to use 4-way tries instead of 16-way ones
o BSD: Support for kernel route metric and other improvements
o Important bugfixes
Version 2.0.11 (2022-11-12)
o BGP roles (RFC 9234)
o BGP: Keepalive time scaling
o BGP: New 'min hold time' and 'min keepalive time' options
o BGP: New 'next hop prefer global' option
o Filter: For loops and direct recursion
o Filter: Mixed declarations of local variables
o Filter: Improved static type checks
o Filter: Literal [] for empty set
o Linux: Netlink KRT improvements
o BSD: Experimental support for Netlink API
o Memory management improvements
o Many bugfixes
Notes:
In contrast to prior versions, configured keepalive time in BGP now scales
with negotiated hold time to maintain proportion between the keepalive time
and the hold time.
The Linux KRT was updated to use the recent API for IPv6 ECMP routes instead
of the legacy one. Consequently, the Linux versions older than 4.11 are no
longer supported, at least for IPv6 ECMP routes. Also, routing table scanning
now runs separately for each table to avoid congestion.
There is a minor change in recursive next hop processing. Previously,
recursive next hop must be resolved through a non-recursive route, now it must
be resolved through a prefix where both the best route and all routes with the
same preference (as the best route) are non-recursive. The old behavior might
lead in some corner cases to an infinite loop of recursive next hop resolution
due to a priority inversion.
There is a minor change in the 'configure undo' command, it is no longer
available after failed reconfiguration, as the old configuration is already
released.
Version 2.0.10 (2022-06-16)
o BGP performance improvements
o BFD: New 'strict bind' option
o RPKI: VRF support
o Allow use of 240.0.0.0/4 as a private range
o BIRD client uses exit status to report errors
o Important bugfixes
Version 2.0.9 (2022-02-09)
o BGP: Flowspec validation procedure
o Babel: MAC authentication support
o Routing table configuration blocks
o Optional prefix trie in routing table for faster LPM/interval queries
o CLI: New 'show route in <prefix>' command
o Filter: Faster (16-way) prefix sets
o Filter: MPLS label route attribute
o Filter: Operators to pick community components
o Filter: Operators to find minimum and maximum element of lists
o BGP: New 'free bind' option
o BGP: Log route updates that were changed to withdraws
o BGP: Improved 'invalid next hop' error reporting
o OSPF: Allow ifaces with host address as unnumbered PtP or PtMP ifaces
o OSPF: All packets on PtP networks should be sent to AllSPFRouters address
o Scripts for apkg-powered upstream packaging for deb and rpm
o Support for Blake2s and Blake2b hash functions
o Security keys / passwords can be entered in hexadecimal digits
o Memory statistics split into Effective and Overhead
o Linux: New option 'netlink rx buffer' to specify netlink socket buffer size
o BSD: Assume onlink flag on ifaces with only host addresses
o Many bugfixes
Notes:
For OSPF on PtP network, BIRD now sends all packets to multicast AllSPFRouters
address (as required in RFC 2328 8.1). This likely breaks setups with multiple
neighbors on a network configured as PtP, which worked in previous versions.
Such links should be configured as PtMP.
Since Linux 5.3, netlink socket can be flooded by route cache entries during
route table scan. This version mitigates that issue by using strict netlink
filtering.
Version 2.0.8 (2021-03-18)
o Automatic channel reloads based on RPKI changes
o Multiple static routes with the same network
o Use bitmaps to keep track of exported routes
o Per-channel debug flags
o CLI commands show info from multiple protocols
o Linux: IPv4 routes with IPv6 nexthops
o Filter: Optimized redesign of prefix sets
o Filter: Improved type checking of user filters
o Filter: New src/dst accessors for Flowspec and SADR
o Filter: New 'weight' route attribute
o Filter: BGP path mask loop operator
o Filter: Remove quitbird command
o RIP: Demand circuit support (RFC 2091)
o BGP: New 'allow as sets' and 'enforce first as' options
o BGP: Support for BGP hostname capability
o BGP: Support for MD5SIG with dynamic BGP
o BFD: Optional separation of IPv4 / IPv6 BFD instances
o BFD: Per-peer session options
o RPKI: Allow build without libSSH
o RPKI: New 'ignore max length' option
o OSPF: Redesign of handling of unnumbered PtPs
o OSPF: Allow key id 0 in authentication
o Babel: Use onlink flag for routes with unreachable next hop
o Many bugfixes
Notes:
Automatic channel reloads based on RPKI changes are enabled by default,
but require import table enabled when used in BGP import filter.
BIRD now uses bitmaps to keep track of exported routes instead of
re-evaluation of export filters. That should improve speed and accuracy in
route export handling during reconfiguration, but takes some more memory.
Per-channel debug logging and some CLI commands (like 'show ospf neighbors')
defaulting to all protocol instances lead to some minor changes in log and
CLI output. Caution is recommended when logs or CLI output are monitored by
scripts.
Version 2.0.7 (2019-10-11)
o BGP: Accumulated IGP metric (RFC 7311)
o Important filter reconfiguration bugfix
o Several other bugfixes
Version 2.0.6 (2019-09-10)
o RAdv: Solicited unicast RAs
o BGP: Optional Adj-RIB-Out
o BGP: Extended optional parameters length
o Filter: Sets and set expressions in path masks
o Several important bugfixes
Version 2.0.5 (2019-08-01)
o OSPF Graceful restart (RFC 3623, RFC 5187)
o BGP: Dynamic BGP
o BGP: Promiscuous ASN mode
o BGP: Mandatory option for channels
o BFD: Support for VRFs
o Graceful restart command
o Redesigned filtering code
o Many bugfixes
Notes:
Previous version introduced an error in handling of OSPF NSSA-LSA, causing
compatibility issues with proper implementations. The error is fixed in this
version, therefore there are compatibility issues in OSPF NSSA areas between
this and previous version.
Version 2.0.4 (2019-02-27)
o OSPF: Opaque LSAs (RFC 5250)
o OSPF: DN-bit handling (RFC 4576)
o Preferred route counters are back
o Important BGP bugfix
o Several bugfixes related to route propagation
o some minor bugfixes
Version 2.0.3 (2019-01-05)
o MRT table dumps (RFC 6396)
o BGP Long-lived graceful restart
o BGP: Optional import table (Adj-RIB-In)
o BGP: Extend 'next hop keep' and 'next hop self' options
o BGP: Improved VRF support
o OSPF: Authentication trailer for OSPFv3 (RFC 7166)
o Babel: New option to randomize router ID
o Filter: Custom route attributes
o Filter: Support for src accessor to SADR source prefix
o Filter: Support for VPN_RD sets
o Filter: Make ifname attribute modifiable
o Perf: Protocol to measure BIRD performance internally
o More verbose error messages in config processing
o Log file size limit / log rotation
o Many bugfixes
Notes:
Export of routes to RS EBGP (route server) sessions from other sources than
RS EBGP sessions was changed that ASN is no longer prepended to BGP_PATH in
that case. The change does not affect regular BGP configurations or regular
route servers that have only RS EBGP peers.
For BGP route servers and route reflectors, the default value of option
'next hop keep' was changed to a more appropriate value.
Attributes for OSPF and Babel metrics are no longer reset when exported to
these protocols and could be set anywhere in BIRD. As a result, OSPF metric is
kept when a route is reannounced between OSPF instances. Also, when route is
exported to OSPF with both ospf_metric1 and ospf_metric2 attributes it is now
propagated as OSPF-E2 route instead of as OSPF-E1 route.
Compiling BIRD with --enable-debug no longer automatically activates debug
mode (-d option) nor local mode (-l option). Also, debug mode with output to
file (-D option) no longer not forces foreground mode (-f option).
The configure script now uses standard option --runstatedir, the old option
--with-runtimedir is deprecated.
Version 2.0.2 (2018-03-22)
o Source-specific routing support for Linux kernel and Babel
o BGP: New option 'disable after cease'
o Filter: Allow silent filter execution
o Filter: Fixed stack overflow in BGP mask expressions.
o Several bugfixes
Notes:
Syntax prefix:netmask for IPv4 prefixes was dropped. Just use prefix/pxlen.
Version 2.0.1 (2018-01-16)
o Linux MPLS kernel support
o Better handling of channels inherited from templates
o Default EBGP Route Propagation Behavior without Policies (RFC 8212)
o Many bugfixes
Notes:
To satisfy requirements of RFC 8212, external BGP protocols now require
explicit configuration of import and export policies.
Version 2.0.0 (2017-12-11)
o Integrated IPv4 + IPv6 design
o Support for MPLS next hops
o Support for VPNv4 and VPNv6 networks
o Microsecond timers infrastructure
o Basic VRF support
o Babel: Support for dual-stack IPv4/IPv6
o Babel: Many improvements and bugfixes
o Major BGP protocol redesign
o Full support for Multiprotocol BGP
o BGP multicast support (SAFI 2)
o BGP flowspec support (RFC 5575)
o BGP with MPLS labels (RFC 3107)
o BGP MPLS/VPN support (RFC 4364)
o BGP 6PE - IPv6 NLRI over IPv4 MPLS (RFC 4798)
o BGP IPv4 NLRI with an IPv6 Next Hop (RFC 5549)
o BGP Confederations (RFC 5065)
o BGP Shutdown communication (RFC 8203)
o BGP: Allow exchanging LOCAL_PREF with eBGP peers
o BGP: Allow to specify interface for regular sessions
o OSPF: Support of address families in OSPFv3
o OSPF: Enable ECMP and Link detection by default
o RAdv: Support for more specific routes (RFC 4191)
o RAdv: Proper handling of prefix retraction
o RIP: Enable ECMP and Link detection by default
o Redesign of RPKI handling
o New RPKI-Router protocol
o Static: Minor overhaul
o Static: Support for all new route types
o Kenrel: Default Linux kernel metric changed to 32
o Kernel: Fix IPv6 ECMP handling with Linux 4.11+
o Update of show route command
o BIRD client persistent history
o New build system
o Unit tests
o ...
Notes:
Tables are now defined with appropriate net type keyword. Protocols and tables
are now connected by explicit channels, most related protocol options (table,
import, export, ...) are now channel options. See doc/bird.conf.example2 for
configuration examples. Some options were removed/replaced.
译者 + 校对