BGP: Lithium: Release Review
Contents
- 1 Features
- 2 Non-Code Aspects (user docs, examples, tutorials, articles)
- 3 Architectural Issues
- 4 Security Considerations
- 5 Quality Assurance (test coverage, etc)
- 6 End-of-life (API/Features EOLed in Release)
- 7 Bugzilla (summary of bug situation)
- 8 Standards (summary of standard compliance)
- 9 Schedule (initial schedule and changes over the release cycle)
Features
Third release of BGP protocol library, with BGP listener/speaker support for BGP MP, linkstate and flowspec
Third release of PCEP protocol library, with base RFC5440, Stateful, Initiated and segment routing extensions
Model-driven protocols, e.g. there are models for each protocol's messages
Integrated export of gleaned data into MD-SAL
Programming pipeline and scheduling prototype
Non-Code Aspects (user docs, examples, tutorials, articles)
ASCII doc commits:
Architectural Issues
The configuration is non-trivial and while giving the end-user control over the details how the protocols operate, it also means there is a steep learning curve
Some components within BGPCEP could probably be restructured (e.g. RIB module handling also BGP session negotiation)
Security Considerations
There is no support for any form of session authentication. Both protocols support TCP MD5 authentication.
North-bound access to data is completely unrestricted and unauthenticated outside what AAA project covers.
Data dissemination policies are expected to be defined on the MD-SAL boundary and/or applications.
Quality Assurance (test coverage, etc)
The code is covered by unit tests, test coverage is tracked in Sonar
Lithium release marks 79,5% of unit test coverage (85,8% line coverage, 63,5% branch coverage)
Sonar also reports technical debt issues
Lithium release marks 66 issues (4d of technical debt)
BGP code has been tested to interoperate with various implementations and its exposed information checked through RESTCONF. The interoperability is summarized in IETF draft:
draft-gredler-idr-ls-distribution-impl
BGP speaker functionality was tested locally as a prototype and it's also used in project ODL-SDNi
PCEP code has been tested with one commercial implementation, session establishment, as well as LSP operations.
Both protocols have integration as well as performance and scale tests implemented with commercial product and with custom python tool published in integration project.
BGP listener was successfully tested with Internet feed
End-of-life (API/Features EOLed in Release)
There are no EOL APIs nor features in this release, however pcep-stateful02 was deprecated and scheduled to be removed in Beryllium release.
Bugzilla (summary of bug situation)
The project tracks mainly enhancements, which can be categorized as follows:
code cleanups and reorganization: 4 issues (#2873, #1025, #3823, #105)
new features: 4 issues (#3075, #2663, #2230, #2848)
missed feature: 3 issues (#196, #2230, #139)
testing improvement: 2 issues (#3131, #2224)
design improvements : 4 issues (#2823, #3464, #2208, #3714)
Standards (summary of standard compliance)
RFC4271 - A Border Gateway Protocol 4 (BGP-4)
RFC4760 - Multiprotocol Extensions for BGP-4
RFC1997 - BGP Communities Attribute
RFC4360 - BGP Extended Communities Attribute
RFC4486 - Subcodes for BGP Cease Notification Message
RFC5004 - Avoid BGP Best Path Transitions from One External to Another
draft-ietf-idr-ls-distribution-04 - North-Bound Distribution of Link-State and TE Information using BGP
RFC5440 - Path Computation Element (PCE) Communication Protocol (PCEP)
RFC5541 - Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)
RFC5455 - Diffserv-Aware Class-Type Object for the Path Computation Element Communication Protocol
RFC5492 - Capabilities Advertisement with BGP-4
RFC5521 - Extensions to the Path Computation Element Communication Protocol (PCEP) for Route Exclusions
RFC5557 - Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization
RFC5575 - Flow Specification
RFC5886 - A Set of Monitoring Tools for Path Computation Element (PCE)-Based Architecture
RFC6286 - Autonomous-System-Wide Unique BGP Identifier for BGP-4
RFC6793 - BGP Support for Four-Octet Autonomous System (AS) Number Space
RFC7311 -The Accumulated IGP Metric Attribute for BGP
draft-ietf-pce-pceps - Secure Transport for PCEP
Segment routing extension to the Border Gateway Protocol, October 2014
draft-gredler-idr-bgp-ls-segment-routing-extension - BGP Link-State extensions for Segment Routing
Stateful extensions to the Path Computation Element Protocol, December 2013
draft-ietf-pce-stateful-pce-07 - PCEP Extensions for Stateful PCE
draft-ietf-pce-pce-initiated-lsp-00 - PCEP Extensions for PCE-initiated LSP Setup in a Stateful PCE Model
Segment routing extension to the Path Computation Element Protocol, October 2014
draft-ietf-pce-segment-routing-01 - PCEP Extension for segment routing
draft-ietf-pce-lsp-setup-type-01 - PCEP Extension for path setup type
Schedule (initial schedule and changes over the release cycle)
The project's mostly complied with its schedule.