Difference between revisions of "Archived-Sweetcomb"

From fd.io
Jump to: navigation, search
m (19.04 - Current master)
m (Valderrv moved page Sweetcomb to Archived-Sweetcomb)
 
(20 intermediate revisions by 3 users not shown)
Line 10: Line 10:
 
* [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile,
 
* [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile,
 
* [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom,
 
* [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom,
* [mailto:zhijl.bri@chinatelecom.cn Jinglong Zhi], @ China Telecom,
+
* [mailto:zhijl@chinatelecom.cn Jinglong Zhi], @ China Telecom,
 
* [mailto:changlin.li@nxp.com Changlin Li], @ NXP,
 
* [mailto:changlin.li@nxp.com Changlin Li], @ NXP,
 
* [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto,
 
* [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto,
Line 23: Line 23:
 
== Intro ==
 
== Intro ==
  
Sweetcomb is a management agent written in C that runs on the same host as a VPP instance, and exposes yang models via NETCONF, RESTCONF and gNMI to allow the management of VPP instances. And users also can manage VPP through SSL and JSON.
+
Sweetcomb is a management agent written in C that runs on the same host as a VPP instance, and exposes yang models via NETCONF, RESTCONF and gNMI to allow the management of VPP instances.
 +
 
 +
Sweetcomb work as a plugin (ELF shared library) for sysrepo datastore.
  
 
=== Overview ===
 
=== Overview ===
 
[[File:Sweetcomb-overview.png|frameless|Sweetcomb Architecture and environment]]
 
[[File:Sweetcomb-overview.png|frameless|Sweetcomb Architecture and environment]]
 +
 +
=== Project Termination ===
 +
[[Sweetcomb/Termination Review | Sweetcomb/Termination Review]]
 +
  
 
Draw.io source [https://github.com/YohanPipereau/drawio_sweetcomb/blob/master/sweetcomb.xml here]
 
Draw.io source [https://github.com/YohanPipereau/drawio_sweetcomb/blob/master/sweetcomb.xml here]
Line 35: Line 41:
 
* [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile,
 
* [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile,
 
* [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom,
 
* [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom,
* [mailto:zhijl.bri@chinatelecom.cn Jinglong Zhi], @ China Telecom,
+
* [mailto:zhijl@chinatelecom.cn Jinglong Zhi], @ China Telecom,
 
* [mailto:changlin.li@nxp.com Changlin Li], @ NXP,
 
* [mailto:changlin.li@nxp.com Changlin Li], @ NXP,
 
* [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto,
 
* [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto,
Line 43: Line 49:
 
* [mailto:jtollet@cisco.com Jerome Tollet], @ Cisco,
 
* [mailto:jtollet@cisco.com Jerome Tollet], @ Cisco,
 
* [mailto:George.Y.Zhao@huawei.com George Zhao], @ Huawei,
 
* [mailto:George.Y.Zhao@huawei.com George Zhao], @ Huawei,
 
  
 
== Scope ==
 
== Scope ==
Line 61: Line 66:
 
         - Integration with other systems
 
         - Integration with other systems
 
-->
 
-->
Sweetcomb's main responsibility is to enable communication between its 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 open source projects and tools (e.g. netopeer2, Sysrepo and openSSL) and will not be a direct part of Sweetcomb. This section is splitted into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Sweetcomb project and what will be just reused from other projects (or where Sweetcomb relies on other projects).
+
Sweetcomb's main responsibility is to enable communication between 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 open source projects and tools (e.g. netopeer2, Sysrepo) and will not be a direct part of Sweetcomb. This section is splitted into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Sweetcomb project and what will be just reused from other projects (or where Sweetcomb relies on other projects).
  
 
'''Sweetcomb project scope:'''
 
'''Sweetcomb project scope:'''
  
 
* Northbound interfaces exposed:
 
* Northbound interfaces exposed:
** [http://tools.ietf.org/html/rfc4741, Netconf] from sysrepo Netopeer2.
+
** [http://tools.ietf.org/html/rfc4741, Netconf] from [https://github.com/CESNET/Netopeer2 CESNET/Netopeer2]
** [https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md, gNMI] northbound interface
+
** [https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md, gNMI] northbound interface from [https://github.com/YohanPipereau/sysrepo-gnxi sysrepo-gnxi]
 
** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] (does not exist yet)
 
** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] (does not exist yet)
** SSL northbound interface
 
 
* Northbound interfaces servers:
 
** [https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md, gNMI] northbound interface
 
 
* Yang models for VPP management
 
** Configuration data and Operational data
 
** Support IETF without NMDA and Openconfig Yang Models
 
  
 
* Translation layer between VPP management and Yang based data structures
 
* Translation layer between VPP management and Yang based data structures
 
** Must support all features of VPP exposed in its APIs in an extensible manner
 
** Must support all features of VPP exposed in its APIs in an extensible manner
 +
 +
* Write YANG models for VPP specific features
  
 
* Expose APIs to integrate with other open source projects
 
* Expose APIs to integrate with other open source projects
Line 88: Line 87:
 
** expose APIs to integrate with DPI control plane, such as nDPI.
 
** expose APIs to integrate with DPI control plane, such as nDPI.
 
** expose APIs to integrate with BRAS control plane, such as OpenBRAS.
 
** expose APIs to integrate with BRAS control plane, such as OpenBRAS.
** To be added.
 
  
 
'''Out of scope:'''
 
'''Out of scope:'''
* Vpp-vapi
+
* VPP API (VAPI or VOM)
** C APIs for VPP, allowing C-based applications to interact with VPP is out of scope of Sweetcomb project and is part of the base VPP project.
+
** '''VAPI:''' C APIs for VPP, allowing C-based applications to interact with VPP is out of scope of Sweetcomb project and is part of the base VPP project.
 +
** '''VOM:''' C++ based API offering storage of networking objects
  
* Yang parser
+
* Writing yang models for VPP management
** Available from sysrepo project
+
** IETF and Openconfig YANG models are used as much as possible
 +
** For missing features, we rely on Honeycomb YANG models
 +
 
 +
* Compliancy with YANG models, storage of YANG tree
 +
** Provided by sysrepo project and libraries it uses
  
 
* Server implementation of northbound interfaces
 
* Server implementation of northbound interfaces
** [http://tools.ietf.org/html/rfc4741, Netconf] from sysrepo Netopeer2.
+
** [http://tools.ietf.org/html/rfc4741, Netconf] from [https://github.com/CESNET/Netopeer2 CESNET/Netopeer2]
** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] (does not exist yet)
+
** [https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-specification.md, gNMI] northbound interface from [https://github.com/YohanPipereau/sysrepo-gnxi sysrepo-gnxi]
** SSL from openSSL.
+
 
+
* Yang based data structures and a dedicated datastore
+
** Available from sysrepo project.
+
  
 
* Integration/performance testing
 
* Integration/performance testing
Line 111: Line 110:
  
 
== Releases ==
 
== Releases ==
 +
 
Sweetcomb releases are based on VPP version numbers as sweetcomb uses VPP API which is not backward compatible.
 
Sweetcomb releases are based on VPP version numbers as sweetcomb uses VPP API which is not backward compatible.
 
=== 19.08 - Current master ===
 
=== 19.04 - Last stable ===
 
  
=== 19.01 - Last stable (broken) ===
+
* [[Sweetcomb/20.01 Release Plan | 20.01 Release Plan]]
 +
 
 +
* [[Sweetcomb/19.08 Release Notes | 19.08 Release Notes]]
 +
* [[Sweetcomb/19.04 Release Notes | 19.04 Release Notes]]
 +
* [[Sweetcomb/19.01 Release Notes | 19.01 Release Notes]]
 +
 
 +
== Contributing ==
 +
 
 +
Contributions must go through code-review before being merged:
 +
    git clone https://gerrit.fd.io/r/sweetcomb
 +
 
 +
 
 +
Feel free to subscribe to the following mailing lists:
 +
* '''[https://lists.fd.io/g/sweetcomb-dev sweetcomb-dev@lists.fd.io]''' : to be notified about sweetcomb talks
 +
* '''[https://lists.fd.io/g/vpp-api-dev/ vpp-api-dev@lists.fd.io]''': to be notified about updated of the non-backward compatible VPP API
 +
* '''[http://www.sysrepo.org/ sysrepo-announce@sysrepo.org ]''' : to be notified about sysrepo releases
 +
* '''[http://www.sysrepo.org/ sysrepo-devel@sysrepo.org ]''' : to be notified about sysrepo bugs, tips, discussions
  
 
== Devel ==
 
== Devel ==
  
Source code is divided in three directories:
+
Source code is divided in two directories:
 
* '''scvpp''': library source code to communicate with VAPI (VPP API).
 
* '''scvpp''': library source code to communicate with VAPI (VPP API).
* '''plugins''': sysrepo plugin library source code implementing xpath callback
+
* '''plugins''': sysrepo plugin library source code implementing xpath callbacks
* '''gnmi''': a gNMI server to communicate with sysrepo datastore
+
  
 
=== Requirements ===
 
=== Requirements ===
Line 138: Line 150:
  
 
* [[Sweetcomb/gNMIServer | gNMI Server]], how to use gNMI server
 
* [[Sweetcomb/gNMIServer | gNMI Server]], how to use gNMI server
 +
 +
=== VOM ===
 +
 +
* [[Sweetcomb/VOM | VOM as a middleware]], Everything related to our attempt to use [[VPP/VOM | VOM ]] rather than scvpp.
 +
 +
== FAQ ==
 +
 +
[https://wiki.fd.io/view/Sweetcomb/FAQ FAQ]
  
 
== Meeting ==
 
== Meeting ==

Latest revision as of 21:30, 3 December 2020

Sweetcomb Facts

Project Lead: Hongjun Ni, @ Intel
Committers:

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

Intro

Sweetcomb is a management agent written in C that runs on the same host as a VPP instance, and exposes yang models via NETCONF, RESTCONF and gNMI to allow the management of VPP instances.

Sweetcomb work as a plugin (ELF shared library) for sysrepo datastore.

Overview

Sweetcomb Architecture and environment

Project Termination

Sweetcomb/Termination Review


Draw.io source here

Project Contact

Scope

Sweetcomb's main responsibility is to enable communication between 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 open source projects and tools (e.g. netopeer2, Sysrepo) and will not be a direct part of Sweetcomb. This section is splitted into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of Sweetcomb project and what will be just reused from other projects (or where Sweetcomb relies on other projects).

Sweetcomb project scope:

  • Translation layer between VPP management and Yang based data structures
    • Must support all features of VPP exposed in its APIs in an extensible manner
  • Write YANG models for VPP specific features
  • Expose APIs to integrate with other open source projects
    • Base implementation of all generic southbound interfaces leverage VPP-VAPI
    • expose APIs to integrate with SD-WAN control plane, such as SDN Controller.
    • expose APIs to integrate with Routing Daemon, such as FRR.
    • expose APIs to integrate with IKE protocol, such as strongswan.
    • expose APIs to integrate with DPI control plane, such as nDPI.
    • expose APIs to integrate with BRAS control plane, such as OpenBRAS.

Out of scope:

  • VPP API (VAPI or VOM)
    • VAPI: C APIs for VPP, allowing C-based applications to interact with VPP is out of scope of Sweetcomb project and is part of the base VPP project.
    • VOM: C++ based API offering storage of networking objects
  • Writing yang models for VPP management
    • IETF and Openconfig YANG models are used as much as possible
    • For missing features, we rely on Honeycomb YANG models
  • Compliancy with YANG models, storage of YANG tree
    • Provided by sysrepo project and libraries it uses
  • Integration/performance testing
    • Complex integration or performance tests are out of scope of Sweetcomb project and are part of CSIT project
  • Any other application based on top of Sweetcomb is out of scope of this project and needs to be hosted in a dedicated project inside or outside of fd.io

Releases

Sweetcomb releases are based on VPP version numbers as sweetcomb uses VPP API which is not backward compatible.

Contributing

Contributions must go through code-review before being merged:

   git clone https://gerrit.fd.io/r/sweetcomb


Feel free to subscribe to the following mailing lists:

Devel

Source code is divided in two directories:

  • scvpp: library source code to communicate with VAPI (VPP API).
  • plugins: sysrepo plugin library source code implementing xpath callbacks

Requirements

Implement your own module

gNMI server

VOM

FAQ

FAQ

Meeting

Sweetcomb meeting

Sweetcomb backlog

Backlog can be found in: sweetcomb's JIRA.

Code quality

There is no current sonar analysis on: https://sonar.fd.io