kobolog / gorb

IPVS on steroids – REST API, heartbeats, service discovery and more
GNU Lesser General Public License v3.0
809 stars 83 forks source link

BGP host-route announces question #13

Closed aledbf closed 8 years ago

aledbf commented 8 years ago

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

kobolog commented 8 years ago

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.

tehnerd commented 8 years ago

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)

aledbf commented 8 years ago

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.

aledbf commented 8 years ago

@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 https://github.com/kubernetes/contrib/pull/280 that I'm finishing)

kobolog commented 8 years ago

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 =)

aledbf commented 8 years ago

@kobolog I found this goplane

ishidawataru commented 8 years ago

@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

aledbf commented 8 years ago

@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

aledbf commented 8 years ago

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

kobolog commented 8 years ago

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.