What is gRPC?
gRPC is a Google open-source project which provides efficient language-agnostic communication. It utilizes two key technologies: protocol buffers to provide efficient serialization for transmission, and http/2 for asynchronous communication. The result is highly efficient communication that enables off-platform applications to interact with ONOS with minimal cost.
Links:
Protocol Buffer guide (NOTE: we will be using proto3)
http/2 guide (RFC) (NOTE: only a basic understanding of http/2 is required to work on this)
Why gRPC?
gRPC will enable more ONOS apps to be moved off-platform consuming fewer system resources and providing a degree of isolation to reduce the chances of a fault in an application effecting the system as a whole.
Brigade Leads:
Aaron Kruglikov - Fujitsu
Brigade Status:
Currently doing recruiting and early planning.
Brigade Members:
We are seeking a group of 3 or 4 members.
Contact the brigade:
After official kickoff we will create a mailing list and slack channel for contributors.
Scope:
Short Term:
- Support gRPC as a northbound interface.
- Create handcrafted message types to provide access to system services (similar to the current REST API's but with improved performance via HTTP/2 multiplexing and improved encoding efficiency).
- Create thorough test suites.
Long Term:
- Add support for automatic code generation from ONOS service API's.
- Explore the possibility of enabling gRPC for East/West communication.
How to get involved:
Contact Aaron at aaron@onlab.us (please include "gRPC" in the subject).