首页 > 其他分享 >freeswitch的3XX重定向

freeswitch的3XX重定向

时间:2022-09-01 18:00:44浏览次数:55  
标签:redirect 重定向 响应 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:[email protected]"/>

<action application="redirect" data="sip:[email protected],sip:[email protected]"/>

 

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

<action application="redirect" data="<sip:[email protected]:5082>;q=0.128,<sip:[email protected]:5084>;q=0.129,<sip:[email protected]: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:[email protected]:5082,sip:[email protected]:5084,sip:[email protected]:5086" />

        </condition>

    </extension>

</context>

 

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

redirect 300的消息流程截图。

 

 

  

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

 

 

  

总结

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

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

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

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

 

空空如常

求真得真

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

相关文章

  • Linux中重定向及管道
    1重定向1.1重定向符号>输出重定向到一个文件或设备覆盖原来的文件>!输出重定向到一个文件或设备强制覆盖原来的文件>>......
  • Linux输出重定向>和>>的区别是什么?
    Linux输出重定向>和>>的区别是什么-百度经验 https://jingyan.baidu.com/article/358570f64345c4ce4724fcba.htmlLinux输出重定向有>和>>,如果不清楚他们的区别,混淆......
  • CentOS 7下安装docker和FreeSWITCH-全过程
    具体步骤如下:准备工作:提前将安装包放在CentOS系统下(提前创建好文件夹,这里为:/home/freeswitch(后转移至/home/soft-fs),所需文件如下: 复制第1、3、4、5到本地计算机(这里路......
  • URL重定向及绕过方法
    1概述URL重定向漏洞也称URL任意跳转漏洞,是由于网站信任了用户的输入导致恶意跳转。URL重定向主要用来钓鱼,比如URL跳转中最常见的跳转在登录口、支付口,也就是一旦登录将会......
  • C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因
    一.txt文件中的内容是中文,重定向输入显示乱码原因:是因为文本文件的编码和和编译器的不一致导致的.我文本文件用的编码是UTF-8,而编译器是ANSI,不匹配,所以输出乱码.文本......
  • 路由的重定向 + 路由的name和meta属性 + 没有匹配到路由 + 子路由
    1.路由里面的 redirect重定向   redirect重定向:把'/'直接定到'/home'去 {path:'/',redirect:'/home'},//redirect重定向:把'/'直接定到'......
  • Flask 学习-11.redirect() 重定向
    前言使用redirect()函数可以重定向请求redirect()函数当我们访问一个需要用户先登录才能访问的地址时,比如获取用户信息,如果用户没登录,需重定向到登录页。fromflask......
  • 重定向登录时返回401
    context.Services.ConfigureApplicationCookie(options=>options.Events.OnRedirectToLogin=httpContext=>{httpContext.Response.ContentType=......
  • 请求转发和重定向的区别
    packagestudy;importjakarta.servlet.ServletException;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.HttpServlet;importjakarta......
  • 重定向和转发的区别
    ​ /**作者:呆萌老师*☑csdn认证讲师*☑51cto高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里......