问题描述
- 对端呼入当前freeswitch,地址为10.1.1.146
- fs回复183,回复200ok,收不到ack
问题分析
根据对端工程师给的答复是我们发送的183信令里面没有rseq字段,导致他们收到183应答后,无法发送prack信令。
根据网上查到的rseq信令的描述:
RSeq
RSeq 头字段用于临时(1xx类)对INVITE的响应,以请求可靠的传输。
仅当INVITE请求包含Supported:rel100头字段时,才可以使用头字段。
- 如果存在于临时响应中,则UAC应该使用PRACK方法来确认接收到响应。
- RSeq头字段包含作为由UAS随机初始化的整数的可靠序列号。
- 对于该对话可靠发送的每个后续临时响应将具有单调递增的RSeq数。
- UAS将重传可靠发送的响应,直到接收到具有包含可靠序列号和CSeq的RAck的PRACK。
地址:链接
可以得出结论,首先他们发来的invite消息中需要携带100rel字段,我们在发送临时应答183的时候,才会携带上rseq字段。
问题解决
在对端invite消息加上100rel之后,信令一切正常,如下: