亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

您當(dāng)前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

OpenSIPS-關(guān)于請求中Record Set和Loose Route再討論

2021-01-18 10:49:49   作者:james.zhu    來源:Asterisk開源派   評論:0  點(diǎn)擊:


  前面的文章中介紹了關(guān)于初始請求和后續(xù)請求的處理,在初始請求和后續(xù)請求的使用中還有另外兩個比較重要的關(guān)于SIP 請求路由的處理方式需要大家注意。這兩個路由的概念就是Record Set和Loose Route。筆者雖然在以前的文章中多次做過介紹,但是那些介紹都是基于基本的SIP route做的介紹,沒有具體到軟交換層面,例如,OpenSIPS平臺的具體使用方式。本文章進(jìn)一步討論關(guān)于Record Set和Loose Route的背景知識,希望能夠?yàn)樽x者提供一個針對OpenSIPS的相對比較全面的理解。
  1SIP路由相關(guān)背景知識
  關(guān)于這些相關(guān)概念的定義和細(xì)節(jié),讀者可以參考筆者的歷史文檔來進(jìn)一步了解關(guān)于record set 和loose route的區(qū)別以及應(yīng)用場景中可能出現(xiàn)的問題:
  除了以上的參考鏈接以外,筆者這里再次多IR初始請求和SR后續(xù)請求做一點(diǎn)補(bǔ)充說明。為了判斷其請求以及后續(xù)的處理流程,首先SIP 路由需要驗(yàn)證其請求是初始請求還是后續(xù)請求。針對loose route,如果是初始請求IR的話,初始請求創(chuàng)建dialog的,而后續(xù)請求則是在一個創(chuàng)建的dalog內(nèi)的請求。因此,后續(xù)請求SR需要判斷是否支持了To-tag。如果有To-tag, 則說明是一個后續(xù)請求,如果沒有To-tag,說明是一個初始請求,例如, INVITE 或者SUBSCRIBE等。
  2OpenSIPS的Record route
  在介紹以上這兩個概念之前,我們有必要再稍微回顧一下前面文章中所討論的
  initinital request(IR,初始請求)和sequential requests(SR-后續(xù)請求)的基本概念。簡單來說,常見的初始請求包括我們通常呼叫發(fā)起的請求-INVITE,后續(xù)請求包括掛機(jī)的BYE請求,ACK確認(rèn)或者re-INVITE請求。因?yàn)殡p方的呼叫需要經(jīng)過一個或者多個代理服務(wù)器地址,每個代理服務(wù)器地址需要對呼叫路徑做一個記錄。Record Set其實(shí)就是針對初始請求對呼叫路徑做的一個記錄值,記錄值包括IP地址和對端終端的Contact地址。以下圖例就是一個OpenSIPS的record route的處理流程,包括INVITE和200 OK的處理。
 
  當(dāng)被呼叫方返回到呼叫方時,被呼叫方通過后續(xù)請求對呼叫方進(jìn)行查詢回溯,找到呼叫方地址。當(dāng)然,被呼叫方返回時所使用的Record Set和呼叫方的Record Set是完全不同的,處理流程是正好相反的路徑。
  3OpenSIPS  loose route示例
  和Record Set相比,loose route是一個相對比較動態(tài)靈活的路由,后續(xù)請求會使用此路由根據(jù)代理地址和RURI終端地址返回到源呼叫方地址。BYE請求就是一個典型的后續(xù)請求,它通過loose route的路徑按照route set 地址組的列表返回到呼叫方終端A,以下圖例就是一個OpenSIPS中關(guān)于loose route的使用示例。
  4如何處理兩種路由
  前面筆者已經(jīng)提及,根據(jù)SIP規(guī)范和OpenSIPS的處理流程,如果代理需要record route或者loose route時,首先需要判斷支持了has_totag()。如果支持了的話,就執(zhí)行后續(xù)請求的處理,否則發(fā)起一個record route執(zhí)行初始請求的路由處理。在OpenSIPS中,通過route路由處理模塊進(jìn)行判斷處理。
 
  需要注意,通過以上針對路由處理的流程可以看出,如果是初始請求(IR)的話,初始請求需要耗費(fèi)更多的資源來進(jìn)行驗(yàn)證,查詢,定位等服務(wù)。如果是SR后續(xù)請求的話,它基本上不會消耗太多系統(tǒng)資源,它僅按照路由表返回呼叫方就可以。因此,后續(xù)請求處理速度相對比較快,也更高效。
  5其他討論
  因?yàn)镾IP規(guī)范和應(yīng)用場景,以及呼叫路徑的變化很大。一個SIP呼叫可以經(jīng)過多個網(wǎng)元和多個代理服務(wù)器地址,包括SBC,防火墻等。在早期的SIP規(guī)范RFC2543中規(guī)定了比較早的route方式-strict route(嚴(yán)格路由), 而Loose route則是SIP v 2版本,RFC3261中所支持的比較靈活的路由方式。后者可以支持R-URI不被修改,可以兼容RFC2543中的嚴(yán)格路由方式。嚴(yán)格路由是在初始請求創(chuàng)建dialog之前就已經(jīng)明確定義好了路由的路徑以及路由表。每個代理服務(wù)器嚴(yán)格按照路由表指定的路徑執(zhí)行,如果路由路徑中其中一個網(wǎng)元出現(xiàn)故障都會導(dǎo)致呼叫失敗。另外,如果UA支持了outbound-proxy以后就會出現(xiàn)其他的問題。因此,為了更加靈活地支持SIP的路由策略,loose route比較好的解決了這個問題,它通過:lr參數(shù)支持,允許每個目的地地址來路由數(shù)據(jù)包,并且每個目的地都有各自的機(jī)制兼容支持了嚴(yán)格路由策略。關(guān)于以上討論的具體細(xì)節(jié),讀者可以參考RFC3261-16.12了解更多規(guī)定。
  在SIP路由中,除了我們前面討論的以上路由表以外,還有一個比較重要的定義是Via。Record route其目的是在路由消息中充當(dāng)一個角色來影響Reg-URL(通過:lr參數(shù)決定request-URL。如果路由組中的第一個路由URL包含:lr, 則不會影響request-URL;如果如果路由組中的第一個路由URL不包含:lr,UA就會把第一個路由組的URL設(shè)置為request-URL,然后處理其余的路由組流程。),當(dāng)然也在VIA中支持部分的描述內(nèi)容。另外,VIA是被UAS用來決定響應(yīng)的下一個目的地地址的,它只是不斷添加代理Via地址,對Via地址不做修改,返回時刪除相應(yīng)的Via地址。最后,Via是基于事務(wù)層的路由記錄,請求所創(chuàng)建的事務(wù)完成以后,Via就會被丟棄;而Record Set是基于dialog的,呼叫的路徑會貫穿整個dialog中。
  6總結(jié)
  Record route和loose route在SIP 路由中分別進(jìn)行不同的處理。本文章重點(diǎn)介紹了關(guān)于OpenSIPS中兩種路由方式的區(qū)別以及發(fā)起方的不同,另外介紹了在OpenSIPS中如何發(fā)起兩種路由方式,最后討論了其他關(guān)于SIP路由,VIA一些區(qū)別。通過以上進(jìn)一步的討論,希望讀者對OpenSIPS中的Record route和loose route有一個比較完整的認(rèn)識,結(jié)合前面各種opensips的cfg場景配置文件能夠更多了解開源OpenSIPS的使用方式。
  參考資料:
  www.opensips.org
  www.freepbx.org.cn
  www.freesbc.cn
  融合通信/IPPBX/FreePBX商業(yè)解決方案:www.hiastar.com
  最新Asterisk完整中文用戶手冊詳解:www.asterisk.org.cn
  Freepbx/FreeSBC技術(shù)文檔: www.freepbx.org.cn
  如何使用免費(fèi)會話邊界控制器-FreeSBC,qq技術(shù)分享群:334023047
  關(guān)注微信公眾號:asterisk-cn,獲得有價值的通信行業(yè)技術(shù)分享
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

相關(guān)熱詞搜索: OpenSIPS

上一篇:UC行業(yè)需要更多的隱私監(jiān)管嗎?

下一篇:最后一頁

專題

CTI論壇會員企業(yè)

绥阳县| 大厂| 胶州市| 百色市| 板桥市| 望都县| 慈溪市| 穆棱市| 平谷区| 囊谦县| 土默特左旗| 积石山| 太仓市| 滕州市| 南乐县| 花莲市| 绥德县| 宁晋县| 越西县| 松滋市| 斗六市| 日照市| 琼结县| 太康县| 平潭县| 孟村| 广南县| 望奎县| 肇源县| 永登县| 法库县| 闸北区| 滨州市| 什邡市| 镇巴县| 内江市| 泰和县| 华坪县| 基隆市| 深水埗区| 白银市|