隨著網際網路越來越發達,越來越多透過網路提供通訊的服務。像是Skype,What's APP、Line,甚至FB也有MESSAGE來提供語音與視訊服務。因為有這些方便的通訊軟體,我自己也很少打電話了,常常是透過Line的語音服務來撥打給對方。這也令我產生了興趣,如果自己架設一個服務平台也挺有意思的。
IMS,IP Multimedia Subsystem,是一個基於IP網路提供多媒體服務的架構,並以SIP為基礎來實現信令與通話管理。模組化使得在IMS整體架構上可以輕易地擴充業務服務。一個基於IMS架構的系統規模可大可小,甚至還可以跨不同的平台(系統供應商)。這裡基於實驗性質,只先架構最基本的IMS。
IMS基本架構可分為的幾個部分:
CSCF - Call Session Control Function
CSCF主要在於通話控制的相關功能,又細分為三個伺服器。P-CSCF - Proxy-CSCF負責接應用戶端,並且將用戶端的訊息轉發給其他伺服器。
I-CSCF - Interrogating-CSCF
I-CSCF在收到由P-CSCF傳送的用戶端請求後,會向HSS查詢該用戶資料,並在找到合適的S-CSCF後,將用戶請求傳送給S-CSCF進行下一步處理。在跨網域的架構中,I-CSCF佔有非常重要的功能,透過I-CSCF方能把訊息轉發給其他不同的網域。
S-CSCF - Serving-CSCF
負責用戶端的通話控制服務。從I-CSCF接收到用戶端的請求後,S-CSCF會向HSS取得該用戶的資料,並根據預設好的條件來決定後續動作。例如,該用戶的請求撥號給另一個用戶,S-CSCF此時可能會做諸多的判斷: 檢查註冊狀態、檢查該用戶可以使用哪些服務的權限等等。並在根據IFC(Initial Filter Criteria)將訊息轉發給合適的AS。
HSS - Home Subscriber Server
用戶歸檔資料庫,在IMS架構中負責支援用戶端的相關資料與管理。除了用戶的基本資料,像是用戶的認證與授權以及IFC等等相關的資料也是由HSS負責支援。
AS - Application Server
一個簡單的IMS包含了以上五種伺服器,架設好CSCF與HSS,之後便只需要依照需求進行AS的擴充。舉例來說,假設在架設好IMS之後,我們已經有了語音通話服務,若想要再增加視訊通話服務的話,只需要增加一個專門負責視訊通話的AS即可。
Kamailio與Open IMS是很不錯的開放原始碼授權軟體,藉由這兩個軟體我們可以快速架設IMS的伺服器。
Kamailio的整套軟體十分完善,就像一個工具箱一樣,需要什麼都已準備好了,只要拿出來用就可以了。而且Kamailio的很適合開發與維護,雖然我覺得剛開始學習其自創的開發語言時有一些生澀,但不可否認的是Kamailio除了功能健全外,也十分有彈性。
OpenIMS是少數有開放原始碼授權的HSS的軟體,OpenIMS的FHoSS專案具備了完善的HSS功能,亦提供了Web UI,其簡單設定的介面,大幅簡化後台管理與用戶建置。
我會使用Kamailio來架設CSCF的部分,用OpenIMS來架設HSS。接下來我將在幾個篇幅中介紹如何安裝這些伺服器。
沒有留言:
張貼留言