Skip to content

Graph refactor, preparation for QoS handling

Stefan Spettel requested to merge upf_graph_refactor_final into develop
  • Made a new class session_handler that now takes a lot of QoSrule handling from smf_pdu_session
  • More or less re-wrote smf_procedure
  • cleaned-up graph
  • made graph edges as shared pointer so that we don't have to synch between them anymore
  • add the notion of associated edges, so that we have a short-cut from, e.g. N3 to N6 edges


  • what is IMO really nice is that now the graph is always used, independently of using PCF or not
    • that means that you can now build a graph based on the UPF profile without having to provision traffic rules
    • SMF will then just find any path (e.g. N3 - N9 - N6) that is valid and use it

implements #40 (closed) and #42 (closed)

N6 and N9 interface mix

The traffic rule for edge is configured as follows:

  - dnai: access 
  - dnai: ulcl
  - dnai: edge

As you can see in the trace ulcl_n6_and_n9_signaling.pcapng, I think the PFCP is correct. However, UPF does not remove the encapsulation in DL and we have double-encapsulation:user_plane_n6_n9_filtered.pcapng

I think that is a mistake of VPP-UPF. Maybe you see something in PFCP that SMF is doing wrong, but I dont't see it.


  • Apart from CI tests, I also tested the REDIRECT and STEERING tutorials, this still works


  • I think currently the debug output is too verbose when selecting the graph
  • We could fix it here or change it in a later MR, for debugging the code it is really useful, for the user not really
  • (maybe we could also use the trace log level for this
Edited by Stefan Spettel

Merge request reports