Difference between revisions of "Archived-Honeycomb"

From fd.io
Jump to: navigation, search
(Devel)
m (Valderrv moved page Honeycomb to Archived-Honeycomb)
 
(91 intermediate revisions by 9 users not shown)
Line 3: Line 3:
 
|shortname=honeycomb
 
|shortname=honeycomb
 
|jiraName=HONEYCOMB
 
|jiraName=HONEYCOMB
 +
|projectLead=Michal Cmarada
 
|committers=
 
|committers=
 
* Dave Wallace
 
* Dave Wallace
 
* Maros Marsalek
 
* Maros Marsalek
 
* Marek Gradzki
 
* Marek Gradzki
* Stefan Kobza
 
* Matej Spanik
 
 
* Ed Warnicke
 
* Ed Warnicke
* Daniel Malachovsky
 
* Varun Seereeram
 
 
* Robert Varga
 
* Robert Varga
 +
* Juraj Sloboda
 +
* Michal Cmarada
 
}}
 
}}
 
== Intro ==
 
== Intro ==
Honeycomb is an agent that runs on the same host as a VPP instance, and exposes yang models via netconf or restconf to allow the management of that VPP instance from off box.
+
 
Currently, Honeycomb supports Bridge Domain models.
+
Honeycomb is a generic NETCONF/RESTCONF java-based management agent and provides a framework for building specialized agents.
 +
 
 +
It uses many features and utilities from different [http://www.opendaylight.org Opendaylight (ODL)] projects (e.g. yangtools, controller, mdsal and netconf).
 +
The biggest use case of honeycomb is VPP (fd.io’s Vector packet processor). Honeycomb delivers a management agent to enable integration of VPP with e.g. SDN controllers such as Opendaylight.
 +
 
 +
For VPP specific distribution of Honeycomb, please refer to [https://wiki.fd.io/view/Hc2vpp hc2vpp] project.
 +
 
 +
=== Overview ===
 +
 
 +
[[File:Honeycomb + VPP stack.png|frameless|Honeycomb in VPP stack]]
 +
 
 +
==== Project Termination ====
 +
[[Honeycomb/Termination Review | Honeycomb/Termination Review]]
 +
 
 +
==== Slides ====
 +
 
 +
Honeycomb overview presentation from Paris FD.io 2016 event: [[File:Honeycomb overview.pptx|thumb|Honeycomb overview prepared for Paris FD.io 2016 event]]
 +
 
 +
Honeycomb 1609 overview update from fd.io Seattle summit 2016: [[File:HC 1609 overview.pptx|thumb|Slides detailing Honeycomb's goal, architecture and features as of 1609 release]]
 +
 
 +
==== Generic nature ====
 +
 
 +
Honeycomb provides a distribution to control VPP. However HC is developed as a generic agent that can be positioned on top of any other software/system etc. that can be controlled from Java(or some other JVM language) code. This is achieved thanks to the modularity of HC enabling any "translation plugin" such as V3PO (VPP core management translation code) to work in HC framework.
 +
 
 +
==== Minimal distribution ====
 +
 
 +
Honeycomb provides a minimal distribution that contains only:
 +
* HC framework jars + plugin jars + dependencies from Opendaylight
 +
* HC framework config files + plugin config files
 +
* Runnable shell scripts
  
 
== Project Contact Name and Email ==
 
== Project Contact Name and Email ==
 
* [mailto:honeycomb-dev@lists.fd.io honeycomb-dev list],
 
* [mailto:honeycomb-dev@lists.fd.io honeycomb-dev list],
 +
* [mailto:mcmarada@cisco.com Michal Cmarada], LF-ID: mcmarada,
 +
* [mailto:margradz@gmail.com Marek Gradzki], LF-ID: mgradzki,
 
* [mailto:mmarsale@cisco.com Maros Marsalek], LF-ID: mmarsale,
 
* [mailto:mmarsale@cisco.com Maros Marsalek], LF-ID: mmarsale,
* [mailto:mgradzki@cisco.com Marek Gradzki], LF-ID: mmarsale,
 
 
* [mailto:hagbard@gmail.com Ed Warnicke], LF-ID: hagbard,
 
* [mailto:hagbard@gmail.com Ed Warnicke], LF-ID: hagbard,
* [mailto:dwallacelf@gmail.com Dave Wallace], LF-ID: dwallacelf,
+
* [mailto:dwallacelf@gmail.com Dave Wallace], LF-ID: dwallacelf
* [mailto:mspanik@cisco.com Matej Spanik], LF-ID: mspanik,
+
  
== Weekly meeting ==
+
== Meeting ==
  
Weekly [https://wiki.fd.io/view/Honeycomb/Meeting call]
+
[https://wiki.fd.io/view/Honeycomb/Meeting Honeycomb meeting]
  
 
== Scope ==
 
== Scope ==
Honeycomb's main responsibility is to enable communication between it's northbound interfaces and VPP's management APIs, performing all necessary translations in the background. It is important to note that many features and utilities will be reused from different [http://www.opendaylight.org/, Opendaylight (ODL)] projects (e.g. yangtools, controller, mdsal and netconf) and will not be a direct part of Honeycomb. This section is devided into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Honeycomb project and what will be just reused from other projects (or where Honeycomb relies on other projects).
+
 
 +
This section is devided into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Honeycomb project and what will be just reused from other projects (or where Honeycomb relies on other projects).
  
 
'''Honeycomb project scope:'''
 
'''Honeycomb project scope:'''
Line 37: Line 66:
 
** [http://tools.ietf.org/html/rfc4741, Netconf] northbound interface
 
** [http://tools.ietf.org/html/rfc4741, Netconf] northbound interface
 
** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] northbound interface
 
** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] northbound interface
** (Possibly) [https://www.ietf.org/rfc/rfc4271, BGP]
+
** [https://www.ietf.org/rfc/rfc4271, BGP]
  
* Yang models for VPP management
+
* Translation layer between device management and Yang based data structures
** Configuration data
+
** Operational data
+
 
+
* Translation layer between VPP management and Yang based data structures
+
** Must support all features of VPP exposed in its APIs in an extensible manner
+
  
 
* Honeycomb distribution
 
* Honeycomb distribution
Line 50: Line 74:
  
 
'''Out of scope:'''
 
'''Out of scope:'''
 +
* Yang models and translation code for VPP management
 +
** Moved to [https://wiki.fd.io/view/Hc2vpp hc2vpp] in 17.01
 +
 
* Vpp-japi
 
* Vpp-japi
 
** Java APIs for VPP, allowing JVM to interact with VPP is out of scope of Honeycomb project and is part of the base VPP project
 
** Java APIs for VPP, allowing JVM to interact with VPP is out of scope of Honeycomb project and is part of the base VPP project
Line 67: Line 94:
 
* Any other application based on top of Honeycomb is out of scope of this project and needs to be hosted in a dedicated project inside or outside of fd.io
 
* Any other application based on top of Honeycomb is out of scope of this project and needs to be hosted in a dedicated project inside or outside of fd.io
  
== Honeycomb backlog/plan ==
+
== Releases ==
The plans for honeycomb are still being developed, however the backlog with a few items already in progress can be found in: [https://jira.fd.io/projects/HONEYCOMB/issues Honeycomb's JIRA].
+
  
== Supported features/models ==
+
=== 19.01 - Last stable  ===
* [https://gerrit.fd.io/r/gitweb?p=honeycomb.git;a=blob;f=v3po/api/src/main/yang/v3po.yang;h=5553cf6612d88589542f078324cdb87acede069a;hb=refs/heads/master V3PO model]
+
 
 +
'''[[Honeycomb/Release_Plans/Release_Plan_19.01| Release plan]]''':
 +
* Work planned for release
 +
* Milestones leading to the release
 +
 
 +
[https://docs.fd.io/honeycomb/1.19.101/honeycomb-aggregator/index.html '''Documentation''']:
 +
* Devel documentation
 +
* Overview
 +
* Details
 +
* Javadocs
 +
* ... for each module in Honeycomb project
 +
 
 +
[https://docs.fd.io/honeycomb/1.19.01/release-notes-aggregator/release_notes.html '''Release notes''']:
 +
* New/Updated/Removed/Deprecated Features
 +
* Install guide
 +
* Devel guide
 +
* User guide
 +
 
 +
=== 19.04 - Current master ===
 +
 
 +
'''[[Honeycomb/Release_Plans/Release_Plan_19.04| Release plan]]''':
 +
* Work planned for release
 +
* Milestones leading to the release
 +
 
 +
[https://docs.fd.io/honeycomb/1.19.04-SNAPSHOT/honeycomb-aggregator/index.html '''Documentation''']:
 +
* Devel documentation
 +
* Overview
 +
* Details
 +
* Javadocs
 +
* ... for each module in Honeycomb project
 +
 
 +
[https://docs.fd.io/honeycomb/1.19.04-SNAPSHOT/release-notes-aggregator/release_notes.html '''Release notes''']:
 +
* New/Updated/Removed/Deprecated Features
 +
* Install guide
 +
* Devel guide
 +
* User guide
 +
 
 +
=== Previous releases ===
 +
==== 18.10 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_18.10| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.18.10/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.18.10/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 18.07 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_18.07| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.18.07/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.18.07/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 18.04 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_18.04| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.18.04/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.18.04/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 18.01 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_18.01| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.18.01/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.18.01/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 17.10 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_17.10| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.17.10/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.17.10/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 17.07 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_17.07| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.17.07/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.17.07/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 17.04 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_17.04| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.17.04/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.17.04/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 17.01 ====
 +
* '''[[Honeycomb/Release_Plans/Release_Plan_17.01| Release plan]]''':
 +
* [https://docs.fd.io/honeycomb/1.17.01/release-notes-aggregator/release_notes.html '''Release notes''']
 +
* [https://docs.fd.io/honeycomb/1.17.01/honeycomb-aggregator/index.html '''Documentation''']:
 +
==== 16.09 ====
 +
<b>[[Honeycomb/Releases/1609| Honeycomb 1609 release page]]</b>
 +
 
 +
== Honeycomb backlog ==
 +
Backlog can be found in: [https://jira.fd.io/secure/Dashboard.jspa?selectPageId=10200 Honeycomb's JIRA].
 +
 
 +
== Code quality ==
 +
Current sonar analysis can be found at: [https://sonar.fd.io/overview?id=1107 Honeycomb's sonar]
  
 
== Devel ==
 
== Devel ==
  
=== Start Here ===
+
[[Honeycomb/BranchCutting|HowTo: Cutting stable branches]]
 +
 
 +
[[Honeycomb/BumpingVersions|HowTo: Bumping versions]]
 +
 
 +
=== Design and architecture ===
  
[[honeycomb/Setting_Up_Your_Dev_Environment|Setting Up Your Dev Environment]]
+
<span style="color:red">// TODO These all should be part of the code in e.g. adoc format, built during CI, deployed and just linked here</span>
  
[[Honeycomb/Running_Honeycomb|Running Honeycomb]]
+
[[VPP/Java_API|JVpp Java facade for VPP]]
  
== Design and architecture ==
+
[[Honeycomb/Translation_Layer|Honeycomb Translation layer/SPI]]
  
[[Honeycomb/Design|Honeycomb architecture and design guide]]
+
[[Honeycomb/Persistence|Honeycomb persistence/Reconciliation with VPP]]
  
== Demos ==
+
[[Honeycomb/VPPJAPI workflow|Modifying the VPP JVPP API and testing in Honeycomb]]
  
=== Honeycomb bridge domain demo ===
+
[[Honeycomb/IETF-ACL model|IETF_ACL model implementation]]
[https://www.youtube.com/watch?v=vs1XzOOpaCo&feature=youtu.be Honeycomb Bridge Domain Demo]
+

Latest revision as of 20:44, 3 December 2020

Honeycomb Facts

Project Lead: Michal Cmarada
Committers:

  • Dave Wallace
  • Maros Marsalek
  • Marek Gradzki
  • Ed Warnicke
  • Robert Varga
  • Juraj Sloboda
  • Michal Cmarada

Repository: git clone https://gerrit.fd.io/r/honeycomb
Mailing List: honeycomb-dev@lists.fd.io
Jenkins: jenkins silo
Gerrit Patches: code patches/reviews
Bugs: HONEYCOMB bugs

Intro

Honeycomb is a generic NETCONF/RESTCONF java-based management agent and provides a framework for building specialized agents.

It uses many features and utilities from different Opendaylight (ODL) projects (e.g. yangtools, controller, mdsal and netconf). The biggest use case of honeycomb is VPP (fd.io’s Vector packet processor). Honeycomb delivers a management agent to enable integration of VPP with e.g. SDN controllers such as Opendaylight.

For VPP specific distribution of Honeycomb, please refer to hc2vpp project.

Overview

Honeycomb in VPP stack

Project Termination

Honeycomb/Termination Review

Slides

Honeycomb overview presentation from Paris FD.io 2016 event: File:Honeycomb overview.pptx

Honeycomb 1609 overview update from fd.io Seattle summit 2016: File:HC 1609 overview.pptx

Generic nature

Honeycomb provides a distribution to control VPP. However HC is developed as a generic agent that can be positioned on top of any other software/system etc. that can be controlled from Java(or some other JVM language) code. This is achieved thanks to the modularity of HC enabling any "translation plugin" such as V3PO (VPP core management translation code) to work in HC framework.

Minimal distribution

Honeycomb provides a minimal distribution that contains only:

  • HC framework jars + plugin jars + dependencies from Opendaylight
  • HC framework config files + plugin config files
  • Runnable shell scripts

Project Contact Name and Email

Meeting

Honeycomb meeting

Scope

This section is devided into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Honeycomb project and what will be just reused from other projects (or where Honeycomb relies on other projects).

Honeycomb project scope:

  • Translation layer between device management and Yang based data structures
  • Honeycomb distribution
    • Minimal distribution for Honeycomb management agent with all dependencies from ODL and their wiring

Out of scope:

  • Yang models and translation code for VPP management
  • Vpp-japi
    • Java APIs for VPP, allowing JVM to interact with VPP is out of scope of Honeycomb project and is part of the base VPP project
  • Yang parser
  • Base implementation of northbound interfaces
    • Base implementation of generic northbound interfaces is out of scope and will be reused from ODL's netconf project
  • Yang based data structures and a dedicated DataTree(storage)
    • Available from ODL's yangtools and mdsal projects, not necessarily the entire projects, only required parts in binary form.
  • Integration/performance testing
    • Complex integration or performance tests are out of scope of Honeycomb project and are part of CSIT project
  • Any other application based on top of Honeycomb is out of scope of this project and needs to be hosted in a dedicated project inside or outside of fd.io

Releases

19.01 - Last stable

Release plan:

  • Work planned for release
  • Milestones leading to the release

Documentation:

  • Devel documentation
  • Overview
  • Details
  • Javadocs
  • ... for each module in Honeycomb project

Release notes:

  • New/Updated/Removed/Deprecated Features
  • Install guide
  • Devel guide
  • User guide

19.04 - Current master

Release plan:

  • Work planned for release
  • Milestones leading to the release

Documentation:

  • Devel documentation
  • Overview
  • Details
  • Javadocs
  • ... for each module in Honeycomb project

Release notes:

  • New/Updated/Removed/Deprecated Features
  • Install guide
  • Devel guide
  • User guide

Previous releases

18.10

18.07

18.04

18.01

17.10

17.07

17.04

17.01

16.09

Honeycomb 1609 release page

Honeycomb backlog

Backlog can be found in: Honeycomb's JIRA.

Code quality

Current sonar analysis can be found at: Honeycomb's sonar

Devel

HowTo: Cutting stable branches

HowTo: Bumping versions

Design and architecture

// TODO These all should be part of the code in e.g. adoc format, built during CI, deployed and just linked here

JVpp Java facade for VPP

Honeycomb Translation layer/SPI

Honeycomb persistence/Reconciliation with VPP

Modifying the VPP JVPP API and testing in Honeycomb

IETF_ACL model implementation