Documentation ¶
Overview ¶
Package common provides a flow type and a few standard helpers.
Index ¶
Constants ¶
const ( // DefaultStopTimeout is the default stop timeout in seconds DefaultStopTimeout = 5 // DefaultAggregatorFlushInterval is the default flush interval in seconds DefaultAggregatorFlushInterval = 300 // 5min // DefaultAggregatorBufferSize is the default aggregator buffer size interval DefaultAggregatorBufferSize = 10000 // DefaultAggregatorPortRollupThreshold is the default aggregator port rollup threshold DefaultAggregatorPortRollupThreshold = 10 // DefaultAggregatorRollupTrackerRefreshInterval is the default aggregator rollup tracker refresh interval DefaultAggregatorRollupTrackerRefreshInterval = 300 // 5min // DefaultBindHost is the default bind host used for flow listeners DefaultBindHost = "0.0.0.0" // DefaultPrometheusListenerAddress is the default goflow prometheus listener address DefaultPrometheusListenerAddress = "localhost:9090" )
Variables ¶
var FlowTypeDetails = map[FlowType]FlowTypeDetail{ TypeIPFIX: { // contains filtered or unexported fields }, TypeSFlow5: { // contains filtered or unexported fields }, TypeNetFlow5: { // contains filtered or unexported fields }, TypeNetFlow9: { // contains filtered or unexported fields }, }
FlowTypeDetails contain list of valid FlowTypeDetail
Functions ¶
func IsEqualFlowContext ¶
IsEqualFlowContext check if the flow and another flow have equal values for all fields used in `AggregationHash`. This method is used for hash collision detection.
Types ¶
type AdditionalFields ¶
AdditionalFields holds additional fields collected
type EndianType ¶
type EndianType string
EndianType is used to configure additional fields endianness
var ( // BigEndian is used to configure a big endian additional field BigEndian EndianType = "big" // LittleEndian is used to configure a little endian additional field LittleEndian EndianType = "little" )
type FieldType ¶
type FieldType string
FieldType is used to configure additional fields data type
var ( // String type is used to configure a textual additional field String FieldType = "string" // Integer type is used to configure an integer additional field Integer FieldType = "integer" // Hex type is used to configure a hex additional field Hex FieldType = "hex" // DefaultFieldTypes contains types for default payload fields DefaultFieldTypes = map[string]FieldType{ "direction": Integer, "start": Integer, "end": Integer, "bytes": Integer, "packets": Integer, "ether_type": Integer, "ip_protocol": Integer, "exporter.ip": Hex, "source.ip": Hex, "source.port": Integer, "source.mac": Integer, "source.mask": Integer, "destination.ip": Hex, "destination.port": Integer, "destination.mac": Integer, "destination.mask": Integer, "ingress.interface": Integer, "egress.interface": Integer, "tcp_flags": Integer, "next_hop.ip": Hex, "tos": Integer, } )
type Flow ¶
type Flow struct { Namespace string FlowType FlowType SequenceNum uint32 SamplingRate uint64 Direction uint32 // Exporter information ExporterAddr []byte // Flow time StartTimestamp uint64 // in seconds EndTimestamp uint64 // in seconds // Size of the sampled packet Bytes uint64 Packets uint64 // Source/destination addresses SrcAddr []byte // FLOW KEY DstAddr []byte // FLOW KEY // Layer 3 protocol (IPv4/IPv6/ARP/MPLS...) EtherType uint32 // Layer 4 protocol IPProtocol uint32 // FLOW KEY // Flags TCPFlags uint32 `json:"tcp_flags"` // Ports for UDP and TCP // Port number can be zero/positive or `-1` (ephemeral port) SrcPort int32 // FLOW KEY DstPort int32 // FLOW KEY // SNMP Interface Index InputInterface uint32 // FLOW KEY OutputInterface uint32 // Mac Address SrcMac uint64 DstMac uint64 // Mask SrcMask uint32 DstMask uint32 // Reverse DNS enrichment added during Flow aggregation processing SrcReverseDNSHostname string DstReverseDNSHostname string // Ethernet information Tos uint32 // FLOW KEY NextHop []byte // FLOW KEY // Configured fields AdditionalFields AdditionalFields }
Flow contains flow info used for aggregation json annotations are used in AsJSONString() for debugging purpose
func (*Flow) AggregationHash ¶
AggregationHash return a hash used as aggregation key
type FlowMessageWithAdditionalFields ¶
type FlowMessageWithAdditionalFields struct { *flowmessage.FlowMessage AdditionalFields AdditionalFields }
FlowMessageWithAdditionalFields contains a goflow flowmessage and additional fields
type FlowType ¶
type FlowType string
FlowType represent the flow protocol (netflow5,netflow9,ipfix, sflow, etc)
type FlowTypeDetail ¶
type FlowTypeDetail struct {
// contains filtered or unexported fields
}
FlowTypeDetail represent the flow protocol (netflow5,netflow9,ipfix, sflow, etc)
func GetFlowTypeByName ¶
func GetFlowTypeByName(name FlowType) (FlowTypeDetail, error)
GetFlowTypeByName search FlowTypeDetail by name
func (FlowTypeDetail) DefaultPort ¶
func (f FlowTypeDetail) DefaultPort() uint16
DefaultPort returns the default port
func (FlowTypeDetail) Name ¶
func (f FlowTypeDetail) Name() FlowType
Name returns the flow type name