Diameter協(xié)議學(xué)習(xí)筆記一.doc_第1頁
Diameter協(xié)議學(xué)習(xí)筆記一.doc_第2頁
Diameter協(xié)議學(xué)習(xí)筆記一.doc_第3頁
Diameter協(xié)議學(xué)習(xí)筆記一.doc_第4頁
Diameter協(xié)議學(xué)習(xí)筆記一.doc_第5頁
免費預(yù)覽已結(jié)束,剩余9頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Diameter協(xié)議學(xué)習(xí)筆記一(協(xié)議介紹)一、摘要: Diameter協(xié)議主要為應(yīng)用程序提供認(rèn)證、鑒權(quán)、計費框架,即AAA,并支持本地AAA和漫游場景下的AAA。二、介紹: AAA協(xié)議、例如TACACS、RADIUS起初是為了提供PPP及終端接入,隨著Internet及新的接入技術(shù)的發(fā)展,包括無線、DSL、移動IP, 以太網(wǎng)路由、網(wǎng)絡(luò)訪問服務(wù)器(NAS)在復(fù)雜和密集性方面有所增強,這對AAA協(xié)議提出了新的要求。例如,網(wǎng)絡(luò)訪問對AAA 協(xié)議提出的要求總結(jié)有以下這些: Failover(故障轉(zhuǎn)移)RADIUS協(xié)議沒有定義failover機制,因此,failover的行為隨著程序的實現(xiàn)不同而各異,為了提供一個明確定義的failover行為,Diameter支持應(yīng)用層的應(yīng)答,并定義failover的西裝算法和偶聯(lián)狀態(tài)機。 傳輸層安全 RADIUS在定義了應(yīng)用層的認(rèn)證,但僅使用了響應(yīng)包,RADEXT定義了另外的認(rèn)證,但僅要求在EAP session中使用,且支持屬性隱藏。RFC3162為RADIUS定義了IPsec,但對其支持并沒有做要求,Diameter強制要求支持IPSec,TLS的支持可選擇。 可靠傳輸 RADIUS運行在UDP上,且沒有定義重傳行為,所有,可靠性因?qū)崿F(xiàn)不同而各異。Diameter運行在可靠的傳輸層(TCP, SCTP)上。 代理支持 RADIUS沒有明確地規(guī)定支持agent,包括Proxies, Redirects, Relays。Diameter明確地定義了代理的行為。 服務(wù)器發(fā)起消息 RADIUS中對于服務(wù)器發(fā)起消息的支持是可選的,這就使用一些如主動斷鏈、或者重新認(rèn)證或重新鑒權(quán)等特性實現(xiàn)困難。服務(wù)器發(fā)起消息在Diameter中強制要求支持。 可審核性 RADIUS沒有定義數(shù)據(jù)對象安全機制,結(jié)果,不受信任的代理可能修改屬性或都包頭,并且不會被檢測出來,結(jié)合對能力協(xié)商機制的缺失,無法預(yù)期結(jié)果會發(fā)生什么。Diameter也沒有定義數(shù)據(jù)對象安全機制,但支持能力協(xié)商。 轉(zhuǎn)換支持 Diameter使用的通用協(xié)議數(shù)據(jù)單元(PDU)與RADIUS不同,但支持向前兼容RADIUS,所以兩種協(xié)議可以部署在同一網(wǎng)絡(luò)中。 能力協(xié)商 RADIUS不支持錯誤消息、能力協(xié)商、及表示屬性強制/非強制的標(biāo)志位。因此RADIUS的客戶端和服務(wù)端不擔(dān)心對方的能力,它們可能不會成功地協(xié)商一個相互接受的服務(wù),或者在一些情況下,需要知道哪些服務(wù)對端已經(jīng)實現(xiàn),以上幾點Diameter均支持。 對端發(fā)現(xiàn)及配置 RADIUS要求人工配置服務(wù)端或客戶端的名稱或地址,相應(yīng)地增加了秘密的共享,帶來管理和安全上的負(fù)擔(dān)。通過DNS,Diameter可以動態(tài)發(fā)現(xiàn)對端,并通過傳輸層安全來保證。 漫游支持 RADIUS不提供對proxyr的明確支持,缺少可審核性、傳輸層安全,使得在漫游場景下容易引發(fā)安全問題,Diameter支持域內(nèi)漫游、消息路由、可審核性、傳輸層安全特性,可提供可安全和可靠的漫游。術(shù)語: AAA 認(rèn)證、鑒權(quán)、計費 Accounting(計費) 為能力計劃制定、審計、賬單、費用分配等目的而進(jìn)行資源使用的信息的收集動作。 Accounting Record (計費記錄) 記錄某個用戶在整個會話期間資源消費的情況, Authentication(認(rèn)證) 校驗一個實體一致性的動作。 Authorization(鑒權(quán)) 決定一個請求實體是否允許訪問某項資源。 AVP (屬性值對)Diameter消息由一個報文頭后跟一個或多個Attribute-Value-Pairs(AVPs),一個AVP包含一個頭用于協(xié)議細(xì)節(jié)數(shù)據(jù)(例如路由信息)。 Broker (代理) 代理是一個用于AAA架構(gòu)中的商業(yè)術(shù)語,可以是relay, proxy,或者redirect agent。 Diameter Agent(Diameter 代理) 指一個提供relay、proxy、redirect或翻譯服務(wù)的diameter結(jié)點。 Diameter Client(Diameter 客戶端)為一個處于網(wǎng)絡(luò)邊緣的,提供訪問控制的設(shè)備。如NAS。 Diameter Node(Diameter 節(jié)點) 為一個實現(xiàn)了diameter協(xié)議的主機進(jìn)程,其行為為客戶端、代理、服務(wù)端之一。 Diameter Peer (Diameter 對端) 為一個具有直連連接的diameter節(jié)點。 Diameter Security Exchange (diameter 安全交換) 為一個進(jìn)程,兩個diameter節(jié)點可以通過它建立端到端的安全。 Diameter Server(diameter 服務(wù)端) 用于處理指定域中認(rèn)證、鑒權(quán)、計費請求。 End-to-End Security (端到端安全) TLS和IPSec提供逐跳的安全,當(dāng)relays或proxy很復(fù)雜時,逐跳的安全不能保證全部的diameter用戶會話,端到端安全為兩個diameter節(jié)點間的安全,或者Agent間的,這種安全保證了整個dimeter傳送路徑上的安全。 Home Realm(歸屬域) 為一個維護(hù)帳戶關(guān)系的管理域。 Interim accounting(臨時計費) 一個臨時計費消息提供一個用戶會話的使用快照,通常為一個用戶會話在設(shè)備重啟或者網(wǎng)絡(luò)問題出現(xiàn)時提供部分的計費。 Local Realm(本地域) 一個提供服務(wù)的管理域。 Multi-Sessin(多會話) 一個多會話表示多個會話的邏輯連接,多會話使用Acct-Multi-Session-Id來跟蹤。 Network Access Identifier(網(wǎng)絡(luò)接入標(biāo)識) 即NAI,用來在diameter協(xié)議中提取一個用戶的標(biāo)識及域。用于在認(rèn)證中識別用戶,域用來消息路由。 Proxy Agent or Proxy (代理) 除傳輸請求和響應(yīng)外,代理制定與資源有關(guān)的策略,通常用來完成NAS設(shè)備狀態(tài)的跟蹤,代理在收到一個服務(wù)端的響應(yīng)前不會對客戶端的請求進(jìn)行應(yīng)答。當(dāng)策略被違反時,它們可能會生成一個拒絕消息。因此,代理需要理解通過它們傳輸?shù)南⒌恼Z義,它們可能不支持所有的diameter應(yīng)用。 Realm(域) 在NAI中跟在符號之后的字符串,NAI的域要求為唯一的,且為DNS域的分段,用于判斷消息是否滿足本地處理的條件,或者被路由或重定向。 Real-time Accounting(實時計費) 它包含在一個限定的時間窗內(nèi)處理資源使用的信息,時間限制通常用來限制風(fēng)險。 Relay Agent or Relay(中繼代理或轉(zhuǎn)播) 轉(zhuǎn)播請求和響應(yīng)基于路由相關(guān)的AVPs和路由表,中繼不會制定策略,他們不會檢查或更改非路由AVPs,因此,中繼從不產(chǎn)生消息,不需要理解消息的語義或者非路由AVPs,可能會處理八種diameter應(yīng)用或消息類型,因此,中繼依據(jù)路由和域來做決定,并且不保存NAS資源使用的狀態(tài)或會話。 Redirect Agent(重定向代理) 與其在客戶端和服務(wù)端間傳遞消息,重定向代理涉及客戶端和服務(wù)端,并允許它們直接通信,所以重定向代理不出現(xiàn)在傳輸路徑中,它們從不修改客戶端和服務(wù)端傳輸?shù)娜魏蜛VPs,也不產(chǎn)生消息,可以處理任何消息類型,盡管它們可能僅配置為重定向特定類型的消息,與Proxy代理相比,重定向代理不保存會話或NAS資源相關(guān)的狀態(tài)。 Security Association(安全偶聯(lián)) 一個安全的偶聯(lián)是指兩個端點之間的diameter會話,此會話允許端點完整且可信地通信,包括中繼和/或Proxy。 Session(會話) 會話是指一個事件相關(guān)的活動。每個應(yīng)用應(yīng)該為會話的開始和結(jié)束提供指導(dǎo),所有具有相同會話標(biāo)識的diameter包被認(rèn)為同一個會話的一部分。 Sub-session(子會話) 一個子會話表示一個明確的服務(wù)(例如Qos),這些服務(wù)可能同時或連續(xù)發(fā)生(例如同時產(chǎn)生的語音和同一會話中傳輸?shù)臄?shù)據(jù))。此類會話由Accounting-Sub-Session-Id來跟蹤。 Transaction state(傳輸狀態(tài)) Diameter協(xié)議要求代理來維護(hù)傳輸狀態(tài),用于failover。傳輸狀態(tài)暗指一個請求,逐跳標(biāo)識被保存,且原來存儲對應(yīng)應(yīng)答接收時的初始值字段被本地唯一標(biāo)識符替代,當(dāng)拒絕一個應(yīng)答時請求的狀態(tài)被釋放。 Translation Agent(傳輸代理) 是指為一個具有狀態(tài)的dimaeter節(jié)點,用于在diameter和其它的AAA協(xié)議(如RADIUS)間進(jìn)行翻譯。 Translation Connection(傳輸連接) 一個傳輸連接是指直接存在于兩個diameter對端間的TCP或SCTP連接,或者說端到端連接。 Upstream(上行) 用來標(biāo)識一個特定的diameter消息從接入設(shè)備到歸屬服務(wù)器的傳送方向。 User(用戶) 產(chǎn)生請求或使用某些資源的實體,支持diameter客戶端產(chǎn)生一個請求。 鏈接和會話的區(qū)別: 鏈接為傳輸層概念,會話為應(yīng)用層的概念,通過AVP Session-Id來標(biāo)識,兩者之前沒有聯(lián)系。如下圖: +-+ +-+ +-+ | Client | | Relay | | Server | +-+ +-+ +-+ peer connection A peer connection B User session x Figure 1: Diameter connections and sessions 對端表 用于消息傳遞和路由表全使用,包括以下信息:1. Host標(biāo)識:包括Origin-Host AVP,在CER/CEA消息中使用。2. StatusT:對端實體的狀態(tài)。3. Static or Dynamic:指對端是靜態(tài)配置的還是動態(tài)發(fā)現(xiàn)。4. Expiration time:指使用動態(tài)發(fā)現(xiàn)機制時刷新超時的時長。5. TLS Enablee: 與對端通信時是否使用TLS。 基于域名的路由表1. 域名:用于查找路由表時使用的主鍵。2. 應(yīng)用程序標(biāo)識:使用一個Vendor id和一個applicaiont id標(biāo)識,其為路由表的第二主鍵。3. Local Action:決定消息如何處理,有以下幾個選項: LOCAL:本地處理,不需要路由到下一個服務(wù)器。 RELAY:路由到下一跳,注意不修改任何非路由的AVP。 PROXY:路由到下一跳,注意可能會在消息中添加新的AVP。 REDIRECT:具有一個源diameter服務(wù)器的標(biāo)識,且將消息返回給發(fā)送者。4. 服務(wù)器標(biāo)識:必須出現(xiàn)在對端表中,當(dāng)Local Action為RELAY或PROXY時,此字段標(biāo)識消息被路由到的地址,當(dāng)為REDIRECT時,表示消息應(yīng)該重定向到的一個或多個服務(wù)器。5. Static or Dynamic:路由信息是靜態(tài)配置還是動態(tài)發(fā)現(xiàn)。6. Expirationtime:與對端表中的含義相同。另外,路由表必須包含一條默認(rèn)路由。Diameter消息應(yīng)用層的路由1.創(chuàng)建和發(fā)送Request消息:1)產(chǎn)生一個Request消息時,必須遵守下列規(guī)則:設(shè)置頭部的Command code;設(shè)置頭部的R位;設(shè)置頭部的End-to-End為本地的唯一值;Origin-Host和Origin-Realm AVPs必須攜帶,用來標(biāo)識消息的源地址;Destination-Host和Destination-Realm AVPs需根據(jù)以下規(guī)則設(shè)置;a)不能被Proxy的消息一定不能帶Destination-Realm and Destination-Host AVPs;b)如果消息是發(fā)往某個realm而不是具體的host,則只攜帶Destination-Realm AVP;c)如果消息是發(fā)往某個具體的host,則需要同時攜帶Destination-Realm and Destination-Host AVPs;如果消息有可能被轉(zhuǎn)發(fā),則消息中還必須攜帶下列AVP之一:an Acct-Application-Id AVP, an Auth-Application-Id AVP or a Vendor-Specific-Application-Id AVP;2)當(dāng)發(fā)送一個Request消息時,無論是源主機發(fā)送還是Agent轉(zhuǎn)發(fā),都需要執(zhí)行下列操作:a)設(shè)置頭部的Hop-by-Hop為本地的唯一值;b)將該消息放入Pending Request消息隊列;2.收到Request消息:1)當(dāng)一個Diameter節(jié)點收到一個Request消息后,有如下四種可能的處理方式:a)如果滿足如下條件,則本地處理:Destination-Host AVP包含了本地host的標(biāo)識,或者Destination-Host AVP不存在, Destination-Realm AVP經(jīng)過在路由表中查詢被配置為本地處理,或者Destination-Host和Destination-Realm都不存在;b)如果Destination-Host AVP存在于本地的Peer table中,則執(zhí)行Request Forwarding:c)如果沒有本地處理也沒有進(jìn)行Request forwarding,則根據(jù)Destination-Realm AVP和Auth-Application-Id或Acct-Application-Id或Vendor-Specific-Application-Id查找Realm Routing Table,執(zhí)行Request Routing;d)返回錯誤DIAMETER_UNABLE_TO_DELIVER;注意:這里區(qū)分了Request forwarding和Request Routing;本文其它地方提到的“轉(zhuǎn)發(fā)”都是泛指消息非本地處理的情況;2)Request消息在被Relay或者Proxy的時候,Relay Agent和Proxy Agent需要做如下工作:a)在轉(zhuǎn)發(fā)出去的Request消息中插入Route-Record AVP,里面包含發(fā)送該Request消息的主機標(biāo)識;b)保存和該Request消息相關(guān)的:Protocol,IP Address,Port,Hop-by-Hop標(biāo)識;保存這些信息是為了收到與該Reqeuest消息對應(yīng)的Answer消息后能夠?qū)nswer消息正確的轉(zhuǎn)發(fā)出去;3.創(chuàng)建Answer消息:當(dāng)一個Request消息被本地處理后,必須按照如下規(guī)則創(chuàng)建并發(fā)送Answer消息:從Request消息中拷貝Hop-by-Hop填入Answer消息;將本地主機標(biāo)識作為Origin-Host AVP;Destination-Host和Destination-Realm AVPs不允許出現(xiàn)在Answer消息中;加上Result-Code AVP指示成功與否.如果Reqeust消息中包含了Session-Id,那么Answer消息中也應(yīng)該包含該值;在Request消息中的任何Proxy-Info AVPs都應(yīng)原封不動的拷貝到Answer消息中;P位需要和Request消息中保持一致;End-to-End需要和Request消息中保持一致;4.收到Answer消息:當(dāng)收到一個Answer消息時需要如下操作:檢查其Hop-by-Hop,從Pending Request隊列中找到與其一致的Reqeust消息,然后將Reqeust消息從Pending Request隊列中刪除;如果是Agent收到Answer消息,Agent需要將Hop-by-Hop替換為先前保存的Reqeust中的Hop-by-Hop,然后再將Answer消息轉(zhuǎn)發(fā)出去;下圖是Diameter節(jié)點經(jīng)由Relay Agent發(fā)送一個Request消息給并收到Answer消息的示意圖,該圖主要為了說明Hop-by-Hop和End-to-End兩個標(biāo)識的作用:Diameter基礎(chǔ)協(xié)議摘要Diameter是新一代AAA協(xié)議,可以承載與TCP或者SCTP協(xié)議之上,被廣泛應(yīng)用于IMS,LTE網(wǎng)絡(luò)中。RFC3588定義了Diameter的基礎(chǔ)協(xié)議,各種應(yīng)用可以在此基礎(chǔ)上對其進(jìn)行擴展(主要是定義新的Application ID,Command和AVP);基礎(chǔ)協(xié)議中包括一個基本的Accounting功能,如果需要Authentication或者Authorization通常需要進(jìn)行對基礎(chǔ)協(xié)議擴展。1.基本概念:Connection:是傳輸層的概念,負(fù)責(zé)在兩端直接傳輸Diameter消息;Session:是應(yīng)用層的概念,可以用Session-id這AVP來標(biāo)識;下圖展示了Connection與Session的區(qū)別;+-+-+-+| Client | Relay | Server |+-+-+-+peer connection Apeer connection BUser session xDestination Host:用于標(biāo)識一臺運行Diameter應(yīng)用的主機,命名方式類似DNS格式,但并不是域名,只是一個標(biāo)識符而已,一臺運行Diameter應(yīng)用的主機可以支持一個或者多個Diameter應(yīng)用;Destination Realm:用于標(biāo)識一組運行Diameter應(yīng)用的主機,可以將多臺Host劃歸為一個Realm中;Peer Table:用于消息路由的數(shù)據(jù)配置,Peer table中的主機都是能和本地主機之間通信的(也就是說中間無需經(jīng)過消息轉(zhuǎn)發(fā)),格式如下表:Host identityStatusTStatic or DynamicExpiration R-OR-Opendynamically10Realm-Based Routing Table:用于消息路由的數(shù)據(jù)配置,格式如下表:Realm NameApplication IdentifierLocal ActionServer IdentifierStatic or DynamicExpiration timeexample16777250RELAYstatically0example16777272RELAYdynamically102.Diameter Agents:Relay Agents:對消息進(jìn)行轉(zhuǎn)發(fā),只增加或者刪除路由信息,而不會修改任何應(yīng)用層信息;在CER/CEA進(jìn)行能力交互時,需要返回自己支持的Application ID為Relay Application Identifier;使用Relay Agents的好處是簡化網(wǎng)絡(luò)的復(fù)雜性,不需要對所有Diameter節(jié)點都進(jìn)行復(fù)雜的配置,比如只需配置節(jié)點讓Diameter消息轉(zhuǎn)發(fā)到Relay Agents,然后在Relay Agents上進(jìn)行比較全面的路由配置即可。Proxy Agents:Proxy Agents也負(fù)責(zé)轉(zhuǎn)發(fā)消息,與Relay Agent不同的是,它需要理解應(yīng)用層的信息,進(jìn)而維護(hù)Transaction的狀態(tài);在CER/CEA進(jìn)行能力交互時,需要返回自己支持的所有Application ID;Redirect Agents:收到Diameter消息后不進(jìn)行轉(zhuǎn)發(fā),而是回復(fù)一個應(yīng)答消息給發(fā)送者,應(yīng)答消息中包含一個或者多個地址,告訴發(fā)送者應(yīng)該將消息發(fā)往這些地址;Translation Agents:完成Radius和Diameter協(xié)議之間的轉(zhuǎn)換;3.消息格式:MAC headerIPheaderSCTP|TCPheaderDiameter headerData :1)Diameter header:0001020304050607080910111213141516171819202122232425262728293031VersionMessage lengthFlagsCodeRPETrrrrApplication IDHop by Hop IDEnd to End IDAVP :Version:Diameter的版本號,目前為1;Message length:包含頭部在內(nèi)的消息長度,也就是頭部+所有AVP的長度之和;Flags:R(equest):如果置位表示這是一個Request消息;P(roxiable):如果被置位說明該消息可以被轉(zhuǎn)發(fā),否則必須本地處理;E(rror):如果置位,說明產(chǎn)生了一個協(xié)議錯誤,只能出現(xiàn)在Answer消息中;T:如果被置位,說明該消息有可能是一個被重傳的消息;r:保留位;Code:消息命令碼,用來標(biāo)識各種Diameter消息,由IANA負(fù)責(zé)統(tǒng)一分配;Application ID:用來表示不同的Diameter應(yīng)用,由IANA負(fù)責(zé)統(tǒng)一分配;Hop by Hop ID:用來匹配Request和Answer消息,在一個指定的Connection上的任何時間都必須是唯一的;該值在Diameter消息轉(zhuǎn)發(fā)時會被Agent修改;End to End ID:用來識別重復(fù)消息;該值在本地的一段時間內(nèi)必須是唯一的,傳輸過程中一直保持不變;目標(biāo)主機會根據(jù)該值和Or

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論