kobolog/gorb

BGP host-route announces question

aledbf opened this issue · 10 comments

Can you provide more information about this feature?
(e.g. use exabgp, tehnerd/bgp2go, osrg/gobgp or something else)

I'm not sure yet what approach to take to implement it. I used to work with @tehnerd in Yandex and AFAIK his Go projects are mainly for self-educational purposes. I'll ask him if he's up for some collaboration here. If not, then I'd prefer using some other native BGP library, like osrg/gobgp rather than bringing in C (like Bird) or other bindings.

i'd say that gobgp is definitely more stable/reliable right now, but it seems it would be harder to add it as a lib in your binary (same goes for the exabgp): you would need to run it as an external bin and somehow communicate with it thru the api. bgp2go is highly unstable right now (as @kobolog said right now it's mostly for the educational purposes, however i'm planning to make it more mature/stable), and has lots of limitation, yet you can inject /32 (/128 in case of ipv6) routes into bgp domain (ibgp only right now)

you would need to run it as an external bin and somehow communicate with it thru the api

gobgp provides a gRPC api so using that from go is easy.

@kobolog I asked about this feature because I want to create a POC to see if I can create a Kubernetes Ingress Controller (like this one kubernetes-retired/contrib#280 that I'm finishing)

Well, I'm definitely supporting any moves towards making GORB a better thing! I guess gobgp is the way to go unless @tehnerd wants to stabilize bgp2go any time soon =)

@kobolog I found this goplane

@aledbf I think goplane is not what you need. Its usage is specific to EVPN. Internally, it uses gobgp but currently it doesn't work with latest gobgp.. As you said, you can use gobgp instead. Here is the documentation to use gobgp as a go native library. https://github.com/osrg/gobgp/blob/master/docs/sources/lib.md

@kobolog I tried to use gobgp and exabgp but it was more complex than I originally thought. Instead I ended using keepalived. This is the project https://github.com/aledbf/kube-keepalived-vip

poc using exabgp

Thanks for your help

Searching for alternatives I found this project clusterf (is similar to gorb)

I'm super excited about all these projects popping around IPVS and containers! Hopefully soon we'll see more products based off this tech enabling extremely scalable and performant networking around Docker! I'm still down for adding BGP support to GORB – I think I'll get to it after NYE holidays.