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