Documentation
¶
Index ¶
- Variables
- func CreateIngressMetrics(m *Metrics) dataplane.IngressMetrics
- func CreateSessionMetrics(m *Metrics) dataplane.SessionMetrics
- func ExperimentalExportMainRT() bool
- type ConfigPublisherAdvertiser
- type DataplaneSessionFactory
- type Gateway
- type MetricMeta
- type Metrics
- type PacketConnFactory
- type PathMonitor
- type RoutingPolicyPublisherAdapter
- type RoutingTableFactory
- type WatcherFactory
Constants ¶
This section is empty.
Variables ¶
View Source
var ( IPPktBytesSentTotalMeta = MetricMeta{ Name: "gateway_ippkt_bytes_sent_total", Help: "Total IP packet bytes sent to remote gateways.", Labels: []string{"remote_isd_as", "policy_id"}, } IPPktsSentTotalMeta = MetricMeta{ Name: "gateway_ippkts_sent_total", Help: "Total number of IP packets sent to remote gateways.", Labels: []string{"remote_isd_as", "policy_id"}, } IPPktBytesReceivedTotalMeta = MetricMeta{ Name: "gateway_ippkt_bytes_received_total", Help: "Total IP packet bytes received from remote gateways.", Labels: []string{"remote_isd_as"}, } IPPktsReceivedTotalMeta = MetricMeta{ Name: "gateway_ippkts_received_total", Help: "Total number of IP packets received from remote gateways.", Labels: []string{"remote_isd_as"}, } IPPktBytesLocalSentTotalMeta = MetricMeta{ Name: "gateway_ippkt_bytes_local_sent_total", Help: "Total IP packet bytes sent to the local network.", Labels: []string{}, } IPPktsLocalSentTotalMeta = MetricMeta{ Name: "gateway_ippkts_local_sent_total", Help: "Total number of IP packets sent to the local network.", Labels: []string{}, } IPPktBytesLocalReceivedTotalMeta = MetricMeta{ Name: "gateway_ippkt_bytes_local_received_total", Help: "Total IP packet bytes received from the local network.", Labels: []string{}, } IPPktsLocalReceivedTotalMeta = MetricMeta{ Name: "gateway_ippkts_local_received_total", Help: "Total number of IP packets received from the local network.", Labels: []string{}, } FrameBytesSentTotalMeta = MetricMeta{ Name: "gateway_frame_bytes_sent_total", Help: "Total frame bytes sent to remote gateways.", Labels: []string{"remote_isd_as", "policy_id"}, } FramesSentTotalMeta = MetricMeta{ Name: "gateway_frames_sent_total", Help: "Total number of frames sent to remote gateways.", Labels: []string{"remote_isd_as", "policy_id"}, } FrameBytesReceivedTotalMeta = MetricMeta{ Name: "gateway_frame_bytes_received_total", Help: "gateway_frame_bytes_received_total", Labels: []string{"remote_isd_as"}, } FramesReceivedTotalMeta = MetricMeta{ Name: "gateway_frames_received_total", Help: "Total number of frames received from remote gateways.", Labels: []string{"remote_isd_as"}, } FramesDiscardedTotalMeta = MetricMeta{ Name: "gateway_frames_discarded_total", Help: "Total number of discarded frames received from remote gateways.", Labels: []string{"remote_isd_as", "reason"}, } IPPktsDiscardedTotalMeta = MetricMeta{ Name: "gateway_ippkts_discarded_total", Help: "Total number of discarded IP packets received from the local network.", Labels: []string{"reason"}, } SendExternalErrorsTotalMeta = MetricMeta{ Name: "gateway_send_external_errors_total", Help: "Total number of errors when sending frames to the network (WAN).", Labels: []string{}, } SendLocalErrorsTotalMeta = MetricMeta{ Name: "gateway_send_local_errors_total", Help: "Total number of errors when sending IP packets to the network (LAN).", Labels: []string{}, } ReceiveExternalErrorsTotalMeta = MetricMeta{ Name: "gateway_receive_external_errors_total", Help: "Total number of errors when receiving frames from the network (WAN).", Labels: []string{}, } ReceiveLocalErrorsTotalMeta = MetricMeta{ Name: "gateway_receive_local_errors_total", Help: "Total number of errors when receiving IP packets from the network (LAN).", Labels: []string{}, } PathsMonitoredMeta = MetricMeta{ Name: "gateway_paths_monitored", Help: "Total number of paths being monitored by the gateway.", Labels: []string{"remote_isd_as"}, } SessionPathsAvailableMeta = MetricMeta{ Name: "gateway_session_paths_available", Help: "Total number of paths available per session policy.", Labels: []string{"remote_isd_as", "policy_id", "status"}, } RemotesMeta = MetricMeta{ Name: "gateway_remotes", Help: "Total number of discovered remote gateways.", Labels: []string{"remote_isd_as"}, } PrefixesAdvertisedMeta = MetricMeta{ Name: "gateway_prefixes_advertised", Help: "Total number of advertised IP prefixes (outgoing).", Labels: []string{"remote_isd_as"}, } PrefixesAcceptedMeta = MetricMeta{ Name: "gateway_prefixes_accepted", Help: "Total number of accepted IP prefixes (incoming).", Labels: []string{"remote_isd_as"}, } PrefixesRejectedMeta = MetricMeta{ Name: "gateway_prefixes_rejected", Help: "Total number of rejected IP prefixes (incoming).", Labels: []string{"remote_isd_as"}, } )
These are the metrics that should be exposed by any gateway implementation.
Functions ¶
func CreateIngressMetrics ¶
func CreateIngressMetrics(m *Metrics) dataplane.IngressMetrics
func CreateSessionMetrics ¶
func CreateSessionMetrics(m *Metrics) dataplane.SessionMetrics
func ExperimentalExportMainRT ¶
func ExperimentalExportMainRT() bool
Types ¶
type ConfigPublisherAdvertiser ¶
type ConfigPublisherAdvertiser struct {
ConfigPublisher *control.ConfigPublisher
}
ConfigPublisherAdvertiser computes the networks that should be advertised depending on the state of the last published routing policy file.
func (*ConfigPublisherAdvertiser) AdvertiseList ¶
func (a *ConfigPublisherAdvertiser) AdvertiseList(from, to addr.IA) []*net.IPNet
type DataplaneSessionFactory ¶
type DataplaneSessionFactory struct {
PacketConnFactory PacketConnFactory
PathStatsPublisher dataplane.PathStatsPublisher
Metrics dataplane.SessionMetrics
}
type Gateway ¶
type Gateway struct {
// ID is the ID of this gateway.
ID string
// TrafficPolicyFile holds the location of the traffic policy file.
TrafficPolicyFile string
// RoutingPolicyFile holds the location of the routing policy file.
RoutingPolicyFile string
// ControlClientIP is the IP for network prefix discovery.
ControlClientIP net.IP
// ControlServerAddr is the address of the local gRPC server serving prefix
// discovery requests. The server runs on the UDP/SCION + QUIC stack.
ControlServerAddr *net.UDPAddr
// ServiceDiscoveryClientIP is the IP for SCION Service Discovery UDP packets.
ServiceDiscoveryClientIP net.IP
// PathMonitorIP is the IP that should be used for path monitoring SCMP traceroute traffic.
PathMonitorIP net.IP
// ProbeServerAddr is the address for the probe server. The probe server replies
// to probe traffic from other gateways.
ProbeServerAddr *net.UDPAddr
// ProbeClientIP is the IP from which local probes will be sent out.
ProbeClientIP net.IP
// DataServerAddr is the address for encapsulated data traffic received from other gateways.
DataServerAddr *net.UDPAddr
// DataClientIP is the IP from which encapsulated data traffic is sent to other gateways.
DataClientIP net.IP
// DataIP is the IP that should be used for dataplane traffic.
DataAddr *net.UDPAddr
// Dispatcher is the API of the SCION Dispatcher on the local host.
Dispatcher reliable.Dispatcher
// Daemon is the API of the SCION Daemon.
Daemon sciond.Connector
// InternalDevice is the tunnel interface from which packets are read.
InternalDevice io.ReadWriteCloser
// RouteDevice is the device for routes added to the Linux routing table.
RouteDevice netlink.Link
// RouteSource is the source for routes added to the Linux routing table.
RouteSource net.IP
// ConfigReloadTrigger can be used to trigger a config reload.
ConfigReloadTrigger chan struct{}
// HTTPEndpoints is a map of http endpoints.
HTTPEndpoints service.StatusPages
// HTTPServeMux is the http server mux that is used to expose gateway http
// endpoints.
HTTPServeMux *http.ServeMux
// Logger is the base logger for all modules initialized by the gateway.
Logger log.Logger
// Metrics are the metrics exported by the gateway.
Metrics *Metrics
}
type MetricMeta ¶
func (*MetricMeta) NewCounterVec ¶
func (mm *MetricMeta) NewCounterVec() *prometheus.CounterVec
func (*MetricMeta) NewGaugeVec ¶
func (mm *MetricMeta) NewGaugeVec() *prometheus.GaugeVec
type Metrics ¶
type Metrics struct {
// Traffic Metrics
IPPktBytesSentTotal *prometheus.CounterVec
IPPktBytesReceivedTotal *prometheus.CounterVec
IPPktsSentTotal *prometheus.CounterVec
IPPktsReceivedTotal *prometheus.CounterVec
IPPktBytesLocalSentTotal *prometheus.CounterVec
IPPktBytesLocalReceivedTotal *prometheus.CounterVec
IPPktsLocalSentTotal *prometheus.CounterVec
IPPktsLocalReceivedTotal *prometheus.CounterVec
FrameBytesSentTotal *prometheus.CounterVec
FrameBytesReceivedTotal *prometheus.CounterVec
FramesSentTotal *prometheus.CounterVec
FramesReceivedTotal *prometheus.CounterVec
// Error Metrics
FramesDiscardedTotal *prometheus.CounterVec
IPPktsDiscardedTotal *prometheus.CounterVec
SendExternalErrorsTotal *prometheus.CounterVec
SendLocalErrorsTotal *prometheus.CounterVec
ReceiveExternalErrorsTotal *prometheus.CounterVec
ReceiveLocalErrorsTotal *prometheus.CounterVec
// Path Monitoring Metrics
PathsMonitored *prometheus.GaugeVec
SessionPathsAvailable *prometheus.GaugeVec
// Discovery Metrics
Remotes *prometheus.GaugeVec
PrefixesAdvertised *prometheus.GaugeVec
PrefixesAccepted *prometheus.GaugeVec
PrefixesRejected *prometheus.GaugeVec
}
Metrics defines the metrics exported by the gateway.
func NewMetrics ¶
func NewMetrics() *Metrics
NewMetrics initializes the metrics for the gateway and registers them with the default registry.
type PacketConnFactory ¶
type PacketConnFactory struct {
Network *snet.SCIONNetwork
Addr *net.UDPAddr
}
func (PacketConnFactory) New ¶
func (pcf PacketConnFactory) New() (net.PacketConn, error)
type PathMonitor ¶
type PathMonitor struct {
*pathhealth.Monitor
// contains filtered or unexported fields
}
PathMonitor implements control.PathMonitor using a pathhealth path monitor.
func (*PathMonitor) Register ¶
func (pm *PathMonitor) Register(remote addr.IA, policies *policies.Policies, policyID int) control.PathMonitorRegistration
type RoutingPolicyPublisherAdapter ¶
type RoutingPolicyPublisherAdapter struct {
*control.ConfigPublisher
}
func (RoutingPolicyPublisherAdapter) PublishRoutingPolicy ¶
func (cp RoutingPolicyPublisherAdapter) PublishRoutingPolicy(rp *routing.Policy)
type RoutingTableFactory ¶
func (RoutingTableFactory) New ¶
func (rtf RoutingTableFactory) New( routingChains []*control.RoutingChain) (control.RoutingTable, error)
type WatcherFactory ¶
type WatcherFactory struct {
Dialer libgrpc.Dialer
PathMonitor control.PathMonitor
Aggregator control.PrefixConsumer
Policies *policies.Policies
}
func (*WatcherFactory) New ¶
func (wf *WatcherFactory) New(remote addr.IA, metrics control.GatewayWatcherMetrics) control.Runner
Directories
¶
| Path | Synopsis |
|---|---|
|
mock_config
Package mock_config is a generated GoMock package.
|
Package mock_config is a generated GoMock package. |
|
grpc/mock_grpc
Package mock_grpc is a generated GoMock package.
|
Package mock_grpc is a generated GoMock package. |
|
mock_control
Package mock_control is a generated GoMock package.
|
Package mock_control is a generated GoMock package. |
|
Package dataplane defines implementations required to run a gateway dataplane.
|
Package dataplane defines implementations required to run a gateway dataplane. |
|
Package pathhealth monitors paths to different ASes.
|
Package pathhealth monitors paths to different ASes. |
|
Package routing defines implementations around the routing decisions for the gateway.
|
Package routing defines implementations around the routing decisions for the gateway. |
|
mock_routing
Package mock_routing is a generated GoMock package.
|
Package mock_routing is a generated GoMock package. |
|
Package xnet contains low level Linux networking calls (generally related to netlink and tunneling)
|
Package xnet contains low level Linux networking calls (generally related to netlink and tunneling) |
Click to show internal directories.
Click to hide internal directories.