热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

移动数据通信网络工作原理(SGSN&GGSN)

最近公司在做移动网络的优化和治理工作,借这个机会,好好学习了下移动网络底层传输的工作原理,并将结果分享出来。1移动网络的演进2GPRSUMTS网络架构2.1无线接入网RAN2.2无

最近公司在做移动网络的优化和治理工作,借这个机会,好好学习了下移动网络底层传输的工作原理,并将结果分享出来。

  • 1 移动网络的演进
  • 2 GPRS/UMTS网络架构
    • 2.1 无线接入网RAN
    • 2.2 无线核心网CN
    • 2.3 GTP隧道协议
  • 3. 无线核心网工作原理
    • 3.1 分组业务会话连接建立
    • 3.2 分组会话传输
    • 3.3 分组会话结束
  • 4. 移动网络优化建议
    • 4.1 APP节约用电
    • 4.2 服务端推送优于客户端轮询
    • 4.3 面对多网络瞬态变化的现实
  • 5. 根据移动通信原理解释常见的网络疑问
1 移动网络的演进

GSM(Global System For Mobile Communications)是第一代移动通信网络,也就是常用的2G移动电话系统。其做出的改变是将信令和语音信道都转换成数字式的。
GPRS(General Packet Radio Service)是第二代移动通信系统,在GSM的基础上,采用分组交换传输数据的高效率方式,利用“包交换”(Packet-Switched)将数据封装成许多独立的封包,再将这些封包一个一个传送出去,效率比GSM高的多,因为这样做,只有在需要传输时,才会占用带宽。GPRS核心网元包括SGSN(Serving GPRS Support Node)和GGSN(Gateway GPRS Support Node)
UMTS(Universal Mobile Telecommunications System)在GPRS的基础上,引入了WCDMA空中接口技术,“空中接口”相对于有线通信中的线路接口,是基站和移动电话之间的无线传输规范,它定义每个无线信道的使用频率。UMTS被称为第三代移动通信系统。同时,GPRS/UMTS也成为了一个完整的3G移动通信技术标准。
LTE(Lang Term Evolution)是目前普遍应用的4G通信的主流技术,原有3G核心网的SGSN和GGSN功能归并后重新被划分,生成新的逻辑网元:移动管理实体(MME)和服务网关(Serving Gateway)。换言之,3G和4G核心网络的逻辑架构是不同的,演进过程中需要对SGSN和GGSN的软硬件进行升级。
综上所述,GPRS/UMTS起到了承前启后的作用,其工作原理与机制也被4G、5G所沿用并优化。因此我们详细来看GPRS/UMTS系统。

2 GPRS/UMTS网络架构

简单来说,GPRS/UMTS的网络架构主要包括两部分:无线接入网络(RAN)和核心网(CN)。如下图所示:
《移动数据通信网络工作原理(SGSN&GGSN)》

2.1 无线接入网RAN

无线接入网(Radio Access Network),简称RAN。RAN中包括的设备包括有:基站(Node B)和无线网络控制器(RNC),主要的功能就是控制用户通过无线接入到移动通信网络中来。
其中,基站的作用是为了数据的无线传递,而RNC主要用于管理和控制它下面的多个基站,并决定接入到核心网。

2.2 无线核心网CN

现阶段,3G核心网由电路域(CS域)和分组域(PS域)两部分组成,分别负责传统语音业务和分组域业务(数据和多媒体业务),我们只看PS域。
PS核心网主要由SGSN和GGSN两部分组成。统称为GSN,GSN的功能包括:

  1. 过滤和用户访问控制:通过数据包过滤功能过滤出未经授权和未经请求的消息,所有这类消息由用户控制处理。在用户请求访问外部分组数据网之前,可以发起对用户身份的鉴权流程。
  2. 计费:收集必要的话单数据,以支持按照签约付费或者按照流量付费。
  3. 中继:把从一个节点收到的数据转发到路由表指定的下一个节点。
  4. 路由:路由功能按照消息的目的地址决定转发的下一个节点,并选择传输路径。
  5. 地址转换和映射:地址转换是把一个地址变成不同种类的一个地址,比如把一个分组数据网络协议地址变成一个内部网络地址,使得该数据能在内部网络上路由。地址映射是把一个地址变成相同种类的另一个地址,以便在内部网络上路由和中继。
  6. 封装:封装是在一个数据单元上增加地址和控制信息,以便在内部网络或者之间的网络上路由。去封装是把地址和控制信息,从数据包上去掉,以恢复原始数据单元。
  7. 隧道:隧道功能是在内部或之间的网络上把封装后的数据从一个封装点传送到另一个去封装点。一个隧道一条双向点到点的路径。只有隧道端点能够识别。
  8. 移动性管理:移动性管理功能用于在内部或之间,跟踪移动台当前的位置

SGSN

SGSN主要用于为在其地理范围内的移动站传递数据包,相当于无线网络中的路由节点。它可以进行分组路由和转发,移动性管理(附着,去附着和位置管理),逻辑链路管理,鉴权以及计费功能。SGSN的位置寄存器保存着位置信息,比如当前的小区。
SGSN的主要功能包括:
1 完成和GGSN的通信,通过GTP协议将用户数据传递给GGSN,并将GGSN返回的数据传递给用户
2 当用户地理位置发生变化,执行移动性管理。

GGSN

GSGN作为整个GPRS/UMTS网络的网关,位于GPRS网络和外部分组交换网络(Internet)之间。网关的作用能将一种协议格式的数据转换为另一种格式的数据。
GGSN把来自的SGSN的GPRS数据包转化为适当的分组数据协议格式,比如IP,然后再把它们发送到相应的分组数据网络,比如广域有线网。反之亦然。

SGSN和GGSN的区别

所以,GGSN和SGSN的主要区别就在于,GGSN作为网关,是在不同的通信网中转换协议,而SGSN作为路由,只是在使用相同协议的网络中发送、接受以及延迟它的数据包。
另外,GGSN能够实现地址的转换,比如把无线网络内部地址(PDP地址)转换为一个分组数据网络协议地址(IP地址),而SGSN只能实现PDP地址映射,即根据一个地址,映射到相同种类的另一个地址。可见,我们常说的3、4G网络的IP地址,其实就是对应GGSN的出口IP地址

2.3 GTP隧道协议

GTP协议为GPRS/UMTS分组域核心网中的SGSN和GGSN之间的信令和用户数据提供隧道。隧道协议能够将其他协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便在不同网络下传递被封装的负载数据
GPRS隧道通过GTP协议封装了含有终结点标识TEID的头,用于实现路由以及多路复用。在核心网内部通过GTP协议通信,在外部数据网侧是TCP协议或者UDP协议通信,所以数据报在这两种网络间交互需要对数据报头进行处理(SGSN、GGSN都可以实现)。进入核心网时需要对数据报进行加GTP头处理,反之,则需要对数据报进行去GTP头处理。
《移动数据通信网络工作原理(SGSN&GGSN)》

3. 无线核心网工作原理

在GPRS/UMTS分组域核心网中,通过PDP上下文(Pocket Data Protocol, 分组数据协议)来管理用户从移动终端到GGSN及外部分组数据网的数据路由信息。PDP上下文的数据分别存储在移动终端、SGSN和GGSN中。移动用户需要使用分组数据业务时,需要先执行激活PDP上下文,激活成功后,在移动终端、SGSN和GGSN中就增加了一条新的PDP上下文记录,根据这条记录信息,SGSN和GGSN才能正确地路由和转发用户数据
所以,一个完整的分组业务过程包括三个阶段:

  • 分组域会话连接建立阶段:用户在移动终端一侧发起激活PDP上下文的请求,GPRS/UMTS接受用户的请求并建立新的PDP上下文。PDP上下文包含了映射和路由信息,用于在移动台和GGSN之间转发数据;
  • 分组域会话阶段:用户得到PDP上下文建立成功的确认后,开始使用外部分组数据网络提供的数据业务(简单说,开始使用互联网Internet服务)。GPRS/UMTS网络在移动终端和互联网之间透明地路由并转发分组数据,同时,提供数据封装功能(GTP),保证在不同网络环境下,数据与路由的正确性。
  • 分组域会话结束连接阶段:当用户不再需要使用上述数据业务时,GGSN释放PDP地址。

3.1 分组业务会话连接建立

如下图所示,移动终端发送PDP激活请求消息给SGSN,SGSN验证PDP类型,根据地址转发到GGSN。GGSN在PDP上下文表中加入一条新的记录,这条新的记录允许GGSN在SGSN和互联网之间正确地路由通信。
GGSN返回一条响应消息给SGSN,SGSN更新自己的PDP上下文表,可以在GGSN和移动终端之间正确的路由通信。并发送响应告知移动终端建连成功。
《移动数据通信网络工作原理(SGSN&GGSN)》

3.2 分组会话传输

当PDP上下文成功建立后,该用户就可以通过GPRS/UMTS网络,在移动终端使用分组数据网提供的各种应用程序,如HTTP、FTP、邮件和流媒体业务。
《移动数据通信网络工作原理(SGSN&GGSN)》

3.3 分组会话结束

当用户不再使用业务时,移动终端发送去激活消息给SGSN。SGSN发送删除PDP上下文请求给GGSN,GGSN删除PDP上下文,并返回消息给SGSN。SGSN将去激活响应消息再返回给移动终端。
《移动数据通信网络工作原理(SGSN&GGSN)》

4. 移动网络优化建议

移动网络传输的特性对我们的性能策略提出了新的、独特的要求。应用层协议虽然相同,但物理传输层的差别却有很多限制,如果对这些限制估计不足,就会导致响应速度慢、延迟时间摇摆不定,最终导致用户体验大打折扣。
底层的无线传输优化必须依赖于运营商,作为应用程序提供方,参考《Web性能权威指南》,我们可以做的事情包括:

4.1 APP节约用电

手机无线电模块的耗电量仅次于设备的屏幕,全功率打开无线电模块只消几小时就可耗尽电量。我们应该尽最大可能在无线电开启时传输数据,而尽量把唤醒无线电以传输数据的次数减到最少。
这里提供给开发和测试一款开源工具,可以用于测试和评估应用程序的耗电量:Application Resource Optimizer(ARO,应用资源优化器)工具包。
《移动数据通信网络工作原理(SGSN&GGSN)》
ARO包含两个组件:收集器和分析器。其中,收集器是一个后台Android应用(可以在手机或模拟器中运行),用于捕获传输的数据分组、无线模块活动息及其他与手机的交互行为。要想记录用电情况,可以打开收集器,点击记录,使用应用,然后将记录结果复制到系统中。
得到记录结果后,可以通过分析器打开它,从而得知无线电状态、电量消耗、应用的通信模式等信息。另外,分析器有一个很不错的功能,即针对常见的性能陷阱提供建议,比如没有压缩、重复传输数据,等等。

4.2 服务端推送优于客户端轮询

轮询在移动网络中代价极高,少用,尽可能使用推送和通知,且要控制推送频率。一般来说,推送比轮询效果更好。但频率过高的推送与轮询也不相上下。
对推送而言,原生应用可以访问平台专有的推送服务,因此应该尽可能使用。对Web应用来说,可以使用SSE(Server Sent Events,服务器发送事件)和WebSocket以降低延时间和协议消耗,尽可能不使用轮询和更耗资源的XHR技术。

4.3 面对多网络瞬态变化的现实

即便用户手里拿着最新的手机,也需要不断在4G、3G,甚至2G网络之间切换。我们的应用必须接受这些接口变化,作出相应调整:

  • 不要缓存或试图猜测网络状态;
  • 调度请求、监听并诊断错误;
  • 瞬态错误总会发生,不可忽视,可以采取重试策略;
  • 监听连接状态,以便采用最佳请求方式;
  • 对重试请求采用补偿算法,不要永远循环;
  • 离线时,尽可能记录并在将来发送请求;
  • 利用H5的AppCache和localStorage实现离线应用。
5. 根据移动通信原理解释常见的网络疑问

了解了移动数据核心网络的架构和工作原理后,对我们分析用户常见的一些网络现象和问题帮助很多,比如说:
场景一:在同一个地区,使用同一个运营商的同一个基站的用户出口IP是否相同?
不相同,正如我们上面说的,基站的作用其实仅仅是无线数据的传递(只涉及到物理层和数据链路层),而真正决定用户出口IP的是GGSN(GGSN将无线地址转换成IP地址)。而每个地区运营商的GGSN,使用的不只一个IP地址,而是一个IP地址池。
所以同地区运营商的用户,IP地址不同,但会处于一个网段中。同时,每个用户的IP在一定时间内会变换(GGSN会从地址池中更新IP)
场景二:为什么手机漫游到外省后上网却显示归属地 IP?
比如用户是上海联通的,来到南京,显示的仍是上海联通的IP。
漫游用户接入互联网的方案有两种:1. 归属地接入方式,2. 漫游地接入方式。苹果手机默认使用归属地接入方式。
归属地接入方式就是无论用户漫游还是在本地,最终都是通过归属地的GGSN连接到互联网的。归属地接入方式的好处就是各省之间的计费话单对账方便,缺点就是增加了时延。
漫游地接入方式顾名思义就是直接使用漫游地运营商的GGSN/P-GW接入Internet,此时用户所使用的公网IP地址就是漫游地的IP地址。漫游地接入方式的优点就是省去了数据可能要绕大半个中国甚至大半个地球的麻烦,有利于降低时延,节省长途链路资源等等。
场景三:漫游手机用户的网络问题应该如何排查?
漫游手机用户的网络问题肯定是由于漫游地运营商网络造成的。而如果采用归属地接入方式的话,网络问题有可能是归属地运营商网络造成,也有可能是由漫游地的SSGN无线核心网造成的。


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 本人新手,用Unity3D想做一个简单的赛车游戏,现在的问题是转弯的时候很容易出现翻车的情况,求解决思路比如说你的中心是在(0,0,0),你把他设置成(0,-1.0,0)之类的就可 ... [详细]
author-avatar
rvr4845591
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有