RADIUS協議 [收藏]

 

    RADIUS(Remote Authentication Dial In User Service)協議最初是由Livingston公司提出的,原先的目的是爲撥號用戶進行認證和計費。後來經過多次改進,形成了一項通用的認證計費協議。

 

    RADIUS是一種C/S結構的協議,它的客戶端最初就是NAS(Net Access Server)服務器,現在任何運行RADIUS客戶端軟件的計算機都可以成爲RADIUS的客戶端。RADIUS協議認證機制靈活,可以採用PAP、CHAP或者Unix登錄認證等多種方式。RADIUS是一種可擴展的協議,它進行的全部工作都是基於Attribute-Length-Value的向量進行的。

 

    RADIUS的基本工作原理。用戶接入NAS,NAS向RADIUS服務器使用Access-Require數據包提交用戶信息,包括用戶名、密碼等相關信息,其中用戶密碼是經過MD5加密的,雙方使用共享密鑰,這個密鑰不經過網絡傳播;RADIUS服務器對用戶名和密碼的合法性進行檢驗,必要時可以提出一個Challenge,要求進一步對用戶認證,也可以對NAS進行類似的認證;如果合法,給NAS返回Access-Accept數據包,允許用戶進行下一步工作,否則返回Access-Reject數據包,拒絕用戶訪問;如果允許訪問,NAS向RADIUS服務器提出計費請求Account-Require,RADIUS服務器響應Account-Accept,對用戶的計費開始,同時用戶可以進行自己的相關操作。

 

    RADIUS還支持代理和漫遊功能。簡單地說,代理就是一臺服務器,可以作爲其他RADIUS服務器的代理,負責轉發RADIUS認證和計費數據包。所謂漫遊功能,就是代理的一個具體實現,這樣可以讓用戶通過本來和其無關的RADIUS服務器進行認證。

 

    RADIUS服務器和NAS服務器通過UDP協議進行通信,RADIUS服務器的1812端口負責認證,1813端口負責計費工作。採用UDP的基本考慮是因爲NAS和RADIUS服務器大多在同一個局域網中,使用UDP更加快捷方便。

 

RADIUS協議還規定了重傳機制。如果NAS向某個RADIUS服務器提交請求沒有收到返回信息,那麼可以要求備份RADIUS服務器重傳。由於有多個備份RADIUS服務器,因此NAS進行重傳的時候,可以採用輪詢的方法。如果備份RADIUS服務器的密鑰和以前RADIUS服務器的密鑰不同,則需要重新進行認證。

 

    RADIUS協議應用範圍很廣,包括普通電話、上網業務計費,對VPN的支持可以使不同的撥入服務器的用戶具有不同權限。最近IEEE提出了802.1x標準,這是一種基於端口的標準,用於對無線網絡的接入認證,在認證時也採用RADIUS協議。

 

常見的認證計費機制與系統:

 

當前常見的認證機制主要有以下幾種:

 

● 基於DCE/Kerberos的認證機制;

 

● 基於公鑰的認證機制;

 

● 基於挑戰/應答(Challenge/Response)的認證機制。

 

當前常見的計費系統有以下幾種:

 

● IP電話計費:採用RADIUS協議進行計費,對協議本身進行了比較小的改動。由於RADIUS協議本來就是爲撥號用戶進行認證計費服務的,所以在IP電話業務方面,它基本可以勝任。

 

● 根據流量進行的網絡服務計費:在很多大學中都對校園網用戶採用了這樣的計費方式。這種計費方式的特點是對計費沒有實時性的要求、時間粒度大、計費方式相對單一。

 

    在實際進行流媒體點播收費時會遇到很多問題,對現有的計費協議和解決方案提出了挑戰。隨着接入網發展的進一步加快,寬帶IP網將承載豐富的數據、語音、圖像等多媒體綜合業務,作爲流媒體業務支撐平臺的用戶管理和計費系統,有其自身的新業務特點,如時間、流量、多種計費規則、多種媒體格式等,在選擇性、高效性、實時性、可靠性及安全性方面將會提出比電信業務的用戶管理和計費系統更高的要求。其中最主要的一點是,流媒體支持多種媒體格式,並且可以支持多種不同碼率,甚至可以在傳輸的時候根據網絡條件來自適應地調整碼率,這就給實時流量計費帶來了困難,當前的協議不支持實時流量信息。

 

    對於流媒體點播系統的用戶認證和計費,現有的電信系統的管理經驗有借鑑意義,但簡單生硬地把電信業務的用戶管理和計費系統照搬到流媒體系統中是不可取的,只能在吸收電信系統成熟經驗的基礎上,根據流媒體業務的自身特點,量身定做用戶管理和計費系統,才能真正成爲流媒體增值業務有效的支撐平臺,使得流媒體的商業運營成爲可能,幫助運營商在激烈的競爭中處於有利地位。

 

我準備開發一套基於RADIUS協議的用戶認證和計費系統,運行在Linux系統上,並可以完成多種用戶類型、多種計費策略的認證計費方式。

 

    該計費系統的核心是基於Oracle或MySQL數據庫。在數據庫裏實現對用戶的分類和不同計費費率以及計費策略。通信的核心是RADIUS協議。認證計費分別在兩臺服務器上實現,前臺服務器主要負責認證工作,與Linux流媒體服務器之間採用RADIUS協議進行通信。前臺的另一項工作就是作爲RADIUS的代理,給後臺服務器轉發前臺傳來的計費數據包。由於RADIUS協議對計費和認證的工作沒有更多的規定,其核心就是對數據適當封裝,並進行安全、保密的傳送,所以關於RADIUS協議方面的程序通信部分就採用普通的socket編程。

 

由於要處理多用戶併發,所以需要產生多個子進程,對多個用戶同時登錄的信息進行處理,並且,在函數中要實現一個進程僅處理一個請求,如果登錄數據包的IP和會話ID是相同的,則RADIUS服務器要比較它們請求Attribute中的向量,如果相同則過濾掉一個,通過這種方式來防止重複處理。

 

    前臺要完成的另一個任務就是給後臺轉發計費數據包。這裏主要應用了RADIUS的代理協議。前臺後臺分別放在兩臺服務器上的一個基本考慮是因爲後臺服務器需要對某些用戶進行實時計費,這樣就要經常訪問數據庫,而訪問數據庫需要大量的系統資源,爲了提高系統性能,所以把它們放在兩臺服務器上實現。

 

後臺的計費服務器可以實現不同的計費策略。根據用戶的類型,可以分爲普通和預付費用戶兩種,在這些用戶中,根據消費情況,還可以分成不同的等級。對於節目來說,可以根據流量或者點播的時間進行計費,還可以根據不同的節目內容進行計費,每個節目都有其相應的費率。

 

RADIUS協議:缺陷

 

    RADIUS是目前最常用的認證計費協議之一,它簡單安全,易於管理,擴展性好,所以得到廣泛應用。但是由於協議本身的缺陷,比如基於UDP的傳輸、簡單的丟包機制、沒有關於重傳的規定和集中式計費服務,都使得它不太適應當前網絡的發展,需要進一步改進。

 

當前IETF成立了專門的工作組討論關於認證、授權和計費(Authentication, Authorization and Accounting, AAA)的問題,他們認爲,一個良好的AAA協議必須具有如下特點:

 

● 協議必須對典型的信息和協同工作的需求進行明確的規定。

 

● 協議必須定義錯誤信息類別,並且可以正確地根據錯誤類別返回。錯誤信息類別必須覆蓋所有的操作錯誤。

 

● 計費操作模型必須描述所有的上網方式。

 

● 協議必須能夠在IP v6上正常運行。

 

● 協議應該能夠在傳輸過程中正確處理擁塞問題。

 

● 支持代理。

 

● 與RADIUS兼容。

 

● 協議應該定義輕量級數據對象,以便於NAS實現。

 

● 協議應該提供協議本身和數據模型的邏輯區別,並且支持更多的數據類型。

 

● 必須定義MIB,支持IP v4和IP v6操作。

 

基於上述考慮,IETF的AAA工作組在2002年3月提出了一個被稱爲Diameter的認證計費協議草案。Diameter協議支持移動IP、NAS請求和移動代理的認證、授權和計費工作,協議的實現和RADIUS類似,也是採用Attribute-Length-Value三元組來實現,但是其中詳細規定了錯誤處理等內容。

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