# UPF MP2 流程 ## MP2 `MP2` 接口共有以下 7 个接口: * `IP`五元组分流规则 (开发,业务相关) * `DNS`重定向规则 (开发,业务相关) * `DNS`分流规则 (开发,业务相关) * 基于`UE`标识的黑白名单访问控制 (开发,业务相关) * `UE`信息查询 (开发,不相关业务) * 基于`UE`的带宽管理 (开发,业务相关) * **`UE`位置查询** (不开发,不相关业务,需要基站侧支持) **注:`IP`五元组分流规则是,所有业务相关规则的必要前提** ## UPF 我们清楚`UPF`业务转发对逻辑是先区分识别业务,后按照不同业务进行转发: * 区分识别业务:通过报文精确匹配`PDR`做业务识别(UPF 中 upf_pdr_detect 节点) * 按照不同业务进行转发:通过匹配的`PDR`关联的`FAR`做相应的转发 (UPF 中 upf_process 节点) `UPF`对`UE`上下行流量转发流程是不同的,如下图: ![MP2_process1.png](../../../_static/MP2_process1.png) 其中关键节点有: * ip4-input (区分识别业务) * upf-pdr-detect (区分识别业务) * upf-process (处理报文按照不同业务进行转发) **ip4-input**:节点通过报文目的`ip`,查找路由表找到报文的下一跳节点; ​ 对于`GTPU`报文(`UE`的上行流量),其目的`IP`一定是`UPF`,下一跳也就指向本地,进而进入`UPF`的处理流程; ​ 对于非`GPUT`报文(`UE`的下行流量),其目的`IP`是`UE IP`,在`Session`建立时,`UPF`会在对应`NWI`的`VRF`中建立`UE IP`的路由表,将对应的流量引入`UPF`处理节点; ​ 对于非`UE`流量,则按照路由表下一跳正常转发。 **upf-pdr-detect**:节点通过对报文进行精确匹配`PDR`;匹配 `UE IP`,`SDF`。 **upf-process**:按照匹配的`PDR`关联的`FAR`进行业务处理转发,转发的出端口就是在这个节点设置的。 ## UPF MP2 开发流程 `UPF MP2`流程设计: `MP2`首先侧重`IP 五元组分流`,能将边缘流量过滤出来,并依照`UPF`转发实现逻辑分流到边缘,是`MP2`的开发前提,因此设计实现如何过滤出`UE`到边缘的流量,并在处理转发时正确的转发到边缘`Interface`是主要内容。 过滤出`UE`到边缘的流量:在`UPF`创建`PFD`时,增加设置该`FD`是分流到边缘`MEC`;并在`pdr_detect`时,检查`FD`是否为分流边缘,并置位报文元数据。 处理转发时正确的转发到边缘`Interface`:在`upf_process`时,通过报文元数据判断是否为边缘流量,并正确分流到边缘。 本设计是在`UPF`原节点进行修改(没有增加`MP2`节点是因为,后续开发可以继续利用`UPF`原有功能,不需要重发代码搬移) * 配置:在`UPF`启动时,增加`MEC`专用路由,专用端口 ``` comment{N6-MEC} ip table add 100 # 增加专用路由表 set interface ip table GigabitEthernet0/f/0 100 # MEC DN interface set interface ip address GigabitEthernet0/f/0 192.168.2.16/24 # 设置对接 MEC DN GW ip route add 0.0.0.0/0 table 100 via 192.168.2.1 GigabitEthernet0/f/0 # 设置到 MEC DN 默认路由 upf mec route ip4 table set 100 # 设置 UPF MEC 专用路由表 ``` * 代码: * 修改`PFCP`建立`Session`流程:在`Session`建立时,向`MEC`专用路由增加`UE IP`指向`UPF`路由,建立`DPO` ![MP2_process2.png](../../../_static/MP2_process2.png) * 修改建立`pfd`:增加建立`pfd`指定该条`FD`是分流到`边缘MEC` ``` upf pfd-list appid 1030 fd {permit in ip from 172.20.231.0/24 to 192.168.2.1/32} mec-traffic upf pre-def urr id 2200000003 trigers 16 upf pre-def rule rule_name rule1 app_id 1030 urr_ids 2200000003 upf dnn name default.mnc092.mcc466.gprs rule_id rule1 ``` ``` uranus> show upf pfd-list ---------------------------------------------------- PFD List Info: app_id counts: 16 ---------------------------------------------------- app id: 1030 mec traffic # 有 mec traffic 说明该条 fd 将分流到边缘 mec precedence: 0 PFD idx: 0 Flow Describe(1):V4: permit in ip from 172.20.231.0/24 to 192.168.2.1 # 该条流量将分流到边缘 mec URL(0): DN(0): Customer:(0)= uranus> ``` * 对业务识别的修改,`upf-pdr-detect`:对报文匹配到的 SDF,校验是否为分流到边缘`MEC`,若是将置位报文元数据`mec_traffic` * 对处理报文的修改,`upf-process`:通过报文元数据`mec_traffic`是否置位判断是否为到边缘`MEC`的流量,若是,则将该流量引入`MEC`专用路由进行转发 ![MP2_process3.png](../../../_static/MP2_process3.png) **注:后续`MP2`业务开发,通过判断报文元数据是否为边缘流量,进行业务区分,并在此基础上开发相关业务逻辑。**