OsmoUPF> enable OsmoUPF# configure terminal OsmoUPF(config)# show running-config ... OsmoUPF(config)# pfcp OsmoUPF(config-pfcp)# list ... local-addr IP_ADDR OsmoUPF(config-pfcp)# local-addr? local-addr Set the local IP address to bind on for PFCP OsmoUPF(config-pfcp)# local-addr ? IP_ADDR IP address OsmoUPF(config-pfcp)# exit OsmoUPF(config)# # ensure its old name "gtp" enters the tunend node OsmoUPF(config)# gtp OsmoUPF(config-tunend)# list ... mockup no mockup dev create DEVNAME [LISTEN_ADDR] dev use DEVNAME [LOCAL_ADDR] dev delete DEVNAME OsmoUPF(config-tunend)# exit OsmoUPF(config)# tunend OsmoUPF(config-tunend)# list ... dev create DEVNAME [LISTEN_ADDR] dev use DEVNAME [LOCAL_ADDR] dev delete DEVNAME OsmoUPF(config-tunend)# dev? dev Configure the GTP device to use for encaps/decaps. OsmoUPF(config-tunend)# dev ? create Add GTP device, creating a new Linux kernel GTP device. Will listen on GTPv1 port 2152 and GTPv0 port 3386 on the specified LISTEN_ADDR use Add GTP device, using an existing Linux kernel GTP device, e.g. created by 'gtp-link' delete Remove a GTP device from the configuration, and delete the Linux kernel GTP device if it was created here. OsmoUPF(config-tunend)# dev create ? DEVNAME device name, e.g. 'apn0' OsmoUPF(config-tunend)# dev create foo ? [LISTEN_ADDR] IPv4 or IPv6 address to listen on, omit for ANY. LISTEN_ADDR is used to pick a GTP device matching the local address for a PFCP Network Instance, which are configured in the 'netinst' node. OsmoUPF(config-tunend)# dev use ? DEVNAME device name, e.g. 'apn0' OsmoUPF(config-tunend)# dev use foo ? [LOCAL_ADDR] The local GTP address this device listens on. It is assumed to be ANY when omitted. LOCAL_ADDR is used to pick a GTP device matching the local address for a PFCP Network Instance, which are configured in the 'netinst' node. OsmoUPF(config-tunend)# dev delete ? DEVNAME device name, e.g. 'apn0' OsmoUPF(config-tunend)# exit OsmoUPF(config)# # ensure its old name "nft" enters the tunmap node OsmoUPF(config)# nft OsmoUPF(config-tunmap)# list ... mockup no mockup table-name TABLE_NAME show nft-rule tunmap example OsmoUPF(config-tunmap)# exit OsmoUPF(config)# tunmap OsmoUPF(config-tunmap)# list ... mockup no mockup table-name TABLE_NAME show nft-rule tunmap example OsmoUPF(config-tunmap)# mockup? mockup don't actually send rulesets to nftables, just return success OsmoUPF(config-tunmap)# no ? mockup operate nftables rulesets normally OsmoUPF(config-tunmap)# table-name? table-name Set the nft inet table name to create and place GTP tunnel forwarding chains in (as in 'nft add table inet foo'). If multiple instances of osmo-upf are running on the same system, each osmo-upf must have its own table name. Otherwise the names of created forwarding chains will collide. The default table name is "osmo-upf". OsmoUPF(config-tunmap)# table-name ? TABLE_NAME nft inet table name OsmoUPF(config-tunmap)# nft-rule? % There is no matched command. OsmoUPF(config-tunmap)# nft-rule ? % There is no matched command. OsmoUPF(config-tunmap)# nft-rule tunmap ? % There is no matched command. OsmoUPF(config-tunmap)# nft-rule tunmap append ? % There is no matched command. OsmoUPF(config-tunmap)# show? show Show running system information OsmoUPF(config-tunmap)# show ? ... nft-rule nftables rule specifics ... OsmoUPF(config-tunmap)# show nft-rule ? tunmap GTP tunmap use case (a.k.a. forwarding between two GTP tunnels) OsmoUPF(config-tunmap)# show nft-rule tunmap ? example Print a complete nftables ruleset for a tunmap filled with example IP addresses and TEIDs