GoBGP: Yet another BGP implementation in Go

448332ac5f61489e07109bff847cabe7?s=47 Wataru Ishida
December 06, 2015

GoBGP: Yet another BGP implementation in Go

Go Conference 2015 Winter

448332ac5f61489e07109bff847cabe7?s=128

Wataru Ishida

December 06, 2015
Tweet

Transcript

  1. GoBGP : Yet another BGP implementation in Go Go Conference

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

    BGP implementation? 4. GoBGP
  3. About Me - Wataru Ishida - Engineer @ NTT Software

    Innovation Center
  4. - BGP implementation written in Go osrg/gobgp

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

    BGP implementation? 4. GoBGP
  6. BGP - Border Gateway Protocol - A routing protocol which

    makes the Internet work
  7. https://en.wikipedia.org/wiki/Internet

  8. https://en.wikipedia.org/wiki/Internet BGP BGP BGP BGP BGP BGP

  9. 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
  10. 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
  11. https://www.nanog.org/sites/default/files/wed.general.brainslug.lapukhov.20.pdf BGP for Data-Centers

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

    BGP implementation? 4. GoBGP
  13. 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
  14. 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
  15. 1. About Me 2. What is BGP 3. Why another

    BGP implementation? 4. GoBGP
  16. 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
  17. show neighbors

  18. show routes

  19. monitor new routes

  20. 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
  21. 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
  22. 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