PCF Configuration

PCF configuration files include:

  • pcf/pcf1/config/pcf.conf

  • pcf/pcf1/xml/predefined-sm-policy-rules.xml

  • pcf/pcf1/xml/am-policy-data.xml

pcf.conf

<?xml version="1.0" encoding="UTF-8"?>
<ngc>
        <!--N7-local-server-ipv4: N7-Interface IPAddr between PCF with SMF, PCF as HTTP2 Server
        N7-local-server-port: N7-Interface port between PCF with SMF, PCF as HTTP2 Server
        N7-local-client-ipv4: N7-Interface between PCF with SMF, PCF as HTTP2 Client
        N7-local-client-port: N7-Interface between PCF with SMF, PCF as HTTP2 Client
        N15-local-server-ipv4: N15-Interface between PCF and AF
        N15-local-server-port: N15-Interface between PCF and AF
        test-client-ipv4-sm:  Internal use for testing
        test-client-port-sm: Internal use for testing
        sm_policy_xml_file: predefined policy rules
        udr_subscription_example_xml_file: predefined policy rules
        -->
  
    <ifcfg
        N7-local-server-ipv4="192.168.70.54"
        N7-local-server-port="7081"
        N7-local-client-ipv4="192.168.70.54"
        N7-local-client-port="7082"

        N15-local-server-ipv4="192.168.150.54"
        N15-local-server-port="7080"

        sm_policy_xml_file="./xml/predefined-sm-policy-rules.xml"
        am_predefined-policy-file="./xml/am-policy-data.xml"

        smf-apiroot=""
        amf-apiroot=""
        udm-apiroot=""
        pcf-apiroot="" />
</ngc>

N7 Interface (HTTP2)

  • N7 Local HTTP2 Client IP: local IP address.

  • N7 Local HTTP2 Client Port: local port, default 7081.

  • SMF HTTP2 Server IP: remote IP address.

  • SMF HTTP2 Server Port: remote port, default 7081.

  • N7 Local HTTP2 Server IP: local IP address.

  • N7 Local HTTP2 Server Port: local port, default 7081.

N15 Interface (HTTP2)

  • N15 Local HTTP2 Server IP: local IP address.

  • N15 Local HTTP2 Server Port: local port, default 7081.

XML Files

  • All the Policy Decision with Session Rule and PCC rule are configurable in ../pcf/pcf1/xml/predefined-sm-policy-rules.xml.

predefined-sm-policy-rules.xml

在 PDU Session 建立期间,SMF 将向 PCF 提供该 PDU Session 的信息(e.g. DNN、TAC 和 SSC),然后 PCF 响应 authorized Session Rule 以及一些配置在 predefined-sm-policy-rules.xml 中的 PCC Rules。PDU Session 建立后,管理员可以使用 PCF CLI 对 PCC Rule 进行操作(创建或删除)。

For instance, if dnn=”default” is selected in the dnn.xml for a UE, the UE will be set to use the rule which is corresponding to this dnn. It is mapped by choosing the sessionRuleId=”1” as corr-id=”1” for dnn=”default”. The corr-id and sessionRuleId are both integer values.

The number of flows to be created depends on the number of flows being configured under Decision. When sessionRuleId=”1” is selected, its corresponding pccRule list for each flow and then its refQosData will be used. Besides, ulTspId has been added to support traffic steering for this specific flow. If this parameter is being left out or the value left empty, then the traffic steering policy will not be sent to the UPF.

Under QoSData, maxbrUl and maxbrDl are in megabits per second. If qos_5qi refers to non-GBR, these two values must be zero or left out.

Under SessionRule, sessionAmbrUl and sessionAmbrDl are in megabits per second.

<?xml version="1.0" encoding="utf-8"?>
<pcf-rules-profile>
    <ConditionData size="2">
        <cond conditionId="cond1" activationTime="2020-07-07T23:10.52Z"/>
        <cond conditionId="cond2" deactivationTime="2020-07-07T23:10.52Z"/>
    </ConditionData>
    <ChargingData size="2">
        <charging chargingId="charging1" meteringMethod="1" chargingType="online" sdfHandI="false" ratingGroup="1" reportingLevel="1" serviceId="pcc1"/>
        <charging chargingId="charging2" meteringMethod="2" chargingType="offline" sdfHandI="false" ratingGroup="2" reportingLevel="1" serviceId="pcc2"/>
    </ChargingData>
    <UsageMonitoringData size="2">
        <um umId="um1" volumeThreshold="100" volumeThreholdUl="50" volumeThresholdDl="50" timeThresold="600" monitoringTime="600" inactivityTime="60"/>
        <um umId="um2" volumeThreshold="200" volumeThreholdUl="50" volumeThresholdDl="150" timeThresold="600" monitoringTime="600" inactivityTime="60"/>
    </UsageMonitoringData>
    <QosData size="10">
        <qos qosId="qos1" qos_5qi="1" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE" maxbrUl="10" maxbrDl="10" gbrUl="5" gbrDl="5"/>
        <qos qosId="qos2" qos_5qi="2" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE" maxbrUl="10" maxbrDl="10" gbrUl="5" gbrDl="5"/>
        <qos qosId="qos4" qos_5qi="4" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE" maxbrUl="10" maxbrDl="10" gbrUl="5" gbrDl="5"/>
        <qos qosId="qos6" qos_5qi="6" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <qos qosId="qos8" qos_5qi="8" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <qos qosId="qos9" qos_5qi="9" priorityLevel="4" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <qos qosId="srv1_qos" qos_5qi="8" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <qos qosId="srv2_qos" qos_5qi="9" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <qos qosId="srv5_qos" qos_5qi="1" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE" maxbrUl="200" maxbrDl="200" gbrUl="100" gbrDl="100"/>
        <qos qosId="srv5_qos_1" qos_5qi="2" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE" maxbrUl="100" maxbrDl="100" gbrUl="50" gbrDl="50"/>
    </QosData>
    <TcData size="8">
        <tc tcId="tc0" flowStatus="ENABLED"/>
        <tc tcId="tc1" flowStatus="ENABLED_UPLINK"/>
        <tc tcId="tc1_1" flowStatus="ENABLED_DOWNLINK"/>
        <tc tcId="tc1_2" flowStatus="DISABLED"/>
        <tc tcId="tc2" dnai="90"/>
        <tc tcId="tc3" redirectEnabled="true" redirectAddressType="IPV4_ADDR" redirectServerAddress="172.18.22.68"/>
        <tc tcId="tc4" flowStatus="ENABLED_UPLINK" dnai="90"/>
        <tc tcId="tc5" flowStatus="ENABLED_UPLINK" dnai="90" redirectEnabled="true" redirectAddressType="IPV4_ADDR" redirectServerAddress="192.168.120.235"/>
    </TcData>
    <FlowInfos size="32">
        <flowList size="1" flowListId="flowList0">
            <flowInfo descriptions="permit out ip from 172.18.22.68/32 to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList1">
            <flowInfo descriptions="permit out 1 from 172.18.22.68/32 to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList2">
            <flowInfo descriptions="permit out 6 from any to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList3">
            <flowInfo descriptions="permit out 17 from 172.18.22.68/32 to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList1_1">
            <flowInfo descriptions="permit out 1 from 192.168.1.1/32 to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList4">
            <flowInfo descriptions="permit out 6 from 172.18.22.68/32 21 to 172.20.231.0/24 0-60000"/>
        </flowList>
        <flowList size="1" flowListId="flowList4_1">
            <flowInfo descriptions="permit out 6 from 172.18.22.68/32 110 to 172.20.231.0/24 0-60000"/>
        </flowList>
        <flowList size="1" flowListId="flowList5">
            <flowInfo descriptions="permit out 1 from  172.20.231.0/24 to 172.20.231.0/24"/>
        </flowList>
        <flowList size="1" flowListId="flowList1052_1">
            <flowInfo descriptions="permit out 58 from fc00::1/128 to any"/>
        </flowList>
        <flowList size="1" flowListId="flowList1052_2">
            <flowInfo descriptions="permit out 58 from fc00::3/128 to any"/>
        </flowList>
    </FlowInfos>
    <QosIds size="10">
        <list qosListId="qosList1" size="1">
            <qosId value="qos1"/>
        </list>
        <list qosListId="qosList2" size="1">
            <qosId value="qos2"/>
        </list>
        <list qosListId="qosList3" size="1">
            <qosId value="qos4"/>
        </list>
        <list qosListId="qosList4" size="1">
            <qosId value="qos6"/>
        </list>
        <list qosListId="qosList5" size="1">
            <qosId value="qos8"/>
        </list>
        <list qosListId="qosList6" size="1">
            <qosId value="qos9"/>
        </list>
        <list qosListId="srv1_qosList" size="1">
            <qosId value="srv1_qos"/>
        </list>
        <list qosListId="srv2_qosList" size="1">
            <qosId value="srv2_qos"/>
        </list>
        <list qosListId="srv5_qosList" size="1">
            <qosId value="srv5_qos"/>
        </list>
        <list qosListId="srv5_qosList_1" size="1">
            <qosId value="srv5_qos_1"/>
        </list>
    </QosIds>
    <TcIds size="8">
        <list tcListId="tcList0" size="1">
            <tcId value="tc0"/>
        </list>
        <list tcListId="tcList1" size="1">
            <tcId value="tc1"/>
        </list>
        <list tcListId="tcList1_1" size="1">
            <tcId value="tc1_1"/>
        </list>
        <list tcListId="tcList1_2" size="1">
            <tcId value="tc1_2"/>
        </list>
        <list tcListId="tcList2" size="1">
            <tcId value="tc2"/>
        </list>
        <list tcListId="tcList3" size="1">
            <tcId value="tc3"/>
        </list>
        <list tcListId="tcList4" size="1">
            <tcId value="tc4"/>
        </list>
        <list tcListId="tcList5" size="1">
            <tcId value="tc5"/>
        </list>
    </TcIds>
    <PccRule size="32">
        <pcc pccRuleId="pre_pcc10_3_1"/>
        <pcc pccRuleId="pcc10_5_1_1" flowListId="flowList1" precedence="11" qosListId="qosList6"/>
        <pcc pccRuleId="pcc10_5_1_2" flowListId="flowList1_1" precedence="12" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_5_2_1" flowListId="flowList1052_1" precedence="11" qosListId="qosList6"/>
        <pcc pccRuleId="pcc10_5_2_2" flowListId="flowList1052_2" precedence="12" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_5_3_1" flowListId="flowList4" precedence="11" qosListId="qosList6"/>
        <pcc pccRuleId="pcc10_5_3_2" flowListId="flowList4_1" precedence="12" qosListId="qosList6" tcListId="tcList1_1"/>
        <pcc pccRuleId="pcc10_5_4_1_1" appId="1007" precedence="10" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_5_4_1_2" appId="1007" precedence="10" qosListId="qosList6"/>
        <pcc pccRuleId="pcc10_5_4_2_1" appId="1008" precedence="10" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_5_4_3_1" appId="1009" precedence="10" qosListId="qosList6"/>
        <pcc pccRuleId="pcc10_5_4_4_1" appId="1010" precedence="10" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_6_1_1" flowListId="flowList0" precedence="19" qosListId="qosList6" tcListId="tcList1_2"/>
        <pcc pccRuleId="pcc10_6_1_2" flowListId="flowList0" precedence="18" qosListId="qosList6" tcListId="tcList0"/>
        <pcc pccRuleId="pcc10_6_2" appId="1004" precedence="19" qosListId="qosList5"/>
        <pcc pccRuleId="pre_pcc10_6_3_1"/>
        <pcc pccRuleId="pre_pcc10_6_3_2"/>
        <pcc pccRuleId="pre_pcc10_7_1_1_1"/>
        <pcc pccRuleId="pre_pcc10_7_1_1_2"/>
        <pcc pccRuleId="pre_pcc10_7_2_1"/>
        <pcc pccRuleId="pre_pcc10_7_2_2"/>
        <pcc pccRuleId="pre_pcc10_7_3_1"/>
        <pcc pccRuleId="pre_pcc10_7_3_2"/>
        <pcc pccRuleId="pre_pcc10_7_3_3"/>
        <pcc pccRuleId="pcc10_6_4" flowListId="flowList0" precedence="11" qosListId="qosList6" tcListId="tcList1_1"/>
        <pcc pccRuleId="pcc11_7_1_1" appId="1006" precedence="19" qosListId="qosList5" tcListId="tcList3"/>
        <pcc pccRuleId="pcc11_2_5" flowListId="flowList5" precedence="11" qosListId="qosList1" tcListId="tcList1_2"/>
        <pcc pccRuleId="pre_pcc11_5_1"/>
        <pcc pccRuleId="pcc11_5_2" flowListId="flowList1_1" precedence="11" qosListId="qosList1"/>
        <pcc pccRuleId="pcc11_8" appId="1006" precedence="19" qosListId="qosList5" tcListId="tcList3"/>
        <pcc pccRuleId="pcc10" appId="1004" precedence="19" qosListId="qosList5" tcListId="tcList0"/>
        <pcc pccRuleId="pcc10_1"/>
    </PccRule>
    <SessionRule size="4">
        <session sessionRuleId="1" sessionAmbrUl="10" sessionAmbrDl="10" def5qi="9" priorityLevel="8" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <session sessionRuleId="2" sessionAmbrUl="400" sessionAmbrDl="400" def5qi="9" priorityLevel="3" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <session sessionRuleId="3" sessionAmbrUl="600" sessionAmbrDl="600" def5qi="8" priorityLevel="3" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
        <session sessionRuleId="4" sessionAmbrUl="1000" sessionAmbrDl="1000" def5qi="9" priorityLevel="4" preemptCap="MAY_PREEMPT" preemptVuln="PREEMPTABLE"/>
    </SessionRule>
    <PccIds size="4">
        <list pccListId="pccList0" size="0">
            <pccId value="pcc10_5_4_1_1"/>
        </list>
        <list pccListId="pccList1" size="3">
            <pccId value="pcc11"/>
            <pccId value="pcc12"/>
            <pccId value="pcc13"/>
        </list>
        <list pccListId="pccList2" size="1">
            <pccId value="pcc11_2"/>
        </list>
        <list pccListId="pccList3" size="1"></list>
    </PccIds>
    <PcReqTriggers size="2">
        <triggers triggerId="triggerList1" value="SE_AMBR_CH"/>
        <triggers triggerId="triggerList2" value="SE_AMBR_CH,RES_MO_RE,SAREA_CH"/>
    </PcReqTriggers>
    <SmPolicyDecision size="3">
        <decision sst="1" dnn="default" tac="any" sessionRuleId="4" pccListId="pccList0"/>
        <decision sst="2" dnn="public" tac="any" sessionRuleId="4" pccListId="pccList0"/>
        <decision sst="3" dnn="private" tac="any" sessionRuleId="4" pccListId="pccList0"/>
        <decision ssc="1" sd="3be0a2" dnn="default" tac="51" sessionRuleId="1" pccListId="pccList0" pcReqTriggers="triggerList2"/>
        <decision ssc="1" sd="" dnn="default" tac="any" sessionRuleId="1" pccListId="pccList0" pcReqTriggers="triggerList2"/>
    </SmPolicyDecision>
    <LocalPolicyProfile size="3">
        <policy ssc="1" dnn="default" tac="5" policyId="pcc11_2" action="add"/>
        <policy sst="1" dnn="default" tac="5" policyId="pcc11" action="delete"/>
        <policy sst="1" dnn="default" tac="5" policyId="pcc11" action="modify" tcDataId="tc1" qosDataId=""/>
    </LocalPolicyProfile>
</pcf-rules-profile>

am-policy-data.xml

<?xml version="1.0" encoding="utf-8"?>

<pcf-profiles> 
  <am-policy size="2"> 
    <am-policy-entry index="1" rfsp-index="123" service-area-type="allowed" max-allowed-tais="12" tai-size="2"> 
      <tai-entry tai-mcc="466" tai-mnc="92" tai-tac="11"/>  
      <tai-entry tai-mcc="466" tai-mnc="92" tai-tac="12"/> 
    </am-policy-entry>  
    <am-policy-entry index="2" rfsp-index="123" service-area-type="non-allowed" tai-size="2"> 
      <tai-entry tai-mcc="466" tai-mnc="92" tai-tac="11"/>  
      <tai-entry tai-mcc="466" tai-mnc="92" tai-tac="12"/> 
    </am-policy-entry> 
  </am-policy> 
</pcf-profiles>

TS

问题:SMF 获取 PCF policy 失败。

  • SMF

UID466920100001102 resourceUri:  not found!!
  • PCF

UID466920100001102 Fail to get policy sst=2 dnn= public tac= 51 from PolicyData rep.

诊断:UE 的 sst、dnn 等签约数据,没有配置在 <SmPolicyDecision> 中。