概念
SIP:Session Initiation Protocol,它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。
VoIP: VoIP的完整名字是Voice over Internet Protocol,翻译过来就是因特网语音,可以简单理解为一种用因特网系统代替传统电话通讯系统进行语音通话的技术,基于SIP协议。
VoWifi: 终端使用无线作为接入点 ,连接到运营商的IMS进行通话
VoLTE:使用LTE网络,接入IMS进行通话
相同点:
VoIP、VoWifi、VoLTE都是使用PS域进行分组交换
区别:
通话质量:VoLTE>VoWifi>VoIP
一、CS和PS
VoIP(Voice over IP)的出现起始于1995年,那个时候GSM刚进入中国。20年来,VoIP语音服务和2/3G网络的CS语音业务一直共存。尽管两者都提供语音服务,但其技术原理是有本质的区别的。语音传输的本质实际上有两种形式:
- 电路交换(CS,Circuited Switched)
- 分组交换(PS,Packet Switched)
CS,是指通话前需在网络中建立一条线路,这是“独占”的资源,直到通话结束才拆除。
PS,是将数据打包传输,这就像快递打包一样,当你的物件被放进快递包后,快递员就不能拆包,必须完好无损的将包裹送到收件者手里,由收件者拆开,无需“独占”资源。
下面这张图说明了两者的区别:
image.png
传统2/3G语音采用CS传输;VoIP采用PS传输,是将数据封包(Data Packet)的形式在IP网络上传输。
到了4G时代,4G所有的资源都用来跑数据,也就是说LTE只支持PS(分组交换),这时候必须将电话语音也变成数据,大家“共享”网络带宽速率,于是就引入了VoLTE。VoLTE本质上是承载于LTE网络上的VoIP,但也有很多区别。
二、VoIP和SIP
VoIP是如何建立双方通话的呢?现实生活中,我们想找别人谈话,通常分为:对话建立— 对话 — 对话结束,三个步骤。以老王和小明的对话为例:
老王想找小明帮他修手机:
老王:Hi,小明! 小明:什么事?老王!
这就是现实生活中的对话建立过程.
老王的“Hi,小明!”是向小明发起对话请求,小明的“什么事?老王!”是对老王的对话请求的响应。
现在他们开始谈论修手机的事,这是双方的对话内容。
...对话内容...
对话结束时:
老王:谢谢,小明!再见! 小明:再见!
这是对话的结束过程。
同样,老王的“谢谢!小明!再见!”是向小明发起对话结束请求,小明的“再见!”是对老王的对话结束请求的响应。
如果老王和小明的对话,通过模拟/数字转换、编码、封装后打包成IP数据包后,再通过IP网络传送,这就叫VoIP。老王和小明的对话实际上会打包成两种类型的数据包:信令包和媒体包。
image.png
如上图所示,“Say hello”和“Say goodbye”那部分被封装成信令包,而具体谈话内容被封装成媒体包,它们都通过数据包传送到对方。
IP网络中建立对话比现实生活要复杂得多,要在IP网络建立对话,通话双方必须知道对方地址,怎样编码,如何封装数据包...等等,所以大家必须遵守一个统一的规则,这就引入了SIP协议。
SIP,Session Initiation Protocol,会话发起协议,用于建立、修改和终止IP网上的双方或多方的多媒体会话,类似于HTTP的基于文本的协议。VoIP的信令包就是根据SIP协议封装的。
SIP消息分两种:请求消息(比如INVITE)和响应消息,响应包括一个最终响应及可能的多个临时响应。
具体协议这里就不介绍了,附一张流程图:
image.png
所以,整个VoIP通话过程是这样的:
image.png
一个完整的SIP网络还需要加一些功能实体,这些功能实体包括:
image.png
User Agents - 用户代理
发起和终止会话的实体,比如电话终端。
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地址的呢?
image.png
老王和小明的终端在接入网络时,首先会向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地址,这样就可以生成路由信息,联系到小明,并回应老王,建立通话。
SIP Proxy Server、Redirect Server、Register Server、Location Server可共存于一个设备,也可以分布在不同的物理实体中。
三、VoLTE
有了VoIP和SIP的基础认识,现在我们来聊一聊VoLTE。
VoLTE引入了IMS。IMS(IP Multimedia Subsystem),即IP多媒体子系统,它提供多媒体IP服务,包括VoIP。
因为LTE网络只传送数据包,所以,LTE把语音和相关信令看成和其它数据一样,都打包于数据包传输(只是具有更高的优先级);IMS网络接收处理这些数据包,并区分这些数据包的信令和语音数据部分,管理语音的控制面(IMS signalling)和用户面(IMS traffic)。
和VoIP一样,IMS管理的数据包分为:信令包(控制面)和媒体包(用户面)。IMS管理信令部分的功能实体就相当于SIP服务器,负责用户面的就是媒体网关。这样,整个IMS网络结构可以简化两部分:SIP Server 和 媒体网关。
image.png
实际上,IMS是一个在应用层上的网络,它工作于2G,3G,4G,甚至WiFi网络等之上,其包含了很多实体、接口、协议等。IMS具体的网络构架大概是这样:
image.png
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 Proxy Server这么重要的核心组件,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和Proxy Server进行按运营需求的发展。
而MGW,其实就是市面上大量被使用的VoIP的模拟网关,数字中继网关,而已……当然,运营商对稳定性要求需要更高一些,并且需要额外的集中管理和控制能力。
但如果上了4G也只是为了提供和原来类似的语音通话功能,运营商的面子还是挂不住的,得与时俱进,提供一些IM服务,面向个人用户,所以一般还要加一个Presence Server,推送服务器,离线存储服务器等云的概念,提供的无非是类似qq或微信的功能了。
同样的,通信不只是面向个人的,也要面向企业,所以上面也提到了AS子系统,即Application Server,其实就是现在的通信行业内的增值方案服务供应商了,一般就是提供例如电话会议、语音留言,企业语音导航IVR,电话呼入自动分配ACD等等;
就这样,VoIP发展成为具备运营商级的VoLTE。