Difference between revisions of "Archived-Sweetcomb"
m (Valderrv moved page Sweetcomb to Archived-Sweetcomb) |
|||
(61 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Project Facts | {{Project Facts | ||
− | |name= | + | |name=Sweetcomb |
− | |shortname= | + | |shortname=sweetcomb |
− | |jiraName= | + | |jiraName=sweetcomb |
− | |projectLead= | + | |projectLead=[mailto:hongjun.ni@intel.com Hongjun Ni], @ Intel |
|committers= | |committers= | ||
− | * | + | * [mailto:drenfong.wang@intel.com Drenfong Wang], @ Intel, |
− | * | + | * [mailto:wangchuanguo@huachentel.com Chuanguo Wang], @ HuachenTel, |
− | * | + | * [mailto:chenhui@huachentel.com Hui Chen], @ HuachenTel, |
− | * | + | * [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile, |
− | * | + | * [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom, |
− | * | + | * [mailto:zhijl@chinatelecom.cn Jinglong Zhi], @ China Telecom, |
+ | * [mailto:changlin.li@nxp.com Changlin Li], @ NXP, | ||
+ | * [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto, | ||
+ | * [mailto:davidfgao@tencent.com Feng Gao], @ Tencent, | ||
+ | * [mailto:jingqing.cjy@alibaba-inc.com Jianyong Chen], @ Alibaba, | ||
+ | * [mailto:gu.jian1@zte.com.cn Jian Gu], @ ZTE, | ||
+ | * [mailto:jtollet@cisco.com Jerome Tollet], @ Cisco, | ||
+ | * [mailto:mkonstan@cisco.com Maciek Konstantynowicz], @ Cisco, | ||
+ | * [mailto:rastislav.szabo@pantheon.tech Rastislav Szabo], @ Pantheon Technologies, | ||
+ | * [mailto:hongjun.ni@intel.com Hongjun Ni], @ Intel, | ||
}} | }} | ||
== 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. | |
− | + | Sweetcomb work as a plugin (ELF shared library) for sysrepo datastore. | |
− | + | ||
− | + | ||
− | + | ||
=== Overview === | === Overview === | ||
+ | [[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] | |
− | + | == Project Contact == | |
+ | * [mailto:hongjun.ni@intel.com Hongjun Ni], @ Intel, | ||
+ | * [mailto:lixingfu@huachentel.com Xingfu Li], @ HuachenTel, | ||
+ | * [mailto:18867105320@139.com Zhuoqun Li], @ China Mobile, | ||
+ | * [mailto:yangjj731@chinaunicom.cn Jianjun Yang], @ China Unicom, | ||
+ | * [mailto:zhijl@chinatelecom.cn Jinglong Zhi], @ China Telecom, | ||
+ | * [mailto:changlin.li@nxp.com Changlin Li], @ NXP, | ||
+ | * [mailto:tianyi.wang@tieto.com Tianyi Wang], @ Tieto, | ||
+ | * [mailto:davidfgao@tencent.com Feng Gao], @ Tencent, | ||
+ | * [mailto:jingqing.cjy@alibaba-inc.com Jianyong Chen], @ Alibaba, | ||
+ | * [mailto:gu.jian1@zte.com.cn Jian Gu], @ ZTE, | ||
+ | * [mailto:jtollet@cisco.com Jerome Tollet], @ Cisco, | ||
+ | * [mailto:George.Y.Zhao@huawei.com George Zhao], @ Huawei, | ||
− | ==== | + | == Scope == |
+ | <!-- Project scope. The project scope should be well defined. It should be possible from the scope to crisply answer whether something belongs or not within the scope of this particular project. Scopes should not be overly broad. A Project scope must also lie within the overall scope set by the board for projects in fd.io: | ||
+ | - IO | ||
+ | – Hardware/vHardware <-> threads/cores | ||
+ | - Processing | ||
+ | - Classify | ||
+ | - Transform | ||
+ | - Prioritize | ||
+ | - Forward | ||
+ | - Terminate | ||
+ | - Management Agents | ||
+ | - Control/Manage IO/Processing | ||
+ | - Supporting Projects | ||
+ | - Testing/Tools/Infrastructure | ||
+ | - Integration with other systems | ||
+ | --> | ||
+ | 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:''' | |
− | + | * Northbound interfaces exposed: | |
+ | ** [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 from [https://github.com/YohanPipereau/sysrepo-gnxi sysrepo-gnxi] | ||
+ | ** [https://tools.ietf.org/html/draft-ietf-netconf-restconf-05, Restconf] (does not exist yet) | ||
− | + | * 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:''' | '''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 |
− | * | + | * Server implementation of northbound interfaces |
− | ** | + | ** [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 from [https://github.com/YohanPipereau/sysrepo-gnxi sysrepo-gnxi] | |
− | * | + | |
− | * | + | |
* Integration/performance testing | * Integration/performance testing | ||
− | ** Complex integration or performance tests are out of scope of | + | ** 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 | + | * 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 == | == Releases == | ||
− | + | Sweetcomb releases are based on VPP version numbers as sweetcomb uses VPP API which is not backward compatible. | |
− | + | * [[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 | ||
− | |||
− | |||
− | |||
− | [https:// | + | 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 == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 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 === |
− | + | ||
− | + | * [[Sweetcomb/RPCop | RPC operations]], what data I am reading, writing | |
− | + | * [[Sweetcomb/FaultTolerance | Fault Tolerance]], what happens if sweetcomb dies, or VPP dies | |
− | == | + | === Implement your own module === |
− | [[ | + | * [[Sweetcomb/NewModel | New model]], how to support a new YANG model |
+ | * [[Sweetcomb/Sysrepo | Notes about sysrepo ]], sysrepo part of a new YANG model | ||
− | + | === 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 == | |
− | [[ | + | [https://wiki.fd.io/view/Sweetcomb/Meeting Sweetcomb meeting] |
+ | |||
+ | == Sweetcomb backlog == | ||
+ | Backlog can be found in: [https://jira.fd.io/projects/SWEET/ sweetcomb's JIRA]. | ||
+ | |||
+ | == Code quality == | ||
+ | There is no current sonar analysis on: [https://sonar.fd.io https://sonar.fd.io] |
Latest revision as of 21:30, 3 December 2020
Sweetcomb Facts |
Project Lead: Hongjun Ni, @ Intel
Repository: git clone https://gerrit.fd.io/r/sweetcomb |
Contents
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
Project Termination
Draw.io source here
Project Contact
- Hongjun Ni, @ Intel,
- Xingfu Li, @ HuachenTel,
- Zhuoqun Li, @ China Mobile,
- Jianjun Yang, @ China Unicom,
- Jinglong Zhi, @ China Telecom,
- Changlin Li, @ NXP,
- Tianyi Wang, @ Tieto,
- Feng Gao, @ Tencent,
- Jianyong Chen, @ Alibaba,
- Jian Gu, @ ZTE,
- Jerome Tollet, @ Cisco,
- George Zhao, @ Huawei,
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:
- Northbound interfaces exposed:
- Netconf from CESNET/Netopeer2
- gNMI northbound interface from sysrepo-gnxi
- Restconf (does not exist yet)
- 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
- Server implementation of northbound interfaces
- Netconf from CESNET/Netopeer2
- gNMI northbound interface from sysrepo-gnxi
- 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:
- sweetcomb-dev@lists.fd.io : to be notified about sweetcomb talks
- vpp-api-dev@lists.fd.io: to be notified about updated of the non-backward compatible VPP API
- sysrepo-announce@sysrepo.org : to be notified about sysrepo releases
- sysrepo-devel@sysrepo.org : to be notified about sysrepo bugs, tips, discussions
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
- RPC operations, what data I am reading, writing
- Fault Tolerance, what happens if sweetcomb dies, or VPP dies
Implement your own module
- New model, how to support a new YANG model
- Notes about sysrepo , sysrepo part of a new YANG model
gNMI server
- gNMI Server, how to use gNMI server
VOM
- VOM as a middleware, Everything related to our attempt to use VOM rather than scvpp.
FAQ
Meeting
Sweetcomb backlog
Backlog can be found in: sweetcomb's JIRA.
Code quality
There is no current sonar analysis on: https://sonar.fd.io