probes

package
v0.25.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2019 License: Apache-2.0 Imports: 31 Imported by: 17

Documentation

Index

Constants

View Source
const (
	// AFPacket probe type
	AFPacket = "afpacket"
	// PCAP probe type
	PCAP = "pcap"
)

Variables

View Source
var ErrProbeNotCompiled = fmt.Errorf("probe is not compiled within skydive")

ErrProbeNotCompiled is thrown when a flow probe was not compiled within the binary

Functions

func CapturesMetadataDecoder added in v0.24.0

func CapturesMetadataDecoder(raw json.RawMessage) (common.Getter, error)

CapturesMetadataDecoder implements a json message raw decoder

func GoPacketFirstLayerType added in v0.21.0

func GoPacketFirstLayerType(n *graph.Node) (gopacket.LayerType, layers.LinkType)

GoPacketFirstLayerType returns the first layer of an interface

func NewFlowProbeBundle added in v0.12.0

func NewFlowProbeBundle(tb *probe.Bundle, g *graph.Graph, fta *flow.TableAllocator) *probe.Bundle

NewFlowProbeBundle returns a new bundle of flow probes

func NormalizeBPFFilter added in v0.24.0

func NormalizeBPFFilter(capture *types.Capture) string

NormalizeBPFFilter returns a normalized BPF filter in order to exclude traffic generated by skydive itself

Types

type AFPacketHandle added in v0.6.0

type AFPacketHandle struct {
	// contains filtered or unexported fields
}

AFPacketHandle describes a AF network kernel packets

func NewAFPacketHandle added in v0.6.0

func NewAFPacketHandle(ifName string, snaplen int32) (*AFPacketHandle, error)

NewAFPacketHandle creates a new network AF packet probe

func (*AFPacketHandle) Close added in v0.6.0

func (h *AFPacketHandle) Close()

Close the AF packet handle

func (*AFPacketHandle) ReadPacketData added in v0.6.0

func (h *AFPacketHandle) ReadPacketData() ([]byte, gopacket.CaptureInfo, error)

ReadPacketData reads one packet

func (*AFPacketHandle) TPacket added in v0.21.0

func (h *AFPacketHandle) TPacket() *afpacket.TPacket

TPacket returns the afpacket TPacket instance

type AfpacketPacketProbe added in v0.21.0

type AfpacketPacketProbe struct {
	// contains filtered or unexported fields
}

AfpacketPacketProbe describes an afpacket based packet probe

func NewAfpacketPacketProbe added in v0.21.0

func NewAfpacketPacketProbe(ifName string, headerSize int, layerType gopacket.LayerType, linkType layers.LinkType) (*AfpacketPacketProbe, error)

NewAfpacketPacketProbe returns a new afpacket capture probe

func (*AfpacketPacketProbe) Close added in v0.21.0

func (a *AfpacketPacketProbe) Close()

Close the probe

func (*AfpacketPacketProbe) PacketSource added in v0.21.0

func (a *AfpacketPacketProbe) PacketSource() *gopacket.PacketSource

PacketSource returns the Gopacket packet source for the probe

func (*AfpacketPacketProbe) SetBPFFilter added in v0.21.0

func (a *AfpacketPacketProbe) SetBPFFilter(filter string) error

SetBPFFilter applies a BPF filter to the probe

func (*AfpacketPacketProbe) Stats added in v0.21.0

func (a *AfpacketPacketProbe) Stats() (*CaptureStats, error)

Stats returns statistics about captured packets

type CaptureMetadata added in v0.24.0

type CaptureMetadata struct {
	CaptureStats
	ID          string `json:",omitempty"`
	State       string `json:",omitempty"`
	Name        string `json:",omitempty"`
	Description string `json:",omitempty"`
	BPFFilter   string `json:",omitempty"`
	Type        string `json:",omitempty"`
	PCAPSocket  string `json:",omitempty"`
	MirrorOf    string `json:",omitempty"`
	SFlowSocket string `json:",omitempty"`
	Error       string `json:",omitempty"`
}

CaptureMetadata holds attributes and statistics about a capture easyjson:json gendecoder

type CaptureStats added in v0.24.0

type CaptureStats struct {
	PacketsReceived  int64
	PacketsDropped   int64
	PacketsIfDropped int64
}

CaptureStats describes the statistics of a running capture easyjson:json gendecoder

type Captures added in v0.24.0

type Captures []*CaptureMetadata

Captures holds the captures metadata easyjson:json gendecoder

type Context added in v0.25.0

type Context struct {
	Logger logging.Logger
	Config config.Config
	Graph  *graph.Graph
	FTA    *flow.TableAllocator
	TB     *probe.Bundle
}

Context defines a context to be used by constructor of probes

type DPDKProbesHandler added in v0.14.0

type DPDKProbesHandler struct {
}

DPDKProbesHandler describes a flow probe handle in the graph

func (*DPDKProbesHandler) CaptureTypes added in v0.25.0

func (p *DPDKProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*DPDKProbesHandler) Init added in v0.25.0

func (p *DPDKProbesHandler) Init(ctx Context, bundle *probe.Bundle) (FlowProbeHandler, error)

Init initializes a new dpdk probe

func (*DPDKProbesHandler) RegisterProbe added in v0.14.0

func (p *DPDKProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a gopacket probe

func (*DPDKProbesHandler) Start added in v0.14.0

func (p *DPDKProbesHandler) Start()

Start probe

func (*DPDKProbesHandler) Stop added in v0.14.0

func (p *DPDKProbesHandler) Stop()

Stop probe

func (*DPDKProbesHandler) UnregisterProbe added in v0.14.0

func (p *DPDKProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, fp Probe) error

UnregisterProbe unregisters gopacket probe

type EBPFProbesHandler added in v0.15.0

type EBPFProbesHandler struct {
}

EBPFProbesHandler describes a flow probe handle in the graph

func (*EBPFProbesHandler) CaptureTypes added in v0.25.0

func (p *EBPFProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*EBPFProbesHandler) Init added in v0.25.0

func (p *EBPFProbesHandler) Init(ctx Context, bundle *probe.Bundle) (FlowProbeHandler, error)

Init initializes a new eBPF probe

func (*EBPFProbesHandler) RegisterProbe added in v0.15.0

func (p *EBPFProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a probe

func (*EBPFProbesHandler) Start added in v0.15.0

func (p *EBPFProbesHandler) Start()

Start probe

func (*EBPFProbesHandler) Stop added in v0.15.0

func (p *EBPFProbesHandler) Stop()

Stop probe

func (*EBPFProbesHandler) UnregisterProbe added in v0.15.0

func (p *EBPFProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, fp Probe) error

UnregisterProbe unregisters a probe

type FlowProbeHandler added in v0.24.0

type FlowProbeHandler interface {
	probe.Handler // inheritance of the probe.Handler interface Start/Stop functions
	RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)
	UnregisterProbe(n *graph.Node, e ProbeEventHandler, p Probe) error
	CaptureTypes() []string
	Init(ctx Context, bundle *probe.Bundle) (FlowProbeHandler, error)
}

FlowProbeHandler defines flow probe mechanism

type GoPacketProbe added in v0.6.0

type GoPacketProbe struct {
	Ctx Context
	// contains filtered or unexported fields
}

GoPacketProbe describes a new probe that store packets from gopacket pcap library in a flowtable

func NewGoPacketProbe added in v0.21.0

func NewGoPacketProbe(ctx Context, n *graph.Node, captureType, bpfFilter string, headerSize uint32) (*GoPacketProbe, error)

NewGoPacketProbe returns a new Gopacket flow probe. It can use either `pcap` or `afpacket`

func (*GoPacketProbe) Run added in v0.21.0

func (p *GoPacketProbe) Run(packetCallback func(gopacket.Packet), e ProbeEventHandler) error

Run starts capturing packet, calling the passed callback for every packet and notifying the flow probe handler when the capture has started

func (*GoPacketProbe) Stop added in v0.21.0

func (p *GoPacketProbe) Stop()

Stop capturing packets

type GoPacketProbesHandler added in v0.6.0

type GoPacketProbesHandler struct {
	Ctx Context
	// contains filtered or unexported fields
}

GoPacketProbesHandler describes a flow probe handle in the graph

func (*GoPacketProbesHandler) CaptureTypes added in v0.25.0

func (p *GoPacketProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*GoPacketProbesHandler) Init added in v0.25.0

Init initializes a new GoPacket probe

func (*GoPacketProbesHandler) RegisterProbe added in v0.6.0

func (p *GoPacketProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a gopacket probe

func (*GoPacketProbesHandler) Start added in v0.6.0

func (p *GoPacketProbesHandler) Start()

Start probe

func (*GoPacketProbesHandler) Stop added in v0.6.0

func (p *GoPacketProbesHandler) Stop()

Stop probe

func (*GoPacketProbesHandler) UnregisterProbe added in v0.6.0

func (p *GoPacketProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, probe Probe) error

UnregisterProbe unregisters gopacket probe

type OvsMirrorProbesHandler added in v0.16.0

type OvsMirrorProbesHandler struct {
	ovsdb.DefaultOvsMonitorHandler
	Ctx Context
	// contains filtered or unexported fields
}

OvsMirrorProbesHandler describes a flow probe in running in the graph

func (*OvsMirrorProbesHandler) CaptureTypes added in v0.25.0

func (o *OvsMirrorProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*OvsMirrorProbesHandler) Init added in v0.25.0

Init initializes a new OVS Mirror probe

func (*OvsMirrorProbesHandler) OnConnected added in v0.21.0

func (o *OvsMirrorProbesHandler) OnConnected(monitor *ovsdb.OvsMonitor)

OnConnected ovsdb event

func (*OvsMirrorProbesHandler) RegisterProbe added in v0.16.0

func (o *OvsMirrorProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a probe on a graph node

func (*OvsMirrorProbesHandler) RegisterProbeOnPort added in v0.16.0

func (o *OvsMirrorProbesHandler) RegisterProbeOnPort(n *graph.Node, portUUID string, capture *types.Capture) (Probe, error)

RegisterProbeOnPort registers a new probe on the OVS bridge

func (*OvsMirrorProbesHandler) Start added in v0.16.0

func (o *OvsMirrorProbesHandler) Start()

Start the probe

func (*OvsMirrorProbesHandler) Stop added in v0.16.0

func (o *OvsMirrorProbesHandler) Stop()

Stop the probe

func (*OvsMirrorProbesHandler) UnregisterProbe added in v0.16.0

func (o *OvsMirrorProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, fp Probe) error

UnregisterProbe at the graph node

type OvsNetFlowProbe added in v0.24.0

type OvsNetFlowProbe struct {
	ID       string
	Target   string
	EngineID int
	// contains filtered or unexported fields
}

OvsNetFlowProbe describes a NetFlow probe from OVS switch

type OvsNetFlowProbesHandler added in v0.24.0

type OvsNetFlowProbesHandler struct {
	Ctx Context

	Node *graph.Node
	// contains filtered or unexported fields
}

OvsNetFlowProbesHandler describes a flow probe in running in the graph

func (*OvsNetFlowProbesHandler) CaptureTypes added in v0.25.0

func (o *OvsNetFlowProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*OvsNetFlowProbesHandler) Init added in v0.25.0

Init initializes a new ovsnetflow probe

func (*OvsNetFlowProbesHandler) RegisterProbe added in v0.24.0

func (o *OvsNetFlowProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a probe on a graph node

func (*OvsNetFlowProbesHandler) Start added in v0.24.0

func (o *OvsNetFlowProbesHandler) Start()

Start the probe

func (*OvsNetFlowProbesHandler) Stop added in v0.24.0

func (o *OvsNetFlowProbesHandler) Stop()

Stop the probe

func (*OvsNetFlowProbesHandler) UnregisterNetFlowProbeFromBridge added in v0.24.0

func (o *OvsNetFlowProbesHandler) UnregisterNetFlowProbeFromBridge(bridgeUUID string) error

UnregisterNetFlowProbeFromBridge unregisters a flow probe from the bridge selected by UUID

func (*OvsNetFlowProbesHandler) UnregisterProbe added in v0.24.0

func (o *OvsNetFlowProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, p Probe) error

UnregisterProbe at the graph node

type OvsSFlowProbe added in v0.2.0

type OvsSFlowProbe struct {
	ID         string
	Interface  string
	Target     string
	HeaderSize uint32
	Sampling   uint32
	Polling    uint32
	// contains filtered or unexported fields
}

OvsSFlowProbe describes a SFlow probe from OVS switch

type OvsSFlowProbesHandler added in v0.2.0

type OvsSFlowProbesHandler struct {
	Ctx Context
	// contains filtered or unexported fields
}

OvsSFlowProbesHandler describes a flow probe in running in the graph

func (*OvsSFlowProbesHandler) CaptureTypes added in v0.25.0

func (o *OvsSFlowProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*OvsSFlowProbesHandler) Init added in v0.25.0

Init initializes a new OVS sFlow probe

func (*OvsSFlowProbesHandler) RegisterProbe added in v0.3.0

func (o *OvsSFlowProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a probe on a graph node

func (*OvsSFlowProbesHandler) Start added in v0.2.0

func (o *OvsSFlowProbesHandler) Start()

Start the probe

func (*OvsSFlowProbesHandler) Stop added in v0.2.0

func (o *OvsSFlowProbesHandler) Stop()

Stop the probe

func (*OvsSFlowProbesHandler) UnregisterProbe added in v0.3.0

func (o *OvsSFlowProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, fp Probe) error

UnregisterProbe at the graph node

func (*OvsSFlowProbesHandler) UnregisterSFlowProbeFromBridge added in v0.3.0

func (o *OvsSFlowProbesHandler) UnregisterSFlowProbeFromBridge(probe *OvsSFlowProbe) error

UnregisterSFlowProbeFromBridge unregisters a flow probe from the bridge selected by UUID

type PacketProbe added in v0.21.0

type PacketProbe interface {
	Stats() (*CaptureStats, error)
	SetBPFFilter(bpf string) error
	PacketSource() *gopacket.PacketSource
	Close()
}

PacketProbe describes a probe responsible for capturing packets

type PcapPacketProbe added in v0.21.0

type PcapPacketProbe struct {
	// contains filtered or unexported fields
}

PcapPacketProbe describes a libpcap based packet probe

func NewPcapPacketProbe added in v0.21.0

func NewPcapPacketProbe(ifName string, headerSize int) (*PcapPacketProbe, error)

NewPcapPacketProbe returns a new libpcap capture probe

func (*PcapPacketProbe) Close added in v0.21.0

func (p *PcapPacketProbe) Close()

Close the probe

func (*PcapPacketProbe) PacketSource added in v0.21.0

func (p *PcapPacketProbe) PacketSource() *gopacket.PacketSource

PacketSource returns the Gopacket packet source for the probe

func (*PcapPacketProbe) SetBPFFilter added in v0.21.0

func (p *PcapPacketProbe) SetBPFFilter(bpf string) error

SetBPFFilter applies a BPF filter to the probe

func (*PcapPacketProbe) Stats added in v0.21.0

func (p *PcapPacketProbe) Stats() (*CaptureStats, error)

Stats returns statistics about captured packets

type PcapSocketProbe added in v0.10.0

type PcapSocketProbe struct {
	Ctx Context
	// contains filtered or unexported fields
}

PcapSocketProbe describes a TCP packet listener that inject packets in a flowtable

type PcapSocketProbeHandler added in v0.10.0

type PcapSocketProbeHandler struct {
	Ctx Context
	// contains filtered or unexported fields
}

PcapSocketProbeHandler describes a Pcap socket probe in the graph

func (*PcapSocketProbeHandler) CaptureTypes added in v0.25.0

func (p *PcapSocketProbeHandler) CaptureTypes() []string

CaptureTypes supported

func (*PcapSocketProbeHandler) Init added in v0.25.0

Init initializes a new pcap socket probe

func (*PcapSocketProbeHandler) RegisterProbe added in v0.10.0

func (p *PcapSocketProbeHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a new probe in the graph

func (*PcapSocketProbeHandler) Start added in v0.10.0

func (p *PcapSocketProbeHandler) Start()

Start the probe

func (*PcapSocketProbeHandler) Stop added in v0.10.0

func (p *PcapSocketProbeHandler) Stop()

Stop the probe

func (*PcapSocketProbeHandler) UnregisterProbe added in v0.10.0

func (p *PcapSocketProbeHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, fp Probe) error

UnregisterProbe a probe

type Probe

type Probe = ondemand.Task

Probe defines an active flow probe

type ProbeEventHandler added in v0.24.0

type ProbeEventHandler interface {
	OnStarted(*CaptureMetadata)
	OnStopped()
	OnError(err error)
}

ProbeEventHandler used by probes to notify state

type SFlowProbesHandler added in v0.12.0

type SFlowProbesHandler struct {
	Ctx Context
	// contains filtered or unexported fields
}

SFlowProbesHandler describes a sFlow probe in the graph

func (*SFlowProbesHandler) CaptureTypes added in v0.25.0

func (d *SFlowProbesHandler) CaptureTypes() []string

CaptureTypes supported

func (*SFlowProbesHandler) Init added in v0.25.0

func (d *SFlowProbesHandler) Init(ctx Context, bundle *probe.Bundle) (FlowProbeHandler, error)

Init initializes a new sFlow probe

func (*SFlowProbesHandler) RegisterProbe added in v0.12.0

func (d *SFlowProbesHandler) RegisterProbe(n *graph.Node, capture *types.Capture, e ProbeEventHandler) (Probe, error)

RegisterProbe registers a probe in the graph

func (*SFlowProbesHandler) Start added in v0.12.0

func (d *SFlowProbesHandler) Start()

Start a probe

func (*SFlowProbesHandler) Stop added in v0.12.0

func (d *SFlowProbesHandler) Stop()

Stop a probe

func (*SFlowProbesHandler) UnregisterProbe added in v0.12.0

func (d *SFlowProbesHandler) UnregisterProbe(n *graph.Node, e ProbeEventHandler, p Probe) error

UnregisterProbe unregisters a probe from the graph

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL