• <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è) > 資訊 > 國內 >

    SIP協(xié)議及新IP企業(yè)通信網(wǎng)絡(luò )技術(shù)概論-核心SIP技術(shù)介紹-8

    --SIP頭Diversion和History-Info其兼容性討論

    2021-12-14 13:43:14   作者: james.zhu    來(lái)源:Asterisk開(kāi)源派   評論:0  點(diǎn)擊:



      隨著(zhù)SIP移動(dòng)性的不斷擴展,網(wǎng)絡(luò )中各種網(wǎng)元形態(tài)可以通過(guò)不同的形式不同SIP代理服務(wù)器可以發(fā)起呼叫。一些用戶(hù)通過(guò)PSTN,SS7網(wǎng)絡(luò )進(jìn)行呼叫,另外一些用戶(hù)通過(guò)SIP物理話(huà)機進(jìn)行呼叫,還有一些用戶(hù)可能通過(guò)其他瀏覽器端的呼叫源發(fā)起呼叫。在這種復雜的網(wǎng)絡(luò )環(huán)境中,因為安全和業(yè)務(wù)的要求,需要對呼叫方以及轉發(fā)原因等做標識說(shuō)明,通過(guò)標識說(shuō)明可以獲悉其身份驗證和呼叫原因。在很多呼叫業(yè)務(wù)場(chǎng)景中,我們有時(shí)可能會(huì )看到一些接入設備,例如語(yǔ)音網(wǎng)關(guān),特別是SBC需要配置Diversion和History-Info來(lái)實(shí)現呼叫轉移等功能支持。但是,這兩個(gè)擴展以及其相關(guān)協(xié)議都發(fā)生了變化,有時(shí)這兩個(gè)頭可能存在同時(shí)共存的可能,可能會(huì )影響新的SIP工作環(huán)境。一些規范已是歷史規范,例如RFC5806,新SIP系統可以不再支持,一些規范已經(jīng)廢止,使用了新規范來(lái)替代,例如RFC4244使用RFC7044替代。今天,筆者將介紹其相關(guān)規范的更新背景,Diversion和History-Info的使用,以及RFC5806和RFC7044的兼容性協(xié)議討論。通過(guò)這些介紹,結合最新規范,為讀者提供一個(gè)新的學(xué)習路徑,幫助讀者進(jìn)一步了解SIP頭中Diversion和History-Info的變化以及映射處理流程。
      1RFC5806以及RFC4244更新背景說(shuō)明
      RFC3261為了擴展其呼叫標識,支持了擴展協(xié)議RFC5806,通過(guò)此擴展協(xié)議定義了呼叫Diversion頭。另外,隨著(zhù)SIP環(huán)境越來(lái)越復雜,一些場(chǎng)景中支持了非常靈活的業(yè)務(wù)場(chǎng)景,例如,基于瀏覽器的頁(yè)面點(diǎn)擊呼叫和業(yè)務(wù)應用的綁定,點(diǎn)擊呼叫又涉及了URL地址。RFC4244對History-Info進(jìn)行了定義,支持了Request History請求歷史。但是,因為網(wǎng)絡(luò )環(huán)境已經(jīng)變得更加復雜,一些業(yè)務(wù)要求也發(fā)生了變化。經(jīng)過(guò)多年使用,RFC4244仍然存在很多的問(wèn)題,例如,我們必須假設History-Info是需要的,但是在實(shí)際呼叫過(guò)程中,很多呼叫穿越了多臺設備和服務(wù),每個(gè)設備和服務(wù)都可能設置了一些關(guān)聯(lián)機制和鼓勵規則,到最終目的地以后,終端可能僅第一個(gè)顯示第一個(gè)轉發(fā)和最后一個(gè)轉發(fā)記錄,中間各種代理服務(wù)器和設備的轉發(fā)數據就被丟棄。當然,除了以上舉例以外,RFC4244還有其他的一些問(wèn)題,具體詳情,讀者可以查閱RFC7044。根據以上介紹,我們開(kāi)源看到,目前的結果是,RFC5806已成為RFC的歷史規范,不再是一個(gè)標準規范,另外,因為各種問(wèn)題,RFC4244也已經(jīng)不再進(jìn)行支持。因此,一般新的SIP系統不會(huì )將RFC580作為一個(gè)規范。并且,比較重要的是,在IETF中,RFC7044將作為一個(gè)新的規范。
      除了筆者以上討論以外,另外提醒讀者,History-Info也同時(shí)在3GPP的規范RFC4458中做了定義。在RFC4458中,它僅針對語(yǔ)音留言的處理做了規范,沒(méi)有涉及其他的業(yè)務(wù)場(chǎng)景。
      2關(guān)于RFC5806-Diversion頭說(shuō)明
      RFC5806是SIP協(xié)議的一個(gè)擴展協(xié)議,它對被呼叫方提供了一種能力支持,可以獲悉呼叫源身份和呼叫轉發(fā)到原因。通過(guò)Diversion頭傳輸呼叫源信息和被轉發(fā)原因。它可以支持很多的增強服務(wù),例如融合信息,第三方語(yǔ)音郵箱和自動(dòng)呼叫分配等應用場(chǎng)景中。另外。Diversion頭也被寬泛地運用在和傳統ISDN接入設備環(huán)境中,通過(guò)重轉ISDN/ISUP信令信息,這些信令信息可用來(lái)支持用戶(hù)需要的各種增強服務(wù)。網(wǎng)關(guān)的重要作用就是和SIP網(wǎng)絡(luò )進(jìn)行對接,所以,ISDN接入方使用Diversion也可以充分實(shí)現對SIP網(wǎng)絡(luò )的支持。在本文章中,筆者通過(guò)一個(gè)簡(jiǎn)單的呼叫轉發(fā)功能來(lái)說(shuō)明,SIP Diversion頭是如何工作的。關(guān)于接入設備的配置,包括SBC的支持,用戶(hù)可以具體廠(chǎng)家的產(chǎn)品配置來(lái)獲得其細節。
      很多用戶(hù)對Diversion比較迷惑,其實(shí),對被呼叫方或者接聽(tīng)方來(lái)說(shuō),它的作用僅為了回答兩個(gè)問(wèn)題:這個(gè)呼叫從哪里轉發(fā)過(guò)來(lái)?為什么轉發(fā)這個(gè)呼叫?以下是一個(gè)呼叫轉發(fā)的設置示例。在以下設置中,呼叫方(老王)呼叫了被呼叫方(james.zhu)以后,被呼叫方因為某種原因,暫時(shí)不能接聽(tīng)呼叫,他設置了轉發(fā)設置。呼叫抵達被呼叫方以后,然后通過(guò)SIP代理轉發(fā)到了用戶(hù)Eric的終端。Eric接聽(tīng)呼叫時(shí),他知道這個(gè)呼叫是來(lái)自于誰(shuí)的呼叫,和為什么他不能接聽(tīng)呼叫。
      
      SIP Diversion 呼叫轉發(fā)示例
      在以上的流程中,代理服務(wù)器設置了呼叫(呼叫未應答-CFNA)超時(shí)設置,如果被呼叫方振鈴超時(shí),代理服務(wù)器對其發(fā)送取消,然后被呼叫方返回200 OK。代理服務(wù)器收到了被呼叫方的200 OK以后,根據其轉發(fā)呼叫設置的地址,對Eric再次進(jìn)行呼叫,并且攜帶了Diversion頭的信息,包括呼叫轉發(fā)源地址和轉發(fā)原因。Eric接聽(tīng)呼叫,然后執行雙方ACK確認。除了以上呼叫未應答的示例以外,Diversin也可以支持其他的幾種呼叫轉發(fā)原因設置,這些原因會(huì )通過(guò)Diversion進(jìn)行傳輸,具體包括:
    • CFUNC: Call Forward Unconditional
    • CFTOD: Call Forward Time-of-Day
    • CFB:   Call Forward on Busy
    • CFNA:  Call Forward on No Answer
    • CFUNV: Call Forward Unavailable
    • ACD: Automatic Call Distribution
      以上原因都會(huì )通過(guò)Diversion傳輸到最終呼叫接聽(tīng)方地址。所以,如果讀者在問(wèn)題排查遇到問(wèn)題時(shí),可以按照以上轉發(fā)場(chǎng)景進(jìn)行排查。更多用戶(hù)創(chuàng )建中如何實(shí)現Diverison的工作流程,筆者建議讀者可以查閱RFC5806來(lái)了解具體詳解。不過(guò),此規范已經(jīng)成為一個(gè)歷史規范,如果讀者想在最新SIP產(chǎn)品中支持類(lèi)似Diversion的頭控制,讀者需要參考更新的規范RFC7044。
      3關(guān)于RFC7044的History-Info 說(shuō)明以及和Diversion兼容性問(wèn)題
      在一些應用服務(wù)中,特別是SIP參與的服務(wù)中,它們要求SIP具備一種能力,SIP請求為什么,并且是如何抵達這個(gè)具體的應用。我們在SIP終端可以經(jīng)常看到的應用,例如頁(yè)面點(diǎn)擊呼叫和一些終端所支持的呼叫歷史記錄,呼叫log或者語(yǔ)音郵箱等。雖然,目前很多的應用可以非常簡(jiǎn)單實(shí)現重定向這些服務(wù),能夠對具體的應用提供類(lèi)似的服務(wù),但是,這些具體的應用缺乏一個(gè)完整的機制來(lái)實(shí)現規范化處理,保證SIP請求那個(gè)重定向到歷史記錄中。具體應用也希望歷史請求可以通過(guò)規范機制路由到具體的應用環(huán)境中。因此,在RFC7044規范中,通過(guò)請求歷史對機制有了明確的定義,History-Info捕獲請求歷史,它提供了一種機制來(lái)保證對各種具體應用的支持。筆者仍然以呼叫未應答作為一個(gè)示例來(lái)說(shuō)明代理服務(wù)器如何傳輸History-Info頭以及各種參數的。
     
      在以上的呼叫示例中,基本的流程和Diversion完全相似,其區別主要體現在History-Info頭和其參數不同。History-Info頭主要包括了hi-targeted-to-uri,hi-index和hi-target-param。其中,hi-target-param包括了rc,mp或者np等不同參數值。rc和mp指示了新目的地請求決定機制,np則表示目的地無(wú)修改。
      通過(guò)以上示例,我們可以看出,很多情況下如果設備和服務(wù)器都涉及了多個(gè)呼叫節點(diǎn)的話(huà),在呼叫轉發(fā)業(yè)務(wù)中有可能出現invite中攜帶Diversion頭,也有可能出現攜帶History-Info頭的呼叫。這兩個(gè)頭的參數出現在一個(gè)正常轉發(fā)呼叫業(yè)務(wù)中,兩種頭可能出現同時(shí)并存的狀態(tài)。當然,在實(shí)際的呼叫會(huì )話(huà)中,一個(gè)會(huì )話(huà)信令不可能同時(shí)存在Diversion和History-Info的互相不兼容的問(wèn)題,它們之間必須有一個(gè)兼容機制或者映射機制來(lái)保證呼叫轉發(fā)到正常進(jìn)行。從兼容性的角度來(lái)說(shuō),和Diversion相比,History-Info相對支持的服務(wù)更廣泛一點(diǎn),因此,Diverison需要進(jìn)一步和History-Info兼容。RFC7544就是為了滿(mǎn)足其映射關(guān)系發(fā)布的一個(gè)RFC說(shuō)明。在關(guān)于Diversion 頭和History-Info映射關(guān)系的RFC7544中,具體討論了關(guān)于Diversion頭映射到History-Info的示例說(shuō)明,讀者可以根據其詳解做更深入了解。以下是Diversion Header Field 映射到History-Info Header Field主要參數列表對比,詳細說(shuō)明參考RFC7544-5。
    <table style="margin: 0px 0px 10px; padding: 0px; outline: 0px; border-collapse: collapse; width: 677px; max-width: 100%; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, " helvetica="" neue",="" "pingfang="" sc",="" "hiragino="" sans="" gb",="" "microsoft="" yahei="" ui",="" yahei",="" arial,="" sans-serif;="" font-size:="" 16px;="" letter-spacing:="" 0.544px;="" text-align:="" justify;="" overflow-wrap:="" break-word="" !important;"="">
    Source
    Destination
    Diversion header component
    History-Info header component
     name-addr
    hi-targeted-to-uri
    reason of the previous
    Diversion entry
    cause URI parameter
    "unknown"
    404 (default 'cause' value)
     "unconditional"
    302
    "user-busy"
    486
    "no-answer"
    408
    "deflection "
    480 or 487
    "unavailable"
    503
    "follow-me"
    404
    "out-of-service"
    404
    。。。。 。。。。。
      總結
      SIP擴展支持是一個(gè)非常復雜和具體的過(guò)程,在技術(shù)發(fā)展過(guò)程中,SIP協(xié)議和具體場(chǎng)景之間一直存在多種形態(tài)的兼容性支持問(wèn)題。Diversion和History-Info的支持,要求各種代理服務(wù)器和終端,接入設備都都需要完美兼容Diversion和History-Info來(lái)保證呼叫轉發(fā)的成功。
      筆者針對Diversion和History-Info的相關(guān)協(xié)議進(jìn)行了充分討論,針對兩種頭分別通過(guò)示例進(jìn)行了具體的流程說(shuō)明,解釋了幾個(gè)相關(guān)協(xié)議的歷史變更和其存在的問(wèn)題,同時(shí)說(shuō)明了History-Info所支持的最新規范RFC7044,以及關(guān)于RFC5806到RFC7044轉換的說(shuō)明協(xié)議讀者開(kāi)源根據其技術(shù)脈絡(luò ),如果在Diversion或History-Info頭處理發(fā)現有兼容性問(wèn)題的話(huà),此文章可以作為一個(gè)排查指導來(lái)對照學(xué)習。
      參考資料:
    • https://datatracker.ietf.org/doc/html/rfc7044
    • https://datatracker.ietf.org/doc/html/rfc4244
    • www.dinstar.cn
    • www.asterisk.org.cn
    • https://datatracker.ietf.org/doc/html/rfc5806
    • https://datatracker.ietf.org/doc/html/rfc4458
    • https://datatracker.ietf.org/doc/html/rfc7544
    • http://pike.lysator.liu.se/docs/ietf/rfc/75/rfc7544.xml

    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

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

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 建平县| 休宁县| 海阳市| 南召县| 闵行区| 盐津县| 特克斯县| 延津县| 清远市| 合江县| 巴中市| 沿河| 左权县| 卓资县| 二连浩特市| 东至县| 开原市| 顺义区| 龙陵县| 福泉市| 分宜县| 兴隆县| 咸阳市| 荆州市| 张家口市| 永德县| 周口市| 杭锦后旗| 鄢陵县| 朝阳县| 岳阳县| 兰坪| 霍林郭勒市| 广宁县| 乌鲁木齐市| 巩义市| 雅江县| 墨脱县| 搜索| 舞阳县| 芦溪县| http://444 http://444 http://444 http://444 http://444 http://444