BGP: Hydrogen: Release Review
Contents
- 1 BGP/LS and PCEP
- 2 Features
- 3 Non-Code Aspects (user docs, examples, tutorials, articles)
- 4 Architectural Issues
- 5 Security Considerations
- 6 Quality Assurance (test coverage, etc)
- 7 End-of-life (API/Features EOLed in Release)
- 8 Bugzilla (summary of bug situation)
- 9 Standards (summary of standard compliance)
- 10 Schedule (initial schedule and changes over the release cycle)
BGP/LS and PCEP
Features
First release of BGP protocol library, with basic BGP-MP and Linkstate support
First release of PCEP protocol library, with base RFC5440, Stateful and Initiated extensions, in two different revisions
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)
Architectural Issues
Architecture needs to be documented in the Developer's guide
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
There multiple aspects handled by the project, which could probably be restructured (simimar to the openflowjava/openflowplugin split)
Security Considerations
There is no support for any form of session authentication. Both protocols support TCP MD5 authentication, which should be implemented in Helium release.
North-bound access to data is completely unrestricted and unauthenticated. 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
BGP code has been tested to interoperate with a single commercial implementation and its exposed information checked through RESTCONF. Some bugs remain which will be addressed in a bugfix release.
PCEP code has been tested only to a session-up extent, with little attention to actual operation. The team will focus on this next, providing bugfixes as the code undergoes manual testing
End-of-life (API/Features EOLed in Release)
There are no EOL APIs nor features in this release.
Bugzilla (summary of bug situation)
The project tracks various issues, which can be categorized as follows:
code cleanups and reorganization: 5 issues (#64, #105, #187, #190, #194)
new features: 3 issues (#139, #196, #338)
missed feature: 1 issue (#353), needs support from yangtools
testing improvement: 1 issue (#110)
Standards (summary of standard compliance)
RFC4271 - A Border Gateway Protocol 4 (BGP-4)
RFC4724 - Graceful Restart Mechanism for BGP
RFC4760 - Multiprotocol Extensions for BGP-4
RFC1997 - BGP Communities Attribute
RFC4360 - BGP Extended Communities Attribute
RFC6793 - BGP Support for Four-Octet Autonomous System (AS) Number Space
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
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
Stateful extensions to the Path Computation Element Protocol, December 2012
draft-ietf-pce-stateful-pce-02 - PCEP Extensions for Stateful PCE
draft-crabbe-pce-pce-initiated-lsp-00 - PCEP Extensions for PCE-initiated LSP Setup in a Stateful PCE Model
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
Schedule (initial schedule and changes over the release cycle)
The project's schedule slipped quite a bit while integrating with Netty, mostly due to lack of API documentation and differences in the way Netty operates vs. the original protocol framework, whose remnants have been ported into the controller project.
Further project delays were caused by bugs in the yangtools project, which is the core dependency of this project. Eventhough this has cost us development time, it made the yangtools project much more hardened to complexities of YANG models as well as resistant to human error (such as typos, thinkos, etc.).