Documentation
¶
Index ¶
- Variables
- func DisplayConfig() func(c *gin.Context)
- func DisplayXdpStatistics(forwardPlaneStats ebpf.UpfXdpActionStatistic) func(c *gin.Context)
- func GetQerContent(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
- func HandlePfcpAssociationSetupRequest(conn *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
- func HandlePfcpHeartbeatRequest(_ *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
- func HandlePfcpSessionDeletionRequest(conn *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
- func HandlePfcpSessionEstablishmentRequest(conn *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
- func HandlePfcpSessionModificationRequest(conn *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
- func ListPfcpAssociations(pfcpSrv *PfcpConnection) func(c *gin.Context)
- func ListPfcpAssociationsFull(pfcpSrv *PfcpConnection) func(c *gin.Context)
- func ListPfcpSessionsFiltered(pfcpSrv *PfcpConnection) func(c *gin.Context)
- func ListQerMapContent(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
- func ListUpfPipeline(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
- func RegisterMetrics(stats ebpf.UpfXdpActionStatistic)
- func StartMetrics(addr string) error
- type ApiServer
- type NodeAssociation
- type NodeAssociationMap
- type NodeAssociationMapNoSession
- type NodeAssociationNoSession
- type PfcpConnection
- func (connection *PfcpConnection) Close()
- func (connection *PfcpConnection) Handle(b []byte, addr *net.UDPAddr)
- func (connection *PfcpConnection) Receive(b []byte) (n int, addr *net.UDPAddr, err error)
- func (connection *PfcpConnection) Run()
- func (connection *PfcpConnection) Send(b []byte, addr *net.UDPAddr) (int, error)
- func (connection *PfcpConnection) SendMessage(msg message.Message, addr *net.UDPAddr) error
- type PfcpFunc
- type PfcpHandlerMap
- type SFarInfo
- type SPDRInfo
- type SQerInfo
- type Session
- func (s *Session) GetDownlinkPDR(id uint16) SPDRInfo
- func (s *Session) GetFar(id uint32) SFarInfo
- func (s *Session) GetQer(id uint32) SQerInfo
- func (s *Session) GetUplinkPDR(id uint16) SPDRInfo
- func (s *Session) NewFar(id uint32, internalId uint32, farInfo ebpf.FarInfo)
- func (s *Session) NewQer(id uint32, internalId uint32, qerInfo ebpf.QerInfo)
- func (s *Session) PutDownlinkPDR(id uint32, info SPDRInfo)
- func (s *Session) PutUplinkPDR(id uint32, info SPDRInfo)
- func (s *Session) RemoveDownlinkPDR(id uint32) SPDRInfo
- func (s *Session) RemoveFar(id uint32) SFarInfo
- func (s *Session) RemoveQer(id uint32) SQerInfo
- func (s *Session) RemoveUplinkPDR(id uint32) SPDRInfo
- func (s *Session) UpdateFar(id uint32, farInfo ebpf.FarInfo)
- func (s *Session) UpdateQer(id uint32, qerInfo ebpf.QerInfo)
- type SessionMap
- type XdpStats
Constants ¶
This section is empty.
Variables ¶
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 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 DisplayConfig ¶
DisplayConfig godoc @Summary Display configuration @Description Display configuration @Tags Configuration @Produce json @Success 200 {object} config.UpfConfig @Router /config [get]
func DisplayXdpStatistics ¶
func DisplayXdpStatistics(forwardPlaneStats ebpf.UpfXdpActionStatistic) func(c *gin.Context)
DisplayXdpStatistics godoc @Summary Display XDP statistics @Description Display XDP statistics @Tags XDP @Produce json @Success 200 {object} XdpStats @Router /xdp_stats [get]
func GetQerContent ¶
func GetQerContent(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
GetQerContent godoc @Summary List QER map content @Description List QER map content @Tags QER @Produce json @Param id path int true "Qer ID" @Success 200 {object} []ebpf.QerMapElement @Router /qer_map/{id} [get]
func HandlePfcpAssociationSetupRequest ¶
func HandlePfcpAssociationSetupRequest(conn *PfcpConnection, msg message.Message, addr *net.UDPAddr) (message.Message, error)
https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/16.04.00_60/ts_129244v160400p.pdf page 95
func ListPfcpAssociations ¶
func ListPfcpAssociations(pfcpSrv *PfcpConnection) func(c *gin.Context)
ListPfcpAssociations godoc @Summary List PFCP associations @Description List PFCP associations @Tags PFCP @Produce json @Success 200 {object} NodeAssociationMapNoSession @Router /pfcp_associations [get]
func ListPfcpAssociationsFull ¶
func ListPfcpAssociationsFull(pfcpSrv *PfcpConnection) func(c *gin.Context)
ListPfcpAssociationsFull godoc @Summary List PFCP associations @Description List PFCP associations @Tags PFCP @Produce json @Success 200 {object} core.NodeAssociationMap @Router /pfcp_associations/full [get]
func ListPfcpSessionsFiltered ¶
func ListPfcpSessionsFiltered(pfcpSrv *PfcpConnection) func(c *gin.Context)
ListPfcpSessionsFiltered godoc @Summary If no parameters are given, list all PFCP sessions. If ip or teid is given, single session will be returned. If both ip and teid are given, it is possible to return two sessions. @Tags PFCP @Produce json @Param ip query string false "ip" @Param teid query int false "teid" @Success 200 {object} []core.Session @Router /pfcp_sessions [get]
func ListQerMapContent ¶
func ListQerMapContent(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
ListQerMapContent godoc @Summary List QER map content @Description List QER map content @Tags QER @Produce json @Success 200 {object} []ebpf.QerMapElement @Router /qer_map [get]
func ListUpfPipeline ¶
func ListUpfPipeline(bpfObjects *ebpf.BpfObjects) func(c *gin.Context)
ListUpfPipeline godoc @Summary List UPF pipeline @Description List UPF pipeline @Tags UPF @Produce json @Success 200 {object} []ebpf.BpfMapProgArrayMember @Router /upf_pipeline [get]
func RegisterMetrics ¶
func RegisterMetrics(stats ebpf.UpfXdpActionStatistic)
func StartMetrics ¶
Types ¶
type ApiServer ¶
type ApiServer struct {
// contains filtered or unexported fields
}
func CreateApiServer ¶
func CreateApiServer(bpfObjects *ebpf.BpfObjects, pfcpSrv *PfcpConnection, forwardPlaneStats ebpf.UpfXdpActionStatistic) *ApiServer
type NodeAssociation ¶
type NodeAssociation struct {
ID string
Addr string
NextSessionID uint64
Sessions SessionMap
}
func (*NodeAssociation) NewLocalSEID ¶
func (association *NodeAssociation) NewLocalSEID() uint64
type NodeAssociationMap ¶
type NodeAssociationMap map[string]NodeAssociation
type NodeAssociationMapNoSession ¶
type NodeAssociationMapNoSession map[string]NodeAssociationNoSession
type PfcpConnection ¶
type PfcpConnection struct {
NodeAssociations NodeAssociationMap
// contains filtered or unexported fields
}
func CreatePfcpConnection ¶
func CreatePfcpConnection(addr string, pfcpHandlerMap PfcpHandlerMap, nodeId string, n3Ip string, mapOperations ebpf.ForwardingPlaneController) (*PfcpConnection, error)
func (*PfcpConnection) Close ¶
func (connection *PfcpConnection) Close()
func (*PfcpConnection) Handle ¶
func (connection *PfcpConnection) Handle(b []byte, addr *net.UDPAddr)
func (*PfcpConnection) Run ¶
func (connection *PfcpConnection) Run()
func (*PfcpConnection) SendMessage ¶
type PfcpHandlerMap ¶
func (PfcpHandlerMap) Handle ¶
func (handlerMap PfcpHandlerMap) Handle(conn *PfcpConnection, buf []byte, addr *net.UDPAddr) error
type Session ¶
type Session struct {
LocalSEID uint64
RemoteSEID uint64
UplinkPDRs map[uint32]SPDRInfo
DownlinkPDRs map[uint32]SPDRInfo
FARs map[uint32]SFarInfo
QERs map[uint32]SQerInfo
}
func FilterSessionsByIP ¶
func FilterSessionsByIP(nodeMap *NodeAssociationMap, filterByIP net.IP) *Session
func FilterSessionsByTeid ¶
func FilterSessionsByTeid(nodeMap *NodeAssociationMap, filterByTeid uint32) *Session
func GetAllSessions ¶
func GetAllSessions(nodeMap *NodeAssociationMap) (sessions []Session)