This repository contains a Python based application named net-conn manager for managing network connections within a BBF WT-474 compliant User Plane Selection Function (UPSF).
Its main purpose is to subscribe and listen on events emitted by the UPSF via its gRPC streaming interface, and to create point-to-point network connections between Traffic Steering Functions (TSF) and Service Gateway User Planes (SGUP) on the fly.
In addition, net-conn manager may be used for creating SGUP and TSF entities within the UPSF for testing purposes. It runs a periodic background task that reads pre-defined SGUP and TSF instances from an associated policy file and if missing in the UPSF, creates those instances.
See next table for a list of command line options supported by net-conn manager. An associated environment variable exists for each command line option: the CLI option takes precedence, though.
Option | Default value | Environment variable | Description |
---|---|---|---|
--upsf-host | 127.0.0.1 | UPSF_HOST | UPSF server host to connect to |
--upsf-port | 50051 | UPSF_PORT | UPSF server port to connect to |
--nc-type | ms_mptp | NC_TYPE | Default type assigned to newly created network connections |
--maximum-supported-quality | 0 | MAXIMUM_SUPPORTED_QUALITY | Maximum supported quality on newly created network connections |
--config-file | /etc/upsf/policy.yml | CONFIG_FILE | Policy configuration file containing pre-defined SGUP, TSF instances |
--log-level | info | LOG_LEVEL | Default loglevel, supported options: info, warning, error, critical, debug |
This application makes use of the upsf-client library for UPSF related communication.
Installation is based on Setuptools.
For safe testing create and enter a virtual environment, build and install the application, e.g.:
sh# cd upsf-net-conn-manager
sh# python3 -m venv venv
sh# source venv/bin/activate
sh# pip install -r ./requirements.txt
sh# python3 setup.py build && python3 setup.py install
### if you haven't done so yet, build and install the submodule(s) as well
sh# git submodule update --init --recursive
sh# cd upsf-client
sh# pip install -r ./requirements.txt
sh# python3 setup.py build && python3 setup.py install
sh# upsf-net-conn-manager -h
Please refer to BBF WT-474 Subscriber Session Steering for a general introduction to existing network connection types. However, the following introduction may be useful:
- A network connection may be dedicated to a single subscriber group (SS), or a network connection may be used by multiple subscriber groups in parallel (MS).
- A transport association assigned to a network connection may consist of multiple point-to-point (PTP) transport paths connecting an SGUP to all TSF instances, effectively defining a start-of-head (SOH) replication. If the underlying transport domain supports point-to-multipoint (MPTP) transport paths, the associated network connection may rely on this transport mptp capability.
From these orthogonal views, a total of four combinations arises:
- SS-PTP
- SS-MPTP
- MS-PTP
- MS-MPTP
Support for the MS variants exists in net-conn manager, the single shard variants are not supported yet.
net-conn manager creates a mesh of point-to-point VxLAN tunnels between all TSF and SGUP instances registered in the UPSF database. We assume IP connectivity to exist for any arbitrary TSF/SGUP pair. We do not make any assumption w.r.t. availability of Quality of Service (QoS) on the underlying transport path.
Each TSF and SGUP item in the UPSF database must contain a default endpoint. If none exists the item will be ignored during the meshing process. At the time of writing, the default endpoint must be of type VxLAN, there is no support for transport path types L2vpn or PortVlan yet.
Changes to default endpoints assigned to either a TSF or SGUP instance will be detected by net-conn manager, and the associated network connections will be recalculated as needed.
In MS-PTP mode net-conn manager creates a dedicated network connection for each TSF/SGUP pair. Multiple subscriber groups may be mapped to such a network connection.
In MS-MPTP mode net-conn manager creates a multipoint network connection between an SGUP instance and all existing TSF instances. Multiple subscriber groups may be mapped to such a network connection.
Not supported yet.
Not supported yet.
A configuration file is used for creating pre-defined entities in the UPSF. A background task ensures existence of those entities, but will not alter them unless the entity does not exist in the UPSF yet. Existing entities with or without changes applied by other UPSF clients will not be altered by net-conn manager. For re-creating the original entity as defined in the policy file, you must remove the item from the UPSF first and net-conn's background task will recreate it after a short period of time.
Please note: this functionality is for testing only and we expect SGUP and TSF instances to conduct their registration autonomously in non-testing environments.
See below for an example policy configuration or inspect the examples in the tools/ directory:
tsf:
- name: tsf-A
endpoints:
- type: "vtep"
params:
ip_address: "10.10.10.100"
udp_port: 4789
vni: 111111
default: "yes"
- type: "l2vpn"
params:
vpn_id: 1000
- type: "port_vlan"
params:
logical_port: "eth0"
svlan: 0
cvlan: 0
userplane:
- name: up-A-1
service_gateway_name: sg-A
max_session_count: 1024
max_shards: 16
supported_service_group:
- "basic-internet"
- "something"
- "somewhere"
endpoints:
- type: "vtep"
params:
ip_address: "10.10.10.101"
udp_port: 4789
vni: 111111
default: "yes"
- name: up-A-2
service_gateway_name: sg-A
max_session_count: 1024
max_shards: 16
supported_service_group:
- "basic-internet"
- "something"
- "somewhere"
endpoints:
- type: "vtep"
params:
ip_address: "10.10.10.102"
udp_port: 4789
vni: 111111
default: "yes"
You may specify multiple endpoints for a SGUP or TSF instance. Keyword "default" identifies the endpoint used as default endpoint for the associated item.
-
net-conn manager supports VxLAN based point-to-point connections only. Support for different network connection types (l2vpn, port_vlan) is still for further study.
-
net-conn manager supports network connection types MS-PTP and MS-MPTP only. Both SS-PTP and SS-MPTP are not supported yet. These nc types are for further study.