Skip to content

m13253/fgbgp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FGBGP

This is a BGP library in Go.

Features

  • Decode/encode BGP messages
  • Maintain a connexion with peers
  • RIB data structure (add/remove IPv4/IPv6)
  • Event-based API
  • Encode/decode MRT format

Why use this library?

It was developped to have a flexible BGP server running on a cluster with load-balanced IPs and ready for scale. A full-table will use around 300MB of RAM.

This is not a fully integrated BGP daemon: it does not filter routes or automatically send BGP updates on the routes learned.

The behavior has to be implemented using the event-based API:

  • Peer status change
  • Update received

This library can also be used for standalone BGP Messages decoding, reading MRT files or storing updates into a RIB and perform lookups.

Supported BGP features

  • Add-path (decode/encode only, not storing into the RIB)
  • Route-refresh
  • Basic BGP attributes (Origin, MED...)
  • Aggregator

Supported MRT features

  • TABLEDUMPV2
  • MRT update
  • Status

Example

import (
    "fmt"
    server "fgbgp/server"
)

type Collector struct {

}

func (col *Collector) Notification(msg *messages.BGPMessageNotification, n *server.Neighbor) (bool) {
    return true
}

func (col *Collector) ProcessReceived(v interface{}, n *server.Neighbor) (bool, error) {
    return true, nil
}

func (col *Collector) ProcessSend(v interface{}, n *server.Neighbor) (bool, error) {
    return true, nil
}

func (col *Collector) ProcessUpdateEvent(e *messages.BGPMessageUpdate, n *server.Neighbor) (add bool) {

}

func main() {
    m := server.NewManager(65001, net.ParseIP("10.0.0.1"), false, false)
    m.UseDefaultUpdateHandler(10)
    col := &Collector{}
    m.SetEventHandler(&col)
    m.SetUpdateEventHandler(&col)
    err := m.NewServer(*BgpAddr)
    if err != nil {
        log.Fatal(err)
    } 
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%