LTE网络是一个只有PS域的全IP的移动网络,没有CS域,因此UE必须连接到至少一个PDN (Packet Data Network) 才能执行数据通信的工作。在EPS系统中,PDN指的是外部的数据网络(相对于LTE运营商而言),例如互联网、企业专用网等,使用APN作为PDN的标示。P-GW位于EPC和PDN的边界,EPS Bearer存在于UE和P-GW之间。通常情况下,EPS承载可以看作是UE和P-GW之间的逻辑电路,EPS承载取代了UMTS网络中的PDP。
在UE的第一条Initial Attach中就包含了附着请求(attach request)和PDN连接请求(PDN connectivity request), PDN连接请求的目的是会在UE和P-GW之间建立默认承载(default bearer),默认承载会保持连接直到UE分离(detach)LTE网络。
一般来说,每个PDN连接都对应着一个默认承载(Default Bearer)和一个IP address,只有当UE和PDN都支持IPv4、IPv6双协议栈时,一个PDN连接才有可能对应2个Default Bearer和IP Address,UE在此PDN连接的有效期内将会一直保持此Default Bearer。如果UE存在与多个PDN的连接,那么UE就有多个Default Bearer和IP地址。默认承载的QoS参数可以来自于HSS中获取的签约数据,也可以通过PCRF交互或者基于本地配置来改变这些值。为了给相同IP地址的UE提供不同QoS保障的业务,需要在UE和PDN之间建立一个或多个专有承载(Dedicated EPS Bearer),每个专有承载有自己的QoS,运营商可以根据PCRF(Policy And Charging Resource Function)定义的策略将不同的数据流映射到相应的专有承载上。专有承载的创建或修改只能由网络侧来发起,并且承载的QoS参数总是由核心网来分配。
PDN连接请求可带参数是APN(可选)、UE支持的PDN类型(IPv4,IPv6,IPv4v6等)、PCO(DNS地址请求)、静态IP(可选)。如果APN为空,就采用缺省APN,缺省APN是由HSS提供的,也就说缺省APN由SIM卡决定。是否支持静态IP也是由采用SIM卡决定的。
EPS承载不完全等同于UMTS网络中的PDP。相同点是用户数据的传输一定位于某个EPS承载或者PDP上。不同点是:(1)每个PDP都一个IP地址,而EPS承载的IP地址是它所归属的PDN连接的IP地址;(2)EPS承载有QoS的保障,而PDP是没有的。
PDN
PDN(Packet Data Network分组数据网络),严格意义上讲可以分为内部 PDN 和外部 PDN:内部 PDN 即 EPS 系统中的分组数据网络,是 EPS 系统实体(e.g. MME、HSS、SGW、PGW、PCRF)之间的网络通信;而外部 PDN 即 EPS 系统之外的分组数据网络,例如:3GPP 网络 CDMA1X、Internet(互联网)、IoT(Internet of Things,物联网)、IMS(VoLTE 业务)、行业应用(e.g. 银行专线、证券专线),以及非 3GPP 网络 WiMAX 等。内、外 PDN 通过 PGW 作为网关。
为了方便描述,在普遍的语境中,“PDN” 一般指代的都是外部 PDN,所以我们也常常简要的将 PGW 阐述为 EPS 和 PDN 之间的网关。若将 EPS 作为一个整体,那么从 PDN 的角度来看,EPS 就可以抽象的理解为是 UE 到 PDN 之间的接入网。
需要注意的是,UE 是可以与多个不同 PDN 建立 PDN Connection 的,这就要求不同的 PDN 之间具有隔离性。在 EPS 中,PDN 的隔离性由 PGW 的(物理/逻辑)隔离性来完成。例如:PLMN 中具有有多个 PGW,每个 PGW 对接一个 PDN,UE 想访问哪个 PDN 就连接对应的 PGW,想访问多个 PDN 就连接到多个 PGW。
NOTE:PGW 并非一定连接到某个 PDN,即 SGi 接口配置是可以为空的,此时 PGW 的 APN 则作为停机 APN(e.g. bosstjft.xx、dummy.xx)。当用户欠费时,运营商会将用户接入的 APN 修改为停机 APN,此时 UE 就会进入 “有信号,但无法上网” 的状态。待用户补缴费用后,网络侧会主动让 UE 完成去附着(Detach)并重新附着(Re-attach)的流程,与现网可用的 APN 再次建立 PDN Connection。
PDN Connection
由于 EPS 使用 PGW 来对接不同的 PDN,所以 UE 到 PGW 之间的逻辑数据通路称为 PDN Connection,或者 EPS 业务隧道。UE 发送的上行 IP 报文沿隧道发送到 PGW,PGW 发送的下行 IP 报文沿隧道发送到 UE。EPS 业务隧道的实际路径为 UE => eNB => SGW => PGW => PD。
PDN Connection 的关键属性为:APN、PDN Type、UE IP(又称为 PDN Address)和 UE DNS。首先简单总结一下这些参数与 PDN Connection 之间复杂的关系:
- 由于 PGW 不适合作为高度抽象的操作对象,所以使用 APN 来表示 UE 希望接入的 PDN。1 个 UE 可以同时连接到多个 APN,建立多个不同的 PDN Connection。
- 由于 PDN 具有特征属性参数,所以在同一个 APN 内可以根据 PDN Type 的不同建立多个不同的 PDN Connection。
- 虽然很少见,但实际上 EPS 允许为 UE 在同一个 APN 内使用同一个 PDN Type 建立多个不同的 PDN Connection。
这般设计,目的是为了在复杂的现网环境中,尽力地保障 UE 与 PDN 之间的 IP 连通性。后面内容中,我们主要对这些属性进行介绍以及分析其功能。
注:在移动通信网络的发展历程中,为了降低业务数据的传输时延,一直在减少业务隧道的路径节点,例如:3G 的 NodeB 和 RNC 部分功能在 4G 合并成为 eNB,4G 的 PGW/SGW 在用户平面上的功能在 5G 合并成了UPF。这所谓的 “网络扁平化”,核心目的之一就是要降低延迟。
APN
根据 3GPP 标准,每个 PGW 都具有一个名称标识,用于表示 PGW 对接的 PDN,这就是 APN(Access Point Name,访问接入点)。例如:中国移动对接 Internet 的 APN 叫 cmnet,对接 IMS 网络的 APN 叫 IMS,对接物联网的 APN 叫 cmiot。UE 可以同时连接到多个 APN,即与多个不同的 PGW 建立 PDN Connection。
需要注意的是,PGW 是一个实体,作为 EPS 的核心网元之一,而 APN 则是 PGW 的逻辑呈现。在现网部署中:出于负载均衡的考虑,一个 APN 可能对应了多个物理 PGW 来共同承担一个大规模 APN 的流量访问;出于降低延迟的考虑,一个 APN 可能在全国各省市都有至少一个物理 PGW 作为 PDN 接入点。在业务量小的省,PGW 集中部署在省会,集中部署的好处是便于便于维护、节省成本,缺点是省内其他地区的延迟增大,占用承载网资源多,所以在*、*、青海和内蒙等地的网络延时会更高一些;而在业务量大的省,PGW 则集中部署在业务中心城市。此外,还要考虑到容灾的问题。
APN 与 PGW POOL
APN 实际上可以作为一组物理 PGW 的标识,即 PGW POOL。当 UE 希望与指定的 APN 连接 PDN Connection 时,EPS 会从 APN 对应的 PGW POOL 中选择 1 个物理 PGW 来建立 PDN Connection,这样即使某个物理 PGW 挂了(或拒绝了)还可以选择其他物理 PGW。PGW POOL 是通过运营商内部的 Local DNS(区别于公网 DNS)配置实现的,Local DNS 将 APN 映射为一组物理 PGW 的控制平面 IP 地址,EPS(准确的说是 MME)再从中进行选择。注意,POOL 的意义仅体现在实际组网的 Local DNS 中,一旦 Local DNS 返回了某个物理 PGW 控制平面的 IP 地址,那么 EPS 在建立 PDN Connection 的整个过程中都不会考虑 POOL 的概念。
对于用户规模大,活动范围大的 APN(e.g. cmnet、ctnet 或 3gnet),有必要在各省部署 PGW POOL;而对于用户规模小,活动范围小的APN(e.g. 企业专线),PGW POOL 集中部署在离 PDN 最近的地方就好;如果客户对可靠性要求不高,POOL 甚至都可以不要,一个物理 PGW 就搞定了。
APN 与 vPGW
上面我们讨论了用户规模大的 APN,回头来继续聊聊用户规模小的 APN。对于后者而言,为一个 APN 分配一个 PGW 肯定是浪费资源的,所以很自然就会出现一个物理 PGW 被多个 APN 共用的情况。在这种场景中,为实现 APN 的相互隔离,物理 PGW 会被划分为多个虚拟的 PGW,这是通过虚拟路由器(Routing Instance 或 VRF)来实现的。
简而言之,因为现网环境的复杂性,PGW 参与的工作流程必须要抽象出一个更高层级的对象来进行设计,这个就是 APN 的意义。无论是在用户操作层面、还是在 EPS 逻辑层面(通过 APN 来定位对应的若干个物理 PGW),都以 APN 作为辨识对象。UE 只能请求连接某个 APN,至于最终选择哪一个物理 PGW 或虚拟 PGW 则是 EPS 的事情,对 UE 而言是完全透明的。
APN 与漫游
实际上,即便是在同一个电信运营商的漫游地和归属地中,具有同名的 APN 并不奇怪,与全国性的 APN(e.g. cmnet、ctnet、3gnet)不同,某些专线 APN 是由运营商各省份公司自行分配的。换句话说,就是 APN 的唯一标志性具有地域限制,这就引入了 APN 地域标识的概念。为了让 MME 找到正确的 APN,各地应在 APN 中加入地域标识,以 “.” 分隔,例如:MDD.gd、MDD.bj 或 MDD.sh。
需要强调的是,APN 地域标识仅作用于运营商内部,即只适用于某个电信运营商的国内漫游(Intra-PLMN Roaming)场景。区别于我们前面提到国际漫游(Inter-PLMNRoaming)场景(即 Home Routed 漫游方案),还需要新的标识来识别 APN 属于哪个运营商网络。另外,漫游地的 Local DNS 没有各地 APN 的配置数据,需要通过常规的 DNS 递归迭代来找到归属地的 Local DNS 以获得 PGW 地址。这里再次体现了锚 PGW 的概念。
这里,我们就引申出更加细化的 APN 概念了:APN-OI(APN Operator Identifier,APN 运营商标识)和 APN-NI(APN Network Identifier,APN 网络标识) ,前者标识一个电信运营商,后者标识一个电信运营商的某个 PGW(PDN)。其实,不管是否涉及漫游,UE 和 PGW(以及 HSS 和 PCRF)都只关心 APN-NI,只有 MME 和 Local DNS 才关心 APN-OI,APN-OI 的意义也只存在于 Local DNS 查询过程中。所以,我们常说的 APN 可以宽泛的指代 APN-NI。
APN-OI 的格式为:mnc<MNC>.mcc<MCC>.gprs
,包含了 MNC(Mobile Network Code,移动网络码)和 MCC(Mobile Country Code,移动国家码)。可见 USIM 的 IMSI 指明了 UE 的默认 APN-OI。比如,IMSI 为 454 12 xxxxxxxxxx
,则默认 APN-OI为 mnc012.mcc454.gprs
。
Home Routed 漫游方案中,MME 使用 APN-NI 和默认 APN-OI 向 Local DNS 发起查询,Local DNS 会返回 HPLMN(而不是VPLMN)的 PGW 地址,这样 UE 就会和 HPLMN 的 PGW 建立 PDN 连接。对应 3GPP 漫游模型 1。
-
3GPP EPS 漫游模型 1:PGW 位于本地网络侧
Home Routed 的缺点是路径迂回。UE 请求总要要回到 HPLMN,再回到 UE 所在地,延迟固然会高。如果漫游协议允许的话,可用 Local Breakout(本地疏导)漫游方案来替代 Home Routed,即使用漫游网络 PGW 建立 PDN 连接,此时 APN-OI 的 MNC 和 MCC 应根据 VPLMN 来进行替换,而不再依据 USIM 的 IMSI。这对应的 3GPP 漫游模型是 2 和 3。
- 漫游模型 2:P-GW 位于访问网络侧,同时 AF(应用功能)功能在 HPLMN 侧
- 漫游模型 3:P-GW 位于访问网络侧,同时 AF 功能在 VPLMN 侧
PDN Type
到此为止,我们可以理解 APN 的存在是为了建立 UE 与 PDN 之间的连通性,或者是 IP 连通性(e.g. Internet),或者是 Non-IP 连通性(e.g. IoT),也就是说:根据 PDN 特性的不同,应该建立不同的 PDN Connection,引出了 PDN Type 和 UE capability(UE 能力)的概念。也就是,在同一个 APN 中,根据 PDN Type 的不同,UE 可以与同一个 APN 建立多个不同的 PDN Connection。
IP 类型
IP 类型的 PDN Type 有三种:单栈的 IPv4 or IPv6,以及双栈:IPv4/IPv6。
PDN Type 在建立 PDN Connection 时确定。UE 根据自己的能力,或者手机应用业务的需求来表达意愿:使用何种、一种或多种 PDN Type 来建立 PDN Connection,EPS 再根据 UE 的能力、HSS 签约内容以及 PGW 的具体配置来决定是否允许建立何种、一个或多个 PDN Connection。在 UE 的附着(Attach)流程中,UE 的能力会被记录到 EPS 中,第一个 PDN Connection 肯定是通过 UE 附着流程建立的。
- Step 10. eNB 接收到 Initial Context Setup Request 消息,如果不包含 UE 能力信息,则 eNB 向 UE 发送 UE Capability Enquiry 消息,查询 UE 能力;
- Step 11. UE 向 eNB 发送 UE Capability Information,报告 UE 的能力信息;
- Step 12. eNB 向 MME 发送 UE Capability Information Indication 消息,更新 MME 的 UE 能力信息;
可见,UE 与同一个 APN 连接(何种?几个?)PDN Connection 要考虑的因素是相当的复杂的。例如:UE 请求建立 IPv4/IPv6 双栈的 PDN Connection,但 PDN 只支持或只允许建立单栈连接,并只返回了 1 个 IPv4 or IPv6 地址。此时,UE 就可能会在建立了 IPv4 or IPv6 其中一个 PDN Connection 之后,再次向同一个 APN 发起单栈连接建立请求(取决于 EPS 返回的指示),来完成第二个 PDN Type 的 PDN Connection 的建立。最终,UE 可能会在同一个 APN 上建立 2 个 PDN Connection,分别为 IPv4 类型和 IPv6 类型。
对于 IP 类型的 PDN Connection,如果 UE 具有多个 PDN Connection,那么即便 UE 只连接了一个 APN,但 UE 也会具有必然不同的 IP 地址。例如:我的手机现在只接入了一个 APN 3gnet(IP 类型),但由于我的手机是支持 IPv4v6 双栈的,所以就建立了两个 PDN Connection,分别为我的手机分配了 IPv4 和 IPv6 的 IP 地址。
除了上述介绍的 3 中类型之外,HSS 储存的 PDN Type 还有 IPv4 or IPv6 这一种类型。即允许 APN 建立单栈的 IPv4 连接或 IPv6 连接,但不能建立双栈的 IPv4v6 连接。IPv4 or IPv6 只存在于 HSS 和 MME 之间,不会作为 UE 请求建立 PDN Connection 时使用。
Non-IP 类型
对于 Non-IP 类型的 PDN Connection,UE 则是有 UE ID(设备 ID)来表示。
那么,1 个 PDN Type 是否能够建立多个 PDN Connection 呢?对于这一点,3GPP 协议没有明确限制,UE 是可以与同一个 APN 建立若干个具有相同 PDN Type 的 PDN Connection 的。例如:UE 和 APN cmnet 建立 2 个 IPv4 的 PDN Connection。这里不作展开。
MME 通过 S6a 查询 HSS 中的用户信息(APN、PDN Type)
- MME 向 HSS 发送 UPDATE LOCATION REQUEST(简称 ULR),ULR 包含了用户 的 IMSI。
- HSS 根据 IMSI 查找用户数据库,向 MME 响应 UPDATE LOCATION ANSWER(简称 ULA),包含了 UE 的签约数据(Subscription Data),例如:用户签约的 APN 信息。
从报文中的 Application ID(16777251)可知,ULR 和 ULA 是应用在 3GPP 定义的 S6a 或 S6d 接口上的 Diameter 消息。Diameter 消息的主体由一系列 AVP(Attribute-Value Pair,属性-值对)构成,ULA 的 Subscription Data AVP 包含 APN Configuration Profile AVP,一个 APN Configuration Profile AVP 包含了若干个 APN Configuration AVP。每个 APN Configuration AVP 都包含一个 APN 的属性,包括:APN-NI、PDN Type 和 APN-AMBR 等。显然,一个用户和签约多个 APN。
APN Configuration AVP 通过 ContextID 唯一标识。上图中,Context ID=1
(Default APN)的 APN 为 CMNET,PDN Type 为 IPv4;Context ID=2
的 APN 为 CMWAP,PDN Type 为 IPv4;ContextID=92
的 APN 为 IMS,PDN Type 为 IPv6。
注:APN 也可以是 Non-IP 类型,通过 Non-IP-PDN-Type-Indicator 表示,如果不包含该 Indicator 则表示签约的 APN 为 IP 类型。
注:用户最多可有两个 Default APN,分别对应 IP 类型和 Non-IP 类型,第二个 Default APN 通过 APN Configuration Profile AVP 中的 Additional Context ID 指出。
APN-NI 与 PDN Type 的匹配规则
NOTE:该章节中的 APN 均指 APN-NI。
当 UE 请求创建 PDN Connection 时,MME 根据 UE 请求的 Requested PDN Type、Requested APN 以及 HSS 签约的 Subscribed PDN Type、Subscribe APN 来决定发送至被选中的 PGW 的 PDN Type 和 APN。根据 UE 是否上报 APN,以及 PDN Type 和 APN 的匹配情况,MME 的行为会有所不同。
先简单小结一下。在 PDN Type 匹配的前提下,如果 UE 没有上报 APN,那么 MME 向 PGW 发送的 APN 为 HSS 签约的 Default APN;如果 UE 上报了 APN,且 UE 请求的 APN 包含在 HSS 签约 APN 中(包括 Wild Card APN),则 MME 向 PGW 发起的 APN 为 UE 请求的 APN;如果 UE 上报 APN,且 UE 请求的 APN 不包含在 HSS 签约 APN 中,则 MME 请求 APN 为 MME Default APN(纠错 APN)。
UE 没有上报 APN
此时,MME 只能根据 UE 请求 PDN Type 找到 HSS 签约 Default APN:如果请求 PDN Type 为 IP 类型(IPv4、IPv6、IPv4v6),则使用 IP 类型的 Default APN,如果请求 PDN Type 为 Non-IP 类型,则使用 Non-IP 类型的 Default APN。由于 UE 没有上报 APN,MME 就不用匹配 APN 了,重点是匹配 PDNType。
UE 请求携带的 Requested PDN Type 有 3 种,签约记录的 Subscribed PDN Type 有 4 种,则共有 3 x 4 = 12 种匹配组合。PDN Type 匹配规则就是:寻找 Requested PDN Type 和 Subscribed PDN Type 的交集,如果交集为空,则 MME 拒绝 UE 的 PDN Connection 创建请求。
- 如果 UE 请求和 HSS 签约 都是单栈 的,交集是单栈的 IPv4 或者 IPv6。匹配的通过请求,不匹配则拒绝。
- 如果 UE 请求和 HSS 签约 都是双栈 的,交集只能是双栈的 IPv4v6。匹配的通过请求,不匹配则拒绝。
- 如果 UE 请求和 HSS 签约 一个为单栈,一个为双栈,则交集必然为单栈。例如:如果 UE 请求单栈,HSS 签约双栈,交集和 UE 请求相同;如果 UE 请求双栈,HSS 签约单栈,交集和 HSS 签约相同。匹配的通过请求,不匹配则拒绝。
- 如果 HSS 签约为 IPv4 or IPv6,则交集必然为单栈,如果 UE 请求双栈,则 MME 选择 IPv4 or IPv6 发送请求。
UE 上报了 APN
由于 UE 上报了预期的 APN,所以在匹配 PDN Type 规则的基础上还要匹配 Requested APN 和 Subscribe APN。例如:用户 A 请求连接 APN CMNET,那么用户 A 的签约数据就要包含 APN CMNET,且 Requested PDN Type 和 APN CMNET 签约的 PDN Type 匹配。
此外,Subscribe APN 还有一中特殊类型:Wild Card APN(通配 APN,一般只分配给测试用户),用 * 表示。顾名思义,如果了签约数据包含了 Wild Card APN,那么不管 UE 请求什么 APN,MME 都会接受。当然,Wild Card APN 也有对应的 PDN Type,如果 Requested PDN Type 和 WildCard APN 的 PDN Type 不匹配,那么就没有办法了。
此外,除了存储在 HSS 中的 Subscribe APN,还有一种存在于 MME 的 APN,称为 “MME 的 Default APN”,又称 “纠错 APN”。在 Requested APN 和 Subscribe APN 不匹配的时候,MME 除了可以选择拒绝外,也可以选择使用 “纠错 APN” 来替代 UE 发出的 Requested APN。例如:中国移动的 MME 可配置其 Default APN 为 CMNET。而且对于这种 “纠错” 的行为,UE 是把不感知的。
最后需要注意的是,MME 一样,PGW 在收到来自 MME 发出的 APN 和 PDN Type 之后,也对两者进行匹配,以决定是否接受请求。实际上 MME 在发情 APN 之前,是不知道 PGW 是否有相应配置的。
UE IP 的分配方式
UE IP 有两种分配方式:静态分配、动态分配。如果获取的 IP 是固定的,称为静态分配方式,否则称为动态分配方式。
-
静态分配方式需要占用大量 IP 地址资源,通常在比较特殊的业务场景下使用的,例如:IoT APN、企业专线 APN,又比如联通的物联网卡,IP 都是固定的,全国分配;
-
一般都是使用动态分配方式,契合 UE 移动的特性。
UE IP 可从三个地方获取:HPLMN、VPLMN 或 External PDN。如下图:
- 从 PGW IP POOL 动态获取。
- 从 HSS 签约数据静态获取。
- 从 External PDN 获取。
NOTE:实际上 UE 无法区分 IP 是 PGW、HSS 还是 分配的,从 UE 的角度来看,这一切都是 PGW 的功劳。
UE 从 PGW Internal IP Pool 获取动态 IP
UE 有两种方式可以从 PGW 获取 IP:
- (常见)在建立默认承载的过程中,通过 CP 获取 IP,由 PGW 将 IP 发送给 UE;
- 在建立默认承载之后,通过 UP 获取 IP,UE 在 UP 上向 PGW 发送 DHCP 请求,PGW 再通过 DHCP 响应给 UE 发送 IP。
UE 从 HSS 获取静态 IP
由 HPLMN 的 MME 间接获得 HSS 签约数据的 IP(如下图 2),HSS 以 “IMSI+APN”组合为粒度为 UE 配置 IP,并指定 IP 对应 PGW 给 MME。
** NOTE**:和动态获取 IP 的方式不同,静态方式指定了 UE IP,也必须连接到指定的 PGW,HSS 签约数据除了包含 UE IP,还应包含对应的 PGW 地址,以便 MME 向正确的 PGW 发送请求。即静态获取 IP 的方式限定了建立 PDN Connection 的 PGW。
UE 从 External PDN 获取 IP
PGW 从 External PDN 获取,再分配给 UE,PGW 同时负责 IP 的分发、更新和释放。
- 动态:PGW 作为客户端从 External PDN 的 DHCP 服务器、RADIUS 服务器、DIAMETER 服务器获取 IP,再分配给 UE。
- 静态:与 HSS 签约数据的 “静态” 不同,DHCP 服务器、RADIUS 服务器或 DIAMETER 服务器也可以通过 “IMSI+APN” 的组合为粒度为 UE 配置静态 IP。
PGW 从 External PDN 获取到 UE IP 之后,也可以通过控制面发送给 UE,即 PGW 通过 CREATE SESSION RESPONSE 发送给 MME,MME 再通过 ACTIVATE DEFAULT EPS BEARER CONTEXT REQUEST 发送给 UE。
UE DNS 的获取方式
IPv4 和 IPv6 有着各自的 DNS Server,UE 获取的 DNS 需要与 PDN Type 匹配。PGW 返回哪种类型的 DNS 取决于 UE 的请求:UE 将请求类型放入 PCO(Protocol Configuration Options)中发送给 MME,MME 不会查看和更改 PCO 的内容,直接转发给 PGW,PGW 将 DNS 放入 PCO 中响应给 MME,MME 再转发给 UE。
注:PCO 就像一个透明容器,在 CP 上传送,用于 UE 和 PGW 之间传送(外部)协议配置。
上图中,UE 发送的 PCO 中包含 DNS Server IPv4 Address Request、DNS Server IPv6 Address Request、P-CSCF IPv4 Address Request 和 P-CSCF IPv6 Address Request(在 VoLTE 业务中 UE 通过 PCO 向 PGW 请求 P-CSCF 地址,PGW 也通过 PCO 向 UE 返回 P-CSCF 地址),由于 MME 选择了建立 APN=CMNET 的 PDN Connection,所以 PGW 没有返回 P-CSCF 的地址(APN=IMS 才需要配置 P-CSCF 地址),而是仅返回两个 IPv4 的 DNS1:221.179.38.7 和 DNS2:120.196.165.7。
UE 发送业务数据时如何选择 PDN Connection?
前面我们了解到,一个 UE 上可以建立那么多的 PDN Connection,用哪个连接发哪些数据呢?
实际上,UE 同时拥有手机应用业务层的协议栈(e.g. IP、TCP、HTTP/HTTPs)和 EPS 的协议栈(e.g. RRC、NAS)。UE 是根据手机应用业务的需求来主动请求建立 PDN Connection 的,也就是说说 UE 自己很清楚手机应用业务和 PDN Connection 之间的对应关系。例如:中国移动用户的互联网数据会往 APN cmnet 发送,VoLTE 的数据会往 APN IMS 发送。如果同一个 APN 中具有多个不同 PDN Type 的 PDN Connection 的话,那么 UE 就根据 TCP/IP L3(网络层)协议来完成选择,例如:IPv4 的数据就发往 PDN Type 为 IPv4 的 PDN Connection。而 EPS 则只需要好好的完成 “管道工” 的工作即可,如何选择 PDN Connection 来发送何种数据是 UE 自己的事情。
MME 通过 S6a 查询 HSS 中的用户信息
UE 请求建立 PDN Connection 时,会携带预期的 Requested APN 和 PDN Type。MME 向 PGW 发送 CREATE SESSION REQUEST 请求建立 PDN Connection 之前,会从 HSS 获得 UE 的签约数据,包括用户是否签约 EPS 业务、是否允许漫游、Subscribed APN(签约 APN)和 PDN Type 等信息。在实际建立 PDN Connection 之间,MME 首先会校验 Requested APN 和 Subscribed APN 是否一致。然后,MME 还要校验 PDN Type 是否一致。UE 请求的 PDN Type 反映了 UE 能力,如果 PDN Type 不匹配,那么即使建立了 PDN Connection 也没有意义。