Difference between revisions of "GoVPP"

From fd.io
Jump to: navigation, search
 
(3 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
|jiraName=GOVPP
 
|jiraName=GOVPP
 
|mailingList=[https://lists.fd.io/mailman/listinfo/govpp-dev govpp-dev@lists.fd.io]
 
|mailingList=[https://lists.fd.io/mailman/listinfo/govpp-dev govpp-dev@lists.fd.io]
|projectLead= Rastislav Szabo
+
|projectLead= Ondrej Fabry
 
|committers=
 
|committers=
 +
* Ondrej Fabry
 +
* Vladimir Lavor
 
* Jan Medved
 
* Jan Medved
 
* Rastislav Szabo
 
* Rastislav Szabo
* Nikos Bregiannis
+
* Nathan Skrzypczak
* Ondrej Fabry
+
 
}}
 
}}
  
Line 19: Line 20:
 
* [https://wiki.fd.io/images/f/fa/GoVPP-intro.pdf GoVPP Inroduction Slides]
 
* [https://wiki.fd.io/images/f/fa/GoVPP-intro.pdf GoVPP Inroduction Slides]
  
== Project Contact Name and Email ==
+
== Get Involved ==
 +
 
 +
* [[GoVPP/Meeting|GoVPP Meeting]]
 +
* GoVPP Slack Channel: [https://fdio-project.slack.com/messages/C01905FGAQ0 fdio-project #govpp]
 +
* [https://lists.fd.io/mailman/listinfo/govpp-dev Join the GoVPP Mailing List]
 +
* [[GoVPP/Release Plans/Release Plan 22.06|GoVPP Release Plan 22.06]]
 +
 
 +
Note: Slack is the preferred application for GoVPP developer and user communications.
 +
 
 +
== Project Contacts ==
 +
 
 
<!-- Name and email of the project contact -->
 
<!-- Name and email of the project contact -->
* [mailto:jmedved@cisco.com Jan Medved]
 
* [mailto:raszabo@cisco.com Rastislav Szabo]
 
 
* [mailto:ofabry@cisco.com Ondrej Fabry]
 
* [mailto:ofabry@cisco.com Ondrej Fabry]
 +
* [mailto:vlavor@cisco.com Vladimir Lavor]
  
 
== Scope ==
 
== Scope ==
Line 34: Line 44:
 
# GoVPP API packages:
 
# GoVPP API packages:
 
#* api: high-level API for communication with govpp core using Go channels
 
#* api: high-level API for communication with govpp core using Go channels
#* core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, marshalls/unmarshalls them and forwards them between the client Go channels and the VPP
+
#* core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, encodes them and forwards them between the client Go channels and the VPP
 
#* adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
 
#* adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
# Other code to ease the adoption of fd.io by Go users
+
# Other code to ease the adoption of FD.io by Go users
 
# Supporting code:
 
# Supporting code:
 
#* examples
 
#* examples
Line 49: Line 59:
 
== Performance ==
 
== Performance ==
 
According to the [https://wiki.fd.io/view/GoVPP/Performance performance benchmark] results, GoVPP is currently able to handle more than 250 000 binary API requests per second via the asynchronous API on a standard laptop. More details: [https://wiki.fd.io/view/GoVPP/Performance]
 
According to the [https://wiki.fd.io/view/GoVPP/Performance performance benchmark] results, GoVPP is currently able to handle more than 250 000 binary API requests per second via the asynchronous API on a standard laptop. More details: [https://wiki.fd.io/view/GoVPP/Performance]
 
== Release Plan ==
 
* [https://wiki.fd.io/view/GoVPP/Release_Plans/Release_Plan_17.07 Release Plan 17.07]
 
  
 
== Devel ==
 
== Devel ==
  
* Go-getting the code:
+
* Adding Go module dependency:
  go get git.fd.io/govpp.git
+
  go get go.fd.io/govpp
  
* Installing the binary API generator:
+
* Installing VPP binary API generator:
  go install git.fd.io/govpp.git/cmd/binapi-generator
+
  go install go.fd.io/govpp/cmd/binapi-generator@latest
  
 
* [https://blog.golang.org/generate go generate] rule for generating binary API bindings:
 
* [https://blog.golang.org/generate go generate] rule for generating binary API bindings:
   //go:generate binapi_generator --input-file=/usr/share/vpp/api/vpe.api.json --output-dir=./bin_api
+
   //go:generate binapi-generator --input=/usr/share/vpp/api --output-dir=./binapi
 +
 
 +
* [https://github.com/FDio/govpp/blob/master/README.md README.md]
 +
 
 +
* Auto-generated documentation on [https://pkg.go.dev/go.fd.io/govpp GoDoc]
  
* [https://gerrit.fd.io/r/gitweb?p=govpp.git;a=blob;f=README.md README.md]
+
== Previous Release Plans ==
 +
* [[GoVPP/Release Plans/Release Plan 17.07|GoVPP Release Plan 17.07]]
  
* Auto-generated documentation on [https://godoc.org/git.fd.io/govpp.git GoDoc]
+
== List of all subpages (used or unused) ==
  
* [[GoVPP/gerrit-review|Submitting patches from $GOPATH to Gerrit]]
+
{{Special:PrefixIndex |prefix=GoVPP|hideredirects=1}}

Latest revision as of 09:16, 14 March 2023

GoVPP Facts

Project Lead: Ondrej Fabry
Committers:

  • Ondrej Fabry
  • Vladimir Lavor
  • Jan Medved
  • Rastislav Szabo
  • Nathan Skrzypczak

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

Intro

GoVPP is a Golang toolset for VPP management. It consists of a set of Golang packages that provide the API for VPP management based on the Go bindings generated from the VPP binary APIs. It can be used as the foundation for any VPP management/control plane written in Go.

Apart from the packages providing the API and tools allowing to write VPP management applications in Go from scratch, the project also aims to provide a cloud-native VPP management agent that can be used in VPP-based container infrastructure.

Get Involved

Note: Slack is the preferred application for GoVPP developer and user communications.

Project Contacts

Scope

GoVPP project scope:

  1. Go bindings generator:
    • generates Go structs from binary API definitions in JSON
    • annotates the generated Go bindings so they can be marshalled / unmarshalled to/from binary data as understood by VPP
  2. GoVPP API packages:
    • api: high-level API for communication with govpp core using Go channels
    • core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, encodes them and forwards them between the client Go channels and the VPP
    • adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
  3. Other code to ease the adoption of FD.io by Go users
  4. Supporting code:
    • examples
    • unit tests

Out of scope:

  1. Generator of JSON definitions of VPP binary APIs
  2. vppapiclient (former pneum) library used to send & receive binary-encoded data to/from VPP


Performance

According to the performance benchmark results, GoVPP is currently able to handle more than 250 000 binary API requests per second via the asynchronous API on a standard laptop. More details: [1]

Devel

  • Adding Go module dependency:
go get go.fd.io/govpp
  • Installing VPP binary API generator:
go install go.fd.io/govpp/cmd/binapi-generator@latest
 //go:generate binapi-generator --input=/usr/share/vpp/api --output-dir=./binapi
  • Auto-generated documentation on GoDoc

Previous Release Plans

List of all subpages (used or unused)

GoVPPGoVPP/MeetingGoVPP/Performance
GoVPP/Release Plans/Release Plan 17.07GoVPP/gerrit-review