• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 資訊 > 文章精選 >
     首頁(yè) > 資訊 > 文章精選 >

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

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


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

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

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

    下一篇:最后一頁(yè)

    專(zhuān)題

    CTI論壇會(huì )員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 永城市| 监利县| 栾川县| 宜阳县| 海南省| 金门县| 波密县| 宁河县| 福州市| 绍兴市| 南昌市| 长治市| 宁蒗| 济源市| 兰溪市| 嘉义县| 开江县| 漳浦县| 静海县| 自治县| 大同市| 磴口县| 武穴市| 武强县| 临湘市| 安康市| 尚义县| 泰宁县| 泰和县| 石狮市| 安庆市| 监利县| 上蔡县| 习水县| 绥江县| 佛坪县| 永寿县| 民权县| 新民市| 陈巴尔虎旗| 五大连池市| http://444 http://444 http://444 http://444 http://444 http://444