本發(fā)明涉及通訊技術(shù)領(lǐng)域,特別是涉及一種會話?;罘椒把b置。
背景技術(shù):
Diameter協(xié)議族是新一代的AAA技術(shù),隨著LTE的技術(shù)發(fā)展,Diameter協(xié)議在越來越多的網(wǎng)絡(luò)中得到使用,越來越多的電信運營商選擇Diameter作為其進行認證,授權(quán),計費的基礎(chǔ)協(xié)議。
在基于Diameter的系統(tǒng)中,主要節(jié)點包括Diameter客戶端,Diameter服務(wù)端,Diameter中繼代理等,這些節(jié)點統(tǒng)稱為Diameter節(jié)點。在Diameter協(xié)議發(fā)展初期,網(wǎng)絡(luò)結(jié)構(gòu)簡單,通常只存在Diameter客戶端和Diameter服務(wù)端兩種節(jié)點。Diameter基礎(chǔ)協(xié)議中,推薦使用Origin-State-Id(源-狀態(tài)-標識)AVP(Attribute-Value-Pair,屬性-值-對)來標識設(shè)備狀態(tài),這個AVP在直連的兩個Diameter節(jié)點間收發(fā)用于方便接收方了解發(fā)送方的設(shè)備狀態(tài)。如果發(fā)送方重啟,接收方可以判斷出發(fā)送方狀態(tài)發(fā)生變化,則清除本地與發(fā)送方相關(guān)聯(lián)的會話資源,達到會話?;畹哪康?。
這種方法在網(wǎng)絡(luò)結(jié)構(gòu)簡單,僅存在客戶端和服務(wù)端直連的情況下是有效的,而隨著Diameter協(xié)議應(yīng)用越來越廣泛,網(wǎng)絡(luò)結(jié)構(gòu)也越發(fā)復雜,引入了Diameter Relay/Proxy(中繼/代理)節(jié)點后,客戶度和服務(wù)端不再直連,傳統(tǒng)的會話?;罘绞綄⒋嬖诤艽髥栴}。例如當客戶端通過Diameter Proxy節(jié)點與服務(wù)端準直連,此時客戶端向服務(wù)端發(fā)起了大量的會話(例如計費會話),這種會話一般都是有狀態(tài)會話,存在會話生命期,而當會話生命期未終結(jié)時,若客戶端忽然重啟,由于服務(wù)端沒有與客戶端直連,無法感知客戶端的狀態(tài),因此無法及時釋放無效會話,從而極大消耗服務(wù)端的會話資源,造成其服務(wù)能力下降。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種會話?;罘椒把b置,用以解決現(xiàn)有技術(shù)中非直連節(jié)點間無效會話資源無法及時釋放而影響服務(wù)能力的問題。
一方面,本發(fā)明提供一種會話?;罘椒?,包括:中間節(jié)點獲取客戶端的設(shè)備狀態(tài)信息;在所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,所述中間節(jié)點將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端,以使所述服務(wù)端釋放與所述客戶端的無效會話資源。
可選的,所述中間節(jié)點將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端包括:所述中間節(jié)點通過與所述服務(wù)端之間的鏈路?;钕?,將所述客戶端重啟后的設(shè)備狀態(tài)通知所述服務(wù)端。
可選的,所述鏈路?;钕ㄦ溌肺帐窒WR消息,所述客戶端變化后的設(shè)備狀態(tài)信息攜帶在所述DWR消息的擴展的屬性值對AVP中。
可選的,所述中間節(jié)點獲取客戶端的設(shè)備狀態(tài)信息之后,所述在所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,所述中間節(jié)點將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端之前,所述方法還包括:所述中間節(jié)點根據(jù)獲取的設(shè)備狀態(tài)信息確定所述客戶端的設(shè)備狀態(tài)是否發(fā)生變化。
可選的,所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況包括所述客戶端重啟后的設(shè)備狀態(tài)與重啟前的設(shè)備狀態(tài)不同。
可選的,所述中間節(jié)點包括中繼節(jié)點或代理節(jié)點。
另一方面,本發(fā)明還提供一種會話?;钛b置,包括:獲取單元,用于獲取客戶端的設(shè)備狀態(tài)信息;通知單元,用于在所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端,以使所述服務(wù)端釋放與所述客戶端的無效會話資源。
可選的,所述通知單元,具體用于通過與所述服務(wù)端之間的鏈路?;钕ⅲ瑢⑺隹蛻舳酥貑⒑蟮脑O(shè)備狀態(tài)通知所述服務(wù)端。
可選的,所述鏈路保活消息包括鏈路握手消息DWR消息,所述客戶端變化后的設(shè)備狀態(tài)信息攜帶在所述DWR消息的擴展的屬性值對AVP中。
可選的,所述裝置還包括:確定單元,用于在所述獲取單元獲取客戶端的設(shè)備狀態(tài)信息之后,所述通知單元將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端之前,根據(jù)所述獲取單元獲取的設(shè)備狀態(tài)信息確定所述客戶端的設(shè)備狀態(tài)是否發(fā)生變化。
本發(fā)明實施例提供的會話?;罘椒把b置,中間節(jié)點能夠獲取客戶端的設(shè)備狀態(tài)信息,根據(jù)設(shè)備狀態(tài)信息了解客戶端的設(shè)備狀態(tài),在客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,所述中間節(jié)點能夠?qū)⒖蛻舳俗兓蟮脑O(shè)備狀態(tài)通知服務(wù)端,從而使服務(wù)端及時釋放與所述客戶端的無效會話資源,有效提高了節(jié)點的處理能力和可靠性。
附圖說明
圖1是本發(fā)明實施例提供的會話?;罘椒ǖ囊环N流程圖;
圖2是本發(fā)明實施例中進行diameter會話的設(shè)備的通信關(guān)系示意圖;
圖3是本發(fā)明實施例提供的會話?;罘椒ǖ囊环N詳細流程圖;
圖4是本發(fā)明實施例提供的會話保活裝置的一種結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明進行詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
如圖1所示,本發(fā)明實施例提供一種會話?;罘椒ǎǎ?/p>
S11,中間節(jié)點獲取客戶端的設(shè)備狀態(tài)信息;
S12,在所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,所述中間節(jié)點將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端,以使所述服務(wù)端釋放與所述客戶端的無效會話資源。
本發(fā)明實施例提供的會話保活方法,中間節(jié)點能夠獲取客戶端的設(shè)備狀態(tài)信息,根據(jù)設(shè)備狀態(tài)信息了解客戶端的設(shè)備狀態(tài),在客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,所述中間節(jié)點能夠?qū)⒖蛻舳俗兓蟮脑O(shè)備狀態(tài)通知服務(wù)端,從而使服務(wù)端及時釋放與所述客戶端的無效會話資源,有效提高了節(jié)點的處理能力和可靠性。
本發(fā)明實施例中,服務(wù)端、客戶端和中間節(jié)點均可以是基于diameter協(xié)議的系統(tǒng)中的普通節(jié)點。根據(jù)會話發(fā)起方和接收方的不同,各個節(jié)點的角色也可以不同,同一個節(jié)點在一個會話中可能是客戶端,但在其他會話中也可能是中間節(jié)點或者服務(wù)端。在一個非直接節(jié)點間的會話中,中間節(jié)點可以為一個也可以為多個。
具體而言,非直連節(jié)點間的diameter會話可如圖2所示。其中,Diameter客戶端,可用于向Diameter服務(wù)端發(fā)送Diameter消息,執(zhí)行與Diameter服務(wù)器之間的認證,授權(quán)以及計費操作,發(fā)起Diameter會話。Diameter中間節(jié)點,可包括中繼節(jié)點(Relay)或代理節(jié)點(proxy),可用于對消息進行轉(zhuǎn)發(fā)或者經(jīng)過處理后轉(zhuǎn)發(fā),協(xié)助完成客戶端和服務(wù)端之間的AAA操作,對于有狀態(tài)會話,Proxy代理可以保持其會話狀態(tài)。Diameter服務(wù)端,可用于與Diameter客戶端互相傳輸Diameter消息,執(zhí)行認證,授權(quán)以及計費操作,將處理結(jié)果返回給客戶端。
可選的,客戶端的設(shè)備狀態(tài)可能會因為一些情況而發(fā)生變化,例如,客戶端重啟后的設(shè)備狀態(tài)與重啟前的設(shè)備狀態(tài)不同。即,如果客戶端在會話進行期間意外重啟,客戶端的設(shè)備狀態(tài)會因為這次重啟而發(fā)生變化,同時客戶端與中間節(jié)點之間的會話就會中斷。重啟后,客戶端會向中間節(jié)點重新發(fā)送鏈路建立請求,中間節(jié)點可以通過該鏈路建立請求獲知客戶端重啟后的設(shè)備狀態(tài)。為了使服務(wù)端也獲知客戶端重啟后的設(shè)備狀態(tài),可選的,在步驟S12中,中繼節(jié)點可以通過自身與服務(wù)端之間的鏈路?;钕ⅲ瑢⑺隹蛻舳酥貑⒑蟮脑O(shè)備狀態(tài)通知所述服務(wù)端。
具體而言,所述鏈路?;钕⒖梢园ㄦ溌肺帐窒WR消息,所述客戶端變化后的設(shè)備狀態(tài)信息攜帶在所述DWR消息的擴展的屬性值對AVP中。
進一步的,在中間節(jié)點獲取客戶端的設(shè)備狀態(tài)信息之后,為了確定客戶端的設(shè)備狀態(tài)是否發(fā)生了變化,在中間節(jié)點將客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端之前,本發(fā)明實施例提供的會話?;罘椒ㄟ€可包括中間節(jié)點根據(jù)獲取的設(shè)備狀態(tài)信息確定所述客戶端的設(shè)備狀態(tài)是否發(fā)生變化。
例如,會話正常的情況下,中間節(jié)點可以通過與所述客戶端之間的會話消息獲取所述客戶端的設(shè)備狀態(tài)信息,根據(jù)該信息獲知客戶端處于第一設(shè)備狀態(tài);當所述客戶端重啟后,中間節(jié)點可以通過與所述客戶端之間的鏈路重建消息或能力交換消息獲取所述客戶端重啟后的設(shè)備狀態(tài)信息,獲知此時客戶端處于第二設(shè)備狀態(tài),第二設(shè)備狀態(tài)與第一設(shè)備狀態(tài)不同,則中間節(jié)點可以確定客戶端的設(shè)備狀態(tài)發(fā)生了變化。
下面通過具體實施例來對本發(fā)明提供的會話?;罘椒ㄟM行詳細說明。
如圖3所示,本實施例提供的會話?;罘椒òㄈ缦虏襟E:
S101,作為客戶端的Diameter節(jié)點生成一條會話創(chuàng)建請求消息(Request),消息中攜帶Origin-State-Id AVP,該AVP表明了當前客戶端狀態(tài)值,客戶端將該請求消息發(fā)送到中間節(jié)點Diameter代理上,Diameter代理與Diameter服務(wù)端相連。
S102,當代理接收到請求消息后,通過路由策略將該請求消息轉(zhuǎn)發(fā)到Diameter服務(wù)端,該請求消息中攜帶的Origin-State-Id AVP不做任何變化。
S103,當Diameter服務(wù)端成功處理了這條會話創(chuàng)建請求,為其創(chuàng)建一條新的會話,并緩存客戶端對應(yīng)的狀態(tài)標識值,即Origin-State-Id AVP,然后給Diameter客戶端回復成功響應(yīng),Diameter代理成功將響應(yīng)消息返回Diameter客戶端,此時會話創(chuàng)建成功。
S104,在會話持續(xù)階段,Diameter客戶端發(fā)生故障重啟,Diameter客戶端和Diameter代理之間的鏈路中斷,并重新建鏈,建鏈成功后在能力交換消息 (CER/CEA)中攜帶Origin-State-Id AVP,Diameter客戶端向Diameter代理通知了Diameter客戶端新的狀態(tài)值。Diameter代理成功處理了與Diameter客戶端之間的能力交換消息,但是該消息不會轉(zhuǎn)發(fā)到Diameter服務(wù)端,服務(wù)端到目前為止還不知道客戶端發(fā)生重啟,在重啟前建立的會話都成為無效會話。
S105,由于Diameter客戶端發(fā)生故障重啟,因此短時間內(nèi)暫時無法提供服務(wù),因此一段時間內(nèi)沒有新的會話相關(guān)請求消息發(fā)送到Diameter代理。此時可以利用Diameter代理和Diameter服務(wù)端之間的鏈路?;钕WR消息來解決狀態(tài)更新通知的問題??蛇x的,可以在鏈路狀態(tài)?;钕⒅性黾涌蛇xOrigin-Session-Host AVP并配合消息中原有的Origin-State-Id AVP來實現(xiàn)。消息具體如下:
<DWR>::=<Diameter Header:280,REQ>
{Origin-Host}
{Origin-Realm}
[Origin-State-Id]
[Origin-Session-Host]
*[AVP]
其中,Origin-Session-Host為產(chǎn)生源會話的主機名,是在原有DWR消息基礎(chǔ)上的擴展。Diameter代理節(jié)點檢測到Diameter客戶端發(fā)生重啟后,在代理節(jié)點自身與Diameter服務(wù)端之間的DWR消息中攜帶Origin-Session-Host,并將該DWR消息發(fā)送給Diameter服務(wù)端。其中,Origin-Session-Host值設(shè)置為Diameter客戶端的主機名,其Origin-State-Id的值相應(yīng)設(shè)置為Diameter客戶端的源狀態(tài)標識值。
S106,Diameter服務(wù)端接收到DWR后從消息中獲取到Diameter客戶端的主機名和其狀態(tài)標識值,就可以判斷出當前本地是否存在無效會話資源需要釋放。
本實施例提供的會話?;罘椒ǎㄟ^對DWR消息的擴展,在遵循協(xié)議的基礎(chǔ)上高效地解決了非相鄰節(jié)點之間會話保活的難題。在不更改當前組網(wǎng)架 構(gòu),不引入新的消息的基礎(chǔ)上實現(xiàn)了非直連節(jié)點間會話保活功能,可以提高Diameter節(jié)點快速處理故障能力避免無效資源未及時釋放而影響提供服務(wù)。
相應(yīng)的,如圖4所示,本發(fā)明的實施例還提供一種會話?;钛b置,包括:
獲取單元41,用于獲取客戶端的設(shè)備狀態(tài)信息;
通知單元42,用于在所述客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端,以使所述服務(wù)端釋放與所述客戶端的無效會話資源。
本發(fā)明實施例提供的會話保活裝置,獲取單元41能夠獲取客戶端的設(shè)備狀態(tài)信息,根據(jù)設(shè)備狀態(tài)信息了解客戶端的設(shè)備狀態(tài),通知單元42能夠在客戶端的設(shè)備狀態(tài)發(fā)生變化的情況下,將客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端,從而使服務(wù)端及時釋放與所述客戶端的無效會話資源,有效提高了節(jié)點的處理能力和可靠性。
可選的,通知單元42,具體可用于通過與所述服務(wù)端之間的鏈路?;钕?,將所述客戶端重啟后的設(shè)備狀態(tài)通知所述服務(wù)端。
可選的,所述鏈路保活消息可以包括鏈路握手消息DWR消息,所述客戶端變化后的設(shè)備狀態(tài)信息攜帶在所述DWR消息的擴展的屬性值對AVP中。
進一步的,本發(fā)明實施例提供的會話?;钛b置還可包括確定單元,用于在獲取單元41獲取客戶端的設(shè)備狀態(tài)信息之后,通知單元42將所述客戶端變化后的設(shè)備狀態(tài)通知服務(wù)端之前,根據(jù)獲取單元41獲取的設(shè)備狀態(tài)信息確定所述客戶端的設(shè)備狀態(tài)是否發(fā)生變化。
盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實施例,本領(lǐng)域的技術(shù)人員將意識到各種改進、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當不限于上述實施例。