ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

freeswitch的3XX重定向

2022-09-01 18:00:08  阅读:184  来源: 互联网

标签:redirect 重定向 响应 300 3XX location freeswitch


 

 

概述

sip协议标准RFC3261中,对3XX重定向有明确的定义。

freeswitch中如何使用3XX redirect的特性,如何落地,应用场景有哪些?

 

环境

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

freeswitch:v1.8.7

GCC:4.8.5

 

3XX重定向

RFC3261中对3XX的响应定义是这样的。

3xx responses give information about the user's new location, or about alternative services that might be able to satisfy the call.

3XX响应提供有关用户新位置的信息,或者可能能够满足呼叫请求的替代服务。

 

各种具体的响应消息定义如下。

300 Multiple Choices: Indicates that the address resolved to more than one location.

300 多重选择:响应中带有多个可选地址。

 

301 Moved permanently: Indicates user is no longer available at this location, an alternate location should be included in the header.

301 永久转移:当前地址永久性不可用,响应中附带可选的新地址。

 

302 Moved Temporarily: Indicates that the user in temporarily unavailable, an alternate location should be included in the header.

302 临时转移:当前地址临时性不可用,响应中附带可选的新地址。

 

305 Use Proxy: This response indicates that the caller must use a proxy to contact the called party.

305 使用代理:该响应表示用户必须使用代理来建立呼叫。

 

380 Call is not successful but alternate services are available.

380 呼叫失败但是有可用的替代服务。

 

freeswitch中的重定向

freeswitch的官方文档中,只找到了300和302响应的app接口“mod_dptools: redirect”。

应用很简单,dialplan拨号计划中直接配置使用。

拨号计划实例:

<action application="redirect" data="sip:foo@bar.com"/>

<action application="redirect" data="sip:foo@bar.com,sip:foo@end.com"/>

 

查看fs源代码,发现的可用的数据格式。

<action application="redirect" data="<sip:1002@10.55.55.137:5082>;q=0.128,<sip:1002@10.55.55.137:5084>;q=0.129,<sip:1002@10.55.55.137:5086>;q=0.15"/>

其中的“q值”可以用来作为redirect的排序依据。

 

配置测试

构造一个简单场景,测试一下redirect的流程。

1001->fs138->fs137->fs138->1002

其中,fs137开放多个端口5080、5082、5084、5086。

fs137的5080端口收到invite之后,使用redirect返回300重定向消息,重定向位置为fs137的多个端口5082、5084、5086。

 

修改dialplan拨号计划如下。

<context name="public">

    <extension name="test" continue="false">

        <condition field="destination_number" expression="^(\d+)$">

            <action application="redirect" data="sip:$1@10.55.55.137:5082,sip:$1@10.55.55.137:5084,sip:$1@10.55.55.137:5086" />

        </condition>

    </extension>

</context>

 

重启fs之后,发起呼叫测试,sngrep的信令流程如下。

redirect 300的消息流程截图。

 

 

  

重定向之后的呼叫流程截图。

 

 

  

总结

可以在redirect之前,增加一致性HASH的接口来计算重定向目标,以达到负载均衡的目的。

3XX重定向服务可以用在故障转移场景?

3XX重定向服务在分布式大集群中应用的场景,集群容量上限该如何计算?

302重定向只能在呼叫未接通之前使用。

 

空空如常

求真得真

标签:redirect,重定向,响应,300,3XX,location,freeswitch
来源: https://www.cnblogs.com/qiuzhendezhen/p/16647400.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有