mp2 - ip五元组分流增加优先级
目前ip五元组分流的大致流程

ue 流量过来后,会去匹配 session,然后轮询查找 session 下的 pdr 规则,pdr 的 acl 中可能包含转发至边缘 dn 的 acl,也可能包含转发至正常 dn 的规则,只要命中其中一条规则,就往对应的 dn 转发。
增加优先级和traffic-rule的设计思想
边缘
acl要插在最前面,每条边缘acl都有优先级,插入时按优先级排序,这样匹配pdr的acl时就能最先命中优先级高的acl。目前代码的
acl规则没有隶属于某个traffic-rule的概念,增加下发upf_traffic_id,使每条规则隶属于对应的traffic-rule。
具体开发方法
typedef struct
{
u8 upf_trafficrule_id;
u16 mp2_precedence;
}acl_list_information_t;
typedef struct
{
...
acl_rule_t *acl;
acl_list_information_t *acl_information;
...
} upf_pdi_t;
在结构体 upf_pdi_t 里面增加向量 acl_information,插入 acl 时记录 upf_trafficrule_id 和优先级,因为两个向量排序一致,插入后我们也能知道每条 acl 的信息,如下:

这样,就能保证后插入的规则可与之前的规则进行优先级比较,进行排序,同时删除时也知道每条规则的 upf_trafficrule_id,保证精确删除。
命令行更改说明
注:traffic_rule_precedence的范围是1-255,值越小优先级越高。
//命令行原型
#upf mec-traffic pfd-list appid <name> fd {xxx} [traffic_rule_precedence <>] [upf_traffic_id <>] [<del>] [<del_all>]
// del :删除该 mec APPID 指定 upf_traffic_id 的 pfd
// del_all : 删除该 mec APPID 下挂所有 pfd
// 新增一条 mec fd (若 appid 已存在,则删除指定 upf_traffic_id 下的规则,再增加)
# upf mec-traffic pfd-list appid 1030 fd {permit in ip from 172.20.231.0/24 to 192.168.2.1/32} traffic_rule_precedence 1 upf_traffic_id 1
// 删除该 mec APPID 指定upf_traffic_id 的 pfd
# upf mec-traffic pfd-list appid 1030 upf_traffic_id 1 del
// 删除该 mec APPID 下挂所有 pfd
# upf mec-traffic pfd-list appid 1030 del_all