upg-vpp: UE can't ping anything and crashes VPP

Hi,

I am currently trying to use your UPG plugin in a LTE architecture with erGW. The UE is connecting to the network and an IP address is attributed to it but it can’t reach anything nor be reached by any interface. Moreover, VPP crashes whenever I try to ping the SGi interface of VPP (10.0.0.2 on the diagram below).

My network configuration is the following image

VPP and erGW are placed in a Ubuntu 20.04 docker container on a computer. The MME and HSS are both from the Open5GS project and are hosted on the same computer. I use srsLTE for the eNodeB.

I can see from the command sh upf session that my UE is recognised by VPP as the IP address appears there.

CP F-SEID: 0xffde7210bfdc4048 (18437299340765315144) @ 192.168.1.2
UP F-SEID: 0xffde7210bfdc4048 (18437299340765315144) @ 192.168.1.1
  PFCP Association: 0
PDR: 1 @ 0x7fd9f4ef3740
  Precedence: 100
  PDI:
    Fields: 00000001
    Source Interface: CP-function
    Network Instance: cp
    Local F-TEID: 2271652686 (0x8766ab4e)
            IPv4: 192.168.1.1
  Outer Header Removal: GTP-U/UDP/IPv4
  FAR Id: 1
  URR Ids: [] @ 0x0
  QER Ids: [] @ 0x0
FAR: 1
  Apply Action: 00000002 == [FORWARD]
  Forward:
    Network Instance: epc
    Destination Interface: 0
CP F-SEID: 0xffde7210c5b30007 (18437299340863275015) @ 192.168.1.2
UP F-SEID: 0xffde7210c5b30007 (18437299340863275015) @ 192.168.1.1
  PFCP Association: 0
  UP Inactivity Timer: 28800 secs, inactive       8.6304 secs (0x00000c05)
PDR: 1 @ 0x7fd9f49a1700
  Precedence: 100
  PDI:
    Fields: 0000000d
    Source Interface: Access
    Network Instance: epc
    Local F-TEID: 3559416503 (0xd42862b7)
            IPv4: 172.20.17.2
    UE IP address (source):
      IPv4 address: 10.180.0.136
    SDF Filter [1]:
      permit out ip from any to assigned 
  Outer Header Removal: GTP-U/UDP/IPv4
  FAR Id: 1
  URR Ids: [1] @ 0x7fd9f4ef6960
  QER Ids: [] @ 0x0
PDR: 2 @ 0x7fd9f49a1780
  Precedence: 100
  PDI:
    Fields: 0000000c
    Source Interface: SGi-LAN
    Network Instance: sgi
    UE IP address (destination):
      IPv4 address: 10.180.0.136
    SDF Filter [1]:
      permit out ip from any to assigned 
  Outer Header Removal: no
  FAR Id: 2
  URR Ids: [1] @ 0x7fd9f4ef6a00
  QER Ids: [] @ 0x0
FAR: 1
  Apply Action: 00000002 == [FORWARD]
  Forward:
    Network Instance: sgi
    Destination Interface: 2
FAR: 2
  Apply Action: 00000002 == [FORWARD]
  Forward:
    Network Instance: epc
    Destination Interface: 0
    Outer Header Creation: [GTP-U/UDP/IPv4],TEID:00000001,IP:172.20.17.1
URR: 1
  Measurement Method: 0003 == [TIME,VOLUME]
  Reporting Triggers: 0000 == []
  Status: 0 == []
  Start Time: 2021/03/03 16:43:21:707
  vTime of First Usage:       0.0000 
  vTime of Last Usage:        0.0000 
  Volume
    Up:    Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
    Down:  Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
    Total: Measured:                    0, Theshold:                    0, Pkts:          0
           Consumed:                    0, Quota:                       0
  Time
    Quota:                        0 secs @ 2021/03/03 16:43:30:326, in -16147862 secs, handle 0xffffffff
    Threshold:                    0 secs @ 2021/03/03 16:43:30:326, in -16147862 secs, handle 0xffffffff

Here is my startup.conf

unix {
  nodaemon
  log /tmp/vpp.log
  full-coredump
  gid vpp
  interactive
  cli-listen localhost:5002
  exec init.conf
}

api-trace {
  on
}

api-segment {
  gid vpp
}

plugins {
    path /usr/src/upg-vpp/vpp/build-root/install-vpp_debug-native/vpp/lib/vpp_plugins/
    plugin dpdk_plugin.so { disable }
    plugin gtpu_plugin.so { disable }
    plugin upf_plugin.so { enable }
}

And my init.conf

ip table add 1
ip table add 2
ip6 table add 1
ip6 table add 2

create host-interface name grx
set interface mac address host-grx 02:42:ac:14:11:02
set interface mtu 1500 host-grx
set interface ip table host-grx 1
set interface ip address host-grx 172.20.17.2/24
set interface state host-grx up

create host-interface name sgi
set interface mac address host-sgi 02:42:0a:00:00:02
set interface mtu 1500 host-sgi
set interface ip table host-sgi 2
set interface ip address host-sgi 10.0.0.2/24
set interface state host-sgi up

create tap host-ip4-addr 192.168.1.2/24
set int ip address tap0 192.168.1.1/24
set int state tap0 up

ip route add 0.0.0.0/0 table 2 via 10.0.0.1 host-sgi

upf pfcp endpoint ip 192.168.1.1 vrf 0

upf nwi name cp vrf 0
upf nwi name epc vrf 1
upf nwi name sgi vrf 2

upf gtpu endpoint ip 192.168.1.1 nwi cp teid 0x80000000/2
upf gtpu endpoint ip 172.20.17.2 nwi epc teid 0x80000000/2

Thank you in advance

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 18 (8 by maintainers)

Most upvoted comments

That was the problem. I can now reach 8.8.8.8 from the UE.

Thank you very much for your time.

I started off with this walkthrough but the configurations are outdated.

For the erGW configuration, you can refer to this issue which provides a suitable ergw-c-node.config file.

For the UPG-VPP part, you need to run this to install VPP with this plugin:

cd /usr/src
git clone https://github.com/travelping/upg-vpp
cd upg-vpp
make update-vpp
cd vpp
make install-deps
make install-ext-deps
make build

The startup.conf and init.conf I use are the one from here. Also, you don’t need to run the sudo ip addr add 192.168.1.2/24 dev vpptap from the walkthrough.