关于VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事

转: http://support.huawei.com/huaweiconnect/forum.php?mod=viewthread&tid=93799

概述

VoLTE就像一位优雅的败家姑娘,千呼万唤使出来!难免有人会在VoLTE与VoIP之间打量对比。关于两者之间的对比分析太多,尽管如此,也是依然一头雾水。我们今天就从她们的前世说起,希望能够说清楚关于VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事…

从VoIP到VoLTE

观察家们认为VoIP的出现起始于1995年,那个时候GSM刚进入中国。20年来,VoIP语音服务和2/3G网络的CS语音业务一直共存。尽管两者都提供语音服务,但其技术原理是有本质的区别的。语音传输的本质实际上有两种形式:电路交换(CS,Circuited Switched)和分组交换(PS,Packet Switched)。

CS,是指通话前需在网络中建立一条线路,这是“独占”的资源,直到通话结束才拆除。

PS,是将数据打包传输,这就像快递打包一样,当你的物件被放进快递包后,快递员就不能拆包,必须完好无损的将包裹送到收件者手里,由收件者拆开,无需“独占”资源。

传统2/3G语音采用CS传输;VoIP采用PS传输,是将数据封包(Data Packet)的形式在IP网络上传输。

到了4G时代,4G所有的资源都用来跑数据,也就是说LTE只支持PS(分组交换),这时候必须将电话语音也变成数据,大家“共享”网络带宽速率,于是就引入了VoLTE。VoLTE本质上是承载于LTE网络上的VoIP,但也有很多区别。

首先,我们从VoIP说起。

VoIP是如何建立双方通话的呢?现实生活中,我们想找别人谈话,通常分为:对话建立— 对话 — 对话结束,三个步骤。以老王和小明的对话为例:

1
2
3
4
5
老王想找小明帮他修手机:

老王:Hi,小明!

小明:什么事?老王!

这就是现实生活中的对话建立过程,老王的“Hi,小明!”是向小明发起对话请求,小明的“什么事?老王!”是对老王的对话请求的响应。

现在他们开始谈论修手机的事,这是双方的对话内容。

1
2
3
4
5
对话结束时:

老王:谢谢,小明!再见!

小明:再见!

这是对话的结束过程。同样,老王的“谢谢!小明!再见!”是向小明发起对话结束请求,小明的“再见!”是对老王的对话结束请求的响应。

如果老王和小明的对话,通过模拟/数字转换、编码、封装后打包成IP数据包后,再通过IP网络传送,这就叫VoIP。老王和小明的对话实际上会打包成两种类型的数据包:信令包和媒体包。

“Sayhello”和“Say goodbye”那部分被封装成信令包,而具体谈话内容被封装成媒体包,它们都通过数据包传送到对方。

IP网络中建立对话比现实生活要复杂得多,要在IP网络建立对话,通话双方必须知道对方地址,怎样编码,如何封装数据包…等等,所以大家必须遵守一个统一的规则,这就引入了SIP协议。

SIP,Session Initiation Protocol,会话发起协议,用于建立、修改和终止IP网上的双方或多方的多媒体会话,类似于HTTP的基于文本的协议。VoIP的信令包就是根据SIP协议封装的。

SIP消息分两种:请求消息(比如INVITE)和响应消息,响应包括一个最终响应及可能的多个临时响应。

所以,整个VoIP通话过程是这样的:

VoIP通话

一个完整的SIP网络还需要加一些功能实体,这些功能实体包括:

1.User Agents - 用户代理

发起和终止会话的实体,比如电话终端。

2.SIP服务器

SIP服务器包括:登记服务器,代理服务器,位置服务器和重定向服务器。

Registrar Server - 登记服务器

接收REGISTER 请求完成用户注册,可以支持鉴权的功能。

Proxy Server - 代理服务器

对SIP请求及响应进行路由,它对收到的请求消息进行翻译和处理后,传递给其他的服务器。它与重定向服务器(Redirect Server)及位置服务器(Location Server)有联系。

Location Server - 位置服务器

跟踪用户的位置,代理服务器或重定向服务器从位置服务器获取被叫当前可能的位置信息。

Redirect Server - 重定向服务器

将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。与代理服务器proxy server不同的是, redirect server不会发起自己的呼叫。与User Agents不同的是, redirect server不接受呼叫终止或主动终止呼叫。

它们之间是如何相互工作的呢?举一个简单的例子。

当老王的终端要呼叫小明的终端,老王的终端是怎么知道小明终端的IP地址的呢?

怎么知道小明终端的IP地址的呢

老王和小明的终端在接入网络时,首先会向Registrar Server发送 REGISTER 请求注册,Registrar Server根据请求信息建立用户标识与终端 IP 地址的对应绑定关系。

老王拨打小明的电话时,老王向Location Server发送含有小明的统一资源标识符地址的 INVITE请求。(统一资源标识符称作 SIP URI。SIP URI 很像一个 E-mail 地址,典型的统一资源标识符包括一个用户名和主机名。)

由于老王和小明的终端都已经在Registrar Server注册,并建立用户标识与终端 IP 地址的对应绑定关系。Location Server就向Registrar Server查询,此时,Registrar Server就根据INVITE请求中的小明的统一资源标识符地址查找到小明的IP地址,这样就可以生成路由信息,联系到小明,并回应老王,建立通话。

SIPProxy Server、RedirectServer、Register Server、LocationServer可共存于一个设备,也可以分布在不同的物理实体中。

有了VoIP和SIP的基础认识,现在我们来聊一聊VoLTE。

VoLTE引入了IMS。IMS(IP Multimedia Subsystem),即IP多媒体子系统,它提供多媒体IP服务,包括VoIP。

因为LTE网络只传送数据包,所以,LTE把语音和相关信令看成和其它数据一样,都打包于数据包传输(只是具有更高的优先级);IMS网络接收处理这些数据包,并区分这些数据包的信令和语音数据部分,管理语音的控制面(IMSsignalling)和用户面(IMS traffic)。

和VoIP一样,IMS管理的数据包分为:信令包(控制面)和媒体包(用户面)。IMS管理信令部分的功能实体就相当于SIP服务器,负责用户面的就是媒体网关。这样,整个IMS网络结构可以简化两部分:SIP Server 和 媒体网关。

SIPServer也类似于2/3G网络的MSC。

实际上,IMS是一个在应用层上的网络,它工作于2G,3G,4G,甚至WiFi网络等之上,其包含了很多实体、接口、协议等。IMS具体的网络构架大概是这样:

IMS干的第一件是,就是加入了一个HSS子服务(Home Subscriber Server),这个是什么东西呢?SIP虽然也分为注册服务器Register Server、呼叫代理服务器Proxy Server,但SIP的注册服务器只是记录一下一个SIP账号的当前的IP地址数据、认证一下账号密码是不是正确;但IMS里的HSS就不简单了,他是在SIP的注册服务器基础上,增加了一个很明显的运营商特征——业务订购数据库,也就是在移动开手机卡时,那一堆附加增值服务,好了,你在这里可以看到来电显示业务、呼叫等待业务、彩铃业务……的开关——也意味着收费的计费点。

因为VoIP很简单,一般是企业内部用,或者小规模的虚拟运营商在有限的几台服务器上提供服务,所以VoIP的SIP软件、SIP电话机网关就可以直接通过IP地址和账号就能注册上去,然后呼叫在多台服务器上互相路由就可以完成呼叫的目的了,这些服务器,一般就是SIP Proxy Server,涉及到和固定电话、手机号码互通时,会有FXO网关,E1网关等负责转换,这里不多说了。

而IMS作为运营商的方案,动辄上亿用户规模,而且又分为各省市地分公司,当然,还有一个不得不提的 — 漫游。

IMS的核心是SIP,所以类似SIP ProxyServer这么重要的核心组件,IMS是不会少的,IMS里称它为Call Session Control Function,即CSCF,并且又把它分成了多个子系统,其中代理CSCF(P-CSCF)从用户终端角度看,基本就是SIP里的Proxy Server了(但其实不是,下述),负责直接与IMS的终端(类似SIP的软电话、硬件电话等等,但同样的,也扩展了不少东西,这里跳过不述);P-CSCF直接与终端交互,可能会把SIP进行压缩或者加密,然后就交给查询CSCF(I-CSCF),I-CSCF会查询HSS数据,来对用户名和密码进行认证,当然,他也从HSS里查询你是否欠费了,开通或关闭了某些业务,以及你是从哪个P-CSCF来的,用来判断你是不是漫游。

整个呼叫过程中,P-CSCF是不做复杂工作的,P-CSCF只负责接收SIP消息,它相当于是对外联络点,然后SIP消息会到达I-CSCF,I-CSCF是运营商的核心网络——就是运营商内部网络的入口,他会根据HSS查找到用户是属于哪个地区的,会对应分配一个空闲的为该地区服务的服务CSCF(S-CSCF),一直到了这里,S-CSCF才是真正的VoIP里Proxy Server的角色,S-CSCF完成用户注册认证和呼叫的路由处理,以及电话业务的触发(IMS称为AS,另外独立成一个子系统,下述)。

所以如果综合来分析,P-CSCF和I-CSCF只是起到一个边界安全防护SBC服务器和负载平衡、服务器分流这一类功能,真正处理SIP注册和呼叫的原先VoIP里标准逻辑的组件,是S-CSCF,从物理上看,P-CSCF可能是全国或省一级中心统一的服务器集群,配合更多的I-CSCF服务器分布在主干核心网上做分流,背靠一个大的HSS服务器群,将不同市县的用户分配到各地的S-CSCF上进行实际的处理,并且S-CSCF会更多地与当地的通讯机房里原有的2G、3G发生交流,也就是媒体网关(MGW),负责把新的走4G的手机终端和旧的3G、2G以及固定电话之类的对接起来,保持兼容(也就是PS、CS域的互通)。

所以,一个最最精简的IMS系统,它的核心组件是包含HSS、CSCF(P、I、S)即可,即把VoIP SIP的核心Register和ProxyServer进行按运营需求的发展。

而MGW,其实就是市面上大量被使用的VoIP的模拟网关,数字中继网关,而已……当然,运营商对稳定性要求需要更高一些,并且需要额外的集中管理和控制能力。

但如果上了4G也只是为了提供和原来类似的语音通话功能,运营商的面子还是挂不住的,得与时俱进,提供一些IM服务,面向个人用户,所以一般还要加一个Presence Server,推送服务器,离线存储服务器等云的概念,提供的无非是类似qq或微信的功能了。

同样的,通信不只是面向个人的,也要面向企业,所以上面也提到了AS子系统,即Application Server,其实就是现在的通信行业内的增值方案服务供应商了,一般就是提供例如电话会议、语音留言,企业语音导航IVR,电话呼入自动分配ACD等等;

就这样,VoIP发展成为具备运营商级的VoLTE。

从CS语音到VoLTE

2/3G网络语音业务是通过传统CS域传送,而VoLTE传送的是语音数据包,运营商网络将长期2G/3G/LTE共存,如何保证语音通话在多网络结构中的连续性呢?

我们看到,LTE(EPC)并没有直接链路连接到CS网络(紫色部分),也没有媒体网关连接到CS网络,所以,此时的LTE网络并不支持CS语音。同样,在未引入IMS之前,早期的LTE网络也不支持IP语音。

为了让用户在LTE网络下能够拨打语音电话,主要有三种解决方案:

  • VoLGA(LTE通用访问传送语音)

  • CSFB(电路域回落)

  • VoLTE

VoLGA

VoLGA方案是在网络中加入一个VNC (VoLGA Network Controller,VoLGA网络控制器),其功能相当于2G网络的BSC和3G网络的RNC,它直接与GSM MSC和UMTS MSC通信。

VNC负责在MSC和LTE网络之间协调语音和其它相关消息。不过,由于成本投入问题和VoLTE的快速发展,VoLGA方案已被3GPP放弃。

CSFB

当VoLTE还未到来之前,CSFB为LTE网络提供语音业务的过渡解决方案。

CSFB(Circuit Switched Fallback),电路域回落,顾名思义,就是UE驻留在LTE网络时,当需要完成语音业务时再回落到2G/3G网络的CS域。当在2G/3G网络完成呼叫后,重新返回LTE网络。

为了支持CSFB,需引入一个新的网络接口:SGs,该接口连接MME和2/3G网络的MSC。

CSFB-注册和位置

当UE开机时,会注册两个网络:LTE网络和传统2/3G网络。为了快速的转移到传统2/3G网络,网络需要知道UE的位置,为此,负责追踪UE位置的MME会不断的通过新引入的SGs接口向MSC提供位置信息。SGs消息支持移动性管理,寻呼和SMS。

CSFB-主叫

当主叫发生在LTE网络时,UE会发送一条SRM(Service Request Message)给MME,MME通知eNodeB“转移”UE到2/3G网络。在执行“转移”之前,eNodeB会要求UE对邻近的2G/3G网络进行RF测量,以决定将UE转移到信号最好的2/3G小区上。一旦UE进入2/3网络,开始在2/3G网络下进行呼叫控制流程。

CSFB-语音呼叫与数据连接

当UE正在LTE网络中上网(数据连接)时,突然决定要拨打电话,怎么办?通常有两种选择:

1)将数据业务转移到3G网络

2)暂停数据业务,直到UE返回LTE网络

看起来第一种选择还不错,不过,需要考虑“切换”到3G网络后数据速率下降影响用户感知,另外,3G网络可能会因资源不足等原因拒绝IP对话。不支持数据业务“切换”到2G网络,这种情况下,暂停数据业务。

CSFB-被叫

当被叫发生在LTE网络时,MSC将呼叫请求通过SGs发送寻呼消息给相关MME,这一消息被转发给UE,然后,UE发送SRM (Service Request Message) 消息给MME,MME通知eNodeB“转移”UE到传统2/3G网络。

CSFB-CS语音呼叫结束

当CSFB的CS通话结束后,通常会通过空闲态重选会LTE网络。运营商需要根据网络规划及实际覆盖情况配置相关参数。

VoLTE

VoLTE即4G语音的终极解决方案,它需要引入IMS网络,其网络结构如下:

关于VoLTE,上文已经讲了很多。这里主要介绍一下SRVCC。

SRVCC(Single Radio Voice Call Continuity)是3GPP提出的一种VoLTE语音业务连续性方案,主要是为了解决当单射频UE 在LTE网络和2G/3G CS 网络之间移动时,如何保证语音呼叫连续性的问题,即保证单射频UE 在IMS 控制的VoIP 语音和CS 域语音之间的平滑切换。

当我们正在LTE网络下VoLTE通话时,移动到了LTE覆盖盲区,此时只有2/3G网络覆盖,为了不至于掉话,保持通话的连续性,我们需要将通话“切换”到2/3G网络,这个时候就要用到SRVCC。

为了支持SRVCC,IMS网络需引入一个应用服务器 — SCC AS (Server Centralization and Continuity Application Server),这个应用服务器管理“切换”过程中的信令。

带SCC AS的VoLTE网络结构

我们来看一个简单的SRVCC 切换流程(以SRVCC到GSM为例):

SRVCC

当UE在LTE网络进行IMS语音呼叫,随着用户的移动,UE移出LTE网络的覆盖区域,此时LTE信号越来越弱,UE发送测量报告给EnodeB,EnodeB判定需向GSM进行SRVCC 切换,EnobeB向MME发送切换请求(需说明该切换为SRVCC类型)。

一个新的呼叫请求被发送到IMS,该呼叫请求包含STN-SR号码(STN-SR是存储在HSS的由每一台UE生成的唯一号码,该号码在UE首次接触网络时由MME发送给HSS)。

当IMS接收到STN-SR号码后,SCCAS确认相应的呼叫应转移到GSM网络,开始将的IMS语音平滑切换至GSM。

当GSM资源准备好之后,MME向EnodeB发送切换命令消息。

EnodeB向用户终端发送切换命令消息,消息包含目标小区信息。

最后一步,UE检测GSM网络,并重新建立呼叫于GSM网络。

SRVCC切换完成。

不仅是语音数据包,其它数据包也可以用这种方法完成LTE向3G网络的转移。

为了提升SRVCC切换性能,3GPP R10还引入了eSRVCC (SRVCC enhancement) ,这一基于IMS的锚定解决方案还引入了 ATCF (Transfer Control Access Function ) 和ATGW (Transfer Access Gateway)两个新的功能实体。eSRVCC在保证语音呼叫连续性的同时,尽可能地减小了切换时延,将时延控制在人类所能感知的范围之内,使正在进行的通话不会感觉到有中断的迹象。

具体来说,信令是从UE通过EPC网络到P-CSCF(Proxy-Call Session Control Function,代理呼叫会话控制功能),再锚定到拜访地的ATCF(Access Transfer Control Function,接入转换控制功能),然后连接到S-CSCF(Serving-Call Session Control Function,服务呼叫会话控制功能)和SCC AS,再通过SCC AS同远端用户建立连接;此时的媒体连接是UE通过EPC网络锚定到拜访地的ATGW(Access Transfer Gateway,接入转换网关),再由ATGW连接到远端的媒体网关。这里的两个关键网元:ATCF和ATGW,就是eSRVCC比SRVCC可以缩小通话时延的关键所在哦。

最后一个问题,

VoIP,VoLTE和VoWiFi的区别

因为LTE是只传送数据的网络,而WiFi也一样传送数据,有人就想,能不能像VoLTE一样,把WiFi作为接入网,接入IMS呢?当然可以。

下图是VoLTE和VoWiFi并存的4G网络结构图,绿色部分叫可信任WiFi(运营商自己的WiFi),红色部分叫不可信任WiFi(比如,你家里的WiFi或星巴克里的公共WiFi)。当然,你也看到了,不管是可信任的WiFi还是不可信任的WiFi,它们最后都接入了IMS域。

所以,VoWiFi 和VoIP是有区别的。有人以为VoWiFi就是基于WiFi上的VoIP,这并不准确!正如上图中所示,VoWiFi只是将WiFi作为接入网,最终是要接入IMS的,它是运营商可以控制和管理的IP语音服务。

网络采用IMS来控制和管理语音数据包后,IMS就像一个交通警察,专门把守在那里为语音数据包或者其它实时数据流(比如视频电话或在线游戏等)开绿灯。

IMS为每一个数据连接分配一个代码,叫QoS(quality-of-service) class identifier,或者叫QCI,这个QCI确定了每个数据连接的优先级。QCI被存储在路由表里,描述了传输要求,包括最大时延、可接受的丢包数量、是否要求保证速率。比如,视频电话,QCI为1,这就要求,无论网络是否拥挤,必须保证99.99%的数据包在100ms内到达目的地。而通常的Internet 数据,比如e-mail 或浏览网页,被分配一个较低的优先级,QCI为8或9. 路由器根据QCI对数据包序列排队,这样就防止了VoLTE 数据包卡在交通堵塞的道路上。当然,VoLTE还有一些技术优势,这里就不一一介绍了。

关于VoIP,由于数据分组交换遵循“谁先到,谁先服务”的原则,语音包和数据包混在一起传输,不能保证语音包的优先级别,这就会引起丢包和时延问题,无法确保语音质量。由于语音包并没有受到更好的保护,它们和其它数据包一样,遵循着“尽力而为”的原则在网络里传输,所以VoIP无法保证通话质量的稳定性,这也是VoIP电话的语音质量时好时坏的原因。不过,随着这几年宽带的提速,VoIP的通话质量也在逐渐改善。