概述
sip協(xié)議標(biāo)準(zhǔn)RFC3261中俏让,對(duì)3XX重定向有明確的定義楞遏。
freeswitch中如何使用3XX redirect的特性茬暇,如何落地,應(yīng)用場(chǎng)景有哪些橱健?
環(huán)境
centos:CentOS? release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
3XX重定向
RFC3261中對(duì)3XX的響應(yīng)定義是這樣的而钞。
3xx responses give information about theuser's new location, or about alternative services that might be able tosatisfy the call.
3XX響應(yīng)提供有關(guān)用戶新位置的信息,或者可能能夠滿足呼叫請(qǐng)求的替代服務(wù)拘荡。
各種具體的響應(yīng)消息定義如下臼节。
300 Multiple Choices: Indicates that theaddress resolved to more than one location.
300 多重選擇:響應(yīng)中帶有多個(gè)可選地址。
301 Moved permanently: Indicates user is nolonger available at this location, an alternate location should be included inthe header.
301 永久轉(zhuǎn)移:當(dāng)前地址永久性不可用珊皿,響應(yīng)中附帶可選的新地址网缝。
302 Moved Temporarily: Indicates that theuser in temporarily unavailable, an alternate location should be included inthe header.
302 臨時(shí)轉(zhuǎn)移:當(dāng)前地址臨時(shí)性不可用,響應(yīng)中附帶可選的新地址蟋定。
305 Use Proxy: This response indicates thatthe caller must use a proxy to contact the called party.
305 使用代理:該響應(yīng)表示用戶必須使用代理來(lái)建立呼叫粉臊。
380 Call is not successful but alternateservices are available.
380 呼叫失敗但是有可用的替代服務(wù)。
freeswitch中的重定向
freeswitch的官方文檔中驶兜,只找到了300和302響應(yīng)的app接口“mod_dptools: redirect”扼仲。
應(yīng)用很簡(jiǎn)單,dialplan撥號(hào)計(jì)劃中直接配置使用抄淑。
撥號(hào)計(jì)劃實(shí)例:
<action application="redirect" data="sip:foo@bar.com"/>
<action application="redirect" data="sip:foo@bar.com,sip:foo@end.com"/>
查看fs源代碼屠凶,發(fā)現(xiàn)的可用的數(shù)據(jù)格式。
<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=0.128,;q=0.129,;q=0.15">
其中的“q值”可以用來(lái)作為redirect的排序依據(jù)肆资。
配置測(cè)試
構(gòu)造一個(gè)簡(jiǎn)單場(chǎng)景矗愧,測(cè)試一下redirect的流程。
1001->fs138->fs137->fs138->1002
其中郑原,fs137開(kāi)放多個(gè)端口5080唉韭、5082、5084犯犁、5086属愤。
fs137的5080端口收到invite之后,使用redirect返回300重定向消息酸役,重定向位置為fs137的多個(gè)端口5082住诸、5084、5086簇捍。
修改dialplan撥號(hào)計(jì)劃如下。
<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之后俏拱,發(fā)起呼叫測(cè)試暑塑,sngrep的信令流程如下。
redirect 300的消息流程截圖锅必。
重定向之后的呼叫流程截圖事格。
總結(jié)
可以在redirect之前惕艳,增加一致性HASH的接口來(lái)計(jì)算重定向目標(biāo),以達(dá)到負(fù)載均衡的目的驹愚。
3XX重定向服務(wù)可以用在故障轉(zhuǎn)移場(chǎng)景远搪?
3XX重定向服務(wù)在分布式大集群中應(yīng)用的場(chǎng)景,集群容量上限該如何計(jì)算逢捺?
302重定向只能在呼叫未接通之前使用谁鳍。
空空如常
求真得真