早期媒体

  • Post author:
  • Post category:其他






早期媒体




早期媒体的概念比较泛,只要处于早期对话内的媒体交互都属于早期媒体。

根据方向性,早期媒体可以分为前向早期媒体、后向早期媒体,当然也可能出现双向早期媒体。当前我们主要关注后向早期媒体。

根据目前


RFC


标准规范定义,早期媒体有


Gateway


模式、


App


模式,目前《中国电信


IMS


网络


SIP


协议总体技术要求》必须支持


Gateway


模式,对于


App


模式没有做特别说明。当前我们主要关注


Gateway


模式。







前向早期媒体




前向早期媒体是指由主叫定制向被叫方播放的媒体,比如在早期对话阶段,根据一些特殊业务需求,需要主叫向被叫发送按键音。或者一种新业务,多媒体彩像功能(多媒体彩像是由主叫定制,被叫享用的业务,在主叫呼叫被叫时,多媒体彩像平台向被叫用户播放主叫用户定制的多媒体信息)等都属于前向早期媒体。







后向早期媒体




后向早期媒体是指由被叫定制向主叫方播放的媒体,这个我们最熟悉的就是是彩铃业务,当主叫呼叫被叫时,会听到被叫设置的不同彩铃音乐。









Gateway










模式














网关模式主要为了兼容现网中大部分不支持


APP


模式的传统设备,整个早期媒体的控制全部集中在网络中做为网关的网元设备,使得终端不会感知到远端到底有多少个媒体源。


在上图中


Server


充当网关的角色,在对话初期,被叫侧


UE_B


提供了媒体源,同时


Server


为了完成特定业务,也提供了媒体源。



1)





UE_A





Server


建立好媒体协商



UE_A


在初期发送


Invite


请求后,虽然被叫


UE_B


提供了自己的媒体信息,但此时


Server


正好也需要在早期对话完成特定媒体发送业务,所有


Server





UE_B


的媒体信息屏蔽了,

使用自己的媒体信息与


UE_A


完成初期交互。



2)





UE_B


摘机后,


Sever


辅助完成


UE_A





UE_B


的媒体协商。



UE_B


摘机后,在


200OK


中将不会再带媒体信息,因为之前已经完成了一对交互处理。这时候


Server


为了挽回之前丢失的


UE_B


信息,只能通过


Reinvite


不带


SDP


,再重新向


UE_B


索取一次媒体信息,得到


UE_B


的信息后,


Server


通过


Update





UE_A


完成协商,之后将协商的结果通过


Reinvite


流程中的


ACK


告知


UE_B


,完成最终的双方媒体协商。

在《


RFC5009


》中,针对


Gateway


模式早期媒体,定义了


P-Early-Media


头域,《中国电信


IMS


网络


SIP


协议总体技术要求》标准仅以





sendonly”


值为通用场景,其它





inactive”








gated”


值不做考虑。这里大家一下要理解一下,早期媒体里面的


sendonly


等头域值和


SDP





sendonly


不同,不代表收发模式的意思,它们表示的是传输方向,


sendonly


表示从被叫侧到主叫侧方向的媒体,即后向早期媒体,同时,早期媒体头域与


SDP


同时出现时,也不会有冲突,早期媒体协带


sendonly


,仅仅告诉终端请把你的


RTP


接收线程准备好,我要向你发送,而


SDP


中的


sendonly


是告诉终端的


Dsp


,当你什么时候准备发送数据时,记得按我告诉你的收发模式来处理。


这个流程和上一个流程在


Server





UE_B


之间的处理有些不同,目前标准仅定义早期媒体的概念,在具体实施上并没有刻意描述如保处理,这里因为中国电信目前仅关心后向早期媒体,所以实例中我们仅描述


UE_A





Server


的信令交互体现。



1





UE_A


发起初始


Invite


请求




INVITEsip:ue_b@ ims.com SIP/2.0





P-Early-Media







supported


信令中协带


P-Early-Media





supported


头域,指明


UE_A


支持网关模型的早期媒体



2





Server


完成与


UE_A


的早期媒体处理



Server


在收到


Invite


请求后,知道


UE_A


支持此功能,转发不含


SDP





Invite


请求(此处实现可以简化与


UE_B


的交互流程),之后给


UE_A


回应


183SDP


,在


183


信令中添加


P-Early-Media





sendonly


,来告诉


UE_A


现在


Server


想在早期对话中给其发送媒体信息。




SIP/2.0183 Session Progress





P-Early-Media













sendonly




3





UE_A


处理早期媒体(当前我们仅考虑无资源预留的情况下)

  • 如果收到的第一个


    180


    响应无


    SDP


    ,则本端自己提供回铃音,直到以下场景出现后将停止本地回铃音:

  • 收到最终应答

  • 收到带有


    P-Early-Media+ SDP





    18X


    消息,或者带有


    P-Early-Media+ SDP





    UPDATE


    消息,或者失败的消息

  • 收到的第一个


    18X


    消息带有


    P-Early-Media+ SDP


    ,是由网络侧提供回铃音



4


)被叫


UE_B


摘机后,


Server


处理

当被叫


UE_B


摘机后,在


200OK


里协带自己的


SDP


信息,


Server


通过使用


Update





UE_A


进行信令交互,来完成


UE_A





UE_B


的媒体协商。




UPDATEsip:ue_a@ ims.com SIP/2.0





P-Early-Media









sendonly




5


)收到


UPDATE


后,


UE_A


处理



UE_A


在收到含有


P-Early-Media+ SDP





UPDATE


后,了解到早期媒体已经完成,网络侧更新了媒体源,则对新的媒体源进行重新协商。









App










模式














在网关模式小节,我们看到第一个流程图中,如果


UE_B





Server


都提供早期媒体源,则会导致


UE_B


的媒体信息被丢弃,因为传统


SIP


的媒体交互是成对出现的,并且在同一时间仅能处理一对媒体协商,同时信令交互上比较繁琐。



App


模式为了解决这种问题,提出在终端与服务器侧,可以同时在一个信令消息中处理多个媒体协商的机制,这种实现很大程度上减少了信令交互,也完成了完美的无缝媒体切换。但该机制需要终端与服务端都必须支持才可以,中国电信考虑到目前现网中传统


SIP


终端还占据很大的使用比例,所以目前对该模式并没有强制要求终端需要实现。




1





UE_A


发送


Invite


请求,告知


Server


他支持


APP


模式早期媒体




INVITEsip:ue_b@ ims.com SIP/2.0





Supported:



early-session



,100rel





Content-Type:application/sdp






Content-Disposition:session






v=0





o=UE_A2890844730 2890844731 IN IP4 ims.com





s=





c=INIP4 192.0.2.1





t=00





m=audio20000 RTP/AVP 0




  • Supported


    头域值含有


    early-session


    ,表明终端支持


    APP


    模式早期媒体



  • Content-Disposition:session


    指明当前的


    BODY


    是一个普通会话媒体



2





Server


收到被叫媒体信息后,自身也需要提供媒体,则在


183


响应中协带多个媒体信息,其中第一个


Content-Disposition:session





UE_B


协商后的媒体信息,指明是普通会话媒体,第二个


Content-Disposition:early-session





Server





UE_A


发出的会话媒体请求,同时指明是早期会话媒体。




Content-Type:multipart/mixed; boundary=”boundary1″





Content-Length:401





–boundary1





Content-Type:application/sdp






Content-Disposition:session






v=0





o=Bob2890844725 2890844725 IN IP4 host.example.org





s=





c=INIP4 192.0.2.2





t=00





m=audio30000 RTP/AVP 0





–boundary1





Content-Type:application/sdp






Content-Disposition:early-session






v=0





o=Bob2890844714 2890844714 IN IP4 host.example.org





s=





c=INIP4 192.0.2.2





t=00





m=audio30002 RTP/AVP 0





–boundary1–




3





UE_A


收到含有两个媒体信息的


183


响应后,已经得到


UE_B


的媒体协商应答,同时也了解到


Server


发来一个早期媒体请求。此时,


UE_A


将与


UE_B


的普通媒体信息先存储到本地,并对


Server


发来的早期媒体请求进行协商处理,之后在


PRACK


信令中仅将与


Server


协商后的媒体信息发送给


Server


端。




Content-Type:application/sdp






Content-Disposition:early-session






v=0





o=alice2890844717 2890844717 IN IP4 host.example.com





s=





c=INIP4 192.0.2.1





t=00





m=audio20002 RTP/AVP 0




4





Server


收到


UE_A


早期媒体会话响应后,完成早期媒体的处理,之后给


UE_A


提供早期媒体源。



5





UE_B


摘机应答后给


UE_A


发送


200


响应,


UE_A


收到


200


响应后,了解到当前对话已经变为正式对话,此时


UE_A


自动将媒体处理切换为之前保存的普通媒体会话。





参考资料







《中国电信




IMS










网络




SIP










协议总体技术要求》







《基于




IMS










的早期媒体类业务》












VoipIMS










早期媒体建立中多实体媒体协商解决方案》












SIP










中的早期媒体




earlymedia










与回铃音》












RFC5009























RFC3959























RFC3960
















版权声明:本文为liujianfeng1984原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。