PRECONDITION:先决条件,预留条件
SIP中解释作为资源预留,就是建立会话预留的资源。
RFC3312有对PRECONDITION的准确定义
对precondition的理解就两句话:
“当你还没准备好时,不要接受我的请求”
“当你还没有准备好时,不要请求任何东西”
定义PRECONDITION
SDP属性定义RFC 3312中所示:
current-status= "a=curr:" precondition-type SP status-type SP direction-tag
desired-status= "a=des:" precondition-typeSP strength-tag SP status-type SP direction-tag confirm-status= "a=conf:" precondition-type SP status-type SP direction-tag
precondition-type= "qos" | token
strength-tag= ("mandatory" | "optional" | "none"= | "failure" | "unknown")
status-type= ("e2e" | "local" | "remote")
direction-tag= ("none" | "send" | "recv" | "sendrecv")
信息交换信息
UAC<>UAS 交换流程如下:

总体描述可以如下,并且细节可以根据具体情况稍微变化
(1)INVITE
UAC发送INVITE以会话。在该步骤,UAC发送SDP,携带媒体信息。
注意:根据RFC规范,在某些应用程序中,特别是在LTE中, UAS在INVITE之后回复100 Trying并不是强制性的。
(2)183 Session Progress
UAS发送183。它主要是说“我收到invite,正在处理一些事情完成此次要求”。根据183携带参数不同,UAC需要进行不同处理。
举例来说消息带有以下标题意味着此次会话需要Precondition,需要100 rel。由于这条消息会带有非常重要的内容,我想从UAC获得确认(PRACK)。
注:通常像183消息不需要来任何响应,但如果它带Require:100rel,则UAC应该发送称为PRACK的确认消息。
通常消息包含非常重要的内容(如SDP)时,它会添加“Require:100rel”以确保对方成功接收到该消息。
Require: precondition
Require: 100rel
遇到Require:Precondition ,相互需要开始交换qos参数,如下所示:
des(desired):qos 定义了此会话的最终qos条件
curr(current):qos 表示我们当前达到的qos条件
在此消息中,'curr:qos local'和'curr:qos remote'都设置为'none',因为我本地或远程端没有进入分配资源阶段。
a = curr:qos local none
a = curr:qos remote none
a = des:qos mandatory local sendrecv
a = des:qos mandatory remote sendrecv
(3)PRACK
PREACK 是183 Session Progress确认消息。意味着“收到了183消息”。在某些情况下,PRACK可以携带SDP。根据PRACH是否携带SDP,或者根据SDP中的详细qos设置,UPDATE过程可能会有一些变化。
(4)200 OK
对PRACK的回应
(5)UPDATE
UPDATE消息UAC发送到UAS。这条消息的主要目的是“我已经准备好建立会话了。
qos资源已分配好。UAC仅在保证所需的资源/条件时才发送此消息。
UPDATE消息中SDP中的qos设置的一个示例如下
a = curr:qos local sendrecv
a = curr:qos remote none
a = des:qos mandatory local sendrecv
a = des:qos mandatory remote sendrecv
(6)200 OK
UPDATE的响应(确认)。此消息的另一个重要功能是携带带有qos参数的SDP。该SDP中的qos参数的一个示例如下。
a = curr:qos local sendrecv
a = curr:qos remote sendrecv
a = des:qos mandatory local sendrecv
a = des:qos mandatory remote sendrecv
一旦看到qos设置的这种状态,就意味着本地和远程端都准备好建立通信。
(7)180
Require: 100rel
意味着下一步需要PRACK。
(8)PRACK
这是180 Rining with 100 rel的响应。
(9)200 OK
这是PRACK的响应
(10)200 OK
这是INVITE的响应
(11)ACK
这是200 OK(INVITE)的回复
网友评论