Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoBGP: Yet another BGP implementation in Go

Wataru Ishida
December 06, 2015

GoBGP: Yet another BGP implementation in Go

Go Conference 2015 Winter

Wataru Ishida

December 06, 2015
Tweet

More Decks by Wataru Ishida

Other Decks in Technology

Transcript

  1. 1. About Me 2. What is BGP 3. Why another

    BGP implementation? 4. GoBGP
  2. 1. About Me 2. What is BGP 3. Why another

    BGP implementation? 4. GoBGP
  3. BGP in a nutshell 192.168.0.0/24 A advertises 192.168.0.0/24 via BGP

    A B B sends traffic destined for 192.168.0.0/24 to A
  4. BGP – Old but New - RFC 1654 A Border

    Gateway Protocol 4 in 1994 - Still increasing its capability - BGP is not only for the Internet - BGP for Data-Center Network - BGP for VM/Container networking - BGP for DDoS detection/mitigation
  5. 1. About Me 2. What is BGP 3. Why another

    BGP implementation? 4. GoBGP
  6. Networking - still living in the era of mainframe ?

    - Tight coupling between hardware and software - Proprietary and closed software - Main interface is Command Line (lack of APIs) - Hard to automate the operations - Operators are fighting with telnet and expect - “なぜネットワーク運用自動化が進まないのか” http://www.slideshare.net/taijitsuchiya5/ss-4739824 - But things are changing
  7. Open Networking - Similar to the move from mainframe to

    IA server - white box switch - switch with no software - cumulus linux, open network linux etc. - linux distribution for white box switch - we can run any software we need - Time to have a modern BGP implementation to embrace this transition! OS Hardware APP APP OS White box switch APP APP disaggregate tightly coupled
  8. 1. About Me 2. What is BGP 3. Why another

    BGP implementation? 4. GoBGP
  9. GoBGP - BGP implementation for the era of Open Networking

    - API first - All configuration is done via gRPC - CLI is implemented as a gRPC client gobgpd (daemon) gobgp (CLI) Your Software gRPC
  10. Go Experience - writing go is fun - writing go

    is fun - gRPC is good - go tool pprof helps a lot - logging cost - any good library? - goroutine/channel is not always fast - pipeline design looks cool but we are not using it
  11. Other applications - Route Server for IX (Internet Exchange) -

    working with JPNAP (largest IX in Japan) - Docker Container Networking - nerdalert/ipvlan-docker-plugin - DDoS mitigation - pavel-odintsov/fastnetmon - Internet Monitoring - working with BGPMon (www.bgpmon.io) - BGP packet library - can be used as a c-shared BGP lib
  12. Summary - Big wave of Open Networking is coming -

    More and more network engineers are starting to write code - Try GoBGP ! - If you have any troubles with a legacy network, it is a chance to jump into open networking world! - Any comment, feedback, PR is very welcome