DIAMETER基礎協議

Diameter協議族包括基礎協議(Diameter Base Protocol)和各種應用協議。本文介紹的基礎協議提供了作爲一個AAA協議的最低需求,是Diameter網絡節點都必須實現的功能,包括節點間能力的協商、Diameter消息的接收及轉發、計費信息的實時傳輸等。應用協議則充分利用基礎協議提供的消息傳送機制,規範相關節點的功能以及其特有的消息內容,來實現應用業務的AAA。基礎協議可以作爲一個計費協議單獨使用,但一般情況下需與某個應用一起使用。

 

圖1是Diameter的協議層次圖。

Diameter網絡節點

在Diameter協議中,包括多種類型的Diameter節點。除了Diameter客戶端和Diameter服務器外,還有Diameter中繼、Diameter代理、Diameter重定向器和Diameter協議轉換器。

● Diameter中繼 能夠從Diameter請求消息中提取信息,再根據Diameter基於域的路由表的內容決定消息發送的下一跳Diameter節點。Diameter中繼只對過往消息進行路由信息的修改,而不改動消息中的其他內容。

● Diameter代理 根據Diameter路由表的內容決定消息發送的下一跳Diameter節點。此外,Diameter代理能夠修改消息中的相應內容。

● Diameter重定向器 不對消息進行應用層的處理,它統一處理Diameter消息的路由配置。當一個Diameter節點按照配置將一個不知道如何路由的請求消息發給Diameter重定向器時,重定向器將根據其詳盡的路由配置信息,把路由指示信息加入到請求消息的響應裏,從而明確地通知該Diameter節點的下一跳Diameter節點。

● Diameter協議轉換器 主要用於實現RADIUS與Diameter,或者TACACS+與Diameter之間的協議轉換。

上述各種Diameter節點,通過配置建立一對一的網絡連接,組成一個Diameter網絡。

Diameter網絡節點間的對等連接

Diameter節點間的網絡連接是在Diameter節點啓動過程中動態建立的基於TCP或者SCTP傳輸協議上的套接字連接。

對於一個Diameter節點,其對端節點,或者基於靜態配置,或者基於動態(利用SLP、DNS協議)發現。當Diameter協議棧啓動時,Diameter節點會嘗試與每一個它所得知的對端節點建立套接字連接。

在成功建立一個套接字連接,即對等連接後,兩個Diameter節點將進行能力協商,交換協議版本、所支持的應用協議、安全模式等信息。能力協商是通過Diameter的能力交換請求(CER,Capabilities-Exchange-Request)和能力交換響應(CEA,Capabilities-Exchange-Answer)兩個Diameter消息的交互實現的。能力協商之後,應該把有關對端所支持的應用等信息保存在高速緩存中,這樣就可以防止把對端不認識的消息和AVP發送給對端。

對等連接可以被正常中止,這需要一個Diameter節點主動發起對等連接中止請求(DPR,Disconnect-Peer-Request)消息,對端收到此消息,並回答對等連接中止應答(DPA,Disconnect-Peer-Answer)消息後,先行中止底層連接。對於除此之外的對等連接的中止情況(如網絡故障、一端系統故障等),在發現這類連接異常中止的一端時,要按照定時器設置,不斷地嘗試恢復建立對等連接。

正常的對等連接上可以傳輸各類Diameter消息,在連接空閒無消息傳送超過一定時間時,對等連接兩端將發送連接正常檢測消息(DWR/DWA,Device-Watchdog-Request/Answer)。而一旦DWR/DWA消息收發異常,Diameter節點將認定對等連接故障,或者嘗試恢復建立連接,或者將消息通路轉換到備用的對等連接上。

Diameter的消息格式

Diameter消息的頭部包括20個字節,結構如圖2所示。頭4個字節是8比特的版本信息和24比特的消息長度(包括消息頭長度)。隨後的4個字節是8比特的消息標誌位和24比特的命令代碼。

命令代碼用來表示這個消息所對應的命令,請求消息和相應的回答消息共享一個命令代碼。

應用標識、逐跳標識和端到端標識都有4個字節,其中應用標識用以指示消息適用的應用,逐跳標識用於判斷請求與應答的對應關係,而端到端標識主要用於重複消息的檢查。

消息頭部後的全部字節就是消息的具體內容,以屬性值對AVP(Attribute-Value-Pair)的形式逐個頭尾銜接。AVP的格式也是由頭部和數據組成,如圖3所示,結構爲:頭4個字節是AVP代碼,下四個字節由8比特的AVP標誌和24比特的AVP長度(包括AVP頭部長度)構成,AVP標誌用於通知接收端如何處理這個屬性。

頭部後的字節就是數據內容。AVP內的數據類型,目前包括字符串、32比特整數、64比特整數、32比特浮點數、64比特浮點數,以及AVP組等。

Diameter的消息處理和用戶會話

Diameter客戶端與Diameter服務器都可以組成相應的請求消息,發送給對方。正是從這點考慮,Diameter屬於對等協議(peer to peer),而不是如RADIUS一樣的客戶/服務器模式的協議。

爲處理用戶的接入,Diameter客戶端通過Diameter基礎協議和應用協議,與Diameter服務器進行一系列的信息交換,而這樣一個從發起到中止的一系列信息交互,在Diameter協議裏被稱爲一個用戶會話(User Session)。

一般的AAA業務可以大致分成兩類:一類包括用戶的認證和授權,可能還包括計費(如移動電話業務);另一類則是僅包括對用戶的計費(如目前的主叫撥號接入業務)。爲此,Diameter基礎協議提供對應的兩類用戶會話,爲上層的應用服務。

一個用戶會話的建立,一般是由Diameter客戶端發起,中間可以途徑若干Diameter代理、重定向器或協議轉換器,一直延伸到Diameter服務器。

用戶會話的結束,完全由Diameter客戶端決定,但服務器也可以先行發出中止用戶會話請求(ASR,Abort-Session-Request),在客戶端同意中止請求的情況下,會響應中止用戶會話應答(ASA,Abort-Session-Answer),然後再發出用戶會話結束請求,通知服務器結束用戶會話;否則用戶會話仍得以保持。在未得到服務器請求的情況下,客戶端也可以自行給服務器發出用戶會話結束請求,例如在客戶端自身異常,或是用戶接入異常等的情況下。

通過對用戶會話的建立和結束的控制,Diameter應用很容易實現可靠的以用戶爲單位的業務資源管理。

Diameter的計費

當用戶被允許接入時,Diameter客戶端將根據情況產生針對用戶的計費信息。這些計費信息將被封裝在具體Diameter應用專有的AVP內,由Diameter基礎協議中定義的計費請求(ACR,Accounting-Request)消息,傳送給Diameter服務器。服務器將響應計費應答(ACA,Accounting-Answer)消息,指示計費成功或拒絕。客戶端只有在收到成功的計費響應時,才能清除已經被髮送的計費記錄。當收到計費拒絕指示時,客戶端將中止用戶接入。

Diameter支持實時的計費,客戶端通過在首次計費請求/響應交互過程中協商好的計費消息間歇時間,定時向服務器發送已收集的計費信息。這種實時計費確保了對用戶信用的實時檢查。

Diameter消息的安全傳輸

Diameter客戶端(如網絡接入服務器)必須支持Ipsec,可以支持TLS;而Diameter服務器必須支持Ipsec和TLS。IPsec主要應用在網絡的邊緣和域內的流量,而域間的流量主要通過TLS來保證安全。

由於IPsec和TLS只能保證逐跳的安全,也就是一個傳輸連接上的安全。當消息通過Diameter代理時,代理會修改消息,這樣通過IPsec或TLS取得的安全信息在通過代理時就丟棄了。而Diameter CMS應用提供了端到端的安全性。端到端的安全性是通過兩個對等端點間支持AVP的完整性和機密性提供的。Diameter CMS應用中採用了數字簽名和加密技術來提供所要求的安全業務。

儘管是由每個對等端的安全策略決定使用端到端的安全性的場合,如當TLS或IPsec提供的傳輸層面上的安全性足夠時,可能不需要端到端的安全性,但Diameter基礎協議中還是強烈建議所有的Diameter實現都支持端到端的安全性。這樣Diameter CMS應用就有別於其他的Diameter應用,它一般是和Diameter基礎協議共存的。

發佈了262 篇原創文章 · 獲贊 4 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章