IMS是目前通信网络中核心的一个部分,同时对SIP的支持做了很多的拓展。我们在关于SIP系列讲座中介绍了很多从底层到上层接入点方式,例如PSTN和SIP trunk,但是现在的网络服务已经发生了根本性的改变,IMS已经在开始商用。事实上,IMS可以支持多种方式的接入,包括WIMAX,LTE,wifi,DSL等方式。传统的接入方式中,有的只能上网,有的只能支持电视服务,有的只能支持PSTN接入,这些服务都不能提供一个统一的接入方式,运营商维护升级也面临很多问题。LTE和其他方式相比较,在支持传统服务的基础上,可以支持了更多的服务。所以,目前,LTE是运营商最希望推广的接入方式。关于SBC笔者已经在前面的章节做过非常详细的介绍,读者可以查阅以前的公众号文章。
为了让读者更多了解IMS网络中SIP的工作流程,也为了配合我们的SIP系列讲座,所以今天我们专门做一个关于IMS网络的介绍。首先说明,IMS网络是一个非常复杂的网络,如果讨论这个话题的话,需要耗费很多精力,笔者能力有限很难给予读者一个非常完整详细的IMS网络的解释。所以,我们仅讨论和SIP语音呼叫相关的IMS核心模块和呼叫流程。网络有很多非常专业的技术讨论,读者可以参考专门的资料去学习。
因此,在本章节中,我们将重点介绍LTE的网络架构背景知识,IMS的核心模块功能,SIP在IMS的注册工作流程,SIP在IMS的几个重要参数介绍,SIP在VoLTE的呼叫流程,Precondition和开源IMS平台等内容。
1
首先让我们介绍一下LTE的基本架构和其核心的模块功能。以下图例是一个比较抽象的一个移动网络架构图。在以下图例中我们可以看到,整个网络架构包括了几个核心的模块功能,它们是:UE终端,eNodeB设备,RAN无线接入网络,LTE网络,GW(接入IP核心网络的gateway)。运营商的核心网络通过Gateway来实现对接。这里,我们可以看到,手机终端首先启动,然后找到自己的网络,接入到LTE网络,通过GW实现所有签权认证,然后可以实现对其他User的呼叫。这里,笔者提醒读者,当我们写这个章节时,所引用的内容可能已经过时,例如现在的5G技术和其他的传输方式。如果读者有兴趣的话,可以参考3GPP的一些标准来做进一步的研究。此组织官方网站可以获得最新的技术信息。
2
读者通过上面图例可以看到,用户在接入网络时,需要经过两个核心的模块,他们是RAN和EPC。现在让我们进一步了解一下网络中的核心内容RAN和EPC的功能和执行流程。EPC的全称是Evolved Packet Core,它是LTE的核心要素,负责其他主要模块的功能实现。
以下图例中介绍了UE如何通过RAN来接入到LTE网络,然后实现真正的业务支持。
让我们结合具体的模块介绍一下UE注册LTE网络实现业务流程的几个主要步骤:
首先UE通过RAN无线接入网络,连接到MME。MME全称是Mobility Management Entity,它负责控制移动和UE的安全访问等控制流程。
然后MME查询HSS服务器,进行签权认证查询服务,获得用户相关信息。HSS负责用户订阅的相关权限和服务信息。HSS全称是Home Subscriber Server,主要是支持移动管理,呼叫和会话创建等功能。这里的HSS取决于运营商的部署配置,一般可能通过多台数据库服务器来实现。
MME连接到SGW,通过SGW获得路由和传输IP数据的信息。SGW负责UE内部设备连接外部的网络。
RAN网络会提供一个UE的Bearer 能力支持的控制,通过PGW实现IP地址获取,连接外部的IP网络,并且实现数据策略控制,计费控制等功能。通过PGW就可以实现IP网络的连接和IMS核心网络的连接。
UE用户可以需要实现执行Default bearer的信令控制流程,信令成功连接以后,开始实行数据的服务功能。要求支持的QCI=5是对其语音质量的规定,关于QCI的知识,我们在以前的QOS讲座中有所介绍,用户可以参考。Dedicated Bearer实现对数据的控制(连接网络),用户就可以通过IP网络实现对外部网络的其他业务,例如Skype聊天,连接WebRTC等业务。当然,用户是否开启这些服务,取决于运营商的服务类型,一般情况下,运营商当然希望使用自己本身的服务,可能有的运营商关闭了一些服务。这需要用户看具体的运营商场景。
这里,读者要注意,因为我们没有涉及非常细节的网络介绍,可能有的新读者有一点迷惑,把LTE网络和IMS混为一谈。事实上,通过上面的图例我们可以看到,PGW连接到IP网络以后,从开始真正进入IMS服务的场景中。所以,读者一定要注意HSS和PGW的边界。
3
前面我们介绍来UE如何实现LTE网络的连接。如果UE要实现SIP业务需求的话,需要经过IMS网络。IMS 和传统其他的网络服务比较,它提供了更加丰富的功能,并且集成了所有以前传统的网络的服务功能,例如语音,视频,游戏,短信和在线服务,电话会议等服务功能,使用一个IP网络可以实现用户扩容,呼叫控制等功能。SIP注册呼叫需要经过以下几个核心模块的处理才能完成正式的注册呼叫。
我们根据以上图例中红色部分标志的模块,对这些模块进行一个简单的介绍:
CSCF功能负责控制呼叫会话管理(Call Session Control Function),包括对模块有I-CSCF,S-CSCF和P-CSCF。
S-CSCF(Serving CSCF)负责注册功能和管理会话。
P-CSCF(Proxying CSCF)配合S-CSCF工作,负责SIP会话创建。这里一定要注意,P-CSCF是UE进入到IMS的第一个节点。
I-CSCF(Interrogating-CSCF)是从外部网络进入到IMS网络的入口,负责呼入呼叫的处理,同时配合ENUM/DNS进行查询服务。
HSS(Home Subscriber Server)负责数据库查询对用户身份和所支持的服务进行查询确认。它通常配合AAA服务器进行签权和认证查询。有的运营商把在IMS网络和EPC网络各自部署一台HSS,有的运营商则单独合并为一台HSS服务器。我们这里所使用的就是一台HSS服务器来辅助IMS和EPC一起工作。
AS(Application Server)提供对用户订阅的应用业务的支持,包括游戏,视频,在线服务,短信服务等。
TAS(TelephonyApplication Server)也是一种应用服务功能,但是这里重点强调的是对语音视频呼叫所提供的服务,包括呼叫数量的限制,电话前转,呼叫能力等支持。
PCRF(Policy Charging and Rules Function),它负责定义呼叫规则来控制用户的呼叫功能,例如计费和QOS。它配合PGW来支持用户QOS。
ENUM/DNS负责对用户地址和号码属性进行查询服务,PSTN接入查询。
4
了解了IMS核心模块的主要功能后,我们介绍呼叫的第一步-如何实现注册流程。
在UE注册的流程中,整个流程大概经过以下几个步骤:
首先UE启动以后,通过PGW获得一个IP地址,上面我们已经说明,PGW是连接IP网络的一个网关节点。UE获得IP地址信息以后,通知到PGW。
PGW然后连接P-CSCF,对UE用户进行注册。
P-CSCF连接到I-CSCF进行签权认证,要求I-CSCF对其UE用户进行查询。
I-CSCF连接到HSS服务器对用户状态信息进行查询。
最后I-CSCF确认用户状态以后,发送UE注册信息到S-CSCF模块。最后完成注册流程。到此步骤,用户可以进行呼叫,并且UE状态处于有效状态。
以下SIP注册示例告诉我们整个SIP注册的基本流程,注册流程和我们上面提到的是完全一致的。
5
UE用户成功注册以后,UE用户就可以开始呼叫。现在让我们看看UE用户之间通过IMS网络进行的呼叫流程。
两个UE通过IMS呼叫大概经过以下一些步骤(和其他文档介绍可能有所差别):
首先UE通过PGW进行呼叫,进入IMS网络。
PGW发送SIP INVITE消息到Proxy GW(P-CSCF)。
P-CSCF发送消息到S-CSCF。
当INVITE消息到达S-CSCF以后,S-CSCF发送数据到TAS服务器,查询UE用户的呼叫能力支持。
通过TAS服务器获得呼叫能力支持的查询,例如号码隐藏等服务,然后把查询数据追加到此呼叫。
S-CSCF然后发送数据到ENUM/DNS服务器查询号码格式和IP地址等相关信息。通过DNS查询以后,获悉目的地的INVITE地址等相关信息。
S-CSCF获得相关DNS查询信息后,发送数据到目的地的IMS网络中的I-CSCF。上面,我们已经介绍过,I-CSCF是IMS网络的入口。所以,首先对其进行流程处理。
目的地运营商通过I-CSCF对用户进行查询,通过HSS服务器获得用户地址和在线状态信息。
I-CSCF继续对S-CSCF模块发送数据。SIP INVITE会继续转发到S-CSCF模块进行下一步处理。
目的地S-CSCF继续查询TAS服务器,很多号码的支持能力和其他增值服务相关信息。
S-CSCF获得目的地用户的TAS能力信息以后,发送SIP INVITE到Proxy(P-CSCF),对其UE进行呼叫。
最后,目的地运营商通过P-CSCF对被叫UE进行呼叫。到此,呼叫流程创建过程结束。
这里,读者要注意,在两个IMS网络实现互联互通时,IMS网络支持了一个SBC在边界节点,SBC可以对IMS网络之间进行防火墙设置和其他的兼容性能力支持。具体的SBC的技术讨论,我们在以前的章节已经进行了非常完整的介绍,用户可以参考。另外,如果需要查询PCRF模块时,可能需要对其计费和呼叫进行控制,这里已忽略此步骤。
6
VoLTE(Voice over LTE) 是一种LTE网络的服务类型。大家都知道,在相对VoIP开放的市场中,如果仅运营商仅提供一种话费低廉的语音呼叫服务,市场上已经有很多话费低廉的小型运营商,运营商已经很难和一些小运营商所提供的SIP 中继进行市场竞争。为了留住客户,增加和客户粘性,运营商必须提供语音质量更加好的,服务更加全面的服务。VoLTE就可以帮助运营商提供更多的有竞争力的产品服务。VoLTE和传统的其他接入方式相比,可以通过更多的业务功能,提供更多富媒体的支持。具体的功能包括:
VoIP 语音视频呼叫
IM 即时通讯工具,QQ,Skype,whatapp,wechat 等等
在线状态支持
数据共享
多方电话会议
视频会议
现在让我们进一步了解一下VoLTE环境下的SIP呼叫流程中关于几个关键细节。
和以前我们介绍的SIP INVITE有所区别,它增加了100rel和precondition。这里,100rel表示PRACK;precondition表示终端设备所需要的支持能力,它会保持协商的网络资源为下一步的会话流程做准备,如果协商失败,则连接失败。注意,这里的Supported:precondition列出的参数不一定都是必须使用的,需要使用Required:precondition来表示必须支持的参数。再次说明,precondition是一个非常复杂的讨论话题,因为本人能力和微信篇幅的关系,只能简单介绍基本的几个步骤和流程。
Precondtion 应用是一个非常必要的过程,就是为了避免不必要的双方协商的资源浪费,很多时候网络环境类似于一个工作效率非常低下的员工沟通过程,假设或想当然可以对方满足条件,最后发现承诺的不能实现。因此,我们必须提前解决两个问题:如果对方没有准备好,就不要接受我的要求;如果没有准备好,不要对对方发送任何请求。
以下图例介绍了precondition的协商过程包括UE1 发送INVITE,直到UE2 发送200 OK的流程。
在以上的图例中读者一定要注意SDP中的几个参数,读者可能产生歧义。
a=curr: 表示当前状态的precondtion type
a=des:表示希望获得的precondition type,很多人错误以为是目的地des。
a=conf:表示最终确认的precondtion type
strength-tag 表示是强制,可选,未知,none,失败等
direction-tag从字面意思可以看出是方向协商,包括none, send, recv和sendrecv
从协商流程图中可以简单看出,事实上,整个predcondition协商过程就是一直检查当前状态到期望状态的过程。只要满足了双方条件,则协商成功。以下图例简单介绍了QOS协商的过程,可能更加有助于读者理解precondition。
具体的流程图在后续的部分有详细说明。在VoLTE业务呼叫中,它支持的编码类型有所不同,VoLTE支持的编码包括:AMR,AMR-WB和EVS。关于编码的具体细节,笔者在这里不会做太多介绍,用户可以到3GPP官方网站查阅。
b=是SDP的一个拓展,表示bandwidth,具体语法:
b=:
modifier包括:AR,RS和RR,简单来说,各自分别表示应用中RTCP最大支持带宽,本地带宽和接收方带宽。
更多细节,请参考RFC3556。
Precondition 包括三种类型:conn(Connectivity,查阅RFC5898),qos(QoS precondition,查阅RFC3312)和seq(Security precondition,RFC5027)。如果读者有兴趣的话,可以根据相关的RFC对precondition的三种类型做更加深入的研究。
7
根据以上的介绍,我们可以大概看出SIP在VoLTE中的呼叫流程,UE1呼叫UE2,发生INVITE消息,UE2返回183 消息携带可支持的编码。UE1 收到183消息以后,返回到PCRF时,流程需要查询PCRF,获得网络资源例如编码和计费的能力支持。PCFR然后发送用户消息到PGW,PGW将设置QOS,PGW将配合S-CSCF,MME和eNodeB,重新设置一个新的bearer QCI=1,QCI=1用来发送呼叫媒体。
支持能力的协商流程(可参考上面提到的precondition)大概经过以下五个步骤:
UE1 发送PRACK 消息到UE2,通知对方自己的bearer 支持能力。
UE2 收到UE1的消息,然后发送自己的PRACK消息。
UE1收到UE2消息以后,发送一个UPDTAE消息携带重新协商的SDP消息。
UE2收到UE1以后,重新确认SDP,设置发送bearer消息。
UE2发送180 ring消息。媒体开始建立。
8
大家可以想象一下,目前很多运营商都提供IMS服务,每个IMS网络都需要和其他的进行连接。如何实现IP核心网络之间的连接是一个很大的挑战。
领取专属 10元无门槛券
私享最新 技术干货