Documentation
¶
Overview ¶
Package router provides a network routing control plane
Index ¶
Constants ¶
View Source
const ( // AdvertiseEventsTick is time interval in which the router advertises route updates AdvertiseEventsTick = 5 * time.Second // AdvertiseTableTick is time interval in which router advertises all routes found in routing table AdvertiseTableTick = 1 * time.Minute // AdvertiseFlushTick is time the yet unconsumed advertisements are flush i.e. discarded AdvertiseFlushTick = 15 * time.Second // AdvertSuppress is advert suppression threshold AdvertSuppress = 2000.0 // AdvertRecover is advert recovery threshold AdvertRecover = 750.0 // DefaultAdvertTTL is default advertisement TTL DefaultAdvertTTL = 1 * time.Minute // DeletePenalty penalises route deletion DeletePenalty = 1000.0 // UpdatePenalty penalises route updates UpdatePenalty = 500.0 // PenaltyHalfLife is the time the advert penalty decays to half its value PenaltyHalfLife = 2.0 // MaxSuppressTime defines time after which the suppressed advert is deleted MaxSuppressTime = 5 * time.Minute )
Variables ¶
View Source
var ( // DefaultAddress is default router address DefaultAddress = ":9093" // DefaultNetwork is default micro network DefaultNetwork = "go.micro" )
View Source
var ( // DefaultRouter is default network router DefaultRouter = NewRouter() )
View Source
var ( // PenaltyDecay is a coefficient which controls the speed the advert penalty decays PenaltyDecay = math.Log(2) / PenaltyHalfLife )
Functions ¶
This section is empty.
Types ¶
type Advert ¶
type Advert struct {
// Id is the router Id
Id string
// Type is type of advert
Type AdvertType
// Timestamp marks the time when the update is sent
Timestamp time.Time
// TTL is Advert TTL
TTL time.Duration
// Events is a list of routing table events to advertise
Events []*table.Event
}
Advert contains a list of events advertised by the router to the network
type AdvertType ¶
type AdvertType int
AdvertType is route advertisement type
const ( // Announce is advertised when the router announces itself Announce AdvertType = iota // Update advertises route updates Update )
type Options ¶
type Options struct {
// Id is router id
Id string
// Address is router address
Address string
// Gateway is network gateway
Gateway string
// Network is network address
Network string
// Registry is the local registry
Registry registry.Registry
// Table is routing table
Table table.Table
}
Options are router options
type Router ¶
type Router interface {
// Router provides a routing table
table.Table
// Init initializes the router with options
Init(...Option) error
// Options returns the router options
Options() Options
// Advertise advertises routes to the network
Advertise() (<-chan *Advert, error)
// Process processes incoming adverts
Process(*Advert) error
// Status returns router status
Status() Status
// Stop stops the router
Stop() error
// Returns the router implementation
String() string
}
Router is an interface for a routing control plane
type Status ¶
type Status struct {
// Error is router error
Error error
// Code defines router status
Code StatusCode
}
Status is router status
type StatusCode ¶
type StatusCode int
StatusCode defines router status
const ( // Running means the router is up and running Running StatusCode = iota // Advertising means the router is advertising Advertising // Stopped means the router has been stopped Stopped // Error means the router has encountered error Error )
Click to show internal directories.
Click to hide internal directories.