UPF 命令行操作手册

通过 vppctl 连接到 UPF 进行命令行操作

$ vppctl

尖括号、中括号和花括说明

[]:内的内容意思是可写可不写;

{}:那就必须要在{}内给出的选择里选一个;

<>:表示必选。

UPF Hashtable

查看 Hashtable

show upf hashtable [verbose]
  • [verbose]

    可填项,输出详细信息

MTU

MTU 设置

设置 GTPU 隧道最大传输单元,参数为设置的值。

$ upf gtpu-tunnel-mtu <mtu>

HA

查询 HA 状态

$ show upf ha status

HA 接口

添加/删除/查询 upf ha interface,操作的是 upf 全局 ha_interfaces 数据。

查询 HA 接口

$ show upf ha interface

增加 HA 接口

$ upf ha interface add <interface-name>

删除 HA 接口

$ upf ha interface del <interface-name>

Interface

Interface 使能

$ upf enable-disable <interface-name>

Interface 去使能

$ upf enable-disable <interface-name> disable

GTP_req_enable

gtp_req_enable 使能

$ upf gtp_req_enable enable

gtp_req_enable 去使能

$ upf gtp_req_enable disable

PDR_search_perf

pdr_search_perf 使能

$ upf pdr_search_perf enable

upf pdr_search_perf 去使能

$ upf pdr_search_perf disable

Heartbeat

heartbeat 使能

$ upf heartbeat enable

heartbeat 去使能

$ upf heartbeat disable

查看 heartbeat 状态

$ show upf heartbeat

PFD

Package Flow Description

查询 PFD

  • 查询指定 app 的 pfd

    $ show upf pfd-list app-id <app-id>
    
  • 查询所有的 pfd

    $ show upf pfd-list
    

增加 PFD

$ upf pfd-list [appid <name>] [fd {xxx}] [ url {xxx}] [dn{xxx}] [ct {xxx}] [no-hs] [precedence <>]

upf pfd-list

  • appid

    必填项,app id

  • fd {xxx}

    选填项,flow description;填写时有格式要求:”permit out 17 from 192.168.96.0/24 1024-65535 to any”

  • url {xxx}

    选填项,url

  • dn {xxx}

    选填项,domain_name

  • ct {xxx}

    选填项,custom

  • no-hs

    选填,no hash database

  • precedence <>

    选填,默认值为 0

删除 PFD

$ upf pfd-list appid <appid> del

Flowtable

对流表的操作,流表采用RCU机制实现数据同步。

打开 Cache

$ upf flowtable cache enable

关闭 Cache

$ upf flowtable cache disable

重置

$ upf flowtable reset

查看 flowtable

$ show upf flowtable [verbose]
  • [verbose]

    可填项,打印详细信息

查看 flowtable session

$ show upf flowtable sessions [verbose]
  • [verbose]

    可填项,打印详细信息

PFCP Endpoint

PFCP 端点 IP 设置,为 UPF N4 Port。

增加 PFCP Endpoint 端点 IP

$ upf pfcp endpoint ip <address> [vrf <table-id>]

address:UPF N4 IP

vrf:table-id

查看 PFCP Endpoint 端点信息

$ show upf pfcp endpoint

PFCP Retry

设置 PFCP Retry

$ upf pfcp_retry timeout X retry_n1 X

upf pfcp_retry

  • timeout X

    可填项,设置超时时间

  • retry_n1 X

    可填项,设置 retry 次数

查看 PFCP Retry 设置

$ show upf pfcp_retry

PFCP Heartbeat

PFCP Heartbeat 间隔时间,默认为 10。

设置 PFCP Heartbeat 间隔时间

$ upf pfcp heartbeat interval X

upf pfcp heartbeat

  • interval X

    必填项,设置 pfcp 心跳间隔时间

查看 PFCP Heartbeat 间隔时间

show upf pfcp heartbeat interval

GTPU Endpoint

创建 GTPU Endpoint

GTPU 端口设置,为 UPF N3 Port。

$ upf gtpu endpoint [ip <v4 address>] [ip6 <v6 address>] [nwi <name>] [intf access | core | sgi | cp] [TEID-Range-Indication <teid range indication>]

upf gtpu endpoint

  • ip

  • ip6

    选填项,但至少填一个,接口地址

  • nwi

    选填项

  • intf access | core | sgi | cp

    选填可选项;access,core,sgi,cp

    INTF_ACCESS,INTF_CORE,INTF_SGI_LAN,INTF_CP

  • TEID-Range-Indication

    选填项,teid 不大于 7

查看GTPU Endpoint

$ show upf gtpu endpoint

NWI

Network Interface

增加 NWI

$ upf nwi <name> [vrf <table-id>]

upf nwi

  • name

    必填项,nwi name

  • vrf

    选填项,vrf 选择

删除 NWI

$ upf nwi <name> [vrf <table-id>] del

查看 NWI

$ show upf nwi

UE-IP-Pool

增加/删除 UE 端的 IP 池,需要设置 IP 池范围大小。

创建 ue-ip-pool

$ upf ue-ip-pool start [ipv4 | ipv6 <address>] size [ipv4 | ipv6  <pool-size>] pool_id <id> [nwi <name>]

upf ue-ip-pool start

  • ipv4 | ipv6

    选填,ipv4 和 ipv6 选择,且需要输入 IP

  • size ipv4 | ipv6

    选填,ipv4 和 ipv6 选择,且需要输入 size

  • pool_id

    必填项,pool id

  • nwi

    选填,nwi name

删除 ue-ip-pool

$ upf ue-ip-pool start [ipv4 | ipv6 <address>] size [ipv4 | ipv6  <pool-size>] pool_id <id> [nwi <name>] del

查询 ue-ip-pool

$ show upf ue-ip-pool [fib_index <fib_index>]

show upf ue-ip-pool

  • fib_index <fib_index>

    选填项,根据 fib_index 查询,未填返回所有

DNN

删除 DNN Rule

$ upf dnn [name <abc>] [rule_id <xxx>] del_rule

upf dnn

  • name

    必填项,操作的 DNN name

  • rule_id

    必填项,删除指定的 Rule

删除 DNN

$ upf dnn [name <abc>] del_dnn

upf dnn

  • name

    必填项,删除的 DNN

查看 DNN

$ show upf dnn [name]
  • name

    选填项,查询指定 name 的 DNN,不填查询所有

PRE-DEF

upf 预定义规则的操作。

创建 PRE-DEF rule

upf pre-def rule [rule_name <abc>] [app_id <xxx>][far_id <>] [qer_ids <1,2,...>] [urr_ids <1,2,...>]

upf pre-def rule

  • rule_name

    必填项:rule name

  • <app_id>

    选填项,app_id

  • far_id <>

    选填项,Forward action rule ID

  • qer_ids <1,2,…>

    选填项,QoS Enforcement Rule ID,可以多选,以“,”分割

  • urr_ids <1,2,…>

    选填项,Usage Reporting Rule ID,可以多选,以“,”分割

删除 PRE-DEF rule

$ upf pre-def rule [rule_name <abc>] [app_id <xxx>][far_id <>] [qer_ids <1,2,...>] [urr_ids <1,2,...>] del

创建 QER

$ upf pre-def qer [id <>] [gate-ul <0|1>] [gate-dl <0|1>] [mbr-ul <xkb>] [mbr-dl <xkb>] [qfi <>]

upf pre-def qer

  • id <>

    必填项,qer 标识符

  • gate-ul <0|1>

    必填可选项,0/1,up 方向

  • gate-dl <0|1>

    必填可选项,0/1,down 方向

  • mbr-ul

    选填项,上行速率

  • mbr-dl

    选填项,下行速率

  • qfi <>

    选填项,QoS flow ID

创建 FAR

$ upf pre-def far [id <>] [action <1|2|4|8>] [nwi <>] [dst-if <0|1|2|3>] [out-header-desc <1|2|4|8>] [out-header-teid <>] [out-header-ip <x.x.x.x>]

upf pre-def far

  • id <>

    必填项,标识符

  • action <1|2|4|8>

    选填可选项,1,2,4,8;

    1:FAR_DROP

    2:FAR-FORWARD

    4:FAR_BUFFER

    8:FAR_NOTIFY_CP

  • nwi <>

    选填项,network interface,填写时,需要 upf 已存在

  • dst-if <0|1|2|3>

    选填可选项,Forward Parameters

    0:DST_INTF_ACCESS

    1:DST_INTF_CORE

    2:DST_INTF_SGI_LAN

    3:DST_INTF_CP

    4:DST_INTF_LI

  • out-header-desc <1|2|4|8>

    选填可选项,outer_header description

    1:OUTER_HEADER_CREATION_GTP_IP4

    2:OUTER_HEADER_CREATION_GTP_IP6

    4:OUTER_HEADER_CREATION_UDP_IP4

    8:OUTER_HEADER_CREATION_UDP_IP6

  • out-header-teid <>

    选填项

  • out-header-ip <x.x.x.x>

    选填项,out ip

创建 URR

$ upf pre-def urr [id <>] [method <1|2|4>] [trigers <>] [period <>] [vol-th-ul <>] [vol-th-dl <>] [vol-th-total <>] [vol-quota-ul <>] [vol-quota-dl <>] [vol-quota-total <>] [time-threashold <>] [time-quota <>] [time-idt <>] [monitor-time <>] [linked-urr-ids <1,2,...>]

upf pre-def urr

  • id <>

    必填,urr 标识符

  • method <1|2|4>

    选填可选项

    1:SX_URR_TIME

    2:SX_URR_VOLUME

    3:SX_URR_EVENT

  • trigers <>

    选填项

  • period <>

    选填项

  • vol-th-ul <>

    选填项,volume threshold ul

  • vol-th-dl <>

    选填项,volume threshold dl

  • vol-quota-total <>

    选填项,volume threshold total

  • time-threashold <>

    选填项

  • time-quota <>

    选填项

  • time-idt <>

    选填项

  • monitor-time <>

    选填项

  • linked-urr-ids <1,2,…>

    选填选择项

查看 PRE-DEF

$ show upf pre-def [urr | qer | far | rules] [urr-id <id>] [rule-name <id>]

show upf pre-def

  • urr | qer | far | rules

    可填项,选择查看 urr,qer,far,rules

  • urr-id

    可填项,选择 urr ID

  • rule-name

    可填项,选择 rule name

DPI

Deep Packet Inspection 深度包检测

创建 DPI

$ upf dpi name <app_customer> [id <dpi_id>]

upf dpi

  • name <app_customer>

    必填项,用户 app name

  • id

    选填项,默认为 0

删除 DPI

$ upf dpi name <app_customer> [id <dpi_id>] del

查看 DPI

$ show upf dpi [name <appid_customer>]

show upf dpi

  • [name <appid_customer>]

    选填项,按 appid 查询,不输入查询所有

Load_control

load_control 设置

$ upf load_control [max_pps <million>] [change_threshold <percent>]

upf load_control

  • max_pps

    选填项

  • change_threshold

    选填项

查看 load_control

$ show upf load_control

Forward-policy

创建 forward-policy

$ upf forward-policy name <name> [vrf <table-id>]

upf forward-policy

  • name

    必填项,标识符

  • vrf

    选填项,默认为 0

删除 forward-policy

$ upf forward-policy name <name> [vrf <table-id>] del

查看 forward-policy

$ show upf forward-policy

Feature

设置 upf feature

$ upf features [ BUCP support | not support] [ DDND support | not support] [ DLBD support | not support] [ TRST support | not support][ FTUP support | not  support][ PFDM support | not support] [ HEEU support | not support][ TREU support | not   EMPU support | not support] [ PDIU support | not support][ UDBC support | not  support][ QUOAC support | not support] [ TRACE support | not support][ FRRT support | not  support][ PFDE support | not support]

upf features

  • 全部为可填项,选择具体指标的是否 support

查看所有的 features 状态

$ show upf features

Session

会话

查看 UPF Session

$ show upf session [cp_ip] [up_seid | table_id ue_ip | start_index | limit]

show upf session

  • cp_ip

    可填项,ip 格式

  • [up_seid | table_id ue_ip | start_index | limit]

    可填项,根据不同资源获取 Session

    根据 up_seid,ue_ip,index 查询 Session

ACL

查看 ACL

$ show upf acl [up_seid | table_id ue_ip]

show upf acl

  • [up_seid | table_id ue_ip]

    可选项,根据不同资源获取 acl

    根据 up_seid 或者 ue_ip 获取 acl

Association

偶联

查看 association

$ show upf association

association 偶联请求

$ upf association request [cp-ip <x.x.x.x>] [dp-ip <x.x.x.x>] vrf <table-id>

upf association request

  • [cp-ip <x.x.x.x>]

    可填项,源 ip

  • [dp-ip <x.x.x.x>]

    可填项,目的 ip

  • vrf

    必填项,vrf_id

association 偶联更新

$ upf association update [node_index X] [graceful_release_unit 2_seconds | 1_minute | 10_minutes | 1_hour | 10_hours | infinite graceful_release_value X]

upf association update

  • [node_index X]

    可填项,node 索引

  • [graceful_release_unit 2_seconds | 1_minute | 10_minutes | 1_hour | 10_hours | infinite graceful_release_value X]

    可填项,设置 graceful_release_unit 时间

IP reassembly

IP 重组

创建 ip reassembly

$ ip reassembly [full|virtual] [ip4|ip6] [expire-walk-interval <expire-walk-interval-ms> | max-reassembly-length <max_reass_len> | max-reassemblies <max_reass_n> | timeout <timeout-ms>]

ip reassembly

  • [full|virtual]

    可填可选项,默认为 virtual

  • [ip4|ip6]

    可填可选项,ip6

  • [expire-walk-interval | max-reassembly-length <max_reass_len> | max-reassemblies <max_reass_n> | timeout ]

    可填可选项

查看 ip reassembly

$ show ip reassembly [full|virtual] [ip4|ip6]

show ip reassembly

  • [full|virtual]

    可填可选项,默认为 virtual

  • [ip4|ip6]

    可填可选项,默认为 ip6

MSS-Clamping

设置 mss-clamping

$ upf mss-clamping <mss-value>|disable

upf mss-clamping

  • |disable

    必填项,设置 mss 值或者关闭

查看 mss-clamping

$ show upf mss-clamping

Trace

开启 upf trace

$ upf trace imsi <imsi> [range <range>]

upf trace

  • imsi

    必填项

  • range

    可填项,默认为 0-0

关闭 upf trace

$ upf trace imsi <imsi> off [range <range>]

upf trace

  • imsi

    可填项

  • range

    可填项

PCAP

开启 PCAP

$ upf pcap [imsi <imsi>|up_seid <seid>] [rx|tx] [intfc <interface>] [max <nn>] [file <name>] [status] [max-bytes-per-pkt <nnnn>]

upf pcap

  • [imsi |up_seid ]

    必填项,通过 imsi 或者 up_seid 查询

  • rx|tx

    选填项,默认 rx/tx 为 0

  • [intfc ]

    选填项,sw_if_index

  • [max ]

    选填项,packets_to_capture

  • [file ]

    选填项,filename

  • [status]

    选填项,status,默认为 0

  • [max-bytes-per-pkt ]

    选填项,max_bytes_per_pkt

关闭 PCAP

$ upf pcap [imsi <imsi>|up_seid <seid>] [rx|tx] off [intfc <interface>] [max <nn>] [file <name>] [status] [max-bytes-per-pkt <nnnn>]

DNS cache

查看 dns 缓存内容

$ show dns cache [verbose [nn]]
  • [verbose [nn]]

    选填项, verbose 表示查看 dns 缓存的详细信息,不加 verbose 选项则仅显示 dns cache 总条数。

    n 表示详细级别,默认为1,可以看到 dns 缓存配置,包括域名、 IP 、 TLL 、 在 UPF 中的时效等;级别2比级别1有更多的信息,从查询、回复和 dns 缓存当前状态三个维度展开;级别3可以看到客户端连接数等详细内容。

查看 dns server

$ show dns servers

增删 dns 缓存

$ dns cache [add|del|clear] <name> [ip4][ip6]
  • [add|del|clear]

    必填项, add 表示增加一条 dns 缓存, del 表示删除一条 dns 内容, clear 表示清空所有 dns 缓存。当操作为 add 或 del 时,需要带上 name 或 ip 的参数指明所要删除的 dns 缓存。

  • 选填项,表示 dns 缓存的域名。

  • [ip4] [ip6]

    选填项,表示 dns 缓存的 ip 。

设置 dns 超时时间

$ dns set cache expiration time [seconds]
  • [seconds]

    必填项,表示修改超时时间,以秒为单位。该设置全局生效。

格式化测试 dns 连接

该命令将发起一个样例 dns 请求及回复并打印出来。

$ test dns format [verbose [nn]]
  • [verbose [nn]]

    选填项,参看 show dns cache [verbose [nn]] 中的解释。

反格式化测试 dns 连接

该命令将发起一个样例 dns 请求及回复并打印出来。

$ test dns unformat <name> [ip4][ip6]
  • 必填项,域名

  • [ip4] [ip6]

    必填项

dns 超时测试

该命令将设置有效时间为0,从而使 dns 缓存失效。

$ test dns expire <name>
  • 必填项,指明要测试的域名。