PRACK消息

 

概述

PRACK消息是sip协议的扩展,在RFC3262中定义,标准的名称是sip协议中的可靠临时响应。

本文简单介绍标准中对PRACK消息流程的描述,以及fs配置PRACK的方式。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

PRACK消息

SIP协议中的临时响应主要是100、180、183这些。

由于某些场景下早期媒体的临时响应消息比较重要,在RFC3262中对临时响应进行了扩展,可以简单分为普通临时响应和可靠临时响应。

普通临时响应,响应码范围100-199,UAS针对invite消息的普通的临时响应,不需要UAC确认消息,没有“Require: 100rel”和“RSeq”头域。

可靠临时响应,响应码范围101-199,UAS针对invite消息的可靠的临时响应,需要UAC确认消息,使用PRACK确认,与普通临时响应的主要区别在于多了两个头域,“Require: 100rel”和“RSeq: 1852321830”。

PRACK,可靠临时响应的确认消息,由UAC发起,用来保证可靠临时响应的传递,使用“CSeq: 71146689 PRACK”和“RAck: 1 71146688 INVITE”头域匹配可靠临时响应。

 

RFC3262中对于UAS和UAC处理可靠临时响应的流程描述。

1, UAS在发送第一个可靠临时响应之后,未收到PRACK确认之前,不能发送第二个可靠临时响应。

2, UAC在收到第一个可靠临时响应之后,发送PRACK确认之前,如果收到第二个可靠临时响应,可以采用丢弃或缓存的处理方式,收到普通临时响应也可以采用丢弃或缓存的处理方式。

freeswitch配置测试

修改conf/sip_profiles/external.xml配置文件。

    <param name="enable-100rel" value="true"/>

 

使用10011呼叫137,其中183消息是可靠临时响应,需要PRACK确认。

 

 

总结

freeswitch对PRACK的处理和RFC标准基本一致。

如果呼叫场景中早期媒体比较重要,而且因为网络问题经常丢失,就需要开启100rel来保证早期媒体的可靠消息。

 

空空如常

求真得真

posted @ 2023-08-25 17:23  求真得真  阅读(203)  评论(0编辑  收藏  举报