今天是教师节,愿所有老师教师节快乐。
刚刚浏览了很多学生时代(居然用了这个词🤔)的照片,按理应该是要矫情一波的,然而常理出牌总不会带来意外,那么还是不要矫情了,于此也祝愿自己所有的老师同学朋友在各自的工作岗位上步步高升,生活一切安好。
终于还是决定开始写一些这几年所从事的工作——通信,也算是对这几年的总结和分享,知识只有分享出来才是有意义的存在吧。
毕业就进入到了这个行业,虽然一开始并不知道什么,但是一路走来也慢慢的喜欢上了这种完成各个节点的对接,对各种信令的学习、理解和验证。
这几年走南闯北,第一次领略异国风情——菲律宾,很多朋友在我提起菲律宾的时候都感觉那里不好,也会提及反华的话题,其实于我在那里一年多并没有反华的感觉,也许那个时候的中菲关系还没有现在这样紧张?对于我来说菲律宾有着不一样的意义,毕竟是自己第一次出国的地方,而且那里的同事和客户于我都非常之友好,现在依然能回味菲律宾的芒果(想吃了),公司一楼的芒果汁(都是芒果😄),八月十五邀请项目经理一家聚会的团餐等等,当然自然环境也是无可挑剔的存在;然后是中东的巴林——完成了第二次三国杀的洗礼,泰国,和乌克兰——完全一个人的独处,乌克兰这个地方虽然只待了短短的一个月,但是却给了我最深的印象和记忆,没有理由的喜欢那里,有机会再去;国内在广东几个城市广州-深圳-江门-佛山游走了十来个月,跟team一起奋战起局升级打怪,被老同学招待到处吃喝,然后是南京-苏州-无锡转战了一个月,而目前也在上海研发待了半年多。通信还在继续,我们也依然在前行。
那么通信是什么?通信的概念就是人与自然或者人与人之间通过某种介质传递交流信息的过程。从古代的隔空喊话、烽火传信、飞鸽传书到现在的信息通信时代,通信是我们生活中不可或缺的一部分,只要有人的地方,就有江湖,也就有沟通,那么就有通信。
而对于我等从事的通信事业可以说是狭义上通信,专指信息时代利用“电”来传递消息的电信行业。
电信行业到现在已经到第四代,也就是我们现在正在如火如荼建设的4G LTE时代,虽然5G已经飞奔在未来的路上,但是4G依然是目前的主打歌,所以第一篇就从如何接入4G网络——附着信令开始吧。
熟悉信令的第一步其实是要明白整个信令的目的是什么?谁发起的?
对于4G附着流程来说,目的就是终端用户也就是手机——包括你的iPhone当然也包括我的三星小米HTCo(╯□╰)o——打通自己通往世界各地的网络道路,然后作为手机控的我们就可以借助网络媒介来做我们想做的事情,联系你想联系的人。
那么终端到底是怎么接入到网络中的呢?先上整网信令流程图,然后我们再细细道来通往探索之路的每一步:
首先你得有一个手机,然后再有一张卡,也就是俗称的开户,到各大运营商——移动、联通、电信等获取一张网络身份证——即普通Sim卡、Micro Sim卡或Nano Sim卡(苹果就用这个)。
当拿到卡放到手机里之后就可以开启4G网络神奇之旅了。
- 在搜索并点击对应运营商网络信号(即开户运营商)的瞬间,终端发送第一条消息Attach Request。
终端将自己多种信息封装到NAS中,包括:用户ID,附着类型,终端的网络能力以及ESM消息容器(ESM message container)等。
用户ID可以分为永久ID——IMSI和临时ID——GUTI两种,对于新开用户基本以IMSI作为ID发起首次附着请求;而对于曾经接入过网络的用户会尽量使用GUTI作为ID,从而保证IMSI尽可能少的暴露在网络中,而根据用户之前接入到的网络类型又可以分为mapped GUTI和Native GUTI,如果用户之前接入的网络为2、3G网络也就是GSM和WCDMA网,那么GUTI type为mapped,同时也会发送其在2/3G中有效的P-TMSI signature给网络侧即New MME,如果之前接入的是4G即LTE网络,那么GUTI type为Native。
再来说一下附着类型,目前商业机基本发送的都为联合附着类型(combined EPS/IMSI attach,其他还有EPS only attach或者紧急情况下的Emergency Attach),而目前不言而喻,因为LTE还非全IP时代,因此对于语音和短信业务依然需要借助传统的2/3G网络通过CS域进行,当然VoLTE开通之后,语音业务就进入全IP时代了,但是短信业务依然还在借助CS域进行,所以联合附着目前依然是必须的。
4G区别于2/3G是实时在线的(always-on IP connectivity ),所以在附着过程就就会激活其默认的PDN,因此在附着请求中终端也会封装其ESM消息容器来激活默认PDN。
而终端网络能力包括了完整性和加密算法,是否可以做VoLTE等等。
- 附着消息到达第一个中继站——eNodeB,eNodeB将用户所在的小区消息包括TAI、ECGI等封装到NAS外层的S1AP之后直接发送给下一个核心站点——MME。
- MME收到用户的附着请求之后思考此用户是否合法?但是因为其并不一定有用户的签约信息,所以最终还是 “算了,先看看再说” 。
3a. MME自然也不能消极怠工,他开始剖析用户的附着请求,首要任务就是得到用户ID:如果用户ID是GUTI,那么MME根据Native GUTI来判断是否是自己分配的GUTI?如果是,继续第四步;如果不是,那么从GUTI中提取GUMMEI信息(MCC+MNC+MMEGroupID+MMECode)构建old MME的FQDN并进行DNS查询以得到old MME的S10 IP。
如果是Mapped GUTI,就通过old GUTI提取出old RAC-LAC-MNC-MCC,如果是兼容2/3G-SGSN的MME,那么MME检测此RAC-LAC是否在自己的辖区内?如果是,继续第四步;如果不是,将old-RAC-LAC构建成RAI FQDN并进行DNS查询来得到old SGSN的Gn IP。
3b. 既然拿到了old MME/SGSN的IP地址,那就不要面子的去问别人要关于此用户的信息吧。New MME发送Identification请求到old MME/SGSN。old MME/SGSN收到请求之后检测此用户是否曾经驻留并保存有此用户的信息?如果有此用户信息,将IMSI和对应的MM (mobility management) context返回给new MME,如果没有 “抱歉,I don’t know this user” 。
- 虽然old GUTI是自己分配但是并没有此用户信息或者从old MME/SGSN收到“I don’t know this user”,New MME是否就没有办法了呢?自然不是,我们还可以问用户自己要呀(好机智),而且用户是必须要响应MME的Identify请求并提供准确的IMSI信息(小样,还是得告诉小爷吧:-D)。不管MME通过何种方式得到了用户的IMSI——网络中的身份号——之后开始对用户进行合法性检测。
- 5a. 如果MME通过网络内部比如old MME拿到此用户的MM context等信息,就可以内部完成对此用户的鉴权。但是一旦找不到,那么没有办法了,去专门为用户开户所使用的HSS要吧。
用户的所有开户鉴权信息封存在HSS中的,嗯,HSS太重要了(其实HSS也涉及到多种架构,不再赘述)。当MME得到用户的IMSI之后向HSS发起用户鉴权信息请求并得到回复,也就是我们所说的AIR/AIA消息(Authentication-Information Request/Answer)。MME收到数据之后经过一系列运算(其实很简单)构建一组鉴权数据发送给终端并对其进行challenge请求,终端验证网络合法之后并返回给网络自己所存在的开户秘钥,MME收到用户的鉴权数据匹配之后认定此用户为合法用户,4G中的双向鉴权到此完成。双向鉴权保证了网络的安全性,网络认证了终端是合法的,终端判定了需接入到的网络是可用的。
在完成双向鉴权之后,加密也即将开始了。MME:“既然我们已经互相认同,那么就要传输我们的小秘密喽,我使用的加密算法是abc。”终端回复:“deal,我也支持abc。”
5b. MME同时会向终端请求起设备的IMEI号——终端设备号——理论上也是全球唯一的。如果网络中部署了EIR,那么就需要进行IMEI也就是终端设备的合法性,通俗来说就是看看你的iPhone是不是山寨的。
- 由于在Attach Request中终端发送了ESM消息容器,MME此时将向终端索要Ciphered Options包括PCO(Protocol Configuration Options)消息,当然如果用户配置了用于PDN建立的重要APN信息也在此时上报给MME。
- MME收到终端ESM消息之后,需要进行新的一轮判定——APN合法性判断——以及用户注册信息的索取,去哪里索取?前边我们说了用户的所有信息都在HSS里,so~一条包含用户IMSI、MME Identity、 ME Identity、MME Capabilities、ULR-Flags等信息的ULR(Update Location Request)消息到HSS。
- 如果HSS中依然存有old MME的session,那么HSS收到New MME的ULR之后发送Cancel Location到old MME/SGSN并收到ACK的回复。
- 如果old MME/SGSN中有此用户的active session,那么old MME/SGSN给HSS回复Cancel Location ACK之后通过与GW的Delete Session Request/Response完成所有相关session的拆除,包括PCRF中可能存在的IP-CAN session。
- HSS将用户的注册信息(IMSI、Subscription data)通过Update Location ACK消息返回给new MME。其中Subscription Data包括了一个或多个PDN context、用户手机号MSISDN,每一个PDN context包含对应的APN、EPS subscribed Qos Profile(包括QCI)和对应APN-MBR,其中一个APN为此用户的默认APN。
- 当MME收到HSS的消息之后并检测到终端提供的APN也是HSS中注册的某一个APN,那么接下来就要完成万里长征的最重要的一步之一——打通罗马之路GTP Tunnel。
MME构建使用终端提供的APN或者HSS中定义的默认APN构建APN FQDN发起DNS查询PDN GW,构建TAI FQDN发起DNS查询Serving GW。并根据返回的PDN/Serving GW FQDN中的topon或者topoff来选择是否合设节点:
如果是topon的FQDN,那么MME选择topologically close的PDN/Serving GW,也就是合设节点当然也可以理解为我们规定的合设节点。
如果是topoff的FQDN,那么MME自由组合DNS返回的PDN和Serving GW。
- 终于准备工作完成,MME发起session建立请求的第一步CSRequest(Create Session Request)到Serving GW,其中CSRequest中包含IMSI, MSISDN, MME S11-C IP和TEID, PDN GW S5/S8-C IP, PDN Address, APN, RAT type(EUTRAN), Default EPS Bearer QoS, PDN Type, APN-AMBR, EPS Bearer Identity, Protocol Configuration Options, ME Identity, User Location Information (TAI/ECGI), UE Time Zone, Selection Mode, Charging Characteristics, Serving Network等信息。
- Serving GW收到CSRequest之后创建关于此用户的EPS Bearer信息表,然后发送CSRequest到PDN GW,其中CSRequest包含了大部分MME发送给Serving GW信息比如IMSI, MSISDN, APN, RAT type, Default EPS Bearer QoS, PDN Type, PDN Address, APN-AMBR, EPS Bearer Identity, Protocol Configuration Options, ME Identity, User Location Information (TAI/ECGI), UE Time Zone, Selection Mode, Charging Characteristics, Serving Network等,并加入自己的Serving GW S5/S8-C IP和TEID,以及自己的S5/S8 GTP-U IP和TEID。
此时,Serving GW中已经完成对此用户的资源分配包括S5/S8-Control/User面和S1-U面,并可以缓存任何来自PDN GW的下行数据包直到23步时收到MME的Modify Bearer Request来更新eNB分配的S1-U面资源。
- 如果网络中部署了PCRF和PCC策略,此时作为PCEF的PDN GW发起并完成IP-CAN session的建立和信息更新比如APN-AMBR、QCI、ARP等。
- PDN GW创建此用户的EPS bearer信息表,分配一个UE IP——PDN Address给终端用于网络通信,并生成Charging ID用于计费,此时PDN便可以处理用户的payload数据,并胜任在Serving GW和Internet中的payload转发工作。
PDN GW完成上述工作之后,回复CSResponse(Create Session Response)给Serving GW,其中包括PDN GW S5/S8-C IP和TEID, PDN GW S5/S8-U IP和TEID, PDN Type, UEIP-PDN Address, EPS Bearer Identity, EPS Bearer QoS, Protocol Configuration Options(DNS——用于用户访问Internet比如google时域名解析), Charging Id, , APN Restriction, Cause等信息。
- Serving GW收到PDN GW的CSResponse之后便可以回复CSResponse给MME,其中CSR中包含了PDN GW提供的信息如PDN Type, UEIP-PDN Address, EPS Bearer Identity, EPS Bearer QoS, PDN GW S5/S8-C IP和TEID, PDN GW S5/S8-U IP和TEID, Protocol Configuration Options(DNS), APN Restriction, Cause, APN-AMBR,并加入自己的Serving GW S11-C IP和TEID,Serving GW S1-U IP和TEID。
MME收到CSResponse之后更新本地用户信息。
- 由于终端request是一个联合附着,因此MME此时发送SGs接口的Location Update Request包括new LAI、IMSI、MME name和Location Update Type到MSC。
MSC收到消息之后完成CS域的鉴权认证等一系列工作之后创建关于此用户的CS域信息表并分配CS域的临时ID——TMSI。
然后将TMSI等信息通过Location Update Accept回复给MME,从而完成了此用户在CS域的注册。
- MME为了安全起见分配或重新分配4G网络中的临时ID——GUTI给此用户,到此MME终于打通了此用户的网络侧隧道并完成了资源准备。
MME将网络侧信息通过Attach Accept告知终端用户包括GUTI、TAI List、周期TAU时间、TMSI、EPS Bearer Identity、APN、UEIP-PDN Address、Protocol Configuration Option(DNS)、QCI、APN-AMBR等。
同时MME也发起Initial Context Setup Request包括 Serving GW S1-U IP以及TEI等信息到eNodeB。
- eNodeB收到MME的消息之后明白网络侧已待命,那么也马不停蹄的发送包含EPS Radio Bearer Identity的RRC Connection Reconfiguration message给终端,并转发Attach Accept消息给终端。
终端回复RRC Connection Reconfiguration Complete消息给eNodeB。
- 此时eNodeB也将给终端分配好的S1-U信息包括IP和TEID等信息通过Initial Context Response消息发给MME。
- 终端完成附着消息的最后确认之后封装Attach Complete信息通过Direct Transfer消息上报给eNodeB。
- eNodeB转发Attach Complete消息给MME。
- 一旦MME收到了eNodeB的Initial Context Response和终端的Attach Complete消息之后,New MME将EPS Bearer Identify、eNodeB S1-U IP和TEID等信息封装到Modify Bearer Request发送给Serving GW。
23a和23b.如果在Modify Bearer Request消息中包含Handover Indication,Serving GW需要发送含有Handover Indication的Modify Bearer Request消息给PDN GW从而使得PDN GW完成non 3GPP到3GPP的网络切换,PDN GW回复Modify Bearer Response给Serving GW。
- Serving GW回复Modify Bearer Response消息给MME来确认信息更新完毕,至此整个从eNodeB到Serving GW再到PDN GW的GTP Tunnel完全打通。
- 此时如果MME选择的PDN GW如果不在Step10 HSS下发的PDN Subscription context中或者不一致,New MME通过Notify Request消息将APN和对应的最新的PDN GW FQDN更新到HSS中。
- HSS存储APN和PDN GW FQDN信息,并回复Notify Response给MME。
到此,终端用户在4G网络中的通道全部打通,包括空口RRC连接和网络中的GTP Tunnel。
终于通往新世界的道路打通,我们可以继续前行了~发微信、上网、打电话、发短信、看视频,随心所欲~
如果大家有任何疑问和斧正,欢迎留言回复讨论~
以上信令整理参考:
3GPP 23.401 网络接入的第5.3.2.1章。
3GPP 23.272 Circuit Switched fallback的第5.2章。
3GPP 23.003 网络ID的GUTI和P-TMSI mapping。
3GPP 29.303 DNS相关。
之后应该会简单整理一下4G中的移动性管理(TAU和Handover)的信令消息,时间嘛,待定O(∩_∩)O哈哈~