BGP: Hydrogen: Release Review

Contents

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

  • Stateful extensions to the Path Computation Element Protocol, December 2013

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.).