core

package
v0.6.3 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PfcpMessageRx = promauto.NewCounterVec(prometheus.CounterOpts{
		Name: "upf_pfcp_rx",
		Help: "The total number of received PFCP messages",
	}, []string{"message_name"})

	PfcpMessageTx = promauto.NewCounterVec(prometheus.CounterOpts{
		Name: "upf_pfcp_tx",
		Help: "The total number of transmitted PFCP messages",
	}, []string{"message_name"})

	PfcpMessageRxErrors = promauto.NewCounterVec(prometheus.CounterOpts{
		Name: "upf_pfcp_rx_errors",
		Help: "The total number of received PFCP messages with cause code",
	}, []string{"message_name", "cause_code"})

	UpfXdpAborted       prometheus.CounterFunc
	UpfXdpDrop          prometheus.CounterFunc
	UpfXdpPass          prometheus.CounterFunc
	UpfXdpTx            prometheus.CounterFunc
	UpfXdpRedirect      prometheus.CounterFunc
	UpfPfcpSessions     prometheus.GaugeFunc
	UpfPfcpAssociations prometheus.GaugeFunc

	UpfRx = promauto.NewCounterVec(prometheus.CounterOpts{
		Name: "upf_rx",
		Help: "The total number of received packets",
	}, []string{"packet_type"})

	UpfMessageRxLatency = promauto.NewSummaryVec(prometheus.SummaryOpts{
		Name:       "upf_pfcp_rx_latency",
		Subsystem:  "pfcp",
		Help:       "Duration of the PFCP message processing",
		Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
	}, []string{"message_type"})
)

Functions

func GetTransportLevelMarking added in v0.3.4

func GetTransportLevelMarking(far *ie.IE) (uint16, error)

func HandlePfcpHeartbeatRequest

func HandlePfcpHeartbeatRequest(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

func HandlePfcpHeartbeatResponse added in v0.3.3

func HandlePfcpHeartbeatResponse(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

func HandlePfcpSessionDeletionRequest

func HandlePfcpSessionDeletionRequest(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

func HandlePfcpSessionEstablishmentRequest

func HandlePfcpSessionEstablishmentRequest(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

func HandlePfcpSessionModificationRequest

func HandlePfcpSessionModificationRequest(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

func InitLogger added in v0.5.0

func InitLogger()

func ParseCidrIp added in v0.5.0

func ParseCidrIp(ipStr, maskStr string) (ebpf.IpWMask, error)

func ParsePort added in v0.5.0

func ParsePort(str string) (uint16, error)

func ParsePortRange added in v0.5.0

func ParsePortRange(str string) (ebpf.PortRange, error)

func ParseProtocol added in v0.5.0

func ParseProtocol(protocol string) (uint8, error)

func ParseSdfFilter added in v0.5.0

func ParseSdfFilter(flowDescription string) (ebpf.SdfFilter, error)

func RegisterMetrics

func RegisterMetrics(stats ebpf.UpfXdpActionStatistic, conn *PfcpConnection)

func SendHeartbeatRequest added in v0.3.3

func SendHeartbeatRequest(conn *PfcpConnection, sequenceID uint32, associationAddr string)

func SetConfig added in v0.5.0

func SetConfig(conf config.UpfConfig) error

func SetLoggerLevel added in v0.5.0

func SetLoggerLevel(loggingLevel string) error

func StartMetrics

func StartMetrics(addr string) error

Types

type GtpPathManager added in v0.6.0

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

func NewGtpPathManager added in v0.6.0

func NewGtpPathManager(localAddress string, interval time.Duration) *GtpPathManager

func (*GtpPathManager) AddGtpPath added in v0.6.0

func (gtpPathManager *GtpPathManager) AddGtpPath(gtpPeerAddress string)

func (*GtpPathManager) Run added in v0.6.0

func (gtpPathManager *GtpPathManager) Run()

func (*GtpPathManager) Stop added in v0.6.0

func (gtpPathManager *GtpPathManager) Stop()

type NodeAssociation

type NodeAssociation struct {
	ID               string
	Addr             string
	NextSessionID    uint64
	NextSequenceID   uint32
	Sessions         map[uint64]*Session
	HeartbeatChannel chan uint32
	FailedHeartbeats uint32
	HeartbeatsActive bool
	sync.Mutex
}

func NewNodeAssociation added in v0.3.3

func NewNodeAssociation(remoteNodeID string, addr string) *NodeAssociation

func (*NodeAssociation) HandleHeartbeat added in v0.6.1

func (association *NodeAssociation) HandleHeartbeat(sequence uint32)

func (*NodeAssociation) HandleHeartbeatTimeout added in v0.6.1

func (association *NodeAssociation) HandleHeartbeatTimeout() bool

func (*NodeAssociation) NewLocalSEID

func (association *NodeAssociation) NewLocalSEID() uint64

func (*NodeAssociation) NewSequenceID added in v0.3.5

func (association *NodeAssociation) NewSequenceID() uint32

func (*NodeAssociation) ResetFailedHeartbeats added in v0.6.1

func (association *NodeAssociation) ResetFailedHeartbeats()

func (*NodeAssociation) ScheduleHeartbeat added in v0.6.1

func (association *NodeAssociation) ScheduleHeartbeat(conn *PfcpConnection)

type PDRCreationContext added in v0.6.0

type PDRCreationContext struct {
	Session         *Session
	ResourceManager *service.ResourceManager
	TEIDCache       map[uint8]uint32
}

func NewPDRCreationContext added in v0.6.0

func NewPDRCreationContext(session *Session, resourceManager *service.ResourceManager) *PDRCreationContext

type PfcpConnection

type PfcpConnection struct {
	NodeAssociations map[string]*NodeAssociation

	RecoveryTimestamp time.Time
	ResourceManager   *service.ResourceManager
	// contains filtered or unexported fields
}

func CreatePfcpConnection

func CreatePfcpConnection(addr string, pfcpHandlerMap PfcpHandlerMap, nodeId string, n3Ip string, mapOperations ebpf.ForwardingPlaneController, resourceManager *service.ResourceManager) (*PfcpConnection, error)

func (*PfcpConnection) Close

func (connection *PfcpConnection) Close()

func (*PfcpConnection) DeleteAssociation added in v0.3.3

func (connection *PfcpConnection) DeleteAssociation(assocAddr string)

DeleteAssociation deletes an association and all sessions associated with it.

func (*PfcpConnection) DeleteSession added in v0.3.3

func (connection *PfcpConnection) DeleteSession(session *Session)

DeleteSession deletes a session and all PDRs, FARs and QERs associated with it.

func (*PfcpConnection) GetAssiciationCount added in v0.3.6

func (connection *PfcpConnection) GetAssiciationCount() int

func (*PfcpConnection) GetAssociation added in v0.3.3

func (connection *PfcpConnection) GetAssociation(assocAddr string) *NodeAssociation

func (*PfcpConnection) GetSessionCount added in v0.3.6

func (connection *PfcpConnection) GetSessionCount() int

func (*PfcpConnection) Handle

func (connection *PfcpConnection) Handle(b []byte, addr *net.UDPAddr)

func (*PfcpConnection) Receive

func (connection *PfcpConnection) Receive(b []byte) (n int, addr *net.UDPAddr, err error)

func (*PfcpConnection) RefreshAssociations added in v0.3.3

func (connection *PfcpConnection) RefreshAssociations()

func (*PfcpConnection) ReleaseResources added in v0.6.0

func (connection *PfcpConnection) ReleaseResources(seID uint64)

func (*PfcpConnection) Run

func (connection *PfcpConnection) Run()

func (*PfcpConnection) Send

func (connection *PfcpConnection) Send(b []byte, addr *net.UDPAddr) (int, error)

func (*PfcpConnection) SendMessage

func (connection *PfcpConnection) SendMessage(msg message.Message, addr *net.UDPAddr) error

type PfcpFunc

type PfcpFunc func(conn *PfcpConnection, msg message.Message, addr string) (message.Message, error)

type PfcpHandlerMap

type PfcpHandlerMap map[uint8]PfcpFunc

func (PfcpHandlerMap) Handle

func (handlerMap PfcpHandlerMap) Handle(conn *PfcpConnection, buf []byte, addr *net.UDPAddr) error

type SFarInfo

type SFarInfo struct {
	FarInfo  ebpf.FarInfo
	GlobalId uint32
}

type SPDRInfo

type SPDRInfo struct {
	PdrID     uint32
	PdrInfo   ebpf.PdrInfo
	Teid      uint32
	Ipv4      net.IP
	Ipv6      net.IP
	Allocated bool
}

type SQerInfo

type SQerInfo struct {
	QerInfo  ebpf.QerInfo
	GlobalId uint32
}

type Session

type Session struct {
	LocalSEID  uint64
	RemoteSEID uint64
	PDRs       map[uint32]SPDRInfo
	FARs       map[uint32]SFarInfo
	QERs       map[uint32]SQerInfo
}

func NewSession added in v0.3.3

func NewSession(localSEID uint64, remoteSEID uint64) *Session

func (*Session) GetFar

func (s *Session) GetFar(id uint32) SFarInfo

func (*Session) GetPDR added in v0.4.0

func (s *Session) GetPDR(id uint16) SPDRInfo

func (*Session) GetQer

func (s *Session) GetQer(id uint32) SQerInfo

func (*Session) NewFar

func (s *Session) NewFar(id uint32, internalId uint32, farInfo ebpf.FarInfo)

func (*Session) NewQer

func (s *Session) NewQer(id uint32, internalId uint32, qerInfo ebpf.QerInfo)

func (*Session) PutPDR added in v0.4.0

func (s *Session) PutPDR(id uint32, info SPDRInfo)

func (*Session) RemoveFar

func (s *Session) RemoveFar(id uint32) SFarInfo

func (*Session) RemovePDR added in v0.4.0

func (s *Session) RemovePDR(id uint32) SPDRInfo

func (*Session) RemoveQer

func (s *Session) RemoveQer(id uint32) SQerInfo

func (*Session) UpdateFar

func (s *Session) UpdateFar(id uint32, farInfo ebpf.FarInfo)

func (*Session) UpdateQer

func (s *Session) UpdateQer(id uint32, qerInfo ebpf.QerInfo)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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