沿革
Kamailio 是 GPL 開源的 SIP 伺服器,一開始叫作 SIP Express Router (SER),2005 另外分出為 OpenSER,2008 因商標問題改名為 kamailio (夏威夷話的談話、通話),不久後合併老東家 SER,之後釋出的第一個兩者相容版本是 v3.0.0。2014 三月釋出 v4.0.0,真正將兩者整合為一,並支援 WebSocket。2017/02/27:釋出 v5.0.0
kamailio 跟 Asterisk 的不同
以 SIP 而言,他們的差別就是 SIP Proxy 跟 SIP PBX 的不同。在 SIP PBX,通話的兩端是分別跟 SIP PBX 通,SIP PBX 再把兩端搭起來,SIP PBX 等於是背對背的網路話機 (b2bua)。這個背對背的兩個網路話機之間可以做很多應用,例如錄音、DTMF 轉換、送待機音樂、IVR、會議的混音、協定轉換等。而 SIP Proxy 只是「媒人」,幫忙通話的兩端「牽線」,兩端「來電」之後的發展就不是媒人的事了。雖然 SIP PBX 也可以作 SIP Proxy 使用,但就一通電話而言,其實是將相關的兩通電話搭起來,使用了較多的資源。kamailio 使用入門
在 Ubuntu 使用 kamailiokamailio 簡易命令檔 (簡易 SIP proxy,讓 SIP 話機註冊後互撥,不用建立帳號)
kamailio 命令檔說明
kamailio 除錯
- kamailio -c:測試設定檔,並列出監聽的網路界面
- kamailio -E:顯示 strerr
kamailio 應用
transaction 支援:使用 tm 模組- t_relay
Outbound proxy
Location server/registrar
- 使用 registrar 模組搭配 usrloc 模組
- registrar 模組的 save() 函數
- registrar 模組的 lookup() 函數 [連結]
SIP load balancer
- 使用 dispatcher 模組:從檔案或資料庫讀取目的,依照 round-robin、weight based load balancing、call load distribution、hashing over SIP message attributes 等規則轉送。
Application server
SIP session border controller
使用資料庫
使用其它程式語言
參考來源
- http://www.slideshare.net/oej/kamailio-a-quick-introduction
- http://kamailio.org/docs/ser-getting-started/SER-GettingStarted.pdf
- http://www.kamailio.org/wiki/cookbooks/4.2.x/core
- http://kamailio.org/docs/modules/stable/
延伸閱讀
- SIP Routing Done In Lua with Kamailio
- /etc/kamailio/kamctlrc:kamdbctl 或 kamctl 用到的參數
- kamctl MI (management interface) 可 start/stop、shared variables、建立 SIP 帳號、statistics
- kamdbctl:建立資料庫
- kamcmd:RPC 界面及 MI 功能、Select/Config variables、statistics
- siremis:Web application、database 管理、statistics
- kamialio 管理界面:MI、RPC、pipe、Json、XMLrpc
- kamailio 4.2.x:core、pseudo variables、及 transformation
- kamailio 模組
- dialplan:比對轉換規則
- dmq:distributed message queue, 可跟其它 kamailio 間傳遞訊息,基於這個機制可發展其他應用,如 dmq_usrloc 跟 htable 用來同步資料。
- exec: 透過環境變數 SIP_xxx 傳遞額外資訊來執行 shell 指令。
- exec_dset(command):每行輸出成為 destination set
- exec_msg(command)
- exec_avp(command [, avplist]):每行輸出存為 avp
- p_usrloc:使用多個位置資料庫
- outbound
- memcached:提供 pseudo-variables $mct(key), $mct(key=>expiry), $mcinc(key), $mcdec(key), $mctex(key) 存取外部伺服器程式 memcached 管理、存在記憶體的 distributed hash table。expire 或空間不足
- rr:
- loose_route
- usrloc:
沒有留言:
張貼留言