2017年2月14日 星期二

【摳丁心得】IMS技術分享《三》_ P-CSCF

完成了基本的安裝,便可以透過設定把伺服器進一步變成P-CSCF。P-CSCF的主要功能在於Proxy,也就是作為整套IMS服務的窗口,或是可稱為代理。大致上它的工作在於接收客戶端的訊息,並且轉發給下一個伺服器: I-CSCF。



1. P-CSCF檔案
原始碼的目錄中 (/usr/local/src/kamailio-4.4.0/examples/pcscf/)有P-CSCF的設定範例,我們需要kamailio.cfg、pcscf.cfg、pcscf.xml、tls.cfg這幾個檔案。將這幾個檔案複製到 /usr/local/etc/kamailio/的目錄下。在這些範例檔案中已經編寫好基本的邏輯與設定,大致上只要將部分參數更改成符合自己環境的設定即可。

2. 資料庫
原始碼的目錄中(/usr/local/src/kamailio-4.4.0/utils/kamctl/mysql/)有產生資料庫的script。可以藉由ims_usrloc_pcscf-create.sql來產生P-CSCF的資料庫。

3. kamailio.cfg
kamailio.cfg是最主要的script,可根據需求在此檔案中調整參數設定或著是server的邏輯運作。以下我列出幾個需要注意的參數設定。
在我的環境中,kamailio module的library是放在/usr/local/lib/kamailio/modules/的目錄下,所以指定這個位置。請根據各自的執行環境的目錄做mpath的設定。
pcscf.xml、tls.cfg、dispatcher.list這幾個檔案我是一起放在/usr/local/etc/kamailio/ 目錄下,請根據各自的執行環境的目錄做設定。

4. pcscf.cfg  
pcscf.cfg是關於P-CSCF一些比較重要的設定,所以獨立出來方便管理。根據需求與環境設定對此檔案的設定值做調整。以我的環境作為範例說明。















5. pcscf.xml
pcscf.xml是用來設定IMS中的RX介面,因為我的環境中未使用到RX介面,所以不做特別的設定。

6. dispatcher.list
原始碼目錄中(/usr/local/src/kamailio-4.4.0/modules/dispatcher/doc/dispatcher.list)有dispatcher.list的範例檔案。在P-CSCF中,需要透過此檔案的設定來指定I-CSCF。我的I-CSCF的IP為192.168.0.199。





6 則留言:

  1. Hi 您好...近日由於工作緣故需要使用到IMS..想請問一下您文中:原始碼的目錄中(/usr/local/src/kamailio-4.4.0/utils/kamctl/mysql/)有產生資料庫的script。可以藉由ims_usrloc_pcscf-create.sql來產生P-CSCF的資料庫...這一步怎麼做呢? 我實際使用mysql -u root -p pcscf < ims_usrloc_pcscf-create.sql 會發生Table 'pcscf.version' doesn't exit..還請幫忙解惑!!!

    回覆刪除
  2. Hi 您好, 這個錯誤是由於Kamailio 的 "version" table 並未建置而造成的錯誤. 請參考以下的script建置version table即可繼續進行下一步

    https://github.com/kamailio/kamailio/blob/ef021552162e281c694a4f4b420aa1c642db5066/utils/kamctl/mysql/standard-create.sql

    回覆刪除
    回覆
    1. Hi Dean,
      感謝回覆幫忙...再請問一下PCSCF與ICSCF教學中提到將 kamailio.cfg、pcscf.cfg、pcscf.xml、tls.cfg這幾個檔案複製到 /usr/local/etc/kamailio/的目錄下 ...我的疑問是kamailio.cfg 這之檔案在PCSCF與ICSCF都有且看教學說同樣放在/usr/local/etc/kamailio/目錄下..這樣不是同檔名覆蓋內容嗎? 還是說PCSCF and ICSCF的設定通通寫在同一個kamailio.cfg中呢? 這裡實在不懂,還請幫忙解惑!!!

      刪除
    2. 使用Kamailio的example來建置IMS的情況時,必須將PCSCF、ICSCF分別架在不同的主機上。
      也就是說PCSCF的kamailio.cfg是放在PCSCF主機的/usr/local/etc/kamailio/目錄下;ICSCF的kamailio.cfg是放在ICSCF主機的/usr/local/etc/kamailio/目錄下。

      刪除
    3. 感謝回覆...所以我可以這麼理解..kamailio無法像openIMS那樣將PCSCF, ICSCF, SCSCF ...三種都放在同一台Server上囉?

      刪除
    4. 實際上是否有此限制,我並不清楚。只是,官方給的範例是分別提供三個不同的config檔案,kamailio軟體一次只能跑一個config檔,自然而然就會用三台主機個別裝kamailio去跑這三個config檔案。

      如果真的需要在同一台主機上提供PCSCF, ICSCF, SCSCF這三個功能,我不知道是否可行,但也許試著把三個config檔融合成一個,也許是個方向,不過這可預期應該會需要很多的心力去調整。

      刪除