Graph refactor, preparation for QoS handling
- Made a new class
session_handler
that now takes a lot of QoSrule handling fromsmf_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
Features
- 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
- As requested by @carota the graph now supports one N6 and one N9 next hop for UL CL.
- I used the following docker-compose: docker-compose-basic-vpp-pcf-ulcl.yaml
The traffic rule for edge is configured as follows:
edge-scenario:
routeToLocs:
- 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.
Tests
- Apart from CI tests, I also tested the REDIRECT and STEERING tutorials, this still works
-
REDIRECT / STEERING tutorials -
N2 handover @carota -
2 PDU sessions with 2 service requests @luis_pereira87
TODOs
- 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