Skip to content

OMEC UPF Crashes with error: unexpected EOF When Receiving PFCP Association Request from OAI SMF #895

Open
@tariromukute

Description

@tariromukute

Description:

I am trying to run the OMEC UPF with the OAI SMF on an EC2 instance. The setup involves running the UPF on Kubernetes (MicroK8s) as per the tutorial. The OAI SMF is running in Docker using Docker Compose. However, the UPF crashes with the error error: unexpected EOF when it receives a PFCP Association Request from the OAI SMF. Below are the details of the setup, logs, and steps to reproduce the issue.

Steps to Reproduce:

  1. Set up the OMEC UPF on Kubernetes (MicroK8s) as per the tutorial.
  2. Run the OAI SMF using Docker Compose with the provided docker-compose-oai-nonrf-omec-upf.yaml file, see attached zip folder.
  3. Update the IP address in the Docker Compose file to match the UPF's ClusterIP:
    extra_hosts:
      - "oai-upf:10.152.183.35"
  4. Start the OAI 5GC:
    docker compose -f docker-compose-oai-nonrf-omec-upf.yaml up -d
  5. Observe the UPF crashing with the error error: unexpected EOF when it receives a PFCP Association Request from the OAI SMF. (microk8s kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp.)

Expected Behavior:

The UPF should successfully establish a PFCP association with the OAI SMF and remain in a running state.

Actual Behavior:

The UPF crashes with the error error: unexpected EOF after receiving the PFCP Association Request. The Kubernetes events indicate that the UPF restarts due to InvalidDiskCapacity.

Logs and Error Messages:

PFCP Association Request (from OAI SMF):

Frame 108231: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface any, id 0
    Interface id: 0 (any)
        Interface name: any
    Encapsulation type: Linux cooked-mode capture v1 (25)
    Arrival Time: Mar 17, 2025 13:16:40.177487757 CET
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1742213800.177487757 seconds
    [Time delta from previous captured frame: 0.000035102 seconds]
    [Time delta from previous displayed frame: 0.000035102 seconds]
    [Time since reference or first frame: 756.897843794 seconds]
    Frame Number: 108231
    Frame Length: 78 bytes (624 bits)
    Capture Length: 78 bytes (624 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ethertype:ip:udp:pfcp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture v1
    Packet type: Sent by us (4)
    Link-layer address type: Ethernet (1)
    Link-layer address length: 6
    Source: ee:ee:ee:ee:ee:ee (ee:ee:ee:ee:ee:ee)
    Unused: 62b3
    Protocol: IPv4 (0x0800)
Internet Protocol Version 4, Src: 172.16.0.10, Dst: 10.1.46.43
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 62
    Identification: 0x97de (38878)
    Flags: 0x40, Don't fragment
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 63
    Protocol: UDP (17)
    Header Checksum: 0xbf8a [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 172.16.0.10
    Destination Address: 10.1.46.43
User Datagram Protocol, Src Port: 20602, Dst Port: 8805
    Source Port: 20602
    Destination Port: 8805
    Length: 42
    Checksum: 0xe481 [unverified]
    [Checksum Status: Unverified]
    [Stream index: 881]
    [Timestamps]
        [Time since first frame: 0.000000000 seconds]
        [Time since previous frame: 0.000000000 seconds]
    UDP payload (34 bytes)
Packet Forwarding Control Protocol
    Flags: 0x20
        001. .... = Version: 1
        ...0 .... = Spare: 0
        .... 0... = Spare: 0
        .... .0.. = Follow On (FO): False
        .... ..0. = Message Priority (MP): False
        .... ...0 = SEID (S): False
    Message Type: PFCP Association Setup Request (5)
    Length: 30
    Sequence Number: 4056313
    Spare: 0
    Node ID : FQDN: oai-smf
        IE Type: Node ID (60)
        IE Length: 9
        0000 .... = Spare: 0
        .... 0010 = Address Type: FQDN (2)
        FQDN: oai-smf
    Recovery Time Stamp : Mar 17, 2025 12:16:40.000000000 UTC
        IE Type: Recovery Time Stamp (96)
        IE Length: 4
        Recovery Time Stamp: Mar 17, 2025 12:16:40.000000000 UTC
    CP Function Features : 
        IE Type: CP Function Features (89)
        IE Length: 1
        0... .... = UIAUR: Not supported
        .0.. .... = ARDR: Not supported
        ..0. .... = MPAS: Not supported
        ...0 .... = BUNDL: Not supported
        .... 0... = SSET: Not supported
        .... .0.. = EPFAR: Not supported
        .... ..1. = OVRL: Supported
        .... ...1 = LOAD: Supported
    [Response In: 108232]

PFCP Association Response (from OMEC UPF):

Frame 108232: 101 bytes on wire (808 bits), 101 bytes captured (808 bits) on interface any, id 0
    Interface id: 0 (any)
        Interface name: any
    Encapsulation type: Linux cooked-mode capture v1 (25)
    Arrival Time: Mar 17, 2025 13:16:40.177824238 CET
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1742213800.177824238 seconds
    [Time delta from previous captured frame: 0.000336481 seconds]
    [Time delta from previous displayed frame: 0.000336481 seconds]
    [Time since reference or first frame: 756.898180275 seconds]
    Frame Number: 108232
    Frame Length: 101 bytes (808 bits)
    Capture Length: 101 bytes (808 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: sll:ethertype:ip:udp:pfcp]
    [Coloring Rule Name: UDP]
    [Coloring Rule String: udp]
Linux cooked capture v1
    Packet type: Unicast to us (0)
    Link-layer address type: Ethernet (1)
    Link-layer address length: 6
    Source: 86:11:d4:6b:70:27 (86:11:d4:6b:70:27)
    Unused: 97a6
    Protocol: IPv4 (0x0800)
Internet Protocol Version 4, Src: 10.1.46.43, Dst: 172.16.0.10
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes (5)
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
        0000 00.. = Differentiated Services Codepoint: Default (0)
        .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
    Total Length: 85
    Identification: 0x3a23 (14883)
    Flags: 0x40, Don't fragment
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    ...0 0000 0000 0000 = Fragment Offset: 0
    Time to Live: 64
    Protocol: UDP (17)
    Header Checksum: 0x1c2f [validation disabled]
    [Header checksum status: Unverified]
    Source Address: 10.1.46.43
    Destination Address: 172.16.0.10
User Datagram Protocol, Src Port: 8805, Dst Port: 20602
    Source Port: 8805
    Destination Port: 20602
    Length: 65
    Checksum: 0xe498 [unverified]
    [Checksum Status: Unverified]
    [Stream index: 881]
    [Timestamps]
        [Time since first frame: 0.000336481 seconds]
        [Time since previous frame: 0.000336481 seconds]
    UDP payload (57 bytes)
Packet Forwarding Control Protocol
    Flags: 0x20
        001. .... = Version: 1
        ...0 .... = Spare: 0
        .... 0... = Spare: 0
        .... .0.. = Follow On (FO): False
        .... ..0. = Message Priority (MP): False
        .... ...0 = SEID (S): False
    Message Type: PFCP Association Setup Response (6)
    Length: 53
    Sequence Number: 4056313
    Spare: 0
    Node ID : IPv4 address: 10.152.183.35
        IE Type: Node ID (60)
        IE Length: 5
        0000 .... = Spare: 0
        .... 0000 = Address Type: IPv4 address (0)
        IPv4: 10.152.183.35
    Cause : Request accepted(success)
        IE Type: Cause (19)
        IE Length: 1
        Cause: Request accepted(success) (1)
    Recovery Time Stamp : Mar 17, 2025 12:16:40.000000000 UTC
        IE Type: Recovery Time Stamp (96)
        IE Length: 4
        Recovery Time Stamp: Mar 17, 2025 12:16:40.000000000 UTC
    UP Function Features : 
        IE Type: UP Function Features (43)
        IE Length: 4
        0... .... = TREU: Not supported
        .0.. .... = HEEU: Not supported
        ..0. .... = PFDM: Not supported
        ...1 .... = FTUP: Supported
        .... 0... = TRST: Not supported
        .... .0.. = DLBD: Not supported
        .... ..0. = DDND: Not supported
        .... ...0 = BUCP: Not supported
        0... .... = EPFAR: Not supported
        .0.. .... = PFDE: Not supported
        ..0. .... = FRRT: Not supported
        ...0 .... = TRACE: Not supported
        .... 0... = QUOAC: Not supported
        .... .0.. = UDBC: Not supported
        .... ..0. = PDIU: Not supported
        .... ...0 = EMPU: Not supported
        0... .... = GCOM: Not supported
        .0.. .... = BUNDL: Not supported
        ..0. .... = MTE N4: Not supported
        ...0 .... = MNOP: Not supported
        .... 0... = SSET: Not supported
        .... .0.. = UEIP: Not supported
        .... ..0. = ADPDP: Not supported
        .... ...0 = DPDRA: Not supported
        0... .... = MPTCP: Not supported
        .0.. .... = TSCU: Not supported
        ..0. .... = IP6PL: Not supported
        ...0 .... = IPTV: Not supported
        .... 0... = NORP: Not supported
        .... .0.. = VTIME: Not supported
        .... ..0. = RTTL: Not supported
        .... ...0 = MPAS: Not supported
    User Plane IP Resource Information (removed in Rel 16.3) : internetAccess
        IE Type: User Plane IP Resource Information (removed in Rel 16.3) (116)
        IE Length: 15
        Flags: 0x61, ASSOSI (Associated Source Instance), ASSONI (Associated Network Instance), V4 (IPv4)
            01.. .... = Spare: 1
            .1.. .... = ASSOSI (Associated Source Instance): Present
            ..1. .... = ASSONI (Associated Network Instance): Present
            ...0 00.. = TEIDRI (TEID Range Indication): 0x0
            .... ..0. = V6 (IPv6): Not Present
            .... ...1 = V4 (IPv4): Present
        ...0 00.. = TEID Range Indication: 0
        IPv4 address: 172.16.1.10
        Network Instance: internet
        0000 .... = Spare: 0
        .... 0000 = Source Interface: Access (0)
    [Response To: 108231]
    [Response Time: 0.000336481 seconds]

Kubernetes Events:

bess-upf      5m3s        Normal    Pulled                            pod/upf-0                                      Container image "omecproject/upf-epc-pfcpiface:rel-2.0.1" already present on machine
default       9s          Normal    Starting                          node/ip-172-16-0-10                            Starting kubelet.
default       9s          Normal    NodeHasSufficientMemory           node/ip-172-16-0-10                            Node ip-172-16-0-10 status is now: NodeHasSufficientMemory
default       8s          Normal    Starting                          node/ip-172-16-0-10                            
default       9s          Normal    NodeAllocatableEnforced           node/ip-172-16-0-10                            Updated Node Allocatable limit across pods
default       9s          Warning   InvalidDiskCapacity               node/ip-172-16-0-10                            invalid capacity 0 on image filesystem
default       9s          Normal    NodeHasNoDiskPressure             node/ip-172-16-0-10                            Node ip-172-16-0-10 status is now: NodeHasNoDiskPressure
default       9s          Normal    NodeHasSufficientPID              node/ip-172-16-0-10                            Node ip-172-16-0-10 status is now: NodeHasSufficientPID
bess-upf      8s          Warning   UnexpectedAdmissionError          pod/upf-0                                      Allocate failed due to no healthy devices present; cannot allocate unhealthy devices intel.com/intel_sriov_vfio_access, which is unexpected
bess-upf      7s          Warning   FailedMount                       pod/upf-0                                      MountVolume.SetUp failed for volume "configs" : object "bess-upf"/"upf" not registered
kube-system   7s          Normal    Pulled                            pod/calico-node-h8hsk                          Container image "docker.io/calico/cni:v3.28.1" already present on machine
bess-upf      7s          Normal    Started                           pod/init-net-kqztj                             Started container init-sriov-plugin
bess-upf      7s          Normal    Created                           pod/kube-sriov-device-plugin-amd64-7bqw6       Created container: kube-sriovdp
kube-system   7s          Normal    Created                           pod/calico-node-h8hsk                          Created container: install-cni
bess-upf      7s          Normal    Started                           pod/kube-sriov-device-plugin-amd64-7bqw6       Started container init-sriov-plugin
bess-upf      7s          Normal    Created                           pod/kube-sriov-device-plugin-amd64-7bqw6       Created container: init-sriov-plugin
bess-upf      7s          Normal    Pulled                            pod/kube-sriov-device-plugin-amd64-7bqw6       Container image "docker.io/omecproject/omec-cni:1.1.7" already present on machine
kube-system   7s          Normal    Started                           pod/calico-node-h8hsk                          Started container install-cni
kube-system   7s          Normal    AddedInterface                    pod/calico-kube-controllers-5947598c79-xg9jn   Add eth0 [10.1.46.1/32]
kube-system   7s          Normal    Pulled                            pod/calico-kube-controllers-5947598c79-xg9jn   Container image "docker.io/calico/kube-controllers:v3.28.1" already present on machine
kube-system   7s          Normal    Created                           pod/calico-kube-controllers-5947598c79-xg9jn   Created container: calico-kube-controllers
kube-system   7s          Normal    Started                           pod/calico-kube-controllers-5947598c79-xg9jn   Started container calico-kube-controllers
kube-system   7s          Normal    Pulled                            pod/calico-node-h8hsk                          Container image "docker.io/calico/cni:v3.28.1" already present on machine
kube-system   7s          Normal    Started                           pod/kube-sriov-device-plugin-amd64-f5lpj       Started container kube-sriovdp
kube-system   7s          Normal    Started                           pod/calico-node-h8hsk                          Started container upgrade-ipam
bess-upf      7s          Normal    AddedInterface                    pod/init-net-kqztj                             Add eth0 [10.1.46.9/32]
bess-upf      7s          Normal    Pulled                            pod/kube-sriov-device-plugin-amd64-7bqw6       Container image "docker.io/nfvpe/sriov-device-plugin:v3.3.2" already present on machine
bess-upf      7s          Normal    Started                           pod/kube-sriov-device-plugin-amd64-7bqw6       Started container kube-sriovdp
kube-system   7s          Normal    Created                           pod/calico-node-h8hsk                          Created container: upgrade-ipam
kube-system   7s          Normal    Created                           pod/kube-sriov-device-plugin-amd64-f5lpj       Created container: kube-sriovdp
kube-system   7s          Normal    Pulled                            pod/kube-sriov-device-plugin-amd64-f5lpj       Container image "nfvpe/sriov-device-plugin:v3.3" already present on machine
kube-system   7s          Normal    AddedInterface                    pod/coredns-79b94494c7-j8zd9                   Add eth0 [10.1.46.21/32]
kube-system   7s          Normal    Pulled                            pod/coredns-79b94494c7-j8zd9                   Container image "coredns/coredns:1.10.1" already present on machine
kube-system   7s          Normal    Created                           pod/coredns-79b94494c7-j8zd9                   Created container: coredns
kube-system   7s          Normal    Started                           pod/coredns-79b94494c7-j8zd9                   Started container coredns
bess-upf      7s          Normal    Created                           pod/init-net-kqztj                             Created container: init-sriov-plugin
kube-system   7s          Normal    Pulled                            pod/kube-multus-ds-amd64-nn8gg                 Container image "docker.io/nfvpe/multus:stable" already present on machine
kube-system   7s          Normal    Created                           pod/kube-multus-ds-amd64-nn8gg                 Created container: kube-multus
kube-system   7s          Normal    Started                           pod/kube-multus-ds-amd64-nn8gg                 Started container kube-multus
bess-upf      7s          Normal    Pulled                            pod/init-net-kqztj                             Container image "docker.io/omecproject/omec-cni:1.1.4" already present on machine
kube-system   6s          Normal    Started                           pod/calico-node-h8hsk                          Started container calico-node
kube-system   6s          Normal    Created                           pod/calico-node-h8hsk                          Created container: calico-node
kube-system   6s          Normal    Pulled                            pod/calico-node-h8hsk                          Container image "docker.io/calico/node:v3.28.1" already present on machine

Additional Information:

  • The UPF remains in a running state if no requests are sent from the OAI SMF.
  • The issue occurs specifically when the UPF receives a PFCP Association Request.
  • Kubernetes events show InvalidDiskCapacity and other related errors, which might be contributing to the crash.

oai-docker-compose.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions