A Go library for using the PFCP protocol in 5G networks as defined in the ETSI TS 29.244 specification.
package main
import (
"log"
"time"
"github.com/dot-5g/pfcp/client"
"github.com/dot-5g/pfcp/ie"
"github.com/dot-5g/pfcp/messages"
)
func main() {
pfcpClient := client.New("1.2.3.4:8805")
recoveryTimeStamp, err := ie.NewRecoveryTimeStamp(time.Now())
if err != nil {
log.Fatalf("Error creating Recovery TimeStamp: %v", err)
}
sequenceNumber := uint32(21)
heartbeatRequestMsg := messages.HeartbeatRequest{
RecoveryTimeStamp: recoveryTimeStamp,
}
pfcpClient.SendHeartbeatRequest(heartbeatRequestMsg, sequenceNumber)
}
package main
import (
"fmt"
"github.com/dot-5g/pfcp/messages"
"github.com/dot-5g/pfcp/server"
)
func main() {
pfcpServer := server.New("localhost:8805")
pfcpServer.HeartbeatRequest(HandleHeartbeatRequest)
go pfcpServer.Run()
}
func HandleHeartbeatRequest(sequenceNumber uint32, msg messages.HeartbeatRequest) {
fmt.Printf("Received Heartbeat Request - Recovery TimeStamp: %v", msg.RecoveryTimeStamp)
}
- Heartbeat
- Load Control (Optional)
- Overload Control (Optional)
- PFCP PFD Management (Optional)
- PFCP Association Setup
- PFCP Association Update
- PFCP Association Release
- PFCP Node Report
- PFCP Session Establishment
- PFCP Session Modification
- PFCP Session Deletion
- PFCP Session Report