omec-project / pfcpsim

PFCP client simulator used for UPF testing
20 stars 18 forks source link

VPP-UPF Support #44

Closed infinitydon closed 2 years ago

infinitydon commented 2 years ago

Hi,

Please I will like to ask how the PFCP simulator can be made to work with VPP-UPF.

Attached is a pcap trace of a sample session establishment request and response nov-30-oai-smf-vpp-upf.zip

EmanueleGallone commented 2 years ago

Hi @infinitydon, After a full analysis of the pcap file that you provided, I can see that you successfully created and modified a session (UPF has returned cause accepted for both requests). I don't see an association setup request and the corresponding response, so I guess that you already did that, before capturing the packets, otherwise pfcpsim would've complained about a missing association when trying to establish/modify sessions.

I don't see any issue here, can you elaborate further and also upload the logs from pfcpsim?

infinitydon commented 2 years ago

@EmanueleGallone - The pcap I attached is a sample communication between a real SMF and VPP-UPF, the reason I sent is to know if pfcpsim can support creating sessions on the vpp-upf.

For now the upf keeps crashing once pfcpsim tries to create the sessions:

/ # pfcpctl --server localhost:12345 -c associate
INFO[0000] Association established
/ #
/ #
/ #
/ #
/ # pfcpctl --server localhost:12345 -c create --count 5 --baseID 2 --ue-pool 16.0.0.0/24 --gnb-addr 10.0.3.20
ERRO[0005] Error while associating: rpc error: code = Internal desc = Message: Timeout has expired.
        - Error 0: Message: Timeout has expired.

I also checked with another existing tool (https://github.com/TheWayYouMakeMeFeel/pfcp-kitchen-sink), below is a sample config that works with the vpp-upf:

- seid: 0
  pdrs:
  - pdrID: 0
    precedence: 0
    pdi:
      sourceInterface: Access
      networkInstance: access.oai.org
      localFTEID:
        teid: 1
        ip4: 10.0.4.9
      ueIPAddress:
        isDestination: false
        ip4: 10.10.10.10
    outerHeaderRemoval: OUTER_HEADER_GTPU_UDP_IPV4
    farID: 12
  - pdrID: 1
    precedence: 0
    pdi:
      sourceInterface: Core
      networkInstance: core.oai.org
      ueIPAddress:
        isDestination: true
        ip4: 10.10.10.10
    farID: 13
  fars:
  - farID: 12
    applyAction: Forward
    forwardingParameters:
      destinationInterface: Core
      networkInstance: core.oai.org
  - farID: 13
    applyAction: Forward
    forwardingParameters:
      destinationInterface: Access
      networkInstance: access.oai.org
      outerHeaderCreation:
        desc: OUTER_HEADER_CREATION_GTPU_UDP_IPV4
        teid: 2
        ip: 10.0.3.20
EmanueleGallone commented 2 years ago

ah, I assumed that the pcap contained an exchange of PFCP messages by pfcpsim and your UPF; apologies.

Right now we don't support VPP-UPF. For instance, we currently don't set the networkInstance when creating a PDI. It would require some time to figure out which IEs are required by the VPP-UPF and integrate those in pfcpsim (looking at the pcap would be a good starting point).

feel free to create a PR!

infinitydon commented 2 years ago

Ok, thanks..