Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Support gRPC besides Zebra protocol #2585

Closed
iwaseyusuke opened this issue Jun 29, 2018 · 11 comments
Closed

Proposal: Support gRPC besides Zebra protocol #2585

iwaseyusuke opened this issue Jun 29, 2018 · 11 comments

Comments

@iwaseyusuke
Copy link

Just an idea, I think it useful to support gRPC to communicate with the Zebra daemon from other protocol daemons. Including outside of FRRouting project, for the control plane project like GoBGP, ExaBGP, some SDN Controllers or container networking tools, the Zebra is very powerful RIB management stack for their data plane. If these project providing the integration with the Zebra daemon, we can also integrate them with other protocol stacks (e.g. OSPFd and BGPd of FRRouting) seamlessly. But unfortunately, to realize this integration feature, it is required to trace the structures of the Zebra protocol which is not well documented and difficult to follow its updates, then it can be a heavy burden to implement. If we can communicate with the Zebra daemon by using gRPC, it should become more easier to implement own Zebra client applications and also help the expansion of a variety of eco-systems with other networking project or other programming languages.
What do you think about?

@donaldsharp
Copy link
Member

Why don't we spend time documenting and solidifying the ZAPI such that other people can program to it instead of adding a different way of interacting with the daemons and adding more complexity to zebra?

@qlyoung
Copy link
Member

qlyoung commented Jun 29, 2018

@iwaseyusuke We are currently in the middle of a big cleanup effort around our current API, as Donald said. While additional RPC interfaces would certainly be nice to have, we need to hammer down ZAPI first.

I would consider this a low priority nice-to-have at this point in time. I've added it to the feature requests page here. Thanks for the suggestion!

@riw777
Copy link
Member

riw777 commented Jun 29, 2018 via email

@iwaseyusuke
Copy link
Author

Thanks for your agreement Russ, but I don’t mean the document enhancement. Because what I really need is some convenient ways to communicate to the Zebra daemon. Of course, gRPC is just a candidate for such, but the ZAPI is ... not optimized way, I guess.
Nonetheless, a big cleanup of API going on is very interesting for me. Thanks.

@donaldsharp
Copy link
Member

We need to be more rigorous about not changing the ZAPI and also documenting what we have so that people outside of FRR have the ability to use zebra.

@pguibert6WIND
Copy link
Member

Hi @iwaseyusuke,

by the way, even if the idea was interesting but not applicable; don't you think that there is a conflcit version ?
Remind that GRPC is Apache licensed, while FRR is not.
no ?

@iwaseyusuke
Copy link
Author

Hi @pguibert6WIND

I don’t think using gRPC causes a conflict of licenses.
gRPC is a RPC framework using Protocol Buffer as encoding format including tools and libraries (protoc compiler, language bindings and so on). For example, protoc is written with Apache 2 license, but .proto files in each project which using gRPC should not always be forced to use Apache 2 license.
It is like that Python has its own license, but all Python projects aren’t required to use it.
Please correct me if I have some misunderstanding.

Thanks

@pguibert6WIND
Copy link
Member

Hi @iwaseyusuke, your understanding is exactly what I ask.

actually, I fear that my feeling is bad about that, at least in cpp language ( that could be presumably be linked ( dynamically for instance) with a frr library if everything is ok).

actually, I just looked at how helloworld from grpc is made:
and it looks like :

  • libgrpc library is made up of C files licensed with apache license 2.0
  • that library is you use if you use grpc.proto services.
  • the header files included in the generated .cc file are also licensed under apache 2.0

so basically, because there is a conflict between apache 2.0 and gpl v2.0, I don't see how the usage of both can be possible.

more information if you look on makefile from:
https://github.com/grpc/grpc/examples/cpp/helloworld/Makefile

@iwaseyusuke
Copy link
Author

Hi @pguibert6WIND

Hmmm.... I'm sorry for I'm not familiar with the opensource license, but I wonder if there are c/cpp projects using gRPC and its own license is not Apache 2.

@pguibert6WIND
Copy link
Member

for info @iwaseyusuke , it is possible to use it
for info, #3376

@qlyoung
Copy link
Member

qlyoung commented Aug 25, 2019

#4082

@qlyoung qlyoung closed this as completed Aug 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants