freeswitch的3XX重定向

概述
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重定向的更多相关文章
- 3XX重定向
3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求 301 Moved Permanently 永久性重定向 该状态码表示请求的资源已经被分配了新的URI,以后应使用资源现 ...
- nginx-301重定向开始
日常工作中使用301重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变.SEO优化.等等,301重定向可以很方便的使页面实现跳转. 参考 URL重写模块 一.首先更改配置 ...
- HTTP的response code 1xx,2xx,3xx,4xx,5xx分别代表什么
HTTP 状态码点击链接可了解详情.您也可以访问 HTTP 状态码上的 W3C 页获取更多信息. 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码. 2xx (成功):表示成功处理了请 ...
- 温故知新,.NET 重定向深度分析
在早期的.NET Framework程序员心里,重定向Redirect其实分为两种: Response.Redirect: Response对象的Redirect方法提供了一种实现客户端重定向的方法 ...
- 3xx HTTP状态码的终极指南
前言 如果你在管理一些网站,那么对HTTP重定向的理解对于可靠的网站性能至关重要.在这篇文章中,我们将全面了解一下3xx HTTP状态码,从这里你可以了解它们是如何工作的,如何更好地管理它们,以及它们 ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- HTTP常用状态码分析
不管是面试还是工作中,经常会碰到需要通过HTTP状态码去判断问题的情况,比如对于后台RD,给到前端FE的一个接口,出现502或者504 error错误,FE就会说接口存在问题,如果没有知识储备,那就只 ...
- 《图解HTTP》读书笔记
目前国内讲解HTTP协议的书是在太少了,记忆中有两本被誉为经典的书<HTTP权威指南>与<TCP/IP详解,卷1>,但内容晦涩难懂,学习难度较大.其实,HTTP协议并不复杂,理 ...
- 【原】HTTP in iOS你看我就够
声明:本文是本人 编程小翁 原创,转载请注明. 本文同步发布在简书中,强烈建议移步简书查看,编程小翁 HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解 ...
- ajax response status list [转载]
比较理想的解释方法应该以"状态:任务(目标)+过程+表现(或特征)"的表达模式来对这几个状态进行定义 [全文] 在<Pragmatic Ajax A Web 2.0 Pr ...
随机推荐
- Nacos 配置中心源码
客户端 入口 在引入配置中心 maven 依赖的 jar 文件中找到 spring-cloud-starter-alibaba-nacos-config-2.2.5.RELEASE.jar!/META ...
- [ABC246E] Bishop
Problem Statement We have an $N \times N$ chessboard. Let $(i, j)$ denote the square at the $i$-th r ...
- Oracle数据库卸载器 - 开源研究系列文章
今天无事,把网上搜到的Oracle数据库卸载器的软件更新到C#的Winform界面的操作上. 1. 程序目录: 与笔者的其它软件类似,目录如下: 2. 使用的类: 这里主要使用了一个处理函数: 3. ...
- Hexo 主题开发之自定义模板
关于 Hexo 如何开发主题包的教程在已经是大把的存在了,这里就不在赘述了.这边文章主要讲的是作为一个主题的开发者,如何让你的主题具有更好的扩展性,在用户自定义修改主题后,能够更加平易升级主题. 问题 ...
- Scrapy在pipeline中集成mongodb
settings.py中设置配置项 MONGODB_HOST = "127.0.0.1" MONGODB_PORT = 27017 MONGODB_DB_NAME = " ...
- 华企盾DSC无法从网页下载客户端(无法访问web端)
解决方法1:服务器安装目录需要安装在英文目录,否则DSCApache.exe会启动不了,导致无法访问5580网页. 解决方法2:5580端口占用也会导致DSCApache.exe启动不了,可打开服务器 ...
- android webview(外部浏览器)调起app
最近写的项目中涉及外部浏览器以及项目webview中调起app,所以总结下,和大家分享下. 总的实现方法还是比较简单的, 1:在清单中注册 首先在AndroidManifest文件中,注册一个过滤器 ...
- 【Python】【OpenCV】边缘检测和创建自定义核
对于使用OpenCV已有的算子,我们还可以自定义卷积核以达到不同的效果. filters.py 1 import cv2 2 import numpy 3 4 """ 定 ...
- NC65元数据添加七彩版时注意点
元数据添加七彩版时注意点 元数据七彩版模式 --- 主要添加Xml文件调整格式 添加时注意点如下 手动创建Panel时 自动生成的实现方法中有一个方法的返回值一定要为true 该方法主要是控制显不显示 ...
- 从零玩转设计模式之工厂方法设计模式-gonchangfangfamoshi
title: 从零玩转设计模式之工厂方法设计模式 date: 2022-12-08 13:22:13.669 updated: 2022-12-11 23:03:22.379 url: https:/ ...