Asterisk 與freeswitch都是流行的開源軟交換服務器,Asterisk出現的比較早,大概在1999年開始此項目,應該是最流行的開源軟交換服務器,整個社區上下游都已經很成熟。
freeswitch 算是后起之秀,2005年才開始,但性能和穩定性都明顯優於Asterisk,但由於出現的 晚,導致其功能的多樣性及與其他系統的集成難度高於asterisk.
下面為Asterisk與freeswitch比較。
1:Asterisk是針對百人左右的小型系統,相同的硬件配置下單系統並發也就幾百路(不同版本性能有一定差異,大概在 200-400之間),而根據國外愛好者測試freeswitch 可達到2000-3000路sip通道(媒體流並發),
2:Asterisk用動態鏈表來管理每個打開的通道,這樣在多線程中非常難於管理(需要頻繁的鎖定和解鎖)。而freeswitch每個呼叫通道都會用一個線程來管理呼叫狀態,大大減少了死鎖發生的幾率,freeswitch核心代碼高度抽象,盡量將復雜代碼集中化。
4:freeswitch 支持誇平台,linux, unix, windows 等,asterisk基本只支持 linux, bsd系列。
5. freeswitch配置采用xml,asterisk采用linux下面通用配置文件格式語法,而 采用xml格式配置文件是freeswich使用者抱怨最多的部分,對於不懂xml格式的開發者在剛開始使用時是個折磨。
學習freeswitch需要掌握的內容:
c/c++編程, socket編程 ,sip ,sdp,rtp ,tcp/ip 協議,XML,腳本語言JavaScript,lua,erlang,perl。數據庫sqlite,MySQL。