Issue with GTP Flow in fabric-spgw.tofino

19 views
Skip to first unread message

David Lake

unread,
Aug 26, 2020, 11:55:22 AM8/26/20
to P4 brigade

Hello

 

I am trying to encap/decap GTP from an eNB using fabric-spgw on a Wedge 100bf-32x

 

The basic config is working and I’m trying to follow the Mininet instructions to add the TEID, eNodeB and SGW addresses.  This is my flow JSON file:

 

{

  "flows": [

    {

      "deviceId": "device:my-tofino-switch",

      "tableId": "FabricIngress.spgw_ingress.dl_sess_lookup",

      "priority": 10,

      "timeout": 0,

      "isPermanent": true,

      "selector": {

        "criteria": [

          {

            "type": "IPV4_DST",

            "ip": "60.60.0.1/32"

          }

        ]

      },

      "treatment": {

        "instructions": [

          {

            "type": "PROTOCOL_INDEPENDENT",

            "subtype": "ACTION",

            "actionId": "FabricIngress.spgw_ingress.set_dl_sess_info",

            "actionParams": {

              "teid": "1",

              "s1u_enb_addr": "0a001e04",

              "s1u_sgw_addr": "0a0014fe"

            }

          }

        ]

      }

    }

  ]

}

 

But when I look at the pipeconfs on the switch, I don’t see the two tableIDs referenced in the Mininet JSON.

 

The pipeconfs on the switch that reference TEID are:

 

FabricIngress.spgw_ingress.uplink_pdr_lookup

FabricIngress.spgw_ingress.uplink_filter_table

FabricIngress.spgw_ingress.flexible_pdr_lookup

FabricIngress.spgw_ingress.flexible_pdr_lookup

FabricIngress.spgw_ingress.downlink_pdr_lookup

 

Can someone share with me the config that is required to encap/decap the GTP with these pipeconfs please?


Thanks


David

 

 

David Lake

unread,
Aug 27, 2020, 3:24:40 AM8/27/20
to P4 brigade
Good morning.

I’ve worked out that I need to send a PDR and a FAR to the switch in order that reflects the GTP tunnel.

But I can’t find any config guide or documentation for this scenario.

Would appreciate some sample configs/guides please?

I am only terminating one eNB on the P4 switch.

Thank you in advance for your help.

David


From: Lake, David (PG/R - Elec Electronic Eng)
Sent: Wednesday, August 26, 2020 4:55:19 PM
To: P4 brigade <briga...@onosproject.org>
Subject: Issue with GTP Flow in fabric-spgw.tofino
 

Carmelo Cascone

unread,
Sep 2, 2020, 3:23:02 PM9/2/20
to David Lake, P4 brigade, Robert MacDavid
Hi David,

As mentioned by Robert in a private thread, we are actively working on the SPGW part of fabric.p4. Things have changed since the version of ONOS used in the NGSDN tutorial, and they will keep changing in the future.

If you are looking for documentation for the updated SPGW pipeline, that does not exist, yet.

If you want to use the same SPGW pipeline of the NGSDN tutorial, you can git clone the same ONOS version used in the tutorial (2.2.2 at the time of writing):

Then set ONOS_ROOT to the location where you cloned onos when building fabric-tofino. Remember that fabric-tofino is just a set of scripts to build fabric.p4 for Tofino, the same fabric.p4 as provided in ONOS.

Using ONOS 2.2.2 at runtime will also solve the OSGi wiring issue you described in the private thread.

Hope it helps
Carmelo

-- 
You received this message because you are subscribed to the Google Groups "P4 brigade" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-p4+...@onosproject.org.
To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/brigade-p4/VI1PR06MB521462CFF0A546D250D68BF3B5550%40VI1PR06MB5214.eurprd06.prod.outlook.com.

David Lake

unread,
Sep 7, 2020, 9:53:13 AM9/7/20
to Carmelo Cascone, P4 brigade, Robert MacDavid

Hi Carmelo

 

Many thanks.

 

I’ll go back to ONOS 2.2.2 for now but I do have another issue.

 

I’ve cloned 2.2.2 and been able to build the fabric-tofino against it but when I try to build ONOS, I hit an issue:

 

root@ONOS:/opt/onos# bazel build onos

2020/09/07 14:49:39 Downloading https://releases.bazel.build/3.5.0/release/bazel-3.5.0-linux-x86_64...

Extracting Bazel installation...

Starting local Bazel server and connecting to it...

INFO: Reading rc options for 'build' from /opt/onos/.bazelrc:

  'build' options: --javabase=@org_onosproject_onos//tools/build/jdk:default_jdk --host_javabase=@org_onosproject_onos//tools/build/jdk:default_jdk --java_toolchain=@org_onosproject_onos//tools/build/jdk:default_toolchain --host_java_toolchain=@org_onosproject_onos//tools/build/jdk:default_toolchain --host_force_python=PY2 --nouse_ijars --experimental_strict_action_env --incompatible_new_actions_api=false --incompatible_generated_protos_in_virtual_imports=false --incompatible_depset_union=false

ERROR: --incompatible_depset_union=false :: Unrecognized option: --incompatible_depset_union=false

root@ONOS:/opt/onos#

 

David

David Lake

unread,
Sep 7, 2020, 5:09:59 PM9/7/20
to Carmelo Cascone, P4 brigade, Robert MacDavid

Hi

 

I’ve been able to install ONOS 2.2.4 and have run the build on fabric-tofino and then pushed the pipeconf to ONOS. 

 

But when I query the pipeconf on the switch I am not seeing the older GTP parameters in the pipeline model (screenshot from ONOS below).

 

What am I doing wrong please?!

 

Thanks


David

 

 

From: Carmelo Cascone <car...@opennetworking.org>

Sent: 02 September 2020 20:23
To: Lake, David (PG/R - Elec Electronic Eng) <d.l...@surrey.ac.uk>
Cc: P4 brigade <briga...@onosproject.org>; Robert MacDavid <rob...@opennetworking.org>

Carmelo Cascone

unread,
Sep 7, 2020, 5:15:01 PM9/7/20
to David Lake, P4 brigade, Robert MacDavid
You should use ONOS 2.2.2 as suggested in my previous email.

The change to the SPGW pipeline happened between 2.2.2 and 2.2.4. I understand it’s confusing to have such a major change between point releases, but given the experimental/beta nature of fabric.p4, for now we don’t follow semantic versioning.

— Carmelo

On Sep 7, 2020, at 2:09 PM, David Lake <d.l...@surrey.ac.uk> wrote:

Hi 
 
I’ve been able to install ONOS 2.2.4 and have run the build on fabric-tofino and then pushed the pipeconf to ONOS. 
 
But when I query the pipeconf on the switch I am not seeing the older GTP parameters in the pipeline model (screenshot from ONOS below).
 
What am I doing wrong please?!
 
Thanks

David
 
<image002.jpg>

David Lake

unread,
Sep 7, 2020, 5:17:24 PM9/7/20
to Carmelo Cascone, P4 brigade, Robert MacDavid

No problem – going back to 2.2.2.   And experimental/beta is a GREAT thing to have!

 

Thank you for the very quick reply.

 

David

David Lake

unread,
Sep 7, 2020, 5:28:38 PM9/7/20
to Carmelo Cascone, P4 brigade, Robert MacDavid

Hi Carmelo

 

2.2.2 won’t build:

 

root@ONOS:/opt/onos# source /opt/onos/tools/dev/bash_profile

root@ONOS:/opt/onos# bazel build onos

Starting local Bazel server and connecting to it...

INFO: Reading rc options for 'build' from /opt/onos/.bazelrc:

  'build' options: --javabase=@org_onosproject_onos//tools/build/jdk:default_jdk --host_javabase=@org_onosproject_onos//tools/build/jdk:default_jdk --java_toolchain=@org_onosproject_onos//tools/build/jdk:default_toolchain --host_java_toolchain=@org_onosproject_onos//tools/build/jdk:default_toolchain --host_force_python=PY2 --nouse_ijars --experimental_strict_action_env --incompatible_new_actions_api=false --incompatible_generated_protos_in_virtual_imports=false --incompatible_depset_union=false

ERROR: --incompatible_depset_union=false :: Unrecognized option: --incompatible_depset_union=false

 

It looks like “--incompatible_depset_union” was removed from Bazel 3.5.0 but this is the one that ONOS is trying to compile against?

 

 

David

 

From: Carmelo Cascone <car...@opennetworking.org>

Sent: 07 September 2020 22:15

David Lake

unread,
Sep 14, 2020, 5:36:19 PM9/14/20
to Carmelo Cascone, P4 brigade, Robert MacDavid

Hi

 

I’ve deployed ONOS 2.2.2 and I am able to encapsulate packets in GTP using the instructions in the NGSDN tutorial but return packets are not being decapsulated.

 

This is the flowrule I am pushing to ONOS to encapsulate:

 

{

  "flows": [

    {

      "deviceId": "device:my-tofino-switch",

      "tableId": "FabricIngress.spgw_ingress.dl_sess_lookup",

      "priority": 10,

      "timeout": 0,

      "isPermanent": true,

      "selector": {

        "criteria": [

          {

            "type": "IPV4_DST",

            "ip": "60.60.0.1/32"

          }

        ]

      },

      "treatment": {

        "instructions": [

          {

            "type": "PROTOCOL_INDEPENDENT",

            "subtype": "ACTION",

            "actionId": "FabricIngress.spgw_ingress.set_dl_sess_info",

            "actionParams": {

              "teid": "1",

              "s1u_enb_addr": "0a001e04",

              "s1u_sgw_addr": "0a001efe"

            }

          }

        ]

      }

    }

  ]

}

 

What is the equivalent to decapsulate GTP on ingress to the switch please?


Thanks


David

 

From: Carmelo Cascone <car...@opennetworking.org>

Sent: 07 September 2020 22:15

Reply all
Reply to author
Forward
0 new messages