通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2014-6-11
发表于 2020-7-13 21:46:15 |显示全部楼层
这一篇将讲述更多PDN连接的细节,包括:UE有几个PDN连接?如果UE有多个PDN连接,互相是什么关系?UE使用哪个PDN连接发送哪些数据?
先说第一个。
直觉上,1个PDN连接就够了。UE和PGW之间建立PDN连接,业务数据都经PGW转发。如果只是为了实现IP连通性,1个PDN连接完全可以满足,网络也十分简单且易于理解 —— 然而,简单往往会导致灵活性的缺失。
如果UE只有1个PDN连接,意味着UE只连接1个PGW,UE可以访问什么完全取决于这个PGW对接的PDN(外部网络)。如果UE只访问互联网(Internet),PGW对接互联网就好了。如果UE还可能访问其他网络和资源,如IMS系统(VoLTE业务)、IoT平台(物联网业务)或行业应用(如银行专线)等,问题就变得复杂了。
出于安全考虑,EPS不能允许UE访问所有PDN。比如,只签约了互联网业务的用户,对银行专线或证券专线也可能会表现出过度的热情(“好想知道老王发了多少奖金,刚刚又买了哪只股票”),EPS必须把这种热情给浇灭。那么,如何灵活的控制UE访问的PDN呢?
方法是隔离。
PDN通常是互相隔离的。如果知道用户号码和UE IP对应关系,PDN可以通过ACL(Access Control List)控制是否允许UE访问。问题是,EPS架构中网络与业务相对分裂(业务把网络视作管道,网络也不太在意传的是什么业务),PDN(业务侧,相对EPS而言)很难同步获取EPS(网络侧)的内部信息,只能通过IP规划事先控制UE IP,再根据用户签约配置ACL。ACL方式不仅灵活性低,维护工程师还可能想打人。(配置网元分散,数据复杂,更新频繁,容易出错)
如果从EPS内部开始隔离,PDN就省心了 —— 如果有多个PGW,每个PGW对接一个PDN,UE想访问哪个PDN就连接哪个PGW,想访问多个PDN就连接多个PGW,这多灵活。当然,是否允许连接还是网络说了算,参与决策的网元有好些个,包括HSS、MME、DNS、PCRF等(这些网元后续再详细介绍),PGW自然也少不了。(大爷一脸傲娇)

3GPP给每个PGW取个名字,表示PGW对接的PDN,这个名字就是Access Point Name(访问接入点,多么的直白),简称APN。以中国移动为例,对接互联网的APN叫cmnet(中国电信叫ctnet或ctlte,中国联通叫3gnet,更准确的说,PGW通过这些运营商的内部网络连接互联网),对接IMS网络的APN叫IMS,对接物联网的APN叫cmiot
于是,UE想访问多个PDN,就和多个APN(PGW)建立多个PDN连接。反过来说,UE可以有1个或多个PDN连接,分别连接不同APN(PGW)。比如,签约cmnet和IMS的用户,UE和cmnet和IMS两个APN(PGW)分别建立PDN连接,两个PGW相互独立,两个PDN连接也相对独立(部分网元共用,比如eNB和SGW)。
5G系统中和APN对应的概念是DNN(Data Network Name)。4G通过APN选择PGW,而5G通过DNN选择SMF(Session Management Function)UPF(User Plane Function)。(3GPP TS 23.003:In 5GS, the Data Network Name(DNN) is equivalent to an APN inEPS. The DNN is areference to adata network, it may be used e.g. to select SMF or UPF.)
APN就是PGW,PGW就是APN。
不过,这里说的是逻辑PGW,不是物理PGW。想象一下,如果cmnet用户都接入到同一个物理PGW,PGW肯定受不了。同时,一个待在深圳的用户,要是千里迢迢接入到北京的PGW,基本上也就告别吃鸡了。因而,每个省都应部署对接cmnet的PGW,以解决PGW容量和传送时延的问题。
在业务量较小的省,PGW往往集中部署在省会;在业务量较大的省,PGW则集中部署在业务中心城市。集中部署的优点是便于集中管理和维护,缺点是省内其他地区的传送时延增大,并增加eNB接入EPC(MME和SGW)占用的传输资源。(比如空间跨度很大的西藏、新疆、青海和内蒙等)
每个省1个物理PGW,行不行呢?

不行,把鸡蛋都放在一个篮子里是不安全的。除了容量和时延,还要考虑PGW的容灾。如果全省只有1个物理PGW,意味着这个网元一旦挂了,全省用户都上不了网。因而,每个省都应部署两个或以上的物理PGW,他们都对接互联网,UE和哪个建立连接都可以,条条大路通罗马。
可以把APN(逻辑PGW)对应的一组物理PGW看成PGW POOL,网络从PGW POOL中选择1个物理PGW建立PDN连接,即使这个物理PGW挂了(或拒绝了)还可以选择其他物理PGW。PGW POOL通过DNS配置实现的,DNS将APN映射为一组物理PGW,网络再从中进行选择。 当然,深圳的PGW POOL和北京的PGW POOL成员是不一样的,各地DNS对APN=cmnet也会有不同的数据配置。


注意,UE只能请求连接哪个APN(或不显式的请求,由网络选择默认APN),选择哪个物理PGW是网络的事,过程对UE也是透明的。更具体的说,负责选择的网元是MME(Mobility Management Entity),即移动管理实体,相对于MME背负的重任,这个名字显得太谦虚了。

这里的DNS也不是公网DNS,而是EPS网络的内部DNS,作用是返回网元IP,在这里就是返回PGW的IP。这个IP不是互联网的IP,而是EPS网络内部的IP。这个IP也不是PGW用于转发业务数据的用户面(User Plane)IP,而是用于信令交互的控制面(Control Plane)IP,具体细节后面再补充,这里的重点是理解MME可通过DNS找到PGW。
PGW POOL不是团结的集体,或甚至谈不上是集体,大家都不知道对方的存在。POOL的意义仅体现在PDN连接建立过程中,或更确切的说,POOL的概念仅体现在DNS数据配置中。一旦MME选择了某个物理PGW并完成PDN连接的建立,对UE而言POOL就失去了意义,除非重新建立PDN连接。
从这个角度理解,PGW POOL就像一群妹子,PDN连接就像婚姻关系。在关系没确立前每个妹子(物理PGW)都有嫁给你的可能(现实可能没这么美好),一旦父母(MME)帮你挑好一个妹子并确立了婚姻关系(就像包办婚姻),你就不能对其他妹子抱有幻想了(实际上你从来都不知道有多少妹子)…… 除非感情破裂,某一方(你,妹子,甚至是父母)主动解除婚姻关系(释放PDN连接)。
自由恋爱?不存在的。
当然,如果换一个APN,就是另一个POOL了。不同POOL相互没有关联, UE可以建立多个不同APN的PDN连接。不同APN的POOL就像不同国家的妹子,虽然每个国家只能娶一个,但总的来说还是可以娶好几个的嘛。(同学,你的思想很危险啊)
对于用户规模大,活动范围大的APN(比如cmnet、ctnet或3gnet),有必要在各省部署PGW POOL,对于用户规模小,活动范围小的APN(比如某些企业专线),PGW POOL集中部署在离PDN(没准只是一台服务器)最近的地方就好,如果客户对安全性要求不高(偶尔断个几小时没关系),POOL都可以不要,一个物理PGW就搞定了。
如果APN用户规模小,但用户活动范围广,PGW还是集中部署在归属地(节约成本嘛,没有那么多PGW),UE如果在漫游地建立PDN连接,网络还是得找回归属地的APN。比如说,我找深圳移动开条企业专线,APN叫MDD,我的服务器(PDN)自然也在深圳,即使我漫游到北京,UE也只能和深圳的APN建立连接,因为北京没有叫MDD的APN。换句话说,选择PGW的过程就是…...
各回各家,各找各妈。
如何确保北京(漫游地)MME找到深圳(归属地)APN呢?没准北京也有叫MDD,但和我没有关联的APN呢?实际上,漫游地和归属地有同名的APN并不奇怪(就像网上有很多叫“猫呆呆”的人一样),和全国性的APN(比如cmnet、ctnet、ctlte、3gnet)不同,这些专线APN本来就是各地自行分配的。如何让北京的MME找到深圳的MDD,而不是北京的MDD呢?

为了让MME找到正确的APN,各地应在APN加入“地域标识”,并以“.”分隔,比如“MDD.gd”、“MDD.bj”或“MDD.sh”,实际上就是把相同的APN变成不同的APN。需要注意的是,“地域标识”只是运营商的数据规范,不是协议定义的标识(“地域标识”只是APN-NI的一部分),只适用于运营商内部漫游场景(Intra-PLMN Roaming)。另,漫游地DNS没有各地APN的配置数据,需要通过递归+迭代的方式找到归属地DNS以获得PGW地址。
对于互联网业务,移动(cmnet)和联通(3gnet)处理有些不同。同样的漫游场景,移动选择的是漫游地PGW,而联通选择的是归属地PGW(可以说是十分彻底的执行“各找各妈”准则了)。比如说,同样是深圳用户漫游到北京,移动选择的是北京PGW,而联通选择的是深圳PGW。对于VoLTE业务,UE必须和归属地IMS交互(实际上,IMS也无所谓归属地和漫游地),无论哪个运营商,APN=IMS都必须选择归属地PGW。

同样道理,cmnet(或ctnet、ctlte、3gnet)用户跑到国外去,国外也没有cmnet这个APN(又或者有,但另有他用),MME也要找到国内APN才能建立PDN连接。和国内漫游(Intra-PLMN Roaming)不同,国际漫游(Inter-PLMNRoaming)中DNS不能以APN的“地域标识”来“寻址”。DNS需要新的标识来识别APN属于哪个运营商网络。
这个标识就是APN-OI(APN Operator Identifier,APN运营商标识),前面一直提到的APN更准确的说应该是APN-NI(APN Network Identifier,APN网络标识)。不管是否涉及漫游,UE和PGW(以及HSS和PCRF)都只关心APN-NI,只有MME和DNS才关心APN-OI。APN-OI的意义也只存在于DNS查询过程中,所以平常以APN替代APN-NI问题不是很大。
APN-OI构成是这样的:“mnc<MNC>.mcc<MCC>.gprs”,其中MNC(Mobile Network Code,移动网络码)和MCC(Mobile Country Code,移动国家码)指出PGW所在运营商网络。用户都有默认APN-OI(Default APN-OI),<MNC>和<MCC>从IMSI(International Mobile Subscriber Identification Number,国际移动用户识别码)中提取。比如,用户IMSI为454 12 xxxxxxxxxx(CMHK用户),则默认APN-OI为“mnc012.mcc454.gprs”。(MNC、MCC不足三位则在前面补0)
默认APN-OI用在Home Routed漫游方案。HomeRouted就是用户漫游到其他运营商网络(VPLMN),漫游协议要求用户使用归属网络(HPLMN)的PGW,MME使用APN-NI和默认APN-OI向DNS发起查询,DNS会返回HPLMN(而不是VPLMN)的PGW地址,这样UE就会和HPLMN的PGW建立PDN连接。

Home Routed可以这样理解:扎克伯格(美国用户)漫游到中国(漫游网络),在天安门前装模作样的跑了会儿步,然后迫不及待的自拍一张,发到facebook上…… 为什么小札可以上facebook呢 —— 因为facebook是他家的啊...... 不是,因为Home Routed要求UE和美国(归属网络)PGW建立PDN连接。可见,Home Routed保证了用户的业务一致性。同样道理,如果你(中国用户)在纽约时代广场跑步,也想到facebook上发张自拍,呵呵。(不过不要灰心,我们没有facebook,可是我们有很多时代广场呀)

Home Routed的缺点是路径迂回。如果小札访问的不是facebook,而是“珍爱网”或“世纪佳缘”什么的,UE请求要绕到地球另一侧(美国PGW)再绕回来,服务器响应也要绕地球一圈,用户感知不会太好。如果漫游协议允许的话,可用Local Breakout替代Home Routed,即使用漫游网络PGW建立PDN连接,此时APN-OI的<MNC>和<MCC>应根据漫游网络PLMN ID(而不是用户IMSI)进行替换。
Anyway,UE可以有1个或多个PDN连接,每个PDN连接分别和1个APN关联,对应1个物理PGW。PGW一会儿当大爷(GW概念),一会儿当妹子(POOL概念),一会儿是逻辑的,一会儿是物理的,心也是够累的。可是,我还是想残忍的问一句:还能更复杂一点吗,比如……
1个APN只能有1个PDN连接吗?
这个套路太熟悉了,答案当然是不只1个。1个APN为什么可能有多个PDN连接呢?说起来还是和PDN有关。前面我只笼统的提到IP连通性,但并没说清楚指的是IPv4还是IPv6。UE得确认PDN是什么类型,才知道可以后续发送哪种IP报文,甚至是Non-IP报文。
PDN的类型就是PDN Type,包括IP类型Non-IP类型。对于IP类型,又分为单栈(Single Address)的IPv4类型和IPv6 类型,以及双栈(Dual Address)的IPv4v6类型。双栈的意思就是同时支持两种版本,发哪种IP报文都没问题。
PDN Type在PDN连接建立时确定。UE可以表达自己的意愿(据不完全统计,现网超过一半终端会请求建立IPv4v6双栈连接),但网络不一定会允许,UE根据返回决定是否继续请求。最终UE有多少个PDN连接,以及是什么PDN Type,取决于UE请求(UE能力)、HSS签约PGW配置
  
1个PDN Type只能有1个PDN连接吗?
3GPP协议没有明确限制。也就是说,UE可以和APN建立多于1个相同PDN Type的PDN连接,比方说,和cmnet建立2个IPv4的PDN连接。据说国外有类似的配置,分别用于互联网业务和VoLTE补充业务。这在国内是共用PDN连接的,我不是很理解其意义所在,只能猜测是为了不同的Qos吧。
1个UE到底可以有多少个PDN连接呢?
幸好,PDN连接的有丝分裂到这里就结束了。综上,1个UE可和多个APN建立PDN连接,每个APN可建立多个不同PDNType的连接,甚至是多个相同PDN Type的连接。规范中是这样定义PDN连接的:PDN连接是PDN和UE之间的关联。PDN由APN表示。对于IP类型的PDN连接,UE由1个IPv4地址、或1个IPv6前缀、或1个IPv4地址+1个IPv6前缀表示;对于Non-IP类型的PDN连接,UE由UE ID表示。
  
上述定义隐含的信息是:UE IP(PDN Address)是定义在PDN连接上的。也就是说,如果UE有多个PDN连接,APN相同则UE IP必然不同,APN不同则UE IP可以不同,也可以相同。从名字也能看出来,PDN Address显然是一个PDN级别的概念。因而,同一PDN连接的所有承载(包含默认承载和专有承载)使用同一个UE IP。

这么多PDN连接,用哪个连接发哪些数据呢?
UE既有业务侧的协议栈(以WEB浏览为例,包含HTTP层、TCP层和IP层),又有网络侧的协议栈(暂时简化为EPS层)。UE根据业务侧需求主动请求建立PDN连接,因而也只有UE知道业务和PDN连接的关联。相对而言,PGW就要被动许多,PGW几乎没有业务侧信息(只有SGi接口的IP层),主要依靠网络侧信息处理报文。(好好做好网关这个有前途的工作)
如果UE有多个PDN连接,UE应根据应用层决定往哪个APN发送IP报文。以中国移动为例,互联网数据往cmnet发送,VoLTE数据往IMS发送。如果同一APN有多个不同PDN Type的PDN连接,UE应根据网络层决定在哪个PDN连接发送,如果(公网)DNS返回IPv4地址,则UE应构造IPv4报文,在IPv4类型连接上发送,如果(公网)DNS返回IPv6地址,则UE应构造IPv6报文,在IPv6类型连接上发送。
对于UE发给PDN的数据,PGW解封EPS层,根据目标IP网络和IP路由发给下一跳;对于PDN发给UE的数据,PGW根据目标IP(UE IP)找到对应的PDN连接并发送…… PGW为什么不需要APN来区分PDN连接呢 —— 因为APN就是PGW嘛!当APN和物理PGW一一对应时,PDN发送到物理PGW的数据,自然属于对应的APN了。
一个APN对应一个物理PGW,太奢侈了吧?
对于用户规模大的APN(如cmnet和IMS)还可以接受,对于用户规模小的APN就不现实了,开一条企业专线就投入一个物理PGW,成本也太高了点。因而,一个物理PGW往往是被多个APN共用的,为实现APN(PDN)的相互隔离,物理PGW会划分为多个虚拟PGW,这是通过虚拟路由器(Routing Instance或VRF)实现的。

举报本楼

军衔等级:

  新兵

注册:2020-9-3
发表于 2020-10-26 15:56:46 |显示全部楼层
很棒,多谢

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

Archiver|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-3-29 18:33 , Processed in 0.324840 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部