概述

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. 文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题

    九.用go语言,设 T 是一棵二叉搜索树,其关键字互不相同;设 x 是一个叶结点,y 为其父结点.证明: y.key 或者是 T 树中大于 x.key 的最小关键字,或者是 T 树中小于 x.key ...

  2. 基于winform(C#)的飞鸟小游戏

    本项目是一款基于C# (winform)版本的飞鸟小游戏,是一款益智类游戏 其效果如下图所示 如上图所示为飞鸟游戏的初始化界面: 可以看到游戏包含了四个功能: 启动 注册 登陆 排行榜 启动:是用于开 ...

  3. Android联系人增删改查

    1:申请权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-p ...

  4. ElasticSearch之文件描述符的数量

    ElasticSearch在运行过程中,涉及大量文件的打开.关闭.读.写等操作.因此当ElasticSearch进程的文件描述符数量不足时可能导致丢失数据等故障现象. 因此为保障ElasticSear ...

  5. UE5: UpdateOverlap - 从源码深入探究UE的重叠触发

    前言 出于工作需要和个人好奇,本文对UE重叠事件更新的主要函数UpdateOverlaps从源码的角度进行了详细的分析,通过阅读源码,深入理解重叠事件是如何被触发和更新的. 解决问题 阅读本文,你将得 ...

  6. java中根据公网IP获取地址

    package com.dashan.utils.iputils; import com.fasterxml.jackson.databind.ObjectMapper; import okhttp3 ...

  7. Llama2-Chinese项目:6-模型评测

      测试问题筛选自AtomBulb[1],共95个测试问题,包含:通用知识.语言理解.创作能力.逻辑推理.代码编程.工作技能.使用工具.人格特征八个大的类别. 1.测试中的Prompt   例如对于问 ...

  8. 实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联

    摘要:用实践案例带你掌握云连接CC如何实现跨区域多VPC与线下IDC Server互联. [背景] 当前在华为云华南.华东.香港region均部署了业务,同时在华南region通过云专线与线下IDC打 ...

  9. Volcano 监控设计解读,一看就懂

    摘要:Volcano 方便AI,大数据,基因,渲染等诸多行业通用计算框架介入,提供高性能任务调度引擎,高性能异构芯片管理,高性能任务运行管理等能力. Volcano 是一个 Kubernetes 云原 ...

  10. 聊聊Java的异常机制问题

    摘要:java异常指在程序运行时可能出现的一些错误,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,中断了正在执行的程序的正常指令流. 本文分享自华为云社区<Ja ...