SIP INVITE 请求端口搞砸了
Posted
技术标签:
【中文标题】SIP INVITE 请求端口搞砸了【英文标题】:SIP INVITE Request Port getting messed up 【发布时间】:2013-03-10 21:12:11 【问题描述】:开发一个NAT穿越解决方案,使用resiprocate,效果很好,但是SIP INVITE get经常失败,尤其是在cisco路由器上
1. SIP REGISTER 由 1024 端口发出
来源:107.108.188.26
目的地:107.108.188.52
用户数据报协议,Src 端口:1024 (1024),Dst 端口:sip (5060)
2。 SIP 状态 200 正常
来源:107.108.188.52
目的地:107.108.188.26
用户数据报协议,Src 端口:sip (5060),Dst 端口:1024 (1024)
3。 SIP/SDP 邀请
来源:107.108.188.52 目的地:107.108.188.26 用户数据报协议,Src 端口:sip (5060),Dst 端口:sip (5060)
理想情况下,第 1 步和第 3 步中的发送端口应为 1024。 请指出我背后的任何可能原因
【问题讨论】:
你的机器是哪台?发送 REGISTER/INVITE 的机器? windows 7 是机器,INVITE 获取失败,因为路由器暴露的端口成为默认端口.. 所以你的是 107.108.188.26 而路由器在 107.108.188.52 上? 【参考方案1】:您的 REGISTER 请求中的 To 和 Contact 字段都指定端口 5060:sip:192.168.5.2@107.108.188.26:5060。
这表示您希望在此端口上接收呼叫(即 INVITE)。 See the rfc.
如果您希望在端口 1024 上接收邀请,请将 uri 的主机部分更改为 107.108.188.26:1024。
【讨论】:
我现在意识到您在抱怨 INVITE 的源端口,而不是目标端口。当收到第一个 INVITE AFAIK 时,这不是您可以在 SIP 协议中控制的。我认为唯一的方法是将您的 cisco 路由器配置为使用此端口。【参考方案2】:讨论过,得出以下结论
If RFC5626 (Outbound) is not used on the client side, then resip will route INVITEs to the user based on the information in their Path or Contact headers of the registration request. You want to try out a repro setting that forces RFC5626 behaviour in the proxy even if the clients to no support it:
# Enable use of flow-tokens in non-outbound cases
# WARNING: Before enabling this, ensure you have a RecordRouteUri setup, or are using
# the alternate transport specification mechanism and defining a RecordRouteUri per
# transport: TransportXRecordRouteUri
EnableFlowTokens = true
【讨论】:
以上是关于SIP INVITE 请求端口搞砸了的主要内容,如果未能解决你的问题,请参考以下文章