概述

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重定向只能在呼叫未接通之前使用。

空空如常

求真得真

freeswitch的3XX重定向的更多相关文章

  1. 3XX重定向

        3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求 301 Moved Permanently  永久性重定向     该状态码表示请求的资源已经被分配了新的URI,以后应使用资源现 ...

  2. nginx-301重定向开始

    日常工作中使用301重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变.SEO优化.等等,301重定向可以很方便的使页面实现跳转. 参考 URL重写模块 一.首先更改配置 ...

  3. HTTP的response code 1xx,2xx,3xx,4xx,5xx分别代表什么

    HTTP 状态码点击链接可了解详情.您也可以访问 HTTP 状态码上的 W3C 页获取更多信息. 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码. 2xx (成功):表示成功处理了请 ...

  4. 温故知新,.NET 重定向深度分析

    在早期的.NET Framework程序员心里,重定向Redirect其实分为两种: Response.Redirect: Response对象的Redirect方法提供了一种实现客户端重定向的方法 ...

  5. 3xx HTTP状态码的终极指南

    前言 如果你在管理一些网站,那么对HTTP重定向的理解对于可靠的网站性能至关重要.在这篇文章中,我们将全面了解一下3xx HTTP状态码,从这里你可以了解它们是如何工作的,如何更好地管理它们,以及它们 ...

  6. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  7. HTTP常用状态码分析

    不管是面试还是工作中,经常会碰到需要通过HTTP状态码去判断问题的情况,比如对于后台RD,给到前端FE的一个接口,出现502或者504 error错误,FE就会说接口存在问题,如果没有知识储备,那就只 ...

  8. 《图解HTTP》读书笔记

    目前国内讲解HTTP协议的书是在太少了,记忆中有两本被誉为经典的书<HTTP权威指南>与<TCP/IP详解,卷1>,但内容晦涩难懂,学习难度较大.其实,HTTP协议并不复杂,理 ...

  9. 【原】HTTP in iOS你看我就够

    声明:本文是本人 编程小翁 原创,转载请注明. 本文同步发布在简书中,强烈建议移步简书查看,编程小翁 HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解 ...

  10. ajax response status list [转载]

    比较理想的解释方法应该以"状态:任务(目标)+过程+表现(或特征)"的表达模式来对这几个状态进行定义  [全文]  在<Pragmatic Ajax A Web 2.0 Pr ...

随机推荐

  1. teleport 服务端配置文件说明

    teleport 服务端配置文件说明 teleport配置文件位于/usr/local/teleport/data/etc目录下.服务器端包含两个配置文件: core.ini 和 web.ini,其中 ...

  2. MybatisPlus高级特性之SimpleQuery工具类

    1.是很么? SimpleQuery可以对selectList查询后的结果使用Stream流进行操作,使其可以返回指定的结果,简洁了api的调用 2.怎么玩? 案例演示 (1) list操作 /** ...

  3. 使用FRP实现内网穿透<阿里云服务器端+WINDOWS客户端>

    使用FRP实现内网穿透 1.准备条件 一个云服务器 一个FRP服务端文件,下载地址 一个FRP的windows客户端文件,下载地址 2.服务端 使用远程客户端工具,连接你自己的云服务器(我使用的是阿里 ...

  4. 5s!用浏览器打造一个开箱即用的Linux系统

    做为Linux系统管理员.或者是系统运维工程师,肯定会在工作遇到这样的需求:需要开发环境.测试环境.准生产环境等等环境,有时候建一个环境费时间不说,还容易出各种错误,好不容易建好了,可能还用不了几天. ...

  5. Pikachu漏洞靶场 Unsafe Filedownload(不安全的文件下载)

    不安全的文件下载 概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文 ...

  6. Java数组中常见的方法

    一.前言 代码: //给定一个数组 int[] arr = {234,312,32,1321,321,43}; int[] arr1 = new int[6]; int[] arr2 = {1,3,7 ...

  7. 第十部分_Shell脚本之函数

    函数 1. 什么是函数? shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数 给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能 2. 如何定义函数? 方法1 ...

  8. 5步教你将MRS数据导入DWS

    摘要:GaussDB(DWS)支持在相同网络中,配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从HDFS中的文件读取到GaussDB(DWS). MapReduce服务(MapR ...

  9. 海量监控数据处理如何做,看华为云SRE案例分享

    摘要:openGemini的设计和优化都是根据时序数据特点而来,在面对海量运维监控数据处理需求时,openGemini显然更加有针对性. IT运维诞生于最早的信息化时代.在信息化时代,企业的信息化系统 ...

  10. YoloV5实战:手把手教物体检测

    摘要:​YOLOv5并不是一个单独的模型,而是一个模型家族,包括了YOLOv5s.YOLOv5m.YOLO... 本文分享自华为云社区<YoloV5实战:手把手教物体检测--YoloV5> ...